From a2d58d3dcc8f8e7c28c2105d382bd30e28685837 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Mon, 12 Jun 2023 16:42:39 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/constants/CommonConstants.java | 2 + .../com/cool/store/enums/FSEventTypeEnum.java | 59 ++++++++++++ .../cool/store/dao/EnterpriseUserRoleDAO.java | 11 ++- .../java/com/cool/store/dao/RegionDAO.java | 12 +++ .../java/com/cool/store/dao/SysRoleDAO.java | 7 ++ .../cool/store/dao/UserRegionMappingDAO.java | 14 +++ .../mapper/EnterpriseUserRoleMapper.java | 4 +- .../com/cool/store/mapper/RegionMapper.java | 13 +++ .../com/cool/store/mapper/SysRoleMapper.java | 7 ++ .../store/mapper/UserRegionMappingMapper.java | 14 +++ .../mapper/EnterpriseUserRoleMapper.xml | 20 +++- .../main/resources/mapper/RegionMapper.xml | 19 ++++ .../main/resources/mapper/SysRoleMapper.xml | 11 ++- .../mapper/UserRegionMappingMapper.xml | 13 ++- .../cool/store/dto/buser/UserEventDTO.java | 24 +++++ .../dto/enterprise/EnterpriseUserDTO.java | 37 +++++++- .../dto/enterprise/SysDepartmentDTO.java | 2 +- .../store/entity/EnterpriseUserRoleDO.java | 7 +- .../store/entity/UserRegionMappingDO.java | 19 ++++ .../store/vo/region/RegionBaseInfoVO.java | 64 +++++++++++++ .../store/mq/consumer/ConsumerClient.java | 8 +- .../listener/UserEventDealListener.java | 58 +++++++++++ .../store/service/EnterpriseSyncService.java | 8 ++ .../com/cool/store/service/RegionService.java | 10 ++ .../impl/EnterpriseSyncServiceImpl.java | 95 ++++++++++++++++--- .../store/service/impl/RegionServiceImpl.java | 13 ++- .../store/controller/RegionController.java | 35 +++++++ 27 files changed, 552 insertions(+), 34 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/FSEventTypeEnum.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/buser/UserEventDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/listener/UserEventDealListener.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.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 8e64736e5..6d21d40ea 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 @@ -22,6 +22,8 @@ public class CommonConstants { public static final int THREE_DAY_SECONDS = 60*60*24*3; + public static final int NORMAL_LOCK_TIMES = 60 * 1000; + /** * 企业开通锁存活时间 */ diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/FSEventTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/FSEventTypeEnum.java new file mode 100644 index 000000000..4480d4065 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/FSEventTypeEnum.java @@ -0,0 +1,59 @@ +package com.cool.store.enums; + +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author Admin + * @ClassName FsEventTypeEnum + * @Description fs的事件类型 + */ +public enum FSEventTypeEnum { + + // + USER_CREATED("contact.user.created_v3","员工入职"), + USER_DELETED("contact.user.deleted_v3", "员工离职"), + USER_UPDATED("contact.user.updated_v3", "员工信息被修改"), + + DEPARTMENT_CREATED("contact.department.created_v3", "部门被创建"), + DEPARTMENT_UPDATED("contact.department.updated_v3", "部门信息被修改"), + DEPARTMENT_DELETED("contact.department.deleted_v3", "部门被删除"), + + APP_OPEN("app_open", "首次启用应用"), + APP_STATUS_CHANGE("app_status_change", "应用停启用"), + APP_TICKET("app_ticket", "app_ticket 事件"), + APP_UNINSTALLED("app_uninstalled", "应用卸载"), + + CONTACT_SCOPE_UPDATE("contact.scope.updated_v3", "通讯录范围权限被更新"), + ORDER_PAID("order_paid", "应用商店应用购买"), + ; + + + private final String value; + private final String remark; + + private static final Map map = Arrays.stream(values()).collect(Collectors.toMap(FSEventTypeEnum::getValue, Function.identity())); + + FSEventTypeEnum(String value, String remark) { + this.value = value; + this.remark = remark; + } + + public String getValue() { + return value; + } + + public static FSEventTypeEnum parseValue(String value) { + return map.get(value); + } + + public static boolean isUserEvent(String eventType){ + return FSEventTypeEnum.USER_CREATED.getValue().equals(eventType) || FSEventTypeEnum.USER_UPDATED.getValue().equals(eventType) || FSEventTypeEnum.USER_DELETED.getValue().equals(eventType); + } + + public static boolean isDepartmentEvent(String eventType){ + return FSEventTypeEnum.DEPARTMENT_CREATED.getValue().equals(eventType) || FSEventTypeEnum.DEPARTMENT_UPDATED.getValue().equals(eventType) || FSEventTypeEnum.DEPARTMENT_DELETED.getValue().equals(eventType); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java index 82c64fb20..ef66e197f 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java @@ -29,11 +29,18 @@ public class EnterpriseUserRoleDAO { return enterpriseUserRoleMapper.batchInsertOrUpdate(recordList); } - public Integer deleteUserRole(String roleId, DataSourceEnum dataSourceEnum, List userIds){ + public Integer deleteRoleInUser(String roleId, DataSourceEnum dataSourceEnum, List excludeUserIds){ if(StringUtils.isBlank(roleId) || Objects.isNull(dataSourceEnum)){ return null; } - return enterpriseUserRoleMapper.deleteUserRole(roleId, dataSourceEnum.getCode(), userIds); + return enterpriseUserRoleMapper.deleteRoleInUser(roleId, dataSourceEnum.getCode(), excludeUserIds); + } + + public Integer deleteUserInRole(String userId, DataSourceEnum dataSourceEnum, String excludeRoleId){ + if(StringUtils.isAnyBlank(userId, excludeRoleId) || Objects.isNull(dataSourceEnum)){ + return null; + } + return enterpriseUserRoleMapper.deleteUserInRole(userId, dataSourceEnum.getCode(), excludeRoleId); } } \ No newline at end of file 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 79197a5f8..d14b16cd1 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 @@ -3,6 +3,7 @@ package com.cool.store.dao; import com.cool.store.constants.CommonConstants; import com.cool.store.entity.RegionDO; import com.cool.store.mapper.RegionMapper; +import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Repository; @@ -37,4 +38,15 @@ public class RegionDAO { return regionMapper.deleteNotExistRegion(regionIds); } + public List getRegionByRegionIds(List regionIds){ + if(CollectionUtils.isEmpty(regionIds)){ + return Lists.newArrayList(); + } + return regionMapper.getRegionByRegionIds(regionIds); + } + + public List getRegionBaseInfoList(){ + return regionMapper.getRegionBaseInfoList(); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java index 024fa9975..8712fb554 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDAO.java @@ -43,4 +43,11 @@ public class SysRoleDAO { } return sysRoleMapper.getHighestPriorityRoleByUserId(userId); } + + public SysRoleDO getRoleByName(String roleName, DataSourceEnum dataSource){ + if(StringUtils.isBlank(roleName) || Objects.isNull(dataSource)){ + return null; + } + return sysRoleMapper.getRoleByName(roleName, dataSource.getCode()); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java index e563c3b73..e2ae97cba 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java @@ -37,4 +37,18 @@ public class UserRegionMappingDAO { return userRegionMappingMapper.deleteUserRegion(regionId, dataSourceEnum.getCode(), excludeUserIds); } + public Integer deleteRegionUserByExcludeRegionIds(List excludeRegionIds){ + if(CollectionUtils.isEmpty(excludeRegionIds)){ + return null; + } + return userRegionMappingMapper.deleteRegionUserByExcludeRegionIds(excludeRegionIds); + } + + public Integer deleteRegionUserByExcludeUserIds(List excludeUserIds){ + if(CollectionUtils.isEmpty(excludeUserIds)){ + return null; + } + return userRegionMappingMapper.deleteRegionUserByExcludeUserIds(excludeUserIds); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserRoleMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserRoleMapper.java index e253b42fe..5895576c5 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserRoleMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserRoleMapper.java @@ -32,5 +32,7 @@ public interface EnterpriseUserRoleMapper { * @param userIds * @return */ - int deleteUserRole(@Param("roleId") String roleId, @Param("type") Integer type, @Param("userIds") List userIds); + int deleteRoleInUser(@Param("roleId") String roleId, @Param("type") Integer type, @Param("excludeUserIds") List excludeUserIds); + + int deleteUserInRole(@Param("userId") String userId, @Param("type") Integer type, @Param("excludeRoleId") String excludeRoleId); } \ No newline at end of file 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 05ed9c199..cb3abf312 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 @@ -31,4 +31,17 @@ public interface RegionMapper { * @return */ int deleteNotExistRegion(@Param("regionIds")List regionIds); + + /** + * 根据regionIds获取region + * @param regionIds + * @return + */ + List getRegionByRegionIds(@Param("regionIds")List regionIds); + + /** + * 获取区域基本信息 + * @return + */ + List getRegionBaseInfoList(); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java index 36c8cea0a..c9b66c2da 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java @@ -33,4 +33,11 @@ public interface SysRoleMapper { * @return */ SysRoleDO getHighestPriorityRoleByUserId(@Param("userId") String userId); + + /** + * 获取角色 + * @param roleName + * @return + */ + SysRoleDO getRoleByName(@Param("roleName") String roleName, @Param("roleType")Integer roleType); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java index e202d6ebb..fc0b95166 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java @@ -33,4 +33,18 @@ public interface UserRegionMappingMapper { * @return */ int deleteUserRegion(@Param("regionId") String regionId, @Param("type")Integer type, @Param("excludeUserIds") List excludeUserIds); + + /** + * 删除没有的部门映射关系 + * @param excludeRegionIds + * @return + */ + Integer deleteRegionUserByExcludeRegionIds(@Param("excludeRegionIds") List excludeRegionIds); + + /** + * 删除用户不在的区域 + * @param excludeUserIds + * @return + */ + Integer deleteRegionUserByExcludeUserIds(@Param("excludeUserIds") List excludeUserIds); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml index 96746e319..e65b44286 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml @@ -5,12 +5,13 @@ + - id, role_id, user_id, deleted, create_time, update_time + id, role_id, user_id, type, deleted, create_time, update_time @@ -22,6 +23,9 @@ user_id, + + type, + deleted, @@ -39,6 +43,9 @@ #{record.userId}, + + #{record.type}, + #{record.deleted}, @@ -61,6 +68,9 @@ user_id = #{userId}, + + type = #{type}, + deleted = #{deleted}, @@ -74,7 +84,11 @@ where id = #{id} - - update enterprise_user_role set deleted = 1 where role_id = #{roleId} and user_id not in #{userId} + + update enterprise_user_role set deleted = 1 where role_id = #{roleId} and type = #{type} and user_id not in #{userId} + + + + update enterprise_user_role set deleted = 1 where role_id != #{roleId} and user_id = #{userId} and type = #{type} \ 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 afa51f5cb..f9eb941e8 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml @@ -158,4 +158,23 @@ update region set deleted = 1 , update_time = UNIX_TIMESTAMP() where region_id not in #{regionId} + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml index a3abf7759..e0b189d5a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml @@ -126,7 +126,16 @@ from sys_role r inner join enterprise_user_role e on r.role_id = e.role_id where - e.user_id = #{userId} + e.user_id = #{userId} and r.deleted = 0 limit 1 + + \ 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 d163b4600..14e5b9fd1 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml @@ -104,10 +104,19 @@ where id = #{id} - + update user_region_mapping set deleted = 1 where region_id = #{regionId} and type = #{type} and user_id not in #{userId} - + + + + update user_region_mapping set deleted = 1 where region_id not in #{regionId} + + + + update user_region_mapping set deleted = 1 where user_id not in #{userId} + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/buser/UserEventDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/buser/UserEventDTO.java new file mode 100644 index 000000000..ad912028d --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/buser/UserEventDTO.java @@ -0,0 +1,24 @@ +package com.cool.store.dto.buser; + +import lombok.Data; + +/** + * @author zhangchenbiao + * @FileName: UserEventDTO + * @Description: + * @date 2023-06-09 13:53 + */ +@Data +public class UserEventDTO { + + private String corpId; + + private String eventType; + + private String userId; + + private String openId; + + private String unionId; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/EnterpriseUserDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/EnterpriseUserDTO.java index 87902ad1e..98e7b8458 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/EnterpriseUserDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/EnterpriseUserDTO.java @@ -93,7 +93,7 @@ public class EnterpriseUserDTO implements Serializable { private String openUserid; - @ApiModelProperty("") + @ApiModelProperty("用户所属部门") private List departmentLists; @@ -141,4 +141,39 @@ public class EnterpriseUserDTO implements Serializable { return resultList; } + + public static EnterpriseUserDO transUserDtoToDo(EnterpriseUserDTO user, Map regionPathMap, Multimap leaderDeptMap) { + EnterpriseUserDO enterpriseUserDO = new EnterpriseUserDO(); + enterpriseUserDO.setId(UUIDUtils.get32UUID()); + enterpriseUserDO.setUserId(user.getUserId()); + enterpriseUserDO.setName(user.getName()); + enterpriseUserDO.setRemark(user.getRemark()); + enterpriseUserDO.setMobile(user.getMobile()); + enterpriseUserDO.setEmail(user.getEmail()); + enterpriseUserDO.setOrgEmail(user.getOrgEmail()); + enterpriseUserDO.setMainAdmin(user.getMainAdmin()); + enterpriseUserDO.setIsAdmin(user.getIsAdmin()); + enterpriseUserDO.setUnionid(user.getUnionid()); + enterpriseUserDO.setAvatar(user.getAvatar()); + enterpriseUserDO.setJobnumber(user.getJobnumber()); + enterpriseUserDO.setUserStatus(UserStatusEnum.NORMAL.getCode()); + enterpriseUserDO.setIsLeader(Boolean.FALSE); + List departmentLists = user.getDepartmentLists(); + List regionPaths = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(departmentLists)){ + for (String departmentId : departmentLists) { + regionPaths.add(regionPathMap.get(departmentId)); + } + } + Collection deptIds = leaderDeptMap.get(user.getUserId()); + if(CollectionUtils.isNotEmpty(deptIds)){ + enterpriseUserDO.setIsLeader(Boolean.TRUE); + enterpriseUserDO.setLeaderDeptIds(JSONObject.toJSONString(deptIds)); + } + enterpriseUserDO.setUserRegionIds(JSONObject.toJSONString(regionPaths)); + enterpriseUserDO.setDeleted(Boolean.FALSE); + enterpriseUserDO.setCreateTime(new Date()); + return enterpriseUserDO; + } + } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/SysDepartmentDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/SysDepartmentDTO.java index d2c5a8bf0..45f2b8e8c 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/SysDepartmentDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/enterprise/SysDepartmentDTO.java @@ -217,7 +217,7 @@ public class SysDepartmentDTO { Collections.reverse(pathIds); String regionPath = CommonConstants.PATH_SPILT + String.join(CommonConstants.PATH_SPILT, pathIds) + CommonConstants.PATH_SPILT; region.setRegionPath(regionPath); - region.setDeleted(Boolean.TRUE); + region.setDeleted(Boolean.FALSE); if(CollectionUtils.isNotEmpty(dept.getDeptManagerUseridList())){ for (String leader : dept.getDeptManagerUseridList()) { leaderDeptMap.put(leader, dept.getId()); diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserRoleDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserRoleDO.java index 077f110f7..efcf08159 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserRoleDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserRoleDO.java @@ -1,5 +1,6 @@ package com.cool.store.entity; +import com.cool.store.enums.DataSourceEnum; import com.google.common.collect.Lists; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -32,6 +33,9 @@ public class EnterpriseUserRoleDO implements Serializable { @ApiModelProperty("用户id") private String userId; + @ApiModelProperty("type") + private Integer type; + @ApiModelProperty("删除标识") private Boolean deleted; @@ -41,7 +45,7 @@ public class EnterpriseUserRoleDO implements Serializable { @ApiModelProperty("更新时间") private Date updateTime; - public static List convertDO(String roleId, List userIds){ + public static List convertSyncDO(String roleId, List userIds){ if(CollectionUtils.isEmpty(userIds)){ return Lists.newArrayList(); } @@ -50,6 +54,7 @@ public class EnterpriseUserRoleDO implements Serializable { EnterpriseUserRoleDO userRole = new EnterpriseUserRoleDO(); userRole.setRoleId(roleId); userRole.setUserId(userId); + userRole.setType(DataSourceEnum.SYNC.getCode()); userRole.setDeleted(Boolean.FALSE); userRole.setCreateTime(new Date()); userRole.setUpdateTime(new Date()); diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java index c15fbeebe..3478dac98 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java @@ -14,6 +14,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; /** * @@ -69,4 +70,22 @@ public class UserRegionMappingDO implements Serializable { } return resultList; } + + public static List convertSyncDO(List regionIds, String userId){ + if(CollectionUtils.isEmpty(regionIds) || StringUtils.isBlank(userId)){ + return Lists.newArrayList(); + } + List resultList = new ArrayList<>(); + for (String regionId : regionIds) { + UserRegionMappingDO userRegion = new UserRegionMappingDO(); + userRegion.setRegionId(regionId); + userRegion.setUserId(userId); + userRegion.setType(DataSourceEnum.SYNC.getCode()); + userRegion.setCreateTime(System.currentTimeMillis()); + userRegion.setUpdateTime(System.currentTimeMillis()); + userRegion.setDeleted(Boolean.FALSE); + resultList.add(userRegion); + } + return resultList; + } } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java new file mode 100644 index 000000000..fa0f5da9c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java @@ -0,0 +1,64 @@ +package com.cool.store.vo.region; + +import com.cool.store.constants.CommonConstants; +import com.cool.store.entity.RegionDO; +import com.google.common.collect.Lists; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author zhangchenbiao + * @FileName: RegionBaseInfoVO + * @Description: + * @date 2023-06-12 16:08 + */ +@Data +public class RegionBaseInfoVO { + + @ApiModelProperty("区域id") + private String regionId; + + @ApiModelProperty("区域名称") + private String name; + + @ApiModelProperty("子区域") + private List subRegionList; + + public RegionBaseInfoVO(String regionId, String name) { + this.regionId = regionId; + this.name = name; + } + + public static RegionBaseInfoVO convertTree(List regionList){ + Map> parentMap = regionList.stream().collect(Collectors.groupingBy(k -> k.getParentId())); + RegionDO rootRegion = regionList.stream().filter(o -> CommonConstants.ZERO_STR.equals(o.getParentId())).findFirst().get(); + RegionBaseInfoVO result = new RegionBaseInfoVO(rootRegion.getRegionId(), rootRegion.getName()); + result.setSubRegionList(getSubRegion(rootRegion.getRegionId(), parentMap)); + return result; + } + + public static List getSubRegion(String regionId, Map> parentMap){ + List resultList = new ArrayList<>(); + if(Objects.isNull(parentMap) || StringUtils.isBlank(regionId)){ + return resultList; + } + List subRegion = parentMap.get(regionId); + if(CollectionUtils.isNotEmpty(subRegion)){ + for (RegionDO region : subRegion) { + RegionBaseInfoVO regionBaseInfo = new RegionBaseInfoVO(region.getRegionId(), region.getName()); + regionBaseInfo.setSubRegionList(getSubRegion(region.getRegionId(), parentMap)); + resultList.add(regionBaseInfo); + } + } + return resultList; + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java index d3f387949..bdc6b29b7 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java @@ -8,7 +8,7 @@ import com.aliyun.openservices.ons.api.bean.Subscription; import com.cool.store.constants.CommonConstants; import com.cool.store.enums.RocketMqGroupEnum; import com.cool.store.mq.RocketMqConfig; -import com.cool.store.mq.consumer.listener.TestListener; +import com.cool.store.mq.consumer.listener.UserEventDealListener; import com.google.common.collect.Maps; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -29,7 +29,7 @@ public class ConsumerClient { @Resource private RocketMqConfig rocketMqConfig; @Resource - private TestListener testListener; + private UserEventDealListener userEventDealListener; /** * 获取通用配置 @@ -71,12 +71,12 @@ public class ConsumerClient { */ @Bean(initMethod = "start", destroyMethod = "shutdown") public ConsumerBean test() { - RocketMqGroupEnum groupEnum = RocketMqGroupEnum.TEST; + RocketMqGroupEnum groupEnum = RocketMqGroupEnum.DING_MSG_DEAL; ConsumerBean consumerBean = new ConsumerBean(); //配置文件 Properties properties = getCommonProperties(groupEnum); consumerBean.setProperties(properties); - Map commonSubscriptionTable = getCommonSubscriptionTable(groupEnum, testListener); + Map commonSubscriptionTable = getCommonSubscriptionTable(groupEnum, userEventDealListener); //订阅多个topic如上面设置 consumerBean.setSubscriptionTable(commonSubscriptionTable); return consumerBean; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/listener/UserEventDealListener.java b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/listener/UserEventDealListener.java new file mode 100644 index 000000000..2d6153167 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/listener/UserEventDealListener.java @@ -0,0 +1,58 @@ +package com.cool.store.mq.consumer.listener; + +import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.ons.api.Action; +import com.aliyun.openservices.ons.api.ConsumeContext; +import com.aliyun.openservices.ons.api.Message; +import com.aliyun.openservices.ons.api.MessageListener; +import com.cool.store.constants.CommonConstants; +import com.cool.store.dto.buser.UserEventDTO; +import com.cool.store.service.EnterpriseSyncService; +import com.cool.store.utils.RedisUtilPool; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author zhangchenbiao + * @FileName: EnterpriseInitService + * @Description: 消息监听 + * @date 2023-06-09 16:28 + */ +@Slf4j +@Service +public class UserEventDealListener implements MessageListener { + + @Autowired + private RedisUtilPool redisUtilPool; + @Autowired + private EnterpriseSyncService enterpriseSyncService; + + @Override + public Action consume(Message message, ConsumeContext context) { + String text = new String(message.getBody()); + if(StringUtils.isBlank(text)){ + log.info("消息体为空,tag:{},messageId:{}",message.getTag(),message.getMsgID()); + return Action.CommitMessage; + } + log.info("重试消费次数 messageId:{},try times:{}", message.getMsgID(), message.getReconsumeTimes()); + + String lockKey = "DingMsgDealListener:" + message.getMsgID(); + boolean lock = redisUtilPool.setNxExpire(lockKey, message.getMsgID(), CommonConstants.NORMAL_LOCK_TIMES); + if(lock){ + try { + UserEventDTO reqBody = JSONObject.parseObject(text, UserEventDTO.class); + enterpriseSyncService.userUpdateEvent(reqBody); + }catch (Exception e){ + log.error("DingMsgDealListener consume dealAddressBookChange error",e); + return Action.ReconsumeLater; + } finally { + redisUtilPool.delKey(lockKey); + } + log.info("消费成功,tag:{},messageId:{}",message.getTag(),message.getMsgID()); + return Action.CommitMessage; + } + return Action.ReconsumeLater; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java index df3532282..6b3944f6c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java @@ -1,5 +1,7 @@ package com.cool.store.service; +import com.cool.store.dto.buser.UserEventDTO; + /** * @author zhangchenbiao * @FileName: EnterpriseInitService @@ -9,4 +11,10 @@ package com.cool.store.service; public interface EnterpriseSyncService { void syncAll(); + + /** + * 飞书人员事件 + * @param param + */ + void userUpdateEvent(UserEventDTO param); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java index 27fb84730..cd01d23d9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java @@ -1,5 +1,9 @@ package com.cool.store.service; +import com.cool.store.vo.region.RegionBaseInfoVO; + +import java.util.List; + /** * @author zhangchenbiao * @FileName: RegionService @@ -8,4 +12,10 @@ package com.cool.store.service; */ public interface RegionService { + /** + * 获取组织架构基本信息列表 + * @return + */ + RegionBaseInfoVO getRegionBaseInfoList(); + } 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 6d1f4fac3..da2213637 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 @@ -2,6 +2,7 @@ package com.cool.store.service.impl; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; +import com.cool.store.dto.buser.UserEventDTO; import com.cool.store.dto.enterprise.*; import com.cool.store.entity.*; import com.cool.store.enums.DataSourceEnum; @@ -9,6 +10,7 @@ import com.cool.store.http.ISVHttpRequest; import com.cool.store.service.EnterpriseSyncService; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; +import javafx.util.Pair; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; @@ -19,6 +21,8 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; +import static com.cool.store.enums.FSEventTypeEnum.*; + /** * @author zhangchenbiao * @FileName: EnterpriseInitService @@ -46,19 +50,9 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { @Override public void syncAll() { //同步部门 - List departments = isvHttpRequest.getSubDepartments(CommonConstants.ROOT_DEPT_ID_STR, true); - //获取企业信息 - AuthInfoDTO authInfo = isvHttpRequest.getAuthInfo(); - Multimap leaderDeptMap = ArrayListMultimap.create(); - //组织架构中增加根节点,处理部门上下级关系 - List regionList = SysDepartmentDTO.convertRegionDO(departments, leaderDeptMap); - List regionIds = regionList.stream().map(RegionDO::getRegionId).distinct().collect(Collectors.toList()); - //添加根节点 - regionList.add(getRootRegion(authInfo)); - //批量插入 - regionDAO.batchInsertOrUpdate(regionList); - //删除不存在的区域 - regionDAO.deleteNotExistRegion(regionIds); + Pair, Multimap> listMultimapPair = syncRegion(); + List regionList = listMultimapPair.getKey(); + Multimap leaderDeptMap = listMultimapPair.getValue(); Multimap roleUserMap = ArrayListMultimap.create(); //同步用户及部门 syncUserAndUserRegion(regionList, roleUserMap, leaderDeptMap); @@ -72,9 +66,9 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { roleIds.add(sysRole.getRoleId()); Collection userIds = roleUserMap.get(roleName); insertOrUpdateList.add(sysRole); - userRoleInsertOrUpdateList.addAll(EnterpriseUserRoleDO.convertDO(sysRole.getRoleId(), new ArrayList<>(userIds))); + userRoleInsertOrUpdateList.addAll(EnterpriseUserRoleDO.convertSyncDO(sysRole.getRoleId(), new ArrayList<>(userIds))); //删除角色下不存在的用户 - enterpriseUserRoleDAO.deleteUserRole(sysRole.getRoleId(), DataSourceEnum.SYNC, new ArrayList<>(userIds)); + enterpriseUserRoleDAO.deleteRoleInUser(sysRole.getRoleId(), DataSourceEnum.SYNC, new ArrayList<>(userIds)); } sysRoleDAO.batchInsertSelective(insertOrUpdateList); enterpriseUserRoleDAO.batchInsertOrUpdate(userRoleInsertOrUpdateList); @@ -86,6 +80,32 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { } + private Pair, Multimap> syncRegion(){ + //同步部门 + List departments = isvHttpRequest.getSubDepartments(CommonConstants.ROOT_DEPT_ID_STR, true); + //获取企业信息 + AuthInfoDTO authInfo = isvHttpRequest.getAuthInfo(); + Multimap leaderDeptMap = ArrayListMultimap.create(); + //组织架构中增加根节点,处理部门上下级关系 + List regionList = SysDepartmentDTO.convertRegionDO(departments, leaderDeptMap); + //添加根节点 + regionList.add(getRootRegion(authInfo)); + List regionIds = regionList.stream().map(RegionDO::getRegionId).distinct().collect(Collectors.toList()); + //批量插入 + regionDAO.batchInsertOrUpdate(regionList); + //删除不存在的区域 + regionDAO.deleteNotExistRegion(regionIds); + //删除区域管理的人员 + userRegionMappingDAO.deleteRegionUserByExcludeRegionIds(regionIds); + return new Pair<>(regionList, leaderDeptMap); + } + + /** + * 处理用户及部门之间的关系 + * @param regionList + * @param roleUserMap + * @param leaderDeptMap + */ private void syncUserAndUserRegion(List regionList, Multimap roleUserMap, Multimap leaderDeptMap){ Map regionPathMap = regionList.stream().collect(Collectors.toMap(RegionDO::getRegionId, RegionDO::getRegionPath)); List userList = new ArrayList<>(); @@ -117,6 +137,7 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { userRegionMappingDAO.batchInsertOrUpdateUserRegion(userRegionList); //删除不存在的用户 enterpriseUserDAO.deleteUser(userIds); + userRegionMappingDAO.deleteRegionUserByExcludeUserIds(userIds); } /** @@ -132,6 +153,50 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { rootRegion.setThirdDeptId(CommonConstants.ROOT_DEPT_ID_STR); rootRegion.setOrderNum(CommonConstants.ZERO); rootRegion.setRegionPath(CommonConstants.PATH_SPILT + rootRegion.getRegionId() + CommonConstants.PATH_SPILT); + rootRegion.setDeleted(Boolean.FALSE); return rootRegion; } + + @Override + public void userUpdateEvent(UserEventDTO param) { + switch (parseValue(param.getEventType())){ + case USER_CREATED: + case USER_UPDATED: + EnterpriseUserDTO userDetail = isvHttpRequest.getUserDetailByUserId(param.getOpenId()); + List departmentLists = userDetail.getDepartmentLists(); + Multimap leaderDeptMap = ArrayListMultimap.create(); + Map regionPathMap = new HashMap<>(); + if(CollectionUtils.isNotEmpty(departmentLists)){ + List regionList = regionDAO.getRegionByRegionIds(departmentLists); + List regionIds = ListUtils.emptyIfNull(regionList).stream().map(RegionDO::getRegionId).collect(Collectors.toList()); + //判断两个集合是否都是包含关系 + if(!(regionIds.containsAll(departmentLists) && departmentLists.containsAll(regionList))){ + Pair, Multimap> regionPair = syncRegion(); + regionList = regionPair.getKey(); + leaderDeptMap = regionPair.getValue(); + } + regionPathMap = regionList.stream().collect(Collectors.toMap(k->k.getRegionId(), v->v.getRegionPath())); + userRegionMappingDAO.batchInsertOrUpdateUserRegion(UserRegionMappingDO.convertSyncDO(departmentLists, userDetail.getUserId())); + } + String jobTitle = userDetail.getJobTitle(); + if(StringUtils.isNotBlank(jobTitle)){ + SysRoleDO role = sysRoleDAO.getRoleByName(jobTitle, DataSourceEnum.SYNC); + if(Objects.isNull(role)){ + //新增角色 + role = SysRoleDO.convertSyncDO(jobTitle); + sysRoleDAO.batchInsertSelective(new ArrayList<>(Arrays.asList(role))); + } + List enterpriseUserRole = EnterpriseUserRoleDO.convertSyncDO(role.getRoleId(), new ArrayList<>(Arrays.asList(userDetail.getUserId()))); + enterpriseUserRoleDAO.batchInsertOrUpdate(enterpriseUserRole); + enterpriseUserRoleDAO.deleteUserInRole(userDetail.getUserId(), DataSourceEnum.SYNC, role.getRoleId()); + } + EnterpriseUserDO enterpriseUser = EnterpriseUserDTO.transUserDtoToDo(userDetail, regionPathMap, leaderDeptMap); + enterpriseUserDAO.batchInsertOrUpdate(new ArrayList<>(Arrays.asList(enterpriseUser))); + break; + case USER_DELETED: + break; + default: + return; + } + } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java index c76046adb..6b592a8cd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java @@ -1,12 +1,16 @@ package com.cool.store.service.impl; +import com.cool.store.dao.RegionDAO; +import com.cool.store.entity.RegionDO; import com.cool.store.mq.producer.SimpleMessageService; import com.cool.store.service.RegionService; import com.cool.store.utils.RedisConstantUtil; import com.cool.store.utils.RedisUtil; +import com.cool.store.vo.region.RegionBaseInfoVO; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; /** * @author zhangchenbiao @@ -20,9 +24,12 @@ public class RegionServiceImpl implements RegionService { @Resource private RedisUtil redisUtil; @Resource - private RedisConstantUtil redisConstantUtil; - @Resource - private SimpleMessageService simpleMessageService; + private RegionDAO regionDAO; + @Override + public RegionBaseInfoVO getRegionBaseInfoList() { + List regionBaseInfoList = regionDAO.getRegionBaseInfoList(); + return RegionBaseInfoVO.convertTree(regionBaseInfoList); + } } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.java new file mode 100644 index 000000000..9f09ac40e --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.java @@ -0,0 +1,35 @@ +package com.cool.store.controller; + +import com.cool.store.response.ResponseResult; +import com.cool.store.service.RegionService; +import com.cool.store.vo.region.RegionBaseInfoVO; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author zhangchenbiao + * @FileName: RegionController + * @Description: + * @date 2023-06-12 15:53 + */ +@RestController +@RequestMapping({"/v1/region" }) +@Slf4j +@Api(tags = "组织架构") +public class RegionController { + + @Resource + private RegionService regionService; + + @GetMapping("/getRegionList") + public ResponseResult getRegionBaseInfoList(){ + return ResponseResult.success(regionService.getRegionBaseInfoList()); + } + + +} From 5a6cd73113addaa9b18997daee706464371d84ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Tue, 13 Jun 2023 09:47:07 +0800 Subject: [PATCH 2/7] =?UTF-8?q?B=E7=AB=AF=20=E9=83=A8=E5=88=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/constants/CommonConstants.java | 3 + .../com/cool/store/enums/ErrorCodeEnum.java | 8 + .../cool/store/enums/WorkflowStageEnum.java | 33 ++++ .../cool/store/enums/WorkflowStatusEnum.java | 49 ++++++ .../com/cool/store/utils/CoolDateUtils.java | 35 ++++ .../store/dao/HyPartnerIntentInfoDAO.java | 59 +++++++ .../store/dao/HyPartnerInterviewPlanDAO.java | 85 +++++++++ .../cool/store/dao/HyPartnerLineInfoDAO.java | 111 ++++++++++++ .../cool/store/dao/HyPartnerUserInfoDAO.java | 51 ++++++ .../mapper/HyPartnerIntentInfoMapper.java | 25 +++ .../mapper/HyPartnerInterviewPlanMapper.java | 48 ++++++ .../store/mapper/HyPartnerLineInfoMapper.java | 82 +++++++++ .../store/mapper/HyPartnerUserInfoMapper.java | 16 ++ .../mapper/HyPartnerIntentInfoMapper.xml | 45 +++++ .../mapper/HyPartnerInterviewPlanMapper.xml | 65 +++++++ .../mapper/HyPartnerLineInfoMapper.xml | 143 +++++++++++++++ .../mapper/HyPartnerUserInfoMapper.xml | 19 ++ .../partner/PartnerIntentApplyInfoDTO.java | 49 ++++++ .../dto/partner/PartnerInterviewInfoDTO.java | 64 +++++++ .../PartnerLineInfoAndBaseInfoDTO.java | 44 +++++ .../SpecialDateRangeInterviewCountDTO.java | 17 ++ .../cool/store/dto/partner/StageCountDTO.java | 38 ++++ .../TransferInvestmentManagerRequest.java | 21 +++ .../cool/store/vo/InterviewDetailInfoVO.java | 27 +++ .../com/cool/store/vo/InterviewPlanVO.java | 20 +++ .../store/vo/InterviewScheduleInfoVO.java | 13 +- .../store/vo/PartnerIntentApplyInfoVO.java | 10 +- .../cool/store/vo/PartnerInterviewInfoVO.java | 9 +- ...java => PartnerLineInfoAndBaseInfoVO.java} | 13 +- .../com/cool/store/Service/DeskService.java | 49 ++++++ .../Service/HyPartnerIntentInfoService.java | 31 ++++ .../HyPartnerInterviewPlanService.java | 45 +++++ .../Service/HyPartnerLineInfoService.java | 67 +++++++ .../store/Service/impl/DeskServiceImpl.java | 92 ++++++++++ .../impl/HyPartnerIntentInfoServiceImpl.java | 104 +++++++++++ .../HyPartnerInterviewPlanServiceImpl.java | 141 +++++++++++++++ .../impl/HyPartnerLineInfoServiceImpl.java | 163 ++++++++++++++++++ .../cool/store/controller/DeskController.java | 91 +++++++--- 38 files changed, 1938 insertions(+), 47 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStatusEnum.java create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerIntentInfoDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerInterviewPlanDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerUserInfoDAO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerIntentApplyInfoDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerInterviewInfoDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/SpecialDateRangeInterviewCountDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/StageCountDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/TransferInvestmentManagerRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewDetailInfoVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewPlanVO.java rename coolstore-partner-model/src/main/java/com/cool/store/vo/{PartnerLineDetailVO.java => PartnerLineInfoAndBaseInfoVO.java} (90%) create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/DeskService.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerIntentInfoService.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerInterviewPlanService.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/DeskServiceImpl.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerIntentInfoServiceImpl.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerInterviewPlanServiceImpl.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.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 6d21d40ea..31a74495e 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 @@ -111,4 +111,7 @@ public class CommonConstants { public static final String NINE_STR = "9"; public static final String TEN_STR = "10"; + public static final String FOLLOW = "follow"; + public static final String PENDING = "pending"; + } 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 923b814b5..471ca6cd7 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 @@ -44,6 +44,14 @@ public enum ErrorCodeEnum { USER_GROUP_NAME_EXIST(1021076, "用户分组名称已存在", null), USER_GROUP_NOT_EXIST(1021077, "用户分组不存在", null), GET_INFO_ERROR(1021078, "获取信息异常", null), + + + + + PARAMS_REQUIRED(400002, "参数缺失!", null), + + + LINE_ID_IS_NOT_EXIST(500001, "线索ID不存在!", null), ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java new file mode 100644 index 000000000..042ffded3 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java @@ -0,0 +1,33 @@ +package com.cool.store.enums; + +/** + * @Author suzhuhong + * @Date 2023/6/9 16:17 + * @Version 1.0 + */ +public enum WorkflowStageEnum { + + INTENT("1","意向申请阶段"), + RESERVATION("2","预约面试阶段"), + INTERVIEW("3","合格资格面试"), + ; + + private String code; + + private String message; + + WorkflowStageEnum(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/WorkflowStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStatusEnum.java new file mode 100644 index 000000000..e83971fdf --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStatusEnum.java @@ -0,0 +1,49 @@ +package com.cool.store.enums; + +/** + * @Author suzhuhong + * @Date 2023/6/9 16:35 + * @Version 1.0 + */ +public enum WorkflowStatusEnum { + //意向申请阶段 + INTENT_0("0","待提交"), + INTENT_1("1","待审核"), + INTENT_2("2","已通过"), + INTENT_3("3","未通过"), + + //预约面试阶段 + RESERVATION_0("0","待预约"), + RESERVATION_6("6","到期未预约"), + + + //合格资格面试 + INTERVIEW_1("1","待面试"), + INTERVIEW_2("2","已开始"), + INTERVIEW_3("3","待审核"), + INTERVIEW_4("4","审核中"), + INTERVIEW_5("5","审核通过"), + INTERVIEW_6("6","拒绝"), + + + ; + + private String code; + + private String message; + + WorkflowStatusEnum(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/utils/CoolDateUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java new file mode 100644 index 000000000..a73252778 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java @@ -0,0 +1,35 @@ +package com.cool.store.utils; + +import java.util.Calendar; +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2023/6/8 17:17 + * @Version 1.0 + */ +public class CoolDateUtils { + + public static final String DATE_FORMAT_DAY = "yyyy-MM-dd"; + public static final String DATE_FORMAT_DAY_2 = "yyyy/MM/dd"; + public static final String TIME_FORMAT_SEC = "HH:mm:ss"; + public static final String TIME_FORMAT_SEC2 = "HH:mm"; + public static final String DATE_FORMAT_SEC = "yyyy-MM-dd HH:mm:ss"; + public static final String DATE_FORMAT_SEC_2 = "yyyy/MM/dd HH:mm:ss"; + public static final String DATE_FORMAT_SEC_3 = "yyyy.MM.dd HH:mm:ss"; + public static final String DATE_FORMAT_SEC_4 = "yyyy.MM.dd HH:mm"; + public static final String DATE_FORMAT_SEC_5 = "yyyy.MM.dd HH:mm"; + public static final String DATE_FORMAT_SEC_6 = "yyyy.MM.dd"; + /** + * 几天后的当前 + * @param d + * @param day + * @return + */ + public static Date getDateBefore(Date d, int day) { + Calendar now = Calendar.getInstance(); + now.setTime(d); + now.set(Calendar.DATE, now.get(Calendar.DATE) + day); + return now.getTime(); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerIntentInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerIntentInfoDAO.java new file mode 100644 index 000000000..211c5f87f --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerIntentInfoDAO.java @@ -0,0 +1,59 @@ +package com.cool.store.dao; + +import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; +import com.cool.store.entity.HyPartnerIntentInfoDO; +import com.cool.store.mapper.HyPartnerIntentInfoMapper; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/9 15:02 + * @Version 1.0 + */ +@Repository +public class HyPartnerIntentInfoDAO { + + + @Resource + HyPartnerIntentInfoMapper hyPartnerIntentInfoMapper; + + public int insertSelective( HyPartnerIntentInfoDO record){ + return hyPartnerIntentInfoMapper.insertSelective(record); + } + + public int updateByPrimaryKeySelective(HyPartnerIntentInfoDO record){ + return hyPartnerIntentInfoMapper.updateByPrimaryKeySelective(record); + } + + public HyPartnerIntentInfoDO selectByPrimaryKeySelective(Long id){ + if (id==null){ + return null; + } + return hyPartnerIntentInfoMapper.selectByPrimaryKeySelective(id); + } + + + public PageInfo selectPartnerIntentApplyInfoList(String userId, String workflowStage, String workflowStatus){ + if (StringUtils.isEmpty(userId)){ + return new PageInfo<>(); + } + return hyPartnerIntentInfoMapper.selectPartnerIntentApplyInfoList(userId,workflowStage,workflowStatus); + } + + + public PartnerIntentApplyInfoDTO selectByLineId(Long lineId){ + if (lineId==null){ + return null; + } + return hyPartnerIntentInfoMapper.selectByLineId(lineId); + } + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerInterviewPlanDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerInterviewPlanDAO.java new file mode 100644 index 000000000..5153b4a99 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerInterviewPlanDAO.java @@ -0,0 +1,85 @@ +package com.cool.store.dao; + +import com.cool.store.dto.partner.PartnerInterviewInfoDTO; +import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO; +import com.cool.store.entity.HyPartnerInterviewPlanDO; +import com.cool.store.mapper.HyPartnerInterviewPlanMapper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/8 14:54 + * @Version 1.0 + */ +@Repository +public class HyPartnerInterviewPlanDAO { + + @Resource + HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper; + + + /** + * 查询当前用户当天是否有面试 + * @param userId + * @param currentDate + * @return + */ + public Integer getCurrentDateInterviewCount(String userId,String currentDate){ + if (StringUtils.isEmpty(userId)){ + return 0; + } + return hyPartnerInterviewPlanMapper.getCurrentDateInterviewCount(userId,currentDate); + } + + /** + * 查询指定日期面试数量 与未来7天面试数量 + * @param userId + * @param currentDate + * @param startTime + * @param endTime + * @return + */ + public SpecialDateRangeInterviewCountDTO getInterviewCount(String userId, String currentDate, String startTime, String endTime){ + if (StringUtils.isEmpty(userId)){ + return new SpecialDateRangeInterviewCountDTO(); + } + return hyPartnerInterviewPlanMapper.getInterviewCount(userId,currentDate,startTime,endTime); + } + + + /** + * 当天还有几场面试 + * @param userId + * @param currentDate + * @return + */ + public List getInterviewPlanList(String userId, String currentDate){ + if (StringUtils.isEmpty(userId)){ + return new ArrayList<>(); + } + return hyPartnerInterviewPlanMapper.getInterviewPlanList(userId,currentDate); + } + + /** + * 工作台 招商经理 预约面试时间 合格资格面试 列表 + * @param userId + * @param workflowStage + * @param workflowStatus + * @return + */ + public PageInfo getPartnerInterviewInfoList(String userId, String workflowStage,String workflowStatus){ + if (StringUtils.isEmpty(userId)){ + return new PageInfo(); + } + return hyPartnerInterviewPlanMapper.getPartnerInterviewInfoList(userId,workflowStage,workflowStatus); + } + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java new file mode 100644 index 000000000..f72326c2d --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java @@ -0,0 +1,111 @@ +package com.cool.store.dao; + +import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; +import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO; +import com.cool.store.dto.partner.StageCountDTO; +import com.cool.store.entity.HyPartnerLineInfoDO; +import com.cool.store.mapper.HyPartnerLineInfoMapper; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/8 15:10 + * @Version 1.0 + */ +@Repository +public class HyPartnerLineInfoDAO { + + + @Resource + HyPartnerLineInfoMapper hyPartnerLineInfoMapper; + + + public int insertSelective(HyPartnerLineInfoDO hyPartnerLineInfoDO){ + return hyPartnerLineInfoMapper.insertSelective(hyPartnerLineInfoDO); + } + + public int batchInsert(List hyPartnerLineInfoDOS){ + if (CollectionUtils.isEmpty(hyPartnerLineInfoDOS)){ + return -1; + } + return hyPartnerLineInfoMapper.batchInsert(hyPartnerLineInfoDOS); + } + + + public int batchDeleted(List lineIdList){ + if (CollectionUtils.isEmpty(lineIdList)){ + return -1; + } + return hyPartnerLineInfoMapper.batchDeleted(lineIdList); + } + + public HyPartnerLineInfoDO selectByPrimaryKeySelective(Long id){ + if (id==null){ + return null; + } + return hyPartnerLineInfoMapper.selectByPrimaryKeySelective(id); + } + + + public Integer getAdventLineCount( String userId, String currentDate){ + if (StringUtils.isEmpty(userId)){ + return 0; + } + return hyPartnerLineInfoMapper.getAdventLineCount(userId,currentDate); + } + + public StageCountDTO selectStagePendingCount(String userId){ + if (StringUtils.isEmpty(userId)){ + return new StageCountDTO(0,0); + } + return hyPartnerLineInfoMapper.selectStagePendingCount(userId); + } + + public StageCountDTO selectStageFollowCount(String userId){ + if (StringUtils.isEmpty(userId)){ + return new StageCountDTO(0,0,0); + } + return hyPartnerLineInfoMapper.selectStageFollowCount(userId); + } + + + public PartnerLineInfoAndBaseInfoDTO selectPartnerLineInfoAndBaseInfo(Long lineId){ + if (lineId==null){ + return null; + } + return hyPartnerLineInfoMapper.selectPartnerLineInfoAndBaseInfo(lineId); + } + + public PageInfo lastMonthCloseLine(String userId, String lastMonthTodayDate){ + if (userId==null){ + return new PageInfo<>(); + } + return hyPartnerLineInfoMapper.lastMonthCloseLine(userId,lastMonthTodayDate); + } + + public int updateInvestmentManager(String userId, List lineIdList){ + if (StringUtils.isEmpty(userId)||CollectionUtils.isEmpty(lineIdList)){ + return -1; + } + return hyPartnerLineInfoMapper.updateInvestmentManager(lineIdList,userId); + } + + + + public List getLineListByLineIds( List lineIdList){ + if (CollectionUtils.isEmpty(lineIdList)){ + return Lists.newArrayList(); + } + return hyPartnerLineInfoMapper.getLineListByLineIds(lineIdList); + } + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerUserInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerUserInfoDAO.java new file mode 100644 index 000000000..04aee62d5 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerUserInfoDAO.java @@ -0,0 +1,51 @@ +package com.cool.store.dao; + +import com.cool.store.entity.HyPartnerUserInfoDO; +import com.cool.store.mapper.HyPartnerUserInfoMapper; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/8 19:41 + * @Version 1.0 + */ +@Repository +public class HyPartnerUserInfoDAO { + + + @Resource + HyPartnerUserInfoMapper hyPartnerUserInfoMapper; + + + /** + * 根据PartnerId查询用户 + * @param partnerId + * @return + */ + public HyPartnerUserInfoDO selectByPartnerId(String partnerId){ + if (StringUtils.isEmpty(partnerId)){ + return null; + } + return hyPartnerUserInfoMapper.selectByPartnerId(partnerId); + } + + /** + * 根据PartnerIds批量查询用户 + * @param partnerIds + * @return + */ + public List selectByPartnerIds(List partnerIds){ + if (CollectionUtils.isEmpty(partnerIds)){ + return Lists.newArrayList(); + } + return hyPartnerUserInfoMapper.selectByPartnerIds(partnerIds); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerIntentInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerIntentInfoMapper.java index 9764d0ad5..cd68c7a3e 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerIntentInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerIntentInfoMapper.java @@ -1,8 +1,12 @@ package com.cool.store.mapper; +import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; import com.cool.store.entity.HyPartnerIntentInfoDO; +import com.github.pagehelper.PageInfo; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author zhangchenbiao * @date 2023-05-29 03:52 @@ -16,10 +20,31 @@ public interface HyPartnerIntentInfoMapper { */ int insertSelective(@Param("record") HyPartnerIntentInfoDO record); + HyPartnerIntentInfoDO selectByPrimaryKeySelective(@Param("id") Long id); + /** * * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 * dateTime:2023-05-29 03:52 */ int updateByPrimaryKeySelective(@Param("record") HyPartnerIntentInfoDO record); + + + /** + * 工作台 招商经理 意向申请阶段 待处理 待跟进 列表 + * @param userId + * @param workflowStage + * @param workflowStatus + * @return + */ + PageInfo selectPartnerIntentApplyInfoList(@Param("userId") String userId, + @Param("workflowStage") String workflowStage , + @Param("workflowStatus") String workflowStatus); + + /** + * 根据线索ID查询数据 + * @param lineId + * @return + */ + PartnerIntentApplyInfoDTO selectByLineId(@Param("lineId") Long lineId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java index 25b436937..44fe9cb77 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java @@ -1,8 +1,14 @@ package com.cool.store.mapper; +import com.cool.store.dto.partner.PartnerInterviewInfoDTO; +import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO; import com.cool.store.entity.HyPartnerInterviewPlanDO; +import com.github.pagehelper.PageInfo; import org.apache.ibatis.annotations.Param; +import java.util.Date; +import java.util.List; + /** * @author zhangchenbiao * @date 2023-05-29 03:52 @@ -22,4 +28,46 @@ public interface HyPartnerInterviewPlanMapper { * dateTime:2023-05-29 03:52 */ int updateByPrimaryKeySelective(@Param("record") HyPartnerInterviewPlanDO record); + + /** + * 查询当天面试数量 + * @param userId + * @param currentDate + * @return + */ + Integer getCurrentDateInterviewCount(@Param("userId") String userId, @Param("currentDate") String currentDate); + + /** + * todo 当天面试数据需要修改 + * 查询指定日期面试数量 与未来7天面试数量 + * @param userId + * @param currentDate + * @param startTime + * @param endTime + * @return + */ + SpecialDateRangeInterviewCountDTO getInterviewCount(@Param("userId") String userId, + @Param("currentDate") String currentDate, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + /** + * 查询面试列表 + * @param userId + * @param currentDate + * @return + */ + List getInterviewPlanList(@Param("userId") String userId, + @Param("currentDate") String currentDate); + + /** + * 工作台 招商经理 预约面试时间 合格资格面试 列表 + * @param userId + * @param workflowStage + * @param workflowStatus + * @return + */ + PageInfo getPartnerInterviewInfoList(@Param("userId") String userId, + @Param("workflowStage") String workflowStage , + @Param("workflowStatus") String workflowStatus); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java index 936823266..4c42bdae1 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java @@ -1,9 +1,15 @@ package com.cool.store.mapper; +import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; +import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO; +import com.cool.store.dto.partner.StageCountDTO; import com.cool.store.entity.HyPartnerLineInfoDO; import com.cool.store.entity.HyPartnerLineInfoDO; +import com.github.pagehelper.PageInfo; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author zhangchenbiao * @date 2023-05-29 03:52 @@ -17,10 +23,86 @@ public interface HyPartnerLineInfoMapper { */ int insertSelective(@Param("record") HyPartnerLineInfoDO record); + /** + * 批量新增线索 + * @param recordList + * @return + */ + int batchInsert(@Param("recordList") List recordList); + + /** + * 批量将线索置为删除状态 + * @param lineIdList + * @return + */ + int batchDeleted(@Param("lineIdList") List lineIdList); + + /** + * 根据ID查询数据 + * @param id + * @return + */ + HyPartnerLineInfoDO selectByPrimaryKeySelective(Long id); + + /** * * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 * dateTime:2023-05-29 03:52 */ int updateByPrimaryKeySelective(@Param("record") HyPartnerLineInfoDO record); + + /** + * 当前用户指定时间 临期线索 + * @param userId + * @param currentDate + * @return + */ + Integer getAdventLineCount(@Param("userId") String userId, @Param("currentDate") String currentDate); + + /** + * 招商经理 对应各阶段待处理数据 + * @param userId + * @return + */ + StageCountDTO selectStagePendingCount(@Param("userId") String userId); + + /** + * 招商经理 对应各个阶段 待跟进数据 + * @param userId + * @return + */ + StageCountDTO selectStageFollowCount(@Param("userId") String userId); + + + /** + * 查询线索信息与加盟商基本信息 + * @param lineId + * @return + */ + PartnerLineInfoAndBaseInfoDTO selectPartnerLineInfoAndBaseInfo(@Param("lineId") Long lineId); + + /** + * 最近30天结束的线索 + * @param userId + * @param lastMonthTodayDate + * @return + */ + PageInfo lastMonthCloseLine(@Param("userId") String userId, + @Param("lastMonthTodayDate") String lastMonthTodayDate); + + /** + * 修改招商经理 + * @param lineIdList + * @param userId + * @return + */ + int updateInvestmentManager(@Param("lineIdList") List lineIdList, @Param("userId") String userId); + + /** + * 根据线索ID查询线索 + * @param lineIdList + * @return + */ + List getLineListByLineIds(List lineIdList); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserInfoMapper.java index 300a9a959..3c0b9be58 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserInfoMapper.java @@ -3,6 +3,8 @@ package com.cool.store.mapper; import com.cool.store.entity.HyPartnerUserInfoDO; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author zhangchenbiao * @date 2023-05-29 03:53 @@ -22,4 +24,18 @@ public interface HyPartnerUserInfoMapper { * dateTime:2023-05-29 03:53 */ int updateByPrimaryKeySelective(@Param("record") HyPartnerUserInfoDO record); + + /** + * 根据partnerID查询用户信息 + * @param partnerId + * @return + */ + HyPartnerUserInfoDO selectByPartnerId(@Param("partnerId") String partnerId); + + /** + * 根据partnerIDs批量查询用户信息 + * @param partnerIdList + * @return + */ + List selectByPartnerIds(@Param("partnerIdList") List partnerIdList); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml index fbc690fb3..e495f858c 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerIntentInfoMapper.xml @@ -32,6 +32,14 @@ work_exp, is_consumer, other_band, brand_strength, need_improve, strength, weakness, create_time, update_time + insert into hy_partner_intent_info @@ -243,4 +251,41 @@ where id = #{record.id} + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 8d9f83e09..c20826590 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -172,4 +172,69 @@ where id = #{record.id} + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index a02351c7a..104c5a8ec 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -27,6 +27,49 @@ reject_real_reason, certify_file, deleted, create_time, update_time, close_time, close_user_id + + + + + + insert into + hy_partner_line_info + ( + partner_id, + workflow_stage, + workflow_status, + line_status, + investment_manager + ) + values + + (#{record.partnerId}, + #{record.workflowStage}, + #{record.workflowStatus}, + #{record.lineStatus}, + #{record.investmentManager}) + + + + + update hy_partner_line_info + set deleted = 1 + + + + #{lineId} + + + + + + + insert into hy_partner_line_info @@ -193,4 +236,104 @@ where id = #{record.id} + + + + + + + + + + + + + + update hy_partner_line_info + set investment_manager = #{userId} + + + #{lineId} + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml index c66e654db..c0e32f713 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml @@ -18,6 +18,25 @@ id, partner_id, mobile, username, live_area, want_shop_area, accept_adjust_type, invite_code, is_write_partner_know, create_time, update_time + + + + + insert into hy_partner_user_info diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerIntentApplyInfoDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerIntentApplyInfoDTO.java new file mode 100644 index 000000000..05d9f67e9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerIntentApplyInfoDTO.java @@ -0,0 +1,49 @@ +package com.cool.store.dto.partner; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2023/6/9 15:37 + * @Version 1.0 + */ +@Data +public class PartnerIntentApplyInfoDTO { + + @ApiModelProperty("") + private Long id; + + @ApiModelProperty("加盟商用户名称") + private String partnerUserName; + + @ApiModelProperty("hy_partner_user_info.partner_id") + private String partnerId; + + @ApiModelProperty("hy_partner_line_info.id") + private Long partnerLineId; + + @ApiModelProperty("常驻区域") + private String liveArea; + + @ApiModelProperty("意向开店区域") + private String wantShopArea; + + @ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂") + private Integer acceptAdjustType; + + @ApiModelProperty("截止时间") + private Date deadline; + + @ApiModelProperty("阶段提交时间") + private Date partnerSubmitTime; + + @ApiModelProperty("所属阶段") + private String workflowStage; + + @ApiModelProperty("子流程状态") + private String workflowStatus; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerInterviewInfoDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerInterviewInfoDTO.java new file mode 100644 index 000000000..43c933dd9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerInterviewInfoDTO.java @@ -0,0 +1,64 @@ +package com.cool.store.dto.partner; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2023/6/9 19:40 + * @Version 1.0 + */ +@Data +public class PartnerInterviewInfoDTO { + + @ApiModelProperty("hy_partner_interview.id") + private Long interviewId; + + @ApiModelProperty("hy_partner_interview_plan.id") + private Long id; + + @ApiModelProperty("加盟商用户名称") + private String partnerUserName; + + @ApiModelProperty("预约状态 0 待预约;1待面试;2已开始;3待审核;4审批中;5审批通过;6拒绝") + private Integer status; + + @ApiModelProperty("hy_partner_line_info.id") + private Long partnerLineId; + + @ApiModelProperty("加盟商用户ID") + private String partnerId; + + @ApiModelProperty("截止时间") + private Date deadline; + + @ApiModelProperty("审批发起时间") + private Date approveTime; + + @ApiModelProperty("意向合同号") + private String authCode; + + @ApiModelProperty("面试开始时间") + private Date startTime; + + @ApiModelProperty("面试结束时间") + private Date endTime; + + @ApiModelProperty("面试官ID") + private String interviewer; + + @ApiModelProperty("面试官名称") + private String interviewerName; + + @ApiModelProperty("预约时间") + private Date createTime; + + @ApiModelProperty("房间号") + private String roomId; + + @ApiModelProperty("过程信息") + private String processInfo; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java new file mode 100644 index 000000000..deba8335e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerLineInfoAndBaseInfoDTO.java @@ -0,0 +1,44 @@ +package com.cool.store.dto.partner; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2023/6/12 16:05 + * @Version 1.0 + */ +@Data +public class PartnerLineInfoAndBaseInfoDTO { + @ApiModelProperty("线索ID") + private Long id; + + @ApiModelProperty("hy_partner_user_info.partner_id") + private String partnerId; + + @ApiModelProperty("流程阶段:1意向申请审核;2预约面试时间;3加盟资格面试;4分配选址开发经理;5商圈点位评估;6上传店铺租赁信息;7完善加盟签约信息;8支付加盟费用;9签订加盟合同") + private String workflowStage; + + @ApiModelProperty("流程子状态") + private String workflowStatus; + + @ApiModelProperty("加盟商用户ID") + private String partnerUserId; + + @ApiModelProperty("加盟商用户名称") + private String partnerUserName; + + @ApiModelProperty("加盟商用户手机号") + private String partnerUserPhone; + + @ApiModelProperty("手机号归属地") + private String phoneAddress; + + @ApiModelProperty("招商经理") + private String investmentManager; + + @ApiModelProperty("招商经理手机号") + private String investmentManagerPhone; + @ApiModelProperty("用户画像") + private String userPortrait; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/SpecialDateRangeInterviewCountDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/SpecialDateRangeInterviewCountDTO.java new file mode 100644 index 000000000..fd311757d --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/SpecialDateRangeInterviewCountDTO.java @@ -0,0 +1,17 @@ +package com.cool.store.dto.partner; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2023/6/8 16:38 + * @Version 1.0 + */ +@Data +public class SpecialDateRangeInterviewCountDTO { + + private Integer currentDayInterviewCount; + + private Integer lastSevenDayInterviewCount; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/StageCountDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/StageCountDTO.java new file mode 100644 index 000000000..f3f7bd017 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/StageCountDTO.java @@ -0,0 +1,38 @@ +package com.cool.store.dto.partner; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2023/6/9 10:16 + * @Version 1.0 + */ +@Data +public class StageCountDTO { + /** + * 意向申请待处理或者待跟进数量 + */ + private Integer intentApplyApproveCount; + /** + * 预约面试阶段 待跟进数量 + */ + private Integer reservationInterviewCount; + /** + * 合格资格面试 待处理或者待跟进数量 + */ + private Integer qualifiedInterviewCount; + + public StageCountDTO(Integer intentApplyApproveCount, Integer reservationInterviewCount, Integer qualifiedInterviewCount) { + this.intentApplyApproveCount = intentApplyApproveCount; + this.reservationInterviewCount = reservationInterviewCount; + this.qualifiedInterviewCount = qualifiedInterviewCount; + } + + public StageCountDTO(Integer intentApplyApproveCount, Integer qualifiedInterviewCount) { + this.intentApplyApproveCount = intentApplyApproveCount; + this.qualifiedInterviewCount = qualifiedInterviewCount; + } + + public StageCountDTO() { + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/TransferInvestmentManagerRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/TransferInvestmentManagerRequest.java new file mode 100644 index 000000000..76e60a429 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/TransferInvestmentManagerRequest.java @@ -0,0 +1,21 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/5/30 21:22 + * @Version 1.0 + */ +@Data +@ApiModel +public class TransferInvestmentManagerRequest { + + private Long lineId; + + private String userId; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewDetailInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewDetailInfoVO.java new file mode 100644 index 000000000..039399536 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewDetailInfoVO.java @@ -0,0 +1,27 @@ +package com.cool.store.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2023/6/8 16:12 + * @Version 1.0 + */ +@Data +@ApiModel +public class InterviewDetailInfoVO { + @ApiModelProperty("面试者ID") + private String userId; + @ApiModelProperty("面试者名称") + private String userName; + @ApiModelProperty("面试者手机号") + private String userPhone; + @ApiModelProperty("线索ID") + private Long lineId; + @ApiModelProperty("面试开始时间") + private Date startTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewPlanVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewPlanVO.java new file mode 100644 index 000000000..eb951a7b9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewPlanVO.java @@ -0,0 +1,20 @@ +package com.cool.store.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2023/6/8 14:39 + * @Version 1.0 + */ +@Data +@ApiModel +public class InterviewPlanVO { + + private Boolean hasInterview; + + private Boolean hasAdventLine; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewScheduleInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewScheduleInfoVO.java index 3545b4d89..df1acec7f 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewScheduleInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/InterviewScheduleInfoVO.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; +import java.util.List; /** * @Author suzhuhong @@ -19,15 +20,7 @@ public class InterviewScheduleInfoVO { private Integer currentDayInterviewCount; @ApiModelProperty("当前日期后七天面试数量") private Integer lastSevenDayInterviewCount; - @ApiModelProperty("面试者ID") - private String userId; - @ApiModelProperty("面试者名称") - private String userName; - @ApiModelProperty("面试者手机号") - private String userPhone; - @ApiModelProperty("线索ID") - private Long lineId; - @ApiModelProperty("面试开始时间") - private Date startTime; + @ApiModelProperty("面试日程列表") + private List interviewDetailInfoVOS; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentApplyInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentApplyInfoVO.java index 69cced4ba..75703825d 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentApplyInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerIntentApplyInfoVO.java @@ -6,6 +6,7 @@ import lombok.Data; import java.util.Date; + /** * @Author suzhuhong * @Date 2023/5/30 20:11 @@ -22,6 +23,9 @@ public class PartnerIntentApplyInfoVO { @ApiModelProperty("加盟商用户名称") private String partnerUserName; + @ApiModelProperty("加盟商手机号码") + private String partnerUserPhone; + @ApiModelProperty("hy_partner_user_info.partner_id") private String partnerId; @@ -34,6 +38,9 @@ public class PartnerIntentApplyInfoVO { @ApiModelProperty("意向开店区域") private String wantShopArea; + @ApiModelProperty("意向开店区域") + private String wantShopAreaName; + @ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂") private Integer acceptAdjustType; @@ -43,7 +50,4 @@ public class PartnerIntentApplyInfoVO { @ApiModelProperty("阶段提交时间") private Date partnerSubmitTime; - - - } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java index 50ec23725..fd785a449 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + /** * @Author suzhuhong * @Date 2023/5/30 20:28 @@ -14,7 +16,7 @@ import lombok.Data; public class PartnerInterviewInfoVO { @ApiModelProperty("会议id") - private String interviewId; + private Long interviewId; @ApiModelProperty("预约状态 0 待预约;1待面试;2已开始;3待审核;4审批中;5审批通过;6拒绝") private Integer status; @@ -40,4 +42,9 @@ public class PartnerInterviewInfoVO { @ApiModelProperty("面试官名称") private String interviewerName; + @ApiModelProperty("预约时间") + private String createTime; + + @ApiModelProperty("过程信息") + private String processInfo; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineInfoAndBaseInfoVO.java similarity index 90% rename from coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineDetailVO.java rename to coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineInfoAndBaseInfoVO.java index 2da1ce719..9bacd830b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineInfoAndBaseInfoVO.java @@ -13,14 +13,11 @@ import java.util.List; */ @Data @ApiModel -public class PartnerLineDetailVO { +public class PartnerLineInfoAndBaseInfoVO { @ApiModelProperty("线索ID") private Long id; - @ApiModelProperty("hy_partner_user_info.partner_id") - private String partnerId; - @ApiModelProperty("流程阶段:1意向申请审核;2预约面试时间;3加盟资格面试;4分配选址开发经理;5商圈点位评估;6上传店铺租赁信息;7完善加盟签约信息;8支付加盟费用;9签订加盟合同") private String workflowStage; @@ -42,13 +39,11 @@ public class PartnerLineDetailVO { @ApiModelProperty("招商经理") private String investmentManager; + @ApiModelProperty("招商经理") + private String investmentManagerName; + @ApiModelProperty("招商经理手机号") private String investmentManagerPhone; @ApiModelProperty("用户画像") private String userPortrait; - - - - - } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/DeskService.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/DeskService.java new file mode 100644 index 000000000..f245f0bab --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/DeskService.java @@ -0,0 +1,49 @@ +package com.cool.store.Service; + +import com.cool.store.vo.InterviewPlanVO; +import com.cool.store.vo.InterviewScheduleInfoVO; +import com.cool.store.vo.StageCountVO; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2023/6/8 14:45 + * @Version 1.0 + */ +public interface DeskService { + + + /** + * 是否有临期线索与面试 + * @param userId + * @return + */ + InterviewPlanVO getInterviewPlan(String userId); + + + /** + * 面试日程 + * @param userId + * @param selectedData + * @return + */ + InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData); + + /** + * 招商经理 各阶段 待处理 待跟进数量 + * @param userId + * @param type + * @return + */ + StageCountVO getStageCountByType(String userId,String type); + + + + + + + + + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerIntentInfoService.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerIntentInfoService.java new file mode 100644 index 000000000..1a17a53e1 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerIntentInfoService.java @@ -0,0 +1,31 @@ +package com.cool.store.Service; + +import com.cool.store.vo.PartnerIntentApplyInfoVO; +import com.github.pagehelper.PageInfo; + +/** + * @Author suzhuhong + * @Date 2023/6/9 14:54 + * @Version 1.0 + */ +public interface HyPartnerIntentInfoService { + + + /** + * 招商经理 意向申请阶段 待处理 待跟进列表 + * @param userId + * @param type + * @param pageSize + * @param pageNumber + * @return + */ + PageInfo getPartnerIntentApplyList(String userId, String type, Integer pageSize, Integer pageNumber); + + /** + * 根据线索查询加盟商意向申请信息 + * @param lineId + * @return + */ + PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId); + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerInterviewPlanService.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerInterviewPlanService.java new file mode 100644 index 000000000..f037111bb --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerInterviewPlanService.java @@ -0,0 +1,45 @@ +package com.cool.store.Service; + +import com.cool.store.entity.HyPartnerInterviewPlanDO; +import com.cool.store.vo.InterviewDetailInfoVO; +import com.cool.store.vo.PartnerInterviewInfoVO; +import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/8 19:32 + * @Version 1.0 + */ +public interface HyPartnerInterviewPlanService { + + /** + * 招商经理今日面试列表 + * @param userId + * @return + */ + List getInterviewPlanList(String userId); + + /** + * getPartnerInterviewInfoList + * @param userId + * @param pageSize + * @param pageNumber + * @return + */ + PageInfo getPartnerInterviewInfoList(String userId,Integer pageSize,Integer pageNumber); + + + /** + * getQualifiedInterviewList + * @param userId + * @param type + * @param pageSize + * @param pageNumber + * @return + */ + PageInfo getQualifiedInterviewList(String userId,String type,Integer pageSize,Integer pageNumber); +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java new file mode 100644 index 000000000..c3ffcb52b --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java @@ -0,0 +1,67 @@ +package com.cool.store.Service; + +import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO; +import com.cool.store.vo.PartnerLineInfoVO; +import com.cool.store.vo.StageCountVO; +import com.github.pagehelper.PageInfo; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/9 10:30 + * @Version 1.0 + */ +public interface HyPartnerLineInfoService { + + + /** + * 查询招商经理 待处理 + * @param userId + * @return + */ + StageCountVO selectStagePendingCount(String userId); + + /** + * 查询招商经理 待跟进 + * @param userId + * @return + */ + StageCountVO selectStageFollowCount(String userId); + + + /** + * 查询加盟商线索详情之一 线索信息与基本信息 + * @param lineId + * @return + */ + PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId); + + /** + * 最近30天结束的线索 + * @param userId + * @param pageSize + * @param pageNumber + * @return + */ + PageInfo lastMonthCloseLine(String userId,Integer pageSize,Integer pageNumber); + + /** + * 转让招商经理 + * @param userId + * @param lineId + * @return + */ + Boolean transferInvestmentManager(String userId,Long lineId); + + /** + * 分配招商经理 + * @param userId + * @param lineIdList + * @return + */ + Boolean allocationInvestmentManager(String userId, List lineIdList); + + + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/DeskServiceImpl.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/DeskServiceImpl.java new file mode 100644 index 000000000..c769b8c78 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/DeskServiceImpl.java @@ -0,0 +1,92 @@ +package com.cool.store.Service.impl; + +import cn.hutool.core.date.DateUtil; +import com.cool.store.Service.DeskService; +import com.cool.store.Service.HyPartnerInterviewPlanService; +import com.cool.store.Service.HyPartnerLineInfoService; +import com.cool.store.constants.CommonConstants; +import com.cool.store.dao.HyPartnerInterviewPlanDAO; +import com.cool.store.dao.HyPartnerLineInfoDAO; +import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO; +import com.cool.store.entity.HyPartnerInterviewPlanDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.vo.InterviewDetailInfoVO; +import com.cool.store.vo.InterviewPlanVO; +import com.cool.store.vo.InterviewScheduleInfoVO; +import com.cool.store.vo.StageCountVO; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.utils.DateUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/8 14:45 + * @Version 1.0 + */ +@Service +public class DeskServiceImpl implements DeskService { + + @Resource + HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO; + @Resource + HyPartnerLineInfoDAO hyPartnerLineInfoDAO; + @Resource + HyPartnerInterviewPlanService hyPartnerInterviewPlanService; + @Resource + HyPartnerLineInfoService hyPartnerLineInfoService; + + @Override + public InterviewPlanVO getInterviewPlan(String userId) { + InterviewPlanVO interviewPlanVO = new InterviewPlanVO(); + + String currentDate = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_DAY); + Integer currentDateInterviewCount = hyPartnerInterviewPlanDAO.getCurrentDateInterviewCount(userId, currentDate); + interviewPlanVO.setHasInterview(currentDateInterviewCount>0); + //临期数量 + Integer adventLineCount = hyPartnerLineInfoDAO.getAdventLineCount(userId, currentDate); + interviewPlanVO.setHasAdventLine(adventLineCount>0); + return interviewPlanVO; + } + + @Override + public InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData) { + if (StringUtils.isEmpty(userId)||selectedData==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + InterviewScheduleInfoVO interviewScheduleInfoVO = new InterviewScheduleInfoVO(); + //查询面试数量 + String currentDate = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_DAY); + String startTime = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_SEC); + String endTime = DateUtil.format(CoolDateUtils.getDateBefore(selectedData, 7), CoolDateUtils.DATE_FORMAT_SEC); + SpecialDateRangeInterviewCountDTO interviewCount = hyPartnerInterviewPlanDAO.getInterviewCount(userId, currentDate, startTime, endTime); + + interviewScheduleInfoVO.setCurrentDayInterviewCount(interviewCount.getCurrentDayInterviewCount()); + interviewScheduleInfoVO.setLastSevenDayInterviewCount(interviewCount.getLastSevenDayInterviewCount()); + + //查询面试列表 + //当天时间 与入参无关 + List interviewPlanList = hyPartnerInterviewPlanService.getInterviewPlanList(userId); + interviewScheduleInfoVO.setInterviewDetailInfoVOS(interviewPlanList); + + return interviewScheduleInfoVO; + } + + @Override + public StageCountVO getStageCountByType(String userId, String type) { + if (CommonConstants.PENDING.equals(type)){ + return hyPartnerLineInfoService.selectStagePendingCount(userId); + } + if (CommonConstants.FOLLOW.equals(type)){ + return hyPartnerLineInfoService.selectStageFollowCount(userId); + } + return null; + } + + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerIntentInfoServiceImpl.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerIntentInfoServiceImpl.java new file mode 100644 index 000000000..8a947b300 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerIntentInfoServiceImpl.java @@ -0,0 +1,104 @@ +package com.cool.store.Service.impl; + +import com.cool.store.Service.HyPartnerIntentInfoService; +import com.cool.store.constants.CommonConstants; +import com.cool.store.dao.HyPartnerIntentInfoDAO; +import com.cool.store.dao.HyPartnerLineInfoDAO; +import com.cool.store.dao.HyPartnerUserInfoDAO; +import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; +import com.cool.store.entity.HyPartnerIntentInfoDO; +import com.cool.store.entity.HyPartnerLineInfoDO; +import com.cool.store.entity.HyPartnerUserInfoDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.WorkflowStageEnum; +import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.vo.PartnerIntentApplyInfoVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author suzhuhong + * @Date 2023/6/9 15:00 + * @Version 1.0 + */ +@Service +public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoService { + + + @Resource + HyPartnerIntentInfoDAO hyPartnerIntentInfoDAO; + @Resource + HyPartnerUserInfoDAO hyPartnerUserInfoDAO; + @Resource + HyPartnerLineInfoDAO hyPartnerLineInfoDAO; + + @Override + public PageInfo getPartnerIntentApplyList(String userId, String type, Integer pageSize, Integer pageNumber) { + PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = new PartnerIntentApplyInfoVO(); + String workflowStatus = ""; + if (CommonConstants.PENDING.equals(type)) { + workflowStatus = WorkflowStatusEnum.RESERVATION_0.getCode(); + } + if (CommonConstants.FOLLOW.equals(type)) { + workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode(); + } + PageHelper.startPage(pageNumber,pageSize); + PageInfo partnerIntentApplyInfo = hyPartnerIntentInfoDAO.selectPartnerIntentApplyInfoList(userId, WorkflowStageEnum.INTENT.getCode(), workflowStatus); + if (partnerIntentApplyInfo==null){ + return new PageInfo<>(); + } + List list = partnerIntentApplyInfo.getList(); + List partnerIds = list.stream().map(PartnerIntentApplyInfoDTO::getPartnerId).collect(Collectors.toList()); + List hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds); + Map infoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data)); + List result = new ArrayList<>(); + list.stream().forEach(x->{ + PartnerIntentApplyInfoVO pat = partnerIntentApplyInfoDTOToVo(x); + HyPartnerUserInfoDO infoDOMapOrDefault = infoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerUserInfoDO()); + pat.setPartnerUserName(infoDOMapOrDefault.getUsername()); + pat.setPartnerUserPhone(infoDOMapOrDefault.getMobile()); + result.add(pat); + }); + partnerIntentApplyInfo.setList(result); + return partnerIntentApplyInfo; + } + + @Override + public PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId) { + PartnerIntentApplyInfoDTO partnerIntentApplyInfoDTO= hyPartnerIntentInfoDAO.selectByLineId(lineId); + PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = partnerIntentApplyInfoDTOToVo(partnerIntentApplyInfoDTO); + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerIntentApplyInfoDTO.getPartnerId()); + partnerIntentApplyInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername()); + partnerIntentApplyInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile()); + //todo su 手机号归属地 意向申请区域名称 + return partnerIntentApplyInfoVO; + } + + /** + * partnerIntentApplyInfoDTOToVo + * @param partnerIntentApplyInfoDTO + * @return + */ + private PartnerIntentApplyInfoVO partnerIntentApplyInfoDTOToVo(PartnerIntentApplyInfoDTO partnerIntentApplyInfoDTO){ + PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = new PartnerIntentApplyInfoVO(); + partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId()); + partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId()); + partnerIntentApplyInfoVO.setPartnerLineId(partnerIntentApplyInfoDTO.getPartnerLineId()); + partnerIntentApplyInfoVO.setPartnerSubmitTime(partnerIntentApplyInfoDTO.getPartnerSubmitTime()); + partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType()); + partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea()); + partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea()); + partnerIntentApplyInfoVO.setDeadline(partnerIntentApplyInfoDTO.getDeadline()); + return partnerIntentApplyInfoVO; + } + + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerInterviewPlanServiceImpl.java new file mode 100644 index 000000000..fac20b4c9 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -0,0 +1,141 @@ +package com.cool.store.Service.impl; + +import cn.hutool.core.date.DateUtil; +import com.cool.store.Service.HyPartnerInterviewPlanService; +import com.cool.store.constants.CommonConstants; +import com.cool.store.dao.HyPartnerInterviewPlanDAO; +import com.cool.store.dao.HyPartnerUserInfoDAO; +import com.cool.store.dto.partner.PartnerInterviewInfoDTO; +import com.cool.store.entity.HyPartnerInterviewPlanDO; +import com.cool.store.entity.HyPartnerUserInfoDO; +import com.cool.store.enums.WorkflowStageEnum; +import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.vo.InterviewDetailInfoVO; +import com.cool.store.vo.PartnerInterviewInfoVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author suzhuhong + * @Date 2023/6/8 19:32 + * @Version 1.0 + */ +@Service +public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlanService { + + @Resource + HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO; + @Resource + HyPartnerUserInfoDAO hyPartnerUserInfoDAO; + + + @Override + public List getInterviewPlanList(String userId) { + String currentTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_DAY); + List interviewPlanList = hyPartnerInterviewPlanDAO.getInterviewPlanList(userId, currentTime); + if (CollectionUtils.isEmpty(interviewPlanList)){ + return Lists.newArrayList(); + } + List partnerIdList = interviewPlanList.stream().map(HyPartnerInterviewPlanDO::getPartnerId).collect(Collectors.toList()); + List hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIdList); + Map hyPartnerUserInfoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data)); + List result = new ArrayList<>(); + interviewPlanList.stream().forEach(x->{ + InterviewDetailInfoVO interviewDetailInfoVO = convertDoToInterviewDetailInfoVO(x); + HyPartnerUserInfoDO userInfoDO = hyPartnerUserInfoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerUserInfoDO()); + interviewDetailInfoVO.setUserId(userInfoDO.getPartnerId()); + interviewDetailInfoVO.setUserName(userInfoDO.getUsername()); + interviewDetailInfoVO.setUserPhone(userInfoDO.getMobile()); + result.add(interviewDetailInfoVO); + }); + return result; + } + + @Override + public PageInfo getPartnerInterviewInfoList(String userId ,Integer pageSize,Integer pageNumber) { + PageHelper.startPage(pageNumber,pageSize); + //查询预约面试列表 + PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode()); + List list = partnerInterviewInfoList.getList(); + if (CollectionUtils.isEmpty(list)){ + return partnerInterviewInfoList; + } + List result = new ArrayList<>(); + list.stream().forEach(x->{ + PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x); + result.add(partnerInterviewInfoVO); + }); + partnerInterviewInfoList.setList(result); + return partnerInterviewInfoList; + } + + @Override + public PageInfo getQualifiedInterviewList(String userId, String type, Integer pageSize, Integer pageNumber) { + String workflowStatus = ""; + if (CommonConstants.PENDING.equals(type)) { + workflowStatus = WorkflowStatusEnum.INTERVIEW_3.getCode(); + } + if (CommonConstants.FOLLOW.equals(type)) { + workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode(); + } + + PageHelper.startPage(pageNumber,pageSize); + //查询预约面试列表 + PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.INTERVIEW.getCode(),workflowStatus); + List list = partnerInterviewInfoList.getList(); + if (CollectionUtils.isEmpty(list)){ + return partnerInterviewInfoList; + } + List result = new ArrayList<>(); + list.stream().forEach(x->{ + PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x); + result.add(partnerInterviewInfoVO); + }); + partnerInterviewInfoList.setList(result); + return partnerInterviewInfoList; + } + + + /** + * convertDoToInterviewDetailInfoVO + * @param hyPartnerInterviewPlanDO + * @return + */ + private InterviewDetailInfoVO convertDoToInterviewDetailInfoVO(HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO){ + InterviewDetailInfoVO interviewDetailInfoVO = new InterviewDetailInfoVO(); + if (hyPartnerInterviewPlanDO==null){ + return interviewDetailInfoVO; + } + interviewDetailInfoVO.setLineId(hyPartnerInterviewPlanDO.getPartnerLineId()); + interviewDetailInfoVO.setStartTime(hyPartnerInterviewPlanDO.getStartTime()); + return interviewDetailInfoVO; + } + + /** + * PartnerInterviewInfoDTOToVo + * @param partnerInterviewInfoDTO + * @return + */ + private PartnerInterviewInfoVO convertPartnerInterviewInfoDTOToVo(PartnerInterviewInfoDTO partnerInterviewInfoDTO){ + PartnerInterviewInfoVO partnerInterviewInfoVO = new PartnerInterviewInfoVO(); + partnerInterviewInfoVO.setInterviewId(partnerInterviewInfoDTO.getInterviewId()); + partnerInterviewInfoVO.setPartnerId(partnerInterviewInfoDTO.getPartnerId()); + partnerInterviewInfoVO.setInterviewerId(partnerInterviewInfoDTO.getInterviewer()); + partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo()); + partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC)); + partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId()); + partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC)); + partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus()); + partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC)); + return partnerInterviewInfoVO; + } + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.java new file mode 100644 index 000000000..67580e4f4 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.java @@ -0,0 +1,163 @@ +package com.cool.store.Service.impl; + +import cn.hutool.core.date.DateUtil; +import com.cool.store.Service.HyPartnerLineInfoService; +import com.cool.store.dao.HyPartnerLineInfoDAO; +import com.cool.store.dao.HyPartnerUserInfoDAO; +import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO; +import com.cool.store.dto.partner.StageCountDTO; +import com.cool.store.entity.HyPartnerLineInfoDO; +import com.cool.store.entity.HyPartnerUserInfoDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.WorkflowStageEnum; +import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.utils.StringUtil; +import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO; +import com.cool.store.vo.PartnerLineInfoVO; +import com.cool.store.vo.StageCountVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author suzhuhong + * @Date 2023/6/9 10:30 + * @Version 1.0 + */ +@Service +public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { + + @Resource + HyPartnerLineInfoDAO hyPartnerLineInfoDAO; + @Resource + HyPartnerUserInfoDAO hyPartnerUserInfoDAO; + + @Override + public StageCountVO selectStagePendingCount(String userId) { + StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStagePendingCount(userId); + return stageCountDTOToVo(stageCountDTO); + } + + @Override + public StageCountVO selectStageFollowCount(String userId) { + StageCountDTO stageCountDTO = hyPartnerLineInfoDAO.selectStageFollowCount(userId); + return stageCountDTOToVo(stageCountDTO); + } + + @Override + public PartnerLineInfoAndBaseInfoVO selectPartnerLineInfoAndBaseInfo(Long lineId) { + PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO = hyPartnerLineInfoDAO.selectPartnerLineInfoAndBaseInfo(lineId); + if (partnerLineInfoAndBaseInfoDTO==null){ + throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST); + } + PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = convertPartnerLineInfoAndBaseInfoDTOToVo(partnerLineInfoAndBaseInfoDTO); + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerLineInfoAndBaseInfoVO.getPartnerUserId()); + if (hyPartnerUserInfoDO!=null){ + partnerLineInfoAndBaseInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername()); + partnerLineInfoAndBaseInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile()); + } + //todo su 1、招商经理名称 手机号归属地 2、加盟商手机号归属地 + return partnerLineInfoAndBaseInfoVO; + } + + @Override + public PageInfo lastMonthCloseLine(String userId, Integer pageSize, Integer pageNumber) { + PageHelper.startPage(pageNumber,pageSize); + String lastMonthTodayDate = DateUtil.format(CoolDateUtils.getDateBefore(new Date(),-30), CoolDateUtils.DATE_FORMAT_SEC); + PageInfo hyPartnerLineInfoDOPageInfo = hyPartnerLineInfoDAO.lastMonthCloseLine(userId, lastMonthTodayDate); + + List list = hyPartnerLineInfoDOPageInfo.getList(); + List result = new ArrayList<>(); + list.stream().forEach(x->{ + PartnerLineInfoVO partnerLineInfoVO = new PartnerLineInfoVO(); + BeanUtils.copyProperties(x,partnerLineInfoVO); + result.add(partnerLineInfoVO); + }); + hyPartnerLineInfoDOPageInfo.setList(result); + return hyPartnerLineInfoDOPageInfo; + } + + @Override + public Boolean transferInvestmentManager(String userId, Long lineId) { + if (StringUtil.isBlank(userId)||lineId==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + hyPartnerLineInfoDAO.updateInvestmentManager(userId, Arrays.asList(lineId)); + return Boolean.TRUE; + } + + @Override + public Boolean allocationInvestmentManager(String userId, List lineIdList) { + if (StringUtil.isBlank(userId)|| CollectionUtils.isEmpty(lineIdList)){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + //加盟上线索集合 + List partnerLineInfoList= hyPartnerLineInfoDAO.getLineListByLineIds(lineIdList); + //过滤出已结束的线索 这块线索需要重新生成新的线索 + List closeLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() != null).collect(Collectors.toList()); + List closeLineIdList = closeLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList()); + //已结束的线索 需要重新生成一条新的线索 + List list = new ArrayList<>(); + closeLineList.stream().forEach(x->{ + HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO(); + hyPartnerLineInfoDO.setPartnerId(x.getPartnerId()); + hyPartnerLineInfoDO.setInvestmentManager(userId); + hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode()); + hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode()); + hyPartnerLineInfoDO.setLineStatus(1); + list.add(hyPartnerLineInfoDO); + }); + hyPartnerLineInfoDAO.batchInsert(list); + //将老的线索置为删除状态 + hyPartnerLineInfoDAO.batchDeleted(closeLineIdList); + //没有结束的线索直接分配招商经理 + List otherLineList = partnerLineInfoList.stream().filter(x -> x.getCloseTime() == null).collect(Collectors.toList()); + List otherLineIdList = otherLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList()); + hyPartnerLineInfoDAO.updateInvestmentManager(userId, otherLineIdList); + + return null; + } + + + /** + * convertPartnerLineInfoAndBaseInfoDTOToVo + * @param partnerLineInfoAndBaseInfoDTO + * @return + */ + private PartnerLineInfoAndBaseInfoVO convertPartnerLineInfoAndBaseInfoDTOToVo(PartnerLineInfoAndBaseInfoDTO partnerLineInfoAndBaseInfoDTO){ + PartnerLineInfoAndBaseInfoVO partnerLineInfoAndBaseInfoVO = new PartnerLineInfoAndBaseInfoVO(); + partnerLineInfoAndBaseInfoVO.setId(partnerLineInfoAndBaseInfoDTO.getId()); + partnerLineInfoAndBaseInfoVO.setPartnerUserId(partnerLineInfoAndBaseInfoDTO.getPartnerId()); + partnerLineInfoAndBaseInfoVO.setInvestmentManager(partnerLineInfoAndBaseInfoDTO.getInvestmentManager()); + partnerLineInfoAndBaseInfoVO.setUserPortrait(partnerLineInfoAndBaseInfoDTO.getUserPortrait()); + partnerLineInfoAndBaseInfoVO.setWorkflowStage(partnerLineInfoAndBaseInfoDTO.getWorkflowStage()); + partnerLineInfoAndBaseInfoVO.setWorkflowStatus(partnerLineInfoAndBaseInfoDTO.getWorkflowStatus()); + return partnerLineInfoAndBaseInfoVO; + } + + + + /** + * stageCountDTOToVo + * @param stageCountDTO + * @return + */ + private StageCountVO stageCountDTOToVo(StageCountDTO stageCountDTO){ + StageCountVO stageCountVO = new StageCountVO(); + stageCountVO.setQualifiedInterviewCount(stageCountDTO.getQualifiedInterviewCount()); + stageCountVO.setIntentApplyApproveCount(stageCountDTO.getIntentApplyApproveCount()); + stageCountVO.setReservationInterviewCount(stageCountDTO.getReservationInterviewCount()); + return stageCountVO; + } +} 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 c44c7eff6..db46b3dd1 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 @@ -1,5 +1,9 @@ package com.cool.store.controller; +import com.cool.store.Service.DeskService; +import com.cool.store.Service.HyPartnerIntentInfoService; +import com.cool.store.Service.HyPartnerInterviewPlanService; +import com.cool.store.Service.HyPartnerLineInfoService; import com.cool.store.request.*; import com.cool.store.response.ResponseResult; import com.cool.store.vo.*; @@ -10,6 +14,7 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.Date; import java.util.List; @@ -22,12 +27,22 @@ import java.util.List; @Slf4j public class DeskController { + @Resource + DeskService deskService; + @Resource + HyPartnerIntentInfoService hyPartnerIntentInfoService; + @Resource + HyPartnerInterviewPlanService hyPartnerInterviewPlanService; + @Resource + HyPartnerLineInfoService hyPartnerLineInfoService; + @GetMapping(path = "/interviewSchedule") @ApiOperation("面试日程信息 面试信息有限 不做分页") - public ResponseResult interviewSchedule(@RequestParam(value = "selectedData",required = false) Date selectedData){ + public ResponseResult interviewSchedule(@RequestParam(value = "userId",required = false) String userId, + @RequestParam(value = "selectedData",required = false) Date selectedData){ - return ResponseResult.success(); + return ResponseResult.success(deskService.interviewSchedule(userId,selectedData)); } @@ -36,9 +51,18 @@ public class DeskController { @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "类型 待处理-Pending 待跟进-follow", required = false), }) - public ResponseResult queryStageCount(@RequestParam(value = "type",required = false)Integer type){ + public ResponseResult queryStageCount(@RequestParam(value = "type",required = false)String type){ + String userId = ""; + return ResponseResult.success(deskService.getStageCountByType(userId,type)); + } - return ResponseResult.success(); + @GetMapping(path = "/queryInterviewPlan") + @ApiOperation("是否有面试与临期线索") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "招商经理ID", required = false), + }) + public ResponseResult queryInterviewPlanVO(@RequestParam(value = "userId",required = false)String userId){ + return ResponseResult.success(deskService.getInterviewPlan(userId)); } @@ -46,32 +70,46 @@ public class DeskController { @ApiOperation("招商经理视角===意向申请审核列表") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "类型 待处理-Pending 待跟进-follow", required = false), + @ApiImplicitParam(name = "pageNumber", value = "1", required = false), + @ApiImplicitParam(name = "pageSize", value = "10", required = false), }) - public ResponseResult> queryIntentApplyList(@RequestParam(value = "type",required = false)Integer type){ - - return ResponseResult.success(); + public ResponseResult> queryIntentApplyList(@RequestParam(value = "type",required = false)String type, + @RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ + String userId = ""; + return ResponseResult.success(hyPartnerIntentInfoService.getPartnerIntentApplyList(userId,type,pageSize,pageNumber)); } @PostMapping(path = "/querySubscribeInterviewTimeList") - @ApiOperation("招商经理视角===预约面试时间/合格资格面试 列表") + @ApiOperation("招商经理视角===预约面试时间 列表") + public ResponseResult> querySubscribeInterviewTimeList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ + + String userId = ""; + return ResponseResult.success(hyPartnerInterviewPlanService.getPartnerInterviewInfoList(userId,pageSize,pageNumber)); + } + + @PostMapping(path = "/queryQualifiedInterviewList") + @ApiOperation("招商经理视角===合格资格面试 列表") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "类型 待处理-Pending 待跟进-follow", required = false), }) - public ResponseResult> querySubscribeInterviewTimeList(@RequestParam(value = "type",required = false)Integer type){ - - return ResponseResult.success(); + public ResponseResult> queryQualifiedInterviewList(@RequestParam(value = "type",required = false)String type, + @RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ + String userId = ""; + return ResponseResult.success(hyPartnerInterviewPlanService.getQualifiedInterviewList(userId,type,pageSize,pageNumber)); } - @GetMapping(path = "/getPartnerLineDetail") - @ApiOperation("查询加盟商线索详情 线索信息与基本信息") + @GetMapping(path = "/getPartnerLineInfoAndBaseInfo") + @ApiOperation("查询加盟商线索详情之一 线索信息与基本信息") @ApiImplicitParams({ @ApiImplicitParam(name = "lineId", value = "线索ID", required = false), }) - public ResponseResult getPartnerLineDetail(@RequestParam(value = "lineId",required = false)Long lineId){ - - return ResponseResult.success(); + public ResponseResult getPartnerLineInfoAndBaseInfo(@RequestParam(value = "lineId",required = false)Long lineId){ + return ResponseResult.success(hyPartnerLineInfoService.selectPartnerLineInfoAndBaseInfo(lineId)); } @@ -81,9 +119,7 @@ public class DeskController { @ApiImplicitParam(name = "lineId", value = "线索ID", required = false), }) public ResponseResult getPartnerIntentInfo(@RequestParam(value = "lineId",required = false)Long lineId){ - - - return ResponseResult.success(); + return ResponseResult.success(hyPartnerIntentInfoService.getPartnerIntentApplyInfo(lineId)); } @@ -120,16 +156,23 @@ public class DeskController { public ResponseResult> lastMonthCloseLine(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ - - return ResponseResult.success(); + String userId = ""; + return ResponseResult.success(hyPartnerLineInfoService.lastMonthCloseLine(userId,pageSize,pageNumber)); } @PostMapping(path = "/allocationInvestmentManager") - @ApiOperation("分配招商经理/转让招商经理") - public ResponseResult allocationInvestmentManager(@RequestBody AllocationInvestmentManagerRequest allocationInvestmentManagerRequest){ + @ApiOperation("分配招商经理/批量分配招商经理") + public ResponseResult allocationInvestmentManager(@RequestBody AllocationInvestmentManagerRequest request){ - return ResponseResult.success(); + return ResponseResult.success(hyPartnerLineInfoService.allocationInvestmentManager(request.getUserId(),request.getLineIdList())); + } + + + @PostMapping(path = "/transferInvestmentManager") + @ApiOperation("转让招商经理") + public ResponseResult transferInvestmentManager(@RequestBody TransferInvestmentManagerRequest request){ + return ResponseResult.success(hyPartnerLineInfoService.transferInvestmentManager(request.getUserId(),request.getLineId())); } From 12cb59dca844bbc56061816c886700be0fe1bb44 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Tue, 13 Jun 2023 09:50:10 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E5=90=8C=E6=AD=A5=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/dao/EnterpriseUserDAO.java | 3 +++ .../com/cool/store/dao/EnterpriseUserRoleDAO.java | 2 +- .../resources/mapper/EnterpriseUserRoleMapper.xml | 2 +- .../com/cool/store/vo/region/RegionBaseInfoVO.java | 11 +++++++++++ .../store/service/impl/EnterpriseSyncServiceImpl.java | 5 +++-- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java index 4cab8192a..f66a3ae21 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java @@ -39,6 +39,9 @@ public class EnterpriseUserDAO { * @param excludeUserIds */ public void deleteUser(List excludeUserIds){ + if(CollectionUtils.isEmpty(excludeUserIds)){ + return; + } enterpriseUserMapper.deleteUser(excludeUserIds); } } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java index ef66e197f..98e1759e6 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDAO.java @@ -30,7 +30,7 @@ public class EnterpriseUserRoleDAO { } public Integer deleteRoleInUser(String roleId, DataSourceEnum dataSourceEnum, List excludeUserIds){ - if(StringUtils.isBlank(roleId) || Objects.isNull(dataSourceEnum)){ + if(StringUtils.isBlank(roleId) || Objects.isNull(dataSourceEnum) || CollectionUtils.isEmpty(excludeUserIds)){ return null; } return enterpriseUserRoleMapper.deleteRoleInUser(roleId, dataSourceEnum.getCode(), excludeUserIds); diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml index e65b44286..1498671a2 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml @@ -89,6 +89,6 @@ - update enterprise_user_role set deleted = 1 where role_id != #{roleId} and user_id = #{userId} and type = #{type} + update enterprise_user_role set deleted = 1 where role_id != #{excludeRoleId} and user_id = #{userId} and type = #{type} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java index fa0f5da9c..a42576ff8 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/region/RegionBaseInfoVO.java @@ -37,6 +37,11 @@ public class RegionBaseInfoVO { this.name = name; } + /** + * 转换成树 + * @param regionList + * @return + */ public static RegionBaseInfoVO convertTree(List regionList){ Map> parentMap = regionList.stream().collect(Collectors.groupingBy(k -> k.getParentId())); RegionDO rootRegion = regionList.stream().filter(o -> CommonConstants.ZERO_STR.equals(o.getParentId())).findFirst().get(); @@ -45,6 +50,12 @@ public class RegionBaseInfoVO { return result; } + /** + * 获取子区域 + * @param regionId + * @param parentMap + * @return + */ public static List getSubRegion(String regionId, Map> parentMap){ List resultList = new ArrayList<>(); if(Objects.isNull(parentMap) || StringUtils.isBlank(regionId)){ 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 da2213637..2d049e1f6 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 @@ -169,8 +169,8 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { if(CollectionUtils.isNotEmpty(departmentLists)){ List regionList = regionDAO.getRegionByRegionIds(departmentLists); List regionIds = ListUtils.emptyIfNull(regionList).stream().map(RegionDO::getRegionId).collect(Collectors.toList()); - //判断两个集合是否都是包含关系 - if(!(regionIds.containsAll(departmentLists) && departmentLists.containsAll(regionList))){ + //判断两个集合是否都是包含关系,不包含的情况下 说明组织架构数据不全 重新同步 + if(!(regionIds.containsAll(departmentLists) && departmentLists.containsAll(regionIds))){ Pair, Multimap> regionPair = syncRegion(); regionList = regionPair.getKey(); leaderDeptMap = regionPair.getValue(); @@ -194,6 +194,7 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { enterpriseUserDAO.batchInsertOrUpdate(new ArrayList<>(Arrays.asList(enterpriseUser))); break; case USER_DELETED: + //人员职位删除状态,角色职位删除状态,人员从部门去除 break; default: return; From deace8ecd5577b8734a84efab104388b028e41eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Tue, 13 Jun 2023 15:43:27 +0800 Subject: [PATCH 4/7] =?UTF-8?q?B=E7=AB=AF=20=E9=83=A8=E5=88=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/LineStatusEnum.java | 33 ++++++++ .../cool/store/dao/HyPartnerLineInfoDAO.java | 17 ++++ .../store/mapper/HyPartnerLineInfoMapper.java | 27 +++++++ .../mapper/HyPartnerLineInfoMapper.xml | 47 +++++++++++ .../dto/partner/PartnerBlackListDTO.java | 31 +++++++ .../store/entity/HyPartnerLineInfoDO.java | 6 ++ .../com/cool/store/request/LineRequest.java | 2 +- .../java/com/cool/store/vo/BlackListVO.java | 19 +---- .../cool/store/vo/IntentAreaSettingVO.java | 2 +- .../main/java/com/cool/store/vo/OrgVO.java | 22 +++++ .../main/java/com/cool/store/vo/ZoneVO.java | 33 ++++++++ .../main/java/com/cool/store/vo/orgVO.java | 2 +- .../Service/HyPartnerLineInfoService.java | 27 +++++++ .../impl/HyPartnerLineInfoServiceImpl.java | 80 +++++++++++++++++++ .../cool/store/controller/DeskController.java | 33 ++++---- 15 files changed, 344 insertions(+), 37 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/LineStatusEnum.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerBlackListDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/LineStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/LineStatusEnum.java new file mode 100644 index 000000000..08fec64a1 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/LineStatusEnum.java @@ -0,0 +1,33 @@ +package com.cool.store.enums; + +/** + * @Author suzhuhong + * @Date 2023/6/13 11:45 + * @Version 1.0 + */ +public enum LineStatusEnum { + + PUBLIC_SEAS(0,"公海线索"), + PRIVATE_SEAS(1,"私海线索"), + COOPERATION(2,"合作"), + BLACKLIST(3,"黑名单"), + ; + + private Integer code; + + private String message; + + LineStatusEnum(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-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java index f72326c2d..429e10245 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java @@ -1,5 +1,6 @@ package com.cool.store.dao; +import com.cool.store.dto.partner.PartnerBlackListDTO; import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO; import com.cool.store.dto.partner.StageCountDTO; @@ -54,6 +55,10 @@ public class HyPartnerLineInfoDAO { return hyPartnerLineInfoMapper.selectByPrimaryKeySelective(id); } + public int updateByPrimaryKeySelective(HyPartnerLineInfoDO hyPartnerLineInfoDO){ + return hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO); + } + public Integer getAdventLineCount( String userId, String currentDate){ if (StringUtils.isEmpty(userId)){ @@ -108,4 +113,16 @@ public class HyPartnerLineInfoDAO { } + public PageInfo getBlackList( String keyWord, String intentArea , Integer acceptAdjustType){ + return hyPartnerLineInfoMapper.getBlackList(keyWord,intentArea,acceptAdjustType); + } + + + public Boolean joinAndRemoveBlack( Long lineId, Integer status, String joinReason, String removeReason){ + if (lineId==null){ + return Boolean.FALSE; + } + return hyPartnerLineInfoMapper.joinAndRemoveBlack(lineId,status,joinReason,removeReason); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java index 4c42bdae1..274c09095 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java @@ -1,5 +1,6 @@ package com.cool.store.mapper; +import com.cool.store.dto.partner.PartnerBlackListDTO; import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO; import com.cool.store.dto.partner.StageCountDTO; @@ -105,4 +106,30 @@ public interface HyPartnerLineInfoMapper { * @return */ List getLineListByLineIds(List lineIdList); + + /** + * 查询黑名单列表 + * @param keyWord + * @param intentArea + * @param acceptAdjustType + * @return + */ + PageInfo getBlackList(@Param("keyWord") String keyWord, + @Param("intentArea") String intentArea , + @Param("acceptAdjustType") Integer acceptAdjustType); + + + /** + * 加入/移除 黑名单 + * @param lineId + * @param status + * @param joinReason + * @param removeReason + * @return + */ + Boolean joinAndRemoveBlack(@Param("lineId") Long lineId, + @Param("status") Integer status, + @Param("joinReason") String joinReason, + @Param("removeReason") String removeReason); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index 104c5a8ec..268b8dd2a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -233,6 +233,12 @@ close_user_id = #{record.closeUserId}, + + join_black_reason = #{record.joinBlackReason}, + + + remove_black_reason = #{record.removeBlackReason}, + where id = #{record.id} @@ -336,4 +342,45 @@ + + + + + update hy_partner_line_info + + + line_status = #{status}, + + + join_black_reason = #{joinCause}, + + + remove_black_reason = #{removeReason}, + + + where id = #{lineId} + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerBlackListDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerBlackListDTO.java new file mode 100644 index 000000000..26bfab167 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerBlackListDTO.java @@ -0,0 +1,31 @@ +package com.cool.store.dto.partner; + +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2023/6/13 10:26 + * @Version 1.0 + */ +@Data +public class PartnerBlackListDTO { + + private Long lineId; + + private String partnerId; + + private String mobile; + + private String partnerUserName; + + private Date createTime; + + private String closeUserId; + + private Date closeTime; + + private String joinBlackReason; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineInfoDO.java index 268392b1e..a4069904e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerLineInfoDO.java @@ -71,4 +71,10 @@ public class HyPartnerLineInfoDO implements Serializable { @ApiModelProperty("结束跟进人员ID") private String closeUserId; + + @ApiModelProperty("加入黑名单原因") + private String joinBlackReason; + + @ApiModelProperty("移除黑名单原因") + private String removeBlackReason; } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java index 5551f311c..06f75a1ce 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/LineRequest.java @@ -14,7 +14,7 @@ import java.util.Date; */ @Data @ApiModel -public class LineRequest { +public class LineRequest extends PageInfoRequest{ @ApiModelProperty("关键字") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/BlackListVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/BlackListVO.java index acf68c1b3..6804f4e45 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/BlackListVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/BlackListVO.java @@ -18,15 +18,6 @@ public class BlackListVO { @ApiModelProperty("线索ID") private Long id; - @ApiModelProperty("hy_partner_user_info.partner_id") - private String partnerId; - - @ApiModelProperty("流程阶段:1意向申请审核;2预约面试时间;3加盟资格面试;4分配选址开发经理;5商圈点位评估;6上传店铺租赁信息;7完善加盟签约信息;8支付加盟费用;9签订加盟合同") - private String workflowStage; - - @ApiModelProperty("流程子状态") - private String workflowStatus; - @ApiModelProperty("加盟商用户ID") private String partnerUserId; @@ -54,14 +45,8 @@ public class BlackListVO { @ApiModelProperty("结束人员手机号") private String closeUserPhone; - @ApiModelProperty("结束人员手机号归属地") - private String closeUserPhoneAddress; - - - - - - + @ApiModelProperty("加入黑名单原因") + private String joinBlackReason; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java index 7d0dccc36..f1a61e6ca 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java @@ -19,7 +19,7 @@ public class IntentAreaSettingVO { private String zoneName; - private List orgVOS; + private List orgVOS; private Date updateTime; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java new file mode 100644 index 000000000..d6f96d492 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java @@ -0,0 +1,22 @@ +package com.cool.store.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2023/5/31 14:48 + * @Version 1.0 + */ +@Data +@ApiModel +public class orgVO { + + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("组织机构名称") + private String name; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java new file mode 100644 index 000000000..1196ccf10 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java @@ -0,0 +1,33 @@ +package com.cool.store.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/13 15:27 + * @Version 1.0 + */ +@Data +public class ZoneVO { + + private Long id; + + private String zoneName; + + private String updateTime; + + private String updateUserId; + + private String updateUserName; + + private List orgVos; + + private List openAreaVOS; + + + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/orgVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/orgVO.java index d6f96d492..af2f391d6 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/orgVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/orgVO.java @@ -11,7 +11,7 @@ import lombok.Data; */ @Data @ApiModel -public class orgVO { +public class OrgVO { @ApiModelProperty("id") private Long id; diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java index c3ffcb52b..80f288396 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/HyPartnerLineInfoService.java @@ -1,5 +1,7 @@ package com.cool.store.Service; +import com.cool.store.request.LineRequest; +import com.cool.store.vo.BlackListVO; import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO; import com.cool.store.vo.PartnerLineInfoVO; import com.cool.store.vo.StageCountVO; @@ -63,5 +65,30 @@ public interface HyPartnerLineInfoService { Boolean allocationInvestmentManager(String userId, List lineIdList); + /** + * 黑名单列表 + * @param LineRequest LineRequest + * @return + */ + PageInfo getBlackList(LineRequest LineRequest); + + /** + * 加入或者移除 黑名单 + * @param lineId + * @param status + * @param joinReason + * @return + */ + Boolean joinBlackList( Long lineId, Integer status, String joinReason); + + /** + * 移除黑名单 + * @param lineId + * @param status + * @param removeReason + * @return + */ + Boolean removeBlackList( Long lineId, Integer status, String removeReason); + } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.java index 67580e4f4..ada49db6d 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/Service/impl/HyPartnerLineInfoServiceImpl.java @@ -4,16 +4,20 @@ import cn.hutool.core.date.DateUtil; import com.cool.store.Service.HyPartnerLineInfoService; import com.cool.store.dao.HyPartnerLineInfoDAO; import com.cool.store.dao.HyPartnerUserInfoDAO; +import com.cool.store.dto.partner.PartnerBlackListDTO; import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO; import com.cool.store.dto.partner.StageCountDTO; import com.cool.store.entity.HyPartnerLineInfoDO; import com.cool.store.entity.HyPartnerUserInfoDO; import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.LineStatusEnum; import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.exception.ServiceException; +import com.cool.store.request.LineRequest; import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.StringUtil; +import com.cool.store.vo.BlackListVO; import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO; import com.cool.store.vo.PartnerLineInfoVO; import com.cool.store.vo.StageCountVO; @@ -129,6 +133,82 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { return null; } + @Override + public PageInfo getBlackList(LineRequest LineRequest) { + PageHelper.startPage(LineRequest.getPageNum(),LineRequest.getPageSize()); + PageInfo blackListDTOPageInfo = hyPartnerLineInfoDAO.getBlackList(LineRequest.getKeyWord(), LineRequest.getIntentArea(), LineRequest.getAcceptAdjustType()); + List list = blackListDTOPageInfo.getList(); + List result = new ArrayList<>(); + list.stream().forEach(x->{ + BlackListVO blackListVO = convertPartnerBlackListDTOToVo(x); + //todo su 员工名称手机号 手机号归属地 + result.add(blackListVO); + }); + blackListDTOPageInfo.setList(result); + return blackListDTOPageInfo; + } + + @Override + public Boolean joinBlackList(Long lineId, Integer status, String joinReason) { + if (lineId==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + //加入黑名单 阶段回到第一步待提交状态 + HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO(); + hyPartnerLineInfoDO.setId(lineId); + hyPartnerLineInfoDO.setLineStatus(status); + hyPartnerLineInfoDO.setJoinBlackReason(joinReason); + hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode()); + hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode()); + + hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); + return Boolean.TRUE; + } + + @Override + public Boolean removeBlackList(Long lineId, Integer status, String removeReason) { + //移除黑名单 黑名单线索置为删除状态 新增一条线索 + if (lineId==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO(); + hyPartnerLineInfoDO.setId(lineId); + hyPartnerLineInfoDO.setLineStatus(status); + hyPartnerLineInfoDO.setRemoveBlackReason(removeReason); + hyPartnerLineInfoDO.setDeleted(Boolean.TRUE); + hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); + + + HyPartnerLineInfoDO newHyPartnerLineInfoDO = new HyPartnerLineInfoDO(); + hyPartnerLineInfoDO.setPartnerId(hyPartnerLineInfoDO.getPartnerId()); + hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode()); + hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode()); + hyPartnerLineInfoDO.setLineStatus(0); + hyPartnerLineInfoDAO.batchInsert(Arrays.asList(newHyPartnerLineInfoDO)); + return Boolean.TRUE; + } + + + /** + * convertPartnerBlackListDTOToVo + * @param partnerBlackListDTO + * @return + */ + public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO){ + BlackListVO blackListVO = new BlackListVO(); + blackListVO.setId(partnerBlackListDTO.getLineId()); + blackListVO.setPartnerUserId(partnerBlackListDTO.getPartnerId()); + blackListVO.setPartnerUserName(partnerBlackListDTO.getPartnerUserName()); + blackListVO.setPartnerUserPhone(partnerBlackListDTO.getMobile()); + blackListVO.setCreateTime(partnerBlackListDTO.getCreateTime()); + blackListVO.setCloseTime(partnerBlackListDTO.getCloseTime()); + blackListVO.setJoinBlackReason(partnerBlackListDTO.getJoinBlackReason()); + blackListVO.setCloseUserId(partnerBlackListDTO.getCloseUserId()); + return blackListVO; + } + + + /** * convertPartnerLineInfoAndBaseInfoDTOToVo 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 db46b3dd1..5221de357 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 @@ -4,6 +4,7 @@ import com.cool.store.Service.DeskService; import com.cool.store.Service.HyPartnerIntentInfoService; import com.cool.store.Service.HyPartnerInterviewPlanService; import com.cool.store.Service.HyPartnerLineInfoService; +import com.cool.store.enums.LineStatusEnum; import com.cool.store.request.*; import com.cool.store.response.ResponseResult; import com.cool.store.vo.*; @@ -200,7 +201,7 @@ public class DeskController { @ApiOperation("黑名单列表") public ResponseResult> queryBlackList(@RequestBody LineRequest LineRequest){ - return ResponseResult.success(); + return ResponseResult.success(hyPartnerLineInfoService.getBlackList(LineRequest)); } @@ -208,16 +209,14 @@ public class DeskController { @ApiOperation("移出黑名单") public ResponseResult removeBlackList(@RequestBody LineBlackListRequest lineBlackListRequest){ - - return ResponseResult.success(); + return ResponseResult.success(hyPartnerLineInfoService.removeBlackList(lineBlackListRequest.getLineId(), LineStatusEnum.PUBLIC_SEAS.getCode(),lineBlackListRequest.getCause())); } @PostMapping(path = "/joinBlackList") @ApiOperation("加入黑名单") public ResponseResult joinBlackList(@RequestBody LineBlackListRequest lineBlackListRequest){ - - return ResponseResult.success(); + return ResponseResult.success(hyPartnerLineInfoService.joinBlackList(lineBlackListRequest.getLineId(),LineStatusEnum.BLACKLIST.getCode(),lineBlackListRequest.getCause())); } @@ -244,15 +243,17 @@ public class DeskController { return ResponseResult.success(); } - @GetMapping(path = "/queryPartnerIntentApplyInfo") - @ApiOperation("查看意向审核信息") - @ApiImplicitParams({ - @ApiImplicitParam(name = "lineId", value = "线索ID", required = false), - }) - public ResponseResult queryPartnerIntentApplyInfo(@RequestParam(value = "lineId",required = false)Long lineId){ - return ResponseResult.success(); - } + // TODO: 2023/6/13 添加根据线索查询店员接口列表接口 +// @GetMapping(path = "/queryPartnerIntentApplyInfo") +// @ApiOperation("查看意向审核信息") +// @ApiImplicitParams({ +// @ApiImplicitParam(name = "lineId", value = "线索ID", required = false), +// }) +// public ResponseResult queryPartnerIntentApplyInfo(@RequestParam(value = "lineId",required = false)Long lineId){ +// +// return ResponseResult.success(); +// } @@ -293,14 +294,12 @@ public class DeskController { return ResponseResult.success(); } - - @GetMapping(path = "/getZoneList") @ApiOperation("战区列表") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "意向区域-intent 开发区域=dev", required = false), }) - public ResponseResult> getZoneList(@RequestParam(value = "type",required = false)String type, + public ResponseResult> getZoneList(@RequestParam(value = "type",required = false)String type, @RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ return ResponseResult.success(); @@ -312,7 +311,7 @@ public class DeskController { @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "意向区域-intent 开发区域=dev", required = false), }) - public ResponseResult> deletedZoneList(@RequestParam(value = "id",required = false)Long id){ + public ResponseResult deletedZoneList(@RequestParam(value = "id",required = false)Long id){ return ResponseResult.success(); } From 1558a86992af7ca29c97bdd79f505c349eb9ad5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Tue, 13 Jun 2023 15:45:18 +0800 Subject: [PATCH 5/7] =?UTF-8?q?B=E7=AB=AF=20=E9=83=A8=E5=88=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A31?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cool/store/vo/IntentAreaSettingVO.java | 2 +- .../java/com/cool/store/vo/{orgVO.java => OrganizationVO.java} | 2 +- .../src/main/java/com/cool/store/vo/ZoneVO.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename coolstore-partner-model/src/main/java/com/cool/store/vo/{orgVO.java => OrganizationVO.java} (92%) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java index f1a61e6ca..47f17fd2b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/IntentAreaSettingVO.java @@ -19,7 +19,7 @@ public class IntentAreaSettingVO { private String zoneName; - private List orgVOS; + private List orgVOS; private Date updateTime; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/orgVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/OrganizationVO.java similarity index 92% rename from coolstore-partner-model/src/main/java/com/cool/store/vo/orgVO.java rename to coolstore-partner-model/src/main/java/com/cool/store/vo/OrganizationVO.java index af2f391d6..bb5e727a6 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/orgVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/OrganizationVO.java @@ -11,7 +11,7 @@ import lombok.Data; */ @Data @ApiModel -public class OrgVO { +public class OrganizationVO { @ApiModelProperty("id") private Long id; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java index 1196ccf10..c683e7986 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/ZoneVO.java @@ -22,7 +22,7 @@ public class ZoneVO { private String updateUserName; - private List orgVos; + private List orgVos; private List openAreaVOS; From 972407e9b07e8bfd5510f2fff097b6b551da0515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Tue, 13 Jun 2023 16:04:25 +0800 Subject: [PATCH 6/7] =?UTF-8?q?B=E7=AB=AF=20=E9=83=A8=E5=88=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A31?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/cool/store/vo/OrgVO.java | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java deleted file mode 100644 index d6f96d492..000000000 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/OrgVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.cool.store.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * @Author suzhuhong - * @Date 2023/5/31 14:48 - * @Version 1.0 - */ -@Data -@ApiModel -public class orgVO { - - @ApiModelProperty("id") - private Long id; - @ApiModelProperty("组织机构名称") - private String name; - - -} From 202d3ab8ba56f6737030f61d374b7d953268edee Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Tue, 13 Jun 2023 18:52:39 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=9E=B6=E6=9E=84?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/controller/RegionController.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.java index 9f09ac40e..436ca5c64 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/RegionController.java @@ -10,6 +10,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * @author zhangchenbiao @@ -27,8 +30,9 @@ public class RegionController { private RegionService regionService; @GetMapping("/getRegionList") - public ResponseResult getRegionBaseInfoList(){ - return ResponseResult.success(regionService.getRegionBaseInfoList()); + public ResponseResult> getRegionBaseInfoList(){ + List resultList = new ArrayList<>(Arrays.asList(regionService.getRegionBaseInfoList())); + return ResponseResult.success(resultList); }