提交 e8069b35 authored 作者: 000516's avatar 000516 提交者: Coding

创建BeanUtils工具、添加返回RCode报错信息;1、切redis数据源;2、将token解析切换为link项目token解析

创建BeanUtils工具、添加返回RCode报错信息;1、切redis数据源;2、将token解析切换为link项目token解析
......@@ -10,8 +10,6 @@
<groupId>com.wangxiaolu</groupId>
<artifactId>wangxiaolu-promotion-common</artifactId>
<version>0.0.2</version>
<name>wangxiaolu-promotion-common</name>
......@@ -127,6 +125,12 @@
<version>${xlsx-streamer.version}</version>
</dependency>
<!-- JWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jjwt.version}</version>
</dependency>
</dependencies>
......
package com.wangxiaolu.promotion.common.constant;
/**
* Token的Key常量
*
* @author ruoyi
*/
public class TokenConstants
{
/**
* 令牌自定义标识
*/
public static final String AUTHENTICATION = "Authorization";
/**
* 令牌前缀
*/
public static final String PREFIX = "Bearer ";
/**
* 令牌秘钥
*/
public final static String SECRET = "abcdefghijklmnopqrstuvwxyz";
/**
* 用户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";
}
package com.wangxiaolu.promotion.common.excel;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
/**
* @author : liqiulin
* @date : 2025-01-21 14
* @describe :
*/
public class FileUtils {
public static void downloadExcel(String urlS, String filePath) throws Exception {
// 保存文件
URL url = new URL(urlS);
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
// 调大小
byte[] buffer = new byte[102400];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
fileOutputStream.close();
inputStream.close();
}
}
......@@ -16,6 +16,7 @@ public interface RedisKeys {
* 促销员小程序用户登录信息:token
*/
TEMPORARY_TOKEN("user:login_token:temporary:"),
WXL_LINK_TOKEN("login_tokens:"),
/**
* 组织数据 - 客户类数据 - 经销商
*/
......@@ -57,4 +58,13 @@ public interface RedisKeys {
String key;
}
@AllArgsConstructor
@Getter
enum Manage{
ACTIVITY_PLAN_UP("prom:manage:activity_plan_up:"),
;
String key;
}
}
......@@ -3,9 +3,7 @@ package com.wangxiaolu.promotion.common.redis.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
......@@ -127,6 +125,9 @@ public class RedisCache {
redisTemplate.delete(keys);
}
public boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
private String valToJson(Object o) {
......
package com.wangxiaolu.promotion.common.util;
import java.util.ArrayList;
import java.util.List;
/**
* @author : liqiulin
* @date : 2025-02-07 10
* @describe :
*/
public class BeanUtils extends org.springframework.beans.BeanUtils {
public static <T> List<T> transitionDtos(Object sourceList, Class<?> beanClass) {
if (sourceList == null) {
return new ArrayList<>();
}
List<Object> sList = (List<Object>) sourceList;
if (sList.isEmpty()) {
return new ArrayList<>();
}
List<Object> btoList = new ArrayList<>(sList.size() * 2);
try {
for (Object so : sList) {
Object bto = beanClass.newInstance();
BeanUtils.copyProperties(so, bto);
btoList.add(bto);
}
return (List<T>) btoList;
} catch (Exception e) {
return new ArrayList<>();
}
}
public static <T> T transitionDto(Object source, Class<?> beanClass) {
if (source == null) {
return null;
}
try {
Object bto = beanClass.newInstance();
BeanUtils.copyProperties(source, bto);
return (T)bto;
} catch (Exception e) {
return null;
}
}
}
package com.wangxiaolu.promotion.common.util;
import com.wangxiaolu.promotion.common.constant.TokenConstants;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
/**
* @author : liqiulin
* @date : 2024-04-16 17
* @describe : java web token
*/
public class JwtTokenUtils {
private static String secret = TokenConstants.SECRET;
/**
* 从令牌中获取数据声明
*
* @param token 令牌
* @return 数据声明
*/
public static Claims parseToken(String token) {
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
}
/**
* 根据令牌获取用户标识
*
* @param claims 身份信息
* @return 用户ID
*/
public static String getUserKey(Claims claims) {
return getValue(claims, TokenConstants.USER_KEY);
}
/**
* 根据身份信息获取用户ID
*
* @param claims 身份信息
* @return 用户ID
*/
public static String getUserId(Claims claims) {
return getValue(claims, TokenConstants.DETAILS_USER_ID);
}
/**
* 根据身份信息获取用户名
*
* @param claims 身份信息
* @return 用户名
*/
public static String getUserName(Claims claims) {
return getValue(claims, TokenConstants.DETAILS_USERNAME);
}
/**
* 根据身份信息获取键值
*
* @param claims 身份信息
* @param key 键
* @return 值
*/
private static String getValue(Claims claims, String key) {
Object value = claims.get(key);
if (null == value) {
return "";
}
if (value instanceof String) {
return (String) value;
}
return value.toString();
}
}
......@@ -94,7 +94,7 @@ public class MD5Utils {
public static void main(String[] args) {
// 原密码
String plaintext = "wxl000680";
String plaintext = "wxl000682";
// 获取加盐后的MD5值
String ciphertext = MD5Utils.getSaltMD5(plaintext);
......
......@@ -35,5 +35,10 @@ public class DataException extends RuntimeException {
this.msg = RCode.API_ERROR.getMsg();
}
public DataException(StatusCode statusCode,Object... args) {
this.code = statusCode.getCode();
this.msg = String.format(statusCode.getMsg(),args);
}
}
......@@ -91,4 +91,8 @@ public class R {
public static R fail(Object data) {
return new R(RCode.FAILED,data);
}
public static R fail(StatusCode statusCode) {
return new R(statusCode);
}
}
......@@ -18,6 +18,7 @@ public enum RCode implements StatusCode {
PARAM_ERROR(1002, "参数错误"),
RESPONSE_PACK_ERROR(1003, "包装R失败"),
SELECT_PARAMS_ERROR(1004, "查询条件错误"),
REDIS_PUSH_DATA_NOT_EXIT(1005, "数据已过期或不存在,请重新上传;"),
/**
* 业务统一编码(不分模块)
......@@ -55,6 +56,8 @@ public enum RCode implements StatusCode {
USER_WXOPENID_UNIQUE_ERROR(3015, "已使用其他手机号注册"),
LOGIN_PHONE_PARAM_ERROR(3016, "手机号错误"),
NOT_LOGIN_TIMEOUT_ERROR(3017, "您的登录已过期,请重新登录"),
EMP_PRIVILEGE_ERROR(3018, "账号权限错误"),
QC_USER_IS_NULL_ERROR(3019, "账号未在勤策中找到"),
/**
* promotion-模块异常
......@@ -93,6 +96,9 @@ public enum RCode implements StatusCode {
*/
ACTIVITY_PLAN_MONTH_HAS(5000,"本月活动计划已上传,请删除后再次上传"),
ACTIVITY_PLAN_FILENAME_LONG(5001,"文件名过长,请少于20个字"),
ACTIVITY_PLAN_CELL_NOT_NULL(5002,"第%s行有空值,请改正后再次提交;"),
ACTIVITY_PLAN_TEM_ERROR(5003,"当前流程模板错误;"),
ACTIVITY_PLAN_REPETITION_ERROR(5004,"本次上传的活动或系统已存在的活动,有日期重复的计划;"),
/**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论