diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteCustomerApplyLogService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteCustomerApplyLogService.java index 1ad4b31e..37392683 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteCustomerApplyLogService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteCustomerApplyLogService.java @@ -41,7 +41,7 @@ public interface RemoteCustomerApplyLogService * @return 结果 */ @GetMapping("/log/customerApply") - public R customerApply(@PathVariable("customerID") Long customerID,@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + public R customerApply(@RequestParam("customerID") Long customerID,@RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** * 新增用户 diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstant.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstant.java index c659d279..4b6579ce 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstant.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstant.java @@ -33,5 +33,10 @@ public class RedisConstant { /** * H5申请幂等校验 */ - public final static String H5_APPLY_CHECK = CacheConstants.PROJET+"H5:apply:check"; + public final static String H5_APPLY_CHECK = CacheConstants.PROJET+"H5:apply:check:"; + + /** + * 撞库幂等校验 + */ + public final static String HIT_CHECK_CACHE = CacheConstants.PROJET+"hit:check:cache:"; } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecureUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecureUtils.java index b01e92ce..609f43e0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecureUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecureUtils.java @@ -334,7 +334,7 @@ public class SecureUtils { " \"orderStatus\":\"2\"\n" + "}"; - System.out.println(AesEncode(s3,"LwLjtU1Bt8dcxxjY")); + System.out.println(AesEncode(s1,"g5N8XTYaOEwEmBgg")); } /** * 解密 diff --git a/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/controller/PublicHalfController.java b/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/controller/PublicHalfController.java index e53a726e..31edb903 100644 --- a/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/controller/PublicHalfController.java +++ b/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/controller/PublicHalfController.java @@ -42,7 +42,7 @@ public class PublicHalfController{ * 通用半流程撞库 */ @GetMapping("/checkOrder") - public AjaxResult checkOrder(@RequestParam("phoneMD5")String phoneMd5,@RequestParam("channelSign")String channelSign) + public AjaxResult checkOrder(String phoneMd5,String channelSign) { return sysPublicHalfService.checkOrder(phoneMd5,channelSign); diff --git a/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/service/impl/SysPublicHalfServiceImpl.java b/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/service/impl/SysPublicHalfServiceImpl.java index 6ec1bd7e..58d245e0 100644 --- a/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/service/impl/SysPublicHalfServiceImpl.java +++ b/ruoyi-modules/ruoyi-btc/src/main/java/com/ruoyi/btc/service/impl/SysPublicHalfServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.btc.domain.ComPublicHalfDto; import com.ruoyi.btc.domain.CustomerInfoDto; import com.ruoyi.btc.service.ISysPublicHalfService; import com.ruoyi.common.core.constant.CacheConstants; +import com.ruoyi.common.core.constant.RedisConstant; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.GetSumDto; import com.ruoyi.common.core.domain.R; @@ -24,9 +25,11 @@ import com.ruoyi.system.api.RemoteCustomerApplyLogService; import com.ruoyi.system.api.RemoteCustomerService; import com.ruoyi.system.api.RemoteMerchantService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -36,6 +39,7 @@ import java.util.stream.Collectors; */ @Service @RequiredArgsConstructor +@Slf4j public class SysPublicHalfServiceImpl implements ISysPublicHalfService { private final RemoteCustomerService remoteCustomerService; @@ -51,7 +55,6 @@ public class SysPublicHalfServiceImpl implements ISysPublicHalfService @Override public AjaxResult check(ComPublicHalfDto comPublicHalfDto) { //校验 IP地址是否正常 渠道标识是否存在 数据是否为空 - if (StringUtils.isEmpty(comPublicHalfDto.getChannelSignature())){ return AjaxResult.error("渠道标识不能未空"); } @@ -62,12 +65,20 @@ public class SysPublicHalfServiceImpl implements ISysPublicHalfService if (StringUtils.isEmpty(comPublicHalfDto.getData())){ return AjaxResult.error("加密数据不能为空"); } + //解密为customerInfoDto String s = SecureUtils.AesUtil.AesDecode(comPublicHalfDto.getData(), comPublicHalfDto.getChannelSignature()); if (s==null){ return AjaxResult.error("解密异常"); } CustomerInfoDto customerInfoDto = JSONObject.parseObject(s, CustomerInfoDto.class); + //撞库幂等性校验 暂时不加 +// Boolean aBoolean = redisService.hasKey(RedisConstant.HIT_CHECK_CACHE+customerInfoDto.getPhoneMd5()+":"+comPublicHalfDto.getChannelSignature()); +// if (aBoolean){ +// return AjaxResult.error("手机号:"+customerInfoDto.getPhoneMd5()+"请勿重复撞库"); +// } +// redisService.setCacheObject(RedisConstant.HIT_CHECK_CACHE+customerInfoDto.getPhoneMd5(),1,60*3l, TimeUnit.SECONDS); + log.info("渠道:{},撞库手机号:{}",channel.getChannelName(),customerInfoDto.getPhoneMd5()); //校验数据必传参数是否未传 String checkData = checkData(customerInfoDto); if (checkData!=null){ @@ -84,6 +95,7 @@ public class SysPublicHalfServiceImpl implements ISysPublicHalfService customer.setStatus(2); customer.setPhoneMd5(customerInfoDto.getPhoneMd5()); R customerInfoByPhoneMd5 = remoteCustomerService.getCustomerInfoByPhoneMd5(customerInfoDto.getPhoneMd5(), SecurityConstants.INNER); + log.info("渠道:{},是否查询到用户:{}",channel.getChannelName(),customerInfoByPhoneMd5.getCode()); if (customerInfoByPhoneMd5.getCode()==200){ remoteCustomerService.updateByPhoneMd5(customer,SecurityConstants.INNER); }else { @@ -211,6 +223,7 @@ public class SysPublicHalfServiceImpl implements ISysPublicHalfService return AjaxResult.error("解密异常"); } CustomerInfoDto customerInfoDto = JSONObject.parseObject(s, CustomerInfoDto.class); + log.info("渠道:{},进件手机号:{}",channel.getChannelName(),customerInfoDto.getPhone()); //校验数据必传参数是否未传 String checkData = checkData(customerInfoDto); //转化字段未数据库中资质字段 更新 用户实名状态 一并保存用户申请记录 已申请 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomerApplyLogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomerApplyLogController.java index 4b152964..3b90ee9d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomerApplyLogController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomerApplyLogController.java @@ -66,7 +66,7 @@ public class CustomerApplyLogController extends BaseController * @return 结果 */ @GetMapping("/customerApply") - public R customerApply(@PathVariable("customerID") Long customerID,@RequestHeader(SecurityConstants.FROM_SOURCE) String source){ + public R customerApply(@RequestParam("customerID") Long customerID,@RequestHeader(SecurityConstants.FROM_SOURCE) String source){ return customerApplyLogService.getCustomerApply(customerID); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MerchantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MerchantServiceImpl.java index 5dafce35..b157fe82 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MerchantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MerchantServiceImpl.java @@ -25,6 +25,7 @@ import com.ruoyi.system.mapper.CustomerApplyLogMapper; import com.ruoyi.system.mapper.CustomerMapper; import com.ruoyi.system.service.ICustomerApplyLogService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.system.mapper.MerchantMapper; @@ -41,6 +42,7 @@ import javax.servlet.http.HttpServletRequest; */ @Service @RequiredArgsConstructor +@Slf4j public class MerchantServiceImpl extends ServiceImpl implements IService,IMerchantService { private final MerchantMapper merchantMapper; @@ -147,6 +149,7 @@ public class MerchantServiceImpl extends ServiceImpl i if (customerId==null){ return AjaxResult.error("用户不存在或未登录"); } + log.info("H5打开页面:{}",customerId); Customer customer = customerMapper.selectById(customerId); List merchants = matchMerchant(customer); List merchantListDtos = new ArrayList<>(); @@ -170,6 +173,7 @@ public class MerchantServiceImpl extends ServiceImpl i if (aBoolean){ return AjaxResult.error("请勿重复点击"); } + log.info("H5申请用户:{}",customerId); Customer customer = customerMapper.selectById(customerId); Merchant merchant = merchantMapper.selectById(merchantId); redisService.setCacheObject(RedisConstant.H5_APPLY_CHECK+customerId,1,10l, TimeUnit.SECONDS);