From 9145e2e15a8d8b0e6946d80675824879504cda13 Mon Sep 17 00:00:00 2001 From: Wtd <1658714322@qq.com> Date: Sun, 19 Nov 2023 18:39:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- february-fault-common/pom.xml | 75 ++++++++++++ .../february/fault/constants/Constants.java | 21 ++++ .../fault/constants/JwtConstants.java | 32 +++++ .../fault/constants/TokenConstants.java | 27 +++++ .../com/february/fault/result/PageResult.java | 34 ++++++ .../com/february/fault/result/Result.java | 77 ++++++++++++ .../com/february/fault/utils/JwtUtils.java | 110 ++++++++++++++++++ .../com/february/fault/utils/StringUtils.java | 68 +++++++++++ .../com/february/fault/utils/TelSmsUtils.java | 87 ++++++++++++++ .../fault/controller/FaultController.java | 26 +++++ .../february/fault/mapper/FaultMapper.java | 17 +++ .../february/fault/service/FaultService.java | 18 +++ .../fault/service/impl/FaultServiceImpl.java | 27 +++++ .../resources/mapper/fault/FaultMapper.xml | 10 ++ 14 files changed, 629 insertions(+) create mode 100644 february-fault-common/src/main/java/com/february/fault/constants/Constants.java create mode 100644 february-fault-common/src/main/java/com/february/fault/constants/JwtConstants.java create mode 100644 february-fault-common/src/main/java/com/february/fault/constants/TokenConstants.java create mode 100644 february-fault-common/src/main/java/com/february/fault/result/PageResult.java create mode 100644 february-fault-common/src/main/java/com/february/fault/result/Result.java create mode 100644 february-fault-common/src/main/java/com/february/fault/utils/JwtUtils.java create mode 100644 february-fault-common/src/main/java/com/february/fault/utils/StringUtils.java create mode 100644 february-fault-common/src/main/java/com/february/fault/utils/TelSmsUtils.java create mode 100644 february-fault-server/src/main/java/com/february/fault/controller/FaultController.java create mode 100644 february-fault-server/src/main/java/com/february/fault/mapper/FaultMapper.java create mode 100644 february-fault-server/src/main/java/com/february/fault/service/FaultService.java create mode 100644 february-fault-server/src/main/java/com/february/fault/service/impl/FaultServiceImpl.java create mode 100644 february-fault-server/src/main/resources/mapper/fault/FaultMapper.xml diff --git a/february-fault-common/pom.xml b/february-fault-common/pom.xml index 7fdf4ba..37c0acd 100644 --- a/february-fault-common/pom.xml +++ b/february-fault-common/pom.xml @@ -62,10 +62,85 @@ february-common-swagger 3.6.3 + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + io.jsonwebtoken + jjwt + 0.9.1 + + + + com.alibaba + fastjson + 1.2.80 + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + org.springframework.boot + spring-boot-starter-validation + + + + org.apache.commons + commons-lang3 + + org.projectlombok lombok + + + cn.hutool + hutool-all + 5.8.3 + + + + com.aliyun + dysmsapi20170525 + 2.0.1 + + + + org.springframework.boot + spring-boot-starter-amqp + diff --git a/february-fault-common/src/main/java/com/february/fault/constants/Constants.java b/february-fault-common/src/main/java/com/february/fault/constants/Constants.java new file mode 100644 index 0000000..3beb32f --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/constants/Constants.java @@ -0,0 +1,21 @@ +package com.february.fault.constants; + +import lombok.Data; + +/** + * @description: 系统常量 + * @author DongZl + */ +@Data +public class Constants { + /** + * 成功标记 + */ + public static final Integer SUCCESS = 200; + public static final String SUCCESS_MSG = "操作成功"; + /** + * 失败标记 + */ + public static final Integer ERROR = 500; + public static final String ERROR_MSG = "操作异常"; +} diff --git a/february-fault-common/src/main/java/com/february/fault/constants/JwtConstants.java b/february-fault-common/src/main/java/com/february/fault/constants/JwtConstants.java new file mode 100644 index 0000000..afcbb87 --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/constants/JwtConstants.java @@ -0,0 +1,32 @@ +package com.february.fault.constants; + +import lombok.Data; + +/** + * @author DongZl + * @description: Jwt常量 + */ +@Data +public class JwtConstants { + + /** + * 用户ID字段 + */ + public static final String DETAILS_USER_ID = "user_id"; + + /** + * 用户名字段 + */ + public static final String DETAILS_USERNAME = "username"; + + /** + * 用户标识 + */ + public static final String USER_KEY = "user_key"; + + /** + * 令牌秘钥 + */ + public final static String SECRET = "abcdefghijklmnopqrstuvwxyz"; + +} diff --git a/february-fault-common/src/main/java/com/february/fault/constants/TokenConstants.java b/february-fault-common/src/main/java/com/february/fault/constants/TokenConstants.java new file mode 100644 index 0000000..c88c577 --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/constants/TokenConstants.java @@ -0,0 +1,27 @@ +package com.february.fault.constants; + +import lombok.Data; + +/** + * @author DongZl + * @description: 令牌常量 + */ +@Data +public class TokenConstants { + /** + * 缓存有效期,默认720(分钟) + */ + public final static long EXPIRATION = 720; + /** + * 缓存刷新时间,默认120(分钟) + */ + public final static long REFRESH_TIME = 120; + /** + * 权限缓存前缀 + */ + public final static String LOGIN_TOKEN_KEY = "login_tokens:"; + /** + * token标识 + */ + public static final String TOKEN = "token"; +} diff --git a/february-fault-common/src/main/java/com/february/fault/result/PageResult.java b/february-fault-common/src/main/java/com/february/fault/result/PageResult.java new file mode 100644 index 0000000..ec08f54 --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/result/PageResult.java @@ -0,0 +1,34 @@ +package com.february.fault.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author DongZl + * @description: 列表返回结果集 + */ +@Data +public class PageResult implements Serializable { + /** + * 总条数 + */ + private long total; + /** + * 结果集合 + */ + private List list; + public PageResult() { + } + public PageResult(long total, List list) { + this.total = total; + this.list = list; + } + public static PageResult toPageResult(long total, List list){ + return new PageResult(total , list); + } + public static Result> toResult(long total, List list){ + return Result.success(PageResult.toPageResult(total,list)); + } +} diff --git a/february-fault-common/src/main/java/com/february/fault/result/Result.java b/february-fault-common/src/main/java/com/february/fault/result/Result.java new file mode 100644 index 0000000..43f0200 --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/result/Result.java @@ -0,0 +1,77 @@ +package com.february.fault.result; + + +import com.february.fault.constants.Constants; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author DongZl + * @description: 响应信息主体 + */ +@Data +public class Result implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 成功 + */ + public static final int SUCCESS = Constants.SUCCESS; + /** + * 失败 + */ + public static final int FAIL = Constants.ERROR; + /** + * 返回状态码 + */ + private int code; + /** + * 响应信息 + */ + private String msg; + /** + * 响应数据 + */ + private T data; + + public static Result success() { + return restResult(null, SUCCESS, Constants.SUCCESS_MSG); + } + + public static Result success(T data) { + return restResult(data, SUCCESS, Constants.SUCCESS_MSG); + } + + public static Result success(T data, String msg) { + return restResult(data, SUCCESS, msg); + } + + public static Result error() { + return restResult(null, FAIL, Constants.ERROR_MSG); + } + + public static Result error(String msg) { + return restResult(null, FAIL, msg); + } + + public static Result error(T data) { + return restResult(data, FAIL, Constants.ERROR_MSG); + } + + public static Result error(T data, String msg) { + return restResult(data, FAIL, msg); + } + + public static Result error(int code, String msg) { + return restResult(null, code, msg); + } + + private static Result restResult(T data, int code, String msg) { + Result apiResult = new Result<>(); + apiResult.setCode(code); + apiResult.setData(data); + apiResult.setMsg(msg); + return apiResult; + } +} diff --git a/february-fault-common/src/main/java/com/february/fault/utils/JwtUtils.java b/february-fault-common/src/main/java/com/february/fault/utils/JwtUtils.java new file mode 100644 index 0000000..a945381 --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/utils/JwtUtils.java @@ -0,0 +1,110 @@ +package com.february.fault.utils; + + +import com.february.fault.constants.JwtConstants; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +import java.util.Map; + +/** + * @description: Jwt工具类 + * @author DongZl + */ +public class JwtUtils { + + /** + * 秘钥 + */ + public static String secret = JwtConstants.SECRET; + + /** + * 从数据声明生成令牌 + * + * @param claims 数据声明 + * @return 令牌 + */ + public static String createToken(Map claims){ + String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact(); + return token; + } + + /** + * 从令牌中获取数据声明 + * + * @param token 令牌 + * @return 数据声明 + */ + public static Claims parseToken(String token){ + return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); + } + /** + * 根据令牌获取用户标识 + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserKey(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.USER_KEY); + } + /** + * 根据令牌获取用户标识 + * + * @param claims 身份信息 + * @return 用户ID + */ + public static String getUserKey(Claims claims){ + return getValue(claims, JwtConstants.USER_KEY); + } + /** + * 根据令牌获取用户ID + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserId(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.DETAILS_USER_ID); + } + /** + * 根据身份信息获取用户ID + * + * @param claims 身份信息 + * @return 用户ID + */ + public static String getUserId(Claims claims){ + return getValue(claims, JwtConstants.DETAILS_USER_ID); + } + /** + * 根据令牌获取用户名 + * + * @param token 令牌 + * @return 用户名 + */ + public static String getUserName(String token){ + Claims claims = parseToken(token); + return getValue(claims, JwtConstants.DETAILS_USERNAME); + } + /** + * 根据身份信息获取用户名 + * + * @param claims 身份信息 + * @return 用户名 + */ + public static String getUserName(Claims claims){ + return getValue(claims, JwtConstants.DETAILS_USERNAME); + } + /** + * 根据身份信息获取键值 + * + * @param claims 身份信息 + * @param key 键 + * @return 值 + */ + public static String getValue(Claims claims, String key){ + Object obj = claims.get(key); + return obj == null ? "" : obj.toString(); + } +} diff --git a/february-fault-common/src/main/java/com/february/fault/utils/StringUtils.java b/february-fault-common/src/main/java/com/february/fault/utils/StringUtils.java new file mode 100644 index 0000000..a8802a8 --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/utils/StringUtils.java @@ -0,0 +1,68 @@ +package com.february.fault.utils; + +import org.springframework.util.AntPathMatcher; + +import java.util.Collection; +import java.util.List; + +/** + * @author DongZl + * @description: 字符串处理工具类 + */ +public class StringUtils extends org.apache.commons.lang3.StringUtils { + + /** + * * 判断一个对象是否为空 + * + * @param object Object + * @return true:为空 false:非空 + */ + public static boolean isNull(Object object) { + return object == null; + } + + /** + * * 判断一个Collection是否为空, 包含List,Set,Queue + * + * @param coll 要判断的Collection + * @return true:为空 false:非空 + */ + public static boolean isEmpty(Collection coll) { + return isNull(coll) || coll.isEmpty(); + } + + /** + * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 + * + * @param str 指定字符串 + * @param strs 需要检查的字符串数组 + * @return 是否匹配 + */ + public static boolean matches(String str, List strs) { + if (isEmpty(str) || isEmpty(strs)) { + return false; + } + for (String pattern : strs) { + if (isMatch(pattern, str)) + { + return true; + } + } + return false; + } + + /** + * 判断url是否与规则配置: + * ? 表示单个字符; + * * 表示一层路径内的任意字符串,不可跨层级; + * ** 表示任意层路径; + * + * @param pattern 匹配规则 + * @param url 需要匹配的url + * @return + */ + public static boolean isMatch(String pattern, String url) { + AntPathMatcher matcher = new AntPathMatcher(); + return matcher.match(pattern, url); + } +} diff --git a/february-fault-common/src/main/java/com/february/fault/utils/TelSmsUtils.java b/february-fault-common/src/main/java/com/february/fault/utils/TelSmsUtils.java new file mode 100644 index 0000000..434bb32 --- /dev/null +++ b/february-fault-common/src/main/java/com/february/fault/utils/TelSmsUtils.java @@ -0,0 +1,87 @@ +package com.february.fault.utils; + +import com.alibaba.fastjson.JSONObject; +import com.aliyun.dysmsapi20170525.Client; +import com.aliyun.dysmsapi20170525.models.SendSmsRequest; +import com.aliyun.dysmsapi20170525.models.SendSmsResponse; +import com.aliyun.teaopenapi.models.Config; +import lombok.extern.log4j.Log4j2; + +import java.util.Map; + +/** + * 短信工具类 + */ +@Log4j2 +public class TelSmsUtils { + + /** + * 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 + */ + private static String accessKeyId = "LTAI5tMRrNoxsBPgb6bYZWTW"; + private static String accessKeySecret = "r9LXZtt3ewEG2DHQ6DbAc65F0AFRA7"; + + /** + * 短信访问域名 + */ + private static String endpoint = "dysmsapi.aliyuncs.com"; + /** + * 短信签名 + */ + private static String signName = "登录验证"; + + /** + * 实例化短信对象 + */ + private static Client client; + + static { + log.info("初始化短信服务开始"); + long startTime = System.currentTimeMillis(); + try { + client = initClient(); + log.info("初始化短信成功:{}",signName); + } catch (Exception e) { + e.printStackTrace(); + } + log.info("初始化短信服务结束:耗时:{}MS",(System.currentTimeMillis()-startTime)); + } + /** + * 初始化短信对象 + * @return + * @throws Exception + */ + private static Client initClient() throws Exception{ + Config config = new Config() + // 您的AccessKey ID + .setAccessKeyId(accessKeyId) + // 您的AccessKey Secret + .setAccessKeySecret(accessKeySecret); + // 访问的域名 + config.endpoint = endpoint; + return new Client(config); + } + + /** + * 发送单条短信 + * @param tel + * @param templateCode SMS_153991546 + * @param sendDataMap + */ + public static String sendSms(String tel , String templateCode , Map sendDataMap){ + SendSmsRequest sendSmsRequest = new SendSmsRequest() + .setPhoneNumbers(tel) + .setSignName(signName) + .setTemplateCode(templateCode) + .setTemplateParam(JSONObject.toJSONString(sendDataMap)); + SendSmsResponse sendSmsResponse = null; + try { + log.info("发送短信验证码:消息内容是:【{}】", JSONObject.toJSONString(sendDataMap)); + sendSmsResponse = client.sendSms(sendSmsRequest); + } catch (Exception e) { + log.error("短信发送异常,手机号:【{}】,短信内容:【{}】,异常信息:【{}】", tel, sendDataMap, e); + } + return JSONObject.toJSONString(sendSmsResponse.getBody()); + } + +} diff --git a/february-fault-server/src/main/java/com/february/fault/controller/FaultController.java b/february-fault-server/src/main/java/com/february/fault/controller/FaultController.java new file mode 100644 index 0000000..9144c38 --- /dev/null +++ b/february-fault-server/src/main/java/com/february/fault/controller/FaultController.java @@ -0,0 +1,26 @@ +package com.february.fault.controller; + +import com.february.fault.domain.Fault; +import com.february.fault.result.Result; +import com.february.fault.service.FaultService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @program: february-fault-information + * @description: + * @author: Mr.Wang + * @create: 2023-11-19 16:24 + **/ +@RestController +public class FaultController { + @Autowired + private FaultService faultService; + @GetMapping("/faultList") + public Result> faultList(){ + return faultService.faultList(); + } +} diff --git a/february-fault-server/src/main/java/com/february/fault/mapper/FaultMapper.java b/february-fault-server/src/main/java/com/february/fault/mapper/FaultMapper.java new file mode 100644 index 0000000..e73be3f --- /dev/null +++ b/february-fault-server/src/main/java/com/february/fault/mapper/FaultMapper.java @@ -0,0 +1,17 @@ +package com.february.fault.mapper; + +import com.february.fault.domain.Fault; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @program: february-fault-information + * @description: + * @author: Mr.Wang + * @create: 2023-11-19 16:24 + **/ +@Mapper +public interface FaultMapper { + List faultList(); +} diff --git a/february-fault-server/src/main/java/com/february/fault/service/FaultService.java b/february-fault-server/src/main/java/com/february/fault/service/FaultService.java new file mode 100644 index 0000000..2675707 --- /dev/null +++ b/february-fault-server/src/main/java/com/february/fault/service/FaultService.java @@ -0,0 +1,18 @@ +package com.february.fault.service; + +import com.february.fault.domain.Fault; +import com.february.fault.result.Result; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @program: february-fault-information + * @description: + * @author: Mr.Wang + * @create: 2023-11-19 16:24 + **/ +@Component +public interface FaultService { + Result> faultList(); +} diff --git a/february-fault-server/src/main/java/com/february/fault/service/impl/FaultServiceImpl.java b/february-fault-server/src/main/java/com/february/fault/service/impl/FaultServiceImpl.java new file mode 100644 index 0000000..348707f --- /dev/null +++ b/february-fault-server/src/main/java/com/february/fault/service/impl/FaultServiceImpl.java @@ -0,0 +1,27 @@ +package com.february.fault.service.impl; + +import com.february.fault.domain.Fault; +import com.february.fault.mapper.FaultMapper; +import com.february.fault.result.Result; +import com.february.fault.service.FaultService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @program: february-fault-information + * @description: + * @author: Mr.Wang + * @create: 2023-11-19 16:24 + **/ +@Service +public class FaultServiceImpl implements FaultService { + @Autowired + private FaultMapper faultMapper; + @Override + public Result> faultList() { + List list=faultMapper.faultList(); + return Result.success(list); + } +} diff --git a/february-fault-server/src/main/resources/mapper/fault/FaultMapper.xml b/february-fault-server/src/main/resources/mapper/fault/FaultMapper.xml new file mode 100644 index 0000000..2fce633 --- /dev/null +++ b/february-fault-server/src/main/resources/mapper/fault/FaultMapper.xml @@ -0,0 +1,10 @@ + + + + + + + ++