From 0ec142170e9cafc20acb76531fcb5a54913efe0d Mon Sep 17 00:00:00 2001 From: wxp01309236 Date: Mon, 19 Jun 2023 19:28:54 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E9=AA=8C=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/constants/CommonConstants.java | 2 + .../com/cool/store/utils/AESDecryptor.java | 139 ++++++++++++++++++ .../mapper/HyPartnerBaseInfoMapper.xml | 2 +- .../store/service/WechatMiniAppService.java | 2 +- .../impl/WechatMiniAppServiceImpl.java | 16 +- .../cool/store/config/BodyWrapperFilter.java | 26 ++++ .../CustomHttpServletRequestWrapper.java | 60 ++++++++ .../cool/store/config/SignValidateFilter.java | 43 +++--- .../store/config/WebApplicationConfig.java | 29 ++++ .../controller/MiniProgramAppController.java | 9 +- 10 files changed, 300 insertions(+), 28 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/utils/AESDecryptor.java create mode 100644 coolstore-partner-webc/src/main/java/com/cool/store/config/BodyWrapperFilter.java create mode 100644 coolstore-partner-webc/src/main/java/com/cool/store/config/CustomHttpServletRequestWrapper.java create mode 100644 coolstore-partner-webc/src/main/java/com/cool/store/config/WebApplicationConfig.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java index 21140ab24..0ecec8b2a 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java @@ -120,4 +120,6 @@ public class CommonConstants { public static final String TRANSFER = "transfer"; + public static final String FIX_MOBILE_OPENID_TEST = "HSAY5531DA7"; + public static final String FIX_MOBILE_OPENID_ONLINE = "HSAY4AF322E"; } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/AESDecryptor.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/AESDecryptor.java new file mode 100644 index 000000000..39f7107fb --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/AESDecryptor.java @@ -0,0 +1,139 @@ +package com.cool.store.utils; + +import com.cool.store.exception.ServiceException; + +import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.KeyGenerator; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +/** + * https://cloud.tencent.com/developer/article/1823249 + * 前后端约定 + */ +public class AESDecryptor { + + private static String Algorithm = "AES"; + private static String AlgorithmProvider = "AES/CBC/PKCS5Padding"; //算法/模式/补码方式 + + public static byte[] generatorKey() throws NoSuchAlgorithmException { + KeyGenerator keyGenerator = KeyGenerator.getInstance(Algorithm); + keyGenerator.init(256);//默认128,获得无政策权限后可为192或256 + SecretKey secretKey = keyGenerator.generateKey(); + return secretKey.getEncoded(); + } + + public static IvParameterSpec getIv(byte[] ivstr) throws UnsupportedEncodingException { + IvParameterSpec ivParameterSpec = new IvParameterSpec(ivstr); + return ivParameterSpec; + } + + public static String encrypt(String src, String keystr, IvParameterSpec iv) throws + NoSuchAlgorithmException, + NoSuchPaddingException, + InvalidKeyException, + IllegalBlockSizeException, + BadPaddingException, + UnsupportedEncodingException, + InvalidAlgorithmParameterException { + byte[] key = keystr.getBytes("utf-8"); + SecretKey secretKey = new SecretKeySpec(key, Algorithm); + IvParameterSpec ivParameterSpec = iv; + Cipher cipher = Cipher.getInstance(AlgorithmProvider); + cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec); + byte[] cipherBytes = cipher.doFinal(src.getBytes(Charset.forName("utf-8"))); + return byteToHexString(cipherBytes); + } + + public static String decrypt(String src, String keystr) { + try { + byte[] key = keystr.getBytes("utf-8"); + SecretKey secretKey = new SecretKeySpec(key, Algorithm); + IvParameterSpec ivParameterSpec = getIv(Arrays.copyOfRange(keystr.getBytes("utf-8"), 0, 16)); + Cipher cipher = Cipher.getInstance(AlgorithmProvider); + cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec); + byte[] hexBytes = hexStringToBytes(src); + byte[] plainBytes = cipher.doFinal(hexBytes); + return new String(plainBytes, "utf-8"); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } + } + + /** + * 将byte转换为16进制字符串 + * + * @param src + * @return + */ + public static String byteToHexString(byte[] src) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < src.length; i++) { + int v = src[i] & 0xff; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + sb.append("0"); + } + sb.append(hv); + } + return sb.toString(); + } + + /** + * 将16进制字符串装换为byte数组 + * + * @param hexString + * @return + */ + public static byte[] hexStringToBytes(String hexString) { + hexString = hexString.toUpperCase(); + int length = hexString.length() / 2; + char[] hexChars = hexString.toCharArray(); + byte[] b = new byte[length]; + for (int i = 0; i < length; i++) { + int pos = i * 2; + b[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); + } + return b; + } + + private static byte charToByte(char c) { + return (byte) "0123456789ABCDEF".indexOf(c); + } + + public static void main(String[] args) { + try { + /* // 密钥必须是16的倍数 + String keystr = "0123456789ABCDEF"; + String ivstr = "0123456789101112"; + String src = "Hello World"; + + System.out.println("密钥:" + keystr); + System.out.println("偏移量:" + ivstr); + System.out.println("原字符串:" + src); + IvParameterSpec iv = getIv(ivstr); + String enc = encrypt(src, keystr, iv); + System.out.println("加密:" + enc); +*/ + String enc = "38395651e391c4b8ca327c4742b7f52f"; + String keystr = "77fea013c3a6459685b83c21a2fc3411"; + String ivstr = "77fea013c3a64596"; + // IvParameterSpec iv = getIv(ivstr); + String dec = decrypt(enc, keystr); + System.out.println("解密:" + dec); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml index 2fd127a2c..d32350220 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml @@ -213,8 +213,8 @@ mobile = #{mobile}, - where partner_id = #{partnerId} + where partner_id = #{partnerId} + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevZoneInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevZoneInfoMapper.xml index ec0b55d4a..3158fef7d 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevZoneInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyIntendDevZoneInfoMapper.xml @@ -128,4 +128,13 @@ where type = #{type} and deleted = 0 + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml index c6f5aeb70..384477ea1 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml @@ -204,4 +204,8 @@ update region set deleted = 1 where region_id = #{regionId} + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml index 4560fc962..73df66fb5 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml @@ -131,4 +131,8 @@ select region_id from user_region_mapping where user_id = #{userId} + + \ No newline at end of file diff --git a/coolstore-partner-model/coolstore-partner-model.iml b/coolstore-partner-model/coolstore-partner-model.iml index 6b15b2012..d570c914c 100644 --- a/coolstore-partner-model/coolstore-partner-model.iml +++ b/coolstore-partner-model/coolstore-partner-model.iml @@ -88,8 +88,6 @@ - - @@ -110,6 +108,11 @@ + + + + + diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/buser/UserPositionAndUserScopeDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/buser/UserPositionAndUserScopeDTO.java new file mode 100644 index 000000000..74ea3cad7 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/buser/UserPositionAndUserScopeDTO.java @@ -0,0 +1,23 @@ +package com.cool.store.dto.buser; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zhangchenbiao + * @FileName: UserPositionAndUserScopeDTO + * @Description: 员工角色&获取线索范围 + * @date 2023-06-19 16:33 + */ +@Data +public class UserPositionAndUserScopeDTO { + + @ApiModelProperty("招商经理用户ids") + private List investmentUserIds; + + @ApiModelProperty("开发经理用户ids") + private List developmentUserIds; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java index ced52a735..675b05ba2 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseUserService.java @@ -1,11 +1,9 @@ package com.cool.store.service; +import com.cool.store.dto.buser.UserPositionAndUserScopeDTO; import com.cool.store.entity.EnterpriseUserDO; -import com.cool.store.request.EnterpriseUserRequest; import com.cool.store.vo.EnterpriseUserSingleInfoVO; -import com.cool.store.vo.buser.EnterpriseUserPageVO; import java.util.List; -import java.util.Map; /** * @author zhangchenbiao @@ -25,4 +23,16 @@ public interface EnterpriseUserService { */ List getInvestmentManagerList(String type,String userId,String keyword); + + /** + * 获取用户角色已用户管辖的员工范围 + * @param userId + * @return + */ + UserPositionAndUserScopeDTO getUserIdsByScope(String userId); + + + + List getDevelopmentDirectorList(String wantShopArea); + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java index 450fb20fe..b90cc309a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java @@ -243,9 +243,20 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { break; case DEPARTMENT_DELETED: boolean leafNode = regionDAO.isLeafNode(departmentDetail.getId()); - if(leafNode){ + boolean isExistUser = enterpriseUserDAO.isExistDeptUser(departmentDetail.getId()); + if(leafNode && !isExistUser){ //叶子节点的时候会删除部门 regionDAO.deleteRegionByRegionId(departmentDetail.getId()); + //清除负责人信息 + List leaderUserList = enterpriseUserDAO.getUserListByDeptLeader(departmentDetail.getId()); + for (EnterpriseUserDO enterpriseUser : leaderUserList) { + List existDeptIds = JSONObject.parseArray(enterpriseUser.getLeaderDeptIds()).stream().map(String::valueOf).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(existDeptIds)){ + existDeptIds.remove(departmentDetail.getId()); + } + enterpriseUser.setLeaderDeptIds(JSONObject.toJSONString(existDeptIds)); + } + enterpriseUserDAO.batchInsertOrUpdate(leaderUserList); }else{ syncAll(); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java index f362583ed..f30d0cd05 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java @@ -1,8 +1,13 @@ package com.cool.store.service.impl; +import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; +import com.cool.store.dto.buser.UserPositionAndUserScopeDTO; import com.cool.store.entity.*; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.UserPositionEnum; +import com.cool.store.exception.ServiceException; import com.cool.store.service.EnterpriseUserService; import com.cool.store.service.ZoneService; import com.cool.store.vo.EnterpriseUserSingleInfoVO; @@ -10,10 +15,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * @author zhangchenbiao @@ -31,11 +34,13 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService { @Resource private EnterpriseUserRoleDAO enterpriseUserRoleDAO; @Resource - ZoneService zoneService; + private ZoneService zoneService; @Resource - RegionDAO regionDAO; + private RegionDAO regionDAO; @Resource - UserRegionMappingDAO userRegionMappingDAO; + private UserRegionMappingDAO userRegionMappingDAO; + @Resource + private HyIntendDevZoneInfoDAO hyIntendDevZoneInfoDAO; @@ -87,4 +92,52 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService { }); return enterpriseUserSingleInfoVOS; } + + @Override + public UserPositionAndUserScopeDTO getUserIdsByScope(String userId) { + EnterpriseUserDO userInfo = enterpriseUserDAO.getUserInfoById(userId); + if(Objects.isNull(userInfo)){ + throw new ServiceException(ErrorCodeEnum.USER_NOT_EXIST); + } + UserPositionAndUserScopeDTO result = new UserPositionAndUserScopeDTO(); + if(!userInfo.getIsLeader()){ + result.setDevelopmentUserIds(Arrays.asList(userId)); + result.setInvestmentUserIds(Arrays.asList(userId)); + return result; + } + List leadDeptIds = JSONObject.parseArray(userInfo.getLeaderDeptIds()).stream().map(String::valueOf).collect(Collectors.toList()); + //获取这些区域的子节点 + List subRegionIds = regionDAO.getSubRegionIds(leadDeptIds); + //这些部门是否关联了意向区域 + List zoneInfoList = hyIntendDevZoneInfoDAO.getZoneInfoByRegionIds(subRegionIds); + if(CollectionUtils.isEmpty(zoneInfoList)){ + result.setDevelopmentUserIds(Arrays.asList(userId)); + result.setInvestmentUserIds(Arrays.asList(userId)); + return result; + } + //意向区域 + List intendList = zoneInfoList.stream().filter(o -> "intent".equals(o.getType())).flatMap(o->JSONObject.parseArray(o.getAssociatedRegionId(), String.class).stream()).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(intendList)){ + //获取负责的区域 + intendList.retainAll(subRegionIds); + List userList = userRegionMappingDAO.getUserListByRegionIds(intendList); + userList.add(userId); + result.setInvestmentUserIds(userList); + } + //开发区域 + List developementList = zoneInfoList.stream().filter(o -> "developement".equals(o.getType())).flatMap(o->JSONObject.parseArray(o.getAssociatedRegionId(), String.class).stream()).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(developementList)){ + //获取负责的区域 + developementList.retainAll(subRegionIds); + List userList = userRegionMappingDAO.getUserListByRegionIds(developementList); + userList.add(userId); + result.setDevelopmentUserIds(userList); + } + return result; + } + + @Override + public List getDevelopmentDirectorList(String wantShopArea) { + return null; + } } diff --git a/coolstore-partner-webb/coolstore-partner-webb.iml b/coolstore-partner-webb/coolstore-partner-webb.iml index a2e227e0b..753dcbc15 100644 --- a/coolstore-partner-webb/coolstore-partner-webb.iml +++ b/coolstore-partner-webb/coolstore-partner-webb.iml @@ -51,6 +51,11 @@ + + + + + @@ -88,8 +93,6 @@ - - diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java index 8a6c7d9c4..81bdfcdbb 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java @@ -2,6 +2,7 @@ package com.cool.store.controller; import com.alibaba.fastjson.JSONObject; import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dto.buser.UserPositionAndUserScopeDTO; import com.cool.store.dto.calendar.CreateCalendarEventDTO; import com.cool.store.dto.calendar.DeleteCalendarEventDTO; import com.cool.store.dto.calendar.UpdateCalendarEventDTO; @@ -223,4 +224,9 @@ public class TestController { } } + @GetMapping("getUserIdsByScope") + public ResponseResult getUserIdsByScope(@RequestParam("userId") String userId){ + return ResponseResult.success(enterpriseUserService.getUserIdsByScope(userId)); + } + } diff --git a/coolstore-partner-webc/coolstore-partner-webc.iml b/coolstore-partner-webc/coolstore-partner-webc.iml index f6dc12615..ede671b45 100644 --- a/coolstore-partner-webc/coolstore-partner-webc.iml +++ b/coolstore-partner-webc/coolstore-partner-webc.iml @@ -51,6 +51,11 @@ + + + + + @@ -88,8 +93,6 @@ - - From 0bd2f2b96adf3567f6463b1591c4ead5c2d91a35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Mon, 19 Jun 2023 19:57:53 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E5=88=86=E9=85=8D=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/enums/AcceptAdjustTypeEnum.java | 37 +++++++++++++ .../com/cool/store/enums/AreaStatusEnum.java | 37 +++++++++++++ .../com/cool/store/enums/ErrorCodeEnum.java | 2 +- .../com/cool/store/dao/HyOpenAreaInfoDAO.java | 15 ++++++ .../store/mapper/HyOpenAreaInfoMapper.java | 6 ++- .../resources/mapper/HyOpenAreaInfoMapper.xml | 21 ++++++++ .../service/HyPartnerLineInfoService.java | 9 ++++ .../impl/HyPartnerLineInfoServiceImpl.java | 54 ++++++++++++++++--- 8 files changed, 171 insertions(+), 10 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/AcceptAdjustTypeEnum.java create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AcceptAdjustTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AcceptAdjustTypeEnum.java new file mode 100644 index 000000000..20ad79fb7 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AcceptAdjustTypeEnum.java @@ -0,0 +1,37 @@ +package com.cool.store.enums; + +/** + * @Author suzhuhong + * @Date 2023/6/19 19:48 + * @Version 1.0 + */ +public enum AcceptAdjustTypeEnum { + + NOT_ACCEPT(0,"不接受调剂"), + NATIONAL_ADJUSTMENT(1,"全国调剂"), + PROVINCIAL_ADJUSTMENT(2,"省内调剂"), + LOCAL_ADJUSTMENT(3,"市区开放"), + + + + + ; + + private Integer code; + + private String message; + + AcceptAdjustTypeEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java new file mode 100644 index 000000000..a2c11fed1 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java @@ -0,0 +1,37 @@ +package com.cool.store.enums; + +/** + * @Author suzhuhong + * @Date 2023/6/19 19:44 + * @Version 1.0 + */ +public enum AreaStatusEnum { + + + OPEN("open","开放"), + NOT_OPEN("notOpen","未开放"), + SATURATED("saturated","已饱和"), + KEY_OPEN("keyOpen","重点开放"), + + + + ; + + private String code; + + private String message; + + AreaStatusEnum(String code, String message) { + this.code = code; + this.message = message; + } + + + public String getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 535d2f7ea..f40c374b3 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -51,7 +51,7 @@ public enum ErrorCodeEnum { PARENT_NODE_NOT_EXIST(400002, "父节点不存在", null), - LINE_ID_IS_NOT_EXIST(500001, "线索ID不存在!", null), + LINE_ID_IS_NOT_EXIST(500001, "线索信息不存在!", null), WORK_FLOW_STAGE_PASS_ERROR(500002, "通过错误,非对应阶段!", null), PARTNER_USER_NOT_EXIST(500003, "加盟商用户信息不存在!", null), ZONE_NOT_EXIST(500004, "战区不存在!", null), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java index c2842a8f7..63ca48ab2 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java @@ -55,6 +55,13 @@ public class HyOpenAreaInfoDAO { return hyOpenAreaInfoMapper.getChildrenList(type,parentId); } + public Integer getChildrenCount(String type ,Long parentId){ + if (parentId==null){ + return 0; + } + return hyOpenAreaInfoMapper.getChildrenCount(type,parentId); + } + public int batchUpdateById(String backgroundBanner,String detailBanner,String areaStatus,String updateUserId,List ids){ if (StringUtils.isEmpty(areaStatus)){ @@ -77,4 +84,12 @@ public class HyOpenAreaInfoDAO { } return hyOpenAreaInfoMapper.selectByIds(ids); } + + + public HyOpenAreaInfoDO selectById(Long id){ + if (id==null){ + return null; + } + return hyOpenAreaInfoMapper.selectById(id); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java index 854b9dfaf..3bd0fa866 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java @@ -4,6 +4,7 @@ import com.cool.store.dto.partner.ApplyReservationProvinceDTO; import com.cool.store.entity.HyOpenAreaInfoDO; import com.cool.store.entity.HyPartnerBaseInfoDO; import com.github.pagehelper.PageInfo; +import io.swagger.models.auth.In; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -69,6 +70,9 @@ public interface HyOpenAreaInfoMapper { List getChildrenList(@Param("type") String type , @Param("parentId") Long parentId); + Integer getChildrenCount(@Param("type") String type , + @Param("parentId") Long parentId); + /** * 更新城市昨天 @@ -98,7 +102,7 @@ public interface HyOpenAreaInfoMapper { */ List selectByIds(@Param("idList") List idList); - + HyOpenAreaInfoDO selectById(@Param("id") Long id); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml index f13518de0..86a29174f 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml @@ -18,6 +18,11 @@ id, parent_id, area_name, area_path, background_banner, detail_banner, area_status, deleted, create_time, update_time, update_user_id + insert into hy_open_area_info @@ -242,6 +247,22 @@ + + + + diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java index 5ac2be270..f59e37b15 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java @@ -30,7 +30,7 @@ public interface OpenAreaService { * @param flag * @return */ - List queryAllOpenAreaByKeyword(String keyword,Boolean flag); + List queryAllOpenAreaByKeyword(String keyword,Boolean applyFlag,Boolean flag); /** diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java index f30d0cd05..4989edba2 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java @@ -125,11 +125,11 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService { result.setInvestmentUserIds(userList); } //开发区域 - List developementList = zoneInfoList.stream().filter(o -> "developement".equals(o.getType())).flatMap(o->JSONObject.parseArray(o.getAssociatedRegionId(), String.class).stream()).collect(Collectors.toList()); - if(CollectionUtils.isNotEmpty(developementList)){ + List developmentList = zoneInfoList.stream().filter(o -> "developement".equals(o.getType())).flatMap(o->JSONObject.parseArray(o.getAssociatedRegionId(), String.class).stream()).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(developmentList)){ //获取负责的区域 - developementList.retainAll(subRegionIds); - List userList = userRegionMappingDAO.getUserListByRegionIds(developementList); + developmentList.retainAll(subRegionIds); + List userList = userRegionMappingDAO.getUserListByRegionIds(developmentList); userList.add(userId); result.setDevelopmentUserIds(userList); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index 15f07ffd1..5b2e4f596 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.constants.RedisConstant; import com.cool.store.dao.*; +import com.cool.store.dto.buser.UserPositionAndUserScopeDTO; import com.cool.store.dto.partner.*; import com.cool.store.entity.EnterpriseUserDO; import com.cool.store.entity.HyOpenAreaInfoDO; @@ -16,6 +17,7 @@ import com.cool.store.exception.ServiceException; import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.LineRequest; import com.cool.store.request.PrivateSeaLineListRequest; +import com.cool.store.service.EnterpriseUserService; import com.cool.store.service.HyPartnerLineInfoService; import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.RedisUtilPool; @@ -54,6 +56,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { private RedisUtilPool redisUtilPool; @Resource HyOpenAreaInfoDAO hyOpenAreaInfoDAO; + @Resource + EnterpriseUserService enterpriseUserService; @Override public StageCountVO selectStagePendingCount(String userId) { @@ -301,13 +305,16 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { return publicSeaLineList; } + + @Override public PageInfo privateSeaLineList(String userId, PrivateSeaLineListRequest request) { - // TODO: 2023/6/19 su userlist计算 + UserPositionAndUserScopeDTO userIdsByScope = enterpriseUserService.getUserIdsByScope(userId); PageHelper.startPage(request.getPageNum(),request.getPageSize()); PageInfo privateLineList = new PageInfo(hyPartnerLineInfoDAO.getPrivateSeaLineList(request.getKeyword(), request.getKeywordType(), request.getWorkflowStage(), request.getWorkflowStatus(), request.getDeadlineStart(), request.getDeadlineEnd(), - request.getIntentArea(), request.getAcceptAdjustType(), request.getStoreKeyword(), request.getStoreKeywordType(), null)); + request.getIntentArea(), request.getAcceptAdjustType(), request.getStoreKeyword(), + request.getStoreKeywordType(), userIdsByScope.getInvestmentUserIds(),userIdsByScope.getDevelopmentUserIds())); List list = privateLineList.getList(); if (CollectionUtils.isEmpty(list)){ return new PageInfo<>(); @@ -389,10 +396,11 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId()); HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea())); - if (AreaStatusEnum.OPEN.equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.equals(hyOpenAreaInfoDO.getAreaStatus())){ + + if (AreaStatusEnum.OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){ return Boolean.TRUE; } - if (AreaStatusEnum.NOT_OPEN.equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.equals(hyOpenAreaInfoDO.getAreaStatus())){ + if (AreaStatusEnum.NOT_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){ if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){ return Boolean.FALSE; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java index 630eb232c..ba4c0a0c9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java @@ -38,7 +38,7 @@ public class OpenAreaServiceImpl implements OpenAreaService { Map longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x)); //查询关键字下所有的数据 原始的数据 - List hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,areaStatus,flag); + List hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,null,areaStatus,flag); Set longSet = hyOpenAreaInfoDOS.stream().map(HyOpenAreaInfoDO::getId).collect(Collectors.toSet()); List result = new ArrayList<>(); @@ -60,13 +60,13 @@ public class OpenAreaServiceImpl implements OpenAreaService { } @Override - public List queryAllOpenAreaByKeyword(String keyword, Boolean flag) { + public List queryAllOpenAreaByKeyword(String keyword,Boolean applyFlag, Boolean flag) { //先查出所有的一级菜单 List openArea = hyOpenAreaInfoDAO.queryFirstLevel(); Map longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x)); //查询关键字下所有的数据 原始的数据 - List hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,null,flag); + List hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,applyFlag,null,flag); Map hyMap = hyOpenAreaInfoDOS.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x)); diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java index 8b1e7b5fd..8181e0ffd 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/DeskController.java @@ -213,8 +213,7 @@ public class DeskController { @PostMapping(path = "/queryPrivateSeaLineList") @ApiOperation("私海列表") public ResponseResult> queryPrivateSeqLineList(@RequestBody PrivateSeaLineListRequest privateSeaLineListRequest){ - - return ResponseResult.success(); + return ResponseResult.success(hyPartnerLineInfoService.privateSeaLineList(CurrentUserHolder.getUserId(),privateSeaLineListRequest)); } @PostMapping(path = "/queryBlackList") diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/OpenAreaController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/OpenAreaController.java index 876cf2e81..f4c4958eb 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/OpenAreaController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/OpenAreaController.java @@ -43,7 +43,7 @@ public class OpenAreaController { @ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false) }) public ResponseResult> getAllOpenAreaTree(@RequestParam(value = "keyword",required = false)String keyword){ - return ResponseResult.success(openAreaService.queryAllOpenAreaByKeyword(keyword,Boolean.FALSE)); + return ResponseResult.success(openAreaService.queryAllOpenAreaByKeyword(keyword,null,Boolean.FALSE)); } diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java index 5090d56c5..6a3d2c16e 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java @@ -49,9 +49,11 @@ public class OpenAreaController { @ApiOperation("区域申请搜索 树形结构") @ApiImplicitParams({ @ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false), + @ApiImplicitParam(name = "applyFlag", value = "可申请标识", required = false) }) - public ResponseResult> getOpenAreaList(@RequestParam(value = "keyword",required = false)String keyword){ - List openAreaTreeVOS = openAreaService.queryAllOpenAreaByKeyword(keyword,Boolean.FALSE); + public ResponseResult> getOpenAreaList(@RequestParam(value = "keyword",required = false)String keyword, + @RequestParam(value = "applyFlag",required = false)Boolean applyFlag){ + List openAreaTreeVOS = openAreaService.queryAllOpenAreaByKeyword(keyword,applyFlag,Boolean.FALSE); return ResponseResult.success(openAreaTreeVOS); }