From 8b063afacb2659e5a8351e21f1871b6c46bcf5d7 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Mon, 29 Jul 2024 14:56:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BA=E5=AE=9Atoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++ .../aqd/base/controller/IndexController.java | 19 +++- .../com/bonus/aqd/base/dao/IndexMapper.java | 12 +++ .../aqd/base/entity/vo/DeviceInfoVo.java | 53 ++++++++++ .../bonus/aqd/base/service/IndexService.java | 11 ++ .../base/service/impl/IndexServiceImpl.java | 20 ++++ .../aqd/manager/advice/ValidatorsUtils.java | 100 ++++++++++++++++++ .../common/config/JWTTokenService.java | 10 ++ .../jwt/JwtAuthenticationTokenFilter.java | 7 +- .../resources/mappers/base/IndexMapper.xml | 17 +++ 10 files changed, 250 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/bonus/aqd/manager/advice/ValidatorsUtils.java diff --git a/pom.xml b/pom.xml index d89042a..e760cbc 100644 --- a/pom.xml +++ b/pom.xml @@ -285,6 +285,12 @@ bcprov-jdk15on 1.69 + + + org.hibernate + hibernate-validator + 6.0.18.Final + diff --git a/src/main/java/com/bonus/aqd/base/controller/IndexController.java b/src/main/java/com/bonus/aqd/base/controller/IndexController.java index 0d4f312..7f989a7 100644 --- a/src/main/java/com/bonus/aqd/base/controller/IndexController.java +++ b/src/main/java/com/bonus/aqd/base/controller/IndexController.java @@ -1,6 +1,7 @@ package com.bonus.aqd.base.controller; import com.bonus.aqd.base.entity.dto.ParamsDto; +import com.bonus.aqd.base.service.IndexService; import com.bonus.aqd.manager.annotation.DecryptAndVerify; import com.bonus.aqd.manager.core.entity.EncryptedReq; import com.bonus.aqd.manager.webResult.ServerResponse; @@ -9,6 +10,8 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** * @className:IndexController @@ -22,9 +25,19 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j public class IndexController { - @PostMapping("getBuildingEnvByStorey") + @Resource(name = "IndexService") + private IndexService service; + + /** + * 安全带设备列表 + * @param dto + * @return ServerResponse + * @author cwchen + * @date 2024/7/29 14:32 + */ + @PostMapping("getDevicesInfo") @DecryptAndVerify(decryptedClass = ParamsDto.class) - public ServerResponse getBuildingEnvByStorey(EncryptedReq dto) { - return null; + public ServerResponse getDevicesInfo(EncryptedReq dto) { + return service.getDevicesInfo(dto.getData()); } } diff --git a/src/main/java/com/bonus/aqd/base/dao/IndexMapper.java b/src/main/java/com/bonus/aqd/base/dao/IndexMapper.java index b060c49..9ac0c8f 100644 --- a/src/main/java/com/bonus/aqd/base/dao/IndexMapper.java +++ b/src/main/java/com/bonus/aqd/base/dao/IndexMapper.java @@ -1,7 +1,11 @@ package com.bonus.aqd.base.dao; +import com.bonus.aqd.base.entity.dto.ParamsDto; +import com.bonus.aqd.base.entity.vo.DeviceInfoVo; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @className:IndexMapper * @author:cwchen @@ -11,4 +15,12 @@ import org.springframework.stereotype.Repository; */ @Repository(value = "IndexMapper") public interface IndexMapper { + /** + * 安全带设备列表 + * @param dto + * @return List + * @author cwchen + * @date 2024/7/29 14:37 + */ + List getDevicesInfo(ParamsDto dto); } diff --git a/src/main/java/com/bonus/aqd/base/entity/vo/DeviceInfoVo.java b/src/main/java/com/bonus/aqd/base/entity/vo/DeviceInfoVo.java index 4ede90d..e8b9be0 100644 --- a/src/main/java/com/bonus/aqd/base/entity/vo/DeviceInfoVo.java +++ b/src/main/java/com/bonus/aqd/base/entity/vo/DeviceInfoVo.java @@ -1,7 +1,11 @@ package com.bonus.aqd.base.entity.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import java.util.Date; + /** * @className:DeviceInfoVo * @author:cwchen @@ -11,4 +15,53 @@ import lombok.Data; */ @Data public class DeviceInfoVo { + + /** + * id + */ + private Long id; + /** + * 设备名称 + */ + private String devName; + /** + * 设备编码 + */ + private String devCode; + /** + * 设备型号 + */ + private String devModu; + /** + * A钩状态 0脱落 1正常 + */ + private Integer devA; + /** + * B钩状态 0脱落 1正常 + */ + private Integer devB; + /** + * 球机设备编码 + */ + private String puid; + /** + * B钩脱落时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date devBTime; + /** + * A钩脱落时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date devATime; + /** + * 设备状态 1 在线 0离线 + */ + private Long devStatus; + /** + * 数据检测时间 + */ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date devTime; } diff --git a/src/main/java/com/bonus/aqd/base/service/IndexService.java b/src/main/java/com/bonus/aqd/base/service/IndexService.java index 9f44fce..aea45e1 100644 --- a/src/main/java/com/bonus/aqd/base/service/IndexService.java +++ b/src/main/java/com/bonus/aqd/base/service/IndexService.java @@ -1,5 +1,8 @@ package com.bonus.aqd.base.service; +import com.bonus.aqd.base.entity.dto.ParamsDto; +import com.bonus.aqd.manager.webResult.ServerResponse; + /** * @className:IndexService * @author:cwchen @@ -8,4 +11,12 @@ package com.bonus.aqd.base.service; * @description:首页-service */ public interface IndexService { + /** + * 安全带设备列表 + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/29 14:34 + */ + ServerResponse getDevicesInfo(ParamsDto data); } diff --git a/src/main/java/com/bonus/aqd/base/service/impl/IndexServiceImpl.java b/src/main/java/com/bonus/aqd/base/service/impl/IndexServiceImpl.java index cc80cf9..2293a87 100644 --- a/src/main/java/com/bonus/aqd/base/service/impl/IndexServiceImpl.java +++ b/src/main/java/com/bonus/aqd/base/service/impl/IndexServiceImpl.java @@ -1,11 +1,17 @@ package com.bonus.aqd.base.service.impl; import com.bonus.aqd.base.dao.IndexMapper; +import com.bonus.aqd.base.entity.dto.ParamsDto; +import com.bonus.aqd.base.entity.vo.DeviceInfoVo; import com.bonus.aqd.base.service.IndexService; +import com.bonus.aqd.manager.advice.ValidatorsUtils; +import com.bonus.aqd.manager.webResult.ServerResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; /** * @className:IndexServiceImpl @@ -20,4 +26,18 @@ public class IndexServiceImpl implements IndexService { @Resource(name = "IndexMapper") private IndexMapper mapper; + + @Resource(name = "ValidatorsUtils") + private ValidatorsUtils validatorsUtils; + + @Override + public ServerResponse getDevicesInfo(ParamsDto dto) { + List list = new ArrayList<>(); + try { + list = mapper.getDevicesInfo(dto); + } catch (Exception e) { + log.error(e.toString(),e); + } + return ServerResponse.createSuccess(list); + } } diff --git a/src/main/java/com/bonus/aqd/manager/advice/ValidatorsUtils.java b/src/main/java/com/bonus/aqd/manager/advice/ValidatorsUtils.java new file mode 100644 index 0000000..f6d4121 --- /dev/null +++ b/src/main/java/com/bonus/aqd/manager/advice/ValidatorsUtils.java @@ -0,0 +1,100 @@ +package com.bonus.aqd.manager.advice; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.validation.ConstraintViolation; +import javax.validation.Validator; +import java.util.List; +import java.util.Set; + +/** + * @description:
+ * 通用Server validation方法 + *

+ *
+ * @author: Qz1997 + * @create 2021/2/9 14:41 + */ +@SuppressWarnings("unused") +@Component(value = "ValidatorsUtils") +public final class ValidatorsUtils { + @Resource + private Validator validator; + + /** + * 验证实体 + * + * @param obj 实体 + * @param 实体类类型 + * @return 结果 + */ + public String valid(T obj) { + return this.valid(obj, new Class[]{}); + } + + /** + * 验证实体 + * + * @param obj 实体 + * @param group 实体组 + * @param 实体类类型 + * @return 结果 + */ + public String valid(T obj, Class... group) { + Set> violations; + if (ArrayUtils.isEmpty(group)) { + violations = validator.validate(obj); + } else { + violations = validator.validate(obj, group); + } + if (CollectionUtils.isNotEmpty(violations)) { + for (ConstraintViolation constraintViolation : violations) { + return constraintViolation.getMessage(); + } + } + return null; + } + + /** + * 校验list + * + * @param objList list + * @param 实体类类型 + * @return 结果 + */ + public String validList(List objList) { + return this.validList(objList, new Class[]{}); + } + + /** + * 校验list + * + * @param objList list + * @param group 组 + * @param 实体类类型 + * @return 结果 + */ + public String validList(List objList, Class... group) { + if (CollectionUtils.isEmpty(objList)) { + return "对象空"; + } + String result; + for (T t : objList) { + if (ArrayUtils.isEmpty(group)) { + result = this.valid(t); + } else { + result = this.valid(t, group); + } + if (!StringUtils.isBlank(result)) { + return result; + } + } + return null; + } +} + + diff --git a/src/main/java/com/bonus/aqd/manager/common/config/JWTTokenService.java b/src/main/java/com/bonus/aqd/manager/common/config/JWTTokenService.java index 852cf2e..647c176 100644 --- a/src/main/java/com/bonus/aqd/manager/common/config/JWTTokenService.java +++ b/src/main/java/com/bonus/aqd/manager/common/config/JWTTokenService.java @@ -59,6 +59,16 @@ public class JWTTokenService { return rspMap; } + public static void main(String[] args) { + String token = IdUtils.fastUUID(); + Map claimsMap = new HashMap(); + claimsMap.put(SecurityConstants.USER_KEY, token); + claimsMap.put(SecurityConstants.DETAILS_USER_ID, 1); + claimsMap.put(SecurityConstants.DETAILS_USERNAME, "!Admin"); + String jwtToken = JwtUtils.createToken(claimsMap); + System.err.println(jwtToken); + } + /** * 获取用户身份信息 * diff --git a/src/main/java/com/bonus/aqd/manager/security/jwt/JwtAuthenticationTokenFilter.java b/src/main/java/com/bonus/aqd/manager/security/jwt/JwtAuthenticationTokenFilter.java index 5eea505..3c526b9 100644 --- a/src/main/java/com/bonus/aqd/manager/security/jwt/JwtAuthenticationTokenFilter.java +++ b/src/main/java/com/bonus/aqd/manager/security/jwt/JwtAuthenticationTokenFilter.java @@ -46,13 +46,16 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { ResultUtil.responseJson(response,ResultUtil.resultCode(401,"请先登录")); return; } - SelfUserEntity loginUser = tokenService.getLoginUser(request); +// SelfUserEntity loginUser = tokenService.getLoginUser(request); + SelfUserEntity loginUser = new SelfUserEntity(); + loginUser.setUserId(1L); + loginUser.setUsername("!Admin"); if(Objects.isNull(loginUser)){ ResultUtil.responseJson(response,ResultUtil.resultCode(401,"登录过期,请重新登录")); return; }else{ // 验证令牌有效期,相差不足10分钟,自动刷新缓存 - tokenService.verifyToken(loginUser); +// tokenService.verifyToken(loginUser); //存入SecurityContextHolder //TODO 获取权限信息封装到Authentication中 UsernamePasswordAuthenticationToken authenticationToken = diff --git a/src/main/resources/mappers/base/IndexMapper.xml b/src/main/resources/mappers/base/IndexMapper.xml index a54f588..b24ff3f 100644 --- a/src/main/resources/mappers/base/IndexMapper.xml +++ b/src/main/resources/mappers/base/IndexMapper.xml @@ -3,4 +3,21 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + \ No newline at end of file