wang-hao-jie
2021-10-19 cc8111dbc369c1e82f159027ee8438912ae28128
初始化
9个文件已修改
25个文件已删除
3010 ■■■■ 已修改文件
pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-admin/pom.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/AliSms.java 154 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsFactory.java 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsUtil.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/TencentSms.java 204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/pom.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-base/src/main/java/cn/exrick/xboot/base/controller/common/CaptchaController.java 278 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/FileManageFactory.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/AliFileManage.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/MinioFileManage.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/QiniuFileManage.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/TencentFileManage.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/pom.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/DingdingController.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/GithubController.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/QQController.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/RelateController.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/SocialController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WechatController.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WeiboController.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WorkWechatController.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/dao/SocialDao.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/entity/Social.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/service/SocialService.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/serviceimpl/SocialServiceImpl.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/AccessToken.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/DingdingUserInfo.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/GithubUserInfo.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/QQUserInfo.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/RelateUserInfo.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WechatUserInfo.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WeiboUserInfo.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WokWechatUserInfo.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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