From 492e30ba0741a752dd4bdf9158903460c5289ce9 Mon Sep 17 00:00:00 2001 From: Re3 <1009802251@QQ.COM> Date: Wed, 20 Nov 2024 12:04:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=AA=E9=99=A4README.en.md=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9Exxl-job=E8=87=AA=E5=8A=A8=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BC=9A=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 0 .../main/resources/mapper/MeetingMapper.xml | 22 -- .../main/resources/mapper/MemberMapper.xml | 19 -- .../main/resources/mapper/MsgUserMapper.xml | 10 - .../resources/mapper/UserDetailMapper.xml | 13 - xiaocool-api/uaa/pom.xml | 141 -------- .../java/com/cool/uaa/UaaApplication.java | 18 -- .../com/cool/uaa/config/FeignInterceptor.java | 21 -- .../com/cool/uaa/config/SaTokenConfig.java | 46 --- .../cool/uaa/config/SaTokenOAuth2Config.java | 63 ---- .../config/properties/EmailProperties.java | 38 --- .../uaa/config/properties/SmsProperties.java | 40 --- .../com/cool/uaa/config/util/RedisUtils.java | 139 -------- .../com/cool/uaa/config/util/SmsCodeUtil.java | 42 --- .../com/cool/uaa/config/util/SmsUtil.java | 74 ----- .../cool/uaa/config/util/VerifyCodeUtil.java | 50 --- .../cool/uaa/controller/OAuth2Controller.java | 302 ------------------ .../cool/uaa/controller/UserController.java | 143 --------- .../com/cool/uaa/mapper/Oauth2Mapper.java | 9 - .../java/com/cool/uaa/mapper/UserMapper.java | 27 -- .../cool/uaa/service/EmailCaptchaService.java | 6 - .../com/cool/uaa/service/ISmsService.java | 32 -- .../cool/uaa/service/OAuth2FeignService.java | 20 -- .../src/main/resources/education_deploy.sh | 2 - .../src/main/resources/mapper/UserMapper.xml | 5 - .../templates/EmailVerificationCode.html | 167 ---------- .../src/main/resources/templates/confirm.html | 103 ------ .../src/main/resources/templates/login.html | 17 - 28 files changed, 1569 deletions(-) delete mode 100644 README.en.md delete mode 100644 xiaocool-api/service/src/main/resources/mapper/MeetingMapper.xml delete mode 100644 xiaocool-api/service/src/main/resources/mapper/MemberMapper.xml delete mode 100644 xiaocool-api/service/src/main/resources/mapper/MsgUserMapper.xml delete mode 100644 xiaocool-api/service/src/main/resources/mapper/UserDetailMapper.xml delete mode 100644 xiaocool-api/uaa/pom.xml delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/UaaApplication.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/FeignInterceptor.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenConfig.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenOAuth2Config.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/EmailProperties.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/SmsProperties.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/RedisUtils.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsCodeUtil.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsUtil.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/VerifyCodeUtil.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/OAuth2Controller.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/UserController.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/Oauth2Mapper.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/UserMapper.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/service/EmailCaptchaService.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/service/ISmsService.java delete mode 100644 xiaocool-api/uaa/src/main/java/com/cool/uaa/service/OAuth2FeignService.java delete mode 100644 xiaocool-api/uaa/src/main/resources/education_deploy.sh delete mode 100644 xiaocool-api/uaa/src/main/resources/mapper/UserMapper.xml delete mode 100644 xiaocool-api/uaa/src/main/resources/templates/EmailVerificationCode.html delete mode 100644 xiaocool-api/uaa/src/main/resources/templates/confirm.html delete mode 100644 xiaocool-api/uaa/src/main/resources/templates/login.html diff --git a/README.en.md b/README.en.md deleted file mode 100644 index e69de29b..00000000 diff --git a/xiaocool-api/service/src/main/resources/mapper/MeetingMapper.xml b/xiaocool-api/service/src/main/resources/mapper/MeetingMapper.xml deleted file mode 100644 index 7ddfc929..00000000 --- a/xiaocool-api/service/src/main/resources/mapper/MeetingMapper.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/xiaocool-api/service/src/main/resources/mapper/MemberMapper.xml b/xiaocool-api/service/src/main/resources/mapper/MemberMapper.xml deleted file mode 100644 index 0e20d0c5..00000000 --- a/xiaocool-api/service/src/main/resources/mapper/MemberMapper.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - diff --git a/xiaocool-api/service/src/main/resources/mapper/MsgUserMapper.xml b/xiaocool-api/service/src/main/resources/mapper/MsgUserMapper.xml deleted file mode 100644 index 415f87a9..00000000 --- a/xiaocool-api/service/src/main/resources/mapper/MsgUserMapper.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/xiaocool-api/service/src/main/resources/mapper/UserDetailMapper.xml b/xiaocool-api/service/src/main/resources/mapper/UserDetailMapper.xml deleted file mode 100644 index 40ec67e9..00000000 --- a/xiaocool-api/service/src/main/resources/mapper/UserDetailMapper.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - UPDATE user_detail SET participate_status= "1", sign_out_date = #{signOutDate} - WHERE meeting_id= #{meetingId} - AND participate_status= "0" - - - - \ No newline at end of file diff --git a/xiaocool-api/uaa/pom.xml b/xiaocool-api/uaa/pom.xml deleted file mode 100644 index b62ac5ad..00000000 --- a/xiaocool-api/uaa/pom.xml +++ /dev/null @@ -1,141 +0,0 @@ - - - 4.0.0 - - com.example - xiao-cool - 0.0.1-SNAPSHOT - - - uaa - - - - com.example - common - ${project.version} - - - - mysql - mysql-connector-java - - - - - cn.dev33 - sa-token-spring-boot-starter - 1.38.0 - - - - cn.dev33 - sa-token-jwt - 1.38.0 - - - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - - org.springframework.cloud - spring-cloud-starter-bootstrap - 3.1.1 - - - - - - - cn.dev33 - sa-token-redis-jackson - 1.38.0 - - - - cn.dev33 - sa-token-oauth2 - 1.38.0 - - - - org.apache.commons - commons-pool2 - - - - org.springframework - spring-web - - - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - - - com.alipay.sdk - alipay-sdk-java - 4.39.165.ALL - - - - - com.sun.mail - javax.mail - 1.6.2 - - - - - com.tencentcloudapi - tencentcloud-sdk-java - - - 3.1.322 - - - - - 8 - 8 - UTF-8 - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - repackage - - repackage - - - - - - uaa - - - - \ No newline at end of file diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/UaaApplication.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/UaaApplication.java deleted file mode 100644 index 774d3e8f..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/UaaApplication.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.cool.uaa; - -import cn.dev33.satoken.SaManager; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.openfeign.EnableFeignClients; - -@EnableFeignClients -@EnableDiscoveryClient -@SpringBootApplication -public class UaaApplication { - public static void main(String[] args) { - SpringApplication.run(UaaApplication.class, args); - - } -} - diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/FeignInterceptor.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/FeignInterceptor.java deleted file mode 100644 index 7ec962ff..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/FeignInterceptor.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.cool.uaa.config; - -import cn.dev33.satoken.same.SaSameUtil; -import feign.RequestInterceptor; -import feign.RequestTemplate; -import org.springframework.stereotype.Component; - -/** - * feign拦截器, 在feign请求发出之前,加入一些操作 - */ -@Component -public class FeignInterceptor implements RequestInterceptor { - // 为 Feign 的 RCP调用 添加请求头Same-Token - @Override - public void apply(RequestTemplate requestTemplate) { - requestTemplate.header(SaSameUtil.SAME_TOKEN, SaSameUtil.getToken()); - - // 如果希望被调用方有会话状态,此处就还需要将 satoken 添加到请求头中 - // requestTemplate.header(StpUtil.getTokenName(), StpUtil.getTokenValue()); - } -} \ No newline at end of file diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenConfig.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenConfig.java deleted file mode 100644 index efd0cf0e..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenConfig.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.cool.uaa.config; - - -import cn.dev33.satoken.context.SaHolder; -import cn.dev33.satoken.filter.SaServletFilter; -import cn.dev33.satoken.jwt.StpLogicJwtForSimple; -import cn.dev33.satoken.same.SaSameUtil; -import cn.dev33.satoken.stp.StpLogic; -import cn.dev33.satoken.util.SaResult; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -@Slf4j -public class SaTokenConfig implements WebMvcConfigurer { - - /** - * jwt生成 - * @return - */ - @Bean - public StpLogic stpLogicJWT(){ - return new StpLogicJwtForSimple(); - } - - - // 注册 Sa-Token 全局过滤器 - @Bean - public SaServletFilter getSaServletFilter() { - return new SaServletFilter() - .addInclude("/**") - .addExclude("/favicon.png","/oauth2/doLogin") - .setAuth(obj -> { - // 校验 Same-Token 身份凭证 —— 以下两句代码可简化为:SaSameUtil.checkCurrentRequestToken(); - String token = SaHolder.getRequest().getHeader(SaSameUtil.SAME_TOKEN); - SaSameUtil.checkToken(token); - - }) - .setError(e -> SaResult.error(e.getMessage())) - ; - } - - -} \ No newline at end of file diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenOAuth2Config.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenOAuth2Config.java deleted file mode 100644 index 34e26ba1..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/SaTokenOAuth2Config.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.cool.uaa.config; - -import cn.dev33.satoken.oauth2.config.SaOAuth2Config; -import cn.hutool.core.util.StrUtil; -import com.cool.uaa.service.impl.UserServiceImpl; -import domain.Result; -import dto.UserDTO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.web.servlet.ModelAndView; -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.Map; - -@Slf4j -@Configuration -public class SaTokenOAuth2Config { - @Resource - private UserServiceImpl userService; - - - @Primary - @Bean - public SaOAuth2Config getConfig() { - SaOAuth2Config config = new SaOAuth2Config(); - - config.setIsCode(true); - config.setIsImplicit(true); - config.setIsPassword(true); - config.setIsClient(true); - - config.setDoLoginHandle((name, pwd) -> { - if (StrUtil.isBlank(name) || StrUtil.isBlank(pwd)) { - return Result.error("登录失败"); - } - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(name); - userDTO.setPassword(pwd); - userDTO.setLoginType("usernameLogin"); - - return userService.doLogin(userDTO); - }); - - config.setNotLoginView(() -> { - return new ModelAndView("login.html"); - }); - - config.setConfirmView((clientId, scope) -> { - Map map = new HashMap<>(); - map.put("clientId", clientId); - map.put("scope", scope); - return new ModelAndView("confirm.html", map); - }); - - return config; - } - - - - -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/EmailProperties.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/EmailProperties.java deleted file mode 100644 index 661e9e59..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/EmailProperties.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.cool.uaa.config.properties; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationProperties(prefix = "captcha.email") -@Data -public class EmailProperties { - /** - * 邮箱地址(注意:如果使用foxmail邮箱,此处user为qq号) - */ - private String user; - /** - * 发件人昵称(必须正确,否则发送失败) - */ - private String from; - /** - * 邮件服务器的SMTP地址 - */ - private String host; - - /** - * 邮件服务器的SMTP端口 - */ - private Integer port; - - /** - * 密码(授权码) - */ - private String password; - - /** - * 验证码过期时间 - */ - private Integer expireTime; -} \ No newline at end of file diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/SmsProperties.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/SmsProperties.java deleted file mode 100644 index 28d2aea8..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/properties/SmsProperties.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.cool.uaa.config.properties; - - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -/** - * description: 腾讯云短信服务,配置 - * - * Date: 2020/9/16 10:53 - **/ -@Data -@Configuration -@ConfigurationProperties(prefix = "sms-config") -public class SmsProperties { - - /** 腾讯云账户密钥对secretId(在访问管理中配置) */ - private String secretId; - - /** 腾讯云账户密钥对secretKey(在访问管理中配置) */ - private String secretKey; - - /** 短信应用appId */ - private String appId; - - /** 短信应用appKey */ - private String appKey; - - /** 签名 */ - private String smsSign; - - /** 过期时间 */ - private String expireTime; - - /** redis存储前缀 */ - private String phonePrefix; - -} - diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/RedisUtils.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/RedisUtils.java deleted file mode 100644 index 617e5c51..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/RedisUtils.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.cool.uaa.config.util; - -import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.StringRedisSerializer; -import org.springframework.stereotype.Component; - -import java.util.concurrent.TimeUnit; - -@Component -@AllArgsConstructor -public class RedisUtils { - private RedisTemplate redisTemplate; - - - //指定用redis的序列化方式进行序列化 - @Autowired(required = false) - public void setRedisTemplate(RedisTemplate redisTemplate) { - RedisSerializer stringSerializer = new StringRedisSerializer();//序列化为String - //不能反序列化 - //Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);//序列化为Json - GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer(); - redisTemplate.setKeySerializer(stringSerializer); - redisTemplate.setValueSerializer(serializer); - redisTemplate.setHashKeySerializer(stringSerializer); - redisTemplate.setHashValueSerializer(serializer); - this.redisTemplate = redisTemplate; - } - - - /** - * 普通获取键对应值 - * - * @param key 键 - * @return 值 - */ - public Object get(String key) { - return key == null ? null : redisTemplate.opsForValue().get(key); - } - - /** - * 普通设置键值 - * - * @param key 键 - * @param value 值 - * @return true成功 false失败 - */ - public boolean set(String key, Object value) { - try { - redisTemplate.opsForValue().set(key, value); - return true; - } catch (Exception e) { - return false; - } - } - - /** - * 普通设置键值并设置过期时间 - * - * @param key 键 - * @param value 值 - * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 - * @return true成功 false 失败 - */ - public boolean set(String key, Object value, long time) { - try { - if (time > 0) { - redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); - - } else { - set(key, value); - } - return true; - } catch (Exception e) { - return false; - } - } - - /** - * 删除缓存 - * - * @param key 键 - * @return 是否成功 - */ - public boolean del(String key) { - return Boolean.TRUE.equals(redisTemplate.delete(key)); - } - - /** - * 指定缓存的失效时间 - * - * @param key 键值 - * @param time 时间(秒) - */ - public boolean expire(String key, long time) { - try { - if (time > 0) { - redisTemplate.expire(key, time, TimeUnit.SECONDS); - } - } catch (Exception e) { - e.printStackTrace(); - return false; - } - return true; - } - - - /** - * 判断key是否存在 - * @param key 键 - * @return true 存在 false不存在 - */ - public boolean hasKey(String key) { - try { - return Boolean.TRUE.equals(redisTemplate.hasKey(key)); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - } - - public boolean set(String key, String value, long time ,TimeUnit timeType) { - - try { - if (time > 0) { - redisTemplate.opsForValue().set(key, value, time, timeType); - } else { - set(key, value); - } - } catch (Exception e) { - e.printStackTrace(); - return false; - } - return true; - } -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsCodeUtil.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsCodeUtil.java deleted file mode 100644 index 6ea74be0..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsCodeUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.cool.uaa.config.util; - -import cn.hutool.core.util.RandomUtil; -import domain.SmsLengthEnum; -import org.springframework.context.annotation.Configuration; - -/** - * description: 腾讯云短信服务工具类 - * - * Date: 2020/9/16 10:53 - **/ -@Configuration -public class SmsCodeUtil { - - /** - * 随机生成指定长度的短信的验证码 - * - * @param smsLengthEnum 短信验证码长度枚举 - * @return 随机验证码 - * @author RenShiWei - * Date: 2020/9/16 10:53 - */ - public static String createSmsRandomCode(SmsLengthEnum smsLengthEnum) { - return RandomUtil.randomNumbers(smsLengthEnum.getLength()); - } - - /** - * 创建短信验证码,缓存键策略 - * 策略:前缀_业务名_手机号 - * - * @param phone 手机号 - * @param businessStr 业务名 - * @return 短信验证码,缓存键策略 - * @author RenShiWei - * Date: 2020/9/16 10:53 - */ - public static String createSmsCacheKey(String phone, String businessStr) { - return "SmsCaptcha:" + businessStr + phone; - } - -} - diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsUtil.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsUtil.java deleted file mode 100644 index 5575beb6..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/SmsUtil.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.cool.uaa.config.util; - -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.SendSmsResponse; -import com.tencentcloudapi.sms.v20190711.models.SendStatus; -import domain.Constants; -import exception.BaseException; -import com.cool.uaa.config.properties.SmsProperties; - -/** - * description: - * - * @author RenShiWei - * Date: 2020/10/20 15:03 - **/ -public class SmsUtil { - - /** - * 腾讯云发送短信的基础服务 - * - * @param smsProperties 腾讯云短信服务配置 - * @param templateId 腾讯云短信模板id - * @param templateParams 腾讯云模板需要的参数 - * @param phoneNumbers 手机号集合 - * @return 发送短信后的状态的set集合 - */ - public static SendStatus[] sendSms(SmsProperties smsProperties, String templateId, String[] templateParams, - String[] phoneNumbers) { - /* - 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey - CAM 密钥查询:https://console.cloud.tencent.com/cam/capi - */ - Credential cred = new Credential(smsProperties.getSecretId(), smsProperties.getSecretKey()); - /* - 实例化要请求产品(以sms为例)的client对象 - 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量 - */ - SmsClient client = new SmsClient(cred, ""); - /* - 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数 - */ - SendSmsRequest req = new SendSmsRequest(); - //短信应用ID: 短信appId在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666 - req.setSmsSdkAppid(smsProperties.getAppId()); - //短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看 - req.setSign(smsProperties.getSmsSign()); - //模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 - req.setTemplateID(templateId); - //下发手机号码,采用 e.164 标准,+[国家或地区码][手机号] 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号 - req.setPhoneNumberSet(phoneNumbers); - //模板参数: 若无模板参数,则设置为空 - req.setTemplateParamSet(templateParams); - - /* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的 - 返回的 res 是一个 SendSmsResponse 类的实例,与请求对象对应 - */ - SendSmsResponse res = null; - try { - //发送短信 - res = client.SendSms(req); - return res.getSendStatusSet(); - } catch (TencentCloudSDKException e) { - e.printStackTrace(); - //发送短信失败 - throw new BaseException(Constants.SMS_NOT_SEND,"发送失败"); - } - } - - -} - diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/VerifyCodeUtil.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/VerifyCodeUtil.java deleted file mode 100644 index 74d6dee7..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/config/util/VerifyCodeUtil.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.cool.uaa.config.util; - -import java.util.Random; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * 验证码工具类 - * @author shijun - * @date 2024/05/10 - */ -public class VerifyCodeUtil { - //邮箱正则表达式 - private static final Pattern EMAIL_PATTERN = Pattern.compile("^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$"); - //验证码的字符集 - private static final String CODES = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - //验证码的长度,可以根据需求进行修改 - private static final int CODE_LENGTH = 6; - - /** - * 生成验证码 - * - * @return {@link String } - */ - public static String generateVerifyCode() { - Random random = new Random(); - StringBuilder verifyCode = new StringBuilder(CODE_LENGTH); - for (int i = 0; i < CODE_LENGTH; i++) { - verifyCode.append(CODES.charAt(random.nextInt(CODES.length()))); - } - return verifyCode.toString(); - } - - /** - * 检测邮箱是否合法 - * - * @param email 用户名 - * @return 合法状态 - */ - public static boolean checkEmail(String email) { - // 检查输入是否为空或null - if (email == null || email.isEmpty()) { - return false; - } - // 使用正则表达式进行匹配 - Matcher m = EMAIL_PATTERN.matcher(email); - return m.matches(); - } - -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/OAuth2Controller.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/OAuth2Controller.java deleted file mode 100644 index bbd7798b..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/OAuth2Controller.java +++ /dev/null @@ -1,302 +0,0 @@ -package com.cool.uaa.controller; - - -import cn.dev33.satoken.oauth2.logic.SaOAuth2Handle; -import cn.dev33.satoken.stp.StpUtil; -import cn.hutool.core.util.StrUtil; -import com.cool.uaa.config.util.RedisUtils; -import com.cool.uaa.service.impl.*; -import com.fasterxml.jackson.databind.JsonNode; -import domain.Constants; -import domain.Result; -import dto.UserDTO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Map; - -@Slf4j -@RestController -@RequestMapping("/oauth2") -public class OAuth2Controller { - public static final String CAPTCHA_SESSION_KEY = "captcha-"; - - @Autowired - private GiteeServiceImpl giteeService; - - @Autowired - private UserServiceImpl userService; - - @Autowired - private EmailCaptchaServiceImpl emailService; - - @Autowired - private SmsServiceImpl smsService; - - @Autowired - private WeChatServiceImpl weChatService; - - @Autowired - private QQServiceImpl qqService; - - @Autowired - private AlipayServiceImpl alipayService; - - @Autowired - private RedisUtils redisUtils; - - - - @PostMapping("/doLogin") - public Object doLogin(@RequestBody UserDTO userDTO) { - try { - String redisKey="Captcha:" + CAPTCHA_SESSION_KEY + userDTO.getCode(); - if (redisUtils.hasKey(redisKey)){ - String captchaCode=redisUtils.get(redisKey).toString(); - if (userDTO.getCode().equals(captchaCode)){ - redisUtils.del(redisKey); - if (StrUtil.isBlank(userDTO.getUsername()) || StrUtil.isBlank(userDTO.getPassword())) { - return Result.error(Constants.CODE_500,"登录失败"); - } - userDTO.setLoginType("usernameLogin"); - return userService.doLogin(userDTO); - } - else { - return Result.error(Constants.CODE_400, "验证码错误或已过期"); - } - } - else { - return Result.error(Constants.CODE_400, "验证码错误或已过期"); - } - - } - catch (Exception e) { - throw new RuntimeException(e);} - } - - - - @PostMapping("/captchaLogin") - public Result CaptchaLogin(@RequestBody UserDTO userDTO,HttpServletResponse response) throws IOException { - return userService.doLogin(userDTO); - } - - - - @GetMapping("/authorize") - public Object authorize() { - return SaOAuth2Handle.serverRequest(); - } - - - /** - * Gitee模块 - */ - @GetMapping("/authorize/gitee") - public void giteeAuthorize(HttpServletResponse response) throws IOException { - String url = giteeService.getAuthorizationUrl(); - response.sendRedirect(url); - } - - - @GetMapping("/gitee/callback") - public void handleGiteeCallback(@RequestParam("code") String code, - HttpServletResponse response, - HttpServletRequest request) { - try { - String accessToken = giteeService.getAccessToken(code); - //从第三方平台获取用户信息 - Map userInfo = giteeService.getUserInfo(accessToken); - // 模拟使用 userService 处理用户信息 - UserDTO userDTO = new UserDTO(); - userDTO.setLoginType("gitee"); - userDTO.setAvatar(String.valueOf(userInfo.get("avatar_url"))); - userDTO.setUsername(String.valueOf(userInfo.get("login"))); - userDTO.setEmail(String.valueOf(userInfo.get("email"))); - userDTO.setOpenId(String.valueOf(userInfo.get("id"))); - userService.doLogin(userDTO); - for (String role:userDTO.getRole()){ - if (role.equals("admin")){ - response.sendRedirect("https://xiaoku.store/admin/user?token="+StpUtil.getTokenValue()); - return; - } - } - response.sendRedirect("https://xiaoku.store/AddMeeting?token="+StpUtil.getTokenValue()); - } catch (Exception e) { - throw new RuntimeException("登录失败", e); - } - } - - - - /** - * QQ模块 - */ - // 获取QQ登录URL - @GetMapping("/authorize/qq") - public void getQQLoginUrl(HttpServletResponse response) throws IOException { - String url = qqService.getQQLoginUrl(); - response.sendRedirect(url); - } - - // QQ回调 - @GetMapping("/qq/callback") - public void qqCallback(@RequestParam("code") String code, - HttpServletResponse response, - HttpServletRequest request) { - try { - String accessToken = qqService.getAccessToken(code); - //获得qq号 - JsonNode node = qqService.getOpenId(accessToken); - String openId= node.get("openid").asText(); - String unionId= node.get("unionid").asText(); - log.info("========openId:{}==========",openId); - log.info("========unionid:{}=========",unionId); - Map userInfo = qqService.getUserInfo(accessToken, openId); - UserDTO userDTO = new UserDTO(); - userDTO.setLoginType("QQ"); - userDTO.setAvatar(String.valueOf(userInfo.get("figureurl_qq_1"))); - userDTO.setNickname(String.valueOf(userInfo.get("nickname"))); - userDTO.setUsername(unionId.substring(4, 14)); - userDTO.setOpenId(unionId); - // 这里可以根据unionId查询用户是否已存在,未存在则创建用户 - userService.doLogin(userDTO); - for (String role:userDTO.getRole()){ - if (role.equals("admin")){ - response.sendRedirect("https://xiaoku.store/admin/user?token="+StpUtil.getTokenValue()); - return; - } - } - response.sendRedirect("https://xiaoku.store/AddMeeting?token="+StpUtil.getTokenValue()); - } catch (Exception e) { - throw new RuntimeException("登录失败", e); - } - } - - - -// 支付宝 - @GetMapping("/authorize/alipay") - public void alipayAuthorize(HttpServletResponse response) throws IOException { - String url = alipayService.getAuthorizationUrl(); - response.sendRedirect(url); - - } - - -// 支付宝回调 - @GetMapping("/alipay/callback") - public void AliPayCallback(@RequestParam("auth_code") String authCode, - HttpServletResponse response, - HttpServletRequest request) { - try { - String accessToken = alipayService.getAccessToken(authCode); - // 获取用户信息 - UserDTO userDTO = alipayService.getUserInfo(accessToken); - userService.doLogin(userDTO); - for (String role:userDTO.getRole()){ - if (role.equals("admin")){ - response.sendRedirect("https://xiaoku.store/admin/user?token="+StpUtil.getTokenValue()); - return; - } - } - response.sendRedirect("https://xiaoku.store/AddMeeting?token="+StpUtil.getTokenValue()); - } catch (Exception e) { - throw new RuntimeException("登录失败", e); - } -} - - - /** - * 短信模块 - */ - // 发送短信验证码 -// sendSmsCode type为login/register - @GetMapping("/sms-captcha") - public Result sendSmsCaptcha(@RequestParam String phone,@RequestParam String type) { - if (smsService.sendSmsCode(phone,type)) - { - return Result.success("发送成功"); - } - else { - return Result.error("发送失败"); - } - - } - - //验证短信验证码 - @GetMapping("/verifySmsCaptcha") - public Result verifySmsCaptcha(@RequestParam String phone,@RequestParam String code){ - if (smsService.verifySmsCode(phone,code)) - { - return Result.success("校验成功"); - } - else { - return Result.error("校验失败"); - } - } - - - /** - * 邮箱模块 - */ - //发送邮箱验证码 - @GetMapping("/email-captcha") - public Result sendEmailCaptcha(@RequestParam String email,@RequestParam String type) { - emailService.sendEmailCaptcha(email,type); - return Result.success("发送成功"); - } - - //验证邮箱验证码 - @GetMapping("/verifyEmailCaptcha") - public Result verifyEmailCaptcha(@RequestParam String email,@RequestParam String code){ - if (emailService.verifyEmailCode(email,code)) - { - return Result.success("校验成功"); - } - else { - return Result.error("校验失败"); - } - } - - /** - * 微信模块 - */ - // 获取微信登录URL - @GetMapping("/authorize/wechat") - public String getWeChatLoginUrl() { - return weChatService.getWeChatLoginUrl(); - } - - // 微信回调 - @GetMapping("/wechat/callback") - public String weChatCallback(@RequestParam String code) { - try { - JsonNode tokenResponse = weChatService.getAccessTokenAndOpenId(code); - String accessToken = tokenResponse.get("access_token").asText(); - String openId = tokenResponse.get("openid").asText(); - - JsonNode userInfo = weChatService.getUserInfo(accessToken, openId); - String unionId = userInfo.get("unionid").asText(); - - // 这里可以根据unionId查询用户是否已存在,未存在则创建用户 - StpUtil.login(unionId); - - return "登录成功,Access Token: " + StpUtil.getTokenValue(); - } catch (Exception e) { - e.printStackTrace(); - return "登录失败"; - } - } - - - - - - - -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/UserController.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/UserController.java deleted file mode 100644 index 3751f503..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/controller/UserController.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.cool.uaa.controller; - - -import cn.dev33.satoken.annotation.SaCheckLogin; -import cn.dev33.satoken.stp.StpUtil; -import cn.hutool.captcha.CaptchaUtil; -import cn.hutool.captcha.CircleCaptcha; -import cn.hutool.captcha.generator.RandomGenerator; -import cn.hutool.core.util.StrUtil; -import com.cool.uaa.config.util.RedisUtils; -import com.cool.uaa.service.OAuth2FeignService; -import com.cool.uaa.service.impl.UserServiceImpl; -import domain.Constants; -import domain.Result; -import dto.UserDTO; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.concurrent.TimeUnit; - - -/** - *

- * 前端控制器 - *

- * - * @author 小飞 - * @since 2024-04-16 - */ -@RestController -@RequestMapping("/user/") -@Api(tags = "用户信息管理") -@Slf4j -public class UserController { - public static final String CAPTCHA_SESSION_KEY = "captcha-"; - - - @Resource - private UserServiceImpl userService; - - @Autowired - private OAuth2FeignService OAuth2FeignService; - - @Autowired - private RedisUtils redisUtils; - - - //注册 - @PostMapping("register") - public Result register(@RequestBody UserDTO userDTO) { - String username = userDTO.getUsername(); - String password = userDTO.getPassword(); - if (StrUtil.isBlank(username) || StrUtil.isBlank(password)) { - return Result.error(Constants.CODE_400, "参数错误"); - } - return Result.success(userService.register(userDTO)); - } - - - //验证码 - @RequestMapping("getCode") - public void getCode(HttpServletRequest request, HttpServletResponse response) throws IOException { - // 随机生成 4 位验证码 - RandomGenerator randomGenerator = new RandomGenerator("1345678AaBbEePpQqFfGHhKkrRtT", 4); - // 定义图片的显示大小 - //验证码工具类 - CircleCaptcha circleCaptcha = CaptchaUtil.createCircleCaptcha(120, 46, 4, 10); - response.setContentType("image/jpeg"); - response.setHeader("Pragma", "No-cache"); - try { - // 调用父类的 setGenerator() 方法,设置验证码的类型 - circleCaptcha.setGenerator(randomGenerator); - // 输出到页面 - circleCaptcha.write(response.getOutputStream()); - // 打印日志 - log.info("生成的验证码:{}", circleCaptcha.getCode()); - String verifyCode = circleCaptcha.getCode(); - String redisKey = "Captcha:" + CAPTCHA_SESSION_KEY + verifyCode; - redisUtils.set(redisKey, verifyCode, 5, TimeUnit.MINUTES); - - // 关闭流 - response.getOutputStream().close(); - } catch (IOException e) { - e.printStackTrace(); - } - - } - - @SaCheckLogin - @GetMapping("isLogin") - public Result isLogin() { - return Result.success("当前的登录状态为", StpUtil.isLogin()); - } - - /** - * 查询token信息 - */ - @GetMapping("tokenInfo") - public Result tokenInfo() { - return Result.success(StpUtil.getTokenInfo()); - } - - - - /** - * 查询token信息 - */ - @GetMapping("userInfo") - public Result userInfo() { - return Result.success(StpUtil.getExtra("user")); - } - - /** - * 获取角色集合 - */ - @GetMapping("getRole") - public Result getRole() { - return Result.success(StpUtil.getRoleList()); - } - - - - @GetMapping("logout") - public Result logout(String id) { - //强制下线 - StpUtil.logout(id); // 强制指定账号注销下线 -// StpUtil.logout(10001, "PC"); // 强制指定账号指定端注销下线 -// StpUtil.logoutByTokenValue("token"); // 强制指定 Token 注销下线 - //踢人下线 -// StpUtil.kickout(10001); // 将指定账号踢下线 -// StpUtil.kickout(10001, "PC"); // 将指定账号指定端踢下线 -// StpUtil.kickoutByTokenValue("token"); // 将指定 Token 踢下线 - return Result.success(); - } - -} - diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/Oauth2Mapper.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/Oauth2Mapper.java deleted file mode 100644 index 4c4cf3aa..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/Oauth2Mapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.cool.uaa.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import entity.Oauth2; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface Oauth2Mapper extends BaseMapper { -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/UserMapper.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/UserMapper.java deleted file mode 100644 index 4bcaacc3..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/mapper/UserMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.cool.uaa.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import dto.UserRoleDTO; -import entity.User; -import org.apache.ibatis.annotations.*; - -import java.util.List; - - -@Mapper -public interface UserMapper extends BaseMapper { - - - @Select("SELECT sys_role.role FROM sys_role,sys_user_role,`user`\n" + - "WHERE sys_role.id=sys_user_role.role_id AND`user`.id=sys_user_role.user_id\n" + - "AND `user`.username= #{username}") - List findRole(String username); - - @Insert("INSERT INTO sys_user_role (user_id, role_id)\n"+ - "SELECT `user`.id, sys_role.id\n"+ - "FROM `user` JOIN sys_role ON 1=1 \n"+ - " WHERE `user`.username = #{username} AND sys_role.role = #{role}\n") - void setUserRole(String username,String role); - -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/EmailCaptchaService.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/EmailCaptchaService.java deleted file mode 100644 index 5d39dff5..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/EmailCaptchaService.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.cool.uaa.service; - -public interface EmailCaptchaService { - void sendEmailCaptcha(String email,String type); - -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/ISmsService.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/ISmsService.java deleted file mode 100644 index b8045d30..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/ISmsService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.cool.uaa.service; - -/** - * description: 短信业务 - * - * @author RenShiWei - * Date: 2020/9/15 22:06 - **/ -public interface ISmsService { - - /** - * description: 发送短信验证码 - * - * @param phone 手机号 - * @author RenShiWei - * Date: 2020/9/16 10:11 - * @return - */ - boolean sendSmsCode(String phone,String type); - - /** - * description:验证短信验证码 - * - * @param phone 手机号 - * @param code 验证码 - * @author RenShiWei - * Date: 2020/9/16 10:11 - * @return - */ - boolean verifySmsCode(String phone, String code); - -} diff --git a/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/OAuth2FeignService.java b/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/OAuth2FeignService.java deleted file mode 100644 index 790ec354..00000000 --- a/xiaocool-api/uaa/src/main/java/com/cool/uaa/service/OAuth2FeignService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.cool.uaa.service; - -import domain.Result; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.GetMapping; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@FeignClient(value = "uaa",path = "/oauth2") //指定调用哪个微服务 -public interface OAuth2FeignService { - - - @GetMapping("/authorize/gitee")//哪个地址 - void giteeAuthorize(); - - @GetMapping("/hello") - String hello(); -} diff --git a/xiaocool-api/uaa/src/main/resources/education_deploy.sh b/xiaocool-api/uaa/src/main/resources/education_deploy.sh deleted file mode 100644 index c1177e0c..00000000 --- a/xiaocool-api/uaa/src/main/resources/education_deploy.sh +++ /dev/null @@ -1,2 +0,0 @@ -docker build -t uaa . -docker run -p 3080:3080 -d --restart=always uaa \ No newline at end of file diff --git a/xiaocool-api/uaa/src/main/resources/mapper/UserMapper.xml b/xiaocool-api/uaa/src/main/resources/mapper/UserMapper.xml deleted file mode 100644 index 37cf9c07..00000000 --- a/xiaocool-api/uaa/src/main/resources/mapper/UserMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/xiaocool-api/uaa/src/main/resources/templates/EmailVerificationCode.html b/xiaocool-api/uaa/src/main/resources/templates/EmailVerificationCode.html deleted file mode 100644 index 5d9d7935..00000000 --- a/xiaocool-api/uaa/src/main/resources/templates/EmailVerificationCode.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - 邮箱验证码 - - - - - - - - - -
-
- - -
-
- -
-
- 尊敬的用户,您好! - - 您正在进行[[${type}]]账号操作,请在验证码中输入以下验证码完成操作: - -
- -
-
-
- - 注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全 -
(工作人员不会向你索取此验证码,请勿泄漏!) -
-
-
-
-
-

此为系统邮件,请勿回复
- 请保管好您的邮箱,避免账号被他人盗用 -

-

——小酷人脸识别

-
-
-
- - diff --git a/xiaocool-api/uaa/src/main/resources/templates/confirm.html b/xiaocool-api/uaa/src/main/resources/templates/confirm.html deleted file mode 100644 index fcba2b85..00000000 --- a/xiaocool-api/uaa/src/main/resources/templates/confirm.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - Sa-OAuth2-认证中心-确认授权页 - - - - - - - - - - diff --git a/xiaocool-api/uaa/src/main/resources/templates/login.html b/xiaocool-api/uaa/src/main/resources/templates/login.html deleted file mode 100644 index b9ebca51..00000000 --- a/xiaocool-api/uaa/src/main/resources/templates/login.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Document - - - - - - \ No newline at end of file -- Gitee