pom.xml
@@ -36,12 +36,6 @@ <jasypt.version>3.0.3</jasypt.version> <beetl.version>2.9.10</beetl.version> <antlr.version>4.8</antlr.version> <minio.version>8.2.2</minio.version> <qiniu.version>7.8.0</qiniu.version> <aliyun.oss.version>3.13.0</aliyun.oss.version> <qcloud.cos.version>5.6.45</qcloud.cos.version> <tencentcloud.version>3.1.260</tencentcloud.version> <activiti.version>5.22.0</activiti.version> <!-- 测试 --> <extentreports.testng.version>1.2.2</extentreports.testng.version> <selenuim.version>4.0.0-beta-4</selenuim.version> xboot-admin/pom.xml
@@ -40,22 +40,7 @@ </dependency> <dependency> <groupId>cn.exrick</groupId> <artifactId>xboot-activiti</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>cn.exrick</groupId> <artifactId>xboot-social</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>cn.exrick</groupId> <artifactId>xboot-autochat</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>cn.exrick</groupId> <artifactId>xboot-app</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/AliSms.java
@@ -1,77 +1,77 @@ package cn.exrick.xboot.core.common.sms; import cn.exrick.xboot.core.common.constant.SettingConstant; import cn.exrick.xboot.core.common.exception.XbootException; import cn.exrick.xboot.core.entity.Setting; import cn.exrick.xboot.core.service.SettingService; import cn.exrick.xboot.core.vo.SmsSetting; import cn.hutool.core.util.StrUtil; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author exrick */ @Slf4j @Component public class AliSms implements Sms { @Autowired private SettingService settingService; @Override public SmsSetting getSmsSetting() { Setting setting = settingService.get(SettingConstant.ALI_SMS); if (setting == null || StrUtil.isBlank(setting.getValue())) { throw new XbootException("您还未配置阿里云短信服务"); } return new Gson().fromJson(setting.getValue(), SmsSetting.class); } @Override public void sendSms(String mobile, String params, String templateCode) { SmsSetting s = getSmsSetting(); DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", s.getAccessKey(), s.getSecretKey()); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain("dysmsapi.aliyuncs.com"); request.setSysVersion("2017-05-25"); request.setSysAction("SendSms"); request.putQueryParameter("RegionId", "cn-hangzhou"); // 支持对多个手机号码发送短信,手机号码之间以英文逗号(,)分隔,上限为1000个手机号码 request.putQueryParameter("PhoneNumbers", mobile); request.putQueryParameter("SignName", s.getSignName()); request.putQueryParameter("TemplateCode", templateCode); request.putQueryParameter("TemplateParam", params); CommonResponse response; try { response = client.getCommonResponse(request); } catch (ClientException e) { log.error(e.getMessage()); throw new XbootException("请求发送短信验证码失败," + e.getErrMsg()); } JsonObject result = JsonParser.parseString(response.getData()).getAsJsonObject(); String code = result.get("Code").getAsString(); String message = result.get("Message").getAsString(); if (!"OK".equals(code) && !"OK".equals(message)) { throw new XbootException("请求发送验证码失败," + message); } } } //package cn.exrick.xboot.core.common.sms; // //import cn.exrick.xboot.core.common.constant.SettingConstant; //import cn.exrick.xboot.core.common.exception.XbootException; //import cn.exrick.xboot.core.entity.Setting; //import cn.exrick.xboot.core.service.SettingService; //import cn.exrick.xboot.core.vo.SmsSetting; //import cn.hutool.core.util.StrUtil; //import com.aliyuncs.CommonRequest; //import com.aliyuncs.CommonResponse; //import com.aliyuncs.DefaultAcsClient; //import com.aliyuncs.IAcsClient; //import com.aliyuncs.exceptions.ClientException; //import com.aliyuncs.http.MethodType; //import com.aliyuncs.profile.DefaultProfile; //import com.google.gson.Gson; //import com.google.gson.JsonObject; //import com.google.gson.JsonParser; //import lombok.extern.slf4j.Slf4j; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.stereotype.Component; // ///** // * @author exrick // */ //@Slf4j //@Component //public class AliSms implements Sms { // // @Autowired // private SettingService settingService; // // @Override // public SmsSetting getSmsSetting() { // // Setting setting = settingService.get(SettingConstant.ALI_SMS); // if (setting == null || StrUtil.isBlank(setting.getValue())) { // throw new XbootException("您还未配置阿里云短信服务"); // } // return new Gson().fromJson(setting.getValue(), SmsSetting.class); // } // // @Override // public void sendSms(String mobile, String params, String templateCode) { // // SmsSetting s = getSmsSetting(); // // DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", s.getAccessKey(), s.getSecretKey()); // IAcsClient client = new DefaultAcsClient(profile); // // CommonRequest request = new CommonRequest(); // request.setSysMethod(MethodType.POST); // request.setSysDomain("dysmsapi.aliyuncs.com"); // request.setSysVersion("2017-05-25"); // request.setSysAction("SendSms"); // request.putQueryParameter("RegionId", "cn-hangzhou"); // // 支持对多个手机号码发送短信,手机号码之间以英文逗号(,)分隔,上限为1000个手机号码 // request.putQueryParameter("PhoneNumbers", mobile); // request.putQueryParameter("SignName", s.getSignName()); // request.putQueryParameter("TemplateCode", templateCode); // request.putQueryParameter("TemplateParam", params); // // CommonResponse response; // try { // response = client.getCommonResponse(request); // } catch (ClientException e) { // log.error(e.getMessage()); // throw new XbootException("请求发送短信验证码失败," + e.getErrMsg()); // } // JsonObject result = JsonParser.parseString(response.getData()).getAsJsonObject(); // String code = result.get("Code").getAsString(); // String message = result.get("Message").getAsString(); // if (!"OK".equals(code) && !"OK".equals(message)) { // throw new XbootException("请求发送验证码失败," + message); // } // } //} xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsFactory.java
@@ -1,42 +1,42 @@ package cn.exrick.xboot.core.common.sms; import cn.exrick.xboot.core.common.constant.SettingConstant; import cn.exrick.xboot.core.common.exception.XbootException; import cn.exrick.xboot.core.entity.Setting; import cn.exrick.xboot.core.service.SettingService; import cn.hutool.core.util.StrUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 工厂模式 * @author Exrick */ @Component public class SmsFactory { @Autowired private SettingService settingService; @Autowired private AliSms aliSms; @Autowired private TencentSms tencentSms; public Sms getSms() { Setting setting = settingService.get(SettingConstant.SMS_USED); if (setting == null || StrUtil.isBlank(setting.getValue())) { throw new XbootException("您还未配置OSS存储服务"); } String type = setting.getValue(); if (type.equals(SettingConstant.ALI_SMS)) { return aliSms; } else if (type.equals(SettingConstant.TENCENT_SMS)) { return tencentSms; } else { throw new XbootException("暂不支持该存储配置,请检查配置"); } } } //package cn.exrick.xboot.core.common.sms; // //import cn.exrick.xboot.core.common.constant.SettingConstant; //import cn.exrick.xboot.core.common.exception.XbootException; //import cn.exrick.xboot.core.entity.Setting; //import cn.exrick.xboot.core.service.SettingService; //import cn.hutool.core.util.StrUtil; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.stereotype.Component; // ///** // * 工厂模式 // * @author Exrick // */ //@Component //public class SmsFactory { // // @Autowired // private SettingService settingService; // // @Autowired // private AliSms aliSms; // // @Autowired // private TencentSms tencentSms; // // public Sms getSms() { // // Setting setting = settingService.get(SettingConstant.SMS_USED); // if (setting == null || StrUtil.isBlank(setting.getValue())) { // throw new XbootException("您还未配置OSS存储服务"); // } // String type = setting.getValue(); // if (type.equals(SettingConstant.ALI_SMS)) { // return aliSms; // } else if (type.equals(SettingConstant.TENCENT_SMS)) { // return tencentSms; // } else { // throw new XbootException("暂不支持该存储配置,请检查配置"); // } // } //} xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsUtil.java
@@ -6,7 +6,6 @@ import cn.exrick.xboot.core.service.SettingService; import cn.exrick.xboot.core.vo.SmsSetting; import cn.hutool.core.util.StrUtil; import com.aliyuncs.exceptions.ClientException; import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -21,9 +20,6 @@ @Autowired private SettingService settingService; @Autowired private SmsFactory smsFactory; public String getSmsUsed() { @@ -93,7 +89,6 @@ * @param code * @param type 0通用模版 1注册 2登录 3修改手机 4修改密码 5重置密码 6工作流模版 * @return * @throws ClientException */ public void sendCode(String mobile, String code, Integer type) { @@ -106,7 +101,6 @@ * @param code * @param templateCode * @return * @throws ClientException */ public void sendCode(String mobile, String code, String templateCode) { @@ -118,7 +112,6 @@ * @param mobile * @param content * @return * @throws ClientException */ public void sendActMessage(String mobile, String content) { @@ -136,6 +129,6 @@ */ public void sendSms(String mobile, String params, String templateCode) { smsFactory.getSms().sendSms(mobile, params, templateCode); //smsFactory.getSms().sendSms(mobile, params, templateCode); } } xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/TencentSms.java
@@ -1,102 +1,102 @@ package cn.exrick.xboot.core.common.sms; import cn.exrick.xboot.core.common.constant.SettingConstant; import cn.exrick.xboot.core.common.exception.XbootException; import cn.exrick.xboot.core.common.utils.NameUtil; import cn.exrick.xboot.core.entity.Setting; import cn.exrick.xboot.core.service.SettingService; import cn.exrick.xboot.core.vo.SmsSetting; import cn.hutool.core.util.StrUtil; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.sms.v20190711.SmsClient; import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest; import com.tencentcloudapi.sms.v20190711.models.SendStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Map; import java.util.Set; /** * @author exrick */ @Slf4j @Component public class TencentSms implements Sms { @Autowired private SettingService settingService; @Override public SmsSetting getSmsSetting() { Setting setting = settingService.get(SettingConstant.TENCENT_SMS); if (setting == null || StrUtil.isBlank(setting.getValue())) { throw new XbootException("您还未配置腾讯云短信服务"); } return new Gson().fromJson(setting.getValue(), SmsSetting.class); } @Override public void sendSms(String mobile, String params, String templateCode) { SmsSetting s = getSmsSetting(); try { Credential cred = new Credential(s.getAccessKey(), s.getSecretKey()); SmsClient client = new SmsClient(cred, ""); SendSmsRequest req = new SendSmsRequest(); // 短信应用 ID: 在 [短信控制台-应用管理] 添加应用后生成的实际 SDKAppID,例如1400006666 req.setSmsSdkAppid(s.getAppId()); // 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息 req.setSign(s.getSignName()); // 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID req.setTemplateID(templateCode); /* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号] * 例如+8613800000000, 其中前面有一个+号 ,86为国家码,13800000000为手机号,最多不要超过200个手机号*/ String[] phoneNumbers = {"+86" + mobile}; req.setPhoneNumberSet(phoneNumbers); /* 模板参数: 若无模板参数,则设置为空*/ req.setTemplateParamSet(getParams(params)); SendStatus sendStatus = client.SendSms(req).getSendStatusSet()[0]; if (!"Ok".equals(sendStatus.getCode())) { throw new XbootException("请求发送验证码失败," + sendStatus.getMessage()); } } catch (TencentCloudSDKException e) { throw new XbootException("请求发送验证码失败,错误码:" + e.getErrorCode()); } } public static String[] getPhoneNumbers(String mobile) { String[] phoneNumbers = mobile.split(","); for (int i = 0; i < phoneNumbers.length; i++) { String number = phoneNumbers[i]; if (NameUtil.mobile(number)) { phoneNumbers[i] = "+86" + number; } else { phoneNumbers[i] = "+" + number; } } return phoneNumbers; } public static String[] getParams(String params) { Set<Map.Entry<String, JsonElement>> entries = JsonParser.parseString(params).getAsJsonObject().entrySet(); String[] templateParams = new String[entries.size()]; int i = 0; for (Map.Entry<String, JsonElement> entry : entries) { String value = entry.getValue().getAsString(); templateParams[i] = value; i++; } return templateParams; } } //package cn.exrick.xboot.core.common.sms; // //import cn.exrick.xboot.core.common.constant.SettingConstant; //import cn.exrick.xboot.core.common.exception.XbootException; //import cn.exrick.xboot.core.common.utils.NameUtil; //import cn.exrick.xboot.core.entity.Setting; //import cn.exrick.xboot.core.service.SettingService; //import cn.exrick.xboot.core.vo.SmsSetting; //import cn.hutool.core.util.StrUtil; //import com.google.gson.Gson; //import com.google.gson.JsonElement; //import com.google.gson.JsonParser; //import com.tencentcloudapi.common.Credential; //import com.tencentcloudapi.common.exception.TencentCloudSDKException; //import com.tencentcloudapi.sms.v20190711.SmsClient; //import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest; //import com.tencentcloudapi.sms.v20190711.models.SendStatus; //import lombok.extern.slf4j.Slf4j; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.stereotype.Component; // //import java.util.Map; //import java.util.Set; // ///** // * @author exrick // */ //@Slf4j //@Component //public class TencentSms implements Sms { // // @Autowired // private SettingService settingService; // // @Override // public SmsSetting getSmsSetting() { // // Setting setting = settingService.get(SettingConstant.TENCENT_SMS); // if (setting == null || StrUtil.isBlank(setting.getValue())) { // throw new XbootException("您还未配置腾讯云短信服务"); // } // return new Gson().fromJson(setting.getValue(), SmsSetting.class); // } // // @Override // public void sendSms(String mobile, String params, String templateCode) { // // SmsSetting s = getSmsSetting(); // try { // Credential cred = new Credential(s.getAccessKey(), s.getSecretKey()); // SmsClient client = new SmsClient(cred, ""); // SendSmsRequest req = new SendSmsRequest(); // // // 短信应用 ID: 在 [短信控制台-应用管理] 添加应用后生成的实际 SDKAppID,例如1400006666 // req.setSmsSdkAppid(s.getAppId()); // // 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息 // req.setSign(s.getSignName()); // // 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID // req.setTemplateID(templateCode); // /* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号] // * 例如+8613800000000, 其中前面有一个+号 ,86为国家码,13800000000为手机号,最多不要超过200个手机号*/ // String[] phoneNumbers = {"+86" + mobile}; // req.setPhoneNumberSet(phoneNumbers); // /* 模板参数: 若无模板参数,则设置为空*/ // req.setTemplateParamSet(getParams(params)); // // SendStatus sendStatus = client.SendSms(req).getSendStatusSet()[0]; // if (!"Ok".equals(sendStatus.getCode())) { // throw new XbootException("请求发送验证码失败," + sendStatus.getMessage()); // } // } catch (TencentCloudSDKException e) { // throw new XbootException("请求发送验证码失败,错误码:" + e.getErrorCode()); // } // } // // public static String[] getPhoneNumbers(String mobile) { // // String[] phoneNumbers = mobile.split(","); // for (int i = 0; i < phoneNumbers.length; i++) { // String number = phoneNumbers[i]; // if (NameUtil.mobile(number)) { // phoneNumbers[i] = "+86" + number; // } else { // phoneNumbers[i] = "+" + number; // } // } // return phoneNumbers; // } // // public static String[] getParams(String params) { // // Set<Map.Entry<String, JsonElement>> entries = JsonParser.parseString(params).getAsJsonObject().entrySet(); // String[] templateParams = new String[entries.size()]; // int i = 0; // for (Map.Entry<String, JsonElement> entry : entries) { // String value = entry.getValue().getAsString(); // templateParams[i] = value; // i++; // } // return templateParams; // } //} xboot-modules/pom.xml
@@ -13,15 +13,12 @@ <packaging>pom</packaging> <modules> <module>xboot-base</module> <module>xboot-activiti</module> <module>xboot-social</module> <module>xboot-generator</module> <module>xboot-file</module> <module>xboot-quartz</module> <module>xboot-open</module> <module>xboot-your</module> <module>xboot-app</module> <module>xboot-autochat</module> </modules> <dependencies> xboot-modules/xboot-base/src/main/java/cn/exrick/xboot/base/controller/common/CaptchaController.java
@@ -1,139 +1,139 @@ package cn.exrick.xboot.base.controller.common; import cn.exrick.xboot.core.common.annotation.RateLimiter; import cn.exrick.xboot.core.common.constant.CommonConstant; import cn.exrick.xboot.core.common.redis.RedisTemplateHelper; import cn.exrick.xboot.core.common.sms.SmsUtil; import cn.exrick.xboot.core.common.utils.CommonUtil; import cn.exrick.xboot.core.common.utils.CreateVerifyCode; import cn.exrick.xboot.core.common.utils.IpInfoUtil; import cn.exrick.xboot.core.common.utils.ResultUtil; import cn.exrick.xboot.core.common.vo.Result; import cn.exrick.xboot.core.service.SettingService; import cn.exrick.xboot.core.service.UserService; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.concurrent.TimeUnit; /** * @author Exrickx */ @Api(tags = "验证码接口") @RequestMapping("/xboot/common/captcha") @RestController @Transactional @Slf4j public class CaptchaController { @Autowired private SmsUtil smsUtil; @Autowired private RedisTemplateHelper redisTemplate; @Autowired private IpInfoUtil ipInfoUtil; @Autowired private UserService userService; @Autowired private SettingService settingService; @RequestMapping(value = "/init", method = RequestMethod.GET) @ApiOperation(value = "初始化验证码") public Result<Object> initCaptcha() { String captchaId = IdUtil.simpleUUID(); String code = new CreateVerifyCode().randomStr(4); // 缓存验证码 redisTemplate.set(captchaId, code, 2L, TimeUnit.MINUTES); return ResultUtil.data(captchaId); } @RequestMapping(value = "/draw/{captchaId}", method = RequestMethod.GET) @ApiOperation(value = "根据验证码ID获取图片") public void drawCaptcha(@PathVariable("captchaId") String captchaId, HttpServletResponse response) throws IOException { // 得到验证码 生成指定验证码 String code = redisTemplate.get(captchaId); CreateVerifyCode vCode = new CreateVerifyCode(116, 36, 4, 10, code); response.setContentType("image/png"); vCode.write(response.getOutputStream()); } @RequestMapping(value = "/sendRegistSms/{mobile}", method = RequestMethod.GET) @ApiOperation(value = "发送注册短信验证码") public Result<Object> sendRegistSmsCode(@PathVariable String mobile, HttpServletRequest request) { return sendSms(mobile, 2, 0, request); } @RequestMapping(value = "/sendLoginSms/{mobile}", method = RequestMethod.GET) @ApiOperation(value = "发送登录短信验证码") @RateLimiter(name="sendLoginSms", rate = 1, ipLimit = true) public Result<Object> sendLoginSmsCode(@PathVariable String mobile, HttpServletRequest request) { return sendSms(mobile, 1, 0, request); } @RequestMapping(value = "/sendResetSms/{mobile}", method = RequestMethod.GET) @ApiOperation(value = "发送重置密码短信验证码") public Result<Object> sendResetSmsCode(@PathVariable String mobile, HttpServletRequest request) { return sendSms(mobile, 1, 5, request); } @RequestMapping(value = "/sendEditMobileSms/{mobile}", method = RequestMethod.GET) @ApiOperation(value = "发送修改手机短信验证码") public Result<Object> sendEditMobileSmsCode(@PathVariable String mobile, HttpServletRequest request) { if (userService.findByMobile(mobile) != null) { return ResultUtil.error("该手机号已绑定账户"); } return sendSms(mobile, 0, 0, request); } /** * @param mobile 手机号 * @param range 发送范围 0发送给所有手机号 1只发送给注册手机 2只发送给未注册手机 * @param templateType 0通用模版 1注册 2登录 3修改手机 4修改密码 5重置密码 6工作流模版 */ public Result<Object> sendSms(String mobile, Integer range, Integer templateType, HttpServletRequest request) { if (range == 1 && userService.findByMobile(mobile) == null) { return ResultUtil.error("手机号未注册"); } else if (range == 2 && userService.findByMobile(mobile) != null) { return ResultUtil.error("手机号已注册"); } // IP限流 1分钟限1个请求 String key = "sendSms:" + ipInfoUtil.getIpAddr(request); String value = redisTemplate.get(key); if (StrUtil.isNotBlank(value)) { return ResultUtil.error("您发送的太频繁啦,请稍后再试"); } // 生成6位数验证码 String code = CommonUtil.getRandomNum(); // 缓存验证码 redisTemplate.set(CommonConstant.PRE_SMS + mobile, code, 5L, TimeUnit.MINUTES); // 发送验证码 smsUtil.sendCode(mobile, code, templateType); // 请求成功 标记限流 redisTemplate.set(key, "sended", 1L, TimeUnit.MINUTES); return ResultUtil.success("发送短信验证码成功"); } } //package cn.exrick.xboot.base.controller.common; // //import cn.exrick.xboot.core.common.annotation.RateLimiter; //import cn.exrick.xboot.core.common.constant.CommonConstant; //import cn.exrick.xboot.core.common.redis.RedisTemplateHelper; //import cn.exrick.xboot.core.common.sms.SmsUtil; //import cn.exrick.xboot.core.common.utils.CommonUtil; //import cn.exrick.xboot.core.common.utils.CreateVerifyCode; //import cn.exrick.xboot.core.common.utils.IpInfoUtil; //import cn.exrick.xboot.core.common.utils.ResultUtil; //import cn.exrick.xboot.core.common.vo.Result; //import cn.exrick.xboot.core.service.SettingService; //import cn.exrick.xboot.core.service.UserService; //import cn.hutool.core.util.IdUtil; //import cn.hutool.core.util.StrUtil; //import io.swagger.annotations.Api; //import io.swagger.annotations.ApiOperation; //import lombok.extern.slf4j.Slf4j; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.transaction.annotation.Transactional; //import org.springframework.web.bind.annotation.PathVariable; //import org.springframework.web.bind.annotation.RequestMapping; //import org.springframework.web.bind.annotation.RequestMethod; //import org.springframework.web.bind.annotation.RestController; // //import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletResponse; //import java.io.IOException; //import java.util.concurrent.TimeUnit; // ///** // * @author Exrickx // */ //@Api(tags = "验证码接口") //@RequestMapping("/xboot/common/captcha") //@RestController //@Transactional //@Slf4j //public class CaptchaController { // // @Autowired // private SmsUtil smsUtil; // // @Autowired // private RedisTemplateHelper redisTemplate; // // @Autowired // private IpInfoUtil ipInfoUtil; // // @Autowired // private UserService userService; // // @Autowired // private SettingService settingService; // // @RequestMapping(value = "/init", method = RequestMethod.GET) // @ApiOperation(value = "初始化验证码") // public Result<Object> initCaptcha() { // // String captchaId = IdUtil.simpleUUID(); // String code = new CreateVerifyCode().randomStr(4); // // 缓存验证码 // redisTemplate.set(captchaId, code, 2L, TimeUnit.MINUTES); // return ResultUtil.data(captchaId); // } // // @RequestMapping(value = "/draw/{captchaId}", method = RequestMethod.GET) // @ApiOperation(value = "根据验证码ID获取图片") // public void drawCaptcha(@PathVariable("captchaId") String captchaId, // HttpServletResponse response) throws IOException { // // // 得到验证码 生成指定验证码 // String code = redisTemplate.get(captchaId); // CreateVerifyCode vCode = new CreateVerifyCode(116, 36, 4, 10, code); // response.setContentType("image/png"); // vCode.write(response.getOutputStream()); // } // // @RequestMapping(value = "/sendRegistSms/{mobile}", method = RequestMethod.GET) // @ApiOperation(value = "发送注册短信验证码") // public Result<Object> sendRegistSmsCode(@PathVariable String mobile, HttpServletRequest request) { // // return sendSms(mobile, 2, 0, request); // } // // @RequestMapping(value = "/sendLoginSms/{mobile}", method = RequestMethod.GET) // @ApiOperation(value = "发送登录短信验证码") // @RateLimiter(name="sendLoginSms", rate = 1, ipLimit = true) // public Result<Object> sendLoginSmsCode(@PathVariable String mobile, HttpServletRequest request) { // // return sendSms(mobile, 1, 0, request); // } // // @RequestMapping(value = "/sendResetSms/{mobile}", method = RequestMethod.GET) // @ApiOperation(value = "发送重置密码短信验证码") // public Result<Object> sendResetSmsCode(@PathVariable String mobile, HttpServletRequest request) { // // return sendSms(mobile, 1, 5, request); // } // // @RequestMapping(value = "/sendEditMobileSms/{mobile}", method = RequestMethod.GET) // @ApiOperation(value = "发送修改手机短信验证码") // public Result<Object> sendEditMobileSmsCode(@PathVariable String mobile, HttpServletRequest request) { // // if (userService.findByMobile(mobile) != null) { // return ResultUtil.error("该手机号已绑定账户"); // } // return sendSms(mobile, 0, 0, request); // } // // /** // * @param mobile 手机号 // * @param range 发送范围 0发送给所有手机号 1只发送给注册手机 2只发送给未注册手机 // * @param templateType 0通用模版 1注册 2登录 3修改手机 4修改密码 5重置密码 6工作流模版 // */ // public Result<Object> sendSms(String mobile, Integer range, Integer templateType, HttpServletRequest request) { // // if (range == 1 && userService.findByMobile(mobile) == null) { // return ResultUtil.error("手机号未注册"); // } else if (range == 2 && userService.findByMobile(mobile) != null) { // return ResultUtil.error("手机号已注册"); // } // // IP限流 1分钟限1个请求 // String key = "sendSms:" + ipInfoUtil.getIpAddr(request); // String value = redisTemplate.get(key); // if (StrUtil.isNotBlank(value)) { // return ResultUtil.error("您发送的太频繁啦,请稍后再试"); // } // // 生成6位数验证码 // String code = CommonUtil.getRandomNum(); // // 缓存验证码 // redisTemplate.set(CommonConstant.PRE_SMS + mobile, code, 5L, TimeUnit.MINUTES); // // 发送验证码 // smsUtil.sendCode(mobile, code, templateType); // // 请求成功 标记限流 // redisTemplate.set(key, "sended", 1L, TimeUnit.MINUTES); // return ResultUtil.success("发送短信验证码成功"); // } //} xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/FileManageFactory.java
@@ -21,18 +21,6 @@ private SettingService settingService; @Autowired private QiniuFileManage qiniuFileManage; @Autowired private AliFileManage aliFileManage; @Autowired private TencentFileManage tencentFileManage; @Autowired private MinioFileManage minioFileManage; @Autowired private LocalFileManage localFileManage; /** @@ -44,18 +32,10 @@ Setting setting = settingService.get(SettingConstant.OSS_USED); if (setting == null || StrUtil.isBlank(setting.getValue())) { throw new XbootException("您还未配置OSS存储服务"); throw new XbootException("您还未配置存储地址"); } String type = setting.getValue(); if ((type.equals(SettingConstant.QINIU_OSS) && location == null) || CommonConstant.OSS_QINIU.equals(location)) { return qiniuFileManage; } else if ((type.equals(SettingConstant.ALI_OSS) && location == null) || CommonConstant.OSS_ALI.equals(location)) { return aliFileManage; } else if ((type.equals(SettingConstant.TENCENT_OSS) && location == null) || CommonConstant.OSS_TENCENT.equals(location)) { return tencentFileManage; } else if ((type.equals(SettingConstant.MINIO_OSS) && location == null) || CommonConstant.OSS_MINIO.equals(location)) { return minioFileManage; } else if ((type.equals(SettingConstant.LOCAL_OSS) && location == null) || CommonConstant.OSS_LOCAL.equals(location)) { if ((type.equals(SettingConstant.LOCAL_OSS) && location == null) || CommonConstant.OSS_LOCAL.equals(location)) { return localFileManage; } else { throw new XbootException("暂不支持该存储配置,请检查配置"); xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/AliFileManage.java
File was deleted xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/MinioFileManage.java
File was deleted xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/QiniuFileManage.java
File was deleted xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/TencentFileManage.java
File was deleted xboot-modules/xboot-social/pom.xml
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/DingdingController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/GithubController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/QQController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/RelateController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/SocialController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WechatController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WeiboController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WorkWechatController.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/dao/SocialDao.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/entity/Social.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/service/SocialService.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/serviceimpl/SocialServiceImpl.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/AccessToken.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/DingdingUserInfo.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/GithubUserInfo.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/QQUserInfo.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/RelateUserInfo.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WechatUserInfo.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WeiboUserInfo.java
File was deleted xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WokWechatUserInfo.java
File was deleted