## Fix - (368/367/366/365)
This commit is contained in:
parent
1c7f9581b8
commit
6457b85133
|
@ -19,4 +19,16 @@ public interface ISmsServiceApi {
|
||||||
*/
|
*/
|
||||||
R<String> sendAliSms(String phone, String code, EAliSmsTemplate aliSmsTemplate);
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,14 +4,17 @@ import cn.hutool.core.codec.Base64Decoder;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.hzs.common.core.annotation.RepeatSubmitSimple;
|
import com.hzs.common.core.annotation.RepeatSubmitSimple;
|
||||||
import com.hzs.common.core.config.BdConfig;
|
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.CommonMsgConstants;
|
||||||
import com.hzs.common.core.constant.msg.ConfigMsgConstants;
|
import com.hzs.common.core.constant.msg.ConfigMsgConstants;
|
||||||
import com.hzs.common.core.constant.msg.MemberMsgConstants;
|
import com.hzs.common.core.constant.msg.MemberMsgConstants;
|
||||||
import com.hzs.common.core.domain.FileResult;
|
import com.hzs.common.core.domain.FileResult;
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.enums.*;
|
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.DateUtils;
|
||||||
import com.hzs.common.core.utils.StringUtils;
|
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.controller.BaseController;
|
||||||
import com.hzs.common.core.web.domain.AjaxResult;
|
import com.hzs.common.core.web.domain.AjaxResult;
|
||||||
import com.hzs.common.core.web.page.TableDataInfo;
|
import com.hzs.common.core.web.page.TableDataInfo;
|
||||||
|
@ -38,6 +41,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员控制器
|
* 会员控制器
|
||||||
|
@ -54,6 +58,9 @@ public class ApiMemberController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private IApiAliSmsService iApiAliSmsService;
|
private IApiAliSmsService iApiAliSmsService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisService redisService;
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IGradeServiceApi iGradeServiceApi;
|
IGradeServiceApi iGradeServiceApi;
|
||||||
|
|
||||||
|
@ -404,6 +411,10 @@ public class ApiMemberController extends BaseController {
|
||||||
if (null == cuMemberExt) {
|
if (null == cuMemberExt) {
|
||||||
return AjaxResult.error("注册会员失败,请联系客服处理");
|
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()
|
return AjaxResult.success(MemberShare.builder()
|
||||||
.memberName(cuMemberExt.getMemberName())
|
.memberName(cuMemberExt.getMemberName())
|
||||||
|
@ -412,9 +423,10 @@ public class ApiMemberController extends BaseController {
|
||||||
.loginPassword(cuMemberExt.getLoginPassword())
|
.loginPassword(cuMemberExt.getLoginPassword())
|
||||||
.payPassword(cuMemberExt.getPayPassword())
|
.payPassword(cuMemberExt.getPayPassword())
|
||||||
.urlAddress(BdConfig.getPc())
|
.urlAddress(BdConfig.getPc())
|
||||||
.gzh(BdConfig.getGzh())
|
// .gzh(BdConfig.getGzh())
|
||||||
.ios(BdConfig.getIos())
|
// .ios(BdConfig.getIos())
|
||||||
.android(BdConfig.getAndroid())
|
// .android(BdConfig.getAndroid())
|
||||||
|
.uuid(uuid)
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,8 +66,30 @@ public class RetailMemberTokenController {
|
||||||
return AjaxResult.success(memberTokenService.createToken(loginMember));
|
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 自助登录参数
|
* @param param 自助登录参数
|
||||||
* @return
|
* @return
|
||||||
|
|
|
@ -97,4 +97,7 @@ public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRa
|
||||||
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
|
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
|
||||||
|
|
||||||
PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
|
PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.hzs.retail.sale.controller.api;
|
package com.hzs.retail.sale.controller.api;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.codec.Base64Decoder;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.hzs.common.core.annotation.RepeatSubmit;
|
import com.hzs.common.core.annotation.RepeatSubmit;
|
||||||
import com.hzs.common.core.config.BdConfig;
|
import com.hzs.common.core.config.BdConfig;
|
||||||
|
@ -884,6 +885,12 @@ public class ApiRetailOrderController {
|
||||||
}
|
}
|
||||||
registerParam.setOrderItemsParams(orderItemsParams);
|
registerParam.setOrderItemsParams(orderItemsParams);
|
||||||
CuMemberShare memberShare = memberTokenService.getLoginMember().getCuMemberShare();
|
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.setCuMemberShare(memberShare);
|
||||||
// registerParam.setPkCreator(memberShare.getPkParent());
|
// registerParam.setPkCreator(memberShare.getPkParent());
|
||||||
// 确认订单
|
// 确认订单
|
||||||
|
|
|
@ -52,6 +52,7 @@ import com.hzs.sale.wares.service.IBdWaresRangeService;
|
||||||
import com.hzs.system.base.ICurrencyServiceApi;
|
import com.hzs.system.base.ICurrencyServiceApi;
|
||||||
import com.hzs.system.base.dto.CurrencyDTO;
|
import com.hzs.system.base.dto.CurrencyDTO;
|
||||||
import com.hzs.system.config.IGradeServiceApi;
|
import com.hzs.system.config.IGradeServiceApi;
|
||||||
|
import com.hzs.third.sms.ISmsServiceApi;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||||
|
@ -114,6 +115,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
||||||
IMemberServiceApi iMemberServiceApi;
|
IMemberServiceApi iMemberServiceApi;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IMemberAccountServiceApi iMemberAccountServiceApi;
|
IMemberAccountServiceApi iMemberAccountServiceApi;
|
||||||
|
@DubboReference
|
||||||
|
ISmsServiceApi iSmsServiceApi;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -564,6 +567,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.pushOrderMq(saOrderExt);
|
this.pushOrderMq(saOrderExt);
|
||||||
|
|
||||||
|
// 发送会员注册成功短信
|
||||||
|
iSmsServiceApi.sendMemberRegister(newMember.getPhone(), EAliSmsTemplate.MEMBER_REGISTER,
|
||||||
|
newMember.getMemberCode(), newMember.getLoginPassword(), newMember.getPayPassword());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ public class SecurityContextHolder {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Integer getSystemType() {
|
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) {
|
public static void setSystemType(String systemType) {
|
||||||
|
|
|
@ -25,6 +25,11 @@ public enum EAliSmsTemplate {
|
||||||
* 2025年6月12日 替换为北大
|
* 2025年6月12日 替换为北大
|
||||||
*/
|
*/
|
||||||
MEMBER_SMS("SMS_485350565"),
|
MEMBER_SMS("SMS_485350565"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员注册成功(尊敬的会员,您新注册的会员编号:${memberCode},登录密码:${loginPwd},支付密码:${payPwd},请妥善保管)
|
||||||
|
*/
|
||||||
|
MEMBER_REGISTER("SMS_491370028"),
|
||||||
// MEMBER_SMS("SMS_476795282"),
|
// MEMBER_SMS("SMS_476795282"),
|
||||||
// MEMBER_SMS("SMS_474440238"),
|
// MEMBER_SMS("SMS_474440238"),
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,7 @@ security:
|
||||||
- /member/api/member/fans-order/*
|
- /member/api/member/fans-order/*
|
||||||
- /system/api/idempotent/generate
|
- /system/api/idempotent/generate
|
||||||
- /member/api/retail-auth/auto-login
|
- /member/api/retail-auth/auto-login
|
||||||
|
- /member/api/retail-auth/registered-auto-login
|
||||||
|
|
||||||
# 日志配置
|
# 日志配置
|
||||||
logging:
|
logging:
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,6 +77,47 @@ public class SmsUtil implements InitializingBean {
|
||||||
return null;
|
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
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
smsConfig = SpringUtils.getBean(SmsConfig.class);
|
smsConfig = SpringUtils.getBean(SmsConfig.class);
|
||||||
|
|
Loading…
Reference in New Issue