pull/1121/head
parent
b71cf2192f
commit
236167a12d
|
|
@ -1,5 +1,9 @@
|
|||
package com.ruoyi.framework.sms;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.framework.sms.ali.AliSmsServer;
|
||||
import com.ruoyi.framework.sms.ali.entity.AliSmsResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -7,6 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class SmsClientWrapper {
|
||||
|
|
@ -14,9 +20,15 @@ public class SmsClientWrapper {
|
|||
@Autowired
|
||||
private AliSmsServer aliSmsServer;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Value("${sms.send:true}")
|
||||
private Boolean doSend;
|
||||
|
||||
@Value("${sms.verificationCode.testModel:false}")
|
||||
private Boolean testModel;
|
||||
|
||||
@Value("${sms.verificationCode.signName:}")
|
||||
private String verificationCodeSignName;
|
||||
|
||||
|
|
@ -37,9 +49,48 @@ public class SmsClientWrapper {
|
|||
return sendResult;
|
||||
}
|
||||
|
||||
public boolean sendVerificationCode(String phoneNumber, String code) {
|
||||
return sendSms(verificationCodeSignName, phoneNumber, verificationCodeTemplateCode,
|
||||
/**
|
||||
* 发送短信验证码
|
||||
*
|
||||
* @param cacheKeyPrefix
|
||||
* @param phoneNumber
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
public boolean sendVerificationCode(String cacheKeyPrefix, String phoneNumber, String code) {
|
||||
String checkKey = CacheConstants.SMS_CAPTCHA_CODE_CD_PHONE_NUM_KEY + phoneNumber;
|
||||
if (redisCache.exists(checkKey)) {
|
||||
throw new ServiceException("验证码发送间隔需大于60S");
|
||||
}
|
||||
boolean success = sendSms(verificationCodeSignName, phoneNumber, verificationCodeTemplateCode,
|
||||
"{\"code\":\"" + code + "\"}");
|
||||
if (success) {
|
||||
redisCache.setCacheObject(checkKey, "1", 60, TimeUnit.SECONDS);
|
||||
redisCache.setCacheObject(cacheKeyPrefix + phoneNumber, code, 300, TimeUnit.SECONDS);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验短信验证码
|
||||
*
|
||||
* @param cacheKeyPrefix
|
||||
* @param phoneNumber
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
public boolean matchVerificationCode(String cacheKeyPrefix, String phoneNumber, String code) {
|
||||
if (testModel) {
|
||||
//测试模式
|
||||
return true;
|
||||
}
|
||||
String rk = cacheKeyPrefix + phoneNumber;
|
||||
String cacheCode = redisCache.getCacheObject(rk);
|
||||
if (cacheCode == null) {
|
||||
return false;
|
||||
}
|
||||
redisCache.deleteObject(rk);
|
||||
return StrUtil.equals(cacheCode, code);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,12 +23,8 @@ import com.ruoyi.system.service.ISysConfigService;
|
|||
import com.ruoyi.system.service.ISysUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 登录校验方法
|
||||
*
|
||||
|
|
@ -243,29 +239,13 @@ public class SysLoginService {
|
|||
* @param uuid 图形验证码uuid
|
||||
*/
|
||||
public void sendSmsVerificationCode(String phoneNumber, boolean checkPicCode, String code, String uuid) {
|
||||
String k = CacheConstants.SMS_CAPTCHA_CODE_CD_PHONE_NUM_KEY + phoneNumber;
|
||||
String v = redisCache.getCacheObject(k);
|
||||
if (StrUtil.isNotEmpty(v)) {
|
||||
throw new ServiceException("验证码发送间隔需大于60S");
|
||||
}
|
||||
if (checkPicCode) {
|
||||
validateCaptcha(null, code, uuid);
|
||||
}
|
||||
sendSmsVerificationCode(phoneNumber);
|
||||
redisCache.setCacheObject(k, "1", 60, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送登录/注册短信验证码
|
||||
*
|
||||
* @param phoneNumber 电话号码
|
||||
*/
|
||||
public void sendSmsVerificationCode(String phoneNumber) {
|
||||
String code = RandomUtil.randomNumbers(6);
|
||||
boolean success = smsClient.sendVerificationCode(phoneNumber, code);
|
||||
if (success) {
|
||||
String rk = CacheConstants.SMS_LOGIN_CAPTCHA_CODE_KEY + phoneNumber;
|
||||
redisCache.setCacheObject(rk, code, 5, TimeUnit.MINUTES);
|
||||
boolean success = smsClient.sendVerificationCode(CacheConstants.SMS_LOGIN_CAPTCHA_CODE_KEY, phoneNumber,
|
||||
RandomUtil.randomNumbers(6));
|
||||
if (!success) {
|
||||
throw new ServiceException("短信发送失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -277,14 +257,9 @@ public class SysLoginService {
|
|||
* @return
|
||||
*/
|
||||
public void validateSmsVerificationCode(String phoneNumber, String code) {
|
||||
String rk = CacheConstants.SMS_LOGIN_CAPTCHA_CODE_KEY + phoneNumber;
|
||||
String cacheCode = redisCache.getCacheObject(rk);
|
||||
if (cacheCode == null) {
|
||||
throw new CaptchaExpireException();
|
||||
}
|
||||
redisCache.deleteObject(rk);
|
||||
if (!StrUtil.equals(cacheCode, code)) {
|
||||
throw new CaptchaException();
|
||||
boolean match = smsClient.matchVerificationCode(CacheConstants.SMS_LOGIN_CAPTCHA_CODE_KEY, phoneNumber, code);
|
||||
if (!match) {
|
||||
throw new ServiceException("验证码错误");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ public class ExpressTrackDTO {
|
|||
* 物流名称
|
||||
*/
|
||||
private String expressName;
|
||||
/**
|
||||
* 物流类型[1:平台物流 2:档口物流]
|
||||
*/
|
||||
private Integer expressType;
|
||||
/**
|
||||
* 商品概要
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @author liangyq
|
||||
|
|
@ -333,18 +332,11 @@ public class AssetServiceImpl implements IAssetService {
|
|||
|
||||
@Override
|
||||
public void sendSmsVerificationCode(String phoneNumber) {
|
||||
String k = CacheConstants.SMS_CAPTCHA_CODE_CD_PHONE_NUM_KEY + phoneNumber;
|
||||
String v = redisCache.getCacheObject(k);
|
||||
if (StrUtil.isNotEmpty(v)) {
|
||||
throw new ServiceException("验证码发送间隔需大于60S");
|
||||
}
|
||||
String code = RandomUtil.randomNumbers(6);
|
||||
boolean success = smsClient.sendVerificationCode(phoneNumber, code);
|
||||
boolean success = smsClient.sendVerificationCode(CacheConstants.SMS_ASSET_CAPTCHA_CODE_KEY, phoneNumber,
|
||||
RandomUtil.randomNumbers(6));
|
||||
if (success) {
|
||||
String rk = CacheConstants.SMS_ASSET_CAPTCHA_CODE_KEY + phoneNumber;
|
||||
redisCache.setCacheObject(rk, code, 5, TimeUnit.MINUTES);
|
||||
throw new ServiceException("短信发送失败");
|
||||
}
|
||||
redisCache.setCacheObject(k, "1", 60, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -371,13 +363,8 @@ public class AssetServiceImpl implements IAssetService {
|
|||
* @return
|
||||
*/
|
||||
private void validateSmsVerificationCode(String phoneNumber, String code) {
|
||||
String rk = CacheConstants.SMS_ASSET_CAPTCHA_CODE_KEY + phoneNumber;
|
||||
String cacheCode = redisCache.getCacheObject(rk);
|
||||
if (cacheCode == null) {
|
||||
throw new ServiceException("验证码已失效");
|
||||
}
|
||||
redisCache.deleteObject(rk);
|
||||
if (!StrUtil.equals(cacheCode, code)) {
|
||||
boolean match = smsClient.matchVerificationCode(CacheConstants.SMS_ASSET_CAPTCHA_CODE_KEY, phoneNumber, code);
|
||||
if (!match) {
|
||||
throw new ServiceException("验证码错误");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -433,7 +433,10 @@ public class StoreOrderServiceImpl implements IStoreOrderService {
|
|||
|
||||
@Override
|
||||
public List<ShipLabelPreOrgPrintItemDTO> listPreOrgPrintItem(Long storeOrderId) {
|
||||
List<ExpressTrackDTO> dtos = getOrderExpressTracks(storeOrderId, true);
|
||||
List<ExpressTrackDTO> dtos = getOrderExpressTracks(storeOrderId, true)
|
||||
.stream()
|
||||
.filter(o -> EExpressType.PLATFORM.getValue().equals(o.getExpressType()))
|
||||
.collect(Collectors.toList());
|
||||
Set<String> expressWaybillNos = dtos.stream().map(ExpressTrackDTO::getExpressWaybillNo)
|
||||
.collect(Collectors.toSet());
|
||||
if (CollUtil.isEmpty(expressWaybillNos)) {
|
||||
|
|
@ -511,6 +514,7 @@ public class StoreOrderServiceImpl implements IStoreOrderService {
|
|||
expressTrackDTO.setCreateTime(createTime);
|
||||
expressTrackDTO.setExpressId(expressId);
|
||||
expressTrackDTO.setExpressName(expressNameMap.get(expressId));
|
||||
expressTrackDTO.setExpressType(oneDetail.getExpressType());
|
||||
expressTrackDTO.setExpressWaybillNo(entry.getKey());
|
||||
expressTrackDTO.setGoodsSummary(goodsSummaryStr);
|
||||
expressTrackDTO.setRecords(trackRecordGroupMap.getOrDefault(entry.getKey(), ListUtil.empty()));
|
||||
|
|
@ -523,6 +527,7 @@ public class StoreOrderServiceImpl implements IStoreOrderService {
|
|||
expressTrackDTO.setCreateTime(createTime);
|
||||
expressTrackDTO.setExpressId(expressId);
|
||||
expressTrackDTO.setExpressName(expressNameMap.get(expressId));
|
||||
expressTrackDTO.setExpressType(oneDetail.getExpressType());
|
||||
expressTrackDTO.setExpressWaybillNo(expressWaybillNo);
|
||||
expressTrackDTO.setGoodsSummary(goodsSummaryStr);
|
||||
//通过快递100查询轨迹
|
||||
|
|
@ -543,7 +548,8 @@ public class StoreOrderServiceImpl implements IStoreOrderService {
|
|||
|
||||
@Override
|
||||
public Page<StoreOrderPageItemDTO> page(StoreOrderQueryDTO queryDTO) {
|
||||
Page<StoreOrderPageItemDTO> page = PageHelper.startPage(queryDTO.getPageNum(), queryDTO.getPageSize());
|
||||
Page<StoreOrderPageItemDTO> page = PageHelper.startPage(queryDTO.getPageNum(), queryDTO.getPageSize(),
|
||||
"so.create_time DESC");
|
||||
storeOrderMapper.listStoreOrderPageItem(queryDTO);
|
||||
if (CollUtil.isNotEmpty(page.getResult())) {
|
||||
List<StoreOrderPageItemDTO> list = page.getResult();
|
||||
|
|
|
|||
Loading…
Reference in New Issue