Commit fac8b470d03f0b9e1cd782a716aec11e15cae7ec

Authored by liujun001
1 parent 94b83dba

优化图片上传和显示

Bsth-admin/src/main/java/com/ruoyi/controller/dss/DssEquipmentController.java
... ... @@ -103,7 +103,7 @@ public class DssEquipmentController extends BaseController {
103 103 //LoginUser loginUser = (LoginUser) authentication.getPrincipal();
104 104 LoginUser loginUser = new LoginUser();
105 105 loginUser.setUserId(Convert.toLong(equipment.getId()));
106   - loginUser.setDeptId(Convert.toLong(equipment.getDeviceId()));
  106 + loginUser.setDeviceId(equipment.getDeviceId());
107 107 loginUser.setUser(new SysUser());
108 108  
109 109  
... ...
Bsth-admin/src/main/java/com/ruoyi/driver/controller/DriverController.java
... ... @@ -3,6 +3,7 @@ package com.ruoyi.driver.controller;
3 3 import com.ruoyi.common.annotation.Log;
4 4 import com.ruoyi.common.core.controller.BaseController;
5 5 import com.ruoyi.common.core.domain.AjaxResult;
  6 +import com.ruoyi.common.core.domain.entity.SysDictData;
6 7 import com.ruoyi.common.core.page.TableDataInfo;
7 8 import com.ruoyi.common.enums.BusinessType;
8 9 import com.ruoyi.common.global.Result;
... ... @@ -13,9 +14,11 @@ import com.ruoyi.pojo.request.DriverRequestVo;
13 14 import com.ruoyi.pojo.request.DriverSignInRequestVo;
14 15 import com.ruoyi.pojo.request.FaceRegistrationFeedbackVo;
15 16 import com.ruoyi.pojo.request.FaceUpdateReqVo;
  17 +import com.ruoyi.system.service.ISysDictDataService;
16 18 import io.swagger.annotations.Api;
17 19 import io.swagger.annotations.ApiOperation;
18 20 import io.swagger.annotations.ApiParam;
  21 +import org.apache.commons.lang3.StringUtils;
19 22 import org.springframework.beans.factory.annotation.Autowired;
20 23 import org.springframework.validation.annotation.Validated;
21 24 import org.springframework.web.bind.annotation.*;
... ... @@ -24,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
24 27 import javax.servlet.http.HttpServletRequest;
25 28 import javax.servlet.http.HttpServletResponse;
26 29 import java.util.List;
  30 +import java.util.Objects;
27 31  
28 32 /**
29 33 * 驾驶员信息Controller
... ... @@ -37,6 +41,8 @@ import java.util.List;
37 41 public class DriverController extends BaseController {
38 42 @Autowired
39 43 private IDriverService driverService;
  44 + @Autowired
  45 + private ISysDictDataService sysDictDataService;
40 46  
41 47  
42 48 /**
... ... @@ -106,7 +112,14 @@ public class DriverController extends BaseController {
106 112 @GetMapping(value = "/{id}")
107 113 @ApiOperation("获取驾驶员信息详细信息")
108 114 public AjaxResult getInfo(@ApiParam(value = "id", required = true) @PathVariable("id") Long id) {
109   - return success(driverService.selectDriverById(id));
  115 + Driver driver = driverService.selectDriverById(id);
  116 + if (Objects.nonNull(driver)) {
  117 + SysDictData source = sysDictDataService.getResourceBaseUrl();
  118 + if (source.isCombationVal()) {
  119 + driver.setImage(sysDictDataService.combationValue(driver.getImage(), source));
  120 + }
  121 + }
  122 + return success(driver);
110 123 }
111 124  
112 125 /**
... ... @@ -117,6 +130,7 @@ public class DriverController extends BaseController {
117 130 @PostMapping
118 131 @ApiOperation("新增驾驶员信息(后台)")
119 132 public AjaxResult add(@ApiParam @RequestBody Driver driver) {
  133 + driver.setImage(sysDictDataService.splitURL(driver.getImage()));
120 134 return toAjax(driverService.insertDriver(driver));
121 135 }
122 136  
... ... @@ -139,9 +153,12 @@ public class DriverController extends BaseController {
139 153 */
140 154 // @PreAuthorize("@ss.hasPermi('driver:driver:edit')")
141 155 // @Log(title = "驾驶员信息", businessType = BusinessType.UPDATE)
142   - @PutMapping
  156 + @PutMapping("/edit")
143 157 @ApiOperation("修改驾驶员信息")
144 158 public AjaxResult edit(@ApiParam("driver") @RequestBody Driver driver) {
  159 + if (StringUtils.isNotEmpty(driver.getImage())) {
  160 + driver.setImage(sysDictDataService.splitURL(driver.getImage()));
  161 + }
145 162 return toAjax(driverService.updateDriver(driver) + 1);
146 163 }
147 164  
... ... @@ -191,7 +208,17 @@ public class DriverController extends BaseController {
191 208 @ApiOperation("驾驶员人脸上传接口")
192 209 public AjaxResult uploadImage(MultipartFile file) {
193 210 try {
194   - return driverService.uploadImage(file);
  211 + return driverService.uploadImage(file, null);
  212 + } catch (Exception e) {
  213 + return AjaxResult.error(e.getMessage());
  214 + }
  215 + }
  216 +
  217 + @PostMapping("/upload/{id}")
  218 + @ApiOperation("驾驶员人脸上传接口")
  219 + public AjaxResult uploadImage(MultipartFile file, @PathVariable("id") Integer id) {
  220 + try {
  221 + return driverService.uploadImage(file, id);
195 222 } catch (Exception e) {
196 223 return AjaxResult.error(e.getMessage());
197 224 }
... ...
Bsth-admin/src/main/java/com/ruoyi/driver/service/IDriverService.java
... ... @@ -88,7 +88,7 @@ public interface IDriverService extends IService<Driver>
88 88  
89 89 AjaxResult checkJobCode(Driver jobCode);
90 90  
91   - AjaxResult uploadImage(MultipartFile file) throws InvalidExtensionException, IOException;
  91 + AjaxResult uploadImage(MultipartFile file,Integer id) throws InvalidExtensionException, IOException;
92 92  
93 93 void downloadHeadImage(String jobCode, HttpServletResponse response);
94 94  
... ...
Bsth-admin/src/main/java/com/ruoyi/driver/service/impl/DriverServiceImpl.java
... ... @@ -45,6 +45,7 @@ import com.ruoyi.utils.ConstDateUtil;
45 45 import com.ruoyi.utils.ListUtils;
46 46 import org.apache.commons.collections4.CollectionUtils;
47 47 import org.apache.commons.io.FilenameUtils;
  48 +import org.apache.commons.lang3.RandomUtils;
48 49 import org.apache.commons.lang3.StringUtils;
49 50 import org.slf4j.Logger;
50 51 import org.slf4j.LoggerFactory;
... ... @@ -269,9 +270,11 @@ public class DriverServiceImpl extends ServiceImpl<DriverMapper, Driver> impleme
269 270 // 修改排班表scheduling 以及缓存信息
270 271 List<DriverScheduling> driverSchedulings = cache.getCacheScheduling(ConstDateUtil.getStringNowLocalDate("-")).get(driver.getJobCode());
271 272 // 只改变车队信息 其他信息由调度接口 和 人事系统决定 本来是不修改的但是人事数据有问题
272   - for (DriverScheduling scheduling : driverSchedulings) {
273   - if (StringUtil.isNotEmpty(driver.getFleetName())) {
274   - scheduling.setFleetName(driver.getFleetName());
  273 + if(CollectionUtils.isNotEmpty(driverSchedulings)) {
  274 + for (DriverScheduling scheduling : driverSchedulings) {
  275 + if (StringUtil.isNotEmpty(driver.getFleetName())) {
  276 + scheduling.setFleetName(driver.getFleetName());
  277 + }
275 278 }
276 279 }
277 280 return driverMapper.updateDriver(driver);
... ... @@ -356,7 +359,7 @@ public class DriverServiceImpl extends ServiceImpl&lt;DriverMapper, Driver&gt; impleme
356 359 }
357 360  
358 361 @Override
359   - public AjaxResult uploadImage(MultipartFile file) throws InvalidExtensionException, IOException {
  362 + public AjaxResult uploadImage(MultipartFile file,Integer id) throws InvalidExtensionException, IOException {
360 363 // 上传并返回新文件名称
361 364 // 上传文件路径
362 365 String baseUrl = RuoYiConfig.getUploadPath() + headImagePre;
... ... @@ -364,13 +367,23 @@ public class DriverServiceImpl extends ServiceImpl&lt;DriverMapper, Driver&gt; impleme
364 367 FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
365 368 // 后期可以通过请求头拿到对应的工号
366 369 String fileName = FilenameUtils.getBaseName(file.getOriginalFilename()) + "." + FileUploadUtils.getExtension(file);
  370 + if(Objects.nonNull(id)){
  371 + fileName = StringUtils.join(id,"/",fileName);
  372 + }else{
  373 + fileName = StringUtils.join("head/", RandomUtils.nextInt(1,90000),"/",fileName);
  374 + }
  375 + String urlFileName = fileName;
367 376 String absPath = FileUploadUtils.getAbsoluteFile(baseUrl, fileName).getAbsolutePath();
368 377 fileName = FileUploadUtils.getPathFileName(baseUrl, fileName);
369 378 file.transferTo(Paths.get(absPath));
370   - String url = serverConfig.getUrl() + fileName;
  379 +
  380 + SysDictData source = sysDictDataService.getResourceBaseUrl();
  381 + String url = sysDictDataService.combationValue(urlFileName,source);
  382 +
  383 +
371 384 AjaxResult ajax = AjaxResult.success();
372 385 ajax.put("url", url);
373   - ajax.put("fileName", fileName);
  386 + ajax.put("fileName", url);
374 387 ajax.put("newFileName", FileUtils.getName(fileName));
375 388 ajax.put("originalFilename", file.getOriginalFilename());
376 389 return ajax;
... ...
Bsth-admin/src/main/java/com/ruoyi/equipment/controller/EquipmentController.java
... ... @@ -3,6 +3,7 @@ package com.ruoyi.equipment.controller;
3 3 import com.ruoyi.common.annotation.Log;
4 4 import com.ruoyi.common.core.controller.BaseController;
5 5 import com.ruoyi.common.core.domain.AjaxResult;
  6 +import com.ruoyi.common.core.domain.entity.SysDictData;
6 7 import com.ruoyi.common.core.page.TableDataInfo;
7 8 import com.ruoyi.common.enums.BusinessType;
8 9 import com.ruoyi.common.utils.poi.ExcelUtil;
... ... @@ -11,6 +12,7 @@ import com.ruoyi.equipment.domain.Equipment;
11 12 import com.ruoyi.equipment.domain.EquipmentLog;
12 13 import com.ruoyi.equipment.service.IEquipmentService;
13 14 import com.ruoyi.service.venue.info.LinggangVenueInfoService;
  15 +import com.ruoyi.system.service.ISysDictDataService;
14 16 import io.swagger.annotations.Api;
15 17 import io.swagger.annotations.ApiOperation;
16 18 import org.apache.commons.collections4.CollectionUtils;
... ... @@ -38,6 +40,8 @@ public class EquipmentController extends BaseController {
38 40 private IEquipmentService equipmentService;
39 41 @Autowired
40 42 private LinggangVenueInfoService venueInfoService;
  43 + @Autowired
  44 + private ISysDictDataService sysDictDataService;
41 45  
42 46 /**
43 47 * 查询设备信息列表
... ... @@ -49,18 +53,21 @@ public class EquipmentController extends BaseController {
49 53 startPage();
50 54 List<Equipment> list = equipmentService.selectEquipmentList(equipment);
51 55 if (CollectionUtils.isNotEmpty(list)) {
  56 + SysDictData sysDictData = sysDictDataService.getResourceBaseUrl();
52 57 Collection<Integer> yarIds = list.stream().map(Equipment::getYardId).collect(Collectors.toSet());
53 58 List<LinggangVenueInfo> venueInfos = venueInfoService.listOfIds(yarIds);
54   - if (CollectionUtils.isNotEmpty(venueInfos)) {
55   - list = list.stream().map(eq -> {
  59 + list = list.stream().map(eq -> {
  60 + if (CollectionUtils.isNotEmpty(venueInfos)) {
56 61 Optional<LinggangVenueInfo> optional = venueInfos.stream().filter(v -> Objects.equals(v.getId(), eq.getYardId())).findFirst();
57 62 if (optional.isPresent()) {
58 63 eq.setYardName(optional.get().getName());
59 64 }
  65 + }
  66 + eq.setImage(sysDictDataService.combationValue(eq.getImage(),sysDictData));
  67 +
  68 + return eq;
  69 + }).collect(Collectors.toList());
60 70  
61   - return eq;
62   - }).collect(Collectors.toList());
63   - }
64 71  
65 72 }
66 73 return getDataTable(list);
... ... @@ -104,7 +111,11 @@ public class EquipmentController extends BaseController {
104 111 @GetMapping(value = "/{id}")
105 112 @ApiOperation("获取设备信息详细信息")
106 113 public AjaxResult getInfo(@PathVariable("id") Long id) {
107   - return success(equipmentService.selectEquipmentById(id));
  114 + Equipment equipment = equipmentService.selectEquipmentById(id);
  115 + if(Objects.nonNull(equipment)){
  116 + equipment.setImage(sysDictDataService.combationValue(equipment.getImage()));
  117 + }
  118 + return success(equipment);
108 119 }
109 120  
110 121 /**
... ... @@ -115,6 +126,7 @@ public class EquipmentController extends BaseController {
115 126 @PostMapping
116 127 @ApiOperation("新增设备信息")
117 128 public AjaxResult add(@RequestBody Equipment equipment) {
  129 + equipment.setImage(sysDictDataService.splitURL(equipment.getImage()));
118 130 return toAjax(equipmentService.insertEquipment(equipment));
119 131 }
120 132  
... ... @@ -126,6 +138,7 @@ public class EquipmentController extends BaseController {
126 138 @PutMapping
127 139 @ApiOperation("修改设备信息")
128 140 public AjaxResult edit(@RequestBody Equipment equipment) {
  141 + equipment.setImage(sysDictDataService.splitURL(equipment.getImage()));
129 142 return toAjax(equipmentService.updateEquipment(equipment));
130 143 }
131 144  
... ...
Bsth-admin/src/main/java/com/ruoyi/service/impl/driver/NewDriverServiceImpl.java
... ... @@ -232,6 +232,7 @@ public class NewDriverServiceImpl extends ServiceImpl&lt;NewDriverMapper, NewDriver
232 232 if (opt.isPresent()) {
233 233 d.setId(opt.get().getId());
234 234 d.setImage(null);
  235 + d.setPosts(opt.get().getPosts());
235 236 }
236 237 return d;
237 238 }).collect(Collectors.toList());
... ...
Bsth-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
1 1 package com.ruoyi.web.controller.common;
2 2  
3   -import java.util.ArrayList;
4   -import java.util.List;
5   -import javax.servlet.http.HttpServletRequest;
6   -import javax.servlet.http.HttpServletResponse;
  3 +import com.ruoyi.common.config.RuoYiConfig;
  4 +import com.ruoyi.common.constant.Constants;
  5 +import com.ruoyi.common.core.domain.AjaxResult;
  6 +import com.ruoyi.common.utils.StringUtils;
  7 +import com.ruoyi.common.utils.file.FileUploadUtils;
  8 +import com.ruoyi.common.utils.file.FileUtils;
  9 +import com.ruoyi.common.utils.spring.SpringUtils;
  10 +import com.ruoyi.framework.config.ServerConfig;
  11 +import com.ruoyi.system.service.ISysDictDataService;
7 12 import org.slf4j.Logger;
8 13 import org.slf4j.LoggerFactory;
9 14 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -13,13 +18,11 @@ import org.springframework.web.bind.annotation.PostMapping;
13 18 import org.springframework.web.bind.annotation.RequestMapping;
14 19 import org.springframework.web.bind.annotation.RestController;
15 20 import org.springframework.web.multipart.MultipartFile;
16   -import com.ruoyi.common.config.RuoYiConfig;
17   -import com.ruoyi.common.constant.Constants;
18   -import com.ruoyi.common.core.domain.AjaxResult;
19   -import com.ruoyi.common.utils.StringUtils;
20   -import com.ruoyi.common.utils.file.FileUploadUtils;
21   -import com.ruoyi.common.utils.file.FileUtils;
22   -import com.ruoyi.framework.config.ServerConfig;
  21 +
  22 +import javax.servlet.http.HttpServletRequest;
  23 +import javax.servlet.http.HttpServletResponse;
  24 +import java.util.ArrayList;
  25 +import java.util.List;
23 26  
24 27 /**
25 28 * 通用请求处理
... ... @@ -37,6 +40,10 @@ public class CommonController
37 40  
38 41 private static final String FILE_DELIMETER = ",";
39 42  
  43 + private ISysDictDataService sysDictDataService;
  44 + @Autowired
  45 + private SpringUtils springUtils;
  46 +
40 47 /**
41 48 * 通用下载请求
42 49 *
... ... @@ -78,13 +85,17 @@ public class CommonController
78 85 try
79 86 {
80 87 // 上传文件路径
81   - String filePath = RuoYiConfig.getUploadPath();
  88 + String filePath = org.apache.commons.lang3.StringUtils.join(RuoYiConfig.getUploadPath(),"/image");
  89 +
82 90 // 上传并返回新文件名称
83 91 String fileName = FileUploadUtils.upload(filePath, file);
84   - String url = serverConfig.getUrl() + fileName;
  92 + fileName = org.apache.commons.lang3.StringUtils.substringAfter(fileName, "upload/image");
  93 + String url = getSysDictDataService().combationValue(fileName);
85 94 AjaxResult ajax = AjaxResult.success();
  95 +
  96 + log.info("filePath:[{}],fileName:[{}]", filePath, fileName);
86 97 ajax.put("url", url);
87   - ajax.put("fileName", fileName);
  98 + ajax.put("fileName", url);
88 99 ajax.put("newFileName", FileUtils.getName(fileName));
89 100 ajax.put("originalFilename", file.getOriginalFilename());
90 101 return ajax;
... ... @@ -95,6 +106,13 @@ public class CommonController
95 106 }
96 107 }
97 108  
  109 + public ISysDictDataService getSysDictDataService(){
  110 + if(sysDictDataService == null){
  111 + sysDictDataService = SpringUtils.getBean(ISysDictDataService.class);
  112 + }
  113 + return sysDictDataService;
  114 + }
  115 +
98 116 /**
99 117 * 通用上传请求(多个)
100 118 */
... ...
Bsth-admin/src/main/resources/application-druid-dev.yml
... ... @@ -174,7 +174,7 @@ api:
174 174 apk:
175 175 path: /apk/dev
176 176 # 用户头像存放位置
177   - headImage: /head/image
  177 + headImage: /image
178 178 sign:
179 179 image: /image
180 180 video:
... ... @@ -221,5 +221,5 @@ bsth:
221 221 faceFeature:
222 222 url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system
223 223 skip:
224   - url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/test/**;/login/no/code;/actuator/health;
  224 + url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/test/**;/login/no/code;/actuator/health;/upload/image/**;
225 225  
... ...
Bsth-admin/src/main/resources/application-druid-devTest.yml
... ... @@ -173,8 +173,8 @@ api:
173 173 nonce: adfsad
174 174 apk:
175 175 path: /apk/dev
176   - # 用户头像存放位置
177   - headImage: /head/image
  176 + # 用户头像存放位置f
  177 + headImage: /image
178 178 sign:
179 179 image: /image
180 180 video:
... ... @@ -215,4 +215,4 @@ bsth:
215 215 faceFeature:
216 216 url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system
217 217 skip:
218   - url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code
  218 + url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code;/uploadPath/**
... ...
Bsth-admin/src/main/resources/application-druid-lingangTest.yml 0 → 100644
  1 +
  2 +# 数据源配置
  3 +spring:
  4 + # 邮箱配置
  5 + mail:
  6 + # 只发送不接收
  7 + host: smtp.163.com
  8 + # 自己的邮箱
  9 + username: m18980249160@163.com
  10 + # 提供的密码 不是自己的登录密码
  11 + password: RZHJXWXPCALIAOCG1
  12 + # 占用端口号
  13 + port: 465
  14 + nickname: 酒精测试异常通知
  15 + form: m18980249160@163.com
  16 + protocol: smtp
  17 + properties:
  18 + mail:
  19 + smtp:
  20 + ssl:
  21 + enable: true
  22 + socketFactory:
  23 + class: javax.net.ssl.SSLSocketFactory
  24 + datasource:
  25 + type: com.alibaba.druid.pool.DruidDataSource
  26 + driverClassName: com.mysql.cj.jdbc.Driver
  27 + druid:
  28 + # 主库数据源
  29 + master:
  30 + # 测试地址
  31 + # url: jdbc:mysql://localhost:3306/all-in-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&useAffectedRows=true&allowMultiQueries=true
  32 + #url: jdbc:mysql://192.168.168.124:3306/lingang_all_in_one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
  33 + url: jdbc:mysql://192.168.168.124:3306/lingang_all_in_one1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
  34 + # url: jdbc:mysql://127.0.0.1:3306/lingang_all_in_one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
  35 + username: root
  36 + password: guzijian
  37 + # password: 1
  38 + # 从库数据源
  39 + slave:
  40 + # 从数据源开关/默认关闭
  41 + enabled: false
  42 + url:
  43 + username:
  44 + password:
  45 + # 初始连接数
  46 + initialSize: 5
  47 + # 最小连接池数量
  48 + minIdle: 10
  49 + # 最大连接池数量
  50 + maxActive: 20
  51 + # 配置获取连接等待超时的时间
  52 + maxWait: 60000
  53 + # 配置连接超时时间
  54 + connectTimeout: 30000
  55 + # 配置网络超时时间
  56 + socketTimeout: 60000
  57 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  58 + timeBetweenEvictionRunsMillis: 60000
  59 + # 配置一个连接在池中最小生存的时间,单位是毫秒
  60 + minEvictableIdleTimeMillis: 300000
  61 + # 配置一个连接在池中最大生存的时间,单位是毫秒
  62 + maxEvictableIdleTimeMillis: 900000
  63 + # 配置检测连接是否有效
  64 + validationQuery: SELECT 1 FROM DUAL
  65 + testWhileIdle: true
  66 + testOnBorrow: false
  67 + testOnReturn: false
  68 + webStatFilter:
  69 + enabled: true
  70 + statViewServlet:
  71 + enabled: true
  72 + # 设置白名单,不填则允许所有访问
  73 + allow:
  74 + url-pattern: /druid/*
  75 + # 控制台管理用户名和密码
  76 + login-username: ruoyi
  77 + login-password: 123456
  78 + filter:
  79 + stat:
  80 + enabled: true
  81 + # 慢SQL记录
  82 + log-slow-sql: true
  83 + slow-sql-millis: 1000
  84 + merge-sql: true
  85 + wall:
  86 + config:
  87 + multi-statement-allow: true
  88 + # 文件上传
  89 + servlet:
  90 + multipart:
  91 + # 单个文件大小
  92 + max-file-size: 100MB
  93 + # 设置总上传的文件大小
  94 + max-request-size: 100MB
  95 + # 服务模块
  96 + devtools:
  97 + restart:
  98 + # 热部署开关
  99 + enabled: true
  100 + # redis 配置
  101 + redis:
  102 + # 地址
  103 +# host: 121.41.83.61
  104 + host: localhost
  105 + database: 4
  106 +# password: "guzijian"
  107 + port: 6379
  108 + # 连接超时时间
  109 + timeout: 10s
  110 + lettuce:
  111 + pool:
  112 + # 连接池中的最小空闲连接
  113 + min-idle: 0
  114 + # 连接池中的最大空闲连接
  115 + max-idle: 8
  116 + # 连接池的最大数据库连接数
  117 + max-active: 8
  118 + # #连接池最大阻塞等待时间(使用负值表示没有限制)
  119 + max-wait: -1ms
  120 + # token配置
  121 + token:
  122 + # 令牌自定义标识
  123 + header: Authorization
  124 + # 令牌密钥
  125 + secret: abcdefghijklmnopqrstuvwxyz
  126 + # 令牌有效期(默认30分钟)
  127 + expireTime: 30
  128 +
  129 +# 项目相关配置
  130 +ruoyi:
  131 + # 名称
  132 + name: RuoYi
  133 + # 版本
  134 + version: 3.8.5
  135 + # 版权年份
  136 + copyrightYear: 2023
  137 + # 实例演示开关
  138 + demoEnabled: true
  139 + # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
  140 + profile: /data/test/bath-alcoho-sign/apache-tomcat-8.5.61/webapps/uploadPath
  141 + # 获取ip地址开关
  142 + addressEnabled: false
  143 + # 验证码类型 math 数字计算 char 字符验证
  144 + captchaType: math
  145 +mybatis-plus:
  146 + # 搜索指定包别名
  147 + typeAliasesPackage: com.ruoyi.**.domain
  148 + # 配置mapper的扫描,找到所有的mapper.xml映射文件
  149 + mapperLocations: classpath*:mapper/**/*Mapper.xml
  150 + # 加载全局的配置文件
  151 + configLocation: classpath:mybatis/mybatis-config.xml
  152 +# Swagger配置
  153 +swagger:
  154 + # 是否开启swagger
  155 + enabled: true
  156 + # 请求前缀
  157 + # pathMapping: /dev-api
  158 + pathMapping: /
  159 +api:
  160 + template: 车队与线路匹配模板
  161 + url:
  162 + # all 为获取所有驾驶员信息
  163 + getDriverInfo: http://dsh.bdo2o.com:6280/shr
  164 + # 获取公司编码下的员工信息 暂时没用
  165 + getCompanyInfo:
  166 + # 获取排班信息
  167 + getSchedulingInfo: http://58.34.47.74:9089/webservice/rest/schedule_real/sch_jk/%s/%s?timestamp=%d&nonce=%s&password=%s&sign=%s
  168 + getSchedulingInfoNew: http://58.34.47.74:9089/webservice/rest/schedule_real/sch_jk/%s/%s?timestamp=%d&nonce=%s&password=%s&sign=%s
  169 + getSchedulingInfoPlan: http://58.34.47.74:9089/webservice/rest/schedule/sch_jk/%s/%s?timestamp=%d&nonce=%s&password=%s&sign=%s
  170 + config:
  171 + password: c4dd3d8cb9a82f6d6a625818618b28ca7bebb464
  172 + # 随机字符串
  173 + nonce: adfsad
  174 + apk:
  175 + path: /apk/dev
  176 + # 用户头像存放位置
  177 + headImage: /head/image
  178 + sign:
  179 + image: /image
  180 + video:
  181 + basePath: /video
  182 +
  183 + personnel:
  184 + token:
  185 + tokenUrl: https://api.dingtalk.com/v1.0/oauth2/accessToken
  186 + appKey: dingsclwvxui5zilg1xk
  187 + appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5
  188 + people:
  189 + url: https://api.dingtalk.com/v1.0/yida/forms/instances/search
  190 +log:
  191 + path: logs
  192 +server:
  193 + port: 8102
  194 +netty:
  195 + # 是否开启netty服务
  196 + enabled: true
  197 + socket:
  198 + # 相对路径 classpath
  199 + catalogue:
  200 + image: device/image
  201 + speech: device/speech
  202 + port: 8989
  203 +
  204 +
  205 +bsth:
  206 + face:
  207 + app:
  208 + id: 8jPk3SNnaoGsd9SidMefgZXg1zbst64jB44vVyx9Cijq
  209 + sdk:
  210 + key: C21s5J1n1rHwXPkvVjubKshtfYuvuSe2GHus41Q1NPcT
  211 + # key: C21s5J1n1rHwXPkvVjubKshtofV5sHXvyUQqSWYxHp2b
  212 + lib:
  213 + path: /data/test/bath-alcoho-sign/LINUX64
  214 + # path: D:/work/code/jienengjiancha/bsth-alcohol-sign/Bsth-admin/src/main/resources/libs/WIN64
  215 + faceFeature:
  216 + url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system
  217 + skip:
  218 + url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code
... ...
Bsth-common/src/main/java/com/ruoyi/common/constant/Constants.java
... ... @@ -116,7 +116,7 @@ public class Constants {
116 116 /**
117 117 * 资源映射路径 前缀
118 118 */
119   - public static final String RESOURCE_PREFIX = "/profile";
  119 + public static final String RESOURCE_PREFIX = "";
120 120  
121 121 /**
122 122 * RMI 远程方法调用
... ...
Bsth-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
... ... @@ -72,6 +72,16 @@ public class LoginUser implements UserDetails
72 72 */
73 73 private SysUser user;
74 74  
  75 + private String deviceId;
  76 +
  77 + public String getDeviceId() {
  78 + return deviceId;
  79 + }
  80 +
  81 + public void setDeviceId(String deviceId) {
  82 + this.deviceId = deviceId;
  83 + }
  84 +
75 85 public Long getUserId()
76 86 {
77 87 return userId;
... ...
Bsth-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
... ... @@ -62,7 +62,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
62 62 return "没有登陆信息";
63 63 }
64 64  
65   - if(org.apache.commons.lang3.StringUtils.equals(device,Convert.toStr(loginUser.getDeptId()))){
  65 + if(org.apache.commons.lang3.StringUtils.equals(device,Convert.toStr(loginUser.getDeviceId()))){
66 66 return null;
67 67 }
68 68  
... ...
Bsth-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
... ... @@ -30,6 +30,10 @@ public interface ISysDictDataService extends IService&lt;SysDictData&gt; {
30 30  
31 31 String combationValue(String url,SysDictData dictData);
32 32  
  33 + String combationValue(String url);
  34 +
  35 + String splitURL(String url);
  36 +
33 37 /**
34 38 * 根据字典类型和字典键值查询字典数据信息
35 39 *
... ...
Bsth-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
1 1 package com.ruoyi.system.service.impl;
2 2  
  3 +import com.alibaba.fastjson2.JSON;
3 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 5 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5 6 import com.ruoyi.common.core.domain.entity.SysDictData;
... ... @@ -8,7 +9,10 @@ import com.ruoyi.system.mapper.SysDictDataMapper;
8 9 import com.ruoyi.system.service.ISysDictDataService;
9 10 import org.apache.commons.collections4.CollectionUtils;
10 11 import org.apache.commons.lang3.StringUtils;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
11 14 import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.data.redis.core.RedisTemplate;
12 16 import org.springframework.stereotype.Service;
13 17  
14 18 import java.util.Collection;
... ... @@ -24,6 +28,10 @@ import java.util.Objects;
24 28 public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
25 29 @Autowired
26 30 private SysDictDataMapper dictDataMapper;
  31 + @Autowired
  32 + private RedisTemplate<String, String> redisTemplate;
  33 +
  34 + private static final Logger LOGGER = LoggerFactory.getLogger(SysDictDataServiceImpl.class);
27 35  
28 36 /**
29 37 * 根据条件分页查询字典数据
... ... @@ -59,9 +67,13 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi
59 67  
60 68 @Override
61 69 public SysDictData getResourceBaseUrl() {
62   - SysDictData source = new SysDictData();
63   - source.setDictType("resource_base_url");
64   - List<SysDictData> sysDictDatas = queryDictDateList(source);
  70 + List<SysDictData> sysDictDatas = getDataOfRedis("resource_base_url");
  71 + if (CollectionUtils.isEmpty(sysDictDatas)) {
  72 + SysDictData source = new SysDictData();
  73 + source.setDictType("resource_base_url");
  74 + sysDictDatas = queryDictDateList(source);
  75 + }
  76 +
65 77  
66 78 String url1 = "";
67 79 String flag1 = null;
... ... @@ -87,6 +99,18 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi
87 99 return target;
88 100 }
89 101  
  102 + public List<SysDictData> getDataOfRedis(String dicType) {
  103 + try {
  104 + String key = StringUtils.join("sys_dict:", dicType);
  105 + String json = redisTemplate.opsForValue().get(key);
  106 + return JSON.parseArray(json, SysDictData.class);
  107 + } catch (Exception e) {
  108 + LOGGER.info("从redis中获取数据异常:[{}]", dicType, e);
  109 + }
  110 + return null;
  111 + }
  112 +
  113 +
90 114 @Override
91 115 public String combationValue(String url, SysDictData dictData) {
92 116 if (Objects.isNull(dictData) || StringUtils.isEmpty(url)) {
... ... @@ -106,6 +130,25 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi
106 130 return url;
107 131 }
108 132  
  133 + @Override
  134 + public String combationValue(String url) {
  135 + SysDictData source = getResourceBaseUrl();
  136 + return combationValue(url, source);
  137 + }
  138 +
  139 + @Override
  140 + public String splitURL(String url) {
  141 + if (StringUtils.isEmpty(url)) {
  142 + return url;
  143 + }
  144 +
  145 + SysDictData sysDictData = getResourceBaseUrl();
  146 + if (Objects.nonNull(sysDictData) && StringUtils.isNotEmpty(sysDictData.getDictValueStr())) {
  147 + return StringUtils.substringAfter(url, sysDictData.getDictValueStr());
  148 + }
  149 + return url;
  150 + }
  151 +
109 152 /**
110 153 * 根据字典类型和字典键值查询字典数据信息
111 154 *
... ...