Commit d8f782c6 authored by huangjie's avatar huangjie

Merge branch 'zuhuduan' of http://192.168.60.201/root/dsk-operate-sys into zuhuduan

parents c7c07cb1 0da9796c
...@@ -10,6 +10,9 @@ import com.dsk.common.constant.Constants; ...@@ -10,6 +10,9 @@ import com.dsk.common.constant.Constants;
import com.dsk.common.constant.GlobalConstants; import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.enums.CaptchaType; import com.dsk.common.enums.CaptchaType;
import com.dsk.common.exception.user.CaptchaExpireException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.MessageUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.email.MailUtils; import com.dsk.common.utils.email.MailUtils;
import com.dsk.common.utils.redis.RedisUtils; import com.dsk.common.utils.redis.RedisUtils;
...@@ -17,6 +20,8 @@ import com.dsk.common.utils.reflect.ReflectUtils; ...@@ -17,6 +20,8 @@ import com.dsk.common.utils.reflect.ReflectUtils;
import com.dsk.common.utils.spring.SpringUtils; import com.dsk.common.utils.spring.SpringUtils;
import com.dsk.framework.config.properties.CaptchaProperties; import com.dsk.framework.config.properties.CaptchaProperties;
import com.dsk.framework.config.properties.MailProperties; import com.dsk.framework.config.properties.MailProperties;
import com.dsk.system.domain.SysUser;
import com.dsk.system.mapper.SysUserMapper;
import com.dsk.system.service.ISysConfigService; import com.dsk.system.service.ISysConfigService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -29,6 +34,7 @@ import org.springframework.expression.ExpressionParser; ...@@ -29,6 +34,7 @@ import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
...@@ -52,16 +58,17 @@ public class CaptchaController { ...@@ -52,16 +58,17 @@ public class CaptchaController {
private final CaptchaProperties captchaProperties; private final CaptchaProperties captchaProperties;
private final ISysConfigService configService; private final ISysConfigService configService;
private final MailProperties mailProperties; private final MailProperties mailProperties;
private final SysUserMapper userMapper;
/** /**
* 短信验证码 * 发送短信验证码
* *
* @param phonenumber 用户手机号 * @param phonenumber 用户手机号
*/ */
@GetMapping("/captchaSms") @GetMapping("/captchaSms")
public R<Void> smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) { public R<Void> smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber; String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber;
String code = RandomUtil.randomNumbers(4); String code = RandomUtil.randomNumbers(6);
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
// 验证码模板id 自行处理 (查数据库或写死均可) // 验证码模板id 自行处理 (查数据库或写死均可)
String templateId = ""; String templateId = "";
...@@ -77,7 +84,39 @@ public class CaptchaController { ...@@ -77,7 +84,39 @@ public class CaptchaController {
} }
/** /**
* 邮箱验证码 * 开发需要,临时发送短信验证码
*/
@GetMapping("/getTempSmsCode")
public R<Void> getTempSmsCode() {
SysUser sysUser = userMapper.selectUserById(LoginHelper.getUserId());
String key = GlobalConstants.CAPTCHA_CODE_KEY + sysUser.getPhonenumber();
String code = RandomUtil.randomNumbers(6);
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
return R.ok("验证码:" + code);
}
/**
* 开发需要,临时校验短信验证码
*
* @param smsCode 验证码
*/
@PostMapping("/checkSmsCode")
public R<Boolean> checkSmsCode(String smsCode) {
SysUser sysUser = userMapper.selectUserById(LoginHelper.getUserId());
String key = GlobalConstants.CAPTCHA_CODE_KEY + sysUser.getPhonenumber();
String code = RedisUtils.getCacheObject(key);
if (StringUtils.isBlank(code)) {
throw new CaptchaExpireException();
}
if (code.equals(smsCode)) {
RedisUtils.deleteObject(key);
return R.ok("校验成功");
}
return R.fail("验证码错误");
}
/**
* 发送邮箱验证码
* *
* @param email 邮箱 * @param email 邮箱
*/ */
...@@ -126,7 +165,7 @@ public class CaptchaController { ...@@ -126,7 +165,7 @@ public class CaptchaController {
Expression exp = parser.parseExpression(StringUtils.remove(code, "=")); Expression exp = parser.parseExpression(StringUtils.remove(code, "="));
code = exp.getValue(String.class); code = exp.getValue(String.class);
} }
log.info("图形验证码:"+code); log.info("图形验证码:" + code);
RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
ajax.put("uuid", uuid); ajax.put("uuid", uuid);
ajax.put("img", captcha.getImageBase64()); ajax.put("img", captcha.getImageBase64());
......
...@@ -13,6 +13,7 @@ import com.dsk.common.core.validate.AddGroup; ...@@ -13,6 +13,7 @@ import com.dsk.common.core.validate.AddGroup;
import com.dsk.common.core.validate.EditGroup; import com.dsk.common.core.validate.EditGroup;
import com.dsk.common.enums.BusinessType; import com.dsk.common.enums.BusinessType;
import com.dsk.system.domain.bo.SysTenantPackageBo; import com.dsk.system.domain.bo.SysTenantPackageBo;
import com.dsk.system.domain.vo.SysTenantPackageSelectVo;
import com.dsk.system.domain.vo.SysTenantPackageVo; import com.dsk.system.domain.vo.SysTenantPackageVo;
import com.dsk.system.service.ISysTenantPackageService; import com.dsk.system.service.ISysTenantPackageService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -56,7 +57,7 @@ public class SysTenantPackageController extends BaseController { ...@@ -56,7 +57,7 @@ public class SysTenantPackageController extends BaseController {
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:tenantPackage:list") @SaCheckPermission("system:tenantPackage:list")
@GetMapping("/selectList") @GetMapping("/selectList")
public R<List<SysTenantPackageVo>> selectList() { public R<List<SysTenantPackageSelectVo>> selectList() {
return R.ok(tenantPackageService.selectList()); return R.ok(tenantPackageService.selectList());
} }
......
...@@ -49,9 +49,9 @@ spring: ...@@ -49,9 +49,9 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://139.9.157.49:3306/dsk_operate?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://47.104.91.229:3306/dsk_operate?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: dev username: dev
password: 8AXjjCHZ666! password: zfTFIJjaN#6xB83r
# 从库数据源 # 从库数据源
# slave: # slave:
# lazy: true # lazy: true
...@@ -185,3 +185,14 @@ sms: ...@@ -185,3 +185,14 @@ sms:
sdkAppId: appid sdkAppId: appid
#地域信息默认为 ap-guangzhou 如无特殊改变可不用设置 #地域信息默认为 ap-guangzhou 如无特殊改变可不用设置
territory: ap-guangzhou territory: ap-guangzhou
dsk:
open:
endPoint: 120.27.13.145:8865
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
protocol: http
# endPoint: openapi.jiansheku.com
# accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# protocol: https
...@@ -187,3 +187,14 @@ sms: ...@@ -187,3 +187,14 @@ sms:
sdkAppId: appid sdkAppId: appid
#地域信息默认为 ap-guangzhou 如无特殊改变可不用设置 #地域信息默认为 ap-guangzhou 如无特殊改变可不用设置
territory: ap-guangzhou territory: ap-guangzhou
dsk:
open:
# endPoint: 120.27.13.145:8865
# accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# protocol: http
endPoint: openapi.jiansheku.com
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
protocol: https
...@@ -185,3 +185,14 @@ sms: ...@@ -185,3 +185,14 @@ sms:
sdkAppId: appid sdkAppId: appid
#地域信息默认为 ap-guangzhou 如无特殊改变可不用设置 #地域信息默认为 ap-guangzhou 如无特殊改变可不用设置
territory: ap-guangzhou territory: ap-guangzhou
dsk:
open:
endPoint: 120.27.13.145:8865
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
protocol: http
# endPoint: openapi.jiansheku.com
# accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# protocol: https
#错误消息 #\u9519\u8BEF\u6D88\u606F
not.null=* Required fill in not.null=* Required fill in
user.jcaptcha.error=Captcha error user.jcaptcha.error=Captcha error
user.jcaptcha.expire=Captcha invalid user.jcaptcha.expire=Captcha invalid
...@@ -6,9 +6,9 @@ user.not.exists=Sorry, your account: {0} does not exist ...@@ -6,9 +6,9 @@ user.not.exists=Sorry, your account: {0} does not exist
user.password.not.match=User does not exist/Password error user.password.not.match=User does not exist/Password error
user.password.retry.limit.count=Password input error {0} times user.password.retry.limit.count=Password input error {0} times