Merge branch 'master' of http://gitea.yxtsoft.com/yxt_group/mallplus
This commit is contained in:
105
mallplus-mbg/src/main/java/com/zscat/mallplus/enums/SmsEnum.java
Normal file
105
mallplus-mbg/src/main/java/com/zscat/mallplus/enums/SmsEnum.java
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
package com.zscat.mallplus.enums;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author dimengzhe
|
||||||
|
* @Date 2023/2/23 9:01
|
||||||
|
* @Description
|
||||||
|
*/
|
||||||
|
public class SmsEnum {
|
||||||
|
/**
|
||||||
|
* 手机短信登录验证码时效(秒)
|
||||||
|
*/
|
||||||
|
public static final Long APP_LOGIN_CODE_TIME_LIMIT = 300L;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送验证码
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public static enum SendEnum {
|
||||||
|
/**
|
||||||
|
* 登录
|
||||||
|
*/
|
||||||
|
LOGIN("1", "loginCode","登录"),
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* code值
|
||||||
|
*/
|
||||||
|
private final String code;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private final String remarks;
|
||||||
|
/**
|
||||||
|
* 缓存识别码
|
||||||
|
*/
|
||||||
|
private final String redisKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造器
|
||||||
|
*
|
||||||
|
* @param code code值
|
||||||
|
* @param redisKey 缓存识别码
|
||||||
|
* @param remarks 备注
|
||||||
|
*/
|
||||||
|
private SendEnum(String code, String redisKey,String remarks) {
|
||||||
|
this.code = code;
|
||||||
|
this.remarks = remarks;
|
||||||
|
this.redisKey = redisKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public static enum SmsReturnEnum {
|
||||||
|
/**
|
||||||
|
* 发送短信返回参数
|
||||||
|
*/
|
||||||
|
ZERO("1", "提交成功"),
|
||||||
|
ONE("-1", "账号未注册"),
|
||||||
|
TWO("-2", "网络访问超时,请稍后再试"),
|
||||||
|
three("-3", "帐号或密码错误"),
|
||||||
|
FOUR("-4", "只支持单发"),
|
||||||
|
FIVE("-5", "余额不足,请充值"),
|
||||||
|
SIX("-6", "定时发送时间不是有效的时间格式"),
|
||||||
|
SEVEN("-7", "提交信息末尾未加签名,请添加中文的企业签名【 】或未采用gb2312编码"),
|
||||||
|
EIGHT("-8", "发送内容需在1到300字之间"),
|
||||||
|
NINE("-9", "发送号码为空"),
|
||||||
|
TEN("-10", "定时时间不能小于系统当前时间"),
|
||||||
|
ELEVEN("-11", "屏蔽手机号码"),
|
||||||
|
ONEZEROONE("-101", "调用接口速度太快"),
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* code值
|
||||||
|
*/
|
||||||
|
private final String code;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private final String remarks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造器
|
||||||
|
*
|
||||||
|
* @param code code值
|
||||||
|
* @param remarks 备注
|
||||||
|
*/
|
||||||
|
private SmsReturnEnum(String code, String remarks) {
|
||||||
|
this.code = code;
|
||||||
|
this.remarks = remarks;
|
||||||
|
}
|
||||||
|
public static String getValueByKey(String code) {
|
||||||
|
SmsReturnEnum[] sysReturnEnum = values();
|
||||||
|
for (SmsReturnEnum returnEnum: sysReturnEnum) {
|
||||||
|
if (returnEnum.getCode().equals(code)) {
|
||||||
|
return returnEnum.getRemarks();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -25,8 +25,8 @@ import java.util.Map;
|
|||||||
public interface SmsDao {
|
public interface SmsDao {
|
||||||
|
|
||||||
@Options(useGeneratedKeys = true, keyProperty = "id")
|
@Options(useGeneratedKeys = true, keyProperty = "id")
|
||||||
@Insert("insert into sys_sms(phone, signName, templateCode, params, day, createTime, updateTime) "
|
@Insert("insert into sys_sms(phone, signName, templateCode, params, day, createTime, updateTime,bizId,code,message) "
|
||||||
+ "values(#{phone}, #{signName}, #{templateCode}, #{params}, #{day}, #{createTime}, #{updateTime})")
|
+ "values(#{phone}, #{signName}, #{templateCode}, #{params}, #{day}, #{createTime}, #{updateTime},#{bizId},#{code},#{message})")
|
||||||
int save(Sms sms);
|
int save(Sms sms);
|
||||||
|
|
||||||
@Select("select * from sys_sms t where t.id = #{id}")
|
@Select("select * from sys_sms t where t.id = #{id}")
|
||||||
|
|||||||
@@ -183,6 +183,27 @@
|
|||||||
<artifactId>okhttp</artifactId>
|
<artifactId>okhttp</artifactId>
|
||||||
<version>3.14.4</version>
|
<version>3.14.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!--发送短信-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.axis</groupId>
|
||||||
|
<artifactId>axis</artifactId>
|
||||||
|
<version>1.4</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>axis</groupId>
|
||||||
|
<artifactId>axis-jaxrpc</artifactId>
|
||||||
|
<version>1.2.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-discovery</groupId>
|
||||||
|
<artifactId>commons-discovery</artifactId>
|
||||||
|
<version>0.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>wsdl4j</groupId>
|
||||||
|
<artifactId>wsdl4j</artifactId>
|
||||||
|
<version>1.6.3</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.zscat.mallplus.annotation.IgnoreAuth;
|
import com.zscat.mallplus.annotation.IgnoreAuth;
|
||||||
import com.zscat.mallplus.annotation.SysLog;
|
import com.zscat.mallplus.annotation.SysLog;
|
||||||
import com.zscat.mallplus.cms.entity.CmsSubject;
|
import com.zscat.mallplus.cms.entity.CmsSubject;
|
||||||
|
import com.zscat.mallplus.enums.SmsEnum;
|
||||||
import com.zscat.mallplus.oms.service.IOmsOrderService;
|
import com.zscat.mallplus.oms.service.IOmsOrderService;
|
||||||
import com.zscat.mallplus.oms.vo.HomeContentResult;
|
import com.zscat.mallplus.oms.vo.HomeContentResult;
|
||||||
import com.zscat.mallplus.pms.entity.PmsProduct;
|
import com.zscat.mallplus.pms.entity.PmsProduct;
|
||||||
@@ -38,6 +39,7 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.map.HashedMap;
|
import org.apache.commons.collections.map.HashedMap;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
@@ -390,13 +392,13 @@ public class BHomeController {
|
|||||||
@IgnoreAuth
|
@IgnoreAuth
|
||||||
@ApiOperation("获取验证码")
|
@ApiOperation("获取验证码")
|
||||||
@PostMapping(value = "/user.sms")
|
@PostMapping(value = "/user.sms")
|
||||||
public Object sendSmsCode(@RequestParam String phone) {
|
public Object sendSmsCode(@RequestParam("phone") String phone,@RequestParam(value = "type",required = false)String type) {
|
||||||
try {
|
try {
|
||||||
if (!PhoneUtil.checkPhone(phone)) {
|
if (!PhoneUtil.checkPhone(phone)) {
|
||||||
throw new IllegalArgumentException("手机号格式不正确");
|
throw new IllegalArgumentException("手机号格式不正确");
|
||||||
}
|
}
|
||||||
SmsCode smsCode = memberService.generateCode(phone);
|
Date date = new Date();
|
||||||
|
SmsCode smsCode = memberService.generateCode(phone,type,date);
|
||||||
return new CommonResult().success(smsCode);
|
return new CommonResult().success(smsCode);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package com.zscat.mallplus.config;
|
||||||
|
|
||||||
|
import org.apache.axis.client.Call;
|
||||||
|
import org.apache.axis.client.Service;
|
||||||
|
import org.apache.axis.encoding.XMLType;
|
||||||
|
|
||||||
|
import javax.xml.namespace.QName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author dimengzhe
|
||||||
|
* @Date 2023/2/22 21:38
|
||||||
|
* @Description
|
||||||
|
*/
|
||||||
|
public class SmsConfig {
|
||||||
|
|
||||||
|
static String msgSign="【汇融银链】";
|
||||||
|
public static String SendWaitWorkMsg(String mobile, String pwd,String msg) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
String urlname = "http://sdk1.mb345.com/ws/LinkWS.asmx";
|
||||||
|
String soapActionURI = "http://tempuri.org/BatchSend";
|
||||||
|
Service s = new Service();
|
||||||
|
Call call = (Call) s.createCall();
|
||||||
|
call.setTimeout(new Integer(5000));
|
||||||
|
call.setUseSOAPAction(true);
|
||||||
|
call.setSOAPActionURI(soapActionURI);
|
||||||
|
// wsdl中接口名称
|
||||||
|
call.setOperationName(new QName("http://tempuri.org/", "BatchSend"));
|
||||||
|
call.setTargetEndpointAddress(urlname);
|
||||||
|
call.addParameter(new QName("http://tempuri.org/", "CorpID"), XMLType.XSD_STRING,
|
||||||
|
javax.xml.rpc.ParameterMode.IN);
|
||||||
|
call.addParameter(new QName("http://tempuri.org/", "Pwd"), XMLType.XSD_STRING,
|
||||||
|
javax.xml.rpc.ParameterMode.IN);
|
||||||
|
call.addParameter(new QName("http://tempuri.org/", "Mobile"), XMLType.XSD_STRING,
|
||||||
|
javax.xml.rpc.ParameterMode.IN);
|
||||||
|
call.addParameter(new QName("http://tempuri.org/", "Content"), XMLType.XSD_STRING,
|
||||||
|
javax.xml.rpc.ParameterMode.IN);
|
||||||
|
call.addParameter(new QName("http://tempuri.org/", "Cell"), XMLType.XSD_STRING,
|
||||||
|
javax.xml.rpc.ParameterMode.IN);
|
||||||
|
call.addParameter(new QName("http://tempuri.org/", "SendTime"), XMLType.XSD_STRING,
|
||||||
|
javax.xml.rpc.ParameterMode.IN);
|
||||||
|
String[] fn01 = {"YXT011836", "yxt_hryl230223", mobile, msg+msgSign, "", ""};
|
||||||
|
String val = (String) call.invoke(fn01);
|
||||||
|
return val;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
return e.getMessage();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.zscat.mallplus.annotation.IgnoreAuth;
|
import com.zscat.mallplus.annotation.IgnoreAuth;
|
||||||
import com.zscat.mallplus.annotation.SysLog;
|
import com.zscat.mallplus.annotation.SysLog;
|
||||||
import com.zscat.mallplus.config.MallplusProperties;
|
import com.zscat.mallplus.config.MallplusProperties;
|
||||||
|
import com.zscat.mallplus.enums.SmsEnum;
|
||||||
import com.zscat.mallplus.exception.Server;
|
import com.zscat.mallplus.exception.Server;
|
||||||
import com.zscat.mallplus.oms.service.IOmsOrderService;
|
import com.zscat.mallplus.oms.service.IOmsOrderService;
|
||||||
import com.zscat.mallplus.oms.vo.HomeContentResult;
|
import com.zscat.mallplus.oms.vo.HomeContentResult;
|
||||||
@@ -35,6 +36,7 @@ import com.zscat.mallplus.vo.UmsMemberInfoDetail;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
@@ -338,8 +340,9 @@ public class SingelHomeController {
|
|||||||
@IgnoreAuth
|
@IgnoreAuth
|
||||||
@ApiOperation(value = "手机号 密码登录")
|
@ApiOperation(value = "手机号 密码登录")
|
||||||
@PostMapping(value = "/login")
|
@PostMapping(value = "/login")
|
||||||
public Object login(@RequestParam String phone,
|
public Object login(@RequestParam("phone") String phone,
|
||||||
@RequestParam String password) {
|
@RequestParam("password") String password,
|
||||||
|
@RequestParam(value = "type",required = false)String type) {
|
||||||
if (phone == null || "".equals(phone)) {
|
if (phone == null || "".equals(phone)) {
|
||||||
return new CommonResult().validateFailed("用户名或密码错误");
|
return new CommonResult().validateFailed("用户名或密码错误");
|
||||||
}
|
}
|
||||||
@@ -347,7 +350,6 @@ public class SingelHomeController {
|
|||||||
return new CommonResult().validateFailed("用户名或密码错误");
|
return new CommonResult().validateFailed("用户名或密码错误");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
|
||||||
Map<String, Object> token = memberService.login(phone, password);
|
Map<String, Object> token = memberService.login(phone, password);
|
||||||
if (token.get("token") == null) {
|
if (token.get("token") == null) {
|
||||||
log.info("用户名或密码错误");
|
log.info("用户名或密码错误");
|
||||||
@@ -441,12 +443,30 @@ public class SingelHomeController {
|
|||||||
@IgnoreAuth
|
@IgnoreAuth
|
||||||
@ApiOperation("获取验证码")
|
@ApiOperation("获取验证码")
|
||||||
@PostMapping(value = "/sms/codes")
|
@PostMapping(value = "/sms/codes")
|
||||||
public Object sendSmsCode(@RequestParam String phone) {
|
public Object sendSmsCode(@RequestParam("phone") String phone,@RequestParam("type")String type) {
|
||||||
try {
|
try {
|
||||||
if (!PhoneUtil.checkPhone(phone)) {
|
if (!PhoneUtil.checkPhone(phone)) {
|
||||||
throw new IllegalArgumentException("手机号格式不正确");
|
throw new IllegalArgumentException("手机号格式不正确");
|
||||||
}
|
}
|
||||||
SmsCode smsCode = memberService.generateCode(phone);
|
if(StringUtils.isBlank(type)){
|
||||||
|
return new CommonResult().failed("参数错误:type");
|
||||||
|
}
|
||||||
|
//缓存识别码
|
||||||
|
String redisKey = "";
|
||||||
|
if(SmsEnum.SendEnum.LOGIN.getCode().equals(type)){
|
||||||
|
redisKey = SmsEnum.SendEnum.LOGIN.getRedisKey();
|
||||||
|
}
|
||||||
|
Date date = new Date();
|
||||||
|
String codeRedis = redisService.get(redisKey + phone);
|
||||||
|
if (StringUtils.isNotEmpty(codeRedis)) {
|
||||||
|
//查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信
|
||||||
|
String sendTime = codeRedis.substring(4);
|
||||||
|
long diffSecond = (date.getTime() - Long.parseLong(sendTime)) / 1000;
|
||||||
|
if (diffSecond < 60) {
|
||||||
|
return new CommonResult().failed("请等待一分钟后再次重试!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SmsCode smsCode = memberService.generateCode(phone,type,date);
|
||||||
|
|
||||||
return new CommonResult().success(smsCode);
|
return new CommonResult().success(smsCode);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.zscat.mallplus.vo.AppletLoginnewParam;
|
|||||||
import com.zscat.mallplus.vo.SmsCode;
|
import com.zscat.mallplus.vo.SmsCode;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -90,7 +91,7 @@ public interface IUmsMemberService extends IService<UmsMember> {
|
|||||||
|
|
||||||
Object register(UmsMember umsMember);
|
Object register(UmsMember umsMember);
|
||||||
|
|
||||||
SmsCode generateCode(String phone);
|
SmsCode generateCode(String phone, String type, Date date);
|
||||||
|
|
||||||
Map<String, Object> loginByCode(String phone, String authCode);
|
Map<String, Object> loginByCode(String phone, String authCode);
|
||||||
|
|
||||||
|
|||||||
@@ -33,5 +33,14 @@ public interface RedisService {
|
|||||||
*/
|
*/
|
||||||
Long increment(String key, long delta);
|
Long increment(String key, long delta);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入缓存设置时效时间
|
||||||
|
* @param key
|
||||||
|
* @param value
|
||||||
|
* @param expireTime
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean set(final String key, Object value, Long expireTime);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,12 @@ package com.zscat.mallplus.ums.service.impl;
|
|||||||
|
|
||||||
import com.zscat.mallplus.ums.service.RedisService;
|
import com.zscat.mallplus.ums.service.RedisService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
import org.springframework.data.redis.core.ValueOperations;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,6 +20,9 @@ public class RedisServiceImpl implements RedisService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private StringRedisTemplate stringRedisTemplate;
|
private StringRedisTemplate stringRedisTemplate;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisTemplate redisTemplate;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void set(String key, String value) {
|
public void set(String key, String value) {
|
||||||
stringRedisTemplate.opsForValue().set(key, value);
|
stringRedisTemplate.opsForValue().set(key, value);
|
||||||
@@ -41,4 +47,18 @@ public class RedisServiceImpl implements RedisService {
|
|||||||
public Long increment(String key, long delta) {
|
public Long increment(String key, long delta) {
|
||||||
return stringRedisTemplate.opsForValue().increment(key, delta);
|
return stringRedisTemplate.opsForValue().increment(key, delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean set(String key, Object value, Long expireTime) {
|
||||||
|
boolean result = false;
|
||||||
|
try {
|
||||||
|
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
|
||||||
|
operations.set(key, value);
|
||||||
|
stringRedisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
|
||||||
|
result = true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
|
|||||||
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
|
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
|
||||||
import com.aliyuncs.exceptions.ClientException;
|
import com.aliyuncs.exceptions.ClientException;
|
||||||
import com.aliyuncs.http.MethodType;
|
import com.aliyuncs.http.MethodType;
|
||||||
|
import com.zscat.mallplus.config.SmsConfig;
|
||||||
import com.zscat.mallplus.ums.entity.Sms;
|
import com.zscat.mallplus.ums.entity.Sms;
|
||||||
import com.zscat.mallplus.ums.mapper.SmsDao;
|
import com.zscat.mallplus.ums.mapper.SmsDao;
|
||||||
import com.zscat.mallplus.ums.service.SmsService;
|
import com.zscat.mallplus.ums.service.SmsService;
|
||||||
@@ -82,11 +83,10 @@ public class SmsServiceImpl implements SmsService {
|
|||||||
}
|
}
|
||||||
// 测试时不需要开此 add by someday end
|
// 测试时不需要开此 add by someday end
|
||||||
update(sms);
|
update(sms);
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public void save(Sms sms, Map<String, String> params) {
|
public void save(Sms sms, Map<String, String> params) {
|
||||||
if (!CollectionUtils.isEmpty(params)) {
|
if (!CollectionUtils.isEmpty(params)) {
|
||||||
@@ -96,7 +96,8 @@ public class SmsServiceImpl implements SmsService {
|
|||||||
sms.setCreateTime(new Date());
|
sms.setCreateTime(new Date());
|
||||||
sms.setUpdateTime(sms.getCreateTime());
|
sms.setUpdateTime(sms.getCreateTime());
|
||||||
sms.setDay(sms.getCreateTime());
|
sms.setDay(sms.getCreateTime());
|
||||||
|
sms.setBizId(sms.getBizId());
|
||||||
|
sms.setMessage(sms.getMessage());
|
||||||
smsDao.save(sms);
|
smsDao.save(sms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.zscat.mallplus.config.MallplusProperties;
|
import com.zscat.mallplus.config.MallplusProperties;
|
||||||
|
import com.zscat.mallplus.config.SmsConfig;
|
||||||
import com.zscat.mallplus.enums.AllEnum;
|
import com.zscat.mallplus.enums.AllEnum;
|
||||||
|
import com.zscat.mallplus.enums.SmsEnum;
|
||||||
import com.zscat.mallplus.exception.ApiMallPlusException;
|
import com.zscat.mallplus.exception.ApiMallPlusException;
|
||||||
import com.zscat.mallplus.oms.mapper.OmsOrderMapper;
|
import com.zscat.mallplus.oms.mapper.OmsOrderMapper;
|
||||||
import com.zscat.mallplus.oms.vo.OrderStstic;
|
import com.zscat.mallplus.oms.vo.OrderStstic;
|
||||||
@@ -24,6 +26,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.sf.json.JSONObject;
|
import net.sf.json.JSONObject;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.http.client.ResponseHandler;
|
import org.apache.http.client.ResponseHandler;
|
||||||
import org.apache.http.client.methods.HttpGet;
|
import org.apache.http.client.methods.HttpGet;
|
||||||
@@ -44,7 +47,6 @@ import org.springframework.security.core.userdetails.UserDetailsService;
|
|||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import org.springframework.web.context.request.RequestAttributes;
|
import org.springframework.web.context.request.RequestAttributes;
|
||||||
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||||
@@ -412,25 +414,19 @@ public class UmsMemberServiceImpl extends ServiceImpl<UmsMemberMapper, UmsMember
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SmsCode generateCode(String phone) {
|
public SmsCode generateCode(String phone,String type,Date date) {
|
||||||
//生成流水号
|
//生成流水号
|
||||||
String uuid = UUID.randomUUID().toString();
|
String uuid = UUID.randomUUID().toString();
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
sb.append(random.nextInt(10));
|
sb.append(random.nextInt(10));
|
||||||
}
|
}
|
||||||
Map<String, String> map = new HashMap<>(2);
|
Map<String, String> map = new HashMap<>(2);
|
||||||
map.put("code", sb.toString());
|
map.put("code", sb.toString());
|
||||||
map.put("phone", phone);
|
map.put("phone", phone);
|
||||||
|
|
||||||
//短信验证码缓存15分钟,
|
|
||||||
redisService.set(REDIS_KEY_PREFIX_AUTH_CODE + phone, sb.toString());
|
|
||||||
redisService.expire(REDIS_KEY_PREFIX_AUTH_CODE + phone, expireMinute * 60);
|
|
||||||
|
|
||||||
|
|
||||||
//存储sys_sms
|
//存储sys_sms
|
||||||
saveSmsAndSendCode(phone, sb.toString());
|
saveSmsAndSendCode(phone, sb.toString(),type,date);
|
||||||
SmsCode smsCode = new SmsCode();
|
SmsCode smsCode = new SmsCode();
|
||||||
smsCode.setKey(uuid);
|
smsCode.setKey(uuid);
|
||||||
return smsCode;
|
return smsCode;
|
||||||
@@ -442,33 +438,36 @@ public class UmsMemberServiceImpl extends ServiceImpl<UmsMemberMapper, UmsMember
|
|||||||
* @param phone
|
* @param phone
|
||||||
* @param code
|
* @param code
|
||||||
*/
|
*/
|
||||||
private void saveSmsAndSendCode(String phone, String code) {
|
private void saveSmsAndSendCode(String phone, String code, String type, Date date) {
|
||||||
checkTodaySendCount(phone);
|
|
||||||
|
|
||||||
Sms sms = new Sms();
|
Sms sms = new Sms();
|
||||||
sms.setPhone(phone);
|
sms.setPhone(phone);
|
||||||
sms.setParams(code);
|
sms.setParams(code);
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put("code", code);
|
params.put("code", code);
|
||||||
|
String content = "";
|
||||||
|
String redisKey = "";
|
||||||
|
if (SmsEnum.SendEnum.LOGIN.getCode().equals(type)) {
|
||||||
|
content = "验证码:" + code + ",用于登录App,有效期5分钟,如非本人操作,请忽略该短信。";
|
||||||
|
redisKey = SmsEnum.SendEnum.LOGIN.getRedisKey();
|
||||||
|
}
|
||||||
|
String result = SmsConfig.SendWaitWorkMsg(phone, code, content);
|
||||||
|
if ("1".equals(result)) {
|
||||||
|
//返回的信息
|
||||||
|
String resultMsg = SmsEnum.SmsReturnEnum.getValueByKey(result);
|
||||||
|
sms.setCode(sms.getCode());
|
||||||
|
sms.setBizId(result);//返回的code
|
||||||
|
sms.setMessage(resultMsg);
|
||||||
|
redisService.set(redisKey + phone, code + date.getTime(), SmsEnum.APP_LOGIN_CODE_TIME_LIMIT);
|
||||||
|
log.info("发送短信结果:code:{},message:{}, 1,发送成功");
|
||||||
|
}else{
|
||||||
|
//返回的信息
|
||||||
|
String resultMsg = SmsEnum.SmsReturnEnum.getValueByKey(result);
|
||||||
|
sms.setBizId(result);//返回的code
|
||||||
|
//返回的信息
|
||||||
|
sms.setMessage(resultMsg);
|
||||||
|
LOGGER.error("发送短信失败:{}", resultMsg);
|
||||||
|
}
|
||||||
smsService.save(sms, params);
|
smsService.save(sms, params);
|
||||||
|
|
||||||
//异步调用阿里短信接口发送短信
|
|
||||||
CompletableFuture.runAsync(() -> {
|
|
||||||
try {
|
|
||||||
smsService.sendSmsMsg(sms);
|
|
||||||
} catch (Exception e) {
|
|
||||||
params.put("err", e.getMessage());
|
|
||||||
smsService.save(sms, params);
|
|
||||||
e.printStackTrace();
|
|
||||||
LOGGER.error("发送短信失败:{}", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// 当天发送验证码次数+1
|
|
||||||
String countKey = countKey(phone);
|
|
||||||
redisService.increment(countKey, 1L);
|
|
||||||
redisService.expire(countKey, 1 * 3600 * 24);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user