diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java b/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java index ee3e4aa6c..63363c223 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java @@ -76,7 +76,7 @@ public class BaseController { } /** - * 处理集团新增修改所需租户信息 + * 处理集团新增修改所需租户信息(广场独立修改,集团修改全部) * ifParentUpdateTenantInfo */ public TenantEntity ifParentUpdateTenantInfo() { @@ -88,6 +88,23 @@ public class BaseController { return info; } + /** + * 处理集团新增修改所需租户信息(各广场和集团独立修改) + * ifParentUpdateTenantInfo + */ + public TenantEntity ifParentUpdateAloneTenantInfo(){ + TenantEntity info = this.getTenantInfo(); + if(StringUtils.isBlank(info.getTenantId())){ + info.setTenantId(info.getParentTenantId()); + info.setParentTenantId(null); + } + if(getUser().getTenantId().equals(info.getTenantId())){ + return info; + } + new Exception("权限不足,只能独立操作"); + return null; + } + public String getIpAddr() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String ipaddress = IPUtil.getIpAddr(request); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignController.java index 9a26cd30b..4d9205386 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignController.java @@ -60,7 +60,7 @@ public class WxCampaignController extends BaseController { if (wxCampaign.getStatus() != null && wxCampaign.getStatus() == -1) { wxCampaign.setStatus(null); } - wxCampaign.updateTenantInfo(getTenantInfo()); + wxCampaign.updateTenantInfo(ifParentUpdateTenantInfo()); wxCampaign.setSortColumns(BaseEntity.SortField.CreateTime_DESC,BaseEntity.SortField.Id_DESC); final PageInfo page = wxCampaignService.listAsPage(wxCampaign, pageNum, pageSize); return new ResultData(page); @@ -78,7 +78,7 @@ public class WxCampaignController extends BaseController { wxCampaign.setCouponIds(JSONArray.toJSONString(new String[0])); } wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); - wxCampaign.updateTenantInfo(getTenantInfo()); + wxCampaign.updateTenantInfo(ifParentUpdateAloneTenantInfo()); wxCampaignService.saveOrUpdate(wxCampaign); return new ResultData(); } @@ -89,7 +89,7 @@ public class WxCampaignController extends BaseController { public ResultData addByPath(@RequestBody WxCampaign wxCampaign) { logger.debug("[" + getIpAddr() + "] WxCampaignController::addByPath"); wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); - wxCampaign.updateTenantInfo(getTenantInfo()); + wxCampaign.updateTenantInfo(ifParentUpdateAloneTenantInfo()); wxCampaignService.addForPath(wxCampaign); return new ResultData(); } @@ -99,7 +99,7 @@ public class WxCampaignController extends BaseController { @SystemControllerLog(description = "宣传页-id更新") public ResultData update(@RequestBody WxCampaign wxCampaign) { logger.debug("[" + getIpAddr() + "] WxCampaignController::update"); - + ifParentUpdateAloneTenantInfo(); if (StringUtils.isNotBlank(wxCampaign.getCouponIds())) { String[] arys = wxCampaign.getCouponIds().split(","); wxCampaign.setCouponIds(JSON.toJSONString(arys)); @@ -114,6 +114,7 @@ public class WxCampaignController extends BaseController { @SystemControllerLog(description = "宣传页-更新状态") public ResultData updateStatus(@RequestBody WxCampaign wxCampaign) { logger.debug("[" + getIpAddr() + "] WxCampaignController::updateStatus"); + ifParentUpdateAloneTenantInfo(); WxCampaign campaign = wxCampaignService.getById(wxCampaign.getId()); // check coupon 状态 if (campaign.getType().equals(EnumCampaignType.STABLE.getCode())) { @@ -146,6 +147,7 @@ public class WxCampaignController extends BaseController { @SystemControllerLog(description = "宣传页-删除") public ResultData delete(Long id) { logger.debug("[" + getIpAddr() + "] WxCampaignController::delete"); + ifParentUpdateAloneTenantInfo(); wxCampaignService.deleteById(id); return new ResultData(Result.SUCCESS, "删除成功", null); } @@ -159,7 +161,6 @@ public class WxCampaignController extends BaseController { WxCampaign wxCampaign = wxCampaignService.getById(id); if (wxCampaign != null) { WxCouponChannel wxCouponChannel = new WxCouponChannel(); - wxCouponChannel.updateTenantInfo(getTenantInfo()); wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_CAMPAIN.getCode()); wxCouponChannel.setSubTargetId(wxCampaign.getId()); wxCouponChannel.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 9acc3b84b..98f71f117 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -57,10 +57,14 @@ public class WxCouponController extends BaseController { @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) @SystemControllerLog(description = "券投放-列表") - public ResultData list(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { + public ResultData list(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Integer type) { logger.debug("[" + getIpAddr() + "] WxCouponController::list"); if (wxCoupon == null) wxCoupon = new WxCoupon(); - wxCoupon.updateTenantInfo(getTenantInfo()); + if(null != null && type == 1){ + wxCoupon.updateTenantInfo(ifParentUpdateTenantInfo()); + }else{ + wxCoupon.updateTenantInfo(getTenantInfo()); + } return wxCouponService.list(wxCoupon, pageNum, pageSize); //全列表 } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java index 347143745..782b0ed6b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java @@ -61,7 +61,7 @@ public class AsyncTask { public void importExcelData(File file, MallUserInfo user, String importKey) { ImportParams params = new ImportParams(); // 需要验证 - params.setImportFields(new String[]{"姓名", "性别", "手机号*", "微信昵称", "学历", "生日", "地址", "上次活跃时间", "注册时间", "标签", "成长值", "积分"}); + params.setImportFields(new String[]{"姓名", "性别", "手机号*", "微信昵称", "学历", "生日", "地址", "上次活跃时间", "注册时间", "成长值", "积分"}); IExcelDataHandler handler = new AsyncTask.UserExcelHandler(); handler.setNeedHandlerFields(new String[]{"手机号*"}); params.setNeedVerify(true); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java index aa55a6aa4..8af83d537 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java @@ -566,4 +566,29 @@ public class WxCUserBasicInfoController extends BaseController { return wxCUserBasicInfoService.updateStatus(wxCUserBasicInfo); } + @ApiOperation("根据手机号迁移") + @PostMapping("/cuserOldToNew") + @SystemControllerLog(description = "会员管理-迁移数据") + public ResultData cuserOldToNew(@RequestBody Map map) { + logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::cuserOldToNew"); + String oldCuserPhone = (String) map.get("oldCuserPhone"); + String newCuserPhone = (String) map.get("newCuserPhone"); + if(StringUtils.isNotBlank(oldCuserPhone) && StringUtils.isNotBlank(newCuserPhone)){ + WxCUserBasicInfo oldCuser = wxCUserBasicInfoService.findInfoByPhone(ifParentUpdateTenantInfo(), oldCuserPhone); + WxCUserBasicInfo newCuser = wxCUserBasicInfoService.findInfoByPhone(ifParentUpdateTenantInfo(), newCuserPhone); + if(null != oldCuser && null != newCuser){ + if(!oldCuserPhone.equals(newCuserPhone)){ + wxCUserBasicInfoService.cuserOldToNew(oldCuser.getId(),newCuser.getId()); + return new ResultData(); + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"同一个用户"); + } + }else{ + return new ResultData(ErrorCode.USER_IS_EMPTY); + } + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + } + } \ No newline at end of file diff --git a/mallinkAdmin/src/main/resources/db/migration/V202007311142__GROUP__ADD_002.sql b/mallinkAdmin/src/main/resources/db/migration/V202007311142__GROUP__ADD_002.sql index 3f92a80be..a1cd281d3 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202007311142__GROUP__ADD_002.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202007311142__GROUP__ADD_002.sql @@ -1,4 +1,4 @@ -update mall_sale_type set menus = '[1, 2, 5, 6, 8, 10, 50, 101, 102, 104, 105, 106, 108, 203, 204, 206, 207, 501, 502, 503, 504, 505, 506, 507, 511, 512, 522, 523, 509, 591, 595, 601, 621, 622, 623, 624, 625, 626, 627, 901, 902]' where id=100 +update mall_sale_type set menus = '[1, 2, 5, 6, 8, 10, 50, 101, 102, 104, 105, 106, 108, 203, 204, 206, 207, 501, 502, 503, 504, 505, 506, 507, 511, 512, 522, 523, 509, 591, 595, 601, 605, 621, 622, 623, 624, 625, 626, 627, 671, 901, 902]' where id=100 CREATE DEFINER=`root`@`%` PROCEDURE `init_after_group`(IN tenantId VARCHAR(25),IN subTenantIds VARCHAR(250)) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql b/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql index ab9b0e2c7..44e751182 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql @@ -10,8 +10,7 @@ ADD COLUMN `final_tenant_id` varchar(5) NOT NULL COMMENT '归属租户ID' AFTER update wx_c_user_basic_info set final_tenant_id = parent_tenant_id; update wx_c_user_basic_info set final_tenant_id = tenant_id where (parent_tenant_id is null or trim(parent_tenant_id) = ""); -DROP INDEX `PHONE_UNIQUE`, -ADD UNIQUE INDEX `PHONE_UNIQUE`(`final_tenant_id`, `phone`) USING BTREE; +ALTER TABLE wx_c_user_basic_info ADD UNIQUE INDEX `PHONE_UNIQUE`(`final_tenant_id`, `phone`) USING BTREE; ALTER TABLE `wx_c_user_basic_info` @@ -72,5 +71,42 @@ ALTER TABLE `wx_c_user_car` ADD COLUMN `vendor_person_id` VARCHAR(100) DEFAULT NULL COMMENT '停车场的会员ID'; +CREATE DEFINER=`root`@`%` PROCEDURE `cuser_old_to_new`(IN `oldCuserId` bigint,IN `newCuserId` bigint) +BEGIN + DECLARE err_flag INT DEFAULT FALSE; + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err_flag = TRUE; + + UPDATE wx_c_user SET user_id = newCuserId WHERE user_id = oldCuserId ; + UPDATE wx_activity_join SET user_id = newCuserId WHERE user_id = oldCuserId ; + UPDATE wx_c_user_tags SET user_id = newCuserId WHERE user_id = oldCuserId ; + UPDATE wx_game_action_log SET user_id = newCuserId WHERE user_id = oldCuserId ; + UPDATE wx_order_group SET user_id = newCuserId WHERE user_id = oldCuserId ; + UPDATE wx_order_press SET user_id = newCuserId WHERE user_id = oldCuserId ; + UPDATE wx_question_log SET user_id = newCuserId WHERE user_id = oldCuserId ; + + UPDATE wx_c_user_car SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + UPDATE wx_c_user_from_b SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + UPDATE wx_coupon_order SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + UPDATE wx_credit_history SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + UPDATE wx_order SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + UPDATE wx_pay_order SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + UPDATE wx_refund_order SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + UPDATE wx_score_history SET c_user_id = newCuserId WHERE c_user_id = oldCuserId ; + + UPDATE wx_card_spend SET owner_id = newCuserId WHERE owner_id = oldCuserId ; + UPDATE wx_coupon_order SET owner_id = newCuserId WHERE owner_id = oldCuserId ; + + UPDATE wx_credit_history SET operator_id = newCuserId WHERE operator_type in (1,2) and operator_id = oldCuserId ; + + UPDATE wx_c_user_basic_info SET phone = phone + '(作废)',`status` = 1 WHERE id = oldCuserId ; + + IF err_flag THEN + ROLLBACK; + ELSE + COMMIT; + END IF; +END + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java index ed2546897..33a8d5968 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java @@ -73,6 +73,7 @@ public interface WxCUserBasicInfoMapper extends CommonMapper selectNotCUserList(); + void cuserOldToNew(@Param(value = "oldCuserId")Long oldCuserId, @Param(value = "newCuserId")Long newCuserId); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxProjectConfigMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxProjectConfigMapper.java index 12113664c..5bce69db0 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxProjectConfigMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxProjectConfigMapper.java @@ -7,6 +7,6 @@ import org.apache.ibatis.annotations.Param; public interface WxProjectConfigMapper extends BaseMapper { - void initAfterGroup(@Param(value = "tenantId")String tenantId, @Param(value = "subTenantIds")String subTenantIds); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java index 363637141..8487ffa49 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java @@ -168,5 +168,7 @@ public interface WxCUserBasicInfoService { List findListByScore(TenantEntity tenantEntity, WxCUserBasicInfoDto wxCUserBasicInfoDto); List findBirthdayList(TenantEntity tenantEntity, String format, String format1); + + void cuserOldToNew(Long oldCuserId, Long newCuserId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index b6bcc33ba..e9c0adf74 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -1207,7 +1207,13 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc return wxCUserBasicInfoMapper.findBirthdayList(finalTenantId,format,format1); } } - @Override + + @Override + public void cuserOldToNew(Long oldCuserId, Long newCuserId) { + wxCUserBasicInfoMapper.cuserOldToNew(oldCuserId,newCuserId); + } + + @Override public List selectListForExcelExport(Object queryParams, int page) { Map params = (Map) queryParams; WxCUserBasicInfo basicInfo = (WxCUserBasicInfo) params.get("basicInfo"); diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index bf3d5af65..2fc1d8abd 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -1065,4 +1065,8 @@ + + + {call cuser_old_to_new(#{oldCuserId},#{newCuserId})} + \ No newline at end of file