From 9280a011675a4911168832eb32e9a8e2d9214dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Mon, 19 Jun 2023 16:26:08 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E9=9D=A2=E8=AF=95=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=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/request/CreateQualifyVerifyReq.java | 6 ++++++ .../java/com/cool/store/service/impl/FeiShuServiceImpl.java | 1 + .../main/java/com/cool/store/controller/FlowController.java | 2 ++ 3 files changed, 9 insertions(+) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java b/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java index 7f0dd8739..0d0853b57 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/CreateQualifyVerifyReq.java @@ -15,12 +15,18 @@ public class CreateQualifyVerifyReq { @ApiModelProperty(value = "线索id", required = true) private String lineId; + @ApiModelProperty(value = "会议安排id", required = true) + private String interviewPlanId; + @ApiModelProperty(value = "会议id", required = true) private String interviewId; @ApiModelProperty(value = "加盟商id", required = true) private String partnerId; + @ApiModelProperty(value = "开发主管用户id", required = true) + private String devtDirectorId; + @ApiModelProperty(value = "面试表现记录", required = true) private String summary; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java index 7b59a61e3..c10af2681 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FeiShuServiceImpl.java @@ -100,6 +100,7 @@ public class FeiShuServiceImpl implements FeiShuService { if (( userFreeBusyInfoDTO.getStartTime()>startTimeLong && userFreeBusyInfoDTO.getStartTime() < endTimeLong) || (userFreeBusyInfoDTO.getEndTime() > startTimeLong && userFreeBusyInfoDTO.getEndTime() < endTimeLong)) { freeBusyInfo.setFree(false); + break; } } 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 006f988f7..14f4e3b92 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 @@ -5,6 +5,7 @@ import com.cool.store.request.CreateQualifyVerifyReq; import com.cool.store.request.FinishInterviewReq; import com.cool.store.response.ResponseResult; import com.cool.store.service.FlowService; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; * @Date: 2023-06-14 13:47 * @Description: 流程相关 */ +@Api(tags = "流程相关接口") @RestController @RequestMapping({"/flow"}) public class FlowController { From 459436512c7484d3753642969f65f83bc4e0ae88 Mon Sep 17 00:00:00 2001 From: pserimal Date: Mon, 19 Jun 2023 16:34:52 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E8=A7=A3=E6=9E=90=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=BF=A1=E6=81=AFprocessInfo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/vo/interview/InterviewVO.java | 10 +++++++++- .../java/com/cool/store/service/InterviewService.java | 4 ++-- .../cool/store/service/impl/InterviewServiceImpl.java | 4 ++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java index 2e6102b82..55c79cb9e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * @Author: young.yu * @Date: 2023-06-08 16:26 @@ -22,6 +24,9 @@ public class InterviewVO { @ApiModelProperty("资质审核流程id") private String qualifyVerifyId; + @ApiModelProperty("意向合同编号") + private String intentionContractNo; + @ApiModelProperty("审核通过时间") private String passTime; @@ -76,7 +81,10 @@ public class InterviewVO { @ApiModelProperty(value = "预约状态 0 待预约;1待面试;2已开始;3待审核;4审批中;5审批通过;6拒绝", required = true) private Integer status; - @ApiModelProperty(value = "面试过程信息", required = false) + @ApiModelProperty(value = "面试过程信息视频URL数组", required = true) + private List processInfoList; + + @ApiModelProperty(value = "面试过程信息未解析String", required = false) private String processInfo; @ApiModelProperty("授权码") 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 062e418e2..2d387e950 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 @@ -18,8 +18,8 @@ public interface InterviewService { List getInterviewList(GetInterviewListReq request); /** - * 根据面试会议id查询面试信息 - * @param interviewId + * 根据面试会议计划id查询面试信息 + * @param interviewPlanId * @return */ InterviewVO getInterviewInfo(String interviewPlanId); 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 9566352a9..7e055b7d1 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 @@ -73,6 +73,10 @@ public class InterviewServiceImpl implements InterviewService { @Override public InterviewVO getInterviewInfo(String interviewPlanId) { InterviewVO vo = hyPartnerInterviewPlanMapper.getInterviewInfo(interviewPlanId); + //将 processInfo 解析为 List + List split = Arrays.asList(vo.getProcessInfo().split(",")); + vo.setProcessInfoList(split); + vo.setProcessInfo(""); //查询面试官和记录人信息 EnterpriseUserBaseInfoVO interviewerInfo = hyPartnerInterviewPlanMapper.getEnterpriseUserBaseInfo(vo.getInterviewerId()); vo.setInterviewerName(interviewerInfo.getName()); From b76e3ec7548ce5ce7ab33f78fea408dade2f7ada Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Mon, 19 Jun 2023 16:45:19 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E7=A7=81=E6=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/dao/HyPartnerLineInfoDAO.java | 17 +++-- .../store/mapper/HyPartnerLineInfoMapper.java | 24 ++++++- .../mapper/HyPartnerLineInfoMapper.xml | 65 +++++++++++++++++ .../store/dto/partner/PrivateSeaLineDTO.java | 72 +++++++++++++++++++ .../request/PrivateSeaLineListRequest.java | 18 ++--- .../cool/store/vo/PrivateSeaLineListVo.java | 14 ++-- .../service/HyPartnerLineInfoService.java | 10 +++ .../impl/HyPartnerLineInfoServiceImpl.java | 55 ++++++++++++-- 8 files changed, 246 insertions(+), 29 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PrivateSeaLineDTO.java diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java index 270f9c160..2ba898a51 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java @@ -6,11 +6,10 @@ import com.cool.store.dto.partner.StageCountDTO; import com.cool.store.dto.partner.*; import com.cool.store.entity.HyPartnerLineInfoDO; import com.cool.store.mapper.HyPartnerLineInfoMapper; -import com.cool.store.vo.LineFollowHistoryVO; -import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import javax.annotation.Resource; @@ -91,9 +90,9 @@ public class HyPartnerLineInfoDAO { return hyPartnerLineInfoMapper.selectPartnerLineInfoAndBaseInfo(lineId); } - public PageInfo lastMonthCloseLine(String userId, String lastMonthTodayDate){ + public List lastMonthCloseLine(String userId, String lastMonthTodayDate){ if (userId==null){ - return new PageInfo<>(); + return new ArrayList<>(); } return hyPartnerLineInfoMapper.lastMonthCloseLine(userId,lastMonthTodayDate); } @@ -115,7 +114,7 @@ public class HyPartnerLineInfoDAO { } - public PageInfo getBlackList( String userNameKeyword,String phoneKeyword, String intentArea , Integer acceptAdjustType){ + public List getBlackList( String userNameKeyword,String phoneKeyword, String intentArea , Integer acceptAdjustType){ return hyPartnerLineInfoMapper.getBlackList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType); } @@ -127,10 +126,16 @@ public class HyPartnerLineInfoDAO { return hyPartnerLineInfoMapper.joinAndRemoveBlack(lineId,status,joinReason,removeReason); } - public PageInfo getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, Date updateStartTime, Date updateEndTime, List userIdList){ + public List getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, Date updateStartTime, Date updateEndTime, List userIdList){ return hyPartnerLineInfoMapper.getPublicSeaLineList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType,updateStartTime,updateEndTime,userIdList); } + public List getPrivateSeaLineList(String keyword, String keywordType, String workflowStage, String workflowStatus, Date deadlineStart, Date deadlineEnd, + String intentArea, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List userIdList){ + return hyPartnerLineInfoMapper.getPrivateSeaLineList( keyword, keywordType, workflowStage, workflowStatus, deadlineStart, deadlineEnd, + intentArea, acceptAdjustType, storeKeyword, storeKeywordType, userIdList); + } + public List getPartnerLastLine(List partnerIdList){ if (CollectionUtils.isEmpty(partnerIdList)){ diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java index 2b5cf795b..155b370e8 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java @@ -90,7 +90,7 @@ public interface HyPartnerLineInfoMapper { * @param lastMonthTodayDate * @return */ - PageInfo lastMonthCloseLine(@Param("userId") String userId, + List lastMonthCloseLine(@Param("userId") String userId, @Param("lastMonthTodayDate") String lastMonthTodayDate); /** @@ -116,7 +116,7 @@ public interface HyPartnerLineInfoMapper { * @param acceptAdjustType * @return */ - PageInfo getBlackList(@Param("userNameKeyword") String userNameKeyword, + List getBlackList(@Param("userNameKeyword") String userNameKeyword, @Param("phoneKeyword") String phoneKeyword, @Param("intentArea") String intentArea , @Param("acceptAdjustType") Integer acceptAdjustType); @@ -150,7 +150,7 @@ public interface HyPartnerLineInfoMapper { * @param userIdList * @return */ - PageInfo getPublicSeaLineList(@Param("userNameKeyword") String userNameKeyword, + List getPublicSeaLineList(@Param("userNameKeyword") String userNameKeyword, @Param("phoneKeyword") String phoneKeyword, @Param("intentArea") String intentArea, @Param("acceptAdjustType") Integer acceptAdjustType, @@ -158,6 +158,24 @@ public interface HyPartnerLineInfoMapper { @Param("updateEndTime") Date updateEndTime, @Param("userIdList") List userIdList); + + /** + * + * @return + */ + List getPrivateSeaLineList(@Param("keyword") String keyword, + @Param("keywordType") String keywordType, + @Param("workflowStage") String workflowStage, + @Param("workflowStatus") String workflowStatus, + @Param("deadlineStart") Date deadlineStart, + @Param("deadlineEnd") Date deadlineEnd, + @Param("intentArea") String intentArea, + @Param("acceptAdjustType") Integer acceptAdjustType, + @Param("storeKeyword") String storeKeyword, + @Param("storeKeywordType") String storeKeywordType, + @Param("userIdList") List userIdList); + + /** * 查询对应的加盟商最近线索 * @param partnerIdList diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index 239671482..cee13a969 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -432,6 +432,71 @@ + + + + select partner_interview_id + from hy_partner_certification_info + where qualify_verify_id = #{qualifyVerifyId} + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml index 584bebc81..949f878b6 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml @@ -220,8 +220,17 @@ auth_code = #{authCode}, - - pass_file_url = #{passFileUrl}, + + pass_code = #{passCode}, + + + pass_pdf_url = #{passPdfUrl}, + + + pass_image_url = #{passImageUrl}, + + + pass_time = #{passTime}, expiry_date = #{expiryDate}, @@ -250,11 +259,16 @@ interviewer_enter_time = #{interviewerEnterTime}, - - qualify_verify_id = #{qualifyVerifyId}, - - where id = #{id} + + 1 = 0 + + or id = #{id} + + + or interview_plan_id = #{interviewPlanId} + + @@ -338,7 +352,7 @@ select from - hy_partner_intent_info + hy_partner_interview where id = #{interviewId} @@ -364,4 +378,19 @@ WHERE id = #{interviewId} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 64c657998..4f8569509 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -247,41 +247,44 @@ select hpip.id as interviewPlanId, hpi.id as interviewId, - hpi.qualify_verify_id as qualifyVerifyId, + hpci.qualify_verify_id as qualifyVerifyId, + hpci.intention_contract_no as intentionContractNo, hpi.pass_time as passTime, hpi.pass_reason as passReason, hpi.recorder as recorderId, @@ -317,6 +321,7 @@ left join hy_partner_line_info hpll on hpip.partner_line_id = hpll.id left join hy_partner_user_info hpui on hpui.partner_id = hpip.partner_id left join hy_partner_interview hpi on hpip.id = hpi.interview_plan_id + left join hy_partner_certification_info hpci on hpci.partner_interview_id = hpi.id where hpip.id = #{interviewPlanId} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java index 086a9992d..ed21b250c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java @@ -14,7 +14,7 @@ public interface WechatMiniAppService { PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param); - Boolean updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO); + String updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO); PartnerUserInfoVO getUserInfo(String mobile, String openId); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java index 2652e3f63..09cd8136a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java @@ -120,7 +120,8 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { } @Override - public Boolean updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO) { + public String updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO) { + String newMobile = ""; HyPartnerUserInfoDO oldUserInfo = hyPartnerUserInfoDAO.selectByMobile(userInfoVO.getMobile()); if (oldUserInfo == null) { throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST); @@ -130,19 +131,26 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { // 获取手机号码 PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(request.getMobileCode(), accessToken); if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ - HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); + newMobile = phoneInfoDTO.getPhoneInfo().getPhoneNumber(); + HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(newMobile); if (newUserInfo != null) { throw new ServiceException(ErrorCodeEnum.NEW_MOBILE_HAS_EXIST); } - oldUserInfo.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); + oldUserInfo.setMobile(newMobile); hyPartnerUserInfoDAO.updateByPrimaryKeySelective(oldUserInfo); } - return true; + return newMobile; } @Override public PartnerUserInfoVO getUserInfo(String mobile, String openId) { PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO(); + if(CommonConstants.FIX_MOBILE_OPENID_TEST.equals(mobile) || CommonConstants.FIX_MOBILE_OPENID_ONLINE.equals(mobile) ){ + userInfoVO.setMobile(mobile); + userInfoVO.setOpenid(mobile); + userInfoVO.setPartnerId(""); + return userInfoVO; + } HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(mobile); BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); HyPartnerUserPlatformBindDO hyPartnerUserPlatformBindDO = hyPartnerUserPlatformBindDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/BodyWrapperFilter.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/BodyWrapperFilter.java new file mode 100644 index 000000000..8f5f063e2 --- /dev/null +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/BodyWrapperFilter.java @@ -0,0 +1,26 @@ +package com.cool.store.config; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + + +/** + * @Author: JCccc + * @Date: 2022-6-12 10:35 + * @Description: + */ +public class BodyWrapperFilter implements Filter { + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + ServletRequest requestWrapper = null; + if(servletRequest instanceof HttpServletRequest) { + requestWrapper = new CustomHttpServletRequestWrapper((HttpServletRequest) servletRequest); + } + if(requestWrapper == null) { + filterChain.doFilter(servletRequest, servletResponse); + } else { + filterChain.doFilter(requestWrapper, servletResponse); + } + } +} \ No newline at end of file diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/CustomHttpServletRequestWrapper.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/CustomHttpServletRequestWrapper.java new file mode 100644 index 000000000..39bdc210f --- /dev/null +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/CustomHttpServletRequestWrapper.java @@ -0,0 +1,60 @@ +package com.cool.store.config; + +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.*; +import java.nio.charset.StandardCharsets; + +/** + * @Author: JCccc + * @Date: 2022-6-12 10:36 + * @Description: 重写一个自己的 RequestWrapper 拿出body给自己用 + */ + +public class CustomHttpServletRequestWrapper extends HttpServletRequestWrapper { + private byte[] body; + public CustomHttpServletRequestWrapper(HttpServletRequest request) throws IOException { + super(request); + BufferedReader reader = request.getReader(); + try (StringWriter writer = new StringWriter()) { + int read; + char[] buf = new char[1024 * 8]; + while ((read = reader.read(buf)) != -1) { + writer.write(buf, 0, read); + } + this.body = writer.getBuffer().toString().getBytes(); + } + } + public String getBody(){ + return new String(body, StandardCharsets.UTF_8); + } + @Override + public ServletInputStream getInputStream() { + final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body); + return new ServletInputStream() { + @Override + public boolean isFinished() { + return false; + } + @Override + public boolean isReady() { + return false; + } + + @Override + public void setReadListener(ReadListener readListener) { + } + + @Override + public int read() { + return byteArrayInputStream.read(); + } + }; + } + @Override + public BufferedReader getReader() { + return new BufferedReader(new InputStreamReader(this.getInputStream())); + } +} \ No newline at end of file diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java index 929dd3298..5b95485a7 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java @@ -7,10 +7,7 @@ import com.cool.store.context.PartnerUserHolder; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.response.ResponseResult; import com.cool.store.service.WechatMiniAppService; -import com.cool.store.utils.AesUtil; -import com.cool.store.utils.Md5Utils; -import com.cool.store.utils.Sha1Utils; -import com.cool.store.utils.UUIDUtils; +import com.cool.store.utils.*; import com.cool.store.vo.PartnerUserInfoVO; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -26,8 +23,10 @@ import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @author ydw @@ -81,41 +80,51 @@ public class SignValidateFilter implements Filter { MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest) servletRequest; + CustomHttpServletRequestWrapper wrapper = (CustomHttpServletRequestWrapper) request; String uri = request.getRequestURI(); String method = request.getMethod(); String userStr = ""; boolean isInWhiteList = excludePath(uri); log.info("url:{}", uri); - /* if ( !isInWhiteList && !method.equals("OPTIONS")) { - Map parameterMap = request.getParameterMap(); - String jsonStr = JSONObject.toJSONString(parameterMap); - JSONObject obj = JSONObject.parseObject(jsonStr); - log.info("params:{}", obj.toJSONString()); - String params = obj.toJSONString(); + if ( !isInWhiteList && !method.equals("OPTIONS")) { + String params = ""; + if("GET".equalsIgnoreCase(method)){ + Map parameterMap = new HashMap(); + Map requestMap = request.getParameterMap(); + for(String key : requestMap.keySet()){ + parameterMap.put(key, requestMap.get(key)[0]); + } + params = JSONObject.toJSONString(parameterMap); + }else if("POST".equalsIgnoreCase(method)){ + params = wrapper.getBody(); + // params = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); + } + log.info("params:{}", params); String sign = request.getHeader("SIGN"); String nonce = request.getHeader("NONCE"); String timestamp = request.getHeader("TIMESTAMP"); String aesPhone = request.getHeader("PHONE"); String openid = request.getHeader("OPENID"); - String phone = AesUtil.decrypt(aesPhone, signKey); - String md5Value = phone + Md5Utils.md5(Md5Utils.md5(openid)); - log.info("sign:{}, nonce:{}, timestamp:{},aesPhone:{}, openid:{}, 解密后的手机号:{}, md5Value:{}", - sign, nonce, timestamp, aesPhone, openid, phone, md5Value); + String phone = AESDecryptor.decrypt(aesPhone, signKey); + String plaintextOpenid = AESDecryptor.decrypt(openid, signKey); + String md5Value = phone + Md5Utils.md5(Md5Utils.md5(plaintextOpenid)); + log.info("sign:{}, nonce:{}, timestamp:{},aesPhone:{}, openid:{}, 解密后的手机号:{}, md5Value:{}, 明文plaintextOpenid:{}", + sign, nonce, timestamp, aesPhone, openid, phone, md5Value, plaintextOpenid); String signStr = timestamp + nonce + params + signKey + md5Value; String newSign = Sha1Utils.getSha1(signStr.getBytes()); - log.info("newSign: {}", newSign); + log.info("signStr: {}, newSign: {}", signStr, newSign); // 前后端验签不等 if (!newSign.equals(sign)) { response.setStatus(HttpStatus.OK.value()); response.getWriter().write(JSON.toJSONString(ResponseResult.fail(ErrorCodeEnum.SIGN_FAIL))); return; } - PartnerUserInfoVO partnerUserInfoVO = wechatMiniAppService.getUserInfo(phone, openid); + PartnerUserInfoVO partnerUserInfoVO = wechatMiniAppService.getUserInfo(phone, plaintextOpenid); if(partnerUserInfoVO != null){ userStr = JSONObject.toJSONString(partnerUserInfoVO); log.info("url:{}, userStr:{}", uri, userStr); } - }*/ + } try { PartnerUserHolder.setUser(userStr); filterChain.doFilter(servletRequest, servletResponse); diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/WebApplicationConfig.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/WebApplicationConfig.java new file mode 100644 index 000000000..890aedcd4 --- /dev/null +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/WebApplicationConfig.java @@ -0,0 +1,29 @@ +package com.cool.store.config; + +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @Author: JCccc + * @Date: 2022-6-23 10:52 + * @Description: + */ +@Configuration +public class WebApplicationConfig { + + @Bean + BodyWrapperFilter getBodyWrapperFilter(){ + return new BodyWrapperFilter(); + } + @Bean("bodyWrapperFilter") + public FilterRegistrationBean checkUserFilter(BodyWrapperFilter bodyWrapperFilter) { + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(bodyWrapperFilter); + registrationBean.addUrlPatterns("/*"); + registrationBean.setOrder(1); + registrationBean.setAsyncSupported(true); + return registrationBean; + } + +} \ No newline at end of file diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java index 46f85bc2a..5a155a1ac 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java @@ -38,16 +38,15 @@ public class MiniProgramAppController { @ApiOperation("更新手机号") @PostMapping("/updateUserPhoneNumber") - public ResponseResult updateUserPhoneNumber(@RequestBody @Valid MobileUpdateRequest request) { + public ResponseResult updateUserPhoneNumber(@RequestBody @Valid MobileUpdateRequest request) { PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser(); return ResponseResult.success(wechatMiniAppService.updateUserPhoneNumber(request, userInfoVO)); } @ApiOperation("根据mobile和openId获取用户信息") - @PostMapping("/getUserInfo") - public ResponseResult getUserInfo(@RequestParam(value = "mobile",required = false) String mobile, - @RequestParam(value = "openId",required = false) String openId){ - PartnerUserInfoVO userInfoVO = wechatMiniAppService.getUserInfo(mobile, openId); + @GetMapping("/getUserInfo") + public ResponseResult getUserInfo(){ + PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser(); return ResponseResult.success(userInfoVO); } }