forked from angelo/java-retail-app
				
			Compare commits
	
		
			2 Commits
		
	
	
		
			b80d5ea6db
			...
			fc705f4510
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						fc705f4510 | |
| 
							
							
								
								 | 
						644c00953c | 
| 
						 | 
				
			
			@ -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