Ver Fonte

优化旧语法2

tsurumure há 10 meses atrás
pai
commit
ba12a31eb6

+ 3 - 1
src/main/java/com/backendsys/config/Security/SecurityConfig.java

@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
@@ -22,7 +23,8 @@ import java.util.Arrays;
 @Configuration
 @EnableWebSecurity // 开启网络安全注解
 @RequiredArgsConstructor
-@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
+//@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
+@EnableMethodSecurity(securedEnabled = true)
 public class SecurityConfig {
 
     private final JwtAuthenticationFilter jwtAuthenticationFilter;

+ 22 - 22
src/main/java/com/backendsys/config/Security/utils/JwtUtil.java

@@ -10,7 +10,10 @@ import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.stereotype.Service;
 
 import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.nio.charset.StandardCharsets;
 import java.security.Key;
+import java.util.Base64;
 import java.util.Date;
 import java.util.Map;
 import java.util.function.Function;
@@ -40,11 +43,6 @@ public class JwtUtil {
      */
     // private static final long TOKEN_EXPIRED = 86400000;
 
-    private SecretKey getSigningKey() {
-        byte[] keyBytes = Decoders.BASE64.decode(SECRET_KEY);
-        return Keys.hmacShaKeyFor(keyBytes);
-    }
-
     /**
      * 创建Token (sysUser 系统用户 实体类)
      */
@@ -53,7 +51,8 @@ public class JwtUtil {
         return Jwts.builder()
                 // 代表这个JWT的主体,即它的所有人 / 主题
 //                .setSubject(String.valueOf(sysUser.get("id")))
-                .setSubject(String.valueOf(sysUser.get("last_login_uuid")))
+//                .setSubject(String.valueOf(sysUser.get("last_login_uuid")))
+                .subject(String.valueOf(sysUser.get("last_login_uuid")))
                 // .setId("System")
                 // .setAudience("aaaaaaa")
 //                .setSubject("JWT AUTH")
@@ -69,8 +68,9 @@ public class JwtUtil {
                 .claim("modules", sysUser.get("modules"))
                 .claim("target", "System")
 //                .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
-                .signWith(getSigningKey())
-                .setExpiration(expiration)
+                .signWith(getSignInKey())
+//                .setExpiration(expiration)
+                .expiration(expiration)
                 .compact();
     }
 
@@ -81,12 +81,14 @@ public class JwtUtil {
         Date expiration = (Date) sysMember.get("token_expiration");
         return Jwts.builder()
 //                .setSubject(String.valueOf(sysMember.get("id")))
-                .setSubject(String.valueOf(sysMember.get("last_login_uuid")))
+//                .setSubject(String.valueOf(sysMember.get("last_login_uuid")))
+                .subject(String.valueOf(sysMember.get("last_login_uuid")))
                 .claim("member_id", sysMember.get("id"))
                 .claim("open_id", sysMember.get("open_id"))
                 .claim("target", "Member")
-                .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
-                .setExpiration(expiration)
+//                .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
+                .signWith(getSignInKey())
+                .expiration(expiration)
                 .compact();
     }
 
@@ -96,23 +98,21 @@ public class JwtUtil {
      * @return
      */
     public Claims extractAllClaims(String token){
-        return Jwts
-                .parser()
-                // 获取alg开头的信息
-                .setSigningKey(getSignInKey())
-                .build()
-                // 解析token字符串
-                .parseClaimsJws(token)
-                .getBody();
+//        return Jwts.parser().setSigningKey(getSignInKey()).build().parseClaimsJws(token).getBody();
+        return Jwts.parser().verifyWith(getSignInKey()).build().parseSignedClaims(token).getPayload();
     }
 
     /**
      * 2、获取签名密钥的方法
      * @return 基于指定的密钥字节数组创建用于HMAC-SHA算法的新SecretKey实例
      */
-    private Key getSignInKey() {
-        byte[] keyBytes = Decoders.BASE64.decode(SECRET_KEY);
-        return Keys.hmacShaKeyFor(keyBytes);
+//    private Key getSignInKey() {
+//        byte[] keyBytes = Decoders.BASE64.decode(SECRET_KEY);
+//        return Keys.hmacShaKeyFor(keyBytes);
+//    }
+    private SecretKey getSignInKey() {
+        byte[] bytes = Base64.getDecoder().decode(SECRET_KEY.getBytes(StandardCharsets.UTF_8));
+        return new SecretKeySpec(bytes, "HmacSHA256");
     }
 
     /**

+ 42 - 42
src/main/java/com/backendsys/config/Serializer/MyBeanSerializerModifier.java

@@ -1,42 +1,42 @@
-package com.backendsys.config.Serializer;
-
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializationConfig;
-import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
-import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
-
-import java.util.List;
-import java.util.Set;
-
-public class MyBeanSerializerModifier extends BeanSerializerModifier {
-
-    //  数组类型
-    private JsonSerializer _nullArrayJsonSerializer = new MyNullArrayJsonSerializer();
-    // 字符串等类型
-    private JsonSerializer _nullJsonSerializer = new MyNullJsonSerializer();
-
-    @Override
-    public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc,
-                                                     List beanProperties) {
-        //循环所有的beanPropertyWriter
-        for (int i = 0; i < beanProperties.size(); i++) {
-            BeanPropertyWriter writer = (BeanPropertyWriter) beanProperties.get(i);
-            //判断字段的类型,如果是array,list,set则注册nullSerializer
-            if (isArrayType(writer)) {
-                //给writer注册一个自己的nullSerializer
-                writer.assignNullSerializer(this._nullArrayJsonSerializer);
-            } else {
-                writer.assignNullSerializer(this._nullJsonSerializer);
-            }
-        }
-        return beanProperties;
-    }
-
-    //判断是什么类型
-    protected boolean isArrayType(BeanPropertyWriter writer) {
-        Class clazz = writer.getPropertyType();
-        return clazz.isArray() || clazz.equals(List.class) || clazz.equals(Set.class);
-    }
-
-}
+//package com.backendsys.config.Serializer;
+//
+//import com.fasterxml.jackson.databind.BeanDescription;
+//import com.fasterxml.jackson.databind.JsonSerializer;
+//import com.fasterxml.jackson.databind.SerializationConfig;
+//import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
+//import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
+//
+//import java.util.List;
+//import java.util.Set;
+//
+//public class MyBeanSerializerModifier extends BeanSerializerModifier {
+//
+//    //  数组类型
+//    private JsonSerializer _nullArrayJsonSerializer = new MyNullArrayJsonSerializer();
+//    // 字符串等类型
+//    private JsonSerializer _nullJsonSerializer = new MyNullJsonSerializer();
+//
+//    @Override
+//    public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc,
+//                                                     List beanProperties) {
+//        //循环所有的beanPropertyWriter
+//        for (int i = 0; i < beanProperties.size(); i++) {
+//            BeanPropertyWriter writer = (BeanPropertyWriter) beanProperties.get(i);
+//            //判断字段的类型,如果是array,list,set则注册nullSerializer
+//            if (isArrayType(writer)) {
+//                //给writer注册一个自己的nullSerializer
+//                writer.assignNullSerializer(this._nullArrayJsonSerializer);
+//            } else {
+//                writer.assignNullSerializer(this._nullJsonSerializer);
+//            }
+//        }
+//        return beanProperties;
+//    }
+//
+//    //判断是什么类型
+//    protected boolean isArrayType(BeanPropertyWriter writer) {
+//        Class clazz = writer.getPropertyType();
+//        return clazz.isArray() || clazz.equals(List.class) || clazz.equals(Set.class);
+//    }
+//
+//}

+ 15 - 15
src/main/java/com/backendsys/controller/v1/Systems/SysSMSController.java

@@ -44,20 +44,20 @@ public class SysSMSController {
         return Result.success(sdkTencentSMSService.getSMSStatistics(beginTime, endTime));
     }
 
-    /**
-     * [腾讯云] 套餐包信息统计
-     */
-    @GetMapping("/api/system/sms/getSmsPackagesStatistics")
-    public Result getSmsPackagesStatistics(String beginTime, String endTime) {
-        return Result.success(sdkTencentSMSService.getSmsPackagesStatistics(beginTime, endTime));
-    }
-
-    /**
-     * [腾讯云] 号码信息查询 { phones: "13xxxxx, 13xxxxx" }
-     */
-    @GetMapping("/api/system/sms/getDescribePhoneNumberInfo")
-    public Result getDescribePhoneNumberInfo(String phones) {
-        return Result.success(sdkTencentSMSService.getDescribePhoneNumberInfo(phones));
-    }
+//    /**
+//     * [腾讯云] 套餐包信息统计
+//     */
+//    @GetMapping("/api/system/sms/getSmsPackagesStatistics")
+//    public Result getSmsPackagesStatistics(String beginTime, String endTime) {
+//        return Result.success(sdkTencentSMSService.getSmsPackagesStatistics(beginTime, endTime));
+//    }
+
+//    /**
+//     * [腾讯云] 号码信息查询 { phones: "13xxxxx, 13xxxxx" }
+//     */
+//    @GetMapping("/api/system/sms/getDescribePhoneNumberInfo")
+//    public Result getDescribePhoneNumberInfo(String phones) {
+//        return Result.success(sdkTencentSMSService.getDescribePhoneNumberInfo(phones));
+//    }
 
 }

+ 20 - 15
src/main/java/com/backendsys/service/v1/Ai/AiGenerateVideoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.backendsys.service.v1.Ai;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -38,23 +39,26 @@ public class AiGenerateVideoServiceImpl implements AiGenerateVideoService {
 
         Integer error_code = (Integer) MapUtil.get(resp, "error_code");
         if (error_code == null || error_code == 0) {
-            String statusCode = (String) MapUtil.get(resp, "data.statusCode");
+            String statusCode = Convert.toStr(MapUtil.get(resp, "data.statusCode"));
             if (!statusCode.equals("3")) {
                 //  更新进度
                 AiGenerateVideoDTO aiGenerateVideoDTO = new AiGenerateVideoDTO();
                 aiGenerateVideoDTO.setJob_id(job_id);
                 aiGenerateVideoDTO.setUser_id(user_id);
-                aiGenerateVideoDTO.setJob_status((String) MapUtil.get(resp, "data.statusCode"));
-                aiGenerateVideoDTO.setResult_video_url((String) MapUtil.get(resp, "data.videoAddr"));
-                aiGenerateVideoDTO.setResult_fail_reason((String) MapUtil.get(resp, "data.failReason"));
-                aiGenerateVideoDTO.setResult_video_url((String) MapUtil.get(resp, "data.videoAddr"));
-
-                // 任务所使用的素材库,original为原文素材
-                List<String> mediaLibsList = (List<String>) MapUtil.get(resp, "data.mediaLibs");
-                if (mediaLibsList != null) {
-                    System.out.println(mediaLibsList);
-                    // aiGenerateVideoDTO.setResult_points((String) MapUtil.get(resp, "data.mediaLibs.points"));
-                }
+//                aiGenerateVideoDTO.setJob_status((String) MapUtil.get(resp, "data.statusCode"));
+//                aiGenerateVideoDTO.setResult_video_url((String) MapUtil.get(resp, "data.videoAddr"));
+//                aiGenerateVideoDTO.setResult_fail_reason((String) MapUtil.get(resp, "data.failReason"));
+
+                aiGenerateVideoDTO.setJob_status(Convert.toStr(MapUtil.get(resp, "data.statusCode")));
+                aiGenerateVideoDTO.setResult_video_url(Convert.toStr(MapUtil.get(resp, "data.videoAddr")));
+                aiGenerateVideoDTO.setResult_fail_reason(Convert.toStr(MapUtil.get(resp, "data.failReason")));
+
+//                // 任务所使用的素材库,original为原文素材 (不安全接口)
+//                List<String> mediaLibsList = (List<String>) MapUtil.get(resp, "data.mediaLibs");
+//                if (mediaLibsList != null) {
+//                    System.out.println(mediaLibsList);
+//                    // aiGenerateVideoDTO.setResult_points((String) MapUtil.get(resp, "data.mediaLibs.points"));
+//                }
 //                System.out.println(aiGenerateVideoDTO);
                 aiGenerateVideoMapper.updateAiGenerateVideo(aiGenerateVideoDTO);
             }
@@ -84,11 +88,12 @@ public class AiGenerateVideoServiceImpl implements AiGenerateVideoService {
         System.out.println(resp);
 
         // 提交定制成功后,将数据插入表;失败则抛出错误
-        Integer error_code = (Integer) MapUtil.get(resp, "error_code");
+
+//        Integer error_code = (Integer) MapUtil.get(resp, "error_code");
+        Integer error_code = Convert.toInt(MapUtil.get(resp, "error_code"));
         if (error_code == null || error_code == 0) {
 
-            System.out.println("setJob_id: ");
-            System.out.println((Long) MapUtil.get(resp, "data.jobId"));
+            System.out.println("setJob_id: " + MapUtil.get(resp, "data.jobId"));
 
             aiGenerateVideoDTO.setJob_id((Long) MapUtil.get(resp, "data.jobId"));
             // 数组 转 字符串

+ 3 - 3
src/main/java/com/backendsys/service/v1/SDKService/SDKTencent/SDKTencentSMSService.java

@@ -17,9 +17,9 @@ public interface SDKTencentSMSService {
     Map<String, Object> getSMSStatistics(String beginTime, String endTime);
 
     // [腾讯云] 套餐包信息统计
-    List<Map<String, Object>> getSmsPackagesStatistics(String beginTime, String endTime);
+//    List<Map<String, Object>> getSmsPackagesStatistics(String beginTime, String endTime);
 
-    // [腾讯云] 号码信息查询
-    List<Map<String, Object>> getDescribePhoneNumberInfo(String phones);
+//    // [腾讯云] 号码信息查询
+//    List<Map<String, Object>> getDescribePhoneNumberInfo(String phones);
 
 }

+ 112 - 112
src/main/java/com/backendsys/service/v1/SDKService/SDKTencent/SDKTencentSMSServiceImpl.java

@@ -96,16 +96,16 @@ public class SDKTencentSMSServiceImpl implements SDKTencentSMSService {
             String phone = sysSMSDTO.getPhone();
             Integer phoneAreaCode = sysSMSDTO.getPhone_area_code();
 
-            // [腾讯云] 号码信息查询 (判断手机号码是否有效)
-            List<Map<String, Object>> phoneInfoList = getDescribePhoneNumberInfo(phoneAreaCode + phone);
-            if (phoneInfoList != null) {
-                Map<String, Object> phoneInfo = phoneInfoList.get(0);
-                String code = (String) phoneInfo.get("code");
-                if (!"Ok".equals(code)) {
-                    String message = (String) phoneInfo.get("message");
-                    throw new CustomException("发送失败,请检查手机号码格式", 6001, phoneInfo);
-                }
-            }
+//            // [腾讯云] 号码信息查询 (判断手机号码是否有效)
+//            List<Map<String, Object>> phoneInfoList = getDescribePhoneNumberInfo(phoneAreaCode + phone);
+//            if (phoneInfoList != null) {
+//                Map<String, Object> phoneInfo = phoneInfoList.get(0);
+//                String code = (String) phoneInfo.get("code");
+//                if (!"Ok".equals(code)) {
+//                    String message = (String) phoneInfo.get("message");
+//                    throw new CustomException("发送失败,请检查手机号码格式", 6001, phoneInfo);
+//                }
+//            }
 
             // ----------------------------------------------------------------------
             Credential cred = new Credential(SECRET_ID, SECRET_KEY);
@@ -302,110 +302,110 @@ public class SDKTencentSMSServiceImpl implements SDKTencentSMSService {
     /**
      * [腾讯云] 套餐包信息统计
      */
-    @Override
-    public List<Map<String, Object>> getSmsPackagesStatistics(String beginTime, String endTime) {
-        try {
-
-            // ----------------------------------------------------------------------
-            Credential cred = new Credential(SECRET_ID, SECRET_KEY);
-            ClientProfile clientProfile = new ClientProfile();
-            SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
-
-            SmsPackagesStatisticsRequest req = new SmsPackagesStatisticsRequest();
-            req.setSmsSdkAppId(sdkAppId);
-            req.setLimit(100L);
-            req.setOffset(0L);
-            req.setBeginTime((String) getCurrentAndBeforeDate(beginTime, endTime, 7).get("beginTime"));
-            req.setEndTime(((String) getCurrentAndBeforeDate(beginTime, endTime, 7).get("endTime")));
-
-            /* 通过 client 对象调用 SendStatusStatistics 方法发起请求。注意请求方法名与请求对象是对应的
-             * 返回的 res 是一个 SendStatusStatisticsResponse 类的实例,与请求对象对应 */
-            SmsPackagesStatisticsResponse res = client.SmsPackagesStatistics(req);
-
-            // 输出json格式的字符串回包
-            String resString = SendStatusStatisticsResponse.toJsonString(res);
-            JSONObject resp = JSONUtil.parseObj(resString);
-
-            System.out.println(resp);
-            /*
-            {
-                "SmsPackagesStatisticsSet": [
-                    {
-                        "PackageCreateTime": 1713863741,
-                        "PackageEffectiveTime": 1713863741,
-                        "PackageExpiredTime": 1721726141,
-                        "PackageAmount": 500,
-                        "PackageType": 0,
-                        "PackageId": 1002730611,
-                        "CurrentUsage": 13
-                    }
-                ],
-                "RequestId": "15f81795-7a14-43cc-9215-efcc8886e1af"
-            }
-             */
-            List<Map<String, Object>> list = (List<Map<String, Object>>) MapUtil.get(resp, "SmsPackagesStatisticsSet");
-            List<Map<String, Object>> result = ListUtil.convertToUnderscoreCase(list);
-
-            return result;
-
-
-        } catch (TencentCloudSDKException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
+//    @Override
+//    public List<Map<String, Object>> getSmsPackagesStatistics(String beginTime, String endTime) {
+//        try {
+//
+//            // ----------------------------------------------------------------------
+//            Credential cred = new Credential(SECRET_ID, SECRET_KEY);
+//            ClientProfile clientProfile = new ClientProfile();
+//            SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
+//
+//            SmsPackagesStatisticsRequest req = new SmsPackagesStatisticsRequest();
+//            req.setSmsSdkAppId(sdkAppId);
+//            req.setLimit(100L);
+//            req.setOffset(0L);
+//            req.setBeginTime((String) getCurrentAndBeforeDate(beginTime, endTime, 7).get("beginTime"));
+//            req.setEndTime(((String) getCurrentAndBeforeDate(beginTime, endTime, 7).get("endTime")));
+//
+//            /* 通过 client 对象调用 SendStatusStatistics 方法发起请求。注意请求方法名与请求对象是对应的
+//             * 返回的 res 是一个 SendStatusStatisticsResponse 类的实例,与请求对象对应 */
+//            SmsPackagesStatisticsResponse res = client.SmsPackagesStatistics(req);
+//
+//            // 输出json格式的字符串回包
+//            String resString = SendStatusStatisticsResponse.toJsonString(res);
+//            JSONObject resp = JSONUtil.parseObj(resString);
+//
+//            System.out.println(resp);
+//            /*
+//            {
+//                "SmsPackagesStatisticsSet": [
+//                    {
+//                        "PackageCreateTime": 1713863741,
+//                        "PackageEffectiveTime": 1713863741,
+//                        "PackageExpiredTime": 1721726141,
+//                        "PackageAmount": 500,
+//                        "PackageType": 0,
+//                        "PackageId": 1002730611,
+//                        "CurrentUsage": 13
+//                    }
+//                ],
+//                "RequestId": "15f81795-7a14-43cc-9215-efcc8886e1af"
+//            }
+//             */
+//            List<Map<String, Object>> list = (List<Map<String, Object>>) MapUtil.get(resp, "SmsPackagesStatisticsSet");
+//            List<Map<String, Object>> result = ListUtil.convertToUnderscoreCase(list);
+//
+//            return result;
+//
+//
+//        } catch (TencentCloudSDKException e) {
+//            e.printStackTrace();
+//        }
+//        return null;
+//    }
 
     /**
      * [腾讯云] 号码信息查询
      */
-    @Override
-    public List<Map<String, Object>> getDescribePhoneNumberInfo(String phones) {
-        try {
-
-            if (phones == null) {
-                throw new CustomException("手机号码不能为空");
-            }
-            String[] phoneNumberSet = phones.split(",");
-
-            // ----------------------------------------------------------------------
-            Credential cred = new Credential(SECRET_ID, SECRET_KEY);
-            ClientProfile clientProfile = new ClientProfile();
-            SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
-
-            DescribePhoneNumberInfoRequest req = new DescribePhoneNumberInfoRequest();
-            req.setPhoneNumberSet(phoneNumberSet);
-
-            DescribePhoneNumberInfoResponse res = client.DescribePhoneNumberInfo(req);
-
-            // 输出json格式的字符串回包
-            String resString = SendStatusStatisticsResponse.toJsonString(res);
-            JSONObject resp = JSONUtil.parseObj(resString);
-            /*
-            {
-                "PhoneNumberInfoSet": [
-                    {
-                        "Code": "InvalidParameterValue.IncorrectPhoneNumber",
-                        "Message": "incorrect phoneNumber format",
-                        "NationCode": "",
-                        "SubscriberNumber": "",
-                        "PhoneNumber": "13670511519",
-                        "IsoCode": "DEF",
-                        "IsoName": ""
-                    }
-                ],
-                "RequestId": "b49704fe-5286-4d4a-87eb-f560a72320ab"
-            }
-             */
-
-            List<Map<String, Object>> list = (List<Map<String, Object>>) MapUtil.get(resp, "PhoneNumberInfoSet");
-            List<Map<String, Object>> result = ListUtil.convertToUnderscoreCase(list);
-
-            return result;
-
-
-        } catch (TencentCloudSDKException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
+//    @Override
+//    public List<Map<String, Object>> getDescribePhoneNumberInfo(String phones) {
+//        try {
+//
+//            if (phones == null) {
+//                throw new CustomException("手机号码不能为空");
+//            }
+//            String[] phoneNumberSet = phones.split(",");
+//
+//            // ----------------------------------------------------------------------
+//            Credential cred = new Credential(SECRET_ID, SECRET_KEY);
+//            ClientProfile clientProfile = new ClientProfile();
+//            SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
+//
+//            DescribePhoneNumberInfoRequest req = new DescribePhoneNumberInfoRequest();
+//            req.setPhoneNumberSet(phoneNumberSet);
+//
+//            DescribePhoneNumberInfoResponse res = client.DescribePhoneNumberInfo(req);
+//
+//            // 输出json格式的字符串回包
+//            String resString = SendStatusStatisticsResponse.toJsonString(res);
+//            JSONObject resp = JSONUtil.parseObj(resString);
+//            /*
+//            {
+//                "PhoneNumberInfoSet": [
+//                    {
+//                        "Code": "InvalidParameterValue.IncorrectPhoneNumber",
+//                        "Message": "incorrect phoneNumber format",
+//                        "NationCode": "",
+//                        "SubscriberNumber": "",
+//                        "PhoneNumber": "13670511519",
+//                        "IsoCode": "DEF",
+//                        "IsoName": ""
+//                    }
+//                ],
+//                "RequestId": "b49704fe-5286-4d4a-87eb-f560a72320ab"
+//            }
+//             */
+//
+//            List<Map<String, Object>> list = (List<Map<String, Object>>) MapUtil.get(resp, "PhoneNumberInfoSet");
+//            List<Map<String, Object>> result = ListUtil.convertToUnderscoreCase(list);
+//
+//            return result;
+//
+//
+//        } catch (TencentCloudSDKException e) {
+//            e.printStackTrace();
+//        }
+//        return null;
+//    }
 }

+ 3 - 3
src/main/java/com/backendsys/utils/response/PageInfoResult.java

@@ -6,13 +6,13 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-public class PageInfoResult extends PageInfo {
+public class PageInfoResult<T> extends PageInfo {
 
     public PageInfoResult() {}
-    public PageInfoResult(List list) {
+    public PageInfoResult(List<T> list) {
         super(list);
     }
-    public PageInfoResult(List list, int navigatePages) {
+    public PageInfoResult(List<T> list, int navigatePages) {
         super(list, navigatePages);
     }
     public Map<String, Object> toMap() {

+ 1 - 0
src/main/java/com/backendsys/utils/response/Result.java

@@ -15,6 +15,7 @@ import java.io.Serializable;
 @Getter
 @Setter
 @ToString
+@SuppressWarnings("unchecked")
 public class Result<T> implements Serializable {
 
     @Serial

+ 0 - 3
src/main/resources/application-dev.yml

@@ -32,9 +32,6 @@ spring:
       password: p1FM!fkfPdBQ%@5o
   mvc:
     static-path-pattern: /uploads/**
-#  web:
-#    resources:
-#      static-locations: file:/Users/mure/MyProject/QuickLaunchSpring/BackendSys/uploads
 
 
 file:

+ 0 - 3
src/main/resources/application-local.yml

@@ -32,9 +32,6 @@ spring:
       password: 123456
   mvc:
     static-path-pattern: /uploads/**
-#  web:
-#    resources:
-#      static-locations: file:/Users/mure/MyProject/QuickLaunchSpring/BackendSys/uploads
 
 
 file:

BIN
src/main/resources/static/favicon.ico


BIN
src/main/resources/static/images/p1.jpg


+ 0 - 21
src/main/resources/templates/front/user/my_center.html

@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:sec="http://www.w3.org/1999/xhtml">
-<head>
-    <meta charset="UTF-8">
-    <title>Hello</title>
-</head>
-<body>
-
-<h1 th:inline="text">
-    Hello
-    <span th:remove="tag" sec:authentication="name">thymeleaf</span>!
-</h1>
-
-<br>
-
-<form th:action="@{/logout}" method="post">
-    <input type="submit" value="退出登录">
-</form>
-
-</body>
-</html>

+ 0 - 15
src/main/resources/templates/home.html

@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Spring Security Example</title>
-    <link rel="shortcut icon" th:href="@{/favicon.ico}"/>
-</head>
-<body>
-
-    <h4>home</h4>
-
-    <p>Click <a th:href="@{/user/my/center}">here</a> to see a greeting.</p>
-
-</body>
-</html>

+ 0 - 91
src/main/resources/templates/login.html

@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-</head>
-<body>
-
-    <div th:if="${errorMessage}" th:text="${errorMessage}"></div>
-
-    <div class="layout-login">
-        <form th:action="@{/login}" method="post">
-          <div><label>用户名: </label><input type="text" name="username" value="admin"></div>
-          <div><label>密 码: </label><input type="password" name="password" value="123456"></div>
-          <div>
-              <label>验证码:</label>
-              <div class="flex">
-                  <input type="text" name="code" style="width: 100px;" maxlength="4" />
-                  <img id="img-captcha" class="img-captcha" src="/api/captcha"/>
-              </div>
-          </div>
-          <div><input type="submit" value="提交"> &nbsp;&nbsp; <a href="/" class="link">返回</a></div>
-        </form>
-    </div>
-
-</body>
-</html>
-<script>
-    window.onload = function () {
-
-        // [Click] 刷新验证码
-        var imgCaptchaDOM = document.getElementById('img-captcha')
-        imgCaptchaDOM.onclick = function() {
-            imgCaptchaDOM.setAttribute('src', '/api/captcha?v=' + new Date().valueOf())
-        }
-    }
-</script>
-<style>
-* { margin: 0; padding: 0; }
-body {
-}
-.layout-login {
-    box-sizing: border-box;
-    padding: 20px;
-}
-.layout-login .flex {
-    display: flex;
-    align-content: center;
-}
-
-.layout-login form > div {
-    margin-bottom: 15px;
-}
-.layout-login form label {
-    display: block;
-    font-size: 12px;
-    margin-bottom: 5px;
-}
-.layout-login form input {
-    border: 1px solid #ccc;
-}
-.layout-login form input:focus {
-    outline: none;
-    border-color: #aaa;
-}
-
-.layout-login form input[type="text"],
-.layout-login form input[type="password"]{
-    height: 35px;
-    line-height: 35px;
-    padding: 0 10px;
-    box-sizing: border-box;
-}
-.layout-login form input[type="submit"] {
-    margin-top: 5px;
-    padding: 5px 10px;
-}
-.layout-login .link {
-    font-size: 12px;
-    text-decoration: none;
-    color: #666;
-}
-.layout-login .link:hover {
-    text-decoration: underline;
-}
-.img-captcha {
-    height: 35px;
-    cursor: pointer;
-    margin-left: 20px;
-}
-</style>