permsSet = new HashSet<>();
if (user.getSuperAdmin() == SuperAdminEnum.YES.value()) {
@@ -69,22 +76,22 @@ public class Oauth2Realm extends AuthorizingRealm {
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String accessToken = (String) token.getPrincipal();
- //根据accessToken,查询用户信息
+ // 根据accessToken,查询用户信息
SysUserTokenEntity tokenEntity = shiroService.getByToken(accessToken);
- //token失效
+ // token失效
if (tokenEntity == null || tokenEntity.getExpireDate().getTime() < System.currentTimeMillis()) {
throw new IncorrectCredentialsException(MessageUtils.getMessage(ErrorCode.TOKEN_INVALID));
}
- //查询用户信息
+ // 查询用户信息
SysUserEntity userEntity = shiroService.getUser(tokenEntity.getUserId());
- //转换成UserDetail对象
+ // 转换成UserDetail对象
UserDetail userDetail = ConvertUtils.sourceToTarget(userEntity, UserDetail.class);
userDetail.setToken(accessToken);
- //账号锁定
+ // 账号锁定
if (userDetail.getStatus() == null) {
logger.error("账号状态异常,status 不能为空");
throw new DisabledAccountException(MessageUtils.getMessage(ErrorCode.ACCOUNT_DISABLE));
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/oauth2/TokenGenerator.java b/main/manager-api/src/main/java/xiaozhi/modules/security/oauth2/TokenGenerator.java
index 0ca1cede..6d7be47a 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/oauth2/TokenGenerator.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/oauth2/TokenGenerator.java
@@ -1,10 +1,10 @@
package xiaozhi.modules.security.oauth2;
-import xiaozhi.common.exception.RenException;
-
import java.security.MessageDigest;
import java.util.UUID;
+import xiaozhi.common.exception.RenException;
+
/**
* 生成token
* Copyright (c) 人人开源 All rights reserved.
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCrypt.java b/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCrypt.java
index 6a9efff9..39d350c5 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCrypt.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCrypt.java
@@ -5,22 +5,28 @@ import java.io.UnsupportedEncodingException;
import java.security.SecureRandom;
/**
- * BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
+ * BCrypt implements OpenBSD-style Blowfish password hashing using the scheme
+ * described in
* "A Future-Adaptable Password Scheme" by Niels Provos and David Mazieres.
*
- * This password hashing system tries to thwart off-line password cracking using a
- * computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
- * The work factor of the algorithm is parameterised, so it can be increased as computers
+ * This password hashing system tries to thwart off-line password cracking using
+ * a
+ * computationally-intensive hashing algorithm, based on Bruce Schneier's
+ * Blowfish cipher.
+ * The work factor of the algorithm is parameterised, so it can be increased as
+ * computers
* get faster.
*
- * Usage is really simple. To hash a password for the first time, call the hashpw method
+ * Usage is really simple. To hash a password for the first time, call the
+ * hashpw method
* with a random salt, like this:
*
*
* String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt());
*
*
- * To check whether a plaintext password matches one that has been hashed previously, use
+ * To check whether a plaintext password matches one that has been hashed
+ * previously, use
* the checkpw method:
*
*
@@ -30,7 +36,8 @@ import java.security.SecureRandom;
* System.out.println("It does not match");
*
*
- * The gensalt() method takes an optional parameter (log_rounds) that determines the
+ * The gensalt() method takes an optional parameter (log_rounds) that determines
+ * the
* computational complexity of the hashing:
*
*
@@ -38,7 +45,8 @@ import java.security.SecureRandom;
* String stronger_salt = BCrypt.gensalt(12)
*
*
- * The amount of work increases exponentially (2**log_rounds), so each increment is twice
+ * The amount of work increases exponentially (2**log_rounds), so each increment
+ * is twice
* as much work. The default log_rounds is 10, and the valid range is 4 to 31.
*
* @author Damien Miller
@@ -51,11 +59,11 @@ public class BCrypt {
// Blowfish parameters
private static final int BLOWFISH_NUM_ROUNDS = 16;
// Initial contents of key schedule
- private static final int P_orig[] = {0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
+ private static final int P_orig[] = { 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,
0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
- 0x9216d5d9, 0x8979fb1b};
- private static final int S_orig[] = {0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
+ 0x9216d5d9, 0x8979fb1b };
+ private static final int S_orig[] = { 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5,
@@ -225,24 +233,24 @@ public class BCrypt {
0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76,
0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0,
- 0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6};
+ 0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 };
// bcrypt IV: "OrpheanBeholderScryDoubt"
- static private final int bf_crypt_ciphertext[] = {0x4f727068, 0x65616e42,
- 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274};
+ static private final int bf_crypt_ciphertext[] = { 0x4f727068, 0x65616e42,
+ 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274 };
// Table for Base64 encoding
- static private final char base64_code[] = {'.', '/', 'A', 'B', 'C', 'D', 'E', 'F',
+ static private final char base64_code[] = { '.', '/', 'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
- 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
+ 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
// Table for Base64 decoding
- static private final byte index_64[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ static private final byte index_64[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
-1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1};
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1 };
static final int MIN_LOG_ROUNDS = 4;
static final int MAX_LOG_ROUNDS = 31;
// Expanded Blowfish key
@@ -250,7 +258,8 @@ public class BCrypt {
private int S[];
/**
- * Encode a byte array using bcrypt's slightly-modified base64 encoding scheme. Note
+ * Encode a byte array using bcrypt's slightly-modified base64 encoding scheme.
+ * Note
* that this is not compatible with the standard MIME-base64
* encoding.
*
@@ -306,7 +315,8 @@ public class BCrypt {
}
/**
- * Decode a string encoded using bcrypt's base64 scheme to a byte array. Note that
+ * Decode a string encoded using bcrypt's base64 scheme to a byte array. Note
+ * that
* this is *not* compatible with the standard MIME-base64 encoding.
*
* @param s the string to decode
@@ -365,7 +375,7 @@ public class BCrypt {
int i, n, l = lr[off], r = lr[off + 1];
l ^= P[0];
- for (i = 0; i <= BLOWFISH_NUM_ROUNDS - 2; ) {
+ for (i = 0; i <= BLOWFISH_NUM_ROUNDS - 2;) {
// Feistel substitution on left word
n = S[(l >> 24) & 0xff];
n += S[0x100 | ((l >> 16) & 0xff)];
@@ -388,7 +398,8 @@ public class BCrypt {
* Cycically extract a word of key material
*
* @param data the string to extract the data from
- * @param offp a "pointer" (as a one-entry array) to the current offset into data
+ * @param offp a "pointer" (as a one-entry array) to the current offset into
+ * data
* @return the next word of material from data
*/
private static int streamtoword(byte data[], int offp[]) {
@@ -420,8 +431,8 @@ public class BCrypt {
*/
private void key(byte key[]) {
int i;
- int koffp[] = {0};
- int lr[] = {0, 0};
+ int koffp[] = { 0 };
+ int lr[] = { 0, 0 };
int plen = P.length, slen = S.length;
for (i = 0; i < plen; i++) {
@@ -443,15 +454,16 @@ public class BCrypt {
/**
* Perform the "enhanced key schedule" step described by Provos and Mazieres in
- * "A Future-Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps
+ * "A Future-Adaptable Password Scheme"
+ * http://www.openbsd.org/papers/bcrypt-paper.ps
*
* @param data salt information
* @param key password information
*/
private void ekskey(byte data[], byte key[]) {
int i;
- int koffp[] = {0}, doffp[] = {0};
- int lr[] = {0, 0};
+ int koffp[] = { 0 }, doffp[] = { 0 };
+ int lr[] = { 0, 0 };
int plen = P.length, slen = S.length;
for (i = 0; i < plen; i++) {
@@ -487,7 +499,8 @@ public class BCrypt {
*
* @param password the password to hash
* @param salt the binary salt to hash with the password
- * @param log_rounds the binary logarithm of the number of rounds of hashing to apply
+ * @param log_rounds the binary logarithm of the number of rounds of hashing to
+ * apply
* @return an array containing the binary hashed password
*/
private byte[] crypt_raw(byte password[], byte salt[], int log_rounds) {
@@ -524,7 +537,8 @@ public class BCrypt {
* Hash a password using the OpenBSD bcrypt scheme
*
* @param password the password to hash
- * @param salt the salt to hash with (perhaps generated using BCrypt.gensalt)
+ * @param salt the salt to hash with (perhaps generated using
+ * BCrypt.gensalt)
* @return the hashed password
* @throws IllegalArgumentException if invalid salt is passed
*/
@@ -599,8 +613,10 @@ public class BCrypt {
/**
* Generate a salt for use with the BCrypt.hashpw() method
*
- * @param log_rounds the log2 of the number of rounds of hashing to apply - the work
- * factor therefore increases as 2**log_rounds. Minimum 4, maximum 31.
+ * @param log_rounds the log2 of the number of rounds of hashing to apply - the
+ * work
+ * factor therefore increases as 2**log_rounds. Minimum 4,
+ * maximum 31.
* @param random an instance of SecureRandom to use
* @return an encoded salt value
*/
@@ -626,8 +642,10 @@ public class BCrypt {
/**
* Generate a salt for use with the BCrypt.hashpw() method
*
- * @param log_rounds the log2 of the number of rounds of hashing to apply - the work
- * factor therefore increases as 2**log_rounds. Minimum 4, maximum 31.
+ * @param log_rounds the log2 of the number of rounds of hashing to apply - the
+ * work
+ * factor therefore increases as 2**log_rounds. Minimum 4,
+ * maximum 31.
* @return an encoded salt value
*/
public static String gensalt(int log_rounds) {
@@ -635,7 +653,8 @@ public class BCrypt {
}
/**
- * Generate a salt for use with the BCrypt.hashpw() method, selecting a reasonable
+ * Generate a salt for use with the BCrypt.hashpw() method, selecting a
+ * reasonable
* default for the number of hashing rounds to apply
*
* @return an encoded salt value
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCryptPasswordEncoder.java b/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCryptPasswordEncoder.java
index 0d570a96..0da907f2 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCryptPasswordEncoder.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/password/BCryptPasswordEncoder.java
@@ -1,15 +1,18 @@
package xiaozhi.modules.security.password;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
import java.security.SecureRandom;
import java.util.regex.Pattern;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/**
- * Implementation of PasswordEncoder that uses the BCrypt strong hashing function. Clients
- * can optionally supply a "strength" (a.k.a. log rounds in BCrypt) and a SecureRandom
- * instance. The larger the strength parameter the more work will have to be done
+ * Implementation of PasswordEncoder that uses the BCrypt strong hashing
+ * function. Clients
+ * can optionally supply a "strength" (a.k.a. log rounds in BCrypt) and a
+ * SecureRandom
+ * instance. The larger the strength parameter the more work will have to be
+ * done
* (exponentially) to hash the passwords. The default value is 10.
*
* @author Dave Syer
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordEncoder.java b/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordEncoder.java
index 40d1e95c..2de70cc2 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordEncoder.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordEncoder.java
@@ -10,20 +10,23 @@ package xiaozhi.modules.security.password;
public interface PasswordEncoder {
/**
- * Encode the raw password. Generally, a good encoding algorithm applies a SHA-1 or
+ * Encode the raw password. Generally, a good encoding algorithm applies a SHA-1
+ * or
* greater hash combined with an 8-byte or greater randomly generated salt.
*/
String encode(CharSequence rawPassword);
/**
* Verify the encoded password obtained from storage matches the submitted raw
- * password after it too is encoded. Returns true if the passwords match, false if
+ * password after it too is encoded. Returns true if the passwords match, false
+ * if
* they do not. The stored password itself is never decoded.
*
* @param rawPassword the raw password to encode and match
* @param encodedPassword the encoded password from storage to compare with
- * @return true if the raw password, after encoding, matches the encoded password from
- * storage
+ * @return true if the raw password, after encoding, matches the encoded
+ * password from
+ * storage
*/
boolean matches(CharSequence rawPassword, String encodedPassword);
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordUtils.java b/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordUtils.java
index b0357010..9144b380 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordUtils.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/password/PasswordUtils.java
@@ -18,19 +18,17 @@ public class PasswordUtils {
return passwordEncoder.encode(str);
}
-
/**
* 比较密码是否相等
*
* @param str 明文密码
* @param password 加密后密码
- * @return true:成功 false:失败
+ * @return true:成功 false:失败
*/
public static boolean matches(String str, String password) {
return passwordEncoder.matches(str, password);
}
-
public static void main(String[] args) {
String str = "admin";
String password = encode(str);
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/service/CaptchaService.java b/main/manager-api/src/main/java/xiaozhi/modules/security/service/CaptchaService.java
index b91d5d9a..9e5c153f 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/service/CaptchaService.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/service/CaptchaService.java
@@ -1,9 +1,9 @@
package xiaozhi.modules.security.service;
-import jakarta.servlet.http.HttpServletResponse;
-
import java.io.IOException;
+import jakarta.servlet.http.HttpServletResponse;
+
/**
* 验证码
* Copyright (c) 人人开源 All rights reserved.
@@ -21,7 +21,7 @@ public interface CaptchaService {
*
* @param uuid uuid
* @param code 验证码
- * @return true:成功 false:失败
+ * @return true:成功 false:失败
*/
boolean validate(String uuid, String code);
}
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/CaptchaServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/CaptchaServiceImpl.java
index 761ad139..012b4d3e 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/CaptchaServiceImpl.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/CaptchaServiceImpl.java
@@ -1,23 +1,22 @@
package xiaozhi.modules.security.service.impl;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import xiaozhi.common.redis.RedisKeys;
-import xiaozhi.common.redis.RedisUtils;
-import xiaozhi.modules.security.oauth2.Oauth2Realm;
-import xiaozhi.modules.security.service.CaptchaService;
+
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
+import xiaozhi.common.redis.RedisKeys;
+import xiaozhi.common.redis.RedisUtils;
+import xiaozhi.modules.security.service.CaptchaService;
/**
* 验证码
@@ -29,10 +28,10 @@ public class CaptchaServiceImpl implements CaptchaService {
@Value("${renren.redis.open}")
private boolean open;
/**
- * Local Cache 5分钟过期
+ * Local Cache 5分钟过期
*/
- Cache localCache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterAccess(5, TimeUnit.MINUTES).build();
- private static final Logger logger = LoggerFactory.getLogger(Oauth2Realm.class);
+ Cache localCache = CacheBuilder.newBuilder().maximumSize(1000)
+ .expireAfterAccess(5, TimeUnit.MINUTES).build();
@Override
public void create(HttpServletResponse response, String uuid) throws IOException {
@@ -41,13 +40,13 @@ public class CaptchaServiceImpl implements CaptchaService {
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
- //生成验证码
+ // 生成验证码
SpecCaptcha captcha = new SpecCaptcha(150, 40);
captcha.setLen(5);
captcha.setCharType(Captcha.TYPE_DEFAULT);
captcha.out(response.getOutputStream());
- //保存到缓存
+ // 保存到缓存
setCache(uuid, captcha.text());
}
@@ -56,10 +55,10 @@ public class CaptchaServiceImpl implements CaptchaService {
if (StringUtils.isBlank(code)) {
return false;
}
- //获取验证码
+ // 获取验证码
String captcha = getCache(uuid);
- //效验成功
+ // 效验成功
if (code.equalsIgnoreCase(captcha)) {
return true;
}
@@ -80,7 +79,7 @@ public class CaptchaServiceImpl implements CaptchaService {
if (open) {
key = RedisKeys.getCaptchaKey(key);
String captcha = (String) redisUtils.get(key);
- //删除验证码
+ // 删除验证码
if (captcha != null) {
redisUtils.delete(key);
}
@@ -89,7 +88,7 @@ public class CaptchaServiceImpl implements CaptchaService {
}
String captcha = localCache.getIfPresent(key);
- //删除验证码
+ // 删除验证码
if (captcha != null) {
localCache.invalidate(key);
}
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/ShiroServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/ShiroServiceImpl.java
index 97d16eaa..27c20970 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/ShiroServiceImpl.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/ShiroServiceImpl.java
@@ -1,17 +1,13 @@
package xiaozhi.modules.security.service.impl;
-import xiaozhi.common.user.UserDetail;
+import org.springframework.stereotype.Service;
+
+import lombok.AllArgsConstructor;
import xiaozhi.modules.security.dao.SysUserTokenDao;
import xiaozhi.modules.security.entity.SysUserTokenEntity;
import xiaozhi.modules.security.service.ShiroService;
import xiaozhi.modules.sys.dao.SysUserDao;
import xiaozhi.modules.sys.entity.SysUserEntity;
-import xiaozhi.modules.sys.enums.SuperAdminEnum;
-import lombok.AllArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
@AllArgsConstructor
@Service
@@ -19,7 +15,6 @@ public class ShiroServiceImpl implements ShiroService {
private final SysUserDao sysUserDao;
private final SysUserTokenDao sysUserTokenDao;
-
@Override
public SysUserTokenEntity getByToken(String token) {
return sysUserTokenDao.getByToken(token);
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/SysUserTokenServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/SysUserTokenServiceImpl.java
index 40ee7957..7f0d311a 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/SysUserTokenServiceImpl.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/service/impl/SysUserTokenServiceImpl.java
@@ -1,8 +1,11 @@
package xiaozhi.modules.security.service.impl;
+import java.util.Date;
+
+import org.springframework.stereotype.Service;
+
import cn.hutool.core.date.DateUtil;
import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
import xiaozhi.common.exception.ErrorCode;
import xiaozhi.common.exception.RenException;
import xiaozhi.common.page.TokenDTO;
@@ -17,11 +20,10 @@ import xiaozhi.modules.sys.dto.PasswordDTO;
import xiaozhi.modules.sys.dto.SysUserDTO;
import xiaozhi.modules.sys.service.SysUserService;
-import java.util.Date;
-
@AllArgsConstructor
@Service
-public class SysUserTokenServiceImpl extends BaseServiceImpl implements SysUserTokenService {
+public class SysUserTokenServiceImpl extends BaseServiceImpl
+ implements SysUserTokenService {
private final SysUserService sysUserService;
/**
@@ -31,18 +33,18 @@ public class SysUserTokenServiceImpl extends BaseServiceImpl createToken(Long userId) {
- //用户token
+ // 用户token
String token;
- //当前时间
+ // 当前时间
Date now = new Date();
- //过期时间
+ // 过期时间
Date expireTime = new Date(now.getTime() + EXPIRE * 1000);
- //判断是否生成过token
+ // 判断是否生成过token
SysUserTokenEntity tokenEntity = baseDao.getByUserId(userId);
if (tokenEntity == null) {
- //生成一个token
+ // 生成一个token
token = TokenGenerator.generateValue();
tokenEntity = new SysUserTokenEntity();
@@ -51,12 +53,12 @@ public class SysUserTokenServiceImpl extends BaseServiceImpl().ok(tokenDTO);
}
@Override
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/user/SecurityUser.java b/main/manager-api/src/main/java/xiaozhi/modules/security/user/SecurityUser.java
index cfa0fbf7..0581f95c 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/security/user/SecurityUser.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/security/user/SecurityUser.java
@@ -1,9 +1,10 @@
package xiaozhi.modules.security.user;
-import xiaozhi.common.user.UserDetail;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
+import xiaozhi.common.user.UserDetail;
+
/**
* Shiro工具类
* Copyright (c) 人人开源 All rights reserved.
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/admin/contrloler/AdminController.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/controller/AdminController.java
similarity index 78%
rename from main/manager-api/src/main/java/xiaozhi/modules/admin/contrloler/AdminController.java
rename to main/manager-api/src/main/java/xiaozhi/modules/sys/controller/AdminController.java
index ee46f2eb..ee551400 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/admin/contrloler/AdminController.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/controller/AdminController.java
@@ -1,13 +1,21 @@
-package xiaozhi.modules.admin.contrloler;
+package xiaozhi.modules.sys.controller;
+import java.util.Map;
+
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.web.bind.annotation.*;
import xiaozhi.common.constant.Constant;
import xiaozhi.common.page.PageData;
import xiaozhi.common.utils.Result;
@@ -16,8 +24,6 @@ import xiaozhi.modules.sys.dto.AdminPageUserDTO;
import xiaozhi.modules.sys.service.SysUserService;
import xiaozhi.modules.sys.vo.AdminPageUserVO;
-import java.util.Map;
-
/**
* 管理员控制层
*
@@ -35,7 +41,7 @@ public class AdminController {
@Operation(summary = "分页查找用户")
@RequiresPermissions("sys:role:superAdmin")
@Parameters({
- @Parameter(name = "mobile", description = "用户手机号码", required = true),
+ @Parameter(name = "mobile", description = "用户手机号码", required = false),
@Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true),
@Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true),
})
@@ -64,7 +70,7 @@ public class AdminController {
@Operation(summary = "用户删除")
@RequiresPermissions("sys:role:superAdmin")
public Result delete(@PathVariable Long id) {
- sysUserService.delete(new Long[]{id});
+ sysUserService.delete(new Long[] { id });
return new Result<>();
}
@@ -72,13 +78,13 @@ public class AdminController {
@Operation(summary = "分页查找设备")
@RequiresPermissions("sys:role:superAdmin")
@Parameters({
- @Parameter(name = "keywords", description = "用户手机号码", required = true),
+ @Parameter(name = "keywords", description = "设备关键词", required = false),
@Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true),
@Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true),
})
public Result pageDevice(
@Parameter(hidden = true) @RequestParam Map params) {
- //TODO 等设备功能模块写好
- return new Result().error(600,"等设备功能模块写好");
+ // TODO 等设备功能模块写好
+ return new Result().error(600, "等设备功能模块写好");
}
}
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/controller/SysUserController.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/controller/SysUserController.java
deleted file mode 100644
index 9da7c62b..00000000
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/controller/SysUserController.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package xiaozhi.modules.sys.controller;
-
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 用户管理
- */
-@AllArgsConstructor
-@RestController
-@RequestMapping("/sys/user")
-@Tag(name = "用户管理")
-public class SysUserController {
-
-}
\ No newline at end of file
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictDataDao.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictDataDao.java
index 08aaca5b..9dd124fe 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictDataDao.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictDataDao.java
@@ -1,12 +1,13 @@
package xiaozhi.modules.sys.dao;
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
import xiaozhi.common.dao.BaseDao;
import xiaozhi.modules.sys.dto.SysDictDataDTO;
import xiaozhi.modules.sys.entity.DictData;
import xiaozhi.modules.sys.entity.SysDictDataEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
/**
* 字典数据
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictTypeDao.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictTypeDao.java
index bca8e789..5a9d5a27 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictTypeDao.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysDictTypeDao.java
@@ -1,11 +1,12 @@
package xiaozhi.modules.sys.dao;
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
import xiaozhi.common.dao.BaseDao;
import xiaozhi.modules.sys.entity.DictType;
import xiaozhi.modules.sys.entity.SysDictTypeEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
/**
* 字典类型
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysParamsDao.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysParamsDao.java
index 0c967a74..d35d1445 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysParamsDao.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysParamsDao.java
@@ -1,11 +1,12 @@
package xiaozhi.modules.sys.dao;
-import xiaozhi.common.dao.BaseDao;
-import xiaozhi.modules.sys.entity.SysParamsEntity;
+import java.util.List;
+
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
-import java.util.List;
+import xiaozhi.common.dao.BaseDao;
+import xiaozhi.modules.sys.entity.SysParamsEntity;
/**
* 参数管理
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysUserDao.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysUserDao.java
index 339e522a..fb2a2492 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysUserDao.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dao/SysUserDao.java
@@ -1,6 +1,7 @@
package xiaozhi.modules.sys.dao;
import org.apache.ibatis.annotations.Mapper;
+
import xiaozhi.common.dao.BaseDao;
import xiaozhi.modules.sys.entity.SysUserEntity;
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/AdminPageUserDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/AdminPageUserDTO.java
index 8c0ab77c..7de3843a 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/AdminPageUserDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/AdminPageUserDTO.java
@@ -1,11 +1,11 @@
package xiaozhi.modules.sys.dto;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
/**
* 管理员分页用户的参数DTO
+ *
* @author zjy
* @since 2025-3-21
*/
@@ -13,7 +13,6 @@ import lombok.Data;
@Schema(description = "音色分页参数")
public class AdminPageUserDTO {
-
@Schema(description = "手机号码")
private String mobile;
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/PasswordDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/PasswordDTO.java
index 1ecadc68..4aabb10e 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/PasswordDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/PasswordDTO.java
@@ -1,11 +1,11 @@
package xiaozhi.modules.sys.dto;
+import java.io.Serializable;
+
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
-import java.io.Serializable;
-
/**
* 修改密码
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictDataDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictDataDTO.java
index 172e6b1f..c18dbf8f 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictDataDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictDataDTO.java
@@ -1,20 +1,21 @@
package xiaozhi.modules.sys.dto;
+import java.io.Serializable;
+import java.util.Date;
+
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
-import xiaozhi.common.utils.DateUtils;
-import xiaozhi.common.validator.group.AddGroup;
-import xiaozhi.common.validator.group.DefaultGroup;
-import xiaozhi.common.validator.group.UpdateGroup;
+
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Null;
import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
+import xiaozhi.common.utils.DateUtils;
+import xiaozhi.common.validator.group.AddGroup;
+import xiaozhi.common.validator.group.DefaultGroup;
+import xiaozhi.common.validator.group.UpdateGroup;
/**
* 字典数据
@@ -23,7 +24,6 @@ import java.util.Date;
@Schema(description = "字典数据")
public class SysDictDataDTO implements Serializable {
-
@Schema(description = "id")
@Null(message = "{id.null}", groups = AddGroup.class)
@NotNull(message = "{id.require}", groups = UpdateGroup.class)
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictTypeDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictTypeDTO.java
index 72648109..01d69795 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictTypeDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysDictTypeDTO.java
@@ -1,20 +1,21 @@
package xiaozhi.modules.sys.dto;
+import java.io.Serializable;
+import java.util.Date;
+
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
-import xiaozhi.common.utils.DateUtils;
-import xiaozhi.common.validator.group.AddGroup;
-import xiaozhi.common.validator.group.DefaultGroup;
-import xiaozhi.common.validator.group.UpdateGroup;
+
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Null;
import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
+import xiaozhi.common.utils.DateUtils;
+import xiaozhi.common.validator.group.AddGroup;
+import xiaozhi.common.validator.group.DefaultGroup;
+import xiaozhi.common.validator.group.UpdateGroup;
/**
* 字典类型
@@ -23,7 +24,6 @@ import java.util.Date;
@Schema(description = "字典类型")
public class SysDictTypeDTO implements Serializable {
-
@Schema(description = "id")
@Null(message = "{id.null}", groups = AddGroup.class)
@NotNull(message = "{id.require}", groups = UpdateGroup.class)
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysParamsDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysParamsDTO.java
index 4b72ce34..7b4dd28d 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysParamsDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysParamsDTO.java
@@ -1,19 +1,20 @@
package xiaozhi.modules.sys.dto;
+import java.io.Serializable;
+import java.util.Date;
+
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
-import xiaozhi.common.utils.DateUtils;
-import xiaozhi.common.validator.group.AddGroup;
-import xiaozhi.common.validator.group.DefaultGroup;
-import xiaozhi.common.validator.group.UpdateGroup;
+
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Null;
import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
+import xiaozhi.common.utils.DateUtils;
+import xiaozhi.common.validator.group.AddGroup;
+import xiaozhi.common.validator.group.DefaultGroup;
+import xiaozhi.common.validator.group.UpdateGroup;
/**
* 参数管理
@@ -22,7 +23,6 @@ import java.util.Date;
@Schema(description = "参数管理")
public class SysParamsDTO implements Serializable {
-
@Schema(description = "id")
@Null(message = "{id.null}", groups = AddGroup.class)
@NotNull(message = "{id.require}", groups = UpdateGroup.class)
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java
index 00f7fc78..ff066341 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java
@@ -1,22 +1,24 @@
package xiaozhi.modules.sys.dto;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import org.hibernate.validator.constraints.Range;
+
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
-import xiaozhi.common.utils.DateUtils;
-import xiaozhi.common.validator.group.AddGroup;
-import xiaozhi.common.validator.group.DefaultGroup;
-import xiaozhi.common.validator.group.UpdateGroup;
+
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Null;
import lombok.Data;
-import org.hibernate.validator.constraints.Range;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
+import xiaozhi.common.utils.DateUtils;
+import xiaozhi.common.validator.group.AddGroup;
+import xiaozhi.common.validator.group.DefaultGroup;
+import xiaozhi.common.validator.group.UpdateGroup;
/**
* 用户管理
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictData.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictData.java
index 1e16a192..c8deac81 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictData.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictData.java
@@ -1,6 +1,7 @@
package xiaozhi.modules.sys.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
+
import lombok.Data;
/**
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictType.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictType.java
index 3cf94606..4a1e2ca5 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictType.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictType.java
@@ -1,11 +1,12 @@
package xiaozhi.modules.sys.entity;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import lombok.Data;
-
import java.util.ArrayList;
import java.util.List;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+import lombok.Data;
+
/**
* 字典类型
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictDataEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictDataEntity.java
index 4bfa4b62..16d3dcae 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictDataEntity.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictDataEntity.java
@@ -1,13 +1,14 @@
package xiaozhi.modules.sys.entity;
+import java.util.Date;
+
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
-import xiaozhi.common.entity.BaseEntity;
+
import lombok.Data;
import lombok.EqualsAndHashCode;
-
-import java.util.Date;
+import xiaozhi.common.entity.BaseEntity;
/**
* 数据字典
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictTypeEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictTypeEntity.java
index ea752c63..fa372055 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictTypeEntity.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysDictTypeEntity.java
@@ -1,13 +1,14 @@
package xiaozhi.modules.sys.entity;
+import java.util.Date;
+
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
-import xiaozhi.common.entity.BaseEntity;
+
import lombok.Data;
import lombok.EqualsAndHashCode;
-
-import java.util.Date;
+import xiaozhi.common.entity.BaseEntity;
/**
* 字典类型
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysParamsEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysParamsEntity.java
index 054e51d7..989800e2 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysParamsEntity.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysParamsEntity.java
@@ -1,13 +1,14 @@
package xiaozhi.modules.sys.entity;
+import java.util.Date;
+
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
-import xiaozhi.common.entity.BaseEntity;
+
import lombok.Data;
import lombok.EqualsAndHashCode;
-
-import java.util.Date;
+import xiaozhi.common.entity.BaseEntity;
/**
* 参数管理
@@ -25,7 +26,7 @@ public class SysParamsEntity extends BaseEntity {
*/
private String paramValue;
/**
- * 类型 0:系统参数 1:非系统参数
+ * 类型 0:系统参数 1:非系统参数
*/
private Integer paramType;
/**
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysUserEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysUserEntity.java
index 0093fcf0..23043a37 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysUserEntity.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/entity/SysUserEntity.java
@@ -1,14 +1,15 @@
package xiaozhi.modules.sys.entity;
+import java.util.Date;
+
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
+
import lombok.Data;
import lombok.EqualsAndHashCode;
import xiaozhi.common.entity.BaseEntity;
-import java.util.Date;
-
/**
* 系统用户
*/
@@ -25,11 +26,11 @@ public class SysUserEntity extends BaseEntity {
*/
private String password;
/**
- * 超级管理员 0:否 1:是
+ * 超级管理员 0:否 1:是
*/
private Integer superAdmin;
/**
- * 状态 0:停用 1:正常
+ * 状态 0:停用 1:正常
*/
private Integer status;
/**
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/redis/SysParamsRedis.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/redis/SysParamsRedis.java
index dcc14f69..2e2bdb42 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/redis/SysParamsRedis.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/redis/SysParamsRedis.java
@@ -1,9 +1,10 @@
package xiaozhi.modules.sys.redis;
+import org.springframework.stereotype.Component;
+
+import lombok.AllArgsConstructor;
import xiaozhi.common.redis.RedisKeys;
import xiaozhi.common.redis.RedisUtils;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Component;
/**
* 参数管理
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictDataService.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictDataService.java
index 77be8b3a..a33df029 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictDataService.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictDataService.java
@@ -1,12 +1,12 @@
package xiaozhi.modules.sys.service;
+import java.util.Map;
+
import xiaozhi.common.page.PageData;
import xiaozhi.common.service.BaseService;
import xiaozhi.modules.sys.dto.SysDictDataDTO;
import xiaozhi.modules.sys.entity.SysDictDataEntity;
-import java.util.Map;
-
/**
* 数据字典
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictTypeService.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictTypeService.java
index 8924f6ca..a18e086f 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictTypeService.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysDictTypeService.java
@@ -1,14 +1,14 @@
package xiaozhi.modules.sys.service;
+import java.util.List;
+import java.util.Map;
+
import xiaozhi.common.page.PageData;
import xiaozhi.common.service.BaseService;
import xiaozhi.modules.sys.dto.SysDictTypeDTO;
import xiaozhi.modules.sys.entity.DictType;
import xiaozhi.modules.sys.entity.SysDictTypeEntity;
-import java.util.List;
-import java.util.Map;
-
/**
* 数据字典
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysParamsService.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysParamsService.java
index d13e41ba..7475f346 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysParamsService.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysParamsService.java
@@ -1,14 +1,13 @@
package xiaozhi.modules.sys.service;
+import java.util.List;
+import java.util.Map;
import xiaozhi.common.page.PageData;
import xiaozhi.common.service.BaseService;
import xiaozhi.modules.sys.dto.SysParamsDTO;
import xiaozhi.modules.sys.entity.SysParamsEntity;
-import java.util.List;
-import java.util.Map;
-
/**
* 参数管理
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserService.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserService.java
index f8f609dc..261fbf96 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserService.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserService.java
@@ -8,7 +8,6 @@ import xiaozhi.modules.sys.dto.SysUserDTO;
import xiaozhi.modules.sys.entity.SysUserEntity;
import xiaozhi.modules.sys.vo.AdminPageUserVO;
-
/**
* 系统用户
*/
@@ -24,26 +23,31 @@ public interface SysUserService extends BaseService {
/**
* 验证是否允许修改密码更改
- * @param userId 用户id
+ *
+ * @param userId 用户id
* @param passwordDTO 验证密码的参数
*/
void changePassword(Long userId, PasswordDTO passwordDTO);
/**
* 直接修改密码,不需要验证
- * @param userId 用户id
+ *
+ * @param userId 用户id
* @param password 密码
*/
void changePasswordDirectly(Long userId, String password);
/**
* 重置密码
+ *
* @param userId 用户id
* @return 随机生成符合规范的密码
*/
String resetPassword(Long userId);
+
/**
* 管理员分页用户信息
+ *
* @param dto 分页查找参数
* @return 用户列表分页数据
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java
index a8420dc9..20530e6b 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java
@@ -1,10 +1,15 @@
package xiaozhi.modules.sys.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.Arrays;
+import java.util.Map;
+
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
import xiaozhi.common.page.PageData;
import xiaozhi.common.service.impl.BaseServiceImpl;
import xiaozhi.common.utils.ConvertUtils;
@@ -13,21 +18,18 @@ import xiaozhi.modules.sys.dto.SysDictDataDTO;
import xiaozhi.modules.sys.entity.SysDictDataEntity;
import xiaozhi.modules.sys.service.SysDictDataService;
-import java.util.Arrays;
-import java.util.Map;
-
/**
* 字典类型
*/
@Service
-public class SysDictDataServiceImpl extends BaseServiceImpl implements SysDictDataService {
+public class SysDictDataServiceImpl extends BaseServiceImpl
+ implements SysDictDataService {
@Override
public PageData page(Map params) {
IPage page = baseDao.selectPage(
getPage(params, "sort", true),
- getWrapper(params)
- );
+ getWrapper(params));
return getPageData(page, SysDictDataDTO.class);
}
@@ -71,7 +73,7 @@ public class SysDictDataServiceImpl extends BaseServiceImpl implements SysDictTypeService {
+public class SysDictTypeServiceImpl extends BaseServiceImpl
+ implements SysDictTypeService {
private final SysDictDataDao sysDictDataDao;
@Override
public PageData page(Map params) {
IPage page = baseDao.selectPage(
getPage(params, "sort", true),
- getWrapper(params)
- );
+ getWrapper(params));
return getPageData(page, SysDictTypeDTO.class);
}
@@ -76,7 +78,7 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl page(Map params) {
IPage page = baseDao.selectPage(
getPage(params, Constant.CREATE_DATE, false),
- getWrapper(params)
- );
+ getWrapper(params));
return getPageData(page, SysParamsDTO.class);
}
@@ -86,12 +87,12 @@ public class SysParamsServiceImpl extends BaseServiceImpl paramCodeList = baseDao.getParamCodeList(ids);
String[] paramCodes = paramCodeList.toArray(new String[paramCodeList.size()]);
sysParamsRedis.delete(paramCodes);
- //删除
+ // 删除
deleteBatchIds(Arrays.asList(ids));
}
@@ -114,7 +115,7 @@ public class SysParamsServiceImpl extends BaseServiceImpl page(AdminPageUserDTO dto) {
Map params = new HashMap();
params.put(Constant.PAGE, dto.getPage());
- params.put(Constant.LIMIT,dto.getLimit());
+ params.put(Constant.LIMIT, dto.getLimit());
IPage page = baseDao.selectPage(
getPage(params, "id", true),
- //定义查询条件
+ // 定义查询条件
new QueryWrapper()
- //必须按照手机号码查找
- .eq(StringUtils.isNotBlank(dto.getMobile()),"username",dto.getMobile()));
+ // 必须按照手机号码查找
+ .eq(StringUtils.isNotBlank(dto.getMobile()), "username", dto.getMobile()));
List list = page.getRecords().stream().map(user -> {
AdminPageUserVO adminPageUserVO = new AdminPageUserVO();
adminPageUserVO.setUserid(user.getId().toString());
adminPageUserVO.setMobile(user.getUsername());
- //TODO 2. 等设备功能写好,获取对应数据
+ // TODO 2. 等设备功能写好,获取对应数据
adminPageUserVO.setDeviceCount("0");
return adminPageUserVO;
}).toList();
@@ -169,11 +173,13 @@ public class SysUserServiceImpl extends BaseServiceImpl update(
- @PathVariable Long id,
+ @PathVariable String id,
@RequestBody TimbreDataDTO dto) {
ValidatorUtils.validateEntity(dto);
timbreService.update(id, dto);
@@ -76,10 +85,9 @@ public class TimbreController {
@DeleteMapping("/{id}")
@Operation(summary = "音色删除")
@RequiresPermissions("sys:role:superAdmin")
- public Result delete(@PathVariable Long id) {
- timbreService.delete(new Long[]{id});
+ public Result delete(@PathVariable String id) {
+ timbreService.delete(new String[] { id });
return new Result<>();
}
-
}
\ No newline at end of file
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/timbre/dao/TimbreDao.java b/main/manager-api/src/main/java/xiaozhi/modules/timbre/dao/TimbreDao.java
index 62afa358..3656b4ea 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/timbre/dao/TimbreDao.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/timbre/dao/TimbreDao.java
@@ -1,11 +1,14 @@
package xiaozhi.modules.timbre.dao;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
import xiaozhi.modules.timbre.entity.TimbreEntity;
/**
* 音色持久层定义
+ *
* @author zjy
* @since 2025-3-21
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbreDataDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbreDataDTO.java
index 08ed9b18..ed737db9 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbreDataDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbreDataDTO.java
@@ -5,9 +5,9 @@ import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
-
/**
* 音色表数据DTO
+ *
* @author zjy
* @since 2025-3-21
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbrePageDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbrePageDTO.java
index 72ed68b1..9c2aaf24 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbrePageDTO.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/timbre/dto/TimbrePageDTO.java
@@ -6,6 +6,7 @@ import lombok.Data;
/**
* 音色分页参数DTO
+ *
* @author zjy
* @since 2025-3-21
*/
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/timbre/entity/TimbreEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/timbre/entity/TimbreEntity.java
index 71bd58a9..3d6e5ba1 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/timbre/entity/TimbreEntity.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/timbre/entity/TimbreEntity.java
@@ -1,15 +1,18 @@
package xiaozhi.modules.timbre.entity;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import xiaozhi.common.entity.BaseEntity;
-
import java.util.Date;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
/**
* 音色表实体类
+ *
* @author zjy
* @since 2025-3-21
*/
@@ -17,7 +20,10 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = false)
@TableName("ai_tts_voice")
@Schema(description = "音色信息")
-public class TimbreEntity extends BaseEntity {
+public class TimbreEntity {
+
+ @Schema(description = "id")
+ private String id;
@Schema(description = "语言")
private String languages;
@@ -41,8 +47,19 @@ public class TimbreEntity extends BaseEntity {
private String voiceDemo;
@Schema(description = "更新者")
+ @TableField(fill = FieldFill.UPDATE)
private Long updater;
@Schema(description = "更新时间")
+ @TableField(fill = FieldFill.UPDATE)
private Date updateDate;
+
+ @Schema(description = "创建者")
+ @TableField(fill = FieldFill.INSERT)
+ private Long creator;
+
+ @Schema(description = "创建时间")
+ @TableField(fill = FieldFill.INSERT)
+ private Date createDate;
+
}
\ No newline at end of file
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/TimbreService.java b/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/TimbreService.java
index 044322e5..4519e17a 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/TimbreService.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/TimbreService.java
@@ -1,5 +1,7 @@
package xiaozhi.modules.timbre.service;
+import java.util.List;
+
import xiaozhi.common.page.PageData;
import xiaozhi.common.service.BaseService;
import xiaozhi.modules.timbre.dto.TimbreDataDTO;
@@ -7,17 +9,16 @@ import xiaozhi.modules.timbre.dto.TimbrePageDTO;
import xiaozhi.modules.timbre.entity.TimbreEntity;
import xiaozhi.modules.timbre.vo.TimbreDetailsVO;
-import java.util.List;
-
-
/**
* 音色的业务层的定义
+ *
* @author zjy
* @since 2025-3-21
*/
public interface TimbreService extends BaseService {
/**
* 分页获取音色指定tts的下的音色
+ *
* @param dto 分页查找参数
* @return 音色列表分页数据
*/
@@ -25,6 +26,7 @@ public interface TimbreService extends BaseService {
/**
* 获取音色指定id的详情信息
+ *
* @param timbreId 音色表id
* @return 音色信息
*/
@@ -32,22 +34,25 @@ public interface TimbreService extends BaseService {
/**
* 保存音色信息
+ *
* @param dto 需要保存数据
*/
void save(TimbreDataDTO dto);
/**
* 保存音色信息
+ *
* @param timbreId 需要修改的id
- * @param dto 需要修改的数据
+ * @param dto 需要修改的数据
*/
- void update(Long timbreId,TimbreDataDTO dto);
+ void update(String timbreId, TimbreDataDTO dto);
/**
* 批量删除音色
+ *
* @param ids 需要被删除的音色id列表
*/
- void delete(Long[] ids);
+ void delete(String[] ids);
List getVoiceNames(String ttsModelId, String voiceName);
}
\ No newline at end of file
diff --git a/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java
index fa2731bd..9496b6d5 100644
--- a/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java
+++ b/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java
@@ -1,12 +1,19 @@
package xiaozhi.modules.timbre.service.impl;
-import cn.hutool.core.collection.CollectionUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import lombok.AllArgsConstructor;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.AllArgsConstructor;
import xiaozhi.common.constant.Constant;
import xiaozhi.common.page.PageData;
import xiaozhi.common.service.impl.BaseServiceImpl;
@@ -18,13 +25,9 @@ import xiaozhi.modules.timbre.entity.TimbreEntity;
import xiaozhi.modules.timbre.service.TimbreService;
import xiaozhi.modules.timbre.vo.TimbreDetailsVO;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
/**
* 音色的业务层的实现
+ *
* @author zjy
* @since 2025-3-21
*/
@@ -38,16 +41,15 @@ public class TimbreServiceImpl extends BaseServiceImpl
public PageData page(TimbrePageDTO dto) {
Map params = new HashMap();
params.put(Constant.PAGE, dto.getPage());
- params.put(Constant.LIMIT,dto.getLimit());
+ params.put(Constant.LIMIT, dto.getLimit());
IPage page = baseDao.selectPage(
getPage(params, "sort", true),
- //定义查询条件
+ // 定义查询条件
new QueryWrapper()
- //必须按照ttsID查找
- .eq("tts_model_id",dto.getTtsModelId())
- //如果有音色名字,按照音色名模糊查找
- .like(StringUtils.isNotBlank(dto.getName()),"name",dto.getName())
- );
+ // 必须按照ttsID查找
+ .eq("tts_model_id", dto.getTtsModelId())
+ // 如果有音色名字,按照音色名模糊查找
+ .like(StringUtils.isNotBlank(dto.getName()), "name", dto.getName()));
return getPageData(page, TimbreDetailsVO.class);
}
@@ -68,7 +70,7 @@ public class TimbreServiceImpl extends BaseServiceImpl
@Override
@Transactional(rollbackFor = Exception.class)
- public void update(Long timbreId, TimbreDataDTO dto) {
+ public void update(String timbreId, TimbreDataDTO dto) {
isTtsModelId(dto.getTtsModelId());
TimbreEntity timbreEntity = ConvertUtils.sourceToTarget(dto, TimbreEntity.class);
timbreEntity.setId(timbreId);
@@ -77,14 +79,14 @@ public class TimbreServiceImpl extends BaseServiceImpl
@Override
@Transactional(rollbackFor = Exception.class)
- public void delete(Long[] ids) {
+ public void delete(String[] ids) {
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public List getVoiceNames(String ttsModelId, String voiceName) {
QueryWrapper