Commit fac8b470d03f0b9e1cd782a716aec11e15cae7ec
1 parent
94b83dba
优化图片上传和显示
Showing
15 changed files
with
388 additions
and
41 deletions
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<DriverMapper, Driver> 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<DriverMapper, Driver> 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<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
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<SysDictData> { |
| 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<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<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<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 | * | ... | ... |