Commit 94b83dbabd54c789bb237e0828bc64981126ed6c

Authored by liujun001
1 parent c4e54cba

优化日志

Bsth-admin/src/main/java/com/ruoyi/controller/RefreshController.java
1 1 package com.ruoyi.controller;
2 2  
  3 +import com.alibaba.fastjson2.JSON;
3 4 import com.ruoyi.common.core.domain.ResponseResult;
4 5 import com.ruoyi.common.utils.sign.Base64;
5 6 import com.ruoyi.controller.dss.DssFaceController;
... ... @@ -15,6 +16,7 @@ import com.ruoyi.service.scheduling.LinggangSchedulingService;
15 16 import com.ruoyi.utils.DateUtil;
16 17 import io.swagger.annotations.ApiOperation;
17 18 import lombok.extern.slf4j.Slf4j;
  19 +import org.apache.commons.collections4.CollectionUtils;
18 20 import org.apache.commons.io.FileUtils;
19 21 import org.apache.commons.lang3.ArrayUtils;
20 22 import org.apache.commons.lang3.StringUtils;
... ... @@ -26,10 +28,7 @@ import org.springframework.web.bind.annotation.*;
26 28 import java.io.File;
27 29 import java.io.IOException;
28 30 import java.text.ParseException;
29   -import java.util.Date;
30   -import java.util.List;
31   -import java.util.Objects;
32   -import java.util.Set;
  31 +import java.util.*;
33 32 import java.util.stream.Collectors;
34 33  
35 34 /**
... ... @@ -69,8 +68,8 @@ public class RefreshController {
69 68 @GetMapping(value = "/key/info/local")
70 69 @ApiOperation("/key/info/local")
71 70 @PreAuthorize("@ss.hasPermi('refresh:key:info:local')")
72   - public ResponseResult<Boolean> testKeyInfoLocal(@RequestParam(value = "dateStr",required = false) String dateStr) throws ParseException {
73   - if(StringUtils.isEmpty(dateStr)){
  71 + public ResponseResult<Boolean> testKeyInfoLocal(@RequestParam(value = "dateStr", required = false) String dateStr) throws ParseException {
  72 + if (StringUtils.isEmpty(dateStr)) {
74 73 dateStr = DateUtil.YYYY_MM_DD_LINK.format(new Date());
75 74 }
76 75 Date date = DateUtil.YYYY_MM_DD_LINK.parse(dateStr);
... ... @@ -136,11 +135,15 @@ public class RefreshController {
136 135 FaceRegisterDTO dto = new FaceRegisterDTO();
137 136 dto.setDevice(device);
138 137  
139   - String jobCode = StringUtils.trim(StringUtils.substringBeforeLast(file.getName(), "."));
  138 + String jobCode = StringUtils.trim(StringUtils.substringBeforeLast(fs[i].getName(), "."));
140 139 dto.setStaffCode(jobCode);
141 140  
142 141  
143 142 NewDriver driver = newDriverService.getOne(jobCode);
  143 + if (Objects.isNull(driver)) {
  144 + log.info("没有人员信息:[{}]", dto);
  145 + continue;
  146 + }
144 147 if (StringUtils.isNotEmpty(driver.getImage())) {
145 148 log.info("人脸数据已经存在:[{}]", dto);
146 149 continue;
... ... @@ -163,6 +166,90 @@ public class RefreshController {
163 166 return ResponseResult.success();
164 167 }
165 168  
  169 +
  170 + @PostMapping(value = "/driver/init/image/name")
  171 + @ApiOperation("driver/init/image/name")
  172 + @PreAuthorize("@ss.hasPermi('refresh:driver:init:image:name')")
  173 + public ResponseResult<Object> insertDriverInitImageOfName(@RequestParam("imagePath") String imagePath, @RequestParam("device") String device) {
  174 + if (StringUtils.isEmpty(device)) {
  175 + return ResponseResult.error("注册设备号不能为空");
  176 + }
  177 +
  178 + if (StringUtils.isEmpty(imagePath)) {
  179 + String path = StringUtils.join(System.getProperty("user.dir"), File.pathSeparator, "images");
  180 +
  181 + log.info("[{}]", path);
  182 + imagePath = path;
  183 + }
  184 +
  185 + File file = new File(imagePath);
  186 + if (!file.exists()) {
  187 + return ResponseResult.error("文件路径不存在");
  188 + }
  189 + if (!file.isDirectory()) {
  190 + return ResponseResult.error("文件路径不是文件夹路径");
  191 + }
  192 +
  193 + File[] fs = file.listFiles();
  194 + int length = ArrayUtils.getLength(fs);
  195 + if (0 == length) {
  196 + return ResponseResult.error("文件路径下没有文件");
  197 + }
  198 +
  199 + Equipment equipment = equipmentService.getOneByDeviceId(device);
  200 + if (Objects.isNull(equipment)) {
  201 + return ResponseResult.error("设备号不正确,请确认设备信息");
  202 + }
  203 +
  204 +
  205 + List<String> errors = new ArrayList<>();
  206 + for (int i = 0; i < length; i++) {
  207 + FaceRegisterDTO dto = new FaceRegisterDTO();
  208 + dto.setDevice(device);
  209 + String name = StringUtils.trim(StringUtils.substringBeforeLast(fs[i].getName(), "."));
  210 +
  211 + NewDriver source = new NewDriver();
  212 + source.setPersonnelName(name);
  213 +
  214 + List<NewDriver> drivers = newDriverService.list(source);
  215 + int size = CollectionUtils.size(drivers);
  216 + if (size == 0) {
  217 + errors.add(StringUtils.join(file.getName(), "没有找到用户"));
  218 + continue;
  219 + } else if (size > 1) {
  220 + errors.add(StringUtils.join(file.getName(), "找到多个数据:", JSON.toJSONString(drivers)));
  221 + continue;
  222 + }
  223 +
  224 + NewDriver driver = drivers.get(0);
  225 + if (StringUtils.isNotEmpty(driver.getImage())) {
  226 + log.info("人脸数据已经存在:[{}]", driver);
  227 + continue;
  228 + }
  229 + dto.setRegTime(DateUtil.shortDate(new Date()));
  230 + dto.setStaffCode(driver.getJobCode());
  231 + try {
  232 + byte[] bytes = FileUtils.readFileToByteArray(fs[i]);
  233 + String imageContent = Base64.encode(bytes);
  234 + dto.setFaceValue(imageContent);
  235 + } catch (IOException e) {
  236 + throw new RuntimeException(e);
  237 + }
  238 + ResponseResult<Object> responseResult = dssFaceController.faceRegister(dto);
  239 + if (Objects.isNull(responseResult) || !responseResult.isSuccess()) {
  240 + log.warn("[{}]数据没有执行成功;返回值为:[{}]", dto, responseResult);
  241 + errors.add(StringUtils.join(file.getName(), "数据没有执行成功:", JSON.toJSONString(driver)));
  242 + }
  243 + }
  244 +
  245 + if (CollectionUtils.isNotEmpty(errors)) {
  246 + return ResponseResult.error(JSON.toJSONString(errors));
  247 + }
  248 +
  249 + log.info("人员信息同步完毕");
  250 + return ResponseResult.success();
  251 + }
  252 +
166 253 @GetMapping(value = "/jar/class/path")
167 254 public ResponseResult<String> getJarClassPath() {
168 255 String path = StringUtils.join(System.getProperty("user.dir"), File.separator, "images");
... ...
Bsth-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
1 1 package com.ruoyi.common.core.domain.entity;
2 2  
3   -import java.util.Date;
4   -import java.util.List;
5   -import javax.validation.constraints.*;
6   -import org.apache.commons.lang3.builder.ToStringBuilder;
7   -import org.apache.commons.lang3.builder.ToStringStyle;
  3 +import com.alibaba.fastjson2.JSON;
8 4 import com.ruoyi.common.annotation.Excel;
9 5 import com.ruoyi.common.annotation.Excel.ColumnType;
10 6 import com.ruoyi.common.annotation.Excel.Type;
... ... @@ -12,6 +8,12 @@ import com.ruoyi.common.annotation.Excels;
12 8 import com.ruoyi.common.core.domain.BaseEntity;
13 9 import com.ruoyi.common.xss.Xss;
14 10  
  11 +import javax.validation.constraints.Email;
  12 +import javax.validation.constraints.NotBlank;
  13 +import javax.validation.constraints.Size;
  14 +import java.util.Date;
  15 +import java.util.List;
  16 +
15 17 /**
16 18 * 用户对象 sys_user
17 19 *
... ... @@ -299,26 +301,10 @@ public class SysUser extends BaseEntity
299 301  
300 302 @Override
301 303 public String toString() {
302   - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
303   - .append("userId", getUserId())
304   - .append("deptId", getDeptId())
305   - .append("userName", getUserName())
306   - .append("nickName", getNickName())
307   - .append("email", getEmail())
308   - .append("phonenumber", getPhonenumber())
309   - .append("sex", getSex())
310   - .append("avatar", getAvatar())
311   - .append("password", getPassword())
312   - .append("status", getStatus())
313   - .append("delFlag", getDelFlag())
314   - .append("loginIp", getLoginIp())
315   - .append("loginDate", getLoginDate())
316   - .append("createBy", getCreateBy())
317   - .append("createTime", getCreateTime())
318   - .append("updateBy", getUpdateBy())
319   - .append("updateTime", getUpdateTime())
320   - .append("remark", getRemark())
321   - .append("dept", getDept())
322   - .toString();
  304 + String pwd = this.getPassword();
  305 + this.setPassword(null);
  306 + String str = JSON.toJSONString(this);
  307 + this.setPassword(pwd);
  308 + return str;
323 309 }
324 310 }
... ...
Bsth-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
1 1 package com.ruoyi.common.core.domain.model;
2 2  
3   -import java.util.Collection;
4   -import java.util.Set;
5   -import org.springframework.security.core.GrantedAuthority;
6   -import org.springframework.security.core.userdetails.UserDetails;
7 3 import com.alibaba.fastjson2.annotation.JSONField;
8 4 import com.ruoyi.common.core.domain.entity.SysUser;
  5 +import org.springframework.security.core.GrantedAuthority;
  6 +import org.springframework.security.core.userdetails.UserDetails;
  7 +
  8 +import java.util.Collection;
  9 +import java.util.Set;
9 10  
10 11 /**
11 12 * 登录用户身份权限
... ... @@ -263,4 +264,21 @@ public class LoginUser implements UserDetails
263 264 {
264 265 return null;
265 266 }
  267 +
  268 + @Override
  269 + public String toString() {
  270 + return "LoginUser{" +
  271 + "userId=" + userId +
  272 + ", deptId=" + deptId +
  273 + ", token='" + token + '\'' +
  274 + ", loginTime=" + loginTime +
  275 + ", expireTime=" + expireTime +
  276 + ", ipaddr='" + ipaddr + '\'' +
  277 + ", loginLocation='" + loginLocation + '\'' +
  278 + ", browser='" + browser + '\'' +
  279 + ", os='" + os + '\'' +
  280 + ", permissions=" + permissions +
  281 + ", user=" + user +
  282 + '}';
  283 + }
266 284 }
... ...
Bsth-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
... ... @@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.model.LoginUser;
5 5 import com.ruoyi.common.utils.SecurityUtils;
6 6 import com.ruoyi.common.utils.StringUtils;
7 7 import com.ruoyi.framework.web.service.TokenService;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
8 10 import org.slf4j.MDC;
9 11 import org.springframework.beans.factory.annotation.Autowired;
10 12 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
... ... @@ -36,6 +38,8 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
36 38 private final static String USER_ID_KEY = "userId";
37 39 private final static String REQUEST_ID_KEY = "requestId";
38 40  
  41 + private final static Logger LOGGER = LoggerFactory.getLogger(JwtAuthenticationTokenFilter.class);
  42 +
39 43 @Override
40 44 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
41 45 throws ServletException, IOException {
... ... @@ -62,6 +66,14 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
62 66 return null;
63 67 }
64 68  
  69 + String authorization = null;
  70 + HttpServletRequest request = getRequest();
  71 + if(Objects.nonNull(request)){
  72 + authorization = request.getHeader("Authorization");
  73 + }
  74 +
  75 + LOGGER.warn("device:[{}],authorization:[{}],loginUser:[{}]",device,authorization,loginUser);
  76 +
65 77 return "登陆的设备和token不匹配";
66 78 }
67 79  
... ...