From 2b0c1a6404edfe4642ab1cff013f42a313bb621b Mon Sep 17 00:00:00 2001 From: "shuo.wang" Date: Mon, 14 Jul 2025 10:09:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81+=E5=90=8C=E6=AD=A5=E5=8A=A0=E7=9B=9F=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/UserRoleEnum.java | 1 + .../com/cool/store/utils/RedisUtilPool.java | 2 +- .../java/com/cool/store/dao/RegionDao.java | 6 ++ .../java/com/cool/store/dao/ShopInfoDAO.java | 27 +++++++ .../com/cool/store/mapper/RegionMapper.java | 2 + .../com/cool/store/mapper/ShopInfoMapper.java | 4 + .../main/resources/mapper/RegionMapper.xml | 11 +++ .../main/resources/mapper/ShopInfoMapper.xml | 22 +++-- .../com/cool/store/dto/IsCreateStoreDTO.java | 19 +++++ .../cool/store/request/StoreRequestBody.java | 8 ++ .../cool/store/service/DataHandlerServer.java | 1 + .../service/impl/DataHandlerServerImpl.java | 81 +++++++++++++++++++ .../service/impl/OrderSysInfoServiceImpl.java | 9 ++- .../service/impl/SyncMainSysServerImpl.java | 7 +- 14 files changed, 189 insertions(+), 11 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/IsCreateStoreDTO.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java index 19f6b39bb..d269455cb 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java @@ -69,6 +69,7 @@ public enum UserRoleEnum { JING_DONG_OPERATIONS_CUSTOMER(500000000L,"京东运营大区客服"), JING_DONG_HEADQUARTERS_BUILD_CUSTOMER(510000000L,"京东总部建店客服"), + FRANCHISEES(530000000L,"加盟商") ; private Long code; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisUtilPool.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisUtilPool.java index dc9da1cc5..e1249f562 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisUtilPool.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/RedisUtilPool.java @@ -59,7 +59,7 @@ public class RedisUtilPool { try { result = execute(); } catch (Throwable e) { - throw new RuntimeException("Redis execute exception", e); + throw new RuntimeException("Redis execute exception", e); } finally { if (jedis != null) { jedis.close(); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java index b39e62a5e..927ec964e 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java @@ -195,4 +195,10 @@ public class RegionDao { } return regionMapper.getSubRegionByParentIdAndRegionType(regionId, regionType); } + public List getRegionByNameListAndIsPath (List name){ + if (CollectionUtils.isEmpty(name)){ + return Lists.newArrayList(); + } + return regionMapper.getRegionByNameListAndIsPath(name); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java index e0e158d07..a8929d1ea 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java @@ -2,6 +2,7 @@ package com.cool.store.dao; import com.cool.store.constants.CommonConstants; import com.cool.store.dto.FranchiseReportDTO; +import com.cool.store.dto.IsCreateStoreDTO; import com.cool.store.dto.LicenseSyncDTO; import com.cool.store.dto.Preparation.PreparationDTO; import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO; @@ -307,4 +308,30 @@ public class ShopInfoDAO { example.createCriteria().andEqualTo("lineId", lineId).andIn("shopStatus", shopStatus).andEqualTo("deleted", false); return shopInfoMapper.selectByExample(example); } + /** + * @Auther: wangshuo + * @Date: 2025/7/11 + * @description:查询建店资料完成并且已经在标品已经建店是门店 + */ + public List selectIsCreateStore(){ + return shopInfoMapper.selectIsCreateStore(); + } + /** + * @Auther: wangshuo + * @Date: 2025/7/11 + * @description: 查询未建店 + */ + public List selectByNotCreateStore(List isCreateShopIds){ + Example example = new Example(ShopInfoDO.class); + example.createCriteria(). + andNotIn("id", isCreateShopIds).andNotEqualTo("shopStatus", 2).andEqualTo("deleted", false) + .andNotEqualTo("region_id",459); + return shopInfoMapper.selectByExample(example); + } + public Integer updateManagerRegionId(List shopList){ + if (CollectionUtils.isEmpty(shopList)){ + return 0; + } + return shopInfoMapper.updateManagerRegionId(shopList); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java index 1309ba981..16a7fa9ba 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java @@ -113,4 +113,6 @@ public interface RegionMapper { RegionDO getRegionInfoBySynDingDeptId(@Param("synDingDeptId") Long synDingDeptId); List getSubRegionByParentIdAndRegionType( @Param("regionId")Long regionId, @Param("regionType")String regionType); + + List getRegionByNameListAndIsPath(@Param("regionNameList") List regionNameList); } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java index eeb076ae4..bb65e1e57 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java @@ -1,6 +1,7 @@ package com.cool.store.mapper; import com.cool.store.dto.FranchiseReportDTO; +import com.cool.store.dto.IsCreateStoreDTO; import com.cool.store.dto.LicenseSyncDTO; import com.cool.store.dto.Preparation.PreparationDTO; import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO; @@ -142,4 +143,7 @@ public interface ShopInfoMapper extends Mapper { Integer updateShopCity(@Param("list") List list); List getShopFranchiseReportList(@Param("request") FranchiseReportRequest request); + + List selectIsCreateStore(); + Integer updateManagerRegionId(@Param("list") List shopList); } diff --git a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml index ce81f0b84..090772454 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml @@ -428,6 +428,17 @@ and parent_id = #{regionId} and region_type = #{regionType} + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml index ca882f40c..f0fce29cf 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml @@ -543,13 +543,20 @@ and xsi.shop_name Like concat("%",#{keyWord},"%") or xsi.store_num Like concat("%",#{keyWord},"%") - + + SELECT a.id as shopId, c.parent_id as `pid` FROM xfsg_shop_info a LEFT JOIN store_214ac5a3a517472a87268e02a2e6410a b ON a.shop_code = b.store_num - LEFT JOIN xfsg_shop_stage_info c ON c.shop_id = a.id - WHERE b.store_num is not null and a.shop_code is not null and a.deleted =0 and a.shop_status != 2 and a.shop_code != '' and c.shop_sub_stage_status in (1560) - + LEFT JOIN `region_214ac5a3a517472a87268e02a2e6410a` c on b.region_id = c.`id` + WHERE b.store_num is not null + and a.shop_code is not null + and a.deleted =0 + and a.shop_status != 2 + and a.shop_code != "" + and c.deleted = 0 + and b.is_delete = 'effective' + and a.region_id != 459 @@ -573,4 +580,9 @@ update xfsg_shop_info set shop_name = #{item.shopName}, province =#{item.province}, city = #{item.city}, district=#{item.district}, detail_address = #{item.detailAddress} where id = #{item.id} + + + update xfsg_shop_info set manager_region_id = #{item.managerRegionId} where id = #{item.id} + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/IsCreateStoreDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/IsCreateStoreDTO.java new file mode 100644 index 000000000..63f435afd --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/IsCreateStoreDTO.java @@ -0,0 +1,19 @@ +package com.cool.store.dto; + +import lombok.Data; + +/** + * @Author: WangShuo + * @Date: 2025/07/11/16:02 + * @Version 1.0 + * @注释: + */ +@Data +public class IsCreateStoreDTO { + + private Long shopId; + + private Long pid; + + private String pidName; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/StoreRequestBody.java b/coolstore-partner-model/src/main/java/com/cool/store/request/StoreRequestBody.java index 433593170..d9fc4fbea 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/StoreRequestBody.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/StoreRequestBody.java @@ -1,6 +1,7 @@ package com.cool.store.request; import com.alibaba.fastjson.JSONObject; +import com.cool.store.userholder.CurrentUser; import lombok.Data; import java.util.List; @@ -88,4 +89,11 @@ public class StoreRequestBody { private Long brandId; private String eid; + //加盟商手机号 + private String partnerMobile; + + private String partnerName; + //加盟商职位 id + private Long partnerRoleId; + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java b/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java index 3c2ce85c1..56b1a2c48 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java @@ -81,5 +81,6 @@ public interface DataHandlerServer { * @Date: 2025/7/11 * @description:处理老数据 已经建店并且在标品中也建店的数据 处理所属管理区域 */ + void dataHandlerCreateStore(); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java index 1bb121173..d7f1b2e8d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java @@ -3,6 +3,7 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; +import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.*; import com.cool.store.dto.*; @@ -46,6 +47,8 @@ import static com.cool.store.utils.poi.DateUtils.YYYY_MM_DD; @Service @Slf4j public class DataHandlerServerImpl implements DataHandlerServer { + @Resource + private RegionDao regionDao; @Resource private LinePayService linePayService; @Resource @@ -88,6 +91,8 @@ public class DataHandlerServerImpl implements DataHandlerServer { private ShopAccountDAO shopAccountDAO; @Resource private SignFranchiseDAO signFranchiseDAO; + @Resource + private EnterpriseUserDAO enterpriseUserDAO; @Value("${mybatis.configuration.variables.enterpriseId}") private String eid; @@ -1143,6 +1148,82 @@ public class DataHandlerServerImpl implements DataHandlerServer { return true; } + @Override + public void dataHandlerCreateStore() { + //已经创建了的门店 + List isCreateStore = shopInfoDAO.selectIsCreateStore(); + List updateList = new ArrayList<>(); + for (IsCreateStoreDTO isCreateStoreDTO:isCreateStore){ + ShopInfoDO shopInfoDO = new ShopInfoDO(); + shopInfoDO.setId(isCreateStoreDTO.getShopId()); + shopInfoDO.setManagerRegionId(isCreateStoreDTO.getPid()); + updateList.add(shopInfoDO); + } + List isShopIds = isCreateStore.stream().map(IsCreateStoreDTO::getShopId).collect(Collectors.toList()); + //未建店 + List shopInfoDOS = shopInfoDAO.selectByNotCreateStore(isShopIds); + Set investUserIds = shopInfoDOS.stream().map(ShopInfoDO::getInvestmentManager).collect(Collectors.toSet()); + Map userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(investUserIds)); + Set nameSet = userNameMap.keySet(); + + List regionDOList = regionDao.getRegionByNameListAndIsPath(new ArrayList<>(nameSet)); + Set parentIdSet = new HashSet<>(); + regionDOList.forEach(regionDO -> parentIdSet.add(Long.valueOf(regionDO.getParentId()))); + Map parentRegionNameMap = regionDao.getRegionNameMap(new ArrayList<>(parentIdSet)); + + + Map shopRegionNameMap = regionDao.getRegionNameMap(new ArrayList<>(shopInfoDOS.stream().map(ShopInfoDO::getRegionId).collect(Collectors.toSet()))); + List errorList = new ArrayList<>(); + Map> regionName = regionDOList.stream().collect(Collectors.groupingBy(RegionDO::getName)); + + for (ShopInfoDO shopInfoDO : shopInfoDOS){ + String name = userNameMap.getOrDefault(shopInfoDO.getInvestmentManager(),""); + if (StringUtils.isBlank(name)){ + log.info("门店招商经理未找到 shopId:{}",shopInfoDO.getId()); + ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO(shopInfoDO.getShopCode(), "门店招商经理未找到"); + continue; + } + List regionList = regionName.getOrDefault(name, new ArrayList<>()); + if (CollectionUtils.isEmpty(regionList)){ + log.info("门店所属管理区域未找到 shopId:{}",shopInfoDO.getId()); + ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO(shopInfoDO.getShopCode(), "门店所属管理区域未找到"); + continue; + } + for (RegionDO regionDO : regionList){ + String parentRegionNameMapOrDefault = parentRegionNameMap.getOrDefault(Long.valueOf(regionDO.getParentId()), ""); + String shopRegionName = shopRegionNameMap.getOrDefault(regionDO.getId(), ""); + if (StringUtils.isNotBlank(parentRegionNameMapOrDefault)&&StringUtils.isNotBlank(shopRegionName) + &&(parentRegionNameMapOrDefault.equals("门店"+shopRegionName)||parentRegionNameMapOrDefault.equals(shopRegionName))){ + shopInfoDO.setManagerRegionId(regionDO.getId()); + updateList.add(shopInfoDO); + break; + } + } + } + shopInfoDAO.updateManagerRegionId(updateList); + if (CollectionUtils.isNotEmpty(errorList)) { + String url = null; + try { + url = easyExcelUtil.exportExcel(ImportOaOldShopDataErrorDTO.class, errorList, null, + FileTypeEnum.IMPORT_OA_OLD_SHOP_STAGE_DATA.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date()), + FileTypeEnum.IMPORT_OA_OLD_SHOP_STAGE_DATA.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date())); + } catch (Exception e) { + log.info("导出同步门店数据错误列表失败 errorList:{}", JSONObject.toJSONString(errorList)); + } + ImportTaskDO importTaskDO = new ImportTaskDO(); + importTaskDO.setFileName("同步门店数据错误列表"); + importTaskDO.setFileType(FileTypeEnum.IMPORT_FITMENT_SHOP_STAGE.getFileType()); + importTaskDO.setIsImport(true); + importTaskDO.setFileType(url); + importTaskDO.setStatus(ImportTaskStatusEnum.PROGRESS.getCode()); + importTaskDO.setCreateUserId(CurrentUserHolder.getUserId()); + importTaskDO.setCreateName(CurrentUserHolder.getUser().getName()); + importTaskDO.setCreateTime(System.currentTimeMillis()); + importTaskMapper.insert(eid, importTaskDO); + } + + } + private static @NotNull ShopStageInfoDO getShopStageInfoDO(ShopSubStageEnum shopSubStageEnum, ShopStageInfoDO shopStageInfoDO, ShopSubStageStatusEnum shopSubStageStatus) { ShopStageEnum shopStageEnum = shopSubStageEnum.getShopStageEnum(); ShopStageInfoDO shopStageInfo = new ShopStageInfoDO(); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OrderSysInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OrderSysInfoServiceImpl.java index 46819be9e..8662212aa 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OrderSysInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OrderSysInfoServiceImpl.java @@ -12,10 +12,7 @@ import com.cool.store.mapper.FranchiseFeeMapper; import com.cool.store.mapper.SignFranchiseMapper; import com.cool.store.request.AuditRequest; import com.cool.store.request.OrderSysInfoRequest; -import com.cool.store.service.OperationLogService; -import com.cool.store.service.OrderSysInfoService; -import com.cool.store.service.SignFranchiseService; -import com.cool.store.service.UserAuthMappingService; +import com.cool.store.service.*; import com.cool.store.utils.poi.StringUtils; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Value; @@ -40,6 +37,8 @@ import static com.cool.store.enums.point.ShopSubStageStatusEnum.*; public class OrderSysInfoServiceImpl implements OrderSysInfoService { + @Resource + private SyncMainSysServer syncMainSysServer; @Resource FranchiseFeeMapper franchiseFeeMapper; @Resource @@ -246,12 +245,14 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService { if (!flag && SHOP_SUB_STAGE_STATUS_154.equals(nowStatus)) { shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_156); stageCompletion(request.getShopId()); + syncMainSysServer.syncStore(request.getShopId()); return CommonConstants.ONE; } else { shopStageInfoDAO.updateShopStageInfo(request.getShopId(), nextStatus); if (SHOP_SUB_STAGE_STATUS_156.equals(nextStatus)){ stageCompletion(request.getShopId()); + syncMainSysServer.syncStore(request.getShopId()); } return CommonConstants.ONE; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java index d4b3da4e7..6a1c88fc1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java @@ -1,6 +1,7 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.CurrentUserHolder; import com.cool.store.dao.*; import com.cool.store.entity.*; import com.cool.store.enums.*; @@ -23,6 +24,7 @@ import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; +import static com.cool.store.enums.AuditExecuteEnum.FRANCHISEES; import static com.cool.store.enums.ExtendFieldTypeEnum.*; /** @@ -66,7 +68,7 @@ public class SyncMainSysServerImpl implements SyncMainSysServer { private String eid; @Override - //@Async + @Async public void syncStore(Long shopId) { StoreRequestBody requestBody = new StoreRequestBody(); ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); @@ -115,6 +117,9 @@ public class SyncMainSysServerImpl implements SyncMainSysServer { extendField.put(configMapByActive.get(ONLINE_BRAND.getMsg()).getKey(), FranchiseBrandEnum.getDescByCode(shopInfo.getFranchiseBrand())); requestBody.setExtend_field(JSONObject.toJSONString(extendField)); requestBody.setEid(eid); + requestBody.setPartnerName(lineInfoDO.getUsername()); + requestBody.setPartnerMobile(lineInfoDO.getMobile()); + requestBody.setPartnerRoleId(UserRoleEnum.FRANCHISEES.getCode()); simpleMessageService.send(JSONObject.toJSONString(requestBody), RocketMqTagEnum.ZXJP_CREATE_STORE); }