3
0
Fork 0

## Fix - (368/367/366/365)

This commit is contained in:
sangelxiu1 2025-09-02 13:46:25 +08:00
parent 826855b5fc
commit 644c00953c
11 changed files with 130 additions and 5 deletions

View File

@ -19,4 +19,16 @@ public interface ISmsServiceApi {
*/
R<String> sendAliSms(String phone, String code, EAliSmsTemplate aliSmsTemplate);
/**
* 发送会员注册短信
*
* @param phone
* @param aliSmsTemplate
* @param memberCode
* @param loginPwd
* @param payPwd
* @return
*/
R<String> sendMemberRegister(String phone, EAliSmsTemplate aliSmsTemplate, String memberCode, String loginPwd, String payPwd);
}

View File

@ -4,14 +4,17 @@ import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.annotation.RepeatSubmitSimple;
import com.hzs.common.core.config.BdConfig;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.msg.CommonMsgConstants;
import com.hzs.common.core.constant.msg.ConfigMsgConstants;
import com.hzs.common.core.constant.msg.MemberMsgConstants;
import com.hzs.common.core.domain.FileResult;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.core.utils.uuid.IdUtils;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
@ -38,6 +41,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* 会员控制器
@ -54,6 +58,9 @@ public class ApiMemberController extends BaseController {
@Autowired
private IApiAliSmsService iApiAliSmsService;
@Autowired
private RedisService redisService;
@DubboReference
IGradeServiceApi iGradeServiceApi;
@ -404,6 +411,10 @@ public class ApiMemberController extends BaseController {
if (null == cuMemberExt) {
return AjaxResult.error("注册会员失败,请联系客服处理");
}
// 自动登录 uuid 标记
String uuid = IdUtils.simpleUUID();
// 根据会员编号放一个登录 uuid 做为自动登录校验使用120分钟有效
redisService.setCacheObject(CacheConstants.AUTO_LOGIN + cuMemberExt.getMemberCode(), uuid, CacheConstants.LOGIN_TOKEN_REFRESH_TIME * 2, TimeUnit.MINUTES);
return AjaxResult.success(MemberShare.builder()
.memberName(cuMemberExt.getMemberName())
@ -412,9 +423,10 @@ public class ApiMemberController extends BaseController {
.loginPassword(cuMemberExt.getLoginPassword())
.payPassword(cuMemberExt.getPayPassword())
.urlAddress(BdConfig.getPc())
.gzh(BdConfig.getGzh())
.ios(BdConfig.getIos())
.android(BdConfig.getAndroid())
// .gzh(BdConfig.getGzh())
// .ios(BdConfig.getIos())
// .android(BdConfig.getAndroid())
.uuid(uuid)
.build());
}
}

View File

@ -66,8 +66,30 @@ public class RetailMemberTokenController {
return AjaxResult.success(memberTokenService.createToken(loginMember));
}
/**
* 新零售会员自动登录
* 新零售会员自动登录-分享注册后自动登录
*
* @param param 自助登录参数
* @return
*/
@PostMapping("/registered-auto-login")
public AjaxResult registeredAutoLogin(@Valid @RequestBody RetailAutoLoginParam param) {
String tmpUuid = redisService.getCacheObject(CacheConstants.AUTO_LOGIN + param.getUsername());
if (!param.getUuid().equals(tmpUuid)) {
// 没有自动登录标记 或者 标记不对则不能自动登录
return AjaxResult.error("当前会员已不能快递登录");
}
// 用户登录
LoginMember loginMember = iRetailMemberLoginService.login(param.getUsername(), param.getPassword());
// 获取登录token
return AjaxResult.success(memberTokenService.createToken(loginMember));
}
/**
* 新零售会员自动登录-分享注册前自动登录
*
* @param param 自助登录参数
* @return

View File

@ -97,4 +97,7 @@ public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRa
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
}

View File

@ -1,6 +1,7 @@
package com.hzs.retail.sale.controller.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.annotation.RepeatSubmit;
import com.hzs.common.core.config.BdConfig;
@ -884,6 +885,12 @@ public class ApiRetailOrderController {
}
registerParam.setOrderItemsParams(orderItemsParams);
CuMemberShare memberShare = memberTokenService.getLoginMember().getCuMemberShare();
CuMember parentMember = iMemberServiceApi.getMember(memberShare.getPkParent()).getData();
// 校验手机号必须唯一
String relationStr = iMemberServiceApi.checkRegisterRelation(registerParam.getPhone(), parentMember.getMemberCode()).getData();
if (relationStr != null) {
return AjaxResult.error(relationStr);
}
registerParam.setCuMemberShare(memberShare);
// registerParam.setPkCreator(memberShare.getPkParent());
// 确认订单

View File

@ -52,6 +52,7 @@ import com.hzs.sale.wares.service.IBdWaresRangeService;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.third.sms.ISmsServiceApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
@ -114,6 +115,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
IMemberServiceApi iMemberServiceApi;
@DubboReference
IMemberAccountServiceApi iMemberAccountServiceApi;
@DubboReference
ISmsServiceApi iSmsServiceApi;
@Override
@ -564,6 +567,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
}
this.pushOrderMq(saOrderExt);
// 发送会员注册成功短信
iSmsServiceApi.sendMemberRegister(newMember.getPhone(), EAliSmsTemplate.MEMBER_REGISTER,
newMember.getMemberCode(), newMember.getLoginPassword(), newMember.getPayPassword());
return null;
}

View File

@ -91,7 +91,7 @@ public class SecurityContextHolder {
}
public static Integer getSystemType() {
return Convert.toInt(get(SecurityConstants.SYSTEM_TYPE), null);
return Convert.toInt(get(SecurityConstants.SYSTEM_TYPE), 2);
}
public static void setSystemType(String systemType) {

View File

@ -25,6 +25,11 @@ public enum EAliSmsTemplate {
* 2025年6月12日 替换为北大
*/
MEMBER_SMS("SMS_485350565"),
/**
* 会员注册成功尊敬的会员,您新注册的会员编号:${memberCode},登录密码:${loginPwd},支付密码:${payPwd},请妥善保管
*/
MEMBER_REGISTER("SMS_491370028"),
// MEMBER_SMS("SMS_476795282"),
// MEMBER_SMS("SMS_474440238"),

View File

@ -177,6 +177,7 @@ security:
- /member/api/member/fans-order/*
- /system/api/idempotent/generate
- /member/api/retail-auth/auto-login
- /member/api/retail-auth/registered-auto-login
# 日志配置
logging:

View File

@ -29,4 +29,19 @@ public class SmsServiceProvider implements ISmsServiceApi {
}
}
@Override
public R<String> sendMemberRegister(String phone, EAliSmsTemplate aliSmsTemplate, String memberCode, String loginPwd, String payPwd) {
try {
String str = SmsUtil.sendMemberRegister(phone, aliSmsTemplate, memberCode, loginPwd, payPwd);
if (null == str) {
return R.ok();
}
log.error("发送会员注册短信失败: {}", str);
return R.fail(str);
} catch (Exception e) {
log.error("发送会员注册短信异常 phone: {}, memberCode: {}", phone, memberCode, e);
return R.fail(e.getMessage());
}
}
}

View File

@ -77,6 +77,47 @@ public class SmsUtil implements InitializingBean {
return null;
}
public static String sendMemberRegister(String phone, EAliSmsTemplate aliSmsTemplate, String memberCode, String loginPwd, String payPwd) {
if (StringUtils.isAnyEmpty(phone)) {
return "手机号为空";
}
log.info("注册会员成功,发送手机号:{}, memberCode:{}", phone, memberCode);
if (smsConfig.isEnable()) {
// 只有当开启发送短信才进行发送
try {
Map<String, String> templateParam = new HashMap<>();
templateParam.put("memberCode", memberCode);
templateParam.put("loginPwd", loginPwd);
templateParam.put("payPwd", payPwd);
Client client = new Client(new Config()
.setAccessKeyId(smsConfig.getAliAccessKeyId())
.setAccessKeySecret(smsConfig.getAliAccessKeySecret())
// 短信发送域
.setEndpoint(smsConfig.getAliEndpoint()));
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(phone)
// 短信签名
.setSignName(smsConfig.getAliSign())
// 短信模板
.setTemplateCode(aliSmsTemplate.getCode())
.setTemplateParam(JSONUtil.toJsonStr(templateParam));
SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
if (Constants.SUCCESS.equals(sendSmsResponse.getStatusCode())) {
if ("OK".equals(sendSmsResponse.getBody().getCode())) {
return null;
}
log.error("阿里云短信发送失败: {}", sendSmsResponse.getBody().getMessage());
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
@Override
public void afterPropertiesSet() {
smsConfig = SpringUtils.getBean(SmsConfig.class);