From 6dc00c8f54bba2bc6ddac05e4b07b1fad553d51b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 28 Jun 2023 15:08:24 +0800 Subject: [PATCH 01/28] userInfo --- .../cool/store/enums/WorkflowStageEnum.java | 2 +- .../service/HyPartnerLineInfoService.java | 3 ++- .../impl/EnterpriseUserServiceImpl.java | 3 +++ .../impl/HyPartnerLineInfoServiceImpl.java | 24 ++++++++++--------- .../cool/store/controller/DeskController.java | 4 ++-- 5 files changed, 21 insertions(+), 15 deletions(-) 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 index 8657255a8..9e2ba4d54 100644 --- 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 @@ -36,7 +36,7 @@ public enum WorkflowStageEnum { public static final HashMap getWorkflowStageMap(){ HashMap result = new HashMap<>(); result.put(INTENT.getCode(),WorkflowStatusEnum.INTENT_3.getCode()); - result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_7.getCode()); + result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_8.getCode()); result.put(INTERVIEW.getCode(),WorkflowStatusEnum.INTERVIEW_7.getCode()); return result; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java index c4ccf9195..c1fd5af9a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java @@ -6,6 +6,7 @@ import com.cool.store.exception.ApiException; import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.LineRequest; import com.cool.store.request.PrivateSeaLineListRequest; +import com.cool.store.request.TransferInvestmentManagerRequest; import com.cool.store.vo.*; import com.cool.store.vo.interview.InterviewVO; import com.github.pagehelper.PageInfo; @@ -57,7 +58,7 @@ public interface HyPartnerLineInfoService { * @param lineId * @return */ - Boolean transferInvestmentManager(LoginUserInfo user,String userId,String userName,Long lineId); + Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request) throws ApiException; /** * 分配招商经理 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java index 8825b0786..3d65c1dd0 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseUserServiceImpl.java @@ -83,6 +83,9 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService { if (CommonConstants.TRANSFER.equals(type)){ enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(list), keyword, null); } + if (CollectionUtils.isEmpty(enterpriseUserDOS)){ + enterpriseUserDOS.add(userInfo); + } return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index bea44f05a..a6b1bd038 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -14,10 +14,7 @@ import com.cool.store.entity.*; import com.cool.store.enums.*; import com.cool.store.exception.ApiException; import com.cool.store.exception.ServiceException; -import com.cool.store.request.CloseFollowRequest; -import com.cool.store.request.LineRequest; -import com.cool.store.request.PrivateSeaLineListRequest; -import com.cool.store.request.QueryByInterviewPlanIdReq; +import com.cool.store.request.*; import com.cool.store.service.*; import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.RedisUtilPool; @@ -137,21 +134,26 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } @Override - public Boolean transferInvestmentManager(LoginUserInfo user,String userId,String userName, Long lineId) { - if (StringUtil.isBlank(userId)||lineId==null){ + public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request) throws ApiException { + if (StringUtil.isBlank(request.getUserId())||request.getLineId()==null){ throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } - HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); - hyPartnerLineInfoDAO.updateInvestmentManager(userId, Arrays.asList(lineId)); + HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(request.getLineId()); + hyPartnerLineInfoDAO.updateInvestmentManager(request.getUserId(), Arrays.asList(request.getLineId())); List userIdList = new ArrayList<>(); - userIdList.add(userId); + userIdList.add(request.getUserId()); if (StringUtils.isNotEmpty(hyPartnerLineInfoDO.getInvestmentManager())){ userIdList.add(hyPartnerLineInfoDO.getInvestmentManager()); } List userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList); Map userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data)); + //更新面试官 + if (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())){ + workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),request); + } + //添加日志 LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), hyPartnerLineInfoDO.getId(), user.getUserId(), user.getName(), OperateTypeEnum.TRANSFER_INVESTMENT_MANAGER, @@ -160,8 +162,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { TransferInvestmentManagerLogDTO logDTO = TransferInvestmentManagerLogDTO.builder().operateUserId(user.getUserId()).operateUsername(user.getName()) .beforeInvestmentManagerUsername(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getName()) .beforeInvestmentManagerMobile(userDOMap.getOrDefault(hyPartnerLineInfoDO.getInvestmentManager(),new EnterpriseUserDO()).getMobile()) - .afterInvestmentManagerMobile(userDOMap.getOrDefault(userId,new EnterpriseUserDO()).getMobile()) - .afterInvestmentManagerUsername(userDOMap.getOrDefault(userId,new EnterpriseUserDO()).getName()) + .afterInvestmentManagerMobile(userDOMap.getOrDefault(request.getUserId(),new EnterpriseUserDO()).getMobile()) + .afterInvestmentManagerUsername(userDOMap.getOrDefault(request.getUserId(),new EnterpriseUserDO()).getName()) .mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build(); lineLogInfo.setData(logDTO); hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo); 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 76fd03581..78be148b6 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 @@ -200,8 +200,8 @@ public class DeskController { @PostMapping(path = "/transferInvestmentManager") @ApiOperation("转让招商经理") - public ResponseResult transferInvestmentManager(@RequestBody TransferInvestmentManagerRequest request){ - return ResponseResult.success(hyPartnerLineInfoService.transferInvestmentManager(CurrentUserHolder.getUser(),request.getUserId(),request.getUserName(),request.getLineId())); + public ResponseResult transferInvestmentManager(@RequestBody TransferInvestmentManagerRequest request) throws ApiException { + return ResponseResult.success(hyPartnerLineInfoService.transferInvestmentManager(CurrentUserHolder.getUser(),request )); } From a76b35edec13b58082a8587046c04e63db9c3fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 28 Jun 2023 15:09:18 +0800 Subject: [PATCH 02/28] userInfo --- .../com/cool/store/service/impl/PartnerUserInfoServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java index 09af1c1b3..a08946e37 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java @@ -82,7 +82,7 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService { inviteCodeDetailVO.setInviteCode(hyPartnerUserInfoDO.getInviteCode()); inviteCodeDetailVO.setStoreName(hyPartnerUserInfoDO.getRecommendPartnerName()); inviteCodeDetailVO.setPartnerPhone(hyPartnerUserInfoDO.getRecommendPartnerMobile()); - inviteCodeDetailVO.setStoreName(hyPartnerUserInfoDO.getShopName()); + inviteCodeDetailVO.setPartnerName(hyPartnerUserInfoDO.getShopName()); return inviteCodeDetailVO; } From ebdc60de1a0d0bcd024186c4edd8c1d54f97698b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Wed, 28 Jun 2023 15:13:19 +0800 Subject: [PATCH 03/28] =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/enums/OperateLogFieldValueEnum.java | 13 ++- .../com/cool/store/enums/OperateTypeEnum.java | 11 ++- .../store/dto/log/CreateQualifyVerifyDTO.java | 16 ++++ .../cool/store/dto/log/EntrustOthersDTO.java | 18 ++++ .../com/cool/store/dto/log/LogBasicDTO.java | 22 +++++ .../store/dto/log/ModifyInterviewTimeDTO.java | 17 ++++ .../cool/store/dto/log/ReInterviewDTO.java | 16 ++++ .../store/dto/log/RejectInterviewDTO.java | 21 +++++ .../request/GetLastUpdateTimeInfoReq.java | 15 ++++ .../cool/store/service/InterviewService.java | 2 + .../com/cool/store/service/LogService.java | 16 ++++ .../store/service/impl/FlowServiceImpl.java | 18 +++- .../service/impl/InterviewServiceImpl.java | 72 ++++++++++++++-- .../store/service/impl/LogServiceImpl.java | 83 +++++++++++++++++++ .../workflow/InterviewWorkFlowService.java | 19 ++++- .../store/controller/InterviewController.java | 6 ++ 16 files changed, 346 insertions(+), 19 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/log/CreateQualifyVerifyDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/log/EntrustOthersDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogBasicDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/log/ModifyInterviewTimeDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/log/ReInterviewDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/log/RejectInterviewDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/GetLastUpdateTimeInfoReq.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/LogService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/LogServiceImpl.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java index 443f4622d..c6530fb85 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java @@ -12,7 +12,7 @@ public enum OperateLogFieldValueEnum { ALLOCATION_USERNAME("allocationUsername","分配人姓名"), MOBILE("mobile","手机号"), OPERATE_TIME("operateTime","操作时间"), - OPERATE_USER_ID("operateUserId","操作人姓名"), + OPERATE_USER_ID("operateUserId","操作人id"), OPERATE_USER_NAME("operateUsername","操作人姓名"), REASON("reason","原因"), PASS_REASON("passReason","通过原因"), @@ -23,6 +23,17 @@ public enum OperateLogFieldValueEnum { BEFORE_INVESTMENT_MANAGER_MOBILE("beforeInvestmentManagerMobile", "转让前的招商经理手机号"), AFTER_INVESTMENT_MANAGER_USERNAME("afterInvestmentManagerUsername", "转让后的招商经理姓名"), AFTER_INVESTMENT_MANAGER_MOBILE("afterInvestmentManagerMobile", "转让后的招商经理手机好"), + + BEFORE_INTERVIEW_TIME("beforeInterviewTime", "修改前的面试时间"), + AFTER_INTERVIEW_TIME("afterInterviewTime", "修改后的面试时间"), + + BEFORE_INTERVIEWR_NAME("beforeInterviewrName", "委托前的面试官姓名"), + AFTER_INTERVIEWR_NAME("afterInterviewrName", "委托后的面试官姓名"), + BEFORE_INTERVIEWR_MOBILE("beforeInterviewrMobile", "委托前的面试官手机号"), + AFTER_INTERVIEWR_MOBILE("afterInterviewrMobile", "委托后的面试官手机号"), + + SUMMARY("summary", "面试总结"), + QUALI_VERIFY_CONTENT("qualiVerifyContent", "资质审核内容"), ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java index c402b999c..16b374556 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java @@ -17,8 +17,17 @@ public enum OperateTypeEnum { ADD_BLACKLIST("add_blacklist", "加入黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)), REMOVE_BLACKLIST("add_blacklist", "移除黑名单", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)), CLOSE_FOLLOW("close_follow", "结束跟进", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON, REJECT_REAL_REASON, CERTIFY_FILE)), - TRANSFER_INVESTMENT_MANAGER("transfer_investment_manager", "转让招商经理", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INVESTMENT_MANAGER_USERNAME, BEFORE_INVESTMENT_MANAGER_MOBILE, AFTER_INVESTMENT_MANAGER_USERNAME, AFTER_INVESTMENT_MANAGER_MOBILE)); + TRANSFER_INVESTMENT_MANAGER("transfer_investment_manager", "转让招商经理", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INVESTMENT_MANAGER_USERNAME, BEFORE_INVESTMENT_MANAGER_MOBILE, AFTER_INVESTMENT_MANAGER_USERNAME, AFTER_INVESTMENT_MANAGER_MOBILE)), + INTERVIEW_APPOINTMENT("interview_appointment", "预约面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), + MODIFY_INTERVIEW_TIME("modify_interview_time", "修改面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INTERVIEW_TIME, AFTER_INTERVIEW_TIME)), + ENTRUST_OTHERS("entrust_others", "委托他人", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, BEFORE_INTERVIEWR_NAME, AFTER_INTERVIEWR_NAME, BEFORE_INTERVIEWR_MOBILE, AFTER_INTERVIEWR_MOBILE)), + FINISH_INTERVIEW("finish_interview", "合作资格面试-结束面试", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), + + REINTERVIEW("reinterview", "合作资格面试-重新预约面试", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,REJECT_REAL_REASON, CERTIFY_FILE)), + + REJECT_INTERVIEW("reject_interview", "合作资格面试-拒绝并结束跟进", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON,REJECT_REAL_REASON, CERTIFY_FILE)), + CREATE_QUALIFYVERIFY("create_qualifyverify", "合作资格面试-创建资格审核", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,SUMMARY,QUALI_VERIFY_CONTENT)), ; private String code; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/CreateQualifyVerifyDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/CreateQualifyVerifyDTO.java new file mode 100644 index 000000000..183120a54 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/CreateQualifyVerifyDTO.java @@ -0,0 +1,16 @@ +package com.cool.store.dto.log; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Author: young.yu + * @Date: 2023-06-28 00:54 + * @Description: + */ +@Data +@SuperBuilder +public class CreateQualifyVerifyDTO extends LogBasicDTO{ + private String summary; + private String qualiVerifyContent; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/EntrustOthersDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/EntrustOthersDTO.java new file mode 100644 index 000000000..ef66954fc --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/EntrustOthersDTO.java @@ -0,0 +1,18 @@ +package com.cool.store.dto.log; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Author: young.yu + * @Date: 2023-06-28 00:31 + * @Description: + */ +@Data +@SuperBuilder +public class EntrustOthersDTO extends LogBasicDTO{ + private String beforeInterviwerName; + private String beforeInterviwerMobile; + private String afterInterviwerName; + private String afterInterviwerMobile; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogBasicDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogBasicDTO.java new file mode 100644 index 000000000..e40242f56 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogBasicDTO.java @@ -0,0 +1,22 @@ +package com.cool.store.dto.log; + +import lombok.Builder; +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Author: young.yu + * @Date: 2023-06-27 23:00 + * @Description: + */ +@Data +@SuperBuilder +public class LogBasicDTO { + private String operateUsername; + + private String operateUserId; + + private String mobile; + + private String operateTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/ModifyInterviewTimeDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/ModifyInterviewTimeDTO.java new file mode 100644 index 000000000..c78613219 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/ModifyInterviewTimeDTO.java @@ -0,0 +1,17 @@ +package com.cool.store.dto.log; + +import lombok.Builder; +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Author: young.yu + * @Date: 2023-06-28 00:23 + * @Description: + */ +@Data +@SuperBuilder +public class ModifyInterviewTimeDTO extends LogBasicDTO{ + private String beforeInterviewTime; + private String afterInterviewTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/ReInterviewDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/ReInterviewDTO.java new file mode 100644 index 000000000..71d560ec0 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/ReInterviewDTO.java @@ -0,0 +1,16 @@ +package com.cool.store.dto.log; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Author: young.yu + * @Date: 2023-06-28 00:43 + * @Description: + */ +@Data +@SuperBuilder +public class ReInterviewDTO extends LogBasicDTO{ + private String rejectRealReason; + private String certifyFile; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/RejectInterviewDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/RejectInterviewDTO.java new file mode 100644 index 000000000..bbea1d415 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/RejectInterviewDTO.java @@ -0,0 +1,21 @@ +package com.cool.store.dto.log; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @Author: young.yu + * @Date: 2023-06-28 00:43 + * @Description: + */ +@Data +@SuperBuilder +public class RejectInterviewDTO extends LogBasicDTO{ + private List certifyFile; + + private String rejectPublicReason; + + private String rejectRealReason; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/GetLastUpdateTimeInfoReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/GetLastUpdateTimeInfoReq.java new file mode 100644 index 000000000..3b83b3b8a --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/GetLastUpdateTimeInfoReq.java @@ -0,0 +1,15 @@ +package com.cool.store.request; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +/** + * @Author: young.yu + * @Date: 2023-06-28 15:05 + * @Description: + */ +@Data +@ApiModel +public class GetLastUpdateTimeInfoReq { + @ApiModelProperty("线索id") + private String partnerLineId; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java index 461508e4f..f0fe7af35 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java @@ -68,4 +68,6 @@ public interface InterviewService { public String getInterviewerByPartner(String partnerId,String lineId)throws ApiException; public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile); + + void getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/LogService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/LogService.java new file mode 100644 index 000000000..1b04f838b --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/LogService.java @@ -0,0 +1,16 @@ +package com.cool.store.service; + +import com.cool.store.context.LoginUserInfo; +import com.cool.store.enums.OperateTypeEnum; +import com.cool.store.vo.PartnerUserInfoVO; + +/** + * @Author: young.yu + * @Date: 2023-06-28 00:10 + * @Description: + */ +public interface LogService { + + public void recordBizLog(LoginUserInfo operator, Long lineId, OperateTypeEnum operateTypeEnum, Object logData); + public void recordPartnerBizLog(PartnerUserInfoVO operator , Long lineId, OperateTypeEnum operateTypeEnum, Object logData); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java index 6cd828a13..11a9ef499 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java @@ -6,12 +6,17 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.serializer.SerializerFeature; +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.HyInterviewDAO; +import com.cool.store.dto.log.CreateQualifyVerifyDTO; +import com.cool.store.dto.log.ReInterviewDTO; import com.cool.store.dto.mdm.AccessTokenDTO; import com.cool.store.dto.response.MDMResultDTO; import com.cool.store.entity.*; import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.OperateTypeEnum; import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.exception.ApiException; import com.cool.store.exception.ServiceException; @@ -27,10 +32,8 @@ import com.cool.store.request.RpcGetMdmTokenReq; import com.cool.store.request.data.flow.KeyText; import com.cool.store.request.data.flow.SkrRelshipProve; import com.cool.store.service.FlowService; -import com.cool.store.utils.PDFUtils; -import com.cool.store.utils.PassLetterUtils; -import com.cool.store.utils.RedisUtilPool; -import com.cool.store.utils.RestTemplateUtil; +import com.cool.store.service.LogService; +import com.cool.store.utils.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -90,6 +93,8 @@ public class FlowServiceImpl implements FlowService { @Autowired private HyInterviewDAO interviewDAO; + @Autowired + private LogService logService; @Override @Transactional public void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException, IOException { @@ -198,6 +203,11 @@ public class FlowServiceImpl implements FlowService { hyPartnerLineInfoDO.setDevelopmentDirector(request.getDevtDirectorId()); hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } + //记录日志 + LoginUserInfo operator = CurrentUserHolder.getUser(); + CreateQualifyVerifyDTO log = CreateQualifyVerifyDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + .summary(request.getSummary()).qualiVerifyContent(JSON.toJSONString(partnerCertificationInfoDO)).build(); + logService.recordBizLog(operator,hyPartnerInterviewDO.getPartnerLineId(), OperateTypeEnum.CREATE_QUALIFYVERIFY,log); } @Override diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java index 1ffc45c5e..c1b60c0c9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java @@ -6,8 +6,20 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.context.LoginUserInfo; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.HyInterviewDAO; -import com.cool.store.dto.calendar.*; +import com.cool.store.dao.HyPartnerTaskInfoLogDAO; +import com.cool.store.dto.calendar.CreateCalendarEventDTO; +import com.cool.store.dto.calendar.DeleteCalendarEventDTO; +import com.cool.store.dto.calendar.UserCalendarsEventDTO; +import com.cool.store.dto.calendar.UserFreeBusyInfoDTO; +import com.cool.store.dto.log.EntrustOthersDTO; +import com.cool.store.dto.log.LogBasicDTO; +import com.cool.store.dto.log.ModifyInterviewTimeDTO; +import com.cool.store.dto.log.ReInterviewDTO; import com.cool.store.dto.message.SendCardMessageDTO; import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.entity.*; @@ -15,19 +27,18 @@ import com.cool.store.enums.*; import com.cool.store.exception.ApiException; import com.cool.store.exception.ServiceException; import com.cool.store.http.ISVHttpRequest; -import com.cool.store.mapper.HyPartnerBaseInfoMapper; -import com.cool.store.mapper.HyPartnerInterviewMapper; -import com.cool.store.mapper.HyPartnerInterviewPlanMapper; -import com.cool.store.mapper.HyPartnerLineInfoMapper; +import com.cool.store.mapper.*; import com.cool.store.request.*; import com.cool.store.service.EnterpriseUserService; -import com.cool.store.service.HyPartnerLineInfoService; import com.cool.store.service.InterviewService; +import com.cool.store.service.LogService; import com.cool.store.service.SmsService; +import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.StringUtil; import com.cool.store.utils.TRTCUtils; import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.EnterpriseUserBaseInfoVO; +import com.cool.store.vo.PartnerUserInfoVO; import com.cool.store.vo.interview.CreateAppointmentVO; import com.cool.store.vo.interview.InterviewVO; import lombok.extern.slf4j.Slf4j; @@ -85,12 +96,17 @@ public class InterviewServiceImpl implements InterviewService { @Autowired private SmsService smsService; - @Autowired - private HyPartnerLineInfoService hyPartnerLineInfoService; - @Autowired private HyInterviewDAO interviewDAO; + @Autowired + private LogService logService; + + @Autowired + private EnterpriseUserDAO enterpriseUserDAO; + + @Autowired + private HyPartnerTaskInfoLogMapper hyPartnerTaskInfoLogMapper; @Override public List getInterviewList(GetInterviewListReq request) { List interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request); @@ -188,6 +204,16 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerInterviewDO.setUpdateTime(new Date()); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); + //记录日志 + LoginUserInfo operator = CurrentUserHolder.getUser(); + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoById(request.getNewInterviewerId()); + EntrustOthersDTO log = EntrustOthersDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()) + .operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + .beforeInterviwerMobile(interviewInfo.getInterviewerMobile()) + .beforeInterviwerName(interviewInfo.getInterviewerName()) + .afterInterviwerMobile(enterpriseUserDO.getMobile()) + .afterInterviwerName(enterpriseUserDO.getName()).build(); + logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.ENTRUST_OTHERS,log); } /** @@ -248,6 +274,13 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerInterviewDO.setInterviewer(interviewInfo.getInterviewerId()); hyPartnerInterviewDO.setUpdateTime(new Date()); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); + + //记录日志 + PartnerUserInfoVO operator = PartnerUserHolder.getUser(); + ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()) + .operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + .beforeInterviewTime(interviewInfo.getStartTime()).afterInterviewTime(request.getNewStartBookingTime()).build(); + logService.recordPartnerBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.MODIFY_INTERVIEW_TIME,log); } @Override @@ -273,6 +306,11 @@ public class InterviewServiceImpl implements InterviewService { // hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_4.getCode())); hyPartnerInterviewDO.setUpdateTime(now); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); + + //记录日志 + LoginUserInfo operator = CurrentUserHolder.getUser(); + LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build(); + logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.FINISH_INTERVIEW,log); } /** @@ -419,6 +457,12 @@ public class InterviewServiceImpl implements InterviewService { sendCardMessageDTO.setTitle("面试预约申请"); sendCardMessageDTO.setContent(generateFeiShuInterviewMsg(interviewVO.getPartnerName(), interviewVO.getPartnerMobile(), interviewVO.getStartTime())); isvHttpRequest.sendFeiShuCardMessage(sendCardMessageDTO); + + //记录日志 + PartnerUserInfoVO operator = PartnerUserHolder.getUser(); + LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build(); + logService.recordPartnerBizLog(operator,interviewVO.getPartnerLineId(),OperateTypeEnum.INTERVIEW_APPOINTMENT,log); + return vo; } @@ -501,6 +545,11 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode()); hyPartnerLineDO.setUpdateTime(new Date()); hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); + //记录日志 + LoginUserInfo operator = CurrentUserHolder.getUser(); + ReInterviewDTO log = ReInterviewDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + .rejectRealReason(request.getReason()).certifyFile(request.getCertifyFile()).build(); + logService.recordBizLog(operator,interviewVO.getPartnerLineId(),OperateTypeEnum.REINTERVIEW,log); } // @Override @@ -582,4 +631,9 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); } + @Override + public void getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException { + + } + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LogServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LogServiceImpl.java new file mode 100644 index 000000000..a493d8822 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LogServiceImpl.java @@ -0,0 +1,83 @@ +package com.cool.store.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dao.HyPartnerTaskInfoLogDAO; +import com.cool.store.dto.log.LineLogInfo; +import com.cool.store.dto.log.LogBasicDTO; +import com.cool.store.entity.HyPartnerLineInfoDO; +import com.cool.store.enums.OperateTypeEnum; +import com.cool.store.enums.WorkflowStageEnum; +import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.mapper.HyPartnerLineInfoMapper; +import com.cool.store.service.LogService; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.utils.Md5Utils; +import com.cool.store.vo.PartnerUserInfoVO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @Author: young.yu + * @Date: 2023-06-28 00:10 + * @Description: + */ +@Service +public class LogServiceImpl implements LogService { + private static final Logger LOG = LoggerFactory.getLogger(Md5Utils.class); + + @Autowired + private HyPartnerLineInfoMapper partnerLineInfoMapper; + @Autowired + private HyPartnerTaskInfoLogDAO hyPartnerTaskInfoLogDAO; + + @Override + @Async + public void recordBizLog(LoginUserInfo operator,Long lineId,OperateTypeEnum operateTypeEnum,Object logData){ + try { + List lineInfos = partnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(lineId)); + if (lineInfos == null || lineInfos.size() == 0) { + return; + } + HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfos.get(0); + LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), lineId, operator.getUserId(), + operator.getName(), operateTypeEnum, + WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()), + hyPartnerLineInfoDO.getWorkflowStatus(), ""); + lineLogInfo.setData(logData); + hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo); + int i =1; + }catch (Exception e){ + LOG.error("recordBizLog error",e); + e.printStackTrace(); + } + } + + @Override + @Async + public void recordPartnerBizLog(PartnerUserInfoVO operator, Long lineId, OperateTypeEnum operateTypeEnum, Object logData){ + try { + List lineInfos = partnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(lineId)); + if (lineInfos == null || lineInfos.size() == 0) { + return; + } + HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfos.get(0); + LineLogInfo lineLogInfo = new LineLogInfo(hyPartnerLineInfoDO.getPartnerId(), lineId, operator.getPartnerId(), + operator.getUsername(), operateTypeEnum, + WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()), + hyPartnerLineInfoDO.getWorkflowStatus(), ""); + lineLogInfo.setData(logData); + hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo); + }catch (Exception e){ + LOG.error("recordBizLog error",e); + e.printStackTrace(); + } + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java index 80d8d3c8d..b8b3258b1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java @@ -1,14 +1,15 @@ package com.cool.store.service.impl.workflow; import cn.hutool.core.date.DateUtil; +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.context.LoginUserInfo; import com.cool.store.dto.calendar.CreateCalendarEventDTO; import com.cool.store.dto.calendar.DeleteCalendarEventDTO; import com.cool.store.dto.calendar.UserCalendarsEventDTO; +import com.cool.store.dto.log.ReInterviewDTO; +import com.cool.store.dto.log.RejectInterviewDTO; import com.cool.store.entity.HyPartnerInterviewDO; -import com.cool.store.enums.ErrorCodeEnum; -import com.cool.store.enums.RoomStatus; -import com.cool.store.enums.WorkflowStageEnum; -import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.enums.*; import com.cool.store.exception.ApiException; import com.cool.store.exception.ServiceException; import com.cool.store.http.ISVHttpRequest; @@ -18,6 +19,8 @@ import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.EntrustOthersReq; import com.cool.store.request.TransferInvestmentManagerRequest; import com.cool.store.service.InterviewService; +import com.cool.store.service.LogService; +import com.cool.store.utils.CoolDateUtils; import com.cool.store.vo.interview.InterviewVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -49,6 +52,9 @@ public class InterviewWorkFlowService extends WorkFlowBaseService { @Autowired private ISVHttpRequest isvHttpRequest; + + @Autowired + private LogService logService; @Override public WorkflowStageEnum getWorkFlowStage() { return WorkflowStageEnum.RESERVATION; @@ -64,6 +70,11 @@ public class InterviewWorkFlowService extends WorkFlowBaseService { } HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0); interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null); + //记录日志 + LoginUserInfo operator = CurrentUserHolder.getUser(); + RejectInterviewDTO log = RejectInterviewDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + .rejectRealReason(request.getRejectRealReason()).rejectPublicReason(request.getRejectPublicReason()).certifyFile(request.getCertifyFile()).build(); + logService.recordBizLog(operator,request.getLineId(), OperateTypeEnum.REJECT_INTERVIEW,log); } @Override diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java index b89b78d3f..22dfa211c 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java @@ -94,4 +94,10 @@ public class InterviewController { // interviewService.rejectInterview(request); // return ResponseResult.success(); // } + @PostMapping("/getLastUpdateTimeInfo") + @ApiOperation("获取面试最新更新信息") + public ResponseResult getLastUpdateTimeInfo(@RequestBody GetLastUpdateTimeInfoReq request) throws ApiException { + interviewService.getLastUpdateTimeInfo(request); + return ResponseResult.success(); + } } From 61731745804bf68c985e2e67464c508655f2ac04 Mon Sep 17 00:00:00 2001 From: pserimal Date: Wed, 28 Jun 2023 16:04:17 +0800 Subject: [PATCH 04/28] =?UTF-8?q?=E8=8E=B7=E5=8F=96MDM=E7=9C=81=E5=B8=82?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/constants/RedisConstant.java | 14 +++++ .../com/cool/store/mapper/MdmAreaMapper.java | 20 +++++++ .../main/resources/mapper/MdmAreaMapper.xml | 18 ++++++ .../com/cool/store/dto/mdm/AreaSonDTO.java | 12 ++++ .../{ApprovalRegionDO.java => MDMAreaDO.java} | 4 +- .../cool/store/service/MDMAreaService.java | 20 +++++++ .../service/impl/MDMAreaServiceImpl.java | 55 +++++++++++++++++++ .../store/controller/MDMAreaController.java | 38 +++++++++++++ 8 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java rename coolstore-partner-model/src/main/java/com/cool/store/entity/{ApprovalRegionDO.java => MDMAreaDO.java} (86%) create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java index 6f27bf41c..0cdf61372 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java @@ -229,4 +229,18 @@ public class RedisConstant { public static final String PHONE_NUMBER= "phone_number_"; + /** + * MDM 省市区数据缓存 + */ + + /** + * 省级数据缓存 + */ + public static final String MDM_AREA_PROVINCE = "mdm:area:province"; + + /** + * 其他区域数据缓存 + */ + public static final String MDM_AREA_OTHERS = "mdm:area:others"; + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java new file mode 100644 index 000000000..0a909f808 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java @@ -0,0 +1,20 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.MDMAreaDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface MdmAreaMapper { + + /** + * 获取 MDM 省级地区数据 + * @return + */ + List getProvince(); + + List getSonArea(@Param("code") String code); + +} diff --git a/coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml new file mode 100644 index 000000000..ba90de3a3 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java new file mode 100644 index 000000000..bbf1078bc --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java @@ -0,0 +1,12 @@ +package com.cool.store.dto.mdm; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AreaSonDTO { + + @ApiModelProperty("父级code") + private String code; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/ApprovalRegionDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/MDMAreaDO.java similarity index 86% rename from coolstore-partner-model/src/main/java/com/cool/store/entity/ApprovalRegionDO.java rename to coolstore-partner-model/src/main/java/com/cool/store/entity/MDMAreaDO.java index e13b82881..415d328ec 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/ApprovalRegionDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/MDMAreaDO.java @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data -public class ApprovalRegionDO { +public class MDMAreaDO { @ApiModelProperty("id") private Integer id; @@ -16,7 +16,7 @@ public class ApprovalRegionDO { private String code; @ApiModelProperty("地区名") - private String regionName; + private String areaName; @ApiModelProperty("地区父级编号") private String parentCode; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java new file mode 100644 index 000000000..a1d1c665a --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java @@ -0,0 +1,20 @@ +package com.cool.store.service; + +import com.cool.store.entity.MDMAreaDO; + +import java.util.List; + +public interface MDMAreaService { + + /** + * 获取省级数据 + */ + List getProvince(); + + /** + * 获取子级地区 + * @param code 父级 code + */ + List getSonArea(String code); + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java new file mode 100644 index 000000000..cb816227e --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java @@ -0,0 +1,55 @@ +package com.cool.store.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.constants.RedisConstant; +import com.cool.store.entity.MDMAreaDO; +import com.cool.store.mapper.MdmAreaMapper; +import com.cool.store.service.MDMAreaService; +import com.cool.store.utils.RedisUtilPool; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class MDMAreaServiceImpl implements MDMAreaService { + + @Autowired + private RedisUtilPool redisUtilPool; + + @Autowired + private MdmAreaMapper mdmAreaMapper; + + /** + * 获取省级数据 + */ + @Override + public List getProvince() { + String provincesJson = redisUtilPool.getString(RedisConstant.MDM_AREA_PROVINCE); + if (StringUtils.isNotEmpty(provincesJson)) { + return (List) JSONObject.parseObject(provincesJson, List.class); + } + List areaDOList = mdmAreaMapper.getProvince(); + //过期时间三小时 + redisUtilPool.setString(RedisConstant.MDM_AREA_PROVINCE, JSONObject.toJSONString(areaDOList), 3 * 60 * 60); + return areaDOList; + } + + /** + * 获取子级地区 + * @param code 父级 code + */ + @Override + public List getSonArea(String code) { + String provincesJson = redisUtilPool.getString(RedisConstant.MDM_AREA_OTHERS); + if (StringUtils.isNotEmpty(provincesJson)) { + return (List) JSONObject.parseObject(provincesJson, List.class); + } + List areaDOList = mdmAreaMapper.getSonArea(code); + //过期时间三小时 + redisUtilPool.setString(RedisConstant.MDM_AREA_PROVINCE, JSONObject.toJSONString(areaDOList), 3 * 60 * 60); + return areaDOList; + } + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java new file mode 100644 index 000000000..111a7cc19 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java @@ -0,0 +1,38 @@ +package com.cool.store.controller; + +import com.cool.store.dto.mdm.AreaSonDTO; +import com.cool.store.entity.MDMAreaDO; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.MDMAreaService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/mdm/area") +@Api(tags = "MDM省市信息") +public class MDMAreaController { + + @Autowired + private MDMAreaService mdmAreaService; + + @PostMapping("/province") + @ApiOperation("获取MDM省级信息") + public ResponseResult> getProvince() { + return ResponseResult.success(mdmAreaService.getProvince()); + } + + @PostMapping("/son") + @ApiOperation("获取子级区域数据") + private ResponseResult> getSonArea(@RequestBody AreaSonDTO areaSon) { + return ResponseResult.success(mdmAreaService.getSonArea(areaSon.getCode())); + } + + +} From 3c57e28d47f0245e601f492bd33d96068d12cdfb Mon Sep 17 00:00:00 2001 From: pserimal Date: Wed, 28 Jun 2023 16:41:25 +0800 Subject: [PATCH 05/28] =?UTF-8?q?hy=5Fpartner=5Fcertification=5Finfo?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HyPartnerCertificationInfoMapper.xml | 145 ++---------------- .../entity/HyPartnerCertificationInfoDO.java | 43 +----- .../store/service/impl/FlowServiceImpl.java | 15 +- 3 files changed, 13 insertions(+), 190 deletions(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml index 0d536c97b..956201b9f 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml @@ -6,20 +6,6 @@ - - - - - - - - - - - - - - @@ -42,53 +28,17 @@ partner_interview_id, - - partnership, - qualify_verify_id, intention_contract_no, - - want_sign_time, + + data_source, - - partner_fee, - - - security_fund, - - - technical_service_fee, - - - intention_money, - - - intention_signer_username, - - - intention_signer_mobile, - - - intention_edu, - - - real_control_username, - - - real_control_idcard, - - - signer_real_control_relation, - - - signer_other_real_control_relation, - - - signer_real_control_relation_cert, + + certification_info_record_json, create_time, @@ -107,56 +57,17 @@ #{record.partnerInterviewId}, - - #{record.partnership}, - #{record.qualifyVerifyId}, #{record.intentionContractNo}, - - #{record.wantSignTime}, - #{record.dataSource}, - - #{record.partnerFee}, - - - #{record.securityFund}, - - - #{record.technicalServiceFee}, - - - #{record.intentionMoney}, - - - #{record.intentionSignerUsername}, - - - #{record.intentionSignerMobile}, - - - #{record.intentionEdu}, - - - #{record.realControlUsername}, - - - #{record.realControlIdcard}, - - - #{record.signerRealControlRelation}, - - - #{record.signerOtherRealControlRelation}, - - - #{record.signerRealControlRelationCert}, + + #{record.certificationInfoRecordJson}, #{record.createTime}, @@ -178,53 +89,17 @@ partner_interview_id = #{record.partnerInterviewId}, - - partnership = #{record.partnership}, - qualify_verify_id = #{record.qualifyVerifyId}, intention_contract_no = #{record.intentionContractNo}, - - want_sign_time = #{record.wantSignTime}, + + data_source = #{record.dataSource}, - - partner_fee = #{record.partnerFee}, - - - security_fund = #{record.securityFund}, - - - technical_service_fee = #{record.technicalServiceFee}, - - - intention_money = #{record.intentionMoney}, - - - intention_signer_username = #{record.intentionSignerUsername}, - - - intention_signer_mobile = #{record.intentionSignerMobile}, - - - intention_edu = #{record.intentionEdu}, - - - real_control_username = #{record.realControlUsername}, - - - real_control_idcard = #{record.realControlIdcard}, - - - signer_real_control_relation = #{record.signerRealControlRelation}, - - - signer_other_real_control_relation = #{record.signerOtherRealControlRelation}, - - - signer_real_control_relation_cert = #{record.signerRealControlRelationCert}, + + certification_info_record_json = #{record.certificationInfoRecordJson}, create_time = #{record.createTime}, diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerCertificationInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerCertificationInfoDO.java index fb034dd86..8d0e43279 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerCertificationInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerCertificationInfoDO.java @@ -30,56 +30,17 @@ public class HyPartnerCertificationInfoDO implements Serializable { @ApiModelProperty("hy_partner_interview.id") private Long partnerInterviewId; - @ApiModelProperty("合作关系:1总部下属;2小区代直营;3县代直营;4县代下属;5区代直营;6区代下属") - private String partnership; - @ApiModelProperty("资质审核流程id") private String qualifyVerifyId; @ApiModelProperty("意向合同编号") private String intentionContractNo; - @ApiModelProperty("意向签约时间") - private Date wantSignTime; - @ApiModelProperty("数据来源") private String dataSource; - @ApiModelProperty("加盟费") - private String partnerFee; - - @ApiModelProperty("保证金") - private String securityFund; - - @ApiModelProperty("技术服务费") - private String technicalServiceFee; - - @ApiModelProperty("意向金金额") - private String intentionMoney; - - @ApiModelProperty("意向签约人姓名") - private String intentionSignerUsername; - - @ApiModelProperty("意向签约人手机号") - private String intentionSignerMobile; - - @ApiModelProperty("意向签约人学历") - private String intentionEdu; - - @ApiModelProperty("实控人姓名") - private String realControlUsername; - - @ApiModelProperty("实控人身份证") - private String realControlIdcard; - - @ApiModelProperty("签约人与实控人关系") - private String signerRealControlRelation; - - @ApiModelProperty("其他实控人与签约人关系") - private String signerOtherRealControlRelation; - - @ApiModelProperty("实控人与签约人关系证明") - private String signerRealControlRelationCert; + @ApiModelProperty("发起资质审核信息记录json字段") + private String certificationInfoRecordJson; @ApiModelProperty("创建时间") private Date createTime; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java index dfdd4081c..b1b0ac3a4 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java @@ -186,20 +186,7 @@ public class FlowServiceImpl implements FlowService { partnerCertificationInfoDO.setPartnerId(request.getPartnerId()); partnerCertificationInfoDO.setPartnerLineId(Long.valueOf(request.getLineId())); partnerCertificationInfoDO.setPartnerInterviewId(Long.valueOf(request.getInterviewId())); - partnerCertificationInfoDO.setPartnership(String.valueOf(request.getPartnership())); - partnerCertificationInfoDO.setWantSignTime(DateUtil.parse(request.getWantSignTime())); - partnerCertificationInfoDO.setPartnerFee(request.getPartnerFee().toString()); - partnerCertificationInfoDO.setSecurityFund(request.getSecurityFund().toString()); - partnerCertificationInfoDO.setTechnicalServiceFee(request.getTechnicalServiceFee().toString()); - partnerCertificationInfoDO.setIntentionMoney(request.getIntentionMoney().toString()); - partnerCertificationInfoDO.setIntentionSignerUsername(request.getIntentionSignerUsername()); - partnerCertificationInfoDO.setIntentionSignerMobile(request.getIntentionSignerMobile()); - partnerCertificationInfoDO.setIntentionEdu(request.getIntentionEdu().toString()); - partnerCertificationInfoDO.setRealControlUsername(request.getRealControlUsername()); - partnerCertificationInfoDO.setRealControlIdcard(request.getRealControlIdcard()); - partnerCertificationInfoDO.setSignerRealControlRelation(request.getSignerRealControlRelation().toString()); - partnerCertificationInfoDO.setSignerOtherRealControlRelation(request.getSignerOtherRealControlRelation()); - partnerCertificationInfoDO.setSignerRealControlRelationCert(request.getSignerRealControlRelationCert().toString()); + partnerCertificationInfoDO.setCertificationInfoRecordJson(JSONObject.toJSONString(request)); partnerCertificationInfoDO.setCreateTime(new Date()); partnerCertificationInfoDO.setUpdateTime(new Date()); //set 资质审核流程id From c675db67b6a9bf54d5b557a4ad3564501a1c97fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Wed, 28 Jun 2023 16:48:09 +0800 Subject: [PATCH 06/28] =?UTF-8?q?=E6=97=A5=E5=BF=97-=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E9=97=B4=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerTaskInfoLogMapper.java | 4 ++ .../mapper/HyPartnerTaskInfoLogMapper.xml | 9 ++++ .../com/cool/store/dto/log/LogFieldDTO.java | 15 ++++++ .../cool/store/service/InterviewService.java | 2 +- .../service/impl/InterviewServiceImpl.java | 48 +++++++++++++++---- .../impl/PartnerInterviewServiceImpl.java | 16 +++++++ .../store/controller/InterviewController.java | 4 +- 7 files changed, 85 insertions(+), 13 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogFieldDTO.java diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java index 6f8723c38..ffa413bdb 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java @@ -3,6 +3,8 @@ package com.cool.store.mapper; import com.cool.store.entity.HyPartnerTaskInfoLogDO; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author zhangchenbiao * @date 2023-05-29 03:53 @@ -22,4 +24,6 @@ public interface HyPartnerTaskInfoLogMapper { * dateTime:2023-05-29 03:53 */ int updateByPrimaryKeySelective(@Param("record") HyPartnerTaskInfoLogDO record); + + List selectByPartnerLineIdAndOperateType(@Param("partnerLineId") String partnerLineId, @Param("operateType") String operateType); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml index 5ebbb72d0..678e22ac3 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml @@ -133,4 +133,13 @@ where id = #{record.id} + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogFieldDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogFieldDTO.java new file mode 100644 index 000000000..f6982c254 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/LogFieldDTO.java @@ -0,0 +1,15 @@ +package com.cool.store.dto.log; + +import lombok.Data; + +/** + * @Author: young.yu + * @Date: 2023-06-28 15:32 + * @Description: + */ +@Data +public class LogFieldDTO { + private String code; + private String name; + private String value; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java index f0fe7af35..13613277b 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java @@ -69,5 +69,5 @@ public interface InterviewService { public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile); - void getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException; + String getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java index c1b60c0c9..430fb69d6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.context.PartnerUserHolder; @@ -16,10 +17,7 @@ import com.cool.store.dto.calendar.CreateCalendarEventDTO; import com.cool.store.dto.calendar.DeleteCalendarEventDTO; import com.cool.store.dto.calendar.UserCalendarsEventDTO; import com.cool.store.dto.calendar.UserFreeBusyInfoDTO; -import com.cool.store.dto.log.EntrustOthersDTO; -import com.cool.store.dto.log.LogBasicDTO; -import com.cool.store.dto.log.ModifyInterviewTimeDTO; -import com.cool.store.dto.log.ReInterviewDTO; +import com.cool.store.dto.log.*; import com.cool.store.dto.message.SendCardMessageDTO; import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.entity.*; @@ -276,11 +274,11 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); //记录日志 - PartnerUserInfoVO operator = PartnerUserHolder.getUser(); - ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()) + LoginUserInfo operator = CurrentUserHolder.getUser(); + ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()) .operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) .beforeInterviewTime(interviewInfo.getStartTime()).afterInterviewTime(request.getNewStartBookingTime()).build(); - logService.recordPartnerBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.MODIFY_INTERVIEW_TIME,log); + logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.MODIFY_INTERVIEW_TIME,log); } @Override @@ -460,7 +458,7 @@ public class InterviewServiceImpl implements InterviewService { //记录日志 PartnerUserInfoVO operator = PartnerUserHolder.getUser(); - LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build(); + LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).mobile(operator.getMobile()).build(); logService.recordPartnerBizLog(operator,interviewVO.getPartnerLineId(),OperateTypeEnum.INTERVIEW_APPOINTMENT,log); return vo; @@ -632,8 +630,38 @@ public class InterviewServiceImpl implements InterviewService { } @Override - public void getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException { - + public String getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException { + String content = " 修改面试预约时间"; + String operatorName = null; + String operatorMobile = null; + String operatorTime = null; + List hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(request.getPartnerLineId(), OperateTypeEnum.MODIFY_INTERVIEW_TIME.getCode()); + if(CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)){ + hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(request.getPartnerLineId(), OperateTypeEnum.INTERVIEW_APPOINTMENT.getCode()); + if(CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)){ + return null; + } + content = " 提交面试预约时间"; + } + HyPartnerTaskInfoLogDO hyPartnerTaskInfoLogDO = hyPartnerTaskInfoLogDOS.get(0); + String fieldCopy = hyPartnerTaskInfoLogDO.getFieldCopy(); + List logFieldDTOS = JSONObject.parseArray(fieldCopy, LogFieldDTO.class); + for(LogFieldDTO logFieldDTO:logFieldDTOS){ + if(OperateLogFieldValueEnum.OPERATE_TIME.getCode().equals(logFieldDTO.getCode())){ + operatorTime = logFieldDTO.getValue(); + } + if(OperateLogFieldValueEnum.MOBILE.getCode().equals(logFieldDTO.getCode())){ + operatorMobile = logFieldDTO.getValue(); + } + if(OperateLogFieldValueEnum.OPERATE_USER_NAME.getCode().equals(logFieldDTO.getCode())){ + operatorName = logFieldDTO.getValue(); + } + } + StringBuffer sb = new StringBuffer(); + sb.append(operatorName) + .append(" "+operatorMobile) + .append(" 于 ").append(DateUtil.format(DateUtil.parseDateTime(operatorTime),"yyyy/MM/dd HH:mm:ss")).append(content); + return sb.toString(); } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java index 3074035c1..51f8151ab 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java @@ -3,11 +3,14 @@ package com.cool.store.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import com.cool.store.context.PartnerUserHolder; import com.cool.store.dao.HyInterviewDAO; +import com.cool.store.dto.log.ModifyInterviewTimeDTO; import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.entity.HyPartnerInterviewDO; import com.cool.store.entity.HyPartnerInterviewPlanDO; import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.OperateTypeEnum; import com.cool.store.enums.RoomStatus; import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.exception.ApiException; @@ -15,11 +18,14 @@ import com.cool.store.exception.ServiceException; import com.cool.store.mapper.HyPartnerInterviewMapper; import com.cool.store.mapper.HyPartnerInterviewPlanMapper; import com.cool.store.request.ModifyInterviewTimeReq; +import com.cool.store.service.LogService; import com.cool.store.service.PartnerInterviewService; +import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.TRTCUtils; import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.PartnerInterviewInfoVO; import com.cool.store.vo.PartnerPassLetterDetailVO; +import com.cool.store.vo.PartnerUserInfoVO; import com.cool.store.vo.interview.InterviewVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -48,6 +54,9 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService { @Value("${trtc.secretKey}") private String key; + @Autowired + private LogService logService; + /** * 加盟商查询面试信息 * @@ -175,6 +184,13 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService { record.setEndTime(Convert.toDate(request.getNewEndBookingTime())); record.setUpdateTime(new Date()); interviewPlanMapper.updateByPrimaryKeySelective(record); + + //记录日志 + PartnerUserInfoVO operator = PartnerUserHolder.getUser(); + ModifyInterviewTimeDTO log = ModifyInterviewTimeDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()) + .operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + .beforeInterviewTime(interviewInfo.getStartTime()).afterInterviewTime(request.getNewStartBookingTime()).build(); + logService.recordPartnerBizLog(operator,interviewInfo.getPartnerLineId(), OperateTypeEnum.MODIFY_INTERVIEW_TIME,log); } } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java index 22dfa211c..b61005261 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java @@ -97,7 +97,7 @@ public class InterviewController { @PostMapping("/getLastUpdateTimeInfo") @ApiOperation("获取面试最新更新信息") public ResponseResult getLastUpdateTimeInfo(@RequestBody GetLastUpdateTimeInfoReq request) throws ApiException { - interviewService.getLastUpdateTimeInfo(request); - return ResponseResult.success(); + String res = interviewService.getLastUpdateTimeInfo(request); + return ResponseResult.success(res); } } From 204e9a5015e9f62284f5f87abd6270a92176b223 Mon Sep 17 00:00:00 2001 From: wxp01309236 Date: Wed, 28 Jun 2023 16:54:40 +0800 Subject: [PATCH 07/28] =?UTF-8?q?=E7=BA=BF=E7=B4=A2id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cool/store/vo/ApplyBaseInfoVO.java | 2 ++ .../com/cool/store/service/impl/PartnerUserInfoServiceImpl.java | 1 + 2 files changed, 3 insertions(+) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/ApplyBaseInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/ApplyBaseInfoVO.java index 643c83c56..2d2ec6b44 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/ApplyBaseInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/ApplyBaseInfoVO.java @@ -22,4 +22,6 @@ public class ApplyBaseInfoVO { @ApiModelProperty("线索状态:0公海线索;1跟进中;2合作中;3黑名单") private Integer lineStatus; + @ApiModelProperty("线索id") + private Long partnerLineId; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java index a08946e37..3ca2efd2b 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java @@ -112,6 +112,7 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService { if (CollectionUtils.isNotEmpty(hyOpenAreaInfoDOS)) { applyBaseInfoVO.setProvinceHasOpenArea(true); } + applyBaseInfoVO.setPartnerLineId(hyPartnerLineInfoDO.getId()); applyBaseInfoVO.setLineStatus(hyPartnerLineInfoDO.getLineStatus()); String cacheKey = MessageFormat.format(RedisConstant.PARTNER_INTENTINFO_CACHE_KEY, partnerUserInfoRequest.getPartnerId(), hyPartnerLineInfoDO.getId()); if (StringUtils.isNotBlank(redisUtilPool.getString(cacheKey))) { From 7d1457cc2a520303a002333b2ddff6f947e6623e Mon Sep 17 00:00:00 2001 From: wxp01309236 Date: Wed, 28 Jun 2023 17:22:17 +0800 Subject: [PATCH 08/28] generateDefaultLineInfo --- .../impl/HyPartnerLineInfoServiceImpl.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index a6b1bd038..86791c295 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -633,18 +633,23 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { public HyPartnerLineInfoDO generateDefaultLineInfo(String partnerId, String wantShopArea, Integer acceptAdjustType) { // 生成一条线索 HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(partnerId); + Boolean flag = this.assignFollowUser(partnerId, wantShopArea, acceptAdjustType); + String investmentManager = null; + if (flag){ + investmentManager = getAssignFollowUser(partnerId, "intent"); + } if(hyPartnerLineInfoDO == null){ hyPartnerLineInfoDO = new HyPartnerLineInfoDO(); hyPartnerLineInfoDO.setPartnerId(partnerId); hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode()); hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode()); - Boolean flag = this.assignFollowUser(hyPartnerLineInfoDO.getPartnerId(), wantShopArea, acceptAdjustType); hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode()); - if (flag){ - String investmentManager = getAssignFollowUser(partnerId, "intent"); - hyPartnerLineInfoDO.setInvestmentManager(investmentManager); - } + hyPartnerLineInfoDO.setInvestmentManager(investmentManager); hyPartnerLineInfoDAO.insertSelective(hyPartnerLineInfoDO); + }else { + hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode()); + hyPartnerLineInfoDO.setInvestmentManager(investmentManager); + hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } return hyPartnerLineInfoDO; } From 72e8eb9c80b2e463413ded2db699d518c130c1af Mon Sep 17 00:00:00 2001 From: pserimal Date: Wed, 28 Jun 2023 17:22:24 +0800 Subject: [PATCH 09/28] =?UTF-8?q?=E8=8E=B7=E5=8F=96MDM=E7=9C=81=E5=B8=82?= =?UTF-8?q?=E6=95=B0=E6=8D=AEBug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/constants/RedisConstant.java | 2 +- .../com/cool/store/service/impl/MDMAreaServiceImpl.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java index 0cdf61372..29b74591e 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java @@ -241,6 +241,6 @@ public class RedisConstant { /** * 其他区域数据缓存 */ - public static final String MDM_AREA_OTHERS = "mdm:area:others"; + public static final String MDM_AREA_OTHERS = "mdm:area:others:{0}"; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java index cb816227e..1b6dd7b03 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.MessageFormat; import java.util.List; @Service @@ -42,13 +43,17 @@ public class MDMAreaServiceImpl implements MDMAreaService { */ @Override public List getSonArea(String code) { - String provincesJson = redisUtilPool.getString(RedisConstant.MDM_AREA_OTHERS); + String provincesJson = redisUtilPool.getString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code)); if (StringUtils.isNotEmpty(provincesJson)) { return (List) JSONObject.parseObject(provincesJson, List.class); } List areaDOList = mdmAreaMapper.getSonArea(code); + //数据库也没有该数据就缓存空值,但是只缓存一分钟 + if (areaDOList == null || areaDOList.size() == 0) { + redisUtilPool.setString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code), "", 60); + } //过期时间三小时 - redisUtilPool.setString(RedisConstant.MDM_AREA_PROVINCE, JSONObject.toJSONString(areaDOList), 3 * 60 * 60); + redisUtilPool.setString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code), JSONObject.toJSONString(areaDOList), 3 * 60 * 60); return areaDOList; } From 3e82130e2a796938bc0e7b5203242a1890ebc092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 28 Jun 2023 17:39:39 +0800 Subject: [PATCH 10/28] userInfo --- .../service/impl/HyPartnerLineInfoServiceImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index a6b1bd038..fd4ed5993 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -569,8 +569,14 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } //省内调剂 有重点或者开放的 分配 if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){ - Integer apply = hyOpenAreaInfoDAO.getChildrenCount("apply", hyOpenAreaInfoDO.getId()); - if (apply>CommonConstants.ZERO){ + + List hyOpenAreaInfoDOList= new ArrayList<>(); + if(hyOpenAreaInfoDO != null){ + String areaPath = hyOpenAreaInfoDO.getAreaPath(); + String province = areaPath.substring(0, areaPath.indexOf("/", areaPath.indexOf("/") + 1)); + hyOpenAreaInfoDOList = hyOpenAreaInfoDAO.queryByKeyword(province, true, null, true); + } + if (hyOpenAreaInfoDOList.size()>CommonConstants.ZERO){ return Boolean.TRUE; } return Boolean.FALSE; From c52b8ac2645f803988846cc9591b361110cb49d4 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Wed, 28 Jun 2023 17:56:30 +0800 Subject: [PATCH 11/28] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ec=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=B0=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/dao/EnterpriseUserDAO.java | 4 + .../store/mapper/EnterpriseUserMapper.java | 3 + .../mapper/HyPartnerUserChannelMapper.java | 25 ++ .../store/mapper/HyPartnerUserInfoMapper.java | 4 + .../resources/mapper/EnterpriseUserMapper.xml | 3 + .../mapper/HyPartnerLineInfoMapper.xml | 12 +- .../mapper/HyPartnerUserChannelMapper.xml | 93 ++++++ .../mapper/HyPartnerUserInfoMapper.xml | 12 + .../store/entity/HyPartnerBaseInfoDO.java | 2 + .../store/entity/HyPartnerLineInfoDO.java | 5 + .../store/entity/HyPartnerUserChannelDO.java | 43 +++ .../store/entity/HyPartnerUserInfoDO.java | 2 + .../cool/store/entity/SyncEcCustomerDO.java | 19 ++ .../store/request/CustomerInfoRequest.java | 26 ++ .../cool/store/http/UserSourceResponse.java | 29 ++ .../com/cool/store/job/EcSyncDataJob.java | 93 ++++++ .../java/com/cool/store/sdk/ec/EcClient.java | 37 +++ .../store/sdk/ec/bo/ChangeFollowUserBo.java | 24 ++ .../store/sdk/ec/bo/SyncEcCustomerBo.java | 9 + .../store/sdk/ec/bo/UpdateCustomerBo.java | 16 + .../com/cool/store/sdk/ec/core/EcRequest.java | 28 ++ .../cool/store/sdk/ec/core/EcRequestI.java | 28 ++ .../cool/store/sdk/ec/core/EcResponse.java | 14 + .../ec/request/ChangeFollowUserRequest.java | 19 ++ .../sdk/ec/request/SyncEcCustomerRequest.java | 26 ++ .../sdk/ec/request/UpdateCustomerRequest.java | 21 ++ .../ec/response/ChangeFollowUserResponse.java | 15 + .../ec/response/SyncEcCustomerResponse.java | 16 + .../ec/response/UpdateCustomerResponse.java | 16 + .../com/cool/store/service/EcSyncService.java | 11 + .../store/service/impl/EcSyncServiceImpl.java | 278 ++++++++++++++++++ .../java/com/cool/store/utils/Client.java | 164 +++++++++++ .../main/java/com/cool/store/utils/Get.java | 104 +++++++ .../java/com/cool/store/utils/MapUtil.java | 123 ++++++++ .../main/java/com/cool/store/utils/Post.java | 37 +++ .../store/config/TokenValidateFilter.java | 2 +- .../store/controller/EcSyncController.java | 31 ++ 37 files changed, 1392 insertions(+), 2 deletions(-) create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserChannelMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserChannelDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/SyncEcCustomerDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/CustomerInfoRequest.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/http/UserSourceResponse.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/EcClient.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/ChangeFollowUserBo.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/SyncEcCustomerBo.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/UpdateCustomerBo.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequest.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequestI.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcResponse.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/ChangeFollowUserRequest.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/SyncEcCustomerRequest.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/UpdateCustomerRequest.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/ChangeFollowUserResponse.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/SyncEcCustomerResponse.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/UpdateCustomerResponse.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/EcSyncService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/utils/Client.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/utils/Get.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/utils/MapUtil.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/utils/Post.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/controller/EcSyncController.java 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 0454438ca..bc0f82ac9 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 @@ -98,4 +98,8 @@ public class EnterpriseUserDAO { } return enterpriseUserMapper.getUserListByRegionIds(regionIds); } + + public String selectByMobile(String mobile) { + return enterpriseUserMapper.selectByMobile(mobile); + } } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java index f83646ae2..ae2bf57bc 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java @@ -90,4 +90,7 @@ public interface EnterpriseUserMapper { * @return */ List getUserListByRegionIds(@Param("regionIds") List regionIds); + + String selectByMobile(@Param("mobile") String mobile); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java new file mode 100644 index 000000000..59631f995 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserChannelMapper.java @@ -0,0 +1,25 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.HyPartnerUserChannelDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +@Mapper +public interface HyPartnerUserChannelMapper { + int deleteByPrimaryKey(Long id); + + int insert(HyPartnerUserChannelDO record); + + int insertSelective(HyPartnerUserChannelDO record); + + HyPartnerUserChannelDO selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(HyPartnerUserChannelDO record); + + int updateByPrimaryKey(HyPartnerUserChannelDO record); + + HyPartnerUserChannelDO selectByChannelId(@Param("channelId") Long id); + + HyPartnerUserChannelDO selectByChannelName(@Param("channelName") String channelName); +} \ 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 5bf4ead72..b2dbe1142 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 @@ -1,6 +1,7 @@ package com.cool.store.mapper; import com.cool.store.entity.HyPartnerUserInfoDO; +import com.cool.store.entity.SyncEcCustomerDO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -43,4 +44,7 @@ public interface HyPartnerUserInfoMapper { int updateJoinKnowById(@Param("isWritePartnerKnow")Integer isWritePartnerKnow, @Param("id")Long id); + List selectByHourDate(@Param("selectTime") String hourDayDate, @Param("now") String now,@Param("limit1")Integer limit1,@Param("limit2")Integer limit2); + + int selectByHourDateCount(@Param("selectTime") String hourDayDate, @Param("now") String now); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml index 72c925596..79cc9bcb2 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml @@ -306,4 +306,7 @@ where deleted = 0 and user_region_ids like concat("%", #{regionId}, "%") + \ 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 5c5c7c375..47e5b7e7e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -20,12 +20,13 @@ + id, partner_id, workflow_stage, workflow_status, line_status, investment_manager, development_director, development_manager, deadline, pass_reason, reject_public_reason, reject_real_reason, certify_file, deleted, create_time, update_time, close_time, - close_user_id + close_user_id,user_channel_id + select + + from hy_partner_user_channel + where id = #{id,jdbcType=BIGINT} + + + + + delete from hy_partner_user_channel + where id = #{id,jdbcType=BIGINT} + + + insert into hy_partner_user_channel (channel_id, channel_name, create_time, + update_time) + values (#{channelId,jdbcType=BIGINT}, #{channelName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + #{updateTime,jdbcType=TIMESTAMP}) + + + insert into hy_partner_user_channel + + + channel_id, + + + channel_name, + + + create_time, + + + + + #{channelId,jdbcType=BIGINT}, + + + #{channelName,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + + + update hy_partner_user_channel + + + channel_id = #{channelId,jdbcType=BIGINT}, + + + channel_name = #{channelName,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=BIGINT} + + + update hy_partner_user_channel + set channel_id = #{channelId,jdbcType=BIGINT}, + channel_name = #{channelName,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + + \ 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 a997ef69d..d3e544b7b 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml @@ -49,6 +49,18 @@ + + insert into hy_partner_user_info diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerBaseInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerBaseInfoDO.java index 97e46a056..ec307626f 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerBaseInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerBaseInfoDO.java @@ -7,6 +7,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; /** * @@ -17,6 +18,7 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor +@Accessors(chain = true) public class HyPartnerBaseInfoDO implements Serializable { @ApiModelProperty("") private Long id; 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 a4069904e..beda39416 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 @@ -7,6 +7,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; /** * @@ -17,6 +18,7 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor +@Accessors(chain = true) public class HyPartnerLineInfoDO implements Serializable { @ApiModelProperty("") private Long id; @@ -77,4 +79,7 @@ public class HyPartnerLineInfoDO implements Serializable { @ApiModelProperty("移除黑名单原因") private String removeBlackReason; + + @ApiModelProperty("hy_partner_user_channel.id") + private Integer userChannelId; } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserChannelDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserChannelDO.java new file mode 100644 index 000000000..6485b4628 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserChannelDO.java @@ -0,0 +1,43 @@ +package com.cool.store.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.naming.Name; + +/** + * hy_partner_user_channel + * @author + */ +@Data +@Accessors(chain = true) +public class HyPartnerUserChannelDO implements Serializable { + + private Long id; + + /** + * 来源id + */ + private Long channelId; + + /** + * 来源名称 + */ + private String channelName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserInfoDO.java index c1d88f267..c1f77aeae 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserInfoDO.java @@ -7,6 +7,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; /** * @@ -17,6 +18,7 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor +@Accessors(chain = true) public class HyPartnerUserInfoDO implements Serializable { @ApiModelProperty("") private Long id; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SyncEcCustomerDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SyncEcCustomerDO.java new file mode 100644 index 000000000..aeaaaaff5 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SyncEcCustomerDO.java @@ -0,0 +1,19 @@ +package com.cool.store.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SyncEcCustomerDO { + + private Long id; + + private String customername; + + private String customermobile; + + private String followname; + + private String followmobile; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/CustomerInfoRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/CustomerInfoRequest.java new file mode 100644 index 000000000..a4088a6a8 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/CustomerInfoRequest.java @@ -0,0 +1,26 @@ +package com.cool.store.request; + +import lombok.Data; + +/** + * @author hxd + * @since 2023/2/28 + */ +@Data +public class CustomerInfoRequest { + + + private Long crmId; + + private String mobile; + + private String name; + + private String channel; + + private String followUserMobile; + + private Long lastFollowUserId; + + private String followUserName; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/http/UserSourceResponse.java b/coolstore-partner-service/src/main/java/com/cool/store/http/UserSourceResponse.java new file mode 100644 index 000000000..2540b4974 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/http/UserSourceResponse.java @@ -0,0 +1,29 @@ +package com.cool.store.http; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class UserSourceResponse { + + private Integer code; + + private String msg; + + private List data; + + @Data + @Accessors(chain = true) + public static class ChannelSource{ + private String createTime; + + private Long id; + + private String name; + + private Integer userId; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java b/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java new file mode 100644 index 000000000..f9e46fbc4 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java @@ -0,0 +1,93 @@ +package com.cool.store.job; + +import cn.hutool.core.date.DateUtil; +import com.cool.store.entity.SyncEcCustomerDO; +import com.cool.store.mapper.HyPartnerLineInfoMapper; +import com.cool.store.mapper.HyPartnerUserInfoMapper; +import com.cool.store.sdk.ec.EcClient; +import com.cool.store.sdk.ec.request.SyncEcCustomerRequest; +import com.cool.store.service.EcSyncService; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +@Slf4j +@Component +public class EcSyncDataJob { + + @XxlJob("SyncUserSourceJob") + public void syncUserSourceJob() { + XxlJobHelper.log("-------------------------------定时同步客户来源开始-------------------------------"); + syncUserSourceExecute(); + XxlJobHelper.log("-------------------------------定时同步客户来源结束-------------------------------"); + XxlJobHelper.handleSuccess(); + } + + + @Value("${ec.baseUrl}") + private String baseUrl; + + @XxlJob("SyncAppletToEcJob") + public void syncAppletToEcJob() { + XxlJobHelper.log("-------------------------------定时同步小程序数据到ec开始-------------------------------"); + syncAppletToEcExecute(); + XxlJobHelper.log("-------------------------------定时同步小程序数据到ec结束-------------------------------"); + XxlJobHelper.handleSuccess(); + } + + @Resource + private EcSyncService ecSyncService; + + @Resource + private HyPartnerUserInfoMapper hyPartnerUserInfoMapper; + + + //定时同步用户来源开始 + private void syncUserSourceExecute() { + ecSyncService.getChannelSource(); + } + + private final Integer count=50; + + //定时同步小程序数据到ec + private void syncAppletToEcExecute() { + //获取总数 + int size = hyPartnerUserInfoMapper.selectByHourDateCount(getHourDayDate(-1, 0), DateUtil.now()); + //执行数 + int counts = size / count; + //取余,如果大于1,就再加一 + int yu = size % count; + if (yu > 0) { + counts += 1; + } + for (int i = 1; i <= counts; i++) { + List list = hyPartnerUserInfoMapper.selectByHourDate(getHourDayDate(-1, 0), DateUtil.now(),count * (i - 1),count); + SyncEcCustomerRequest syncEcCustomerRequest = new SyncEcCustomerRequest(); + syncEcCustomerRequest.setParameter(list); + EcClient ecClient = new EcClient(); + ecClient.exec(baseUrl,syncEcCustomerRequest); + } + } + + + private static String getHourDayDate(int hour, int day) { + Date today = new Date(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(today); + calendar.add(Calendar.HOUR, hour); + calendar.add(Calendar.DAY_OF_MONTH, day); + Date twoDay = calendar.getTime(); + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(twoDay); + } + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/EcClient.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/EcClient.java new file mode 100644 index 000000000..e1f55ccbc --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/EcClient.java @@ -0,0 +1,37 @@ +package com.cool.store.sdk.ec; + +import com.alibaba.fastjson.JSON; +import com.cool.store.sdk.ec.core.EcRequest; +import com.cool.store.sdk.ec.core.EcResponse; +import com.cool.store.utils.Get; +import com.cool.store.utils.MapUtil; +import com.cool.store.utils.Post; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Value; + +import java.util.HashMap; + +public class EcClient { + + + + + @SneakyThrows + public T exec(String baseUrl,EcRequest request) { + String apiUrl = request.getApiUrl(); +// if (accessToken != null) { +// apiUrl += "?token=" + accessToken; +// } + String method = request.getMethod(); + String result = ""; + if (method.equals("GET")) { + result = Get.send(baseUrl+apiUrl, MapUtil.entityToUrlParam(request.getParameter())); + } else { + HashMap headers = new HashMap<>(1); + headers.put("Content-Type", "application/json"); + result = Post.send(baseUrl+apiUrl, JSON.toJSONString(request.getParameter()), headers); + } + + return JSON.parseObject(result, request.getResponseClass()); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/ChangeFollowUserBo.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/ChangeFollowUserBo.java new file mode 100644 index 000000000..1b0e99df8 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/ChangeFollowUserBo.java @@ -0,0 +1,24 @@ +package com.cool.store.sdk.ec.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author hxd + */ +@Data +@Accessors(chain = true) +public class ChangeFollowUserBo { + + //跟进人 + private Long crmId; + + private String username; + + private String mobile; + + private Long followUserId; + + //1:更新跟进人 2:创建跟进人并更改跟进人 + private Integer type; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/SyncEcCustomerBo.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/SyncEcCustomerBo.java new file mode 100644 index 000000000..848e6a5ed --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/SyncEcCustomerBo.java @@ -0,0 +1,9 @@ +package com.cool.store.sdk.ec.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SyncEcCustomerBo { +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/UpdateCustomerBo.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/UpdateCustomerBo.java new file mode 100644 index 000000000..225878d39 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/bo/UpdateCustomerBo.java @@ -0,0 +1,16 @@ +package com.cool.store.sdk.ec.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class UpdateCustomerBo { + + private String username; + + private String mobile; + + private Long crmId; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequest.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequest.java new file mode 100644 index 000000000..d555cb636 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequest.java @@ -0,0 +1,28 @@ +package com.cool.store.sdk.ec.core; + +/** + * @author hxd + */ +abstract public class EcRequest implements EcRequestI { + + private Object parameter; + + @Override + public String getMethod() { + return "POST"; + } + + @Override + public Object getParameter() { + return parameter; + } + + public void setParameter(Object parameter) { + this.parameter = parameter; + } + + @Override + public Class getResponseClass() { + return null; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequestI.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequestI.java new file mode 100644 index 000000000..1c9d1b849 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcRequestI.java @@ -0,0 +1,28 @@ +package com.cool.store.sdk.ec.core; + +public interface EcRequestI { + + /** + * 地址 + * @return - + */ + String getApiUrl(); + + /** + * 方法 + * @return - + */ + String getMethod(); + + /** + * 设置参数 + * @return - + */ + Object getParameter(); + + /** + * 响应类类型 + * @return - + */ + Class getResponseClass(); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcResponse.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcResponse.java new file mode 100644 index 000000000..19cb9c377 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/core/EcResponse.java @@ -0,0 +1,14 @@ +package com.cool.store.sdk.ec.core; + +import lombok.Data; + +@Data +public class EcResponse { + + private Integer code; + + private String msg; + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/ChangeFollowUserRequest.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/ChangeFollowUserRequest.java new file mode 100644 index 000000000..1213d0527 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/ChangeFollowUserRequest.java @@ -0,0 +1,19 @@ +package com.cool.store.sdk.ec.request; + +import com.cool.store.sdk.ec.core.EcRequest; +import com.cool.store.sdk.ec.response.ChangeFollowUserResponse; + +public class ChangeFollowUserRequest extends EcRequest { + + + + @Override + public String getApiUrl() { + return "/ec/selectChangeUser"; + } + + @Override + public Class getResponseClass() { + return ChangeFollowUserResponse.class; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/SyncEcCustomerRequest.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/SyncEcCustomerRequest.java new file mode 100644 index 000000000..996c6bcd9 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/SyncEcCustomerRequest.java @@ -0,0 +1,26 @@ +package com.cool.store.sdk.ec.request; + +import com.cool.store.sdk.ec.core.EcRequest; +import com.cool.store.sdk.ec.response.SyncEcCustomerResponse; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author hxd + */ +@Data +@Accessors(chain = true) +public class SyncEcCustomerRequest extends EcRequest { + + @Override + public String getApiUrl() { + return "/ec/appletToEc"; + } + + + @Override + public Class getResponseClass() { + return SyncEcCustomerResponse.class; + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/UpdateCustomerRequest.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/UpdateCustomerRequest.java new file mode 100644 index 000000000..c2c30bb92 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/request/UpdateCustomerRequest.java @@ -0,0 +1,21 @@ +package com.cool.store.sdk.ec.request; + +import com.cool.store.sdk.ec.core.EcRequest; +import com.cool.store.sdk.ec.response.UpdateCustomerResponse; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class UpdateCustomerRequest extends EcRequest { + + @Override + public String getApiUrl() { + return "/ec/updateCustomer"; + } + + @Override + public Class getResponseClass() { + return UpdateCustomerResponse.class; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/ChangeFollowUserResponse.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/ChangeFollowUserResponse.java new file mode 100644 index 000000000..7c9db1b32 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/ChangeFollowUserResponse.java @@ -0,0 +1,15 @@ +package com.cool.store.sdk.ec.response; + +import com.cool.store.sdk.ec.core.EcResponse; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author hxd + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ChangeFollowUserResponse extends EcResponse { + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/SyncEcCustomerResponse.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/SyncEcCustomerResponse.java new file mode 100644 index 000000000..80e7278a3 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/SyncEcCustomerResponse.java @@ -0,0 +1,16 @@ +package com.cool.store.sdk.ec.response; + +import com.cool.store.sdk.ec.core.EcResponse; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @author hxd + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class SyncEcCustomerResponse extends EcResponse { + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/UpdateCustomerResponse.java b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/UpdateCustomerResponse.java new file mode 100644 index 000000000..a18282a31 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/sdk/ec/response/UpdateCustomerResponse.java @@ -0,0 +1,16 @@ +package com.cool.store.sdk.ec.response; + +import com.cool.store.sdk.ec.core.EcResponse; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @author hxd + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class UpdateCustomerResponse extends EcResponse { + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/EcSyncService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/EcSyncService.java new file mode 100644 index 000000000..1901fd924 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/EcSyncService.java @@ -0,0 +1,11 @@ +package com.cool.store.service; + +import com.cool.store.request.CustomerInfoRequest; + +import java.util.List; + +public interface EcSyncService { + boolean ecToApplet(List queryListData); + + void getChannelSource(); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java new file mode 100644 index 000000000..c8590dad6 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java @@ -0,0 +1,278 @@ +package com.cool.store.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dao.HyPartnerBaseInfoDAO; +import com.cool.store.dao.HyPartnerLineInfoDAO; +import com.cool.store.dao.HyPartnerUserInfoDAO; +import com.cool.store.entity.*; +import com.cool.store.enums.LineStatusEnum; +import com.cool.store.enums.WorkflowStageEnum; +import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.exception.ApiException; +import com.cool.store.http.UserSourceResponse; +import com.cool.store.mapper.HyPartnerUserChannelMapper; +import com.cool.store.request.CustomerInfoRequest; +import com.cool.store.sdk.ec.EcClient; +import com.cool.store.sdk.ec.bo.ChangeFollowUserBo; +import com.cool.store.sdk.ec.bo.UpdateCustomerBo; +import com.cool.store.sdk.ec.request.ChangeFollowUserRequest; +import com.cool.store.sdk.ec.request.UpdateCustomerRequest; +import com.cool.store.sdk.ec.response.ChangeFollowUserResponse; +import com.cool.store.sdk.ec.response.UpdateCustomerResponse; +import com.cool.store.service.EcSyncService; +import com.cool.store.utils.Post; +import com.cool.store.utils.StringUtil; +import com.cool.store.utils.UUIDUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +@Slf4j +@Service +public class EcSyncServiceImpl implements EcSyncService { + + + + @Value("${ec.baseUrl}") + private String baseUrl; + + @Resource + private HyPartnerLineInfoDAO hyPartnerLineInfoDAO; + + @Resource + private HyPartnerBaseInfoDAO hyPartnerBaseInfoDAO; + + @Resource + private HyPartnerUserInfoDAO hyPartnerUserInfoDAO; + + @Resource + private EnterpriseUserDAO enterpriseUserDAO; + + + @Resource + private HyPartnerUserChannelMapper hyPartnerUserChannelMapper; + + + @Override + public boolean ecToApplet(List queryListData) { + for (CustomerInfoRequest customerInfoItem : queryListData) { + try { + Thread.sleep(500L); + insertSelectiveSync(customerInfoItem); + } catch (Exception e) { + e.printStackTrace(); + sendFeiShuRobotMessage("推送:"+JSONObject.toJSONString(e),"27243d49-97ca-4981-8aec-7c3bf84eb660"); + } + } + return false; + } + + @Override + public void getChannelSource() { + String s = HttpUtil.get(baseUrl+"/ec/getChannelSource"); + UserSourceResponse userSourceResponse = JSONObject.parseObject(s, UserSourceResponse.class); + for (UserSourceResponse.ChannelSource channelSource : userSourceResponse.getData()) { + Long id = channelSource.getId(); + HyPartnerUserChannelDO selectByChannel = hyPartnerUserChannelMapper.selectByChannelId(id); + HyPartnerUserChannelDO hyPartnerUserChannel = new HyPartnerUserChannelDO(); + hyPartnerUserChannel.setChannelId(channelSource.getId()).setChannelName(channelSource.getName()); + //有就更新 没有插入 + if (ObjectUtil.isNotNull(selectByChannel)) { + hyPartnerUserChannel.setUpdateTime(new Date()).setId(selectByChannel.getId()); + hyPartnerUserChannelMapper.updateByPrimaryKeySelective(hyPartnerUserChannel); + }else { + hyPartnerUserChannel.setCreateTime(new Date()); + hyPartnerUserChannelMapper.insertSelective(hyPartnerUserChannel); + } + } + } + + /** + * 同步ec数据到表中 同时将部分数据同步到ec + * + * @param customerInfoItem + */ + @Transactional(rollbackFor = Exception.class) + public void insertSelectiveSync(CustomerInfoRequest customerInfoItem) throws ApiException { + if (StringUtil.isNotEmpty(customerInfoItem.getMobile())) { + customerInfoItem.setMobile(customerInfoItem.getMobile().split(" ")[1]); + } + //获取客户来源id + String channel = customerInfoItem.getChannel(); + HyPartnerUserChannelDO hyPartnerUserChannelDO = hyPartnerUserChannelMapper.selectByChannelName(channel); + Long channelId =null; + if (StringUtil.isNotEmpty(channel)) { + if (ObjectUtil.isNull(hyPartnerUserChannelDO)||ObjectUtil.isNull(hyPartnerUserChannelDO.getId())) { + getChannelSource(); + HyPartnerUserChannelDO channelDO = hyPartnerUserChannelMapper.selectByChannelName(channel); + channelId=channelDO.getId(); + }else { + HyPartnerUserChannelDO channelDO = hyPartnerUserChannelMapper.selectByChannelName(channel); + channelId=channelDO.getId(); + } + } + String newPartnerId = UUIDUtils.get32UUID(); + HyPartnerUserInfoDO resultUser = new HyPartnerUserInfoDO(); + resultUser.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile()); + + HyPartnerLineInfoDO resultLine = new HyPartnerLineInfoDO(); + String followUserName = customerInfoItem.getFollowUserName(); + String followUserMobile = customerInfoItem.getFollowUserMobile(); + //传递过来有跟进人的情况下查询跟进人是否存在 + if (StringUtil.isNotEmpty(followUserMobile)&&StringUtil.isNotEmpty(followUserMobile)) { + String userId = enterpriseUserDAO.selectByMobile("+86"+followUserMobile); + if (StringUtil.isEmpty(userId)) { + // 给飞书群发送消息 跟进人找不到 + sendFeiShuRobotMessage("推送:飞书架构中找不到该用户:【" + followUserName + "】,该用户电话号码为:" + followUserMobile,"27243d49-97ca-4981-8aec-7c3bf84eb660"); + throw new ApiException("飞书架构中找不到该用户:【" + followUserName + "】,该用户电话号码为:" + followUserMobile); + } + resultLine.setInvestmentManager(userId); + } + resultLine.setWorkflowStage(WorkflowStageEnum.INTENT.getCode()).setUserChannelId(Convert.toInt(channelId)) + .setLineStatus(StringUtil.isEmpty(customerInfoItem.getFollowUserName()) ? LineStatusEnum.PUBLIC_SEAS.getCode() : LineStatusEnum.PRIVATE_SEAS.getCode()); + + HyPartnerBaseInfoDO resultBase = new HyPartnerBaseInfoDO(); + resultBase.setUsername(customerInfoItem.getName()).setMobile(customerInfoItem.getMobile()); + + HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(resultUser.getMobile()); + EcClient ecClient=new EcClient(); + //有就更新ec没有就插入 + if (newUserInfo != null) { + // EC与沪姨合伙人同时存在的线索用户,但用户姓名不同,将沪姨合伙人线索姓名同步至EC覆盖原EC线索姓名 + if (!newUserInfo.getUsername().equals(resultUser.getUsername())) { + UpdateCustomerRequest updateUserRequest=new UpdateCustomerRequest(); + UpdateCustomerBo updateCustomerBo = new UpdateCustomerBo(); + updateCustomerBo.setUsername(newUserInfo.getUsername()).setMobile(newUserInfo.getMobile()).setCrmId(customerInfoItem.getCrmId()); + updateUserRequest.setParameter(updateCustomerBo); + UpdateCustomerResponse updateUserExec = ecClient.exec(baseUrl,updateUserRequest); + } + String oldPartnerId = newUserInfo.getPartnerId(); + //线索表 + HyPartnerLineInfoDO partnerLine = hyPartnerLineInfoDAO.getByPartnerId(oldPartnerId); + if (partnerLine != null) { + // EC与沪姨合伙人同时存在的线索用户,但存在不同的跟进人,将沪姨合伙人跟进人信息同步至EC覆盖原EC跟进人信息 + if (StringUtil.isEmpty(partnerLine.getInvestmentManager())) { + if (StringUtil.isNotEmpty(resultLine.getInvestmentManager())) { + resultLine.setId(partnerLine.getId()).setUpdateTime(new Date()); + hyPartnerLineInfoDAO.updateByPrimaryKeySelective(resultLine); + } + }else { + EnterpriseUserDO enterpriseUser = enterpriseUserDAO.getUserInfoById(partnerLine.getInvestmentManager()); + enterpriseUser.setMobile(getNoWith86Number(enterpriseUser.getMobile())); + //电话相同但是名字不同 + if (enterpriseUser.getMobile().equals(followUserMobile) && !enterpriseUser.getName().equals(followUserName)) { + ChangeFollowUserRequest changeFollowUserRequest = new ChangeFollowUserRequest(); + ChangeFollowUserBo changeFollowUserBo = new ChangeFollowUserBo(); + changeFollowUserBo.setFollowUserId(customerInfoItem.getLastFollowUserId()).setCrmId(customerInfoItem.getCrmId()) + .setType(1).setUsername(enterpriseUser.getName()).setMobile(enterpriseUser.getMobile()); + changeFollowUserRequest.setParameter(changeFollowUserBo); + ChangeFollowUserResponse changeFollowUserExec = ecClient.exec(baseUrl,changeFollowUserRequest); + } + //电话不同 + if (!enterpriseUser.getMobile().equals(followUserMobile)) { + ChangeFollowUserRequest changeFollowUserRequest = new ChangeFollowUserRequest(); + ChangeFollowUserBo changeFollowUserBo = new ChangeFollowUserBo(); + changeFollowUserBo.setFollowUserId(customerInfoItem.getLastFollowUserId()).setCrmId(customerInfoItem.getCrmId()) + .setType(2).setUsername(enterpriseUser.getName()).setMobile(enterpriseUser.getMobile()); + changeFollowUserRequest.setParameter(changeFollowUserBo); + ChangeFollowUserResponse changeFollowUserExec = ecClient.exec(baseUrl,changeFollowUserRequest); + } + } + //base表 + HyPartnerBaseInfoDO partnerIdAndLine = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(partnerLine.getPartnerId(), partnerLine.getId()); + if (partnerIdAndLine == null) { + resultBase.setPartnerId(newPartnerId).setPartnerLineId(partnerLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())). + setCreateTime(new Date()); + hyPartnerBaseInfoDAO.insertSelective(resultBase); + } + } else { + resultLine.setPartnerId(newPartnerId).setCreateTime(new Date()); + hyPartnerLineInfoDAO.insertSelective(resultLine); + + resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())). + setCreateTime(new Date()); + hyPartnerBaseInfoDAO.insertSelective(resultBase); + } + } else { + resultUser.setPartnerId(newPartnerId).setCreateTime(new Date()); + hyPartnerUserInfoDAO.insertSelective(resultUser); + + resultLine.setPartnerId(newPartnerId).setCreateTime(new Date()); + hyPartnerLineInfoDAO.insertSelective(resultLine); + + resultBase.setPartnerId(newPartnerId).setPartnerLineId(resultLine.getId()).setStatus(Integer.valueOf(WorkflowStatusEnum.INTENT_0.getCode())). + setCreateTime(new Date()); + hyPartnerBaseInfoDAO.insertSelective(resultBase); + } + } + + /** + * 得到不带86开头的号码 + * + * @param number + * @return + */ + public static String getNoWith86Number(String number) { + String regular = number; + if (StringUtils.isNotBlank(regular)) { + // 去掉+号 + while (regular.startsWith("+")) { + regular = regular.substring(1); + } + // 号码以0开始,去掉前缀 + while (regular.startsWith("0")) { + regular = regular.substring(1); + } + // 号码以86开始,去掉前缀 + while (regular.startsWith("86")) { + regular = regular.substring(2); + } + // 号码以0开始,去掉前缀 + while (regular.startsWith("0")) { + regular = regular.substring(1); + } + } + return regular; + } + + + /** + * 发送飞书机器人 + * + * @param text + * @param token + * @return + */ + public String sendFeiShuRobotMessage(String text, String token) { + HashMap map = new HashMap<>(4); + HashMap textMap = new HashMap(4); + textMap.put("text", text); + map.put("content", textMap); + map.put("msg_type", "text"); + String body = JSON.toJSONString(map); + String send = ""; + try { + send = Post.send("https://open.feishu.cn/open-apis/bot/v2/hook/" + token, body, new HashMap(4) {{ + put("Content-Type", "application/json"); + }}); + } catch (IOException e) { + e.printStackTrace(); + } + return send; + } + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/Client.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/Client.java new file mode 100644 index 000000000..17f4aeeb4 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/Client.java @@ -0,0 +1,164 @@ +package com.cool.store.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +/** + * @author leoxie + */ +public class Client { + + private String url; + private String method = "POST"; + private HashMap header; + private String data; + private Integer timeout = 8000; + private Integer maxLength = 10000; + + private static final Logger log = LoggerFactory.getLogger(Client.class); + + public String exec() throws IOException { + + HttpURLConnection connection = null; + OutputStreamWriter out = null; + BufferedReader reader = null; + StringBuilder res = null; + String result = null; + Long optTime = 0L; + InputStream is = null; + + LocalDateTime beginTime = LocalDateTime.now(); + + URL url = new URL(getUrl()); + connection = (HttpURLConnection) url.openConnection(); + + try { + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + + //设置超时时间 + connection.setConnectTimeout(getTimeout()); + connection.setReadTimeout(getTimeout()); + + // 设置请求方式 + connection.setRequestMethod(getMethod()); + // 设置发送数据的格式 + if (!getHeader().isEmpty()) { + for (Map.Entry entry : getHeader().entrySet()) { + connection.setRequestProperty(entry.getKey(), entry.getValue()); + } + } + //发起连接 + connection.connect(); + + // utf-8编码[推送提交的参数] + if (!getData().isEmpty()) { + out = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8); + out.append(getData()); + out.flush(); + out.close(); + } + + if(connection.getResponseCode() > 2000){ + is = connection.getErrorStream(); + }else{ + is = connection.getInputStream(); + } + // 读取响应 + reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + String line; + res = new StringBuilder(); + while ((line = reader.readLine()) != null) { + res.append(line); + } + reader.close(); + + result = res.toString(); + return result; + + }catch (Exception e){ + throw e; + }finally { + if (connection != null){ + connection.disconnect(); + } + + if(out != null){ + out.close(); + } + + if(reader != null){ + reader.close(); + } + +// log.info("request url is : " + getUrl()); +// log.info("request params is : " + getData()); +// if(result != null && result.length() < maxLength) { +// log.info("response : " + result); +// } +// optTime = Duration.between(beginTime,LocalDateTime.now()).toMillis(); +// log.info("response time: " + optTime.toString()); + } + } + + public String getUrl() { + assert !url.isEmpty(); + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getMethod() { + assert !method.isEmpty(); + return method; + } + + public void setMethod(String method) { + this.method = method; + } + + public HashMap getHeader() { + return header; + } + + public void setHeader(HashMap header) { + this.header = header; + } + + public String getData() { + return data; + } + + /** + * 提交参数 + * + * 如果是json形式,那么就是json字符串, + * 如果是表单形式,就是name1=value1&name2=value2 的形式 + * @param data + */ + public void setData(String data) { + this.data = data; + } + + public Integer getTimeout() { + return timeout; + } + + public void setTimeout(Integer timeout) { + this.timeout = timeout; + } + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/Get.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/Get.java new file mode 100644 index 000000000..c1a6a810f --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/Get.java @@ -0,0 +1,104 @@ +package com.cool.store.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author leoxie + */ +public class Get { + + private static final Logger log = LoggerFactory.getLogger(Get.class); + + private static final Integer connectTimeout = 1000; + private static final Integer timeout = 5000; + + public static String send(String url, String param) throws IOException { + return send(url,param,true); + } + + /** + * 向指定URL发送GET方法的请求 + * + * @param url 发送请求的URL + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return URL 所代表远程资源的响应结果 + */ + public static String send(String url, String param,boolean hasLog) throws IOException { + return send(url, param, hasLog, null); + } + + public static String send(String url, String param, boolean hasLog, HashMap headers) throws IOException { + StringBuilder result = new StringBuilder(); + BufferedReader reader = null; + HttpURLConnection connection = null; + + try { + String urlNameString = url + (param.isEmpty()?"":"?" + param); + + log.info("url:"+url); + log.info("param:"+param); + + URL realUrl = new URL(urlNameString); + // 打开和URL之间的连接 + connection = (HttpURLConnection)realUrl.openConnection(); + // 设置通用的请求属性 + connection.setRequestProperty("accept", "*/*"); + connection.setRequestProperty("connection", "Keep-Alive"); + connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + + //添加头部信息 + if(headers != null && !headers.isEmpty()){ + for (Map.Entry entry:headers.entrySet()) { + connection.setRequestProperty(entry.getKey(),entry.getValue()); + } + } + + connection.setConnectTimeout(connectTimeout); + connection.setReadTimeout(timeout); + // 建立实际的连接 + connection.connect(); + + // 获取所有响应头字段 + Map> responseHeader = connection.getHeaderFields(); + // 遍历所有的响应头字段 + if(hasLog) { + log.info("响应头"); + for (String key : responseHeader.keySet()) { + log.info(key + "--->" + responseHeader.get(key)); + } + } + + // 定义 BufferedReader输入流来读取URL的响应 + reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + while ((line = reader.readLine()) != null) { + result.append(line); + } + + if(hasLog) { + log.info("响应结果:" + result.toString()); + } + + return result.toString(); + } finally { + if (connection != null){ + connection.disconnect(); + } + + if (reader != null) { + reader.close(); + } + } + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/MapUtil.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/MapUtil.java new file mode 100644 index 000000000..d4fc55063 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/MapUtil.java @@ -0,0 +1,123 @@ +package com.cool.store.utils; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +public class MapUtil { + public static void setMapValue(Map hashMap, String name, T value) { + if (value == null) { + return; + } + hashMap.put(name, value); + } + + public static void setMapObjectValue(Map hashMap, T obj) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + if (obj == null) { + return; + } + Field[] fields = obj.getClass().getDeclaredFields(); + for (Field field : fields) { + String name = field.getName(); + String uName = name.substring(0, 1).toUpperCase() + name.substring(1); + + Method m = obj.getClass().getMethod("get" + uName); + Object value = m.invoke(obj); + if (value == null) { + continue; + } + // 基础类型 + if (isBaseType(value)) { + setMapValue(hashMap, name, value); + } else if (value instanceof List) { + if (((List) value).size() > 0) { + setMapObjectValue(hashMap, ((List) value).get(0)); + } + } else { + setMapObjectValue(hashMap, value); + } + } + + } + + public static boolean isBaseType(Object object) { + Class className = object.getClass(); + return className.equals(Integer.class) || + className.equals(Byte.class) || + className.equals(Long.class) || + className.equals(Double.class) || + className.equals(Float.class) || + className.equals(Character.class) || + className.equals(Short.class) || + className.equals(Boolean.class) || + className.equals(String.class); + } + + /** + * 实体类对象转URL参 + * @param t 实体类对象 + * @param callSuper 是否转换父类成员 + * @param 实体类泛型 + * @return a=1&b=2 + */ + public static String entityToUrlParam(T t, boolean callSuper){ + // URL 参数存储器 + StringBuffer urlParam = new StringBuffer(); + //扩展转换父类成员功能 + entitySuperclassToUrlParam(t, t.getClass(),callSuper,urlParam); + if(urlParam.length()>0){ + //去除最后一个&字符 + urlParam.deleteCharAt(urlParam.length() - 1); + } + return urlParam.toString(); + } + + public static String entityToUrlParam(T t) { + if (t == null) { + return null; + } + return entityToUrlParam(t, true); + } + + /** + * 实体类对象转URL参 + * @param t 实体类对象 + * @param clazz 实体类类型 + * @param callSuper 是否转换父类成员 + * @param urlParam URL 参数存储器 + * @param 实体类泛型 + * @return a=1&b=2 + */ + @Deprecated + public static void entitySuperclassToUrlParam(T t,Class clazz,boolean callSuper,StringBuffer urlParam){ + //如果实体类对象为Object类型,则不处理 + if(!clazz.equals(Object.class)) { + //获取实体类对象下的所有成员,并保存到 URL 参数存储器中 + Arrays.stream(clazz.getDeclaredFields()).forEach(field -> { + //设置可以操作私有成员 + field.setAccessible(true); + try { + //获取成员值 + Object value = field.get(t); + //成员值为 Null 时,则不处理 + if (Objects.nonNull(value)) { + urlParam.append(field.getName()).append("=").append(value).append("&"); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + }); + //是否转换父类成员 + if(callSuper){ + //获取父类类型 + clazz = clazz.getSuperclass(); + //递归调用,获取父类的处理结果 + entitySuperclassToUrlParam(t,clazz,callSuper,urlParam); + } + } + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/Post.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/Post.java new file mode 100644 index 000000000..b1a393f5b --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/Post.java @@ -0,0 +1,37 @@ +package com.cool.store.utils; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * @author leoxie + */ +public class Post { + + /** + * 向指定 URL 发送POST方法的请求 + * @param url 发送请求的 URL + * @param data 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + public static String send(String url, String data,HashMap headers) throws IOException { + Client client = new Client(); + client.setData(data); + client.setUrl(url); + + HashMap headerMap = new HashMap<>(16); + headerMap.put("Content-Type","application/x-www-form-urlencoded"); + + //添加头部信息 + if(!headers.isEmpty()){ + for (Map.Entry entry:headers.entrySet()) { + headerMap.put(entry.getKey(),entry.getValue()); + } + } + client.setHeader(headerMap); + + return client.exec(); + } + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java index aeb9c1d94..ebf870094 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -44,7 +44,7 @@ public class TokenValidateFilter implements Filter { Lists.newArrayList("/web/check/ok","/check/ok", "/partner/pc/doc.html","/partner/pc/v2/api-docs","/**/test/**","/partner/pc/feiShuLogin","/partner/pc/oss/getUploadFileConfig", - "/**/swagger*/**", "/**/webjars/**"); + "/**/swagger*/**", "/**/webjars/**","/**/ecSync/ecToApplet/**"); /** diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/EcSyncController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/EcSyncController.java new file mode 100644 index 000000000..4cebd591d --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/EcSyncController.java @@ -0,0 +1,31 @@ +package com.cool.store.controller; + + +import com.cool.store.request.CustomerInfoRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.EcSyncService; +import com.cool.store.vo.InterviewScheduleInfoVO; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + + +@RestController +@RequestMapping("/ecSync") +@Slf4j +public class EcSyncController { + + + @Resource + private EcSyncService ecSyncService; + + @PostMapping(path = "/ecToApplet") + @ApiOperation("ec同步数据到小程序") + public ResponseResult ecToApplet(@RequestBody List queryListData){ + return ResponseResult.success(ecSyncService.ecToApplet(queryListData)); + } + +} From ed67556619e7931610dcc64983779f19649a5e80 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Wed, 28 Jun 2023 18:01:25 +0800 Subject: [PATCH 12/28] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cool/store/job/EcSyncDataJob.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java b/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java index f9e46fbc4..74daff82c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java @@ -60,7 +60,7 @@ public class EcSyncDataJob { //定时同步小程序数据到ec private void syncAppletToEcExecute() { //获取总数 - int size = hyPartnerUserInfoMapper.selectByHourDateCount(getHourDayDate(-1, 0), DateUtil.now()); + int size = hyPartnerUserInfoMapper.selectByHourDateCount(getHourDayDate(-5, 0), DateUtil.now()); //执行数 int counts = size / count; //取余,如果大于1,就再加一 @@ -69,7 +69,7 @@ public class EcSyncDataJob { counts += 1; } for (int i = 1; i <= counts; i++) { - List list = hyPartnerUserInfoMapper.selectByHourDate(getHourDayDate(-1, 0), DateUtil.now(),count * (i - 1),count); + List list = hyPartnerUserInfoMapper.selectByHourDate(getHourDayDate(-5, 0), DateUtil.now(),count * (i - 1),count); SyncEcCustomerRequest syncEcCustomerRequest = new SyncEcCustomerRequest(); syncEcCustomerRequest.setParameter(list); EcClient ecClient = new EcClient(); From d16331560d69fd77c8b9ecdea452762b0d3b7262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Wed, 28 Jun 2023 18:20:36 +0800 Subject: [PATCH 13/28] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E7=BA=BF=E7=B4=A2id=E6=9F=A5=E8=AF=A2=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerInterviewMapper.java | 1 + .../mapper/HyPartnerInterviewMapper.xml | 8 ++++++++ .../dto/partner/LineQueryInterviewDto.java | 12 ++++++++++++ .../HyPartnerInterviewPlanService.java | 5 +++-- .../service/HyPartnerLineInfoService.java | 2 +- .../service/PartnerInterviewService.java | 5 +++++ .../cool/store/service/WorkFlowService.java | 2 +- .../HyPartnerInterviewPlanServiceImpl.java | 7 ++++--- .../impl/HyPartnerLineInfoServiceImpl.java | 2 +- .../impl/PartnerInterviewServiceImpl.java | 6 ++++++ .../service/impl/WorkFlowServiceImpl.java | 2 +- .../workflow/InterviewWorkFlowService.java | 19 ++++++++++++++++++- .../impl/workflow/WorkFlowBaseService.java | 2 +- .../store/controller/InterviewController.java | 16 ++++++++++++---- 14 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/LineQueryInterviewDto.java diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java index 28472bf8e..b36804eb7 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java @@ -35,6 +35,7 @@ public interface HyPartnerInterviewMapper { * @return */ PartnerInterviewInfoVO queryByPartnerId(@Param("partnerId") String partnerId); + PartnerInterviewInfoVO queryByPartnerLineId(@Param("partnerLineId") String partnerLineId); /** * 根据会议 id 查询面试官 id diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml index 48dad0be1..3bf931cae 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml @@ -477,6 +477,14 @@ FROM hy_partner_interview WHERE interview_plan_id = #{interviewPlanId} + diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/LineQueryInterviewDto.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/LineQueryInterviewDto.java new file mode 100644 index 000000000..bf01e58bc --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/LineQueryInterviewDto.java @@ -0,0 +1,12 @@ +package com.cool.store.dto.partner; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class LineQueryInterviewDto { + + @ApiModelProperty("加盟商线索id") + private String partnerLineId; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java index 8303b40de..c4351a7f1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java @@ -1,5 +1,6 @@ package com.cool.store.service; +import com.cool.store.exception.ApiException; import com.cool.store.vo.InterviewDetailInfoVO; import com.cool.store.vo.PartnerInterviewInfoVO; import com.github.pagehelper.PageInfo; @@ -46,7 +47,7 @@ public interface HyPartnerInterviewPlanService { * updateInterviewOverTime * @return */ - void updateInterviewOverTime(); + void updateInterviewOverTime() throws ApiException; /** * 批量打开十分钟之内开始的面试房间 @@ -60,5 +61,5 @@ public interface HyPartnerInterviewPlanService { * updateInterviewOverTime * @return */ - void updateAbsentInterview(); + void updateAbsentInterview() throws ApiException; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java index c1fd5af9a..ca51f1c12 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java @@ -100,7 +100,7 @@ public interface HyPartnerLineInfoService { * @param closeFollowRequest * @return */ - Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest); + Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) throws ApiException; /** * 公海线索 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java index 85c24fed1..fc090431c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PartnerInterviewService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.dto.partner.EnterInterviewDto; +import com.cool.store.dto.partner.LineQueryInterviewDto; import com.cool.store.exception.ApiException; import com.cool.store.request.ModifyInterviewTimeReq; import com.cool.store.vo.EnterInterviewVO; @@ -16,6 +17,8 @@ public interface PartnerInterviewService { */ PartnerInterviewInfoVO queryByPartnerId(String partnerId); + PartnerInterviewInfoVO queryByPartnerLineId(LineQueryInterviewDto request) throws ApiException; + /** * 进入面试间的方法 * 修改一些面试状态 @@ -35,4 +38,6 @@ public interface PartnerInterviewService { */ void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException; + + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/WorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/WorkFlowService.java index 5c7a408a7..b81f2daa6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/WorkFlowService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/WorkFlowService.java @@ -18,7 +18,7 @@ public interface WorkFlowService { * @param workflowStage * @param request */ - void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request); + void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) throws ApiException; /** * 转让招商经理 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java index 5a45b2067..dcc219dc4 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -8,6 +8,7 @@ import com.cool.store.entity.*; import com.cool.store.enums.RoomStatus; import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.exception.ApiException; import com.cool.store.mapper.HyPartnerInterviewMapper; import com.cool.store.mapper.HyPartnerInterviewPlanMapper; import com.cool.store.mapper.HyPartnerLineInfoMapper; @@ -170,7 +171,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan @Override @Transactional - public void updateInterviewOverTime() { + public void updateInterviewOverTime() throws ApiException { List overTimeReserveLineList = hyPartnerLineInfoMapper.getOverTimeReserveLineList(new Date(), WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode()); if(CollectionUtils.isEmpty(overTimeReserveLineList)){ return; @@ -201,7 +202,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan @Override @Transactional - public void updateAbsentInterview() { + public void updateAbsentInterview() throws ApiException { Date now = new Date(); //查询当天未参加的面试 String startTime = DateUtil.formatDateTime(DateUtil.offsetHour(now,-6)); @@ -223,7 +224,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan * @param interviewBaseInfoList * @param rejectPublicReason */ - public void handleOverTimeInterview(List interviewBaseInfoList,String rejectPublicReason){ + public void handleOverTimeInterview(List interviewBaseInfoList,String rejectPublicReason) throws ApiException { //1.更新面试信息表中超时的面试信息 List interviewIds = interviewBaseInfoList.stream().map(HyPartnerInterviewDO::getId).distinct().collect(Collectors.toList()); hyPartnerInterviewMapper.batchUpdateInterviewStatus(interviewIds,Integer.valueOf(WorkflowStatusEnum.RESERVATION_8.getCode()),1); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index a6b1bd038..58a29c24c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -318,7 +318,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { @Override @Transactional(rollbackFor = Exception.class) - public Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) { + public Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) throws ApiException { HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId()); if (hyPartnerLineInfoDO==null){ throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java index 51f8151ab..d41148052 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerInterviewServiceImpl.java @@ -7,6 +7,7 @@ import com.cool.store.context.PartnerUserHolder; import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dto.log.ModifyInterviewTimeDTO; import com.cool.store.dto.partner.EnterInterviewDto; +import com.cool.store.dto.partner.LineQueryInterviewDto; import com.cool.store.entity.HyPartnerInterviewDO; import com.cool.store.entity.HyPartnerInterviewPlanDO; import com.cool.store.enums.ErrorCodeEnum; @@ -68,6 +69,11 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService { return interviewMapper.queryByPartnerId(partnerId); } + @Override + public PartnerInterviewInfoVO queryByPartnerLineId(LineQueryInterviewDto request) throws ApiException { + return interviewMapper.queryByPartnerLineId(request.getPartnerLineId()); + } + /** * 进入面试间的方法 * 修改一些面试状态 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WorkFlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WorkFlowServiceImpl.java index 1a40d3cb6..1a3e9c3ad 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WorkFlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WorkFlowServiceImpl.java @@ -35,7 +35,7 @@ public class WorkFlowServiceImpl implements WorkFlowService{ @Override - public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) { + public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) throws ApiException { getWorkflowService(workflowStage).endProcess(request); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java index b8b3258b1..dfe6e1122 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java @@ -24,6 +24,7 @@ import com.cool.store.utils.CoolDateUtils; import com.cool.store.vo.interview.InterviewVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -61,7 +62,7 @@ public class InterviewWorkFlowService extends WorkFlowBaseService { } @Override - public void endProcess(CloseFollowRequest request) throws ServiceException{ + public void endProcess(CloseFollowRequest request) throws ApiException { Long lineId = request.getLineId(); //根据线索id查询面试信息 List interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId)); @@ -69,6 +70,22 @@ public class InterviewWorkFlowService extends WorkFlowBaseService { throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST); } HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0); + InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(String.valueOf(interviewBaseInfo.getInterviewPlanId())); + if(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()) == interviewBaseInfo.getStatus() + && StringUtils.isNotEmpty(interviewInfo.getRoomStatus()) + && String.valueOf(RoomStatus.WAIT_FOR_OPEN.getCode()).equals(interviewInfo.getRoomStatus()) + && StringUtils.isNotEmpty(interviewInfo.getFeishuCalendarId()) + && StringUtils.isNotEmpty(interviewInfo.getFeishuScheduleId())){ + // 原面试官日程删除 + DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO(); + deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId()); + deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId()); + deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId()); + UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO); + if(userCalendarsEventDTO == null ){ + throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR); + } + } interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null); //记录日志 LoginUserInfo operator = CurrentUserHolder.getUser(); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/WorkFlowBaseService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/WorkFlowBaseService.java index 1d32dd1dc..4b60a7017 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/WorkFlowBaseService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/WorkFlowBaseService.java @@ -23,7 +23,7 @@ public abstract class WorkFlowBaseService { * 结束流程 * @param request */ - public abstract void endProcess(CloseFollowRequest request); + public abstract void endProcess(CloseFollowRequest request) throws ApiException; /** * 转让招商经理 diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java index fd4ae835a..ad22ef790 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/InterviewController.java @@ -1,6 +1,7 @@ package com.cool.store.controller; import com.cool.store.dto.partner.EnterInterviewDto; +import com.cool.store.dto.partner.LineQueryInterviewDto; import com.cool.store.dto.partner.PartnerGetPassLetterDetailDto; import com.cool.store.dto.partner.PartnerQueryInterviewDto; import com.cool.store.exception.ApiException; @@ -30,12 +31,19 @@ public class InterviewController { @Autowired private InterviewService interviewBaseService; - @PostMapping("/queryByPartnerId") - @ApiOperation("根据用户id查询面试信息") - public ResponseResult queryByPartnerId(@RequestBody PartnerQueryInterviewDto dto) { - return ResponseResult.success(interviewService.queryByPartnerId(dto.getPartnerId())); +// @PostMapping("/queryByPartnerId") +// @ApiOperation("根据用户id查询面试信息") +// public ResponseResult queryByPartnerId(@RequestBody PartnerQueryInterviewDto dto) { +// return ResponseResult.success(interviewService.queryByPartnerId(dto.getPartnerId())); +// } + + @PostMapping("/queryByPartnerLineId") + @ApiOperation("根据线索id查询面试信息") + public ResponseResult queryByPartnerLineId(@RequestBody LineQueryInterviewDto dto) throws ApiException { + return ResponseResult.success(interviewService.queryByPartnerLineId(dto)); } + @PostMapping("/enter") @ApiOperation("进入面试间") public ResponseResult enterInterviewRoom(@RequestBody EnterInterviewDto dto) throws ApiException { From 11e406674a8c715c90d867dabb683801ca6b776f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Wed, 28 Jun 2023 18:23:02 +0800 Subject: [PATCH 14/28] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E7=BA=BF=E7=B4=A2id=E6=9F=A5=E8=AF=A2=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cool/store/controller/DeskController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 78be148b6..fdfc79508 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 @@ -243,7 +243,7 @@ public class DeskController { @PostMapping(path = "/closeOrPassFollow") @ApiOperation("意向申请审核 结束跟进/通过流程") - public ResponseResult closeOrPassFollow(@RequestBody CloseFollowRequest closeFollowRequest){ + public ResponseResult closeOrPassFollow(@RequestBody CloseFollowRequest closeFollowRequest) throws ApiException { return ResponseResult.success(hyPartnerLineInfoService.closeOrPassFollow(CurrentUserHolder.getUser(),closeFollowRequest)); } From 352caa9c164ee7320a8114922e7530974bf54490 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Wed, 28 Jun 2023 18:26:10 +0800 Subject: [PATCH 15/28] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-local.properties | 12 ++++++++++-- .../src/main/resources/application-pre.properties | 5 ++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-webb/src/main/resources/application-local.properties b/coolstore-partner-webb/src/main/resources/application-local.properties index d5e753069..e003e9a7a 100644 --- a/coolstore-partner-webb/src/main/resources/application-local.properties +++ b/coolstore-partner-webb/src/main/resources/application-local.properties @@ -58,6 +58,7 @@ cdn.url=https://testhsaypic.coolstore.cn #TRTC trtc.sdkAppId=1400811820 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 +trtc.video.callback.secretKey=1ECEAD34DBD84E838BF07FC7360EA4D8 weixin.appId=wx6f984e535e571818 weixin.appSecret=245a483747e6e9f8762d3e8539cf0318 @@ -65,14 +66,21 @@ weixin.appSecret=245a483747e6e9f8762d3e8539cf0318 signKey=77fea013c3a6459685b83c21a2fc3411 #MDM -hs.mdm.baseUrl=http://10.56.21.30/ +hs.mdm.baseUrl=http://10.56.21.30 hs.mdm.appkey = HSAYPartner hs.mdm.appsec = ab39fedb886fa3587c7f517551976de8b2606f5511fd8f8675266825d74c5cd3 +#sms +hs.sms.accessKeyId = LTAI4GEZKz9PBqqKa3hjup3W +hs.sms.accessKeySecret = iVOiK74k7C1wVbuUbipgJbfpAh1Zdb +hs.sms.templateCode = SMS_461530041 + xxl.job.admin.addresses = xxl.job.executor.appname = ${spring.application.name} xxl.job.executor.ip = xxl.job.executor.port = 30201 xxl.job.executor.logpath = logs/xxl-job/jobhandler xxl.job.executor.logretentiondays = 30 -xxl.job.accessToken = \ No newline at end of file +xxl.job.accessToken = + +ec.baseUrl=http://58.33.58.162:10019 \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-pre.properties b/coolstore-partner-webb/src/main/resources/application-pre.properties index b055f644a..d5a71d6f8 100644 --- a/coolstore-partner-webb/src/main/resources/application-pre.properties +++ b/coolstore-partner-webb/src/main/resources/application-pre.properties @@ -56,4 +56,7 @@ trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 weixin.appId=wx6f984e535e571818 weixin.appSecret=245a483747e6e9f8762d3e8539cf0318 -signKey=d851f2a9ac90474abecdc2fbb148d4d7 \ No newline at end of file +signKey=d851f2a9ac90474abecdc2fbb148d4d7 + + +ec.baseUrl=http://58.33.58.162:10019 \ No newline at end of file From ebf2e710db89921f9c82c5bbe3c27487c41e2486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Wed, 28 Jun 2023 18:33:33 +0800 Subject: [PATCH 16/28] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cool/store/job/EcSyncDataJob.java | 2 +- .../java/com/cool/store/service/impl/EcSyncServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java b/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java index 74daff82c..d6254e622 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/EcSyncDataJob.java @@ -32,7 +32,7 @@ public class EcSyncDataJob { } - @Value("${ec.baseUrl}") + @Value("${ec.baseUrl:null}") private String baseUrl; @XxlJob("SyncAppletToEcJob") diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java index c8590dad6..a8f1b768f 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EcSyncServiceImpl.java @@ -46,7 +46,7 @@ public class EcSyncServiceImpl implements EcSyncService { - @Value("${ec.baseUrl}") + @Value("${ec.baseUrl:null}") private String baseUrl; @Resource From df7f8e19dce9ec9e638b9a52764294e25d394364 Mon Sep 17 00:00:00 2001 From: "xiaodong.hu" <1075471126@qq.com> Date: Wed, 28 Jun 2023 18:40:35 +0800 Subject: [PATCH 17/28] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=B9=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-ab.properties | 3 +++ .../src/main/resources/application-dev.properties | 5 ++++- .../src/main/resources/application-pre.properties | 2 -- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-webb/src/main/resources/application-ab.properties b/coolstore-partner-webb/src/main/resources/application-ab.properties index 3b37d8171..7104fe0e5 100644 --- a/coolstore-partner-webb/src/main/resources/application-ab.properties +++ b/coolstore-partner-webb/src/main/resources/application-ab.properties @@ -79,3 +79,6 @@ hs.mdm.appsec = ab39fedb886fa3587c7f517551976de8b2606f5511fd8f8675266825d74c5cd3 hs.sms.accessKeyId = LTAI4GEZKz9PBqqKa3hjup3W hs.sms.accessKeySecret = iVOiK74k7C1wVbuUbipgJbfpAh1Zdb hs.sms.templateCode = SMS_461530041 + + +ec.baseUrl=http://58.33.58.162:10019 \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-dev.properties b/coolstore-partner-webb/src/main/resources/application-dev.properties index 82a885d2c..60eb43cbe 100644 --- a/coolstore-partner-webb/src/main/resources/application-dev.properties +++ b/coolstore-partner-webb/src/main/resources/application-dev.properties @@ -71,4 +71,7 @@ xxl.job.executor.ip = xxl.job.executor.port = 31001 xxl.job.executor.logpath = logs/xxl-job/jobhandler xxl.job.executor.logretentiondays = 3 -xxl.job.accessToken = \ No newline at end of file +xxl.job.accessToken = + + +ec.baseUrl=http://58.33.58.162:10019 \ No newline at end of file diff --git a/coolstore-partner-webb/src/main/resources/application-pre.properties b/coolstore-partner-webb/src/main/resources/application-pre.properties index ce3f689a1..b522cf8d7 100644 --- a/coolstore-partner-webb/src/main/resources/application-pre.properties +++ b/coolstore-partner-webb/src/main/resources/application-pre.properties @@ -59,5 +59,3 @@ weixin.appSecret=245a483747e6e9f8762d3e8539cf0318 signKey=d851f2a9ac90474abecdc2fbb148d4d7 - -ec.baseUrl=http://58.33.58.162:10019 \ No newline at end of file From eff074b5b0b5fccbecd8becb136ec5ddc456c25b Mon Sep 17 00:00:00 2001 From: pserimal Date: Wed, 28 Jun 2023 18:40:41 +0800 Subject: [PATCH 18/28] =?UTF-8?q?=E8=B5=84=E8=B4=A8=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E5=9B=9E=E8=B0=83=E6=8E=A5=E5=8F=A3=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E5=8F=82=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/request/QualificationCallbackReq.java | 2 +- .../java/com/cool/store/service/impl/FlowServiceImpl.java | 8 +++++--- .../java/com/cool/store/controller/FlowController.java | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/QualificationCallbackReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/QualificationCallbackReq.java index 54dea3b24..be49a5e0e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/QualificationCallbackReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/QualificationCallbackReq.java @@ -12,7 +12,7 @@ public class QualificationCallbackReq { private String instanceId; @ApiModelProperty(value = "流程状态 已完成:FINISHED, 已作废:CANCELED", required = true) - private String sequenceStatus; + private String instanceStatus; @ApiModelProperty(value = "意向签约人", required = true) private String intendedSigner; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java index b1b0ac3a4..e096bcd97 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java @@ -17,6 +17,7 @@ import com.cool.store.dto.response.MDMResultDTO; import com.cool.store.entity.*; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.OperateTypeEnum; +import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.exception.ApiException; import com.cool.store.exception.ServiceException; @@ -223,7 +224,7 @@ public class FlowServiceImpl implements FlowService { public void qualificationCallback(QualificationCallbackReq request) { log.info("MDM800审批成功回调,request{}", JSONObject.toJSONString(request)); //1. 信息是否完整 - if (null == request.getSequenceStatus() || "".equals(request.getSequenceStatus())) { + if (null == request.getInstanceStatus() || "".equals(request.getInstanceStatus())) { log.error("MDM回调入参缺失,request{}", JSON.toJSONString(request)); throw new ServiceException("MDM回调错误!"); } @@ -234,7 +235,7 @@ public class FlowServiceImpl implements FlowService { throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST); } //审核通过 - if ("FINISHED".equals(request.getSequenceStatus())) { + if ("FINISHED".equals(request.getInstanceStatus())) { //更新面试状态 interviewDAO.updateInterviewWorkflowStatus(interviewPlanId, WorkflowStatusEnum.INTERVIEW_6); //2. 准备需要的信息 @@ -255,8 +256,9 @@ public class FlowServiceImpl implements FlowService { Date passDate = new Date(request.getModifiedTime()); //3. 生成通过函并修改数据库相关信息 genPassLetterAndUpdateDB(partnerName, verifyCity, passDate, interviewId); + // TODO 4. 修改流程状态到下一阶段 4 分配选址开发经理 //审核未通过 - } else if ("CANCELED".equals(request.getSequenceStatus())) { + } else if ("CANCELED".equals(request.getInstanceStatus())) { interviewDAO.updateInterviewWorkflowStatus(interviewPlanId, WorkflowStatusEnum.INTERVIEW_7); } } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/FlowController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/FlowController.java index 3430521af..81496a428 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/FlowController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/FlowController.java @@ -36,7 +36,7 @@ public class FlowController { } @PostMapping("/qualificationReview/callback") - @ApiOperation("流程信息回调接口") + @ApiOperation("加盟商资质审核流程信息回调接口") public ResponseResult qualificationCallback(@RequestBody QualificationCallbackReq request) { flowService.qualificationCallback(request); return ResponseResult.success(); From a440fcf7d233006bdb65bec3691b107fe8eeaf91 Mon Sep 17 00:00:00 2001 From: wxp01309236 Date: Wed, 28 Jun 2023 19:03:39 +0800 Subject: [PATCH 19/28] submitPartnerIntentInfo --- .../store/service/impl/HyPartnerIntentInfoServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java index a40744d49..94b01da7f 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java @@ -166,10 +166,9 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic hyPartnerLineInfoDO.setInvestmentManager(investmentManager); } hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); - HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(request.getWantShopArea())); - return hyOpenAreaInfoDO != null ? hyOpenAreaInfoDO.getAreaStatus() : null; } - return null; + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(request.getWantShopArea())); + return hyOpenAreaInfoDO != null ? hyOpenAreaInfoDO.getAreaStatus() : null; } @Override From 5734718ff00926113401f8aad5eae63e7c4e60c6 Mon Sep 17 00:00:00 2001 From: wxp01309236 Date: Wed, 28 Jun 2023 19:05:06 +0800 Subject: [PATCH 20/28] getAreaStatus --- .../store/service/impl/HyPartnerIntentInfoServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java index 94b01da7f..ff9b92002 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java @@ -167,8 +167,11 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic } hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } - HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(request.getWantShopArea())); - return hyOpenAreaInfoDO != null ? hyOpenAreaInfoDO.getAreaStatus() : null; + if (StringUtil.isNotBlank(request.getWantShopArea())){ + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(request.getWantShopArea())); + return hyOpenAreaInfoDO != null ? hyOpenAreaInfoDO.getAreaStatus() : null; + } + return null; } @Override From 88f15cc8363eef4f0c2d4e8da23267e7231fddad Mon Sep 17 00:00:00 2001 From: wxp01309236 Date: Wed, 28 Jun 2023 19:35:49 +0800 Subject: [PATCH 21/28] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/HyPartnerIntentInfoServiceImpl.java | 15 +++++++++++++++ .../service/impl/PartnerUserInfoServiceImpl.java | 6 ++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java index ff9b92002..161e1acc6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java @@ -108,6 +108,21 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic //修改意向申请信息中的加盟商名称与手机号 hyPartnerBaseInfoDAO.updateByPartnerId(baseUserInfoRequest.getUsername(),baseUserInfoRequest.getMobile(),baseUserInfoRequest.getPartnerId()); + + // 更新线索状态 + HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoService.generateDefaultLineInfo(hyPartnerUserInfoDO.getPartnerId(), baseUserInfoRequest.getWantShopArea(), baseUserInfoRequest.getAcceptAdjustType()); + + String cacheKey = MessageFormat.format(RedisConstant.PARTNER_INTENTINFO_CACHE_KEY, baseUserInfoRequest.getPartnerId(), hyPartnerLineInfoDO.getId()); + if (StringUtils.isNotBlank(redisUtilPool.getString(cacheKey))) { + PartnerIntentInfoRequest request = JSONObject.parseObject(redisUtilPool.getString(cacheKey), PartnerIntentInfoRequest.class); + if(!baseUserInfoRequest.getWantShopArea().equals(request.getWantShopArea()) + || !baseUserInfoRequest.getAcceptAdjustType().equals(request.getAcceptAdjustType())){ + request.setWantShopArea(baseUserInfoRequest.getWantShopArea()); + request.setAcceptAdjustType(baseUserInfoRequest.getAcceptAdjustType()); + redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS); + } + } + return Boolean.TRUE; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java index 3ca2efd2b..1e1cbb9cd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PartnerUserInfoServiceImpl.java @@ -117,10 +117,12 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService { String cacheKey = MessageFormat.format(RedisConstant.PARTNER_INTENTINFO_CACHE_KEY, partnerUserInfoRequest.getPartnerId(), hyPartnerLineInfoDO.getId()); if (StringUtils.isNotBlank(redisUtilPool.getString(cacheKey))) { PartnerIntentInfoRequest request = JSONObject.parseObject(redisUtilPool.getString(cacheKey), PartnerIntentInfoRequest.class); - if(!partnerUserInfoRequest.getWantShopArea().equals(request.getWantShopArea())){ + if(!partnerUserInfoRequest.getWantShopArea().equals(request.getWantShopArea()) + || !partnerUserInfoRequest.getAcceptAdjustType().equals(request.getAcceptAdjustType())){ request.setWantShopArea(partnerUserInfoRequest.getWantShopArea()); + request.setAcceptAdjustType(partnerUserInfoRequest.getAcceptAdjustType()); + redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS); } - redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request), RedisConstant.ONE_DAY_SECONDS); } return applyBaseInfoVO; } From 4519286928be58b5bee8d886a1ed700c64618541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 28 Jun 2023 19:56:36 +0800 Subject: [PATCH 22/28] userInfo --- .../main/resources/mapper/HyPartnerLineInfoMapper.xml | 2 +- .../cool/store/service/HyPartnerLineInfoService.java | 2 +- .../service/impl/HyPartnerLineInfoServiceImpl.java | 10 ++++++---- .../java/com/cool/store/controller/DeskController.java | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index 7317fa4e8..eff46ce7c 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -579,7 +579,7 @@ diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java index ca51f1c12..79e569b8c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerLineInfoService.java @@ -83,7 +83,7 @@ public interface HyPartnerLineInfoService { * @param joinReason * @return */ - Boolean joinBlackList(LoginUserInfo user, Long lineId, Integer status, String joinReason); + Boolean joinBlackList(LoginUserInfo user, Long lineId, Integer status, String joinReason) throws ApiException; /** * 移除黑名单 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java index e0fe9f3db..e4c17326a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerLineInfoServiceImpl.java @@ -244,7 +244,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { } @Override - public Boolean joinBlackList(LoginUserInfo user, Long lineId, Integer status, String joinReason) { + public Boolean joinBlackList(LoginUserInfo user, Long lineId, Integer status, String joinReason) throws ApiException { if (lineId==null){ throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } @@ -257,10 +257,13 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { hyPartnerLineInfoDO.setRejectRealReason(joinReason); hyPartnerLineInfoDO.setCloseTime(new Date()); hyPartnerLineInfoDO.setCloseUserId(user.getUserId()); - hyPartnerLineInfoDO.setWorkflowStage(WorkflowStageEnum.INTENT.getCode()); - hyPartnerLineInfoDO.setWorkflowStatus(WorkflowStatusEnum.INTENT_0.getCode()); hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); + CloseFollowRequest closeFollowRequest = new CloseFollowRequest(); + closeFollowRequest.setLineId(lineId); + closeFollowRequest.setRejectRealReason(joinReason); + workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(line.getWorkflowStage()),closeFollowRequest); + //添加日志 LineLogInfo lineLogInfo = new LineLogInfo(line.getPartnerId(), line.getId(), user.getUserId(), user.getName(), OperateTypeEnum.ADD_BLACKLIST, @@ -283,7 +286,6 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService { HyPartnerLineInfoDO hyPartnerLineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO(); hyPartnerLineInfoDO.setId(lineId); - hyPartnerLineInfoDO.setLineStatus(status); hyPartnerLineInfoDO.setRemoveBlackReason(removeReason); hyPartnerLineInfoDO.setDeleted(Boolean.TRUE); hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); 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 fdfc79508..65f8016e6 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 @@ -235,7 +235,7 @@ public class DeskController { @PostMapping(path = "/joinBlackList") @ApiOperation("加入黑名单") - public ResponseResult joinBlackList(@RequestBody LineBlackListRequest lineBlackListRequest){ + public ResponseResult joinBlackList(@RequestBody LineBlackListRequest lineBlackListRequest) throws ApiException { return ResponseResult.success(hyPartnerLineInfoService.joinBlackList(CurrentUserHolder.getUser(),lineBlackListRequest.getLineId(),LineStatusEnum.BLACKLIST.getCode(),lineBlackListRequest.getCause())); } From aad7bedce3492dab96f5b9b35bfe81caa6352208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 28 Jun 2023 20:44:41 +0800 Subject: [PATCH 23/28] userInfo --- .../com/cool/store/dao/HyPartnerInterviewPlanDAO.java | 4 ++-- .../store/mapper/HyPartnerInterviewPlanMapper.java | 3 ++- .../resources/mapper/HyPartnerInterviewPlanMapper.xml | 5 ++++- .../impl/HyPartnerInterviewPlanServiceImpl.java | 10 +++++----- 4 files changed, 13 insertions(+), 9 deletions(-) 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 index 6d4e544bd..eb00c0c47 100644 --- 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 @@ -75,11 +75,11 @@ public class HyPartnerInterviewPlanDAO { * @param workflowStatus * @return */ - public List getPartnerInterviewInfoList(String userId, String workflowStage,String workflowStatus){ + public List getPartnerInterviewInfoList(String userId, String workflowStage,String workflowStatus,Boolean filter){ if (StringUtils.isEmpty(userId)){ return Lists.newArrayList(); } - return hyPartnerInterviewPlanMapper.getPartnerInterviewInfoList(userId,workflowStage,workflowStatus); + return hyPartnerInterviewPlanMapper.getPartnerInterviewInfoList(userId,workflowStage,workflowStatus,filter); } public Long selectInterviewIdByLineId(Long lineId){ 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 c36dd2529..026de0d9a 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 @@ -72,7 +72,8 @@ public interface HyPartnerInterviewPlanMapper { */ List getPartnerInterviewInfoList(@Param("userId") String userId, @Param("workflowStage") String workflowStage , - @Param("workflowStatus") String workflowStatus); + @Param("workflowStatus") String workflowStatus, + @Param("filter") Boolean filter); /** * 查询面试列表 diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 227fd07e5..ad7094ddd 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -312,7 +312,10 @@ left join hy_partner_interview a on hpli.id = a.partner_line_id left join hy_partner_interview_plan b on a.interview_plan_id = b.id - and hpli.deleted = 0 and hpli.line_status!=3 and b.deleted = 0 + and hpli.deleted = 0 and hpli.line_status!=3 + + and b.deleted = 0 + and hpli.workflow_stage = #{workflowStage} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java index dcc219dc4..b47c93e32 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -65,6 +65,9 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan @Autowired private HyInterviewDAO interviewDAO; + @Resource + EnterpriseUserDAO enterpriseUserDAO; + @Override @@ -90,9 +93,6 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan return result; } - @Resource - EnterpriseUserDAO enterpriseUserDAO; - @Override public PageInfo getPartnerInterviewInfoList(String userId ,String type,Integer pageSize,Integer pageNumber) { String workflowStatus = ""; @@ -104,7 +104,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan } PageHelper.startPage(pageNumber,pageSize); //查询预约面试列表 - PageInfo partnerInterviewInfoList = new PageInfo(hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), workflowStatus)); + PageInfo partnerInterviewInfoList = new PageInfo(hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), workflowStatus,Boolean.FALSE)); List list = partnerInterviewInfoList.getList(); if (CollectionUtils.isEmpty(list)){ return partnerInterviewInfoList; @@ -145,7 +145,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan PageHelper.startPage(pageNumber,pageSize); //查询预约面试列表 - PageInfo partnerInterviewInfoList = new PageInfo(hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.INTERVIEW.getCode(),workflowStatus)); + PageInfo partnerInterviewInfoList = new PageInfo(hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.INTERVIEW.getCode(),workflowStatus,Boolean.TRUE)); List list = partnerInterviewInfoList.getList(); if (CollectionUtils.isEmpty(list)){ return partnerInterviewInfoList; From 0d8e9b99dc389afcd18fbe0d58bf7056014a3cb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Thu, 29 Jun 2023 02:00:14 +0800 Subject: [PATCH 24/28] =?UTF-8?q?=E8=85=BE=E8=AE=AF=E9=9F=B3=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coolstore-partner-common/pom.xml | 6 + .../java/com/cool/store/utils/StringUtil.java | 8 +- .../HyPartnerCertificationInfoMapper.java | 2 + .../mapper/HyPartnerTaskInfoLogMapper.java | 2 +- .../HyPartnerCertificationInfoMapper.xml | 6 + .../store/dto/trtc/callback/EventInfo.java | 62 +++++++++ .../cool/store/dto/trtc/callback/Payload.java | 32 +++++ .../store/dto/trtc/callback/TencentVod.java | 92 +++++++++++++ .../dto/trtc/callback/VideoCallBackDTO.java | 52 +++++++ ...teTimeInfoReq.java => GetTipsInfoReq.java} | 2 +- .../com/cool/store/service/CommonService.java | 13 ++ .../cool/store/service/InterviewService.java | 1 - .../cool/store/service/TRTCVideoService.java | 5 +- .../store/service/impl/CommonServiceImpl.java | 129 ++++++++++++++++++ .../store/service/impl/FlowServiceImpl.java | 7 +- .../service/impl/InterviewServiceImpl.java | 39 ------ .../service/impl/TRTCVideoServiceImpl.java | 16 ++- .../store/config/TokenValidateFilter.java | 1 + .../store/controller/CommonController.java | 34 +++++ .../store/controller/InterviewController.java | 6 - .../store/controller/VideoController.java | 33 +++-- 21 files changed, 484 insertions(+), 64 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/EventInfo.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/Payload.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/TencentVod.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/VideoCallBackDTO.java rename coolstore-partner-model/src/main/java/com/cool/store/request/{GetLastUpdateTimeInfoReq.java => GetTipsInfoReq.java} (88%) create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/CommonService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/controller/CommonController.java diff --git a/coolstore-partner-common/pom.xml b/coolstore-partner-common/pom.xml index 204706c33..988014f8a 100644 --- a/coolstore-partner-common/pom.xml +++ b/coolstore-partner-common/pom.xml @@ -103,6 +103,12 @@ org.icepdf.os icepdf-core 6.1.2 + + + javax.media + jai-core + + diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/StringUtil.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/StringUtil.java index 38db9e802..155aa40c2 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/StringUtil.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/StringUtil.java @@ -20,12 +20,18 @@ import java.util.regex.Pattern; */ public class StringUtil extends org.apache.commons.lang3.StringUtils { - private static final char UPPER_A = 'A'; private static final char LOWER_A = 'a'; private static final char UPPER_Z = 'Z'; private static final char LOWER_Z = 'z'; + public static final String REPLACE_0 = "{0}"; + public static final String REPLACE_1 = "{1}"; + public static final String REPLACE_2 = "{2}"; + public static final String REPLACE_3 = "{3}"; + public static final String REPLACE_4 = "{4}"; + public static final String REPLACE_5 = "{5}"; + private static final byte[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java index d0d5cb52a..a4d84bddf 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java @@ -37,4 +37,6 @@ public interface HyPartnerCertificationInfoMapper { */ String getInterviewPlanIdByQualifyVerifyId(String qualifyVerifyId); + HyPartnerCertificationInfoDO selectByPartnerLineId(@Param("partnerLineId") Long partnerLineId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java index ffa413bdb..52e5825b3 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java @@ -25,5 +25,5 @@ public interface HyPartnerTaskInfoLogMapper { */ int updateByPrimaryKeySelective(@Param("record") HyPartnerTaskInfoLogDO record); - List selectByPartnerLineIdAndOperateType(@Param("partnerLineId") String partnerLineId, @Param("operateType") String operateType); + List selectByPartnerLineIdAndOperateType(@Param("partnerLineId") Long partnerLineId, @Param("operateType") String operateType); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml index 956201b9f..23c2130af 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerCertificationInfoMapper.xml @@ -137,4 +137,10 @@ ) and deleted = 0 + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/EventInfo.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/EventInfo.java new file mode 100644 index 000000000..808eab265 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/EventInfo.java @@ -0,0 +1,62 @@ +package com.cool.store.dto.trtc.callback; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * @Author: young.yu + * @Date: 2023-06-29 01:17 + * @Description: + */ +public class EventInfo { + @JsonProperty("RoomId") + private String roomId; + @JsonProperty("EventTs") + private long eventTs; + @JsonProperty("UserId") + private String userId; + @JsonProperty("TaskId") + private String taskId; + @JsonProperty("Payload") + private Payload payload; + + public String getRoomId() { + return roomId; + } + + public void setRoomId(String roomId) { + this.roomId = roomId; + } + + public long getEventTs() { + return eventTs; + } + + public void setEventTs(long eventTs) { + this.eventTs = eventTs; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Payload getPayload() { + return payload; + } + + public void setPayload(Payload payload) { + this.payload = payload; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/Payload.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/Payload.java new file mode 100644 index 000000000..0906a7d48 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/Payload.java @@ -0,0 +1,32 @@ +package com.cool.store.dto.trtc.callback; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * @Author: young.yu + * @Date: 2023-06-29 01:17 + * @Description: + */ +public class Payload { + @JsonProperty("Status") + private int status; + @JsonProperty("TencentVod") + private TencentVod tencentVod; + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public TencentVod getTencentVod() { + return tencentVod; + } + + public void setTencentVod(TencentVod tencentVod) { + this.tencentVod = tencentVod; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/TencentVod.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/TencentVod.java new file mode 100644 index 000000000..a297bc102 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/TencentVod.java @@ -0,0 +1,92 @@ +package com.cool.store.dto.trtc.callback; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * @Author: young.yu + * @Date: 2023-06-29 01:18 + * @Description: + */ +public class TencentVod { + @JsonProperty("UserId") + private String userId; + @JsonProperty("TrackType") + private String trackType; + @JsonProperty("MediaId") + private String mediaId; + @JsonProperty("FileId") + private String fileId; + @JsonProperty("VideoUrl") + private String videoUrl; + @JsonProperty("CacheFile") + private String cacheFile; + @JsonProperty("StartTimeStamp") + private long startTimeStamp; + @JsonProperty("EndTimeStamp") + private int endTimeStamp; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getTrackType() { + return trackType; + } + + public void setTrackType(String trackType) { + this.trackType = trackType; + } + + public String getMediaId() { + return mediaId; + } + + public void setMediaId(String mediaId) { + this.mediaId = mediaId; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getVideoUrl() { + return videoUrl; + } + + public void setVideoUrl(String videoUrl) { + this.videoUrl = videoUrl; + } + + public String getCacheFile() { + return cacheFile; + } + + public void setCacheFile(String cacheFile) { + this.cacheFile = cacheFile; + } + + public long getStartTimeStamp() { + return startTimeStamp; + } + + public void setStartTimeStamp(long startTimeStamp) { + this.startTimeStamp = startTimeStamp; + } + + public int getEndTimeStamp() { + return endTimeStamp; + } + + public void setEndTimeStamp(int endTimeStamp) { + this.endTimeStamp = endTimeStamp; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/VideoCallBackDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/VideoCallBackDTO.java new file mode 100644 index 000000000..104f93004 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/trtc/callback/VideoCallBackDTO.java @@ -0,0 +1,52 @@ +package com.cool.store.dto.trtc.callback; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * @Author: young.yu + * @Date: 2023-06-29 01:16 + * @Description: + */ +public class VideoCallBackDTO { + @JsonProperty("EventGroupId") + private int eventGroupId; + @JsonProperty("EventType") + private int eventType; + @JsonProperty("CallbackTs") + private long callbackTs; + @JsonProperty("EventInfo") + private EventInfo eventInfo; + + public int getEventGroupId() { + return eventGroupId; + } + + public void setEventGroupId(int eventGroupId) { + this.eventGroupId = eventGroupId; + } + + public int getEventType() { + return eventType; + } + + public void setEventType(int eventType) { + this.eventType = eventType; + } + + public long getCallbackTs() { + return callbackTs; + } + + public void setCallbackTs(long callbackTs) { + this.callbackTs = callbackTs; + } + + public EventInfo getEventInfo() { + return eventInfo; + } + + public void setEventInfo(EventInfo eventInfo) { + this.eventInfo = eventInfo; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/GetLastUpdateTimeInfoReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/GetTipsInfoReq.java similarity index 88% rename from coolstore-partner-model/src/main/java/com/cool/store/request/GetLastUpdateTimeInfoReq.java rename to coolstore-partner-model/src/main/java/com/cool/store/request/GetTipsInfoReq.java index 3b83b3b8a..9ccc69a68 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/GetLastUpdateTimeInfoReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/GetTipsInfoReq.java @@ -9,7 +9,7 @@ import lombok.Data; */ @Data @ApiModel -public class GetLastUpdateTimeInfoReq { +public class GetTipsInfoReq { @ApiModelProperty("线索id") private String partnerLineId; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/CommonService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/CommonService.java new file mode 100644 index 000000000..65649523b --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/CommonService.java @@ -0,0 +1,13 @@ +package com.cool.store.service; + +import com.cool.store.exception.ApiException; +import com.cool.store.request.GetTipsInfoReq; + +/** + * @Author: young.yu + * @Date: 2023-06-28 21:34 + * @Description: + */ +public interface CommonService { + String getTipsInfo(GetTipsInfoReq request) throws ApiException; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java index 13613277b..4678533e5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java @@ -69,5 +69,4 @@ public interface InterviewService { public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile); - String getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/TRTCVideoService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/TRTCVideoService.java index 1a0f61912..7cbfa9b15 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/TRTCVideoService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/TRTCVideoService.java @@ -1,5 +1,6 @@ package com.cool.store.service; +import com.cool.store.dto.trtc.callback.VideoCallBackDTO; import com.cool.store.request.TRTCVideoCallBackReq; public interface TRTCVideoService { @@ -7,6 +8,8 @@ public interface TRTCVideoService { /** * 音视频上传成功后的回调处理 */ - void handleVideoCallBack(TRTCVideoCallBackReq req); +// void handleVideoCallBack(TRTCVideoCallBackReq req); + + void handleVideoCallBack(VideoCallBackDTO videoCallBackDTO); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java new file mode 100644 index 000000000..9851eb0f8 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java @@ -0,0 +1,129 @@ +package com.cool.store.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.log.LogFieldDTO; +import com.cool.store.entity.HyPartnerCertificationInfoDO; +import com.cool.store.entity.HyPartnerLineInfoDO; +import com.cool.store.entity.HyPartnerTaskInfoLogDO; +import com.cool.store.enums.OperateLogFieldValueEnum; +import com.cool.store.enums.OperateTypeEnum; +import com.cool.store.enums.WorkflowStageEnum; +import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.exception.ApiException; +import com.cool.store.mapper.HyPartnerCertificationInfoMapper; +import com.cool.store.mapper.HyPartnerLineInfoMapper; +import com.cool.store.mapper.HyPartnerTaskInfoLogMapper; +import com.cool.store.request.GetTipsInfoReq; +import com.cool.store.service.CommonService; +import com.cool.store.utils.StringUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +/** + * @Author: young.yu + * @Date: 2023-06-28 21:35 + * @Description: + */ +@Service +public class CommonServiceImpl implements CommonService { + + @Autowired + private HyPartnerTaskInfoLogMapper hyPartnerTaskInfoLogMapper; + + @Autowired + private HyPartnerLineInfoMapper hyPartnerLineInfoMapper; + + @Autowired + private HyPartnerCertificationInfoMapper hyPartnerCertificationInfoMapper; + + @Override + public String getTipsInfo(GetTipsInfoReq request) throws ApiException { + List lineInfoList = hyPartnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(Long.parseLong(request.getPartnerLineId()))); + if (CollectionUtils.isEmpty(lineInfoList)) { + return null; + } + HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfoList.get(0); + String workflowStage = hyPartnerLineInfoDO.getWorkflowStage(); + String workflowStatus = hyPartnerLineInfoDO.getWorkflowStatus(); + Long partnerLineId = hyPartnerLineInfoDO.getId(); + if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_2.getCode())) { + return getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_3.getCode())) { + String tips = getInterviewTips(partnerLineId, OperateTypeEnum.MODIFY_INTERVIEW_TIME, ""); + if (StringUtils.isNotEmpty(tips)) { + return tips + ("修改面试预约时间"); + } else { + return getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); + } + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_4.getCode())) { + return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "结束面试"); + }else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_5.getCode())) { + HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId); + String intentionContractNo = null; + if(partnerCertificationInfoDO != null){ + intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo(); + } + return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "发起加盟商资质审核|"+intentionContractNo); + }else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_6.getCode())) { + HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId); + String intentionContractNo = null; + if(partnerCertificationInfoDO != null){ + intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo(); + } + return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "审核通过|"+intentionContractNo); + } + + return null; + } + + public String getInterviewTips(Long partnerLineId, OperateTypeEnum operateTypeEnum, String action) { + StringBuffer sb = new StringBuffer(); + sb.append(StringUtil.REPLACE_0) + .append(" ") + .append(StringUtil.REPLACE_1) + .append(" 于 ").append(StringUtil.REPLACE_2).append(" ").append(action); + String content = sb.toString(); + return getSuitableTipsInfo(content, partnerLineId, + operateTypeEnum, + OperateLogFieldValueEnum.OPERATE_USER_NAME.getCode(), + OperateLogFieldValueEnum.MOBILE.getCode(), + OperateLogFieldValueEnum.OPERATE_TIME.getCode()); + + } + + public String getSuitableTipsInfo(String content, Long partnerLineId, OperateTypeEnum operateTypeEnum, String... replaceKeys) { + List hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(partnerLineId, operateTypeEnum.getCode()); + if (CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)) { + return null; + } + HyPartnerTaskInfoLogDO hyPartnerTaskInfoLogDO = hyPartnerTaskInfoLogDOS.get(0); + String fieldCopy = hyPartnerTaskInfoLogDO.getFieldCopy(); + List logFieldDTOS = JSONObject.parseArray(fieldCopy, LogFieldDTO.class); + List params = new ArrayList<>(); + for (String replaceKey : replaceKeys) { + String value = ""; + Optional logFieldDTOOptional = logFieldDTOS.stream().filter(l -> l.getCode().equals(replaceKey)).findFirst(); + if (logFieldDTOOptional.isPresent()) { + value = logFieldDTOOptional.get().getValue(); + try { + value = DateUtil.format(DateUtil.parseDateTime(value), "yyyy/MM/dd HH:mm:ss"); + } catch (Exception e) { + //异常代表不是时间格式,不做处理 + } + + } + params.add(value); + } + + return MessageFormat.format(content, params.toArray()); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java index e096bcd97..afa96b5a6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java @@ -200,8 +200,12 @@ public class FlowServiceImpl implements FlowService { hyPartnerInterviewDO.setUpdateTime(new Date()); //更新面试信息 //更新面试状态 - hyPartnerInterviewDO.setStatus(null); interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_5); + + //获取当前操作人 + LoginUserInfo operator = CurrentUserHolder.getUser(); + hyPartnerInterviewDO.setRecorder(operator.getName()+" "+operator.getMobile()); + hyPartnerInterviewDO.setRecordTime(new Date()); hyPartnerInterviewDO.setAuthCode(authCode); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); @@ -213,7 +217,6 @@ public class FlowServiceImpl implements FlowService { hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } //记录日志 - LoginUserInfo operator = CurrentUserHolder.getUser(); CreateQualifyVerifyDTO log = CreateQualifyVerifyDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) .summary(request.getSummary()).qualiVerifyContent(JSON.toJSONString(partnerCertificationInfoDO)).build(); logService.recordBizLog(operator,hyPartnerInterviewDO.getPartnerLineId(), OperateTypeEnum.CREATE_QUALIFYVERIFY,log); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java index 430fb69d6..b5e37ecfc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java @@ -12,7 +12,6 @@ import com.cool.store.context.LoginUserInfo; import com.cool.store.context.PartnerUserHolder; import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.HyInterviewDAO; -import com.cool.store.dao.HyPartnerTaskInfoLogDAO; import com.cool.store.dto.calendar.CreateCalendarEventDTO; import com.cool.store.dto.calendar.DeleteCalendarEventDTO; import com.cool.store.dto.calendar.UserCalendarsEventDTO; @@ -102,9 +101,6 @@ public class InterviewServiceImpl implements InterviewService { @Autowired private EnterpriseUserDAO enterpriseUserDAO; - - @Autowired - private HyPartnerTaskInfoLogMapper hyPartnerTaskInfoLogMapper; @Override public List getInterviewList(GetInterviewListReq request) { List interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request); @@ -629,39 +625,4 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); } - @Override - public String getLastUpdateTimeInfo(GetLastUpdateTimeInfoReq request) throws ApiException { - String content = " 修改面试预约时间"; - String operatorName = null; - String operatorMobile = null; - String operatorTime = null; - List hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(request.getPartnerLineId(), OperateTypeEnum.MODIFY_INTERVIEW_TIME.getCode()); - if(CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)){ - hyPartnerTaskInfoLogDOS = hyPartnerTaskInfoLogMapper.selectByPartnerLineIdAndOperateType(request.getPartnerLineId(), OperateTypeEnum.INTERVIEW_APPOINTMENT.getCode()); - if(CollectionUtils.isEmpty(hyPartnerTaskInfoLogDOS)){ - return null; - } - content = " 提交面试预约时间"; - } - HyPartnerTaskInfoLogDO hyPartnerTaskInfoLogDO = hyPartnerTaskInfoLogDOS.get(0); - String fieldCopy = hyPartnerTaskInfoLogDO.getFieldCopy(); - List logFieldDTOS = JSONObject.parseArray(fieldCopy, LogFieldDTO.class); - for(LogFieldDTO logFieldDTO:logFieldDTOS){ - if(OperateLogFieldValueEnum.OPERATE_TIME.getCode().equals(logFieldDTO.getCode())){ - operatorTime = logFieldDTO.getValue(); - } - if(OperateLogFieldValueEnum.MOBILE.getCode().equals(logFieldDTO.getCode())){ - operatorMobile = logFieldDTO.getValue(); - } - if(OperateLogFieldValueEnum.OPERATE_USER_NAME.getCode().equals(logFieldDTO.getCode())){ - operatorName = logFieldDTO.getValue(); - } - } - StringBuffer sb = new StringBuffer(); - sb.append(operatorName) - .append(" "+operatorMobile) - .append(" 于 ").append(DateUtil.format(DateUtil.parseDateTime(operatorTime),"yyyy/MM/dd HH:mm:ss")).append(content); - return sb.toString(); - } - } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java index 9855ae7d2..b88a439e7 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TRTCVideoServiceImpl.java @@ -1,5 +1,6 @@ package com.cool.store.service.impl; +import com.cool.store.dto.trtc.callback.VideoCallBackDTO; import com.cool.store.mapper.HyPartnerInterviewMapper; import com.cool.store.request.TRTCVideoCallBackReq; import com.cool.store.service.TRTCVideoService; @@ -15,12 +16,19 @@ public class TRTCVideoServiceImpl implements TRTCVideoService { /** * 音视频上传成功后的回调处理 */ +// @Override +// public void handleVideoCallBack(TRTCVideoCallBackReq req) { +// //将视频播放地址拼接到对应的面试信息字段中 +// String videoUrl = req.getEventInfo().getPayLoad().getTencentVod().getVideoUrl(); +// String roomId = req.getEventInfo().getRoomId(); +// interviewMapper.addVideoUrl(roomId, videoUrl); +// } + @Override - public void handleVideoCallBack(TRTCVideoCallBackReq req) { + public void handleVideoCallBack(VideoCallBackDTO videoCallBackDTO) { //将视频播放地址拼接到对应的面试信息字段中 - String videoUrl = req.getEventInfo().getPayLoad().getTencentVod().getVideoUrl(); - String roomId = req.getEventInfo().getRoomId(); + String videoUrl = videoCallBackDTO.getEventInfo().getPayload().getTencentVod().getVideoUrl(); + String roomId = videoCallBackDTO.getEventInfo().getRoomId(); interviewMapper.addVideoUrl(roomId, videoUrl); } - } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java index 8773f8965..93150f7fa 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -45,6 +45,7 @@ public class TokenValidateFilter implements Filter { Lists.newArrayList("/web/check/ok","/check/ok", "/partner/pc/doc.html","/partner/pc/v2/api-docs","/**/test/**","/partner/pc/feiShuLogin","/partner/pc/oss/getUploadFileConfig", "/**/swagger*/**", "/**/webjars/**", + "/partner/pc/**", //腾讯音视频回调,单独做验签 "/partner/pc/video/**", //TODO 800回调地址暂时不做验证 diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/CommonController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/CommonController.java new file mode 100644 index 000000000..d8ea2a989 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/CommonController.java @@ -0,0 +1,34 @@ +package com.cool.store.controller; + +import com.cool.store.exception.ApiException; +import com.cool.store.request.GetTipsInfoReq; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.CommonService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: young.yu + * @Date: 2023-06-28 21:33 + * @Description: + */ + +@RestController +@RequestMapping("/common") +@Api(tags = "通用信息") +public class CommonController { + + @Autowired + private CommonService commonService; + @PostMapping("/getTipsInfo") + @ApiOperation("获取面试最新更新信息") + public ResponseResult getTipsInfo(@RequestBody GetTipsInfoReq request) throws ApiException { + String res = commonService.getTipsInfo(request); + return ResponseResult.success(res); + } +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java index b61005261..b89b78d3f 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java @@ -94,10 +94,4 @@ public class InterviewController { // interviewService.rejectInterview(request); // return ResponseResult.success(); // } - @PostMapping("/getLastUpdateTimeInfo") - @ApiOperation("获取面试最新更新信息") - public ResponseResult getLastUpdateTimeInfo(@RequestBody GetLastUpdateTimeInfoReq request) throws ApiException { - String res = interviewService.getLastUpdateTimeInfo(request); - return ResponseResult.success(res); - } } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java index f5f83e46a..53ae75e97 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java @@ -1,6 +1,7 @@ package com.cool.store.controller; import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.trtc.callback.VideoCallBackDTO; import com.cool.store.request.TRTCVideoCallBackReq; import com.cool.store.response.ResponseResult; import com.cool.store.service.TRTCVideoService; @@ -22,21 +23,37 @@ public class VideoController { @Autowired private TRTCVideoService videoService; +// @PostMapping("/callback") +// @ApiOperation("音视频回调(腾讯云回调)") +// public ResponseResult videoCallback(@RequestBody String requestBody) { +// log.info("腾讯音视频上传完成回调,request{}", JSONObject.toJSONString(requestBody)); +// //由于腾讯云恶事做尽,它的回调参数不是驼峰法,首字母是大写,导致 SpringMVC 映射不上,只能手动映射了 +// TRTCVideoCallBackReq req = JSONObject.parseObject(requestBody, TRTCVideoCallBackReq.class); +// //不是音视频上传的回调 +// if (!"311".equals(req.getEventType())) { +// return null; +// } +// if (!"0".equals(req.getEventInfo().getPayLoad().getStatus())) { +// log.error("腾讯音视频录制视频上传错误:request:\t{}", req); +// return null; +// } +// videoService.handleVideoCallBack(req); +// return new ResponseResult(0, "腾讯云回调音视频回调数据接收成功"); +// } + @PostMapping("/callback") @ApiOperation("音视频回调(腾讯云回调)") - public ResponseResult videoCallback(@RequestBody String requestBody) { - log.info("腾讯音视频上传完成回调,request{}", JSONObject.toJSONString(requestBody)); - //由于腾讯云恶事做尽,它的回调参数不是驼峰法,首字母是大写,导致 SpringMVC 映射不上,只能手动映射了 - TRTCVideoCallBackReq req = JSONObject.parseObject(requestBody, TRTCVideoCallBackReq.class); + public ResponseResult videoCallback(@RequestBody VideoCallBackDTO videoCallBackDTO) { + log.info("腾讯音视频上传完成回调,request{}", JSONObject.toJSONString(videoCallBackDTO)); //不是音视频上传的回调 - if (!"311".equals(req.getEventType())) { + if (311!= videoCallBackDTO.getEventType()) { return null; } - if (!"0".equals(req.getEventInfo().getPayLoad().getStatus())) { - log.error("腾讯音视频录制视频上传错误:request:\t{}", req); + if (0 !=videoCallBackDTO.getEventInfo().getPayload().getStatus()) { + log.error("腾讯音视频录制视频上传错误:request:\t{}", videoCallBackDTO); return null; } - videoService.handleVideoCallBack(req); + videoService.handleVideoCallBack(videoCallBackDTO); return new ResponseResult(0, "腾讯云回调音视频回调数据接收成功"); } From b794ec54380928590647ada1a0e99e276880f648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Thu, 29 Jun 2023 02:03:16 +0800 Subject: [PATCH 25/28] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cool/store/config/TokenValidateFilter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java index 93150f7fa..8773f8965 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -45,7 +45,6 @@ public class TokenValidateFilter implements Filter { Lists.newArrayList("/web/check/ok","/check/ok", "/partner/pc/doc.html","/partner/pc/v2/api-docs","/**/test/**","/partner/pc/feiShuLogin","/partner/pc/oss/getUploadFileConfig", "/**/swagger*/**", "/**/webjars/**", - "/partner/pc/**", //腾讯音视频回调,单独做验签 "/partner/pc/video/**", //TODO 800回调地址暂时不做验证 From 4b1e4f892f5af3e8bfa87a0ce5aed593dd85c8e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Thu, 29 Jun 2023 04:04:19 +0800 Subject: [PATCH 26/28] =?UTF-8?q?=E6=97=A5=E5=BF=97=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/service/impl/FlowServiceImpl.java | 2 +- .../service/impl/InterviewServiceImpl.java | 6 ++--- .../workflow/InterviewWorkFlowService.java | 2 +- .../store/controller/VideoController.java | 25 +++++++++++-------- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java index afa96b5a6..6520a2a7a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java @@ -217,7 +217,7 @@ public class FlowServiceImpl implements FlowService { hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } //记录日志 - CreateQualifyVerifyDTO log = CreateQualifyVerifyDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + CreateQualifyVerifyDTO log = CreateQualifyVerifyDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) .summary(request.getSummary()).qualiVerifyContent(JSON.toJSONString(partnerCertificationInfoDO)).build(); logService.recordBizLog(operator,hyPartnerInterviewDO.getPartnerLineId(), OperateTypeEnum.CREATE_QUALIFYVERIFY,log); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java index b5e37ecfc..0670591fe 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java @@ -303,7 +303,7 @@ public class InterviewServiceImpl implements InterviewService { //记录日志 LoginUserInfo operator = CurrentUserHolder.getUser(); - LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build(); + LogBasicDTO log = LogBasicDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).build(); logService.recordBizLog(operator,interviewInfo.getPartnerLineId(),OperateTypeEnum.FINISH_INTERVIEW,log); } @@ -454,7 +454,7 @@ public class InterviewServiceImpl implements InterviewService { //记录日志 PartnerUserInfoVO operator = PartnerUserHolder.getUser(); - LogBasicDTO log = LogBasicDTO.builder().operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).mobile(operator.getMobile()).build(); + LogBasicDTO log = LogBasicDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getPartnerId()).operateUsername(operator.getUsername()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)).mobile(operator.getMobile()).build(); logService.recordPartnerBizLog(operator,interviewVO.getPartnerLineId(),OperateTypeEnum.INTERVIEW_APPOINTMENT,log); return vo; @@ -541,7 +541,7 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); //记录日志 LoginUserInfo operator = CurrentUserHolder.getUser(); - ReInterviewDTO log = ReInterviewDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + ReInterviewDTO log = ReInterviewDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) .rejectRealReason(request.getReason()).certifyFile(request.getCertifyFile()).build(); logService.recordBizLog(operator,interviewVO.getPartnerLineId(),OperateTypeEnum.REINTERVIEW,log); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java index dfe6e1122..6c31f9d9b 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java @@ -89,7 +89,7 @@ public class InterviewWorkFlowService extends WorkFlowBaseService { interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null); //记录日志 LoginUserInfo operator = CurrentUserHolder.getUser(); - RejectInterviewDTO log = RejectInterviewDTO.builder().operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) + RejectInterviewDTO log = RejectInterviewDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC)) .rejectRealReason(request.getRejectRealReason()).rejectPublicReason(request.getRejectPublicReason()).certifyFile(request.getCertifyFile()).build(); logService.recordBizLog(operator,request.getLineId(), OperateTypeEnum.REJECT_INTERVIEW,log); } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java index 53ae75e97..68fb9aa3c 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/VideoController.java @@ -44,17 +44,22 @@ public class VideoController { @PostMapping("/callback") @ApiOperation("音视频回调(腾讯云回调)") public ResponseResult videoCallback(@RequestBody VideoCallBackDTO videoCallBackDTO) { - log.info("腾讯音视频上传完成回调,request{}", JSONObject.toJSONString(videoCallBackDTO)); - //不是音视频上传的回调 - if (311!= videoCallBackDTO.getEventType()) { - return null; + try { + log.info("腾讯音视频上传回调开始,request{}", JSONObject.toJSONString(videoCallBackDTO)); + //不是音视频上传的回调 + if (311 != videoCallBackDTO.getEventType()) { + return null; + } + if (0 != videoCallBackDTO.getEventInfo().getPayload().getStatus()) { + log.error("腾讯音视频录制视频上传错误:request:\t{}", videoCallBackDTO); + return null; + } + videoService.handleVideoCallBack(videoCallBackDTO); + return new ResponseResult(0, "腾讯云回调音视频回调数据接收成功"); + } catch (Exception e) { + log.error("腾讯音视频录制视频上传回调错误:request:\t{}", e.getMessage()); } - if (0 !=videoCallBackDTO.getEventInfo().getPayload().getStatus()) { - log.error("腾讯音视频录制视频上传错误:request:\t{}", videoCallBackDTO); - return null; - } - videoService.handleVideoCallBack(videoCallBackDTO); - return new ResponseResult(0, "腾讯云回调音视频回调数据接收成功"); + return null; } } From 16ee83c0375bb4048a763a71ec2746acbcab8274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Thu, 29 Jun 2023 04:14:45 +0800 Subject: [PATCH 27/28] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=BA=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/cool/store/service/impl/FlowServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java index 6520a2a7a..bace800e7 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FlowServiceImpl.java @@ -204,7 +204,7 @@ public class FlowServiceImpl implements FlowService { //获取当前操作人 LoginUserInfo operator = CurrentUserHolder.getUser(); - hyPartnerInterviewDO.setRecorder(operator.getName()+" "+operator.getMobile()); + hyPartnerInterviewDO.setRecorder(operator.getUserId()); hyPartnerInterviewDO.setRecordTime(new Date()); hyPartnerInterviewDO.setAuthCode(authCode); hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); From 41363dac501dbadd39e3aa43a30adf6abefc77df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Thu, 29 Jun 2023 09:37:16 +0800 Subject: [PATCH 28/28] querySubscribeInterviewTimeList --- .../store/service/impl/HyPartnerInterviewPlanServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java index b47c93e32..26d4a5015 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -96,15 +96,17 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan @Override public PageInfo getPartnerInterviewInfoList(String userId ,String type,Integer pageSize,Integer pageNumber) { String workflowStatus = ""; + Boolean filter = Boolean.FALSE; if (CommonConstants.PENDING.equals(type)) { workflowStatus = WorkflowStatusEnum.RESERVATION_1.getCode(); + filter = Boolean.TRUE; } if (CommonConstants.FOLLOW.equals(type)) { workflowStatus = WorkflowStatusEnum.RESERVATION_0.getCode(); } PageHelper.startPage(pageNumber,pageSize); //查询预约面试列表 - PageInfo partnerInterviewInfoList = new PageInfo(hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), workflowStatus,Boolean.FALSE)); + PageInfo partnerInterviewInfoList = new PageInfo(hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), workflowStatus,filter)); List list = partnerInterviewInfoList.getList(); if (CollectionUtils.isEmpty(list)){ return partnerInterviewInfoList;