diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/TRTCUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/TRTCUtils.java index f90194b95..a8c522711 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/TRTCUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/TRTCUtils.java @@ -16,12 +16,6 @@ public class TRTCUtils { */ private static final Long expired = 60 * 60 * 24L; - @Value("${trtc.sdkAppId}") - private Long sdkAppId; - - @Value("${trtc.secretKey}") - private String key; - /** * 生成 userSig 用于进入会议 * 详见 https://cloud.tencent.com/document/product/647/17275#.E8.B0.83.E8.AF.95.E8.B7.91.E9.80.9A.E9.98.B6.E6.AE.B5.E5.A6.82.E4.BD.95.E8.AE.A1.E7.AE.97-UserSig.EF.BC.9F @@ -36,9 +30,7 @@ public class TRTCUtils { return tlsSigAPIv2.genUserSig(userId, expiredTime); } - public String genUserSig(String userId) { - TLSSigAPIv2 tlsSigAPIv2 = new TLSSigAPIv2(sdkAppId, key); - return tlsSigAPIv2.genUserSig(userId, expired); + public static void main(String[] args) { + System.out.println(genUserSig(1600026212L, "e036b654c665f649f053a01ff6f5652a826980027be298d4d49949f6e26434a5", "6488aeaefa7246de9af141c6c6fdd2c7")); } - } 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 28e431096..7b16a615b 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 @@ -130,14 +130,7 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { } } BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); - LineInfoDO lineInfoDO = lineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); - if (lineInfoDO != null){ - userInfoVO.setLineId(lineInfoDO.getId()); - userInfoVO.setWorkflowStage(lineInfoDO.getWorkflowStage()); - userInfoVO.setWorkflowSubStage(lineInfoDO.getWorkflowSubStage()); - userInfoVO.setWorkflowSubStageStatus(lineInfoDO.getWorkflowSubStageStatus()); - userInfoVO.setLineStatus(lineInfoDO.getLineStatus()); - } + fillLineInfo(userInfoVO, hyPartnerUserInfoDO.getPartnerId()); } userInfoVO.setOpenid(openid); userInfoVO.setUnionId(unionId); @@ -160,14 +153,7 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { if(hyPartnerUserInfoDO != null){ userInfoVO = new PartnerUserInfoVO(); BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); - LineInfoDO lineInfoDO = lineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); - if (lineInfoDO != null){ - userInfoVO.setLineId(lineInfoDO.getId()); - userInfoVO.setWorkflowStage(lineInfoDO.getWorkflowStage()); - userInfoVO.setWorkflowSubStage(lineInfoDO.getWorkflowSubStage()); - userInfoVO.setWorkflowSubStageStatus(lineInfoDO.getWorkflowSubStageStatus()); - userInfoVO.setLineStatus(lineInfoDO.getLineStatus()); - } + fillLineInfo(userInfoVO, hyPartnerUserInfoDO.getPartnerId()); } return userInfoVO; } @@ -229,14 +215,22 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea())); userInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/", " ").trim()); } - /*HyPartnerLineInfoDO lineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); - if (lineInfoDO != null){ - userInfoVO.setPartnerLineId(lineInfoDO.getId()); - }*/ + fillLineInfo(userInfoVO, hyPartnerUserInfoDO.getPartnerId()); } return userInfoVO; } + private void fillLineInfo(PartnerUserInfoVO userInfoVO, String partnerId) { + LineInfoDO lineInfoDO = lineInfoDAO.getByPartnerId(partnerId); + if (lineInfoDO != null){ + userInfoVO.setLineId(lineInfoDO.getId()); + userInfoVO.setWorkflowStage(lineInfoDO.getWorkflowStage()); + userInfoVO.setWorkflowSubStage(lineInfoDO.getWorkflowSubStage()); + userInfoVO.setWorkflowSubStageStatus(lineInfoDO.getWorkflowSubStageStatus()); + userInfoVO.setLineStatus(lineInfoDO.getLineStatus()); + } + } + @Override public String getMiniAppUrl() { MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO = new MiniAppUrlLinkReqDTO(); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java b/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java index 88ad975cb..a200523df 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java @@ -5,12 +5,11 @@ import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.context.PartnerUserHolder; import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; import com.cool.store.response.ResponseResult; import com.cool.store.service.WechatMiniAppService; -import com.cool.store.utils.AESDecryptor; -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.utils.poi.StringUtils; import com.cool.store.vo.PartnerUserInfoVO; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -48,10 +47,10 @@ public class SignValidateFilter implements Filter { private static List patternList = Lists.newArrayList("/web/check/ok","/check/ok", - "/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**", - "/partner/mini/program/oss/getUploadFileConfig", - "/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo", - "/**/swagger*/**", "/**/webjars/**","/partner/mini/program/v1/partnerManage/openArea/areaApplyQuery"); + "/xfsg/doc.html","/xfsg/favicon.ico","/xfsg/v2/api-docs","/**/test/**", + "/xfsg/mini/program/oss/getUploadFileConfig", + "/xfsg/mini/program/v1/partnerManage/partner/getIdentityCardInfo", + "/**/swagger*/**", "/**/webjars/**","/xfsg/mini/program/v1/partnerManage/openArea/areaApplyQuery"); /** @@ -77,11 +76,16 @@ public class SignValidateFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); - /*HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest) servletRequest; - CustomHttpServletRequestWrapper wrapper = (CustomHttpServletRequestWrapper) request; String uri = request.getRequestURI(); + if(uri.startsWith("/xfsg/pc")){ + filterChain.doFilter(servletRequest, servletResponse); + return; + } + MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); + HttpServletResponse response = (HttpServletResponse) servletResponse; + + CustomHttpServletRequestWrapper wrapper = (CustomHttpServletRequestWrapper) request; String method = request.getMethod(); String userStr = ""; boolean isInWhiteList = excludePath(uri); @@ -99,6 +103,9 @@ public class SignValidateFilter implements Filter { String timestamp = request.getHeader("TIMESTAMP"); String aesPhone = request.getHeader("PHONE"); String openid = request.getHeader("OPENID"); + if(StringUtils.isAnyBlank(sign, nonce, timestamp, aesPhone, openid)){ + throw new ServiceException(ErrorCodeEnum.SIGN_FAIL); + } log.info("aesPhone:{}, signKey:{}", aesPhone, signKey); String phone = AESDecryptor.decrypt(aesPhone, signKey); String plaintextOpenid = AESDecryptor.decrypt(openid, signKey); @@ -120,9 +127,9 @@ public class SignValidateFilter implements Filter { userStr = JSONObject.toJSONString(partnerUserInfoVO); log.info("url:{}, userStr:{}", uri, userStr); } - }*/ + } try { - //PartnerUserHolder.setUser(userStr); + PartnerUserHolder.setUser(userStr); filterChain.doFilter(servletRequest, servletResponse); } finally { PartnerUserHolder.removeUser(); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-web/src/main/java/com/cool/store/config/TokenValidateFilter.java index 1cbbb37b7..9cc7d7d92 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -44,19 +44,12 @@ public class TokenValidateFilter implements Filter { private static List patternList = Lists.newArrayList("/web/check/ok","/check/ok", - "/partner/pc/doc.html","/partner/pc/v2/api-docs","/**/test/**","/partner/pc/feiShuLogin","/partner/pc/oss/getUploadFileConfig", + "/xfsg/doc.html","/xfsg/v2/api-docs","/xfsg/favicon.ico","/**/test/**","/xfsg/pc/feiShuLogin","/xfsg/pc/oss/getUploadFileConfig", "/**/swagger*/**", "/**/webjars/**", //腾讯音视频回调,单独做验签 - "/partner/pc/video/**", + "/xfsg/pc/video/**", //800回调地址暂时不做验证 - "/partner/pc/flow/qualificationReview/callback", - "/**/ecSync/ecToApplet/**", - "/**/ecSync/labelInfo/**", - "/**/ecSync/getCrmCreateTime/**", - "/**/ecSync/historyLine/**", - "/**/ecSync/historyLineTrajectory/**", - "/partner/pc/websocket/**", - "/partner/pc/call/**"); + "/xfsg/pc/flow/qualificationReview/callback"); /** * @param uri @@ -81,52 +74,55 @@ public class TokenValidateFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { -// MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); -// HttpServletResponse response = (HttpServletResponse) servletResponse; -// HttpServletRequest reqs = (HttpServletRequest) servletRequest; -// String uri = reqs.getRequestURI(); -// String method = reqs.getMethod(); -// String userStr = ""; -// LoginUserInfo currentUser = null; -// boolean isInWhiteList = excludePath(uri); -// String accessToken = reqs.getHeader("accessToken"); -// String key = MessageFormat.format(CommonConstants.ACCESS_TOKEN_KEY, accessToken); -// if(StringUtils.isNotBlank(accessToken)){ -// userStr = redisUtilPool.getString(key); -// if(StringUtils.isNotBlank(userStr)){ -// currentUser = JSON.parseObject(userStr, LoginUserInfo.class); -// } -// } -// log.info("url:{}", uri); -// if ( !isInWhiteList && !method.equals("OPTIONS")) { -// if (StringUtils.isEmpty(accessToken)) { -// response.setStatus(HttpStatus.OK.value()); -// response.getWriter().write(JSON.toJSONString( -// ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID))); -// return; -// } -// if (Objects.isNull(currentUser)) { -// response.setStatus(HttpStatus.OK.value()); -// response.getWriter().write(JSON.toJSONString( -// ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID))); -// return; -// } -// log.info("url:{}, access_token:{}, userId:{}, username:{}", uri, accessToken, currentUser.getUserId(), currentUser.getName()); -// } -// if(StringUtils.isBlank(userStr) && !isInWhiteList){ -// response.setStatus(HttpStatus.OK.value()); -// response.getWriter().write(JSON.toJSONString( -// ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID))); -// return; -// } -// try { -// CurrentUserHolder.setUser(userStr); + HttpServletRequest reqs = (HttpServletRequest) servletRequest; + String uri = reqs.getRequestURI(); + if(uri.startsWith("/xfsg/mini")){ filterChain.doFilter(servletRequest, servletResponse); -// } finally { -// CurrentUserHolder.removeUser(); -// MDC.clear(); -// } - //filterChain.doFilter(servletRequest, servletResponse); + return; + } + MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); + HttpServletResponse response = (HttpServletResponse) servletResponse; + String method = reqs.getMethod(); + String userStr = ""; + LoginUserInfo currentUser = null; + boolean isInWhiteList = excludePath(uri); + String accessToken = "1d1c34451b51e7180445b74c49b7ab09";//reqs.getHeader("accessToken"); + String key = MessageFormat.format(CommonConstants.ACCESS_TOKEN_KEY, accessToken); + if(StringUtils.isNotBlank(accessToken)){ + userStr = redisUtilPool.getString(key); + if(StringUtils.isNotBlank(userStr)){ + currentUser = JSON.parseObject(userStr, LoginUserInfo.class); + } + } + log.info("url:{}", uri); + if ( !isInWhiteList && !method.equals("OPTIONS")) { + if (StringUtils.isEmpty(accessToken)) { + response.setStatus(HttpStatus.OK.value()); + response.getWriter().write(JSON.toJSONString( + ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID))); + return; + } + if (Objects.isNull(currentUser)) { + response.setStatus(HttpStatus.OK.value()); + response.getWriter().write(JSON.toJSONString( + ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID))); + return; + } + log.info("url:{}, access_token:{}, userId:{}, username:{}", uri, accessToken, currentUser.getUserId(), currentUser.getName()); + } + if(StringUtils.isBlank(userStr) && !isInWhiteList){ + response.setStatus(HttpStatus.OK.value()); + response.getWriter().write(JSON.toJSONString( + ResponseResult.fail(ErrorCodeEnum.ACCESS_TOKEN_INVALID))); + return; + } + try { + CurrentUserHolder.setUser(userStr); + filterChain.doFilter(servletRequest, servletResponse); + } finally { + CurrentUserHolder.removeUser(); + MDC.clear(); + } } @Override diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ContentController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ContentController.java index 6858e8fe5..cdd1fb7cb 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ContentController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ContentController.java @@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController -@RequestMapping("news") +@RequestMapping("pc/news") @Api(tags = "PC动态") @Slf4j public class ContentController { diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelController.java index 9de3ba340..f1725538a 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelController.java @@ -24,7 +24,7 @@ import java.util.List; */ @Api(tags = "标签管理") @RestController -@RequestMapping("/label") +@RequestMapping("pc/label") public class LabelController { @Autowired diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelGroupController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelGroupController.java index 9af9ffc56..7c436c64f 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelGroupController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LabelGroupController.java @@ -26,7 +26,7 @@ import java.util.List; */ @Api(tags = {"标签组管理"}) @RestController -@RequestMapping({"/labelGroup"}) +@RequestMapping({"pc/labelGroup"}) public class LabelGroupController { @Autowired private LabelGroupService labelGroupService; diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java index d09b8395b..59d3a47e2 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java @@ -28,7 +28,7 @@ import javax.annotation.Resource; */ @Api(tags = "线索审核") @RestController -@RequestMapping({"/audit"}) +@RequestMapping({"pc/audit"}) public class LineAuditController { @Resource diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java index af4071d89..83bc2b485 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java @@ -23,7 +23,7 @@ import java.util.List; * @Version 1.0 */ @RestController -@RequestMapping("/openArea") +@RequestMapping("pc/openArea") @Api(tags = "PC开放城市") public class OpenAreaController { diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/VideoController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/VideoController.java index 0051a293c..376502bdf 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/VideoController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/VideoController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/video") +@RequestMapping("pc/video") @Api(tags = "腾讯音视频接口") @Slf4j public class VideoController { diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LineInterviewController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LineInterviewController.java index 9f806b84b..a5618e4e8 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LineInterviewController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/LineInterviewController.java @@ -29,7 +29,7 @@ import java.util.List; * @date 2024-03-15 16:04 */ @RestController -@RequestMapping("/interview") +@RequestMapping("/mini/interview") @Api(tags = "加盟商端-面试&面谈") @Slf4j public class LineInterviewController {