diff --git a/bd-api/bd-api-third/src/main/java/com/hzs/third/sms/ISmsServiceApi.java b/bd-api/bd-api-third/src/main/java/com/hzs/third/sms/ISmsServiceApi.java index 07930813..b407c772 100644 --- a/bd-api/bd-api-third/src/main/java/com/hzs/third/sms/ISmsServiceApi.java +++ b/bd-api/bd-api-third/src/main/java/com/hzs/third/sms/ISmsServiceApi.java @@ -6,18 +6,9 @@ import com.hzs.third.sms.dto.SmsServiceDTO; /** * 短信服务接口 - * @author hzs */ public interface ISmsServiceApi { - /** - * 发送 - * - * @param param - * @return - */ - R send(SmsServiceDTO param); - /** * 阿里发送 * diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberAuthenticationController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberAuthenticationController.java index dae2f90d..af3a1e60 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberAuthenticationController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberAuthenticationController.java @@ -19,7 +19,7 @@ import com.hzs.member.account.service.ICuMemberAuthenticationService; import com.hzs.member.account.service.ICuMemberBaseService; import com.hzs.member.account.vo.CuMemberAuthenticationVO; import com.hzs.member.base.service.ICuMemberService; -import com.hzs.member.sms.service.impl.ApiSmsServiceImpl; +import com.hzs.member.sms.service.IApiAliSmsService; import com.hzs.third.idcard.IdCardServiceApi; import com.hzs.third.idcard.dto.IdCardOcrDTO; import org.apache.dubbo.config.annotation.DubboReference; @@ -32,18 +32,15 @@ import java.time.format.DateTimeFormatter; /** * 实名认证 前端控制器 - * - * @author hzs - * @since 2023-04-17 */ @RestController @RequestMapping("/api/authentication") public class ApiCuMemberAuthenticationController extends BaseController { @Autowired - private ApiSmsServiceImpl apiSmsService; + private IApiAliSmsService iApiAliSmsService; @Autowired - private ICuMemberAuthenticationService authenticationService; + private ICuMemberAuthenticationService iCuMemberAuthenticationService; @Autowired private ICuMemberBaseService iCuMemberBaseService; @Autowired @@ -52,7 +49,6 @@ public class ApiCuMemberAuthenticationController extends BaseController { @DubboReference IdCardServiceApi idCardServiceApi; - /** * 调用身份证OCR接口 * @@ -119,16 +115,15 @@ public class ApiCuMemberAuthenticationController extends BaseController { Integer pkCountry = SecurityUtils.getPkCountry(); //查询是否已实名 - CuMemberAuthenticationVO queryAuthenticationVO = authenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); + CuMemberAuthenticationVO queryAuthenticationVO = iCuMemberAuthenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); if (null != queryAuthenticationVO) { return AjaxResult.error(FinanceMsgConstants.MEMBER_REAL_NAME); } - // TODO new 先不需要短信校验 -// String verificationCode = authenticationVO.getVerificationCode(); -// if (StringUtils.isEmpty(verificationCode)) { -// return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.VERIFICATION_CODE_CANNOT_EMPTY)); -// } + String verificationCode = authenticationVO.getVerificationCode(); + if (StringUtils.isEmpty(verificationCode)) { + return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.VERIFICATION_CODE_CANNOT_EMPTY)); + } //真实姓名 String accountName = authenticationVO.getAccountName(); if (StringUtils.isEmpty(accountName)) { @@ -161,16 +156,14 @@ public class ApiCuMemberAuthenticationController extends BaseController { return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.ID_BACK_CANNOT_EMPTY)); } - // TODO new 先不需要短信校验 -// String key = ESmsTemplate.VERIFICATION.getCache() + pkMember; -// String message = apiSmsService.checkSms(key, verificationCode); -// if (null != message) { -// return AjaxResult.error(message); -// } + String message = iApiAliSmsService.checkCode(null, verificationCode, null, pkMember); + if (null != message) { + return AjaxResult.error(message); + } authenticationVO.setPkCountry(pkCountry); authenticationVO.setPkMember(pkMember); - return toAjax(authenticationService.saveAuthentication(authenticationVO)); + return toAjax(iCuMemberAuthenticationService.saveAuthentication(authenticationVO)); } @@ -193,7 +186,7 @@ public class ApiCuMemberAuthenticationController extends BaseController { //配置后才进行验证 if (null != bdTradeConfig) { //查询是否已实名认证 - CuMemberAuthenticationVO authenticationVO = authenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); + CuMemberAuthenticationVO authenticationVO = iCuMemberAuthenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); flag = null == authenticationVO ? EYesNo.NO.getValue() : EYesNo.YES.getValue(); } } @@ -210,7 +203,7 @@ public class ApiCuMemberAuthenticationController extends BaseController { public AjaxResult showDetail() { Long pkMember = SecurityUtils.getUserId(); Integer pkCountry = SecurityUtils.getPkCountry(); - CuMemberAuthenticationVO authenticationVO = authenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); + CuMemberAuthenticationVO authenticationVO = iCuMemberAuthenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); return AjaxResult.success(authenticationVO); } @@ -263,11 +256,11 @@ public class ApiCuMemberAuthenticationController extends BaseController { Long pkMember = SecurityUtils.getUserId(); Integer pkCountry = SecurityUtils.getPkCountry(); //查询是否已实名 - CuMemberAuthenticationVO queryAuthenticationVO = authenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); + CuMemberAuthenticationVO queryAuthenticationVO = iCuMemberAuthenticationService.selectCuMemberAuthenticationByPkMember(CuMemberAuthenticationVO.builder().pkMember(pkMember).pkCountry(pkCountry).build()); if (null == queryAuthenticationVO) { return AjaxResult.error(FinanceMsgConstants.MEMBER_NOT_REAL_NAME); } - return toAjax(authenticationService.memberRenewalContract(pkMember)); + return toAjax(iCuMemberAuthenticationService.memberRenewalContract(pkMember)); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberBankController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberBankController.java index 0fd98ec8..ac426fb0 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberBankController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/account/controller/api/ApiCuMemberBankController.java @@ -6,7 +6,6 @@ import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.constant.msg.FinanceMsgConstants; import com.hzs.common.core.domain.R; import com.hzs.common.core.enums.EBusinessModule; -import com.hzs.common.core.enums.ESmsTemplate; import com.hzs.common.core.enums.EYesNo; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.web.controller.BaseController; @@ -20,7 +19,7 @@ import com.hzs.member.account.service.ICuMemberBankService; import com.hzs.member.account.service.ICuMemberBaseService; import com.hzs.member.account.service.ICuMemberWithdrawService; import com.hzs.member.account.vo.CuMemberBankVO; -import com.hzs.member.sms.service.impl.ApiSmsServiceImpl; +import com.hzs.member.sms.service.IApiAliSmsService; import com.hzs.third.bankcard.IBankCardServiceApi; import com.hzs.third.bankcard.dto.BankCardParam; import org.apache.dubbo.config.annotation.DubboReference; @@ -38,16 +37,16 @@ import java.util.List; public class ApiCuMemberBankController extends BaseController { @Autowired - private ICuMemberBankService cuMemberBankService; + private ICuMemberBankService iCuMemberBankService; @Autowired - private ApiSmsServiceImpl apiSmsService; + private IApiAliSmsService iApiAliSmsService; @Autowired private ICuMemberBaseService iCuMemberBaseService; @Autowired - private ICuMemberWithdrawService cuMemberWithdrawService; + private ICuMemberWithdrawService iCuMemberWithdrawService; @DubboReference - IBankCardServiceApi bankCardServiceApi; + IBankCardServiceApi iBankCardServiceApi; /** * 是否绑定银行卡 @@ -58,7 +57,7 @@ public class ApiCuMemberBankController extends BaseController { public AjaxResult isBindBank() { Long pkMember = SecurityUtils.getUserId(); Integer pkCountry = SecurityUtils.getPkCountry(); - CuMemberBankVO cuMemberBank = cuMemberBankService.isBindBank(pkMember, pkCountry); + CuMemberBankVO cuMemberBank = iCuMemberBankService.isBindBank(pkMember, pkCountry); String flag = null == cuMemberBank.getDefaultCard() ? EYesNo.NO.getValue() : EYesNo.YES.getValue(); return AjaxResult.success().put("flag", flag); } @@ -74,15 +73,15 @@ public class ApiCuMemberBankController extends BaseController { Integer pkCountry = SecurityUtils.getPkCountry(); Long pkMember = SecurityUtils.getUserId(); //查询默认银行卡 - CuMemberBankVO cuMemberBankVO = cuMemberBankService.selectCuMemberBankById(pkId); + CuMemberBankVO cuMemberBankVO = iCuMemberBankService.selectCuMemberBankById(pkId); //解绑默认银行卡需校验是否有进行的提现 if (null != cuMemberBankVO) { - List pkIds = cuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember); + List pkIds = iCuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember); if (CollUtil.isNotEmpty(pkIds)) { return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_APPROVAL)); } } - return AjaxResult.success(cuMemberBankService.unbindBank(pkId, pkMember)); + return AjaxResult.success(iCuMemberBankService.unbindBank(pkId, pkMember)); } /** @@ -110,7 +109,7 @@ public class ApiCuMemberBankController extends BaseController { BankCardParam bankCard = BankCardParam.builder().name(memberBankParam.getAccountName()) .idCard(memberBankParam.getIdCard()).mobile(memberBankParam.getPhone()) .bankCard(StringUtils.deleteWhitespace(memberBankParam.getCardNumber())).build(); - R result = bankCardServiceApi.verifyBankCard(bankCard); + R result = iBankCardServiceApi.verifyBankCard(bankCard); return result.isSuccess() ? AjaxResult.success() : AjaxResult.error(result.getMsg()); } @@ -127,45 +126,44 @@ public class ApiCuMemberBankController extends BaseController { Long pkMember = SecurityUtils.getUserId(); //是否配置提现白名单 String configWhite = getConfigWhite(pkCountry, pkMember); - //海外不校验验证码、四要素 国内配置了提现白名单不校验 + // 海外不校验验证码、四要素 国内配置了提现白名单不校验 if (pkCountry.equals(CountryConstants.CHINA_COUNTRY) && configWhite.equals(EYesNo.NO.getValue())) { - // TODO new 先不需要校验短信 -// String verificationCode = cuMemberBankParam.getVerificationCode(); -// if (StringUtils.isEmpty(verificationCode)) { -// return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.VERIFICATION_CODE_CANNOT_EMPTY)); -// } + String verificationCode = cuMemberBankParam.getVerificationCode(); + if (StringUtils.isEmpty(verificationCode)) { + return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.VERIFICATION_CODE_CANNOT_EMPTY)); + } //支行名称 String subBankName = cuMemberBankParam.getSubBankName(); if (StringUtils.isEmpty(subBankName)) { return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.OPENING_BRANCH_CANNOT_EMPTY)); } - // TODO new 先不需要校验短信 -// String Key = ESmsTemplate.VERIFICATION.getCache() + pkMember; -// String message = apiSmsService.checkSms(Key, verificationCode); -// if (null != message) { -// return AjaxResult.error(message); -// } + + // 校验短信验证码 + String message = iApiAliSmsService.checkCode(null, verificationCode, null, pkMember); + if (null != message) { + return AjaxResult.error(message); + } //银行卡号去空格 String cardNumber = cuMemberBankParam.getCardNumber(); cuMemberBankParam.setCardNumber(StringUtils.deleteWhitespace(cardNumber)); } cuMemberBankParam.setPkCountry(pkCountry); cuMemberBankParam.setPkMember(pkMember); - return toAjax(cuMemberBankService.saveMemberBank(cuMemberBankParam)); + return toAjax(iCuMemberBankService.saveMemberBank(cuMemberBankParam)); } @GetMapping("/list") public AjaxResult getBankCardList() { Long pkMember = SecurityUtils.getUserId(); Integer pkCountry = SecurityUtils.getPkCountry(); - return AjaxResult.success(cuMemberBankService.selectBankCardByPkMember(pkMember, pkCountry)); + return AjaxResult.success(iCuMemberBankService.selectBankCardByPkMember(pkMember, pkCountry)); } @GetMapping("/default-bank") public AjaxResult getDefaultBankCard() { Long pkMember = SecurityUtils.getUserId(); Integer pkCountry = SecurityUtils.getPkCountry(); - return AjaxResult.success(cuMemberBankService.isBindBank(pkMember, pkCountry)); + return AjaxResult.success(iCuMemberBankService.isBindBank(pkMember, pkCountry)); } /** @@ -179,15 +177,15 @@ public class ApiCuMemberBankController extends BaseController { Long pkMember = SecurityUtils.getUserId(); Integer pkCountry = SecurityUtils.getPkCountry(); //查询银行卡 - CuMemberBank cuMemberBank = cuMemberBankService.getById(pkId); + CuMemberBank cuMemberBank = iCuMemberBankService.getById(pkId); //解绑默认银行卡需校验是否有进行的提现 if (null != cuMemberBank) { - List pkIds = cuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember); + List pkIds = iCuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember); if (CollUtil.isNotEmpty(pkIds)) { return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_APPROVAL)); } } - return toAjax(cuMemberBankService.updateDefault(pkId, pkMember, pkCountry)); + return toAjax(iCuMemberBankService.updateDefault(pkId, pkMember, pkCountry)); } /** diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/account/service/ICuMemberTradeService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/account/service/ICuMemberTradeService.java index 768419e9..56b202b8 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/account/service/ICuMemberTradeService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/account/service/ICuMemberTradeService.java @@ -13,12 +13,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; /** - *

* 会员交易明细 服务类 - *

- * - * @author hzs - * @since 2022-09-06 */ public interface ICuMemberTradeService extends IService { @@ -99,7 +94,8 @@ public interface ICuMemberTradeService extends IService { * @param: [mbbList] * @return: java.util.List **/ - List selectBusinessBalanceNotEnoughMember(List mbbList,Integer pkCountry); + List selectBusinessBalanceNotEnoughMember(List mbbList, Integer pkCountry); + /** * @description: 特殊业务业务办理专用查询会员余额 * @author: zhang jing @@ -107,9 +103,7 @@ public interface ICuMemberTradeService extends IService { * @param: [mbbList, pkCountry] * @return: java.util.List **/ - List selectSpecialBusinessBalanceNotEnoughMember(List mbbList,Integer pkCountry); - - + List selectSpecialBusinessBalanceNotEnoughMember(List mbbList, Integer pkCountry); /** diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java index 4ec50071..0aa22049 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java @@ -3,14 +3,11 @@ package com.hzs.member.base.controller.api; import cn.hutool.core.codec.Base64Decoder; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.hzs.common.core.annotation.RepeatSubmit; import com.hzs.common.core.annotation.RepeatSubmitSimple; import com.hzs.common.core.config.BdConfig; import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.constant.EnumsPrefixConstants; -import com.hzs.common.core.constant.SysConstants; import com.hzs.common.core.constant.msg.ConfigMsgConstants; -import com.hzs.common.core.constant.msg.FinanceMsgConstants; import com.hzs.common.core.constant.msg.MemberMsgConstants; import com.hzs.common.core.domain.FileResult; import com.hzs.common.core.domain.R; @@ -37,10 +34,9 @@ import com.hzs.common.core.utils.UploadFileUtil; import com.hzs.member.base.vo.*; import com.hzs.member.detail.service.ICuMemberChangeLogService; import com.hzs.member.param.MemberParam; -import com.hzs.member.sms.service.IApiSmsService; +import com.hzs.member.sms.service.IApiAliSmsService; import com.hzs.system.base.ICountryServiceApi; import com.hzs.system.base.ICurrencyServiceApi; -import com.hzs.system.base.ISystemConfigServiceApi; import com.hzs.system.base.dto.CountryDTO; import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.config.IAgreementRenewalWhiteServiceApi; @@ -57,11 +53,7 @@ import java.math.BigDecimal; import java.util.*; /** - * @Description: 会员控制器 - * @Author: jiang chao - * @Time: 2023/1/10 15:18 - * @Classname: ApiMemberController - * @PackageName: com.hzs.member.base.controller.api + * 会员控制器 */ @Slf4j @RequestMapping("/api/member") @@ -75,9 +67,9 @@ public class ApiMemberController extends BaseController { @Autowired private ICuMemberService iCuMemberService; @Autowired - private ICuMemberChangeLogService memberChangeLogService; + private ICuMemberChangeLogService iCuMemberChangeLogService; @Autowired - private IApiSmsService iApiSmsService; + private IApiAliSmsService iApiAliSmsService; @DubboReference IGradeServiceApi iGradeServiceApi; @@ -88,8 +80,6 @@ public class ApiMemberController extends BaseController { @DubboReference ICurrencyServiceApi iCurrencyServiceApi; @DubboReference - ISystemConfigServiceApi iSystemConfigServiceApi; - @DubboReference IAgreementRenewalWhiteServiceApi iAgreementRenewalWhiteServiceApi; /** @@ -269,52 +259,52 @@ public class ApiMemberController extends BaseController { return AjaxResult.error(); } - /** - * 更新邮箱 - * - * @param param - * @return - */ - @PutMapping("/update-email") - public AjaxResult updateEmail(@RequestBody MemberDataParam param) { - if (StringUtils.isEmpty(param.getEmail())) { - // 缺少参数 - return AjaxResult.error("缺少参数"); - } - if (StringUtils.isEmpty(param.getCode())) { - // 验证码不能为空 - return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.VERIFICATION_CODE_CANNOT_EMPTY)); - } - - Long memberId = SecurityUtils.getUserId(); - CuMember member = iCuMemberService.getMemberById(memberId); - if (null == member) { - // 会员不存在 - return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.MEMBER_NOT_EXITS)); - } - - // 短信校验码校验 - String checkStr = iApiSmsService.checkSms(ESmsTemplate.VERIFICATION.getCache() + memberId, param.getCode()); - if (null != checkStr) { - return AjaxResult.error(checkStr); - } - - // 会员修改信息 - CuMember cuMember = new CuMember(); - cuMember.setPkId(memberId); - cuMember.setEmail(param.getEmail()); - cuMember.setPkModified(memberId); - cuMember.setModifiedTime(new Date()); - // 会员修改记录信息 - CuMemberChangeLog cuMemberChangeLog = CuMemberChangeLog.builder() - .pkMember(memberId) - .changeType(EMemberChangeType.EMAIL.getValue()) - .changeFront(member.getEmail()) - .changeAfter(param.getEmail()) - .build(); - iMemberInfoService.updateMemberInfo(cuMember, Collections.singletonList(cuMemberChangeLog)); - return AjaxResult.success(); - } +// /** +// * 更新邮箱 +// * +// * @param param +// * @return +// */ +// @PutMapping("/update-email") +// public AjaxResult updateEmail(@RequestBody MemberDataParam param) { +// if (StringUtils.isEmpty(param.getEmail())) { +// // 缺少参数 +// return AjaxResult.error("缺少参数"); +// } +// if (StringUtils.isEmpty(param.getCode())) { +// // 验证码不能为空 +// return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.VERIFICATION_CODE_CANNOT_EMPTY)); +// } +// +// Long memberId = SecurityUtils.getUserId(); +// CuMember member = iCuMemberService.getMemberById(memberId); +// if (null == member) { +// // 会员不存在 +// return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.MEMBER_NOT_EXITS)); +// } +// +// // 短信校验码校验 +// String checkStr = iApiSmsService.checkSms(ESmsTemplate.VERIFICATION.getCache() + memberId, param.getCode()); +// if (null != checkStr) { +// return AjaxResult.error(checkStr); +// } +// +// // 会员修改信息 +// CuMember cuMember = new CuMember(); +// cuMember.setPkId(memberId); +// cuMember.setEmail(param.getEmail()); +// cuMember.setPkModified(memberId); +// cuMember.setModifiedTime(new Date()); +// // 会员修改记录信息 +// CuMemberChangeLog cuMemberChangeLog = CuMemberChangeLog.builder() +// .pkMember(memberId) +// .changeType(EMemberChangeType.EMAIL.getValue()) +// .changeFront(member.getEmail()) +// .changeAfter(param.getEmail()) +// .build(); +// iMemberInfoService.updateMemberInfo(cuMember, Collections.singletonList(cuMemberChangeLog)); +// return AjaxResult.success(); +// } /** * 忘记密码更新 @@ -336,7 +326,7 @@ public class ApiMemberController extends BaseController { Long memberId = cuMemberExt.getPkId(); // 短信校验码校验 - String checkStr = iApiSmsService.checkSms(ESmsTemplate.FORGET_PASSWORD.getCache() + memberId, param.getCode()); + String checkStr = iApiAliSmsService.checkRecoverCode(cuMemberExt.getPhone(), param.getCode(), cuMemberExt.getPkId()); if (null != checkStr) { return AjaxResult.error(checkStr); } @@ -380,7 +370,7 @@ public class ApiMemberController extends BaseController { Long memberId = cuMemberExt.getPkId(); // 短信校验码校验 - String checkStr = iApiSmsService.checkSms(ESmsTemplate.VERIFICATION.getCache() + memberId, param.getCode()); + String checkStr = iApiAliSmsService.checkPayPasswordCode(cuMemberExt.getPhone(), param.getCode(), memberId); if (null != checkStr) { return AjaxResult.error(checkStr); } @@ -401,92 +391,91 @@ public class ApiMemberController extends BaseController { .build(); iMemberInfoService.updateMemberInfo(cuMember, Collections.singletonList(cuMemberChangeLog)); - return AjaxResult.success(); } - /** - * @param memberParam 订单参数 - * @Description: 确认注册订单,生成待支付订单,只有注册订单有待支付订单 - * @return: AjaxResult - * @Author: sui q - * @Date: 2022/8/27 16:47 - */ - @RepeatSubmit - @PostMapping("/reg-share-member") - public AjaxResult confirmRegisterOrder(@RequestBody MemberParam memberParam) { - if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) { - if (new Date().getTime() >= SysConstants.CLOSE_ZERO_DATE_TEST) { - return AjaxResult.error("二维码已停用,请联系相应亲友协助办理注册"); - } - } else { - if (new Date().getTime() >= SysConstants.CLOSE_ZERO_DATE_ONLINE) { - return AjaxResult.error("二维码已停用,请联系相应亲友协助办理注册"); - } - } - - // 验证必输项 - if (validateFieldNotNull(memberParam, memberParam.getValidConfirmField())) { - return AjaxResult.error(MemberMsgConstants.REQUIRED_NOT_EMPTY); - } - // 验证CN后是否全部数字 - String memberCode = memberParam.getMemberCode(); - AjaxResult memberCodeResult = validateMemberCode(memberCode); - if (memberCodeResult != null) { - return memberCodeResult; - } - // 上级编码(推荐人) - Long pkParent = Long.parseLong(new String(Base64Decoder.decode(memberParam.getParent()))); - memberParam.setPkParent(pkParent); - // 验证推荐人 - CuMember cuMember = iCuMemberService.getMember(memberParam.getPkParent()); - if (cuMember == null) { - return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.PARENT_NOT_EXISTS)); - } - - // 验证一个手机号可以注册多少次 - // 验证手机号注册次数 - List cuMemberExtList = iCuMemberService.getMemberInfoByCondition(CuMember.builder().phone(memberParam.getPhone()).pkSettleGrade(EGrade.START_UP.getValue()).pkSettleCountry(cuMember.getPkSettleCountry()).build()); - // 系统中存在该手机号走的验证 - if (cuMemberExtList.size() > 0) { - // 手机号注册次数 - String value = iSystemConfigServiceApi.getBonusSystemConfig(cuMember.getPkSettleCountry(), ESystemConfig.HA_FUN_REGISTER_NUMBER.getKey()).getData(); - if (cuMemberExtList.size() >= Integer.parseInt(value)) { - // 手机注册次数已达系统上限 - return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.SYSTEM_REGISTER_COUNT)); - } - } - memberParam.setMemberCode(SysConstants.HAI_FUN_PREFIX + memberParam.getMemberCode()); - if (StringUtils.isNotEmpty(memberParam.getMemberCode())) { - CuMember existCuMember = iCuMemberService.getMemberByCode(memberParam.getMemberCode()); - // 验证该编号是否存在会员系统中 - if (existCuMember != null) { - return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.EMPTY_MEMBER_REPEAT_1)); - } - } - - // 短信校验码校验 - String checkStr = iApiSmsService.checkSms(ESmsTemplate.VERIFICATION.getCache() + memberParam.getPhone(), memberParam.getCode()); - if (null != checkStr) { - return AjaxResult.error(checkStr); - } - CuMember newCuMember = iCuMemberService.confirmShareMemberByMemberParam(memberParam); - if (newCuMember != null) { - MemberShare memberShare = MemberShare.builder().memberCode(newCuMember.getMemberCode()) - .memberName(newCuMember.getMemberName()) - .phone(newCuMember.getPhone()) - .loginPassword(newCuMember.getLoginPassword()) - .payPassword(newCuMember.getPayPassword()) - .urlAddress(BdConfig.getPc()) - .gzh(BdConfig.getGzh()) - .ios(BdConfig.getIos()) - .android(BdConfig.getAndroid()) - .build(); - return AjaxResult.success(memberShare); - } else { - return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.TOKEN_REPEAT_SUBMIT)); - } - } +// /** +// * @param memberParam 订单参数 +// * @Description: 确认注册订单,生成待支付订单,只有注册订单有待支付订单 +// * @return: AjaxResult +// * @Author: sui q +// * @Date: 2022/8/27 16:47 +// */ +// @RepeatSubmit +// @PostMapping("/reg-share-member") +// public AjaxResult confirmRegisterOrder(@RequestBody MemberParam memberParam) { +// if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) { +// if (new Date().getTime() >= SysConstants.CLOSE_ZERO_DATE_TEST) { +// return AjaxResult.error("二维码已停用,请联系相应亲友协助办理注册"); +// } +// } else { +// if (new Date().getTime() >= SysConstants.CLOSE_ZERO_DATE_ONLINE) { +// return AjaxResult.error("二维码已停用,请联系相应亲友协助办理注册"); +// } +// } +// +// // 验证必输项 +// if (validateFieldNotNull(memberParam, memberParam.getValidConfirmField())) { +// return AjaxResult.error(MemberMsgConstants.REQUIRED_NOT_EMPTY); +// } +// // 验证CN后是否全部数字 +// String memberCode = memberParam.getMemberCode(); +// AjaxResult memberCodeResult = validateMemberCode(memberCode); +// if (memberCodeResult != null) { +// return memberCodeResult; +// } +// // 上级编码(推荐人) +// Long pkParent = Long.parseLong(new String(Base64Decoder.decode(memberParam.getParent()))); +// memberParam.setPkParent(pkParent); +// // 验证推荐人 +// CuMember cuMember = iCuMemberService.getMember(memberParam.getPkParent()); +// if (cuMember == null) { +// return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.PARENT_NOT_EXISTS)); +// } +// +// // 验证一个手机号可以注册多少次 +// // 验证手机号注册次数 +// List cuMemberExtList = iCuMemberService.getMemberInfoByCondition(CuMember.builder().phone(memberParam.getPhone()).pkSettleGrade(EGrade.START_UP.getValue()).pkSettleCountry(cuMember.getPkSettleCountry()).build()); +// // 系统中存在该手机号走的验证 +// if (cuMemberExtList.size() > 0) { +// // 手机号注册次数 +// String value = iSystemConfigServiceApi.getBonusSystemConfig(cuMember.getPkSettleCountry(), ESystemConfig.HA_FUN_REGISTER_NUMBER.getKey()).getData(); +// if (cuMemberExtList.size() >= Integer.parseInt(value)) { +// // 手机注册次数已达系统上限 +// return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.SYSTEM_REGISTER_COUNT)); +// } +// } +// memberParam.setMemberCode(SysConstants.HAI_FUN_PREFIX + memberParam.getMemberCode()); +// if (StringUtils.isNotEmpty(memberParam.getMemberCode())) { +// CuMember existCuMember = iCuMemberService.getMemberByCode(memberParam.getMemberCode()); +// // 验证该编号是否存在会员系统中 +// if (existCuMember != null) { +// return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.EMPTY_MEMBER_REPEAT_1)); +// } +// } +// +// // 短信校验码校验 +// String checkStr = iApiSmsService.checkSms(ESmsTemplate.VERIFICATION.getCache() + memberParam.getPhone(), memberParam.getCode()); +// if (null != checkStr) { +// return AjaxResult.error(checkStr); +// } +// CuMember newCuMember = iCuMemberService.confirmShareMemberByMemberParam(memberParam); +// if (newCuMember != null) { +// MemberShare memberShare = MemberShare.builder().memberCode(newCuMember.getMemberCode()) +// .memberName(newCuMember.getMemberName()) +// .phone(newCuMember.getPhone()) +// .loginPassword(newCuMember.getLoginPassword()) +// .payPassword(newCuMember.getPayPassword()) +// .urlAddress(BdConfig.getPc()) +// .gzh(BdConfig.getGzh()) +// .ios(BdConfig.getIos()) +// .android(BdConfig.getAndroid()) +// .build(); +// return AjaxResult.success(memberShare); +// } else { +// return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.TOKEN_REPEAT_SUBMIT)); +// } +// } private AjaxResult validateMemberCode(String memberCode) { boolean result = memberCode.matches("[0-9]+"); @@ -616,10 +605,7 @@ public class ApiMemberController extends BaseController { } /* - * @description: 验证是否连续数字 - * @author: sui q - * @date: 2023/7/4 16:48 - * @param: null null + * 验证是否连续数字 **/ private Boolean compareConDigits(String memberCode) { String[] codeList = memberCode.split(""); @@ -762,7 +748,7 @@ public class ApiMemberController extends BaseController { LambdaUpdateWrapper qw = new LambdaUpdateWrapper<>(); qw.eq(CuMemberChangeLog::getPkMember, memberId); qw.eq(CuMemberChangeLog::getChangeType, EMemberChangeType.LOGIN_PWD.getValue()); - int count = memberChangeLogService.count(qw); + int count = iCuMemberChangeLogService.count(qw); return AjaxResult.success(count); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/self/controller/api/ApiDomicileChangeController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/self/controller/api/ApiDomicileChangeController.java index 14d2254b..ec77a74b 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/self/controller/api/ApiDomicileChangeController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/self/controller/api/ApiDomicileChangeController.java @@ -1,19 +1,16 @@ package com.hzs.member.self.controller.api; import cn.hutool.core.collection.CollectionUtil; -import com.hzs.common.core.annotation.RepeatSubmit; import com.hzs.common.core.annotation.RepeatSubmitSimple; import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.core.constant.msg.ConfigMsgConstants; import com.hzs.common.core.constant.msg.FinanceMsgConstants; import com.hzs.common.core.enums.EApprovalBusiness; -import com.hzs.common.core.enums.ESmsTemplate; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.member.self.CuSelfServiceLog; -import com.hzs.common.security.service.MemberTokenService; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.util.TransactionUtils; import com.hzs.member.account.dto.BusinessCommissionDTO; @@ -25,12 +22,9 @@ import com.hzs.member.account.vo.CuMemberAuthenticationVO; import com.hzs.member.base.service.ICuMemberService; import com.hzs.member.self.service.ICuSelfServiceLogService; import com.hzs.member.self.vo.DomicileChangeVO; -import com.hzs.member.sms.service.impl.ApiSmsServiceImpl; +import com.hzs.member.sms.service.IApiAliSmsService; import com.hzs.system.config.IServiceChargeServiceApi; import com.hzs.system.config.dto.ServiceChargeDTO; -import com.hzs.system.sys.IApprovalServiceApi; -import com.hzs.system.sys.dto.ApprovalInfoDTO; -import com.hzs.system.sys.dto.ApprovalItemInfoDTO; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; @@ -38,48 +32,29 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - /** * 变理户籍 - * - * @Description: - * @Author: ljc - * @Time: 2023/4/18 10:07 - * @Classname: ApiDomicileChangeController - * @Package_name: com.hzs.member.self.controller.api */ @Slf4j @RequestMapping("/api/change-domicile") @RestController public class ApiDomicileChangeController extends BaseController { - @Autowired - private ICuMemberAuthenticationService cuMemberAuthenticationService; @Autowired - private ICuMemberService cuMemberService; - + private ICuMemberAuthenticationService iCuMemberAuthenticationService; @Autowired - ApiSmsServiceImpl apiSmsService; - + private ICuMemberService iCuMemberService; @Autowired - private ICuMemberTradeService cuMemberTradeService; - + private ICuMemberTradeService iCuMemberTradeService; @Autowired - private ICuSelfServiceLogService serviceLogService; - + private ICuSelfServiceLogService iCuSelfServiceLogService; @Autowired - private MemberTokenService memberTokenService; + private IApiAliSmsService iApiAliSmsService; @DubboReference - private IServiceChargeServiceApi serviceChargeServiceApi; - - @DubboReference - private IApprovalServiceApi iApprovalServiceApi; + IServiceChargeServiceApi iServiceChargeServiceApi; /** * 查询可申请信息 @@ -89,7 +64,7 @@ public class ApiDomicileChangeController extends BaseController { @GetMapping("/application-info-list") public AjaxResult applicationInformation() { Long pkMember = SecurityUtils.getUserId(); - CuMemberExt member = cuMemberService.getMemberById(pkMember); + CuMemberExt member = iCuMemberService.getMemberById(pkMember); DomicileChangeVO domicileChangeVO = DomicileChangeVO.builder().memberCode(member.getMemberCode()) .memberName(member.getMemberName()).phone(member.getPhone()) .changeNum(MagicNumberConstants.CHANGE_NUM).build(); @@ -99,7 +74,7 @@ public class ApiDomicileChangeController extends BaseController { @GetMapping("/application-info-detail") public AjaxResult applicationInformationDetail() { - return AjaxResult.success(serviceLogService.selectDomicileChangeByPkMember(SecurityUtils.getUserId(), EApprovalBusiness.DOMICILE_CHANGE.getValue(), SecurityUtils.getPkCountry())); + return AjaxResult.success(iCuSelfServiceLogService.selectDomicileChangeByPkMember(SecurityUtils.getUserId(), EApprovalBusiness.DOMICILE_CHANGE.getValue(), SecurityUtils.getPkCountry())); } /** @@ -111,11 +86,10 @@ public class ApiDomicileChangeController extends BaseController { public AjaxResult appliedInformation() { DomicileChangeVO domicileChangeVO = DomicileChangeVO.builder().pkMember(SecurityUtils.getUserId()) .pkCountry(SecurityUtils.getPkCountry()).editType(EApprovalBusiness.DOMICILE_CHANGE.getValue()).build(); - List domicileChangeVOList = (List) serviceLogService.selectSelfServiceByPkMember(domicileChangeVO)[1]; + List domicileChangeVOList = (List) iCuSelfServiceLogService.selectSelfServiceByPkMember(domicileChangeVO)[1]; return AjaxResult.success(domicileChangeVOList); } - /** * 自助服务是否显示户籍认证 * @@ -123,11 +97,9 @@ public class ApiDomicileChangeController extends BaseController { */ @GetMapping("/show-index-domicile") public AjaxResult showIndexDomicile() { - return AjaxResult.success(serviceLogService.showIndexDomicile(SecurityUtils.getPkCountry(),SecurityUtils.getUserId())); + return AjaxResult.success(iCuSelfServiceLogService.showIndexDomicile(SecurityUtils.getPkCountry(), SecurityUtils.getUserId())); } - - /** * 申请户籍变更 * @@ -170,12 +142,11 @@ public class ApiDomicileChangeController extends BaseController { return accountBalance; } //验证码校验 - String Key = ESmsTemplate.VERIFICATION.getCache() + pkMember; - String message = apiSmsService.checkSms(Key, domicileChangeVO.getVerificationCode()); + String message = iApiAliSmsService.checkCode(null, domicileChangeVO.getVerificationCode(), null, pkMember); if (null != message) { return AjaxResult.error(message); } - return toAjax(serviceLogService.saveChangeDomicile(domicileChangeVO)); + return toAjax(iCuSelfServiceLogService.saveChangeDomicile(domicileChangeVO)); } @@ -190,10 +161,10 @@ public class ApiDomicileChangeController extends BaseController { String idFront = null; Long pkMember = SecurityUtils.getUserId(); Integer pkCountry = SecurityUtils.getPkCountry(); - CuMemberExt member = cuMemberService.getMemberById(pkMember); + CuMemberExt member = iCuMemberService.getMemberById(pkMember); //查询实名认证信息原证件图 CuMemberAuthenticationVO authenticationVO = CuMemberAuthenticationVO.builder().pkCountry(pkCountry).pkMember(pkMember).build(); - CuMemberAuthenticationVO cuMemberAuthenticationVO = cuMemberAuthenticationService.selectCuMemberAuthenticationByPkMember(authenticationVO); + CuMemberAuthenticationVO cuMemberAuthenticationVO = iCuMemberAuthenticationService.selectCuMemberAuthenticationByPkMember(authenticationVO); if (null != cuMemberAuthenticationVO) { idBack = cuMemberAuthenticationVO.getIdBack(); idFront = cuMemberAuthenticationVO.getIdFront(); @@ -217,7 +188,7 @@ public class ApiDomicileChangeController extends BaseController { cuSelfServiceLog.setPkCountry(domicileChangeVO.getPkCountry()); cuSelfServiceLog.setEditType(EApprovalBusiness.DOMICILE_CHANGE.getValue()); cuSelfServiceLog.setPkMember(domicileChangeVO.getPkMember()); - Integer check = serviceLogService.checkSelfService(cuSelfServiceLog); + Integer check = iCuSelfServiceLogService.checkSelfService(cuSelfServiceLog); if (check > 0) { return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_UPDATE_CODE_REPEAT)); } @@ -236,7 +207,7 @@ public class ApiDomicileChangeController extends BaseController { serviceChargeDTO.setType(EApprovalBusiness.DOMICILE_CHANGE.getValue()); serviceChargeDTO.setPkCountry(pkCountry); serviceChargeDTO.setQuantity(MagicNumberConstants.CHANGE_NUM); - return serviceChargeServiceApi.getServiceChargeByType(serviceChargeDTO).getData(); + return iServiceChargeServiceApi.getServiceChargeByType(serviceChargeDTO).getData(); } /** @@ -249,30 +220,11 @@ public class ApiDomicileChangeController extends BaseController { List memberAmountDTOList = new ArrayList<>(); memberAmountDTOList.add(MemberAmountDTO.builder().pkMember(domicileChangeVO.getPkMember()).tradeAmount(domicileChangeVO.getAmount()).build()); BusinessCommissionDTO businessCommissionDTO = BusinessCommissionDTO.builder().pkAccount(domicileChangeVO.getPkAccount()).memberAmountDTOList(memberAmountDTOList).build(); - List memberBalanceList = cuMemberTradeService.selectBalanceNotEnoughMember(businessCommissionDTO); + List memberBalanceList = iCuMemberTradeService.selectBalanceNotEnoughMember(businessCommissionDTO); if (CollectionUtil.isNotEmpty(memberBalanceList)) { return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_BALANCE_INSUFFICIENT)); } return AjaxResult.success(); } - /** - * 是否配置审批人信息 - * - * @param pkCountry 国家ID - * @return AjaxResult - */ - private AjaxResult isConfigApprovalInfo(Integer pkCountry, DomicileChangeVO domicileChangeVO) { - Map approvalInfoMap = iApprovalServiceApi.queryApprovalInfo(Collections.singletonList(EApprovalBusiness.DOMICILE_CHANGE.getValue()), pkCountry).getData(); - // 根据审批业务类型判断是否配置审批流程 - ApprovalInfoDTO approvalInfo = approvalInfoMap.get(EApprovalBusiness.DOMICILE_CHANGE.getValue()); - if (null == approvalInfo || CollectionUtil.isEmpty(approvalInfo.getItemList())) { - log.error("{} 提交认证失败,未配置审批流程", EApprovalBusiness.DOMICILE_CHANGE.getLabel()); - return AjaxResult.error("提交认证失败,请联系客服"); - } - List userList = approvalInfo.getItemList().stream().map(ApprovalItemInfoDTO::getPkUser).collect(Collectors.toList()); - domicileChangeVO.setUserIdList(userList); - return AjaxResult.success(); - } - } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/controller/api/ApiSmsController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/controller/api/ApiSmsController.java index 98444070..beaeb74b 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/controller/api/ApiSmsController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/controller/api/ApiSmsController.java @@ -1,17 +1,15 @@ package com.hzs.member.sms.controller.api; import com.hzs.common.core.annotation.RepeatSubmitSimple; -import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.constant.msg.ConfigMsgConstants; import com.hzs.common.core.constant.msg.MemberMsgConstants; -import com.hzs.common.core.enums.ESmsTemplate; import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.util.TransactionUtils; import com.hzs.member.base.service.ICuMemberService; -import com.hzs.member.sms.service.IApiSmsService; +import com.hzs.member.sms.service.IApiAliSmsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,31 +17,47 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** - * @Description: 短信处理控制器 - * @Author: jiang chao - * @Time: 2023/3/8 15:54 - * @Classname: SmsController - * @PackageName: com.hzs.member.sms.controller + * 短信处理控制器 */ @RequestMapping("/api/sms") @RestController public class ApiSmsController extends BaseController { @Autowired - private IApiSmsService iApiSmsService; + private IApiAliSmsService iApiAliSmsService; @Autowired private ICuMemberService iCuMemberService; /** - * 验证码 + * 登录用户发送短信 * - * @param phone 手机号码 * @return */ @RepeatSubmitSimple - @GetMapping("/verification") - public AjaxResult verification(@RequestParam(required = false) String phone) { - return toAjax(iApiSmsService.verificationSms(SecurityUtils.getUserId(), SecurityUtils.getPkCountry(), phone)); + @GetMapping("/self-verification") + public AjaxResult selfVerification() { + CuMemberExt cuMemberExt = iCuMemberService.getMemberById(SecurityUtils.getUserId()); + if (null == cuMemberExt) { + // 会员不存在 + return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_NOT_EXIST)); + } + return toAjax(iApiAliSmsService.sendCode(cuMemberExt.getPhone(), null, null, SecurityUtils.getUserId())); + } + + /** + * 重置支付密码 + * + * @return + */ + @RepeatSubmitSimple + @GetMapping("/reset-verification") + public AjaxResult resetVerification() { + CuMemberExt cuMemberExt = iCuMemberService.getMemberById(SecurityUtils.getUserId()); + if (null == cuMemberExt) { + // 会员不存在 + return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_NOT_EXIST)); + } + return toAjax(iApiAliSmsService.resetPayPasswordCode(cuMemberExt.getPhone(), SecurityUtils.getUserId())); } /** @@ -66,35 +80,8 @@ public class ApiSmsController extends BaseController { // 会员不存在,或者手机号不相同 return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.MEMBER_INFO_ERROR)); } - return toAjax(iApiSmsService.verificationSms(cuMember.getPkId(), cuMember.getPkSettleCountry(), phone, ESmsTemplate.FORGET_PASSWORD)); + return toAjax(iApiAliSmsService.sendRecoverCode(phone, cuMember.getPkId())); } - /** - * 注册验证码 -- 不登录 - * - * @param phone 手机号码 - * @return - */ - @RepeatSubmitSimple - @GetMapping("/fans-verification") - public AjaxResult fansVerification(@RequestParam String phone) { - // 前端取不到结算国,此处写死为中国 - return toAjax(iApiSmsService.verificationSmsByPhone(CountryConstants.CHINA_COUNTRY, phone)); - } - - /** - * 登录用户发送短信 - * - * @return - */ - @GetMapping("/self-verification") - public AjaxResult selfVerification() { - CuMemberExt cuMemberExt = iCuMemberService.getMemberById(SecurityUtils.getUserId()); - if (null == cuMemberExt) { - // 会员不存在 - return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_NOT_EXIST)); - } - return toAjax(iApiSmsService.verificationSms(SecurityUtils.getUserId(), SecurityUtils.getPkCountry(), cuMemberExt.getPhone())); - } } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/IApiAliSmsService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/IApiAliSmsService.java new file mode 100644 index 00000000..67dc0f05 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/IApiAliSmsService.java @@ -0,0 +1,100 @@ +package com.hzs.member.sms.service; + +/** + * 阿里短信发送服务 + */ +public interface IApiAliSmsService { + + /** + * 短信验证码 + * + * @param phone 手机号码 + * @param checkKey 验证码KEY -- 为空使用默认 + * @param sendTimKey 验证码重复发送间隔KEY -- 为空使用默认 + * @param pkMember 会员ID -- 如果有值,优先缓存使用 + * @return + */ + String sendCode(String phone, String checkKey, String sendTimKey, Long pkMember); + + /** + * 校验短信验证码 + * + * @param phone 手机号码 -- 会员ID有值,手机号码可以为空 + * @param smsCode 短信验证码 + * @param checkKey 验证码KEY -- 为空使用默认 + * @param pkMember 会员ID -- 如果有值,优先缓存使用 + * @return + */ + String checkCode(String phone, String smsCode, String checkKey, Long pkMember); + +// /** +// * 登录发送验证码 +// * +// * @param phone 手机号码 +// * @return +// */ +// String sendLoginCode(String phone); +// +// /** +// * 校验登录验证码 +// * +// * @param phone 手机号码 +// * @param smsCode 短信验证码 +// * @return +// */ +// String checkLoginCode(String phone, String smsCode); + +// /** +// * 注册发送验证码 +// * +// * @param phone 手机号码 +// * @return +// */ +// String sendRegisterCode(String phone); +// +// /** +// * 校验注册验证码 +// * +// * @param phone 手机号码 +// * @param smsCode 短信验证码 +// * @return +// */ +// String checkRegisterCode(String phone, String smsCode); + + /** + * 找回密码发送验证码 + * + * @param phone 手机号码 + * @param pkMember 会员ID + * @return + */ + String sendRecoverCode(String phone, Long pkMember); + + /** + * 校验找回密码验证码 + * + * @param phone 手机号码 + * @param smsCode 短信验证码 + * @param pkMember 会员ID + * @return + */ + String checkRecoverCode(String phone, String smsCode, Long pkMember); + + /** + * 重置支付密码发送验证码 + * + * @param phone 手机号码 + * @return + */ + String resetPayPasswordCode(String phone, Long pkMember); + + /** + * 校验重置支付密码验证码 + * + * @param phone 手机号码 + * @param smsCode 短信验证码 + * @return + */ + String checkPayPasswordCode(String phone, String smsCode, Long pkMember); + +} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/IApiSmsService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/IApiSmsService.java deleted file mode 100644 index ee93fdcb..00000000 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/IApiSmsService.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.hzs.member.sms.service; - -import com.hzs.common.core.enums.ESmsTemplate; - -/** - * @Description: 短信处理服务 - * @Author: jiang chao - * @Time: 2023/3/8 15:55 - * @Classname: ISmsService - * @PackageName: com.hzs.member.sms.service - */ -public interface IApiSmsService { - - /** - * 校验验证码 - * - * @param cacheKey 验证码缓存key - * @param code 验证码 - * @return 如果返回null为正确,其它为错误内容 - */ - String checkSms(String cacheKey, String code); - - /** - * 根据会员发送验证码 - * - * @param pkMember 会员ID - * @param pkCountry 国家ID - * @param phone 手机号 - * @return boolean - */ - boolean verificationSms(Long pkMember, Integer pkCountry, String phone); - - /** - * 根据会员发送指定模板 - * - * @param pkMember 会员ID - * @param pkCountry 国家ID - * @param phone 手机号 - * @param eSmsTemplate 短信模板 - * @return - */ - boolean verificationSms(Long pkMember, Integer pkCountry, String phone, ESmsTemplate eSmsTemplate); - - /** - * 根据手机号发送验证码 - * - * @param pkCountry 国家ID - * @param phone 手机号 - * @return - */ - boolean verificationSmsByPhone(Integer pkCountry, String phone); - - /** - * 根据手机号发送指定模板 - * - * @param pkCountry 国家ID - * @param phone 手机号 - * @param eSmsTemplate 短信模板 - * @return - */ - boolean verificationSmsByPhone(Integer pkCountry, String phone, ESmsTemplate eSmsTemplate); - -} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/impl/ApiAliSmsServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/impl/ApiAliSmsServiceImpl.java new file mode 100644 index 00000000..a3a113a2 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/impl/ApiAliSmsServiceImpl.java @@ -0,0 +1,170 @@ +package com.hzs.member.sms.service.impl; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import com.hzs.common.core.config.BdConfig; +import com.hzs.common.core.constant.CacheConstants; +import com.hzs.common.core.domain.R; +import com.hzs.common.core.enums.EAliSmsTemplate; +import com.hzs.common.core.enums.EEnv; +import com.hzs.common.core.service.RedisService; +import com.hzs.common.core.utils.VerificationCodeUtil; +import com.hzs.member.sms.service.IApiAliSmsService; +import com.hzs.third.sms.ISmsServiceApi; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +/** + * 阿里短信发送服务 + */ +@Slf4j +@Service +public class ApiAliSmsServiceImpl implements IApiAliSmsService { + + @Autowired + private RedisService redisService; + + @DubboReference + ISmsServiceApi iSmsServiceApi; + + @Override + public String sendCode(String phone, String checkKey, String sendTimKey, Long pkMember) { + // 每个手机号每天只能获取20次短信验证码 + String smsCountKey = String.format(CacheConstants.SMS_COUNT, DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN)); + Object smsCountObj = redisService.getCacheMapValue(smsCountKey, phone); + if (smsCountObj != null) { + if (Integer.parseInt(smsCountObj.toString()) > 20) { + return "当前手机号码获取短信已达当日上限"; + } + } + + if (null == checkKey) { + // 如果为空,使用默认发送短信key + checkKey = CacheConstants.DEFAULT_CHECK; + } + if (null == sendTimKey) { + // 如果为空,使用默认发送短信key间隔时间 + sendTimKey = CacheConstants.DEFAULT_SEND_TIME; + } + + if (redisService.hasKey(sendTimKey + phone)) { + return "获取验证码过于频繁,请稍后再试"; + } + + // 生成4位验证码 + String code = VerificationCodeUtil.createCode(); + log.info("发送短信验证码,phone: {}, code: {}", phone, code); + + R sendResult = iSmsServiceApi.sendAliSms(phone, code, EAliSmsTemplate.MEMBER_SMS); + if (sendResult.isSuccess()) { + // 返回成功,验证码放入缓存 + // 验证码缓存有效期10分钟 + redisService.setCacheObject(checkKey + (null != pkMember ? pkMember : phone), code, 10L, TimeUnit.MINUTES); + + // 验证码发送间隔不能低于1分钟 + redisService.setCacheObject(sendTimKey + phone, "", 1L, TimeUnit.MINUTES); + + if (smsCountObj == null) { + redisService.setCacheMapValue(smsCountKey, phone, 1); + redisService.expire(smsCountKey, 1, TimeUnit.DAYS); + } else { + redisService.setCacheMapValue(smsCountKey, phone, Integer.parseInt(smsCountObj.toString()) + 1); + } + + return null; + } + log.error("发送短信失败:{}", sendResult.getMsg()); + return "获取验证码失败,请稍候重试"; + } + + @Override + public String checkCode(String phone, String smsCode, String checkKey, Long pkMember) { + if (EEnv.TEST.getValue().equals(BdConfig.getEnv()) && "ASDF".equals(smsCode)) { + // 测试环境暂时不发放短信 + return null; + } + + if (null == checkKey) { + // 如果为空,使用默认发送短信key + checkKey = CacheConstants.DEFAULT_CHECK; + } + + String cacheSmsCode = redisService.getCacheObject(checkKey + (null != pkMember ? pkMember : phone)); + if (null == cacheSmsCode) { + return "验证码已失效"; + } + if (!cacheSmsCode.equals(smsCode)) { + // TODO 验证码错误,需不需要清除缓存验证码??会不会存在暴力破解情况?? + return "验证码错误"; + } + // 校验通过,删除验证码缓存 + redisService.deleteObject(checkKey + (null != pkMember ? pkMember : phone)); + return null; + } + +// @Override +// public String sendLoginCode(String phone) { +// return this.sendCode(phone, CacheConstants.LOGIN_CHECK, CacheConstants.LOGIN_SEND_TIME); +// } +// +// @Override +// public String checkLoginCode(String phone, String smsCode) { +// String str = this.checkCode(phone, smsCode, CacheConstants.LOGIN_CHECK); +// if (null == str) { +// // 删除验证码间隔时间缓存 +// redisService.deleteObject(CacheConstants.LOGIN_SEND_TIME + phone); +// } +// return str; +// } + +// @Override +// public String sendRegisterCode(String phone) { +// return this.sendCode(phone, CacheConstants.REGISTER_CHECK, CacheConstants.REGISTER_SEND_TIME); +// } +// +// @Override +// public String checkRegisterCode(String phone, String smsCode) { +// String str = this.checkCode(phone, smsCode, CacheConstants.REGISTER_CHECK); +// if (null == str) { +// // 删除验证码间隔时间缓存 +// redisService.deleteObject(CacheConstants.REGISTER_SEND_TIME + phone); +// } +// return str; +// } + + @Override + public String sendRecoverCode(String phone, Long pkMember) { + return this.sendCode(phone, CacheConstants.RECOVER_CHECK, CacheConstants.RECOVER_SEND_TIME, pkMember); + } + + @Override + public String checkRecoverCode(String phone, String smsCode, Long pkMember) { + String str = this.checkCode(phone, smsCode, CacheConstants.RECOVER_CHECK, pkMember); + if (null == str) { + // 删除验证码间隔时间缓存 + redisService.deleteObject(CacheConstants.RECOVER_SEND_TIME + phone); + } + return str; + } + + @Override + public String resetPayPasswordCode(String phone, Long pkMember) { + return this.sendCode(phone, CacheConstants.RESET_CHECK, CacheConstants.RESET_SEND_TIME, pkMember); + } + + @Override + public String checkPayPasswordCode(String phone, String smsCode, Long pkMember) { + String str = this.checkCode(phone, smsCode, CacheConstants.RESET_CHECK, pkMember); + if (null == str) { + // 删除验证码间隔时间缓存 + redisService.deleteObject(CacheConstants.RESET_SEND_TIME + phone); + } + return str; + } + +} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/impl/ApiSmsServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/impl/ApiSmsServiceImpl.java deleted file mode 100644 index a9417029..00000000 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/sms/service/impl/ApiSmsServiceImpl.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.hzs.member.sms.service.impl; - -import com.hzs.common.core.constant.SmsConstants; -import com.hzs.common.core.constant.msg.SystemMsgConstants; -import com.hzs.common.core.domain.R; -import com.hzs.common.core.enums.ESmsTemplate; -import com.hzs.common.core.exception.ServiceException; -import com.hzs.common.core.service.RedisService; -import com.hzs.common.core.utils.StringUtils; -import com.hzs.common.core.utils.VerificationCodeUtil; -import com.hzs.common.domain.member.base.CuMember; -import com.hzs.common.util.TransactionUtils; -import com.hzs.member.base.service.ICuMemberService; -import com.hzs.member.sms.service.IApiSmsService; -import com.hzs.third.sms.ISmsServiceApi; -import com.hzs.third.sms.dto.SmsServiceDTO; -import lombok.extern.slf4j.Slf4j; -import org.apache.dubbo.config.annotation.DubboReference; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Collections; -import java.util.concurrent.TimeUnit; - -/** - * @Description: 短信处理服务 - * @Author: jiang chao - * @Time: 2023/3/8 15:56 - * @Classname: ApiSmsServiceImpjl - * @PackageName: com.hzs.member.sms.service.impl - */ -@Slf4j -@Service -public class ApiSmsServiceImpl implements IApiSmsService { - - @Autowired - private ICuMemberService iCuMemberService; - @Autowired - private RedisService redisService; - - @DubboReference - ISmsServiceApi iSmsServiceApi; - - @Override - public String checkSms(String cacheKey, String code) { - Object codeObj = redisService.getCacheObject(cacheKey); - if (null != codeObj) { - if (codeObj.toString().equals(code)) { - // 校验正确之后,删除缓存 - redisService.deleteObject(cacheKey); - return null; - } else { - // 验证码错误 - return TransactionUtils.getContent(SystemMsgConstants.CODE_ERROR); - } - } - // 验证码已失效 - return TransactionUtils.getContent(SystemMsgConstants.CODE_EXPIRE); - } - - @Override - public boolean verificationSms(Long pkMember, Integer pkCountry, String phone) { - return this.verificationSms(pkMember, pkCountry, phone, ESmsTemplate.VERIFICATION); - } - - @Override - public boolean verificationSms(Long pkMember, Integer pkCountry, String phone, ESmsTemplate eSmsTemplate) { - if (StringUtils.isEmpty(phone)) { - // 查询用户,获取手机号 - CuMember cuMember = iCuMemberService.getMember(pkMember); - phone = cuMember.getPhone(); - } - - // 生成4位验证码 - String code = VerificationCodeUtil.createCode(); - // 发送短信 - R sendR = iSmsServiceApi.send(SmsServiceDTO.builder() - .templateCode(eSmsTemplate.getCode()) - .pkMember(pkMember) - .phone(phone) - .paramList(Collections.singletonList(code)) - .userId(pkMember) - .pkCountry(pkCountry) - .saveFlag(false) - .build()); - - if (sendR.isSuccess()) { - // 返回成功,验证码放入缓存 - redisService.setCacheObject(eSmsTemplate.getCache() + pkMember, code, SmsConstants.FAILURE_TIME, TimeUnit.MINUTES); - return true; - } else { - log.error("发送短信失败:{}", sendR.getMsg()); - throw new ServiceException(sendR.getMsg()); - } - } - - @Override - public boolean verificationSmsByPhone(Integer pkCountry, String phone) { - return this.verificationSmsByPhone(pkCountry, phone, ESmsTemplate.VERIFICATION); - } - - @Override - public boolean verificationSmsByPhone(Integer pkCountry, String phone, ESmsTemplate eSmsTemplate) { - // 生成4位验证码 - String code = VerificationCodeUtil.createCode(); - // 发送短信 - R sendR = iSmsServiceApi.send(SmsServiceDTO.builder() - .templateCode(eSmsTemplate.getCode()) - .phone(phone) - .paramList(Collections.singletonList(code)) - .pkCountry(pkCountry) - .saveFlag(false) - .build()); - - if (sendR.isSuccess()) { - // 返回成功,验证码放入缓存 - redisService.setCacheObject(eSmsTemplate.getCache() + phone, code, SmsConstants.FAILURE_TIME, TimeUnit.MINUTES); - return true; - } - log.error("发送短信失败:{}", sendR.getMsg()); - return false; - } - -} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/controller/manager/CuBonusStatisController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/controller/manager/CuBonusStatisController.java index 03c0d8c7..1078d5c7 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/controller/manager/CuBonusStatisController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/controller/manager/CuBonusStatisController.java @@ -69,8 +69,8 @@ public class CuBonusStatisController extends BaseController { cuBonusStatisVO.setPkCountry(pkCountry); // 默认查询当前日期的前一天 Date date = DateUtils.currentDate(); - if (StringUtils.isEmpty(cuBonusStatisVO.getStartDate()) || - StringUtils.isEmpty(cuBonusStatisVO.getEndDate())) { + if (StringUtils.isEmpty(cuBonusStatisVO.getStartDate()) + || StringUtils.isEmpty(cuBonusStatisVO.getEndDate())) { cuBonusStatisVO.setStartDate(DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, date)); cuBonusStatisVO.setEndDate(DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, date)); } @@ -145,8 +145,8 @@ public class CuBonusStatisController extends BaseController { itm.setMainBonusPvRate(itm.getMainBonusPvRate().divide(itm.getFirstPurchaseAll(), 4, RoundingMode.HALF_UP)); } // 重新算总拨比 - if (itm.getFirstPurchaseAll().compareTo(BigDecimal.ZERO) > 0 || - itm.getRepurchaseAllAmount().compareTo(BigDecimal.ZERO) > 0) { + if (itm.getFirstPurchaseAll().compareTo(BigDecimal.ZERO) > 0 + || itm.getRepurchaseAllAmount().compareTo(BigDecimal.ZERO) > 0) { BigDecimal totalBonusRate = cent.multiply((itm.getTotalBonus()).multiply(currency.getData().getInExchangeRate())); totalBonusRate = totalBonusRate.divide(itm.getFirstPurchaseAll().add(itm.getRepurchaseAllAmount()), 4, RoundingMode.HALF_UP); itm.setTotalBonusRate(totalBonusRate); diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java index 8907930f..e0f71a4c 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java @@ -831,8 +831,6 @@ public class SaOrderServiceImpl extends ServiceImpl impl * @param saOrderExt 订单 * @param newCuMember 新会员信息 * @param cuMemberAccountExt 支付账户信息 - * @Author: sui q - * @Date: 2022/9/13 13:37 */ @Transactional(rollbackFor = Exception.class) @Override @@ -909,7 +907,6 @@ public class SaOrderServiceImpl extends ServiceImpl impl } try { - sendMessage(newCuMember); log.info("生产活动消息,activity.exchange:{}", JSONUtil.toJsonStr(saOrderExt)); rabbitTemplate.convertAndSend(RabbitMqConstants.ACTIVITY_EXCHANGE, RabbitMqConstants.ACTIVITY_KEY, saOrderExt); // //计算奖金,通过mq分发消息,异步处理 @@ -930,28 +927,6 @@ public class SaOrderServiceImpl extends ServiceImpl impl return Boolean.TRUE; } - /** - * @param newCuMember 会员编号 - * @Description: 发送短信 - * @return: void - * @Author: sui q - * @Date: 2023/3/9 14:28 - */ - private void sendMessage(CuMember newCuMember) { - List paramList = new ArrayList<>(); - paramList.add(newCuMember.getMemberName()); - paramList.add(newCuMember.getMemberCode()); - SmsServiceDTO smsServiceDTO = SmsServiceDTO.builder().templateCode(ESmsTemplate.REGISTER_SUCCESS.getCode()) - .pkCountry(newCuMember.getPkSettleCountry()) - .phone(newCuMember.getPhone()) - .pkMember(newCuMember.getPkId()) - .userId(newCuMember.getPkId()) - .paramList(paramList) -// .saveFlag(Boolean.FALSE) - .build(); - iSmsServiceApi.send(smsServiceDTO); - } - /** * @param newCuMember 修改的会员 * @Description: 尝试重新换位置 diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/IBdCubasdocService.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/IBdCubasdocService.java index a1f9d614..4d4e3c10 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/IBdCubasdocService.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/IBdCubasdocService.java @@ -4,82 +4,46 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.system.base.BdCubasdoc; import com.hzs.common.domain.system.base.ext.BdCubasdocExt; import com.hzs.system.base.param.BdCubasdocParam; -import com.hzs.system.base.vo.BdCubasdocVO; import java.util.List; /** - *

* 供应商设置 服务类 - *

- * - * @author hzs - * @since 2023-11-20 */ public interface IBdCubasdocService extends IService { /* * @description: 根据条件查询供应商 - * @author: sui q - * @date: 2023/11/20 16:47 - * @param: null null **/ List querySupplierByCondition(BdCubasdocParam cubasdocParam); + /* * @description: 根据条件查询供应商(业务领用专用) - * @author: zhang jing - * @date: 2024/5/7 14:15 - * @param: [cubasdocParam] - * @return: java.util.List **/ List querySupplierByProduct(BdCubasdocParam cubasdocParam); /* * @description: 根据条件查询客户 - * @author: sui q - * @date: 2023/11/29 13:42 - * @param: null null **/ List queryCustomerByCondition(BdCubasdocParam cubasdocParam); /* * @description: 根据条件查询客商 - * @author: sui q - * @date: 2023/11/20 10:57 - * @param: null null **/ List queryCubasdocByCondition(BdCubasdocParam cubasdocParam); /* * @description: 保存供应商 - * @author: sui q - * @date: 2023/11/20 10:58 - * @param: null null **/ void saveCubasdoc(BdCubasdocParam cubasdocParam, Long pkMember); /* * @description: 删除客商 - * @author: sui q - * @date: 2023/11/20 13:43 - * @param: null null **/ void deleteCuBasdoc(Integer pkId, Long pkMember); - /* - * @description: 获得供应商 - * @author: sui q - * @date: 2023/11/20 16:38 - * @param: null null - **/ - BdCubasdoc getBdCubasdocById(Integer pkId); - /** * @description: 查询登录管理员是否为供应商 - * @author: zhang jing - * @date: 2024/5/6 11:12 - * @param: [userId] - * @return: java.lang.Integer **/ Integer queryThSupplierApplyUserList(Long userId); } diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdCubasdocServiceImpl.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdCubasdocServiceImpl.java index 9c7298ab..c458f837 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdCubasdocServiceImpl.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/service/impl/BdCubasdocServiceImpl.java @@ -1,43 +1,28 @@ package com.hzs.system.base.service.impl; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollectionUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hzs.common.core.constant.CacheConstants; -import com.hzs.common.core.constant.MagicNumberConstants; -import com.hzs.common.core.constant.SystemFieldConstants; -import com.hzs.common.core.enums.ECustomerType; import com.hzs.common.core.enums.ESupplierType; import com.hzs.common.core.enums.EYesNo; -import com.hzs.common.core.service.RedisService; import com.hzs.common.core.utils.DateUtils; import com.hzs.common.domain.system.base.BdCubasdoc; import com.hzs.common.domain.system.base.ext.BdCubasdocExt; import com.hzs.system.base.mapper.BdCubasdocMapper; import com.hzs.system.base.param.BdCubasdocParam; import com.hzs.system.base.service.IBdCubasdocService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** - *

* 供应商设置 服务实现类 - *

- * - * @author hzs - * @since 2023-11-20 */ @Service public class BdCubasdocServiceImpl extends ServiceImpl implements IBdCubasdocService { - @Autowired - private RedisService redisService; - @Override public List querySupplierByCondition(BdCubasdocParam cubasdocParam) { List custTypeList = new ArrayList<>(); @@ -47,13 +32,6 @@ public class BdCubasdocServiceImpl extends ServiceImpl - **/ @Override public List querySupplierByProduct(BdCubasdocParam cubasdocParam) { List custTypeList = new ArrayList<>(); @@ -63,7 +41,6 @@ public class BdCubasdocServiceImpl extends ServiceImpl queryCustomerByCondition(BdCubasdocParam cubasdocParam) { List custTypeList = new ArrayList<>(); @@ -88,13 +65,13 @@ public class BdCubasdocServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("CUST_CODE", custCode); + private BdCubasdoc queryBdCuBasdoc(String custCode) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BdCubasdoc::getCustCode, custCode); return baseMapper.selectOne(queryWrapper); } @Override public void deleteCuBasdoc(Integer pkId, Long pkMember) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set(SystemFieldConstants.DEL_FLAG, EYesNo.NO.getIntValue()); - updateWrapper.set(SystemFieldConstants.PK_MODIFIED, pkMember); - updateWrapper.set(SystemFieldConstants.MODIFIED_TIME, DateUtils.currentDateTime()); - updateWrapper.eq(SystemFieldConstants.PK_ID, pkId); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(BdCubasdoc::getDelFlag, EYesNo.NO.getIntValue()); + updateWrapper.set(BdCubasdoc::getPkModified, pkMember); + updateWrapper.set(BdCubasdoc::getModifiedTime, DateUtils.currentDateTime()); + updateWrapper.eq(BdCubasdoc::getPkId, pkId); baseMapper.delete(updateWrapper); - flushCubasdoc(pkId); } - @Override - public BdCubasdoc getBdCubasdocById(Integer pkId) { - if (pkId == null) { - return null; - } - BdCubasdoc cubasdoc = redisService.getCacheObject(CacheConstants.CUSTOMER_ID + pkId); - if (null == cubasdoc) { - // 如果缓存中不存在,则查询并放入缓存 - cubasdoc = baseMapper.selectById(pkId); - if(cubasdoc != null){ - redisService.setCacheObject(CacheConstants.CUSTOMER_ID + pkId, cubasdoc); - } - } - return cubasdoc; - } - - /* - * @description: 刷新缓存 - * @author: sui q - * @date: 2023/11/20 16:44 - * @param: null null - **/ - private void flushCubasdoc(Integer pkId){ - BdCubasdoc cubasdoc = redisService.getCacheObject(CacheConstants.CUSTOMER_ID + pkId); - if (cubasdoc != null) { - redisService.deleteObjectByKey(CacheConstants.CUSTOMER_ID + cubasdoc); - } - } - - /** - * @description: 查询登录管理员是否为供应商 - * @author: zhang jing - * @date: 2024/5/6 11:11 - * @param: [userId] - * @return: java.lang.Integer - **/ @Override public Integer queryThSupplierApplyUserList(Long userId) { return baseMapper.queryThSupplierApplyUserList(userId); } + } diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/vo/BdCubasdocVO.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/vo/BdCubasdocVO.java index 933afe38..b2eb0822 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/base/vo/BdCubasdocVO.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/base/vo/BdCubasdocVO.java @@ -8,11 +8,6 @@ import java.io.Serializable; /** * @description: 供应商vo - * @author: sui q - * @time: 2023/11/20 10:53 - * @classname: BdCubasdocVO - * @package_name: com.hzs.system.base.vo - * version 1.0.0 */ @Data public class BdCubasdocVO implements Serializable { @@ -35,7 +30,7 @@ public class BdCubasdocVO implements Serializable { /** * ECustType 1=内部供应商 2=外部供应商 3=内部客户 4=外部客户 */ - @Transaction(transactionKey= EnumsPrefixConstants.SUPPLIER_TYPE) + @Transaction(transactionKey = EnumsPrefixConstants.SUPPLIER_TYPE) private Integer custType; private String custTypeVal; diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/login/controller/UserTokenController.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/login/controller/UserTokenController.java index c4798056..a82b3e1e 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/login/controller/UserTokenController.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/login/controller/UserTokenController.java @@ -2,16 +2,11 @@ package com.hzs.system.login.controller; import javax.servlet.http.HttpServletRequest; -import com.hzs.common.core.annotation.RepeatSubmitSimple; -import com.hzs.common.core.enums.EAliSmsTemplate; import com.hzs.common.core.enums.EDataSource; import com.hzs.common.core.enums.ELoginType; import com.hzs.common.core.web.domain.AjaxResult; -import com.hzs.common.domain.system.sys.SysUser; import com.hzs.system.login.service.IUserLoginService; -import com.hzs.system.sms.service.ISmsService; import com.hzs.system.sys.dto.LoginUser; -import com.hzs.system.sys.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.hzs.common.auth.LoginBody; @@ -23,8 +18,6 @@ import com.hzs.common.security.utils.SecurityUtils; /** * 管理端 token 控制 - * - * @author hzs */ @RequestMapping("/auth/manage") @RestController @@ -34,10 +27,6 @@ public class UserTokenController { private UserTokenService userTokenService; @Autowired private IUserLoginService iUserLoginService; - @Autowired - private ISysUserService iSysUserService; - @Autowired - private ISmsService iSmsService; /** * 用户登录 @@ -100,23 +89,23 @@ public class UserTokenController { // return AjaxResult.error("登录用户不存在"); // } - /** - * 管理员登录发送验证码 - * - * @param userName 管理员编号 - * @return - */ - @RepeatSubmitSimple - @GetMapping("/user-sms-send") - public AjaxResult userSmsSend(@RequestParam String userName) { - SysUser sysUser = iSysUserService.selectUserByUserName(userName); - if (null != sysUser) { - if (iSmsService.sendLoginSms(sysUser.getPhonenumber(), EAliSmsTemplate.MANAGE_LOGIN)) { - return AjaxResult.success(); - } - return AjaxResult.error("短信发送失败"); - } - return AjaxResult.error("登录用户不存在"); - } +// /** +// * 管理员登录发送验证码 +// * +// * @param userName 管理员编号 +// * @return +// */ +// @RepeatSubmitSimple +// @GetMapping("/user-sms-send") +// public AjaxResult userSmsSend(@RequestParam String userName) { +// SysUser sysUser = iSysUserService.selectUserByUserName(userName); +// if (null != sysUser) { +// if (iSmsService.sendLoginSms(sysUser.getPhonenumber(), EAliSmsTemplate.MANAGE_LOGIN)) { +// return AjaxResult.success(); +// } +// return AjaxResult.error("短信发送失败"); +// } +// return AjaxResult.error("登录用户不存在"); +// } } diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/login/service/impl/UserLoginServiceImpl.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/login/service/impl/UserLoginServiceImpl.java index db50246c..fb0f80ad 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/login/service/impl/UserLoginServiceImpl.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/login/service/impl/UserLoginServiceImpl.java @@ -4,13 +4,11 @@ import com.hzs.common.core.constant.CacheConstants; import com.hzs.common.core.constant.msg.SystemMsgConstants; import com.hzs.common.core.enums.EDelFlag; import com.hzs.common.core.enums.EStatus; -import com.hzs.common.core.enums.EYesNo; import com.hzs.common.core.service.RedisService; import com.hzs.common.domain.system.sys.SysLogininfor; import com.hzs.common.domain.system.sys.SysUser; import com.hzs.common.util.TransactionUtils; import com.hzs.system.login.service.IUserLoginService; -import com.hzs.system.sms.service.ISmsService; import com.hzs.system.sys.ILogServiceApi; import com.hzs.system.sys.IUserServiceApi; import org.apache.dubbo.config.annotation.DubboReference; @@ -28,14 +26,10 @@ import com.hzs.system.sys.dto.LoginUser; /** * 登录校验方法 - * - * @author hzs */ @Component public class UserLoginServiceImpl implements IUserLoginService { - @Autowired - private ISmsService iSmsService; @Autowired private RedisService redisService; @@ -69,16 +63,16 @@ public class UserLoginServiceImpl implements IUserLoginService { LoginUser loginUser = userResult.getData(); SysUser user = userResult.getData().getLoginSysUser(); - if (EYesNo.YES.getIntValue() == user.getSms()) { - // 启用短信登录,需要校验短信验证码 - if (StringUtils.isEmpty(smsCode)) { - throw new ServiceException("短信验证码不能为空"); - } - String str = iSmsService.checkLoginSms(user.getPhonenumber(), smsCode); - if (null != str) { - throw new ServiceException(str); - } - } +// if (EYesNo.YES.getIntValue() == user.getSms()) { +// // 启用短信登录,需要校验短信验证码 +// if (StringUtils.isEmpty(smsCode)) { +// throw new ServiceException("短信验证码不能为空"); +// } +// String str = iSmsService.checkLoginSms(user.getPhonenumber(), smsCode); +// if (null != str) { +// throw new ServiceException(str); +// } +// } if (EDelFlag.UN_DELETE.getValue() != user.getDelFlag()) { recordLogininfor(userName, Constants.LOGIN_FAIL, "您的账号已被删除"); diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/sms/service/ISmsService.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/sms/service/ISmsService.java deleted file mode 100644 index 01088623..00000000 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/sms/service/ISmsService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hzs.system.sms.service; - -import com.hzs.common.core.enums.EAliSmsTemplate; - -/** - * @Description: 短信服务 - * @Author: jiang chao - * @Time: 2024/8/5 14:34 - * @Classname: ISmsService - * @PackageName: com.hzs.system.sms.service - */ -public interface ISmsService { - - /** - * 根据会员发送验证码 - * - * @param phoneNumber 手机号码 - * @param aliSmsTemplate 阿里短信模板 - * @return boolean - */ - boolean sendLoginSms(String phoneNumber, EAliSmsTemplate aliSmsTemplate); - - /** - * 校验验证码 - * - * @param phoneNumber 手机号码 - * @param code 验证码 - * @return 如果返回null为正确,其它为错误内容 - */ - String checkLoginSms(String phoneNumber, String code); - -} diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/sms/service/impl/SmsServiceImpl.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/sms/service/impl/SmsServiceImpl.java deleted file mode 100644 index f9f13b11..00000000 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/sms/service/impl/SmsServiceImpl.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hzs.system.sms.service.impl; - -import com.hzs.common.core.constant.SmsConstants; -import com.hzs.common.core.domain.R; -import com.hzs.common.core.enums.EAliSmsTemplate; -import com.hzs.common.core.enums.ESmsTemplate; -import com.hzs.common.core.service.RedisService; -import com.hzs.common.core.utils.VerificationCodeUtil; -import com.hzs.system.sms.service.ISmsService; -import com.hzs.third.sms.ISmsServiceApi; -import lombok.extern.slf4j.Slf4j; -import org.apache.dubbo.config.annotation.DubboReference; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.concurrent.TimeUnit; - -/** - * @Description: 短信服务 - * @author: jiang chao - * @Time: 2024/8/5 14:34 - * @Classname: SmsServiceImpl - * @PackageName: com.hzs.system.sms.service.impl - */ -@Slf4j -@Service -public class SmsServiceImpl implements ISmsService { - - @Autowired - private RedisService redisService; - - @DubboReference - ISmsServiceApi iSmsServiceApi; - - @Override - public boolean sendLoginSms(String phoneNumber, EAliSmsTemplate aliSmsTemplate) { - // 生成4位验证码 - String code = VerificationCodeUtil.createCode(); - - R sendR = iSmsServiceApi.sendAliSms(phoneNumber, code, aliSmsTemplate); - - if (sendR.isSuccess()) { - // 返回成功,验证码放入缓存 - redisService.setCacheObject(ESmsTemplate.VERIFICATION_MANAGE.getCache() + phoneNumber, code, SmsConstants.FAILURE_TIME, TimeUnit.MINUTES); - return true; - } - log.error("发送短信失败:{}", sendR.getMsg()); - return false; - } - - @Override - public String checkLoginSms(String phoneNumber, String code) { - // 短信发送枚举 - ESmsTemplate eSmsTemplate = ESmsTemplate.VERIFICATION_MANAGE; - // 短信缓存 - String cacheKey = eSmsTemplate.getCache() + phoneNumber; - - Object codeObj = redisService.getCacheObject(cacheKey); - if (null != codeObj) { - if (codeObj.toString().equals(code)) { - // 校验正确之后,删除缓存 - redisService.deleteObject(cacheKey); - return null; - } else { - // 验证码错误 - return "短信验证码错误"; - } - } - // 验证码已失效 - return "短信验证码已失效"; - } - -} diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/tools/controller/api/ApiIdempotentController.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/tools/controller/api/ApiIdempotentController.java index c659b2f6..1f2e3555 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/tools/controller/api/ApiIdempotentController.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/tools/controller/api/ApiIdempotentController.java @@ -8,13 +8,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -/** - * @Description: - * @Author: sui q - * @Time: 2022/8/29 9:35 - * @Classname: ApiIdempotentController - * @PackageName: com.hzs.system.tools.controller.api - */ @RestController @RequestMapping("/api/idempotent") @Slf4j @@ -27,16 +20,9 @@ public class ApiIdempotentController { this.idempotentService = idempotentService; } - /** - * @param - * @throws - * @Description: 生成用于保证幂等的token - * @return: AjaxResult - * @Author: sui q - * @Date: 2022/8/29 9:36 - */ @GetMapping("/generate") public AjaxResult generateIdempotentToken() { return AjaxResult.success(idempotentService.generateToken()); } + } diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/CacheConstants.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/CacheConstants.java index 9ab1a522..be0dac3d 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/CacheConstants.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/CacheConstants.java @@ -14,13 +14,8 @@ public class CacheConstants { public final static String UPD_MEMBER = CACHE_PREFIX + "upd:member_name:"; - /** - * 会员账户 - */ public final static String MEMBER_ACCOUNT = CACHE_PREFIX + "account:"; - public final static String CUSTOMER_ID = CACHE_PREFIX + "customer:"; - /** * 会员缓存刷新时间,默认30天 */ @@ -291,11 +286,6 @@ public class CacheConstants { */ public static final String SHOPPIN_GCART = CACHE_PREFIX + "shopping:cart:"; - /** - * 短信缓存key前缀 - */ - public final static String CACHE_SMS_PREFIX = CACHE_PREFIX + "sms:"; - /** * 抽奖奖品 */ @@ -402,6 +392,53 @@ public class CacheConstants { /** * 在线支付回调上锁 */ - public final static String ONLINE_PAYE_KEY = CACHE_PREFIX + "online:payment:"; + public final static String ONLINE_PAY_KEY = CACHE_PREFIX + "online:payment:"; + + + /** + * 手机每天获取短信缓存 -- Hash(sms:count: 年月日, 登录名) + */ + public final static String SMS_COUNT = CACHE_PREFIX + "sms:count:%s:"; +// /** +// * 登录短信重复发送间隔KEY(1分钟) +// */ +// public final static String LOGIN_SEND_TIME = CACHE_PREFIX + "login:send:time:"; +// /** +// * 登录短信验证码有效期KEY(5分钟) +// */ +// public final static String LOGIN_CHECK = CACHE_PREFIX + "login:valid:"; + /** + * 注册短信重复发送间隔KEY(1分钟) + */ + public final static String REGISTER_SEND_TIME = CACHE_PREFIX + "register:send:time:"; + /** + * 注册短信验证码有效期KEY(5分钟) + */ + public final static String REGISTER_CHECK = CACHE_PREFIX + "register:valid:"; + /** + * 找回密码短信重复发送间隔KEY(1分钟) + */ + public final static String RECOVER_SEND_TIME = CACHE_PREFIX + "recover:send:time:"; + /** + * 找回密码短信验证码有效期KEY(5分钟) + */ + public final static String RECOVER_CHECK = CACHE_PREFIX + "recover:check:"; + /** + * 重置支付密码短信重复发送间隔KEY(1分钟) + */ + public final static String RESET_SEND_TIME = CACHE_PREFIX + "reset:send:time:"; + /** + * 重置支付密码短信验证码有效期KEY(5分钟) + */ + public final static String RESET_CHECK = CACHE_PREFIX + "reset:check:"; + /** + * 默认发送短信验证码有效期期KEY(5分钟) + */ + public final static String DEFAULT_CHECK = CACHE_PREFIX + "default:check:"; + /** + * 默认发送短信重复发送间隔KEY(1分钟) + */ + public final static String DEFAULT_SEND_TIME = CACHE_PREFIX + "default:send:time:"; + } diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EAliSmsTemplate.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EAliSmsTemplate.java index e098dffe..1d232176 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EAliSmsTemplate.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EAliSmsTemplate.java @@ -4,25 +4,21 @@ import lombok.AllArgsConstructor; import lombok.Getter; /** - * @Description: 阿里短信模板枚举 - * @Author: jiang chao - * @Time: 2024/10/15 17:32 - * @Classname: EAliSmsTemplate - * @PackageName: com.hzs.common.core.enums + * 阿里短信模板枚举 */ @AllArgsConstructor @Getter public enum EAliSmsTemplate { - /** - * 后台管理登录 - */ - MANAGE_LOGIN("SMS_471485440"), +// /** +// * 后台管理登录 +// */ +// MANAGE_LOGIN("SMS_471485440"), /** - * 会员验证码(尊敬的会员,您的验证码为 ${code} ,该验证码5分钟内有效。) + * 会员验证码(尊敬的会员您好,您的验证码为 ${code} ,该验证码10分钟内有效,请勿泄露于他人。) */ - MEMBER_SMS("SMS_474440238"), + MEMBER_SMS("SMS_485350565"), ; diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESmsTemplate.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESmsTemplate.java deleted file mode 100644 index f4270795..00000000 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESmsTemplate.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.hzs.common.core.enums; - -import com.hzs.common.core.constant.CacheConstants; -import com.hzs.common.core.constant.SmsConstants; -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * @Description: 短信模板类型 - * @Author: jiang chao - * @Time: 2023/3/9 14:10 - * @Classname: ESmsTemplate - * @PackageName: com.hzs.common.core.enums - */ -@AllArgsConstructor -@Getter -public enum ESmsTemplate { - - /** - * 每日业绩 - */ - ACHIEVEMENT(SmsConstants.SMS_CODE_PREFIX + "1", "", false), - - /** - * 结算安置问题 - */ - SETTLE_ACHIEVE(SmsConstants.SMS_CODE_PREFIX + "2", "", false), - - /** - * 特殊用户 - */ - SPECIAL_MEMBER(SmsConstants.SMS_CODE_PREFIX + "5", "", false), - - /** - * 验证码 - */ - VERIFICATION(SmsConstants.SMS_CODE_PREFIX + "10", CacheConstants.CACHE_SMS_PREFIX + "verification:", false), - /** - * 后台验证码 - */ - VERIFICATION_MANAGE(SmsConstants.SMS_CODE_PREFIX + "10", CacheConstants.CACHE_SMS_PREFIX + "verificationManage:", false), - - /** - * 会员注册成功 - */ - REGISTER_SUCCESS(SmsConstants.SMS_CODE_PREFIX + "11", "", false), - - /** - * 忘记密码 - */ - FORGET_PASSWORD(SmsConstants.SMS_CODE_PREFIX + "12", CacheConstants.CACHE_SMS_PREFIX + "forget:", false), - - /** - * 订单发货 - */ - ORDER_SHIPPING(SmsConstants.SMS_CODE_PREFIX + "13", "", false), - - /** - * 库存预警 - */ - STOCK_WARNING(SmsConstants.SMS_CODE_PREFIX + "15", "", false), - - /** - * 余额核对 - */ - BALANCE_CHECK(SmsConstants.SMS_CODE_PREFIX + "17", "", false), - - /** - * 沙棘提货提醒 - */ - PICK_REMIND(SmsConstants.SMS_CODE_PREFIX + "18", "", false), - - - //////////////////// 上面的短信不能进行手动发送 //////////////////// - - /** - * 售后收货 - */ - SMS21(SmsConstants.SMS_CODE_PREFIX + "21", "", true), - /** - * 售后换新 - */ - SMS22(SmsConstants.SMS_CODE_PREFIX + "22", "", true), - /** - * 售后原件 - */ - SMS23(SmsConstants.SMS_CODE_PREFIX + "23", "", true), - /** - * 售后换件 - */ - SMS24(SmsConstants.SMS_CODE_PREFIX + "24", "", true), - /** - * 产品补发 - */ - SMS25(SmsConstants.SMS_CODE_PREFIX + "25", "", true), - /** - * 售后受理 - */ - SMS26(SmsConstants.SMS_CODE_PREFIX + "26", "", true), - /** - * 疫情延迟补发 - */ - SMS27(SmsConstants.SMS_CODE_PREFIX + "27", "", true), - /** - * 疫情延迟发货 - */ - SMS28(SmsConstants.SMS_CODE_PREFIX + "28", "", true), - /** - * 售后快速处理 - */ - SMS29(SmsConstants.SMS_CODE_PREFIX + "29", "", true), - /** - * 支付订单退款 - */ - SMS30(SmsConstants.SMS_CODE_PREFIX + "30", "", true), - - ; - - /** - * 短信模板编号 - */ - private final String code; - /** - * 短信模板缓存KEY - */ - private final String cache; - /** - * 是否可以手动创建(true则可以通过短信发送功能进行发送) - */ - private final boolean create; - - /** - * 根据编号获取枚举 - * - * @param code - * @return - */ - public static ESmsTemplate getEnumsByCode(String code) { - for (ESmsTemplate value : ESmsTemplate.values()) { - if (value.getCode().equals(code)) { - return value; - } - } - return null; - } - -} diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/web/controller/BaseController.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/web/controller/BaseController.java index 9e8df437..f3601cad 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/web/controller/BaseController.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/web/controller/BaseController.java @@ -90,6 +90,16 @@ public class BaseController { return result ? success() : error(); } + /** + * 响应返回结果 + * + * @param result 结果 + * @return 操作结果 + */ + protected AjaxResult toAjax(String result) { + return null != result ? error(result) : success(); + } + /** * 返回成功 */ diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/third/sms/TSmsRecord.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/third/sms/TSmsRecord.java index e051075e..fbbfbe59 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/third/sms/TSmsRecord.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/third/sms/TSmsRecord.java @@ -15,9 +15,6 @@ import java.util.Date; /** * 短信发送记录 - * - * @author hzs - * @since 2023-03-08 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/bd-gateway/src/main/resources/bootstrap.yml b/bd-gateway/src/main/resources/bootstrap.yml index 3f4e66c3..c41ce2fe 100644 --- a/bd-gateway/src/main/resources/bootstrap.yml +++ b/bd-gateway/src/main/resources/bootstrap.yml @@ -187,7 +187,6 @@ security: # 登录退出相关 - /system/auth/** - /system/manage/third/** - - /member/manager/member/third-member - /member/auth/** - /system/api/area/provinceList - /system/api/country/list @@ -205,19 +204,17 @@ security: # 找回密码相关 - /member/api/sms/forget-verification - /member/api/member/forget-password - # 嗨粉短信验证码 - - /member/api/sms/fans-verification - # 分享注册 - - /member/api/member/reg-share-member - - /member/api/member/validate-share-member/* - - /member/api/member/query-country-prefix/* - # 分享注册校验 - - /member/api/share/check-share-code - # 嗨粉注册 - - /member/api/fans/register +# # 分享注册 +# - /member/api/member/reg-share-member +# - /member/api/member/validate-share-member/* +# - /member/api/member/query-country-prefix/* +# # 分享注册校验 +# - /member/api/share/check-share-code +# # 嗨粉注册 +# - /member/api/fans/register - /system/api/idempotent/generate - # 获取点亮区域 - - /system/manage/area/get-light-area +# # 获取点亮区域 +# - /system/manage/area/get-light-area # 日志配置 diff --git a/bd-third/src/main/java/com/hzs/third/job/CuMemberJob.java b/bd-third/src/main/java/com/hzs/third/job/CuMemberJob.java index 11060cc3..730b0aec 100644 --- a/bd-third/src/main/java/com/hzs/third/job/CuMemberJob.java +++ b/bd-third/src/main/java/com/hzs/third/job/CuMemberJob.java @@ -5,26 +5,16 @@ import com.hzs.common.core.domain.R; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.member.account.IMemberJobServiceApi; import com.hzs.member.base.IMemberServiceApi; -import com.hzs.third.sms.util.SmsUtil; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.List; - /** * 会员模块定时任务 - * - * @Description: - * @Author: ljc - * @Time: 2023/4/11 19:11 - * @Classname: CuMemberJob - * @Package_name: com.hzs.member.job */ @ConditionalOnProperty(name = "xxl-job.start", havingValue = "true") @Component @@ -83,7 +73,6 @@ public class CuMemberJob { memberJobServiceApi.saveGoalsMonthRecord(); } - // @Scheduled(cron = "00 21 11 * * ?") @XxlJob("sendPlaceErrorMsg") public void sendPlaceErrorMsg() { List cuMemberList = memberServiceApi.queryPlaceErrorCode().getData(); @@ -96,15 +85,7 @@ public class CuMemberJob { } sb.append("结算错误,安置有问题"); - List phoneList = new ArrayList<>(); - phoneList.add("15910608312"); - phoneList.add("18665770108"); - phoneList.forEach(phone -> { - String smsStr = SmsUtil.sendSms(phone, sb.toString()); - log.info("发送短信{}", smsStr); - }); } - } diff --git a/bd-third/src/main/java/com/hzs/third/job/OrderJob.java b/bd-third/src/main/java/com/hzs/third/job/OrderJob.java index 38c72741..eab21c56 100644 --- a/bd-third/src/main/java/com/hzs/third/job/OrderJob.java +++ b/bd-third/src/main/java/com/hzs/third/job/OrderJob.java @@ -12,7 +12,6 @@ import com.hzs.member.account.IMemberJobServiceApi; import com.hzs.sale.order.ISaOrderServiceApi; import com.hzs.system.base.ICurrencyServiceApi; import com.hzs.system.base.dto.CurrencyDTO; -import com.hzs.third.sms.util.SmsUtil; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; @@ -24,14 +23,6 @@ import java.math.RoundingMode; import java.time.temporal.ChronoUnit; import java.util.*; -/** - * @BelongsProject: hzs_cloud - * @BelongsPackage: com.hzs.third.job - * @Author: sui qing - * @CreateTime: 2023-03-29 18:39 - * @Description: 定时发送业绩短信 - * @Version: 1.0 - */ @Slf4j @ConditionalOnProperty(name = "xxl-job.start", havingValue = "true") @Component @@ -47,7 +38,6 @@ public class OrderJob { /** * 定时关单 订单三十分钟未支付自动关闭 */ - // TODO 设置定时任务 启动频率 @XxlJob("autoCloseOrder") public void timingCloseOrder() { orderServiceApi.closeOrder(); @@ -55,12 +45,8 @@ public class OrderJob { /* * @description: 定时发送业绩短信 - * @author: sui q - * @date: 2023/9/6 13:54 - * @param: null null **/ @XxlJob("sendOrderAchieve") -// @Scheduled(cron = "00 49 15 * * ?") public void sendOrderAchieveMsg() { Date startDate = DateUtils.currentDate(); Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS); @@ -110,14 +96,6 @@ public class OrderJob { .append(",D=").append(calculateAchieve(haiFunAchieve)) .append(",合计=").append(calculateAchieve(registerAchieve.add(updateAchieve) .add(repurchaseAchieve).add(haiFunAchieve).add(directSupplyAchieve))).append(",Q=").append(calculateAchieve(rechargeTotalAmount)).append("。"); - List phoneList = new ArrayList<>(); - phoneList.add("18454272386"); - phoneList.add("18389196333"); - phoneList.add("18561823095"); - phoneList.forEach(phone -> { - String smsStr = SmsUtil.sendSms(phone, stringBuilder.toString()); - log.info("发送短信{}", smsStr); - }); } } diff --git a/bd-third/src/main/java/com/hzs/third/job/SmsJob.java b/bd-third/src/main/java/com/hzs/third/job/SmsJob.java deleted file mode 100644 index a2f85063..00000000 --- a/bd-third/src/main/java/com/hzs/third/job/SmsJob.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.hzs.third.job; - -import cn.hutool.core.collection.CollectionUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.hzs.common.core.constant.MagicNumberConstants; -import com.hzs.common.core.constant.SystemFieldConstants; -import com.hzs.common.core.enums.ESmsSendResult; -import com.hzs.common.core.enums.ESmsSendStatus; -import com.hzs.common.core.enums.ESmsSendType; -import com.hzs.common.domain.third.sms.TSmsRecord; -import com.hzs.third.sms.service.ITSmsRecordService; -import com.hzs.third.sms.util.SmsUtil; -import com.xxl.job.core.handler.annotation.XxlJob; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.stereotype.Component; - -import java.util.Date; -import java.util.List; - -/** - * @Description: 短信定时任务 - * @Author: jiang chao - * @Time: 2023/3/11 16:22 - * @Classname: SmsJob - * @PackageName: com.hzs.third.job - */ -@Slf4j -@ConditionalOnProperty(name = "xxl-job.start", havingValue = "true") -@Component -public class SmsJob { - - @Autowired - private ITSmsRecordService itSmsRecordService; - - /** - * 定时发送短信 - */ -// @Scheduled(cron = "0 * * * * ?") - @XxlJob("sendSms") - public void sendSms() { - log.info("定时发送短信任务开始!"); - - Date date = new Date(); - - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("SEND_TYPE", ESmsSendType.SCHEDULED.getValue()); - queryWrapper.eq("SEND_STATUS", ESmsSendStatus.NOT_SEND.getValue()); - queryWrapper.le("SEND_TIME", date); - queryWrapper.orderByAsc(SystemFieldConstants.CREATION_TIME); - List list = itSmsRecordService.list(queryWrapper); - if (CollectionUtil.isNotEmpty(list)) { - log.info("本次共需要发送短信{}条", list.size()); - - for (TSmsRecord tSmsRecord : list) { - String str = SmsUtil.sendSms(tSmsRecord.getPhone(), tSmsRecord.getContent()); - if (null == str) { - // 发送成功 - tSmsRecord.setSendResult(ESmsSendResult.SUCCESS.getValue()); - } else { - tSmsRecord.setSendResult(ESmsSendResult.FAIL.getValue()); - } - tSmsRecord.setSendStatus(ESmsSendStatus.SEND.getValue()); - tSmsRecord.setPkModified(MagicNumberConstants.PK_ADMIN); - tSmsRecord.setModifiedTime(date); - itSmsRecordService.updateById(tSmsRecord); - } - } else { - log.info("本次没有需要发送的短信"); - } - - log.info("定时发送短信任务结束!"); - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/PayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/PayServiceImpl.java index ecc0a590..e594b3f8 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/PayServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/impl/PayServiceImpl.java @@ -62,7 +62,7 @@ public class PayServiceImpl implements IPayService { String payNumber, Date payTime, BigDecimal payMoney, EPayChannel ePayChannel, String channelNumber) { Long pkId = null; - String redisKey = CacheConstants.ONLINE_PAYE_KEY + businessCode; + String redisKey = CacheConstants.ONLINE_PAY_KEY + businessCode; try { // 校验支付信息状态、业务与支付金额是否一致等 diff --git a/bd-third/src/main/java/com/hzs/third/sms/config/SmsConfig.java b/bd-third/src/main/java/com/hzs/third/sms/config/SmsConfig.java index 9b97f4cc..35cb669c 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/config/SmsConfig.java +++ b/bd-third/src/main/java/com/hzs/third/sms/config/SmsConfig.java @@ -6,44 +6,17 @@ import org.springframework.stereotype.Component; /** * 短信配置 - * @author hzs */ @Data @Component @ConfigurationProperties(prefix = "sms") public class SmsConfig { - /** - * 企业ID - */ - private String corpId; - /** - * 密码 - */ - private String pwd; - /** - * 短信请求URL - */ - private String url; - /** * 是否发送短信(true发送,false不发送) */ private boolean enable; - /** - * 企业ID(国际) - */ - private String corpIdInter; - /** - * 密码(国际) - */ - private String pwdInter; - /** - * 短信请求URL(国际) - */ - private String urlInter; - /** * 阿里短信accessKeyId */ diff --git a/bd-third/src/main/java/com/hzs/third/sms/controller/manage/SmsRecordController.java b/bd-third/src/main/java/com/hzs/third/sms/controller/manage/SmsRecordController.java index f8941678..533efc50 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/controller/manage/SmsRecordController.java +++ b/bd-third/src/main/java/com/hzs/third/sms/controller/manage/SmsRecordController.java @@ -4,11 +4,9 @@ import com.hzs.common.core.annotation.Log; import com.hzs.common.core.enums.*; import com.hzs.common.core.utils.poi.ExcelUtil; import com.hzs.common.core.web.controller.BaseController; -import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.domain.third.sms.ext.TSmsRecordExt; import com.hzs.common.security.utils.SecurityUtils; -import com.hzs.third.sms.param.SmsCreateParam; import com.hzs.third.sms.param.SmsRecordQueryParam; import com.hzs.third.sms.service.ITSmsRecordService; import org.springframework.beans.factory.annotation.Autowired; @@ -18,11 +16,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.List; /** - * @Description: 短信发送记录 - * @Author: jiang chao - * @Time: 2023/3/9 16:10 - * @Classname: SmsRecordController - * @PackageName: com.hzs.third.sms.controller + * 短信发送记录 */ @RestController @RequestMapping("/manage/sms-record/") @@ -37,7 +31,7 @@ public class SmsRecordController extends BaseController { * @param param * @return */ - @Log(module = EOperationModule.SMS_CONFIG, business = EOperationBusiness.SMS_RECORD ,method = EOperationMethod.SELECT) + @Log(module = EOperationModule.SMS_CONFIG, business = EOperationBusiness.SMS_RECORD, method = EOperationMethod.SELECT) @GetMapping("/list") public TableDataInfo list(SmsRecordQueryParam param) { startPage(); @@ -56,7 +50,7 @@ public class SmsRecordController extends BaseController { * @param response * @param param */ - @Log(module = EOperationModule.SMS_CONFIG, business = EOperationBusiness.SMS_RECORD ,method = EOperationMethod.EXPORT) + @Log(module = EOperationModule.SMS_CONFIG, business = EOperationBusiness.SMS_RECORD, method = EOperationMethod.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, SmsRecordQueryParam param) { List list = itSmsRecordService.queryList(param, SecurityUtils.getPkCountry()); @@ -70,28 +64,4 @@ public class SmsRecordController extends BaseController { util.exportExcel(response, list, "短信记录导出"); } - /** - * 创建短信 - * - * @param param - * @return - */ - @Log(module = EOperationModule.SMS_CONFIG, business = EOperationBusiness.SMS_CREATE ,method = EOperationMethod.INSERT) - @PostMapping("/create") - public AjaxResult create(@RequestBody SmsCreateParam param) { - if (null == param.getTemplateId() || null == param.getSendScope() || null == param.getSendType()) { - return AjaxResult.error("缺少参数"); - } - if (ESmsSendType.SCHEDULED.getValue() == param.getSendType() && null == param.getSendTime()) { - // 定时发送,需要有发送时间 - return AjaxResult.error("缺少参数"); - } - - String str = itSmsRecordService.pageSms(param, SecurityUtils.getUserId(), SecurityUtils.getPkCountry()); - if (null == str) { - return AjaxResult.success(); - } - return AjaxResult.error(str); - } - } diff --git a/bd-third/src/main/java/com/hzs/third/sms/mapper/TSmsRecordMapper.java b/bd-third/src/main/java/com/hzs/third/sms/mapper/TSmsRecordMapper.java index 557a62c9..a7ff82f8 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/mapper/TSmsRecordMapper.java +++ b/bd-third/src/main/java/com/hzs/third/sms/mapper/TSmsRecordMapper.java @@ -10,9 +10,6 @@ import java.util.List; /** * 短信发送记录 Mapper 接口 - * - * @author hzs - * @since 2023-03-08 */ public interface TSmsRecordMapper extends BaseMapper { @@ -25,12 +22,4 @@ public interface TSmsRecordMapper extends BaseMapper { */ List queryList(@Param("param") SmsRecordQueryParam param, @Param("pkCountry") Integer pkCountry); - /** - * 批量插入 - * - * @param list - * @return - */ - int insertBatch(@Param("list") List list); - } diff --git a/bd-third/src/main/java/com/hzs/third/sms/param/SmsCreateParam.java b/bd-third/src/main/java/com/hzs/third/sms/param/SmsCreateParam.java deleted file mode 100644 index 74bf873f..00000000 --- a/bd-third/src/main/java/com/hzs/third/sms/param/SmsCreateParam.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hzs.third.sms.param; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -/** - * @Description: 创建短信入参 - * @Author: jiang chao - * @Time: 2023/3/9 18:12 - * @Classname: SmsCreateParam - * @PackageName: com.hzs.third.sms.param - */ -@Data -public class SmsCreateParam { - - /** - * 短信模板ID - */ - private Integer templateId; - - /** - * 发送范围 -- ESmsSendScope - */ - private Integer sendScope; - - /** - * 会员ID列表 - */ - private List memberList; - - /** - * 订单ID列表 - */ - private List orderList; - - /** - * 指定手机号串 - */ - private String phones; - - /**v - * 参数列表 - */ - private List paramList; - - /** - * 发送方式 -- ESmsSendType - */ - private Integer sendType; - /** - * 发送时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date sendTime; - -} diff --git a/bd-third/src/main/java/com/hzs/third/sms/param/SmsRecordQueryParam.java b/bd-third/src/main/java/com/hzs/third/sms/param/SmsRecordQueryParam.java index 0d144ddd..a250d7c3 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/param/SmsRecordQueryParam.java +++ b/bd-third/src/main/java/com/hzs/third/sms/param/SmsRecordQueryParam.java @@ -5,11 +5,7 @@ import lombok.Data; import java.util.Date; /** - * @Description: 短信发送记录查询入参 - * @Author: jiang chao - * @Time: 2023/3/8 10:45 - * @Classname: SmsTemplateParam - * @PackageName: com.hzs.third.sms.param + * 短信发送记录查询入参 */ @Data public class SmsRecordQueryParam { diff --git a/bd-third/src/main/java/com/hzs/third/sms/param/SmsTemplateQueryParam.java b/bd-third/src/main/java/com/hzs/third/sms/param/SmsTemplateQueryParam.java index 2e429349..e36c5829 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/param/SmsTemplateQueryParam.java +++ b/bd-third/src/main/java/com/hzs/third/sms/param/SmsTemplateQueryParam.java @@ -5,11 +5,7 @@ import lombok.Data; import java.util.Date; /** - * @Description: 短信模板查询入参 - * @Author: jiang chao - * @Time: 2023/3/8 10:45 - * @Classname: SmsTemplateParam - * @PackageName: com.hzs.third.sms.param + * 短信模板查询入参 */ @Data public class SmsTemplateQueryParam { diff --git a/bd-third/src/main/java/com/hzs/third/sms/provider/SmsServiceProvider.java b/bd-third/src/main/java/com/hzs/third/sms/provider/SmsServiceProvider.java index 6d187cd8..f5bf997a 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/provider/SmsServiceProvider.java +++ b/bd-third/src/main/java/com/hzs/third/sms/provider/SmsServiceProvider.java @@ -3,50 +3,26 @@ package com.hzs.third.sms.provider; import com.hzs.common.core.domain.R; import com.hzs.common.core.enums.EAliSmsTemplate; import com.hzs.third.sms.ISmsServiceApi; -import com.hzs.third.sms.dto.SmsServiceDTO; -import com.hzs.third.sms.service.ISmsService; import com.hzs.third.sms.util.SmsUtil; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboService; -import org.springframework.beans.factory.annotation.Autowired; /** * 短信服务提供类 - * @author hzs */ @Slf4j @DubboService public class SmsServiceProvider implements ISmsServiceApi { - @Autowired - private ISmsService iSmsService; - - @Override - public R send(SmsServiceDTO param) { - try { -// String str = iSmsService.sendSms(param); -// if (null == str) { -// return R.ok(); -// } -// log.error("发送短信失败: {}", str); -// return R.fail(str); - return R.fail("功能正在完善中..."); - } catch (Exception e) { - log.error("发送短信异常 param: {}", param, e); - return R.fail(e.getMessage()); - } - } - @Override public R sendAliSms(String phone, String code, EAliSmsTemplate aliSmsTemplate) { try { -// String str = SmsUtil.sendAliSms(phone, code, aliSmsTemplate); -// if (null == str) { -// return R.ok(); -// } -// log.error("发送阿里短信失败: {}", str); -// return R.fail(str); - return R.fail("功能正在完善中..."); + String str = SmsUtil.sendAliSms(phone, code, aliSmsTemplate); + if (null == str) { + return R.ok(); + } + log.error("发送阿里短信失败: {}", str); + return R.fail(str); } catch (Exception e) { log.error("发送阿里短信异常 phone: {}, code: {}", phone, code, e); return R.fail(e.getMessage()); diff --git a/bd-third/src/main/java/com/hzs/third/sms/service/ISmsService.java b/bd-third/src/main/java/com/hzs/third/sms/service/ISmsService.java deleted file mode 100644 index c9420111..00000000 --- a/bd-third/src/main/java/com/hzs/third/sms/service/ISmsService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.hzs.third.sms.service; - -import com.hzs.third.sms.dto.SmsServiceDTO; - -/** - * @Description: 短信服务 - * @Author: jiang chao - * @Time: 2023/3/8 14:18 - * @Classname: ISmsService - * @PackageName: com.hzs.third.sms.service - */ -public interface ISmsService { - - /** - * 实时发送短信 - * - * @param param - * @return - */ - String sendSms(SmsServiceDTO param); - -} diff --git a/bd-third/src/main/java/com/hzs/third/sms/service/ITSmsRecordService.java b/bd-third/src/main/java/com/hzs/third/sms/service/ITSmsRecordService.java index 6033782d..734737ce 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/service/ITSmsRecordService.java +++ b/bd-third/src/main/java/com/hzs/third/sms/service/ITSmsRecordService.java @@ -3,16 +3,12 @@ package com.hzs.third.sms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.third.sms.TSmsRecord; import com.hzs.common.domain.third.sms.ext.TSmsRecordExt; -import com.hzs.third.sms.param.SmsCreateParam; import com.hzs.third.sms.param.SmsRecordQueryParam; import java.util.List; /** * 短信发送记录 服务类 - * - * @author hzs - * @since 2023-03-08 */ public interface ITSmsRecordService extends IService { @@ -25,14 +21,4 @@ public interface ITSmsRecordService extends IService { */ List queryList(SmsRecordQueryParam param, Integer pkCountry); - /** - * 页面添加短信 - * - * @param param - * @param userId - * @param pkCountry - * @return - */ - String pageSms(SmsCreateParam param, Long userId, Integer pkCountry); - } diff --git a/bd-third/src/main/java/com/hzs/third/sms/service/impl/SmsServiceImpl.java b/bd-third/src/main/java/com/hzs/third/sms/service/impl/SmsServiceImpl.java deleted file mode 100644 index 9c1e2a4f..00000000 --- a/bd-third/src/main/java/com/hzs/third/sms/service/impl/SmsServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.hzs.third.sms.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.hzs.common.core.constant.MagicNumberConstants; -import com.hzs.common.core.enums.*; -import com.hzs.common.domain.third.sms.TSmsRecord; -import com.hzs.common.domain.third.sms.TSmsTemplate; -import com.hzs.third.sms.dto.SmsServiceDTO; -import com.hzs.third.sms.service.ISmsService; -import com.hzs.third.sms.service.ITSmsRecordService; -import com.hzs.third.sms.service.ITSmsTemplateService; -import com.hzs.third.sms.util.SmsUtil; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.List; - -/** - * @Description: 短信服务 - * @Author: jiang chao - * @Time: 2023/3/8 14:18 - * @Classname: SmsServiceImpl - * @PackageName: com.hzs.third.sms.service.impl - */ -@Service -public class SmsServiceImpl implements ISmsService { - - @Autowired - private ITSmsTemplateService itSmsTemplateService; - @Autowired - private ITSmsRecordService itSmsRecordService; - - @Override - public String sendSms(SmsServiceDTO param) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("TEMPLATE_CODE", param.getTemplateCode()); - queryWrapper.eq("PK_COUNTRY", param.getPkCountry()); - TSmsTemplate smsTemplate = itSmsTemplateService.getOne(queryWrapper); - if (null == smsTemplate) { - return "短信模板不存在"; - } - if (EYesNo.NO.getIntValue() == smsTemplate.getEnable()) { - return "短信模板禁止使用"; - } - - // 手机号 - String phone = param.getPhone(); - // 发送内容 - String content = smsTemplate.getTemplateContent(); - // 参数列表 - List paramList = param.getParamList(); - - if (smsTemplate.getParamNum() != 0) { - if (smsTemplate.getParamNum() != paramList.size()) { - return "缺少短信参数"; - } - content = String.format(content, paramList.toArray()); - } - - Date nowDate = new Date(); - - // 短信发送记录 - TSmsRecord smsRecord = new TSmsRecord(); - - // 发送短信 - String smsStr = SmsUtil.sendSms(phone, content); - if (null == smsStr) { - // 发送成功 - smsRecord.setSendResult(ESmsSendResult.SUCCESS.getValue()); - } else { - // 发送失败 - smsRecord.setSendResult(ESmsSendResult.FAIL.getValue()); - } - - if (null == param.getSaveFlag() || param.getSaveFlag()) { - // 保存短信发送记录 - smsRecord.setPkSmsTemplate(smsTemplate.getPkId()); - smsRecord.setPkMember(param.getPkMember()); - smsRecord.setPhone(phone); - smsRecord.setContent(content); - smsRecord.setSendScope(ESmsSendScope.MEMBER.getValue()); - smsRecord.setSendType(ESmsSendType.IMMEDIATELY.getValue()); - smsRecord.setSendStatus(ESmsSendStatus.SEND.getValue()); - smsRecord.setSendTime(nowDate); - if (null != param.getUserId()) { - smsRecord.setPkCreator(param.getUserId()); - } else { - smsRecord.setPkCreator(MagicNumberConstants.PK_ADMIN); - } - smsRecord.setCreationTime(nowDate); - smsRecord.setModifiedTime(nowDate); - smsRecord.setPkCountry(param.getPkCountry()); - itSmsRecordService.save(smsRecord); - } - return smsStr; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/sms/service/impl/TSmsRecordServiceImpl.java b/bd-third/src/main/java/com/hzs/third/sms/service/impl/TSmsRecordServiceImpl.java index 803ef1a6..b0b731a2 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/service/impl/TSmsRecordServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/sms/service/impl/TSmsRecordServiceImpl.java @@ -1,248 +1,24 @@ package com.hzs.third.sms.service.impl; -import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hzs.common.core.enums.*; -import com.hzs.common.core.utils.StringUtils; -import com.hzs.common.domain.member.ext.CuMemberExt; -import com.hzs.common.domain.sale.ext.SaOrderItemsExt; import com.hzs.common.domain.third.sms.TSmsRecord; -import com.hzs.common.domain.third.sms.TSmsTemplate; import com.hzs.common.domain.third.sms.ext.TSmsRecordExt; -import com.hzs.member.base.IMemberServiceApi; -import com.hzs.sale.order.ISaOrderServiceApi; import com.hzs.third.sms.mapper.TSmsRecordMapper; -import com.hzs.third.sms.param.SmsCreateParam; import com.hzs.third.sms.param.SmsRecordQueryParam; import com.hzs.third.sms.service.ITSmsRecordService; -import com.hzs.third.sms.service.ITSmsTemplateService; -import com.hzs.third.sms.util.SmsUtil; -import org.apache.dubbo.config.annotation.DubboReference; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.*; /** * 短信发送记录 服务实现类 - * - * @author hzs - * @since 2023-03-08 */ @Service public class TSmsRecordServiceImpl extends ServiceImpl implements ITSmsRecordService { - @Autowired - private ITSmsTemplateService itSmsTemplateService; - - @DubboReference - private IMemberServiceApi iMemberServiceApi; - @DubboReference - private ISaOrderServiceApi iSaOrderServiceApi; - @Override public List queryList(SmsRecordQueryParam param, Integer pkCountry) { return baseMapper.queryList(param, pkCountry); } - @Transactional(rollbackFor = Exception.class) - @Override - public String pageSms(SmsCreateParam param, Long userId, Integer pkCountry) { - TSmsTemplate smsTemplate = itSmsTemplateService.getById(param.getTemplateId()); - if (null == smsTemplate) { - return "短信模板不存在"; - } - if (EYesNo.NO.getIntValue() == smsTemplate.getEnable()) { - return "短信模板禁止使用"; - } - // 模板编号 - String templateCode = smsTemplate.getTemplateCode(); - // 发送内容 - String templateContent = smsTemplate.getTemplateContent(); - - ESmsTemplate eSmsTemplate = ESmsTemplate.getEnumsByCode(templateCode); - if (null != eSmsTemplate) { - // 短信枚举存在 - if (!eSmsTemplate.isCreate()) { - return "该短信模板不能手动发送"; - } - } - - // 需要入库的短信记录列表 - List smsRecordList = new ArrayList<>(); - - // 发送范围 - Integer sendScope = param.getSendScope(); - // 发送方式 - Integer sendType = param.getSendType(); - // 发送时间 - Date sendTime = param.getSendTime(); - // 参数列表 - List paramList = param.getParamList(); - - // 短信枚举存在,则需要判断使用哪种方式 - if (ESmsSendScope.MEMBER.getValue() == sendScope) { - // 指定会员 - List pkMemberList = param.getMemberList(); - if (CollectionUtil.isNotEmpty(pkMemberList)) { - // 根据传入的会员ID查询会员信息 - List cuMemberList = iMemberServiceApi.findMemberByMemberId(pkMemberList, pkCountry).getData(); - - // 预置会员短信模板,参数使用固定值进行填 - if (SmsUtil.getMemberTemplateList().contains(smsTemplate.getTemplateCode())) { - // 预置模板,可以进行处理 - } else { - // 非预置模板 - for (CuMemberExt cuMember : cuMemberList) { - // 发送内容 - String content; - if (CollectionUtil.isNotEmpty(paramList)) { - // 传入参数列表 - content = String.format(templateContent, paramList.toArray()); - } else { - // 非传入参数列表,默认使用会员编号做为填充参数 - content = String.format(templateContent, cuMember.getMemberCode()); - } - - smsRecordList.add(this.createRecord( - smsTemplate.getPkId(), cuMember.getPkId(), cuMember.getPhone(), - content, sendScope, sendType, sendTime, userId, pkCountry - )); - } - } - } - } else if (ESmsSendScope.ORDER.getValue() == sendScope) { - // 指定订单 - List orderIdList = param.getOrderList(); - if (CollectionUtil.isNotEmpty(orderIdList)) { - // 根据传入的订单ID查询订单信息 - List saOrderList = iSaOrderServiceApi.queryOrderItemsListByOrderId(orderIdList, pkCountry).getData(); - - // 预置订单短信模板,参数使用固定值进行填 - if (SmsUtil.getOrderTemplateList().contains(smsTemplate.getTemplateCode())) { - // 预置模板,可以进行处理 - for (SaOrderItemsExt saOrder : saOrderList) { - // 发送内容 - String content = templateContent; - if (CollectionUtil.isNotEmpty(paramList)) { - // 传入参数列表 - content = String.format(templateContent, paramList.toArray()); - } else { - // 非传入参数列表,默认使用快递单号做为填充参数 - if (smsTemplate.getParamNum() == 1) { - content = String.format(templateContent, saOrder.getLogisticsCode()); - } - } - - smsRecordList.add(this.createRecord( - smsTemplate.getPkId(), saOrder.getPkMember(), saOrder.getRecPhone(), - content, sendScope, sendType, sendTime, userId, pkCountry - )); - } - } else { - // 非预置模板 - for (SaOrderItemsExt saOrder : saOrderList) { - // 发送内容 - String content = templateContent; - if (CollectionUtil.isNotEmpty(paramList)) { - // 传入参数列表 - content = String.format(templateContent, paramList.toArray()); - } else { - // 非传入参数列表,默认使用快递单号做为填充参数 - if (smsTemplate.getParamNum() == 1) { - content = String.format(templateContent, saOrder.getLogisticsCode()); - } else if (smsTemplate.getParamNum() == 2) { - content = String.format(templateContent, saOrder.getOrderCode(), saOrder.getLogisticsCode()); - } - } - - smsRecordList.add(this.createRecord( - smsTemplate.getPkId(), saOrder.getPkMember(), saOrder.getRecPhone(), - content, sendScope, sendType, sendTime, userId, pkCountry - )); - } - } - } - } else { - // 自定义手机号 - String phones = param.getPhones(); - if (StringUtils.isNotEmpty(phones)) { - // 处理传入手机号 - String[] phoneArr = phones.replaceAll(";", ";").split(";"); - - // 自定义手机号,不区分短信模板 - for (String phone : phoneArr) { - // 发送内容 - String content = templateContent; - if (CollectionUtil.isNotEmpty(paramList)) { - // 传入参数列表 - content = String.format(templateContent, paramList.toArray()); - } - - smsRecordList.add(this.createRecord( - smsTemplate.getPkId(), null, phone, - content, sendScope, sendType, sendTime, userId, pkCountry - )); - } - } - } - - if (StringUtils.isNotEmpty(smsRecordList)) { - // 有发送数据,则进行处理 - if (ESmsSendType.IMMEDIATELY.getValue() == sendType) { - // 立即发送 - Date nowDate = new Date(); - - // 目前单现程推送,后续如果发送慢可以考虑多线程处理 - smsRecordList.forEach((tSmsRecord -> { - // 已发送 - tSmsRecord.setSendStatus(ESmsSendStatus.SEND.getValue()); - tSmsRecord.setSendTime(nowDate); - if (null == SmsUtil.sendSms(tSmsRecord.getPhone(), tSmsRecord.getContent())) { - // 发送成功 - tSmsRecord.setSendResult(ESmsSendResult.SUCCESS.getValue()); - } else { - // 发送失败 - tSmsRecord.setSendResult(ESmsSendResult.FAIL.getValue()); - } - })); - } - baseMapper.insertBatch(smsRecordList); - } - return null; - } - - /** - * 创建短信记录 - * - * @param templateId 模板ID - * @param pkMember 接收用户ID - * @param phone 发送手机号 - * @param content 发送内容 - * @param sendScope 发送范围 -- ESmsSendScope - * @param sendType 发送类型 -- ESmsSendType - * @param sendTime 发送时间 - * @param userId 操作用户ID - * @param pkCountry 所属国家 - * @return - */ - private TSmsRecord createRecord(Integer templateId, Long pkMember, String phone, - String content, Integer sendScope, Integer sendType, - Date sendTime, Long userId, Integer pkCountry) { - TSmsRecord tSmsRecord = new TSmsRecord(); - tSmsRecord.setPkSmsTemplate(templateId); - tSmsRecord.setPkMember(pkMember); - tSmsRecord.setPhone(phone); - tSmsRecord.setContent(content); - tSmsRecord.setSendScope(sendScope); - tSmsRecord.setSendType(sendType); - tSmsRecord.setSendStatus(ESmsSendStatus.NOT_SEND.getValue()); - tSmsRecord.setSendResult(ESmsSendResult.NOT_SEND.getValue()); - tSmsRecord.setSendTime(sendTime); - tSmsRecord.setPkCreator(userId); - tSmsRecord.setPkCountry(pkCountry); - return tSmsRecord; - } - } diff --git a/bd-third/src/main/java/com/hzs/third/sms/util/SmsUtil.java b/bd-third/src/main/java/com/hzs/third/sms/util/SmsUtil.java index 8acdf3ad..215f2f19 100644 --- a/bd-third/src/main/java/com/hzs/third/sms/util/SmsUtil.java +++ b/bd-third/src/main/java/com/hzs/third/sms/util/SmsUtil.java @@ -4,8 +4,6 @@ import cn.hutool.json.JSONUtil; import com.aliyun.dysmsapi20170525.Client; import com.hzs.common.core.constant.Constants; import com.hzs.common.core.enums.EAliSmsTemplate; -import com.hzs.common.core.enums.ESmsTemplate; -import com.hzs.common.core.utils.HttpClientUtil; import com.hzs.common.core.utils.SpringUtils; import com.hzs.third.sms.config.SmsConfig; import lombok.extern.slf4j.Slf4j; @@ -16,18 +14,11 @@ import org.springframework.stereotype.Component; import com.aliyun.dysmsapi20170525.models.*; import com.aliyun.teaopenapi.models.*; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /** - * Description: 发送短信工具类 - * - * @author: jiang chao - * Time: 2022/9/24 9:58 - * Classname: SmsUtil - * PackageName: com.hzs.common.utils + * 发送短信工具类 */ @Slf4j @Component @@ -35,64 +26,6 @@ public class SmsUtil implements InitializingBean { private static SmsConfig smsConfig; - // 会员预置短信模板 - private static List memberTemplateList; - - // 订单预置短信模板 - private static List orderTemplateList; - - /** - * 发送短信 - * - * @param phone 手机号 - * @param content 发送内容 - * @return - */ - public static String sendSms(String phone, String content) { - if (StringUtils.isAnyEmpty(phone, content)) { - return "手机号或内容为空"; - } - - if (smsConfig.isEnable()) { - // 只有当开启发送短信才进行发送 - - String corpid = smsConfig.getCorpId(); - String pwd = smsConfig.getPwd(); - String url = smsConfig.getUrl(); - - if (phone.length() == 10 && phone.startsWith("09")) { - // 台湾手机号码处理(10位长度,以09开头) - corpid = smsConfig.getCorpIdInter(); - pwd = smsConfig.getPwdInter(); - url = smsConfig.getUrl(); - } - - Map paramMap = new HashMap<>(); - paramMap.put("corpid", corpid); - paramMap.put("pwd", pwd); - paramMap.put("mobile", phone); - paramMap.put("content", content); - - log.info("短信发送参数: {}", paramMap); - - String result = HttpClientUtil.get(url, paramMap); - - log.info("短信发送结果: {}", result); - - if (StringUtils.isNotEmpty(result)) { - if (Integer.parseInt(result) > 0) { - return null; - } else { - log.error("短信发送失败, status: {}", result); - } - } - return "发送失败"; - } else { - log.info("短信发送手机:{}, 内容: {}", phone, content); - } - return null; - } - /** * 发送阿里短信 * @@ -104,7 +37,7 @@ public class SmsUtil implements InitializingBean { if (StringUtils.isAnyEmpty(phone, code)) { return "手机号或验证码为空"; } - System.out.println("短信验证码:" + code); + log.info("短信验证码,发送手机号:{}, code:{}", phone, code); if (smsConfig.isEnable()) { // 只有当开启发送短信才进行发送 try { @@ -125,11 +58,11 @@ public class SmsUtil implements InitializingBean { .setTemplateCode(aliSmsTemplate.getCode()) .setTemplateParam(JSONUtil.toJsonStr(templateParam)); - log.info("阿里云短信发送参数: {}", sendSmsRequest); +// log.info("阿里云短信发送参数: {}", sendSmsRequest); SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest); - log.info("阿里云短信发送结果: {}", sendSmsResponse.getBody()); +// log.info("阿里云短信发送结果: {}", sendSmsResponse.getBody()); if (Constants.SUCCESS.equals(sendSmsResponse.getStatusCode())) { if ("OK".equals(sendSmsResponse.getBody().getCode())) { @@ -144,32 +77,9 @@ public class SmsUtil implements InitializingBean { return null; } - public static List getMemberTemplateList() { - return memberTemplateList; - } - - public static List getOrderTemplateList() { - return orderTemplateList; - } - @Override public void afterPropertiesSet() { smsConfig = SpringUtils.getBean(SmsConfig.class); - - // 会员预置短信模板初始化 - memberTemplateList = new ArrayList<>(); - - // 订单预置短信模板初始化 - orderTemplateList = new ArrayList<>(); - orderTemplateList.add(ESmsTemplate.SMS21.getCode()); - orderTemplateList.add(ESmsTemplate.SMS22.getCode()); - orderTemplateList.add(ESmsTemplate.SMS23.getCode()); - orderTemplateList.add(ESmsTemplate.SMS24.getCode()); - orderTemplateList.add(ESmsTemplate.SMS25.getCode()); - orderTemplateList.add(ESmsTemplate.SMS26.getCode()); - orderTemplateList.add(ESmsTemplate.SMS27.getCode()); - orderTemplateList.add(ESmsTemplate.SMS28.getCode()); - orderTemplateList.add(ESmsTemplate.SMS29.getCode()); } } diff --git a/bd-third/src/main/resources/bootstrap.yml b/bd-third/src/main/resources/bootstrap.yml index b3224a7e..2fd765d9 100644 --- a/bd-third/src/main/resources/bootstrap.yml +++ b/bd-third/src/main/resources/bootstrap.yml @@ -213,9 +213,9 @@ baofu: fastCallbackUrl: http://p1.hzs413.com/inter-api/pay/baofu/fast-notify ## 宝付退款回调地址 refundCallbackUrl: http://p1.hzs413.com/inter-api/pay/baofu-refund/notify - ## 宝付支付小程序appId(海之圣BPay) + ## 宝付支付小程序appId appletPayAppId: wx93cdfabba48ff37d - ## 宝付支付小程序appSecret(海之圣BPay) + ## 宝付支付小程序appSecret appletPaySecret: 68984ec2a14e11a7ead9bf4847b6e6e1 @@ -265,21 +265,13 @@ huifu: ## 短信配置 sms: - ## 凌凯国内短信配置 - corpId: CQJT001019 - pwd: 3FDA8B - url: https://sdk3.028lk.com:9988/BatchSend2.aspx ## 是否发送短信(true发送,false不发送) - enable: false - ## 凌凯国际短信配置 - corpIdInter: CQJT000992 - pwdInter: 1263BA - urlInter: https://sdk3.028lk.com:9988/IntlSend.aspx + enable: true ## 阿里短信 - aliAccessKeyId: LTAI5tSjEQgSVXVrVvDEkcNh - aliAccessKeySecret: do1zRINS8MZ78UG6Vsa3SglZ3jPcOS + aliAccessKeyId: LTAI5tECf4VYcpQNvaZ2bFg6 + aliAccessKeySecret: 68vOfID5RWE8KhlMjV9qpMpoX5ZX9D aliEndpoint: dysmsapi.aliyuncs.com - aliSign: 青岛海之圣电子商务 + aliSign: 北方大陆 ## 快递100配置 express: diff --git a/bd-third/src/main/resources/mapper/third/sms/TSmsRecordMapper.xml b/bd-third/src/main/resources/mapper/third/sms/TSmsRecordMapper.xml index 32528d30..9e0e1498 100644 --- a/bd-third/src/main/resources/mapper/third/sms/TSmsRecordMapper.xml +++ b/bd-third/src/main/resources/mapper/third/sms/TSmsRecordMapper.xml @@ -2,26 +2,6 @@ - - - - - - - - - - - - - - - - - - - - - - - INSERT ALL - - into T_SMS_RECORD ( - PK_SMS_TEMPLATE, PK_MEMBER, PHONE, CONTENT, - SEND_SCOPE, SEND_TYPE, SEND_STATUS, SEND_RESULT, - SEND_TIME, PK_COUNTRY, PK_CREATOR - ) - values ( - #{item.pkSmsTemplate}, #{item.pkMember, jdbcType=NUMERIC}, #{item.phone}, #{item.content}, - #{item.sendScope}, #{item.sendType}, #{item.sendStatus}, #{item.sendResult}, - #{item.sendTime}, #{item.pkCountry}, #{item.pkCreator} - ) - - SELECT 1 FROM dual - - diff --git a/文档/三方对接/京东快递..txt b/文档/三方对接/京东快递..txt deleted file mode 100644 index 06901bf3..00000000 --- a/文档/三方对接/京东快递..txt +++ /dev/null @@ -1,5 +0,0 @@ -https://cloud.jdl.com/#/open-business-document/api-doc/267/841 - -客户编码:010K2141860 -账号:海之圣2023 -密码:haizhisheng2023