forked from angelo/java-retail-app
## 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);
|
||||
|
||||
|
||||
/**
|
||||
* 发送会员注册短信
|
||||
*
|
||||
* @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 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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -97,4 +97,7 @@ public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRa
|
|||
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
|
||||
|
||||
PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
// 确认订单
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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"),
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue