MercMiniDeviceController.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. package com.xy.controller;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollUtil;
  4. import cn.hutool.core.util.BooleanUtil;
  5. import cn.hutool.core.util.ObjectUtil;
  6. import cn.hutool.core.util.StrUtil;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  9. import com.xy.annotate.RestMappingController;
  10. import com.xy.collections.list.JArrayList;
  11. import com.xy.collections.map.JMap;
  12. import com.xy.device.EnumDeviceActiveStatus;
  13. import com.xy.device.EnumDeviceFreezeStatus;
  14. import com.xy.dto.*;
  15. import com.xy.dto.be.MercDto;
  16. import com.xy.dto.common.MercLineDto;
  17. import com.xy.dto.common.MercPlaceDto;
  18. import com.xy.dto.mini.MiniMercRegionDto;
  19. import com.xy.entity.*;
  20. import com.xy.enums.MercStatus;
  21. import com.xy.service.*;
  22. import com.xy.service.be.MercFeignService;
  23. import com.xy.service.common.MercLineService;
  24. import com.xy.service.common.MercPlaceService;
  25. import com.xy.service.factory.device.DeviceFactory;
  26. import com.xy.utils.*;
  27. import com.xy.utils.Enum.AlgorithmTypeEnum;
  28. import com.xy.utils.enums.DeviceActiveStateEnum;
  29. import com.xy.utils.enums.DeviceAuthCodeUseStatus;
  30. import com.xy.utils.enums.DeviceLockState;
  31. import com.xy.utils.enums.DeviceNetSateType;
  32. import com.xy.vo.DeviceDetailVO;
  33. import io.swagger.annotations.Api;
  34. import io.swagger.annotations.ApiOperation;
  35. import lombok.AllArgsConstructor;
  36. import org.springframework.validation.annotation.Validated;
  37. import org.springframework.web.bind.annotation.PostMapping;
  38. import org.springframework.web.bind.annotation.RequestBody;
  39. import javax.validation.Valid;
  40. import java.time.LocalDateTime;
  41. import java.util.List;
  42. import java.util.Map;
  43. import java.util.Objects;
  44. import java.util.stream.Collectors;
  45. import static com.xy.utils.Beans.copy;
  46. /**
  47. * <p>
  48. * 小程序-设备
  49. * </p>
  50. *
  51. * @author hechunping
  52. * @since 2023/3/4
  53. */
  54. @RestMappingController("merc-mini/device")
  55. @AllArgsConstructor
  56. @Api(tags = "小程序-设备")
  57. public class MercMiniDeviceController {
  58. private final MercFeignService mercFeignService;
  59. private final DeviceInfoServiceImpl deviceInfoService;
  60. private final DeviceSysinfoServiceImpl deviceSysinfoService;
  61. private final MercPlaceService mercPlaceService;
  62. private final MercLineService mercLineService;
  63. private final DeviceBluetoothAuthServiceImpl deviceBluetoothAuthService;
  64. private final DeviceTempRecordsServiceImpl deviceTempRecordsService;
  65. private final AlipayDeviceService alipayDeviceService;
  66. private final DeviceStatusServiceImpl deviceStatusService;
  67. private final DeviceConfigServiceImpl deviceConfigService;
  68. private final DeviceTempSetServiceImpl deviceTempSetService;
  69. @ApiOperation("设备分页-管理员")
  70. @PostMapping("pageByAdminName")
  71. public R<PageBean<DeviceInfoDto.ListByAdminName>> pageByAdminName(@RequestBody @Validated DeviceInfoDto.PageByAdminNameDto dto) {
  72. dto.setMercId(MercAuthUtils.getMercId());
  73. dto.setDeviceIdList(getMyDevices());
  74. dto.setPage(dto.getPage().setOrders(null));
  75. return deviceInfoService.pageByAdminName(dto);
  76. }
  77. @ApiOperation("商户设备列表分页-穿梭框用")
  78. @PostMapping("myDeviceList")
  79. public R<PageBean<DeviceInfoDto.MyDeviceInfo>> myDeviceList(@RequestBody @Validated DeviceInfoDto.MyDeviceDTO dto) {
  80. dto.setMercId(MercAuthUtils.getMercId());
  81. return deviceInfoService.myDeviceList(dto);
  82. }
  83. @ApiOperation("设备列表带卡包数")
  84. @PostMapping("algorithmChargingDevice")
  85. public R<PageBean<DeviceInfoDto.AlgorithmChargingVo>> algorithmChargingDevice(@RequestBody @Validated DeviceInfoDto.AlgorithmCharging algorithmCharging) {
  86. algorithmCharging.setMercId(MercAuthUtils.getMercId());
  87. return deviceInfoService.algorithmChargingDevice(algorithmCharging);
  88. }
  89. @ApiOperation("商户设备首页统计")
  90. @PostMapping("mercHomeStatistical")
  91. public R<DeviceInfoDto.MercHomeStatisticalVO> mercHomeStatistical(@RequestBody @Valid DeviceInfoDto.MercHomeQueryDTO dto) {
  92. dto.setMercId(MercAuthUtils.getMercId());
  93. dto.setMyDeviceIds(getMyDevices());
  94. return deviceInfoService.mercHomeStatistical(dto);
  95. }
  96. @ApiOperation("设备列表-Id&Name")
  97. @PostMapping("listOfIdName")
  98. public R listOfIdName() {
  99. DeviceInfoDto.ListCommon listCommonDto = new DeviceInfoDto.ListCommon();
  100. DeviceInfoDto.Vo voDto = new DeviceInfoDto.Vo();
  101. voDto.setActiveState(Integer.valueOf(DeviceActiveStateEnum.TRUE.getCode()))
  102. .setMercId(MercAuthUtils.getMercId());
  103. listCommonDto.setVo(voDto);
  104. List<MercMiniDeviceDto.ListOfIdNameVo> copy = copy(MercMiniDeviceDto.ListOfIdNameVo.class, deviceInfoService.listCommon(listCommonDto).getData());
  105. return R.ok(copy);
  106. }
  107. @PostMapping("searchPage")
  108. @ApiOperation("小程序商户设备搜索")
  109. public R<PageBean<DeviceInfoDto.MerHomeSearchVO>> mercDeviceSearchPage(@RequestBody DeviceInfoDto.Page page) {
  110. page.setMercId(MercAuthUtils.getMercId());
  111. page.setMyDeviceIds(getMyDevices());
  112. return deviceInfoService.mercDeviceSearchPage(page);
  113. }
  114. @ApiOperation("小程序商户设备详情-设备信息")
  115. @PostMapping("detail")
  116. R<DeviceInfoDto.Vo> detail(@RequestBody DeviceInfoDto.Obj obj) {
  117. obj.setMercId(MercAuthUtils.getMercId());
  118. obj.setIsStatus(true);
  119. R<DeviceInfoDto.Vo> r = deviceInfoService.obj(obj);
  120. DeviceInfoDto.Vo vo = r.getData();
  121. if (vo != null) {
  122. Long algorithmId = vo.getAlgorithmId();
  123. //点位
  124. Long placeId = vo.getPlaceId();
  125. List<MercPlaceDto.Vo> merPlaceList = R.feignCheckData(mercPlaceService.list(new MercPlaceDto.ListDto().setIds(CollUtil.newArrayList(placeId))));
  126. MercPlaceDto.Vo mercPlace = CollUtil.isNotEmpty(merPlaceList) ? merPlaceList.get(0) : null;
  127. vo.setPlaceName(mercPlace == null ? StrUtil.EMPTY : mercPlace.getPlaceName());
  128. //线路
  129. Long placeLineId = vo.getPlaceLineId();
  130. Map<Long, String> placeLineMap = R.feignCheckData(mercLineService.getNameList(new MercLineDto.GetNameListDto().setIds(CollUtil.newArrayList(placeLineId))));
  131. vo.setPlaceLineName(CollUtil.isEmpty(placeLineMap) ? StrUtil.EMPTY : placeLineMap.get(placeLineId));
  132. //区域
  133. Long districtId = vo.getDistrictId();
  134. Map<Long, String> districtMap = R.feignCheckData(mercPlaceService.merReginId2Name(new MiniMercRegionDto.IdList().setIds(CollUtil.newArrayList(districtId))));
  135. vo.setDistrictName(CollUtil.isEmpty(districtMap) ? StrUtil.EMPTY : districtMap.get(districtId));
  136. DeviceStatusDto.Vo deviceStatus = vo.getDeviceStatus();
  137. vo.setNetStateName(deviceStatus == null ? StrUtil.EMPTY : DeviceNetSateType.getEnumByCode(deviceStatus.getNetState()).getDescription());
  138. if (deviceStatus != null) {
  139. Integer tempValue = deviceStatus.getTempValue();
  140. if (tempValue == null) {
  141. List<DeviceTempRecords> deviceTempRecords = deviceTempRecordsService
  142. .list(Wrappers.<DeviceTempRecords>lambdaQuery()
  143. .eq(DeviceTempRecords::getDeviceId, vo.getDeviceId()).orderByDesc(DeviceTempRecords::getCreateTime).last("limit 1")
  144. );
  145. if (CollUtil.isNotEmpty(deviceTempRecords)) {
  146. deviceStatus.setTempValue(deviceTempRecords.get(0).getTempValue());
  147. vo.setDeviceStatus(deviceStatus);
  148. } else {
  149. deviceStatus.setTempValue(0);
  150. vo.setDeviceStatus(deviceStatus);
  151. }
  152. }
  153. Integer deviceStateL = deviceStatus.getLockStateL();
  154. Integer deviceStateR = deviceStatus.getLockStateR();
  155. Boolean isUseBattery = deviceStatus.getIsUseBattery();
  156. if (BooleanUtil.isTrue(isUseBattery)) {
  157. //使用电池。即断电状态
  158. vo.setSysPower(2);
  159. } else {
  160. vo.setSysPower(1);
  161. }
  162. vo.setDeviceStateL(deviceStateL);
  163. vo.setDeviceStateR(deviceStateR);
  164. DeviceLockState deviceLockStateL = DeviceLockState.getEnumByCode(deviceStateL);
  165. DeviceLockState deviceLockStateR = DeviceLockState.getEnumByCode(deviceStateR);
  166. vo.setDeviceStateRName(deviceLockStateR == null ? "未知" : deviceLockStateR.getDescription());
  167. vo.setDeviceStateLName(deviceLockStateL == null ? "未知" : deviceLockStateL.getDescription());
  168. if (AlgorithmTypeEnum.ALIPAY.getId() == algorithmId) {
  169. String deviceId = String.valueOf(vo.getDeviceId());
  170. //主动查询一次温度、音量 温度:TEMP 音量:VOL
  171. // alipayDeviceService.queryAttributes(new DeviceQueryAttr().setTerminalId(deviceId).setType("VOL"));
  172. // alipayDeviceService.queryAttributes(new DeviceQueryAttr().setTerminalId(deviceId).setType("TEMP"));
  173. //支付宝状态实时返回
  174. DeviceDetailVO deviceDetailVO = alipayDeviceService.queryDetail(new DeviceDetailDTO().setTerminalId(String.valueOf(vo.getDeviceId())));
  175. Boolean online = deviceDetailVO.getOnline();
  176. Integer netState = BooleanUtil.isTrue(online) ? DeviceNetSateType.CONNECTED.getCode() : DeviceNetSateType.DISCONNECT.getCode();
  177. if (!ObjectUtil.equals(netState, deviceStatus.getNetState())) {
  178. //存在差异更新设备状态表
  179. deviceStatusService.updateById(new DeviceStatus().setDeviceId(vo.getDeviceId()).setNetState(netState));
  180. }
  181. deviceStatus.setNetState(netState);
  182. vo.setDeviceStatus(deviceStatus);
  183. }
  184. }
  185. //工作温度设置
  186. DeviceTempSetDto.Vo lastTempset = R.feignCheckData(deviceTempSetService.getLastOne(new DeviceTempSetDto.GetLastOneDto().setDeviceId(vo.getDeviceId())));
  187. vo.setJobTempSetValue(lastTempset == null ? null : lastTempset.getTempValue());
  188. }
  189. DeviceConfig deviceConfig = deviceConfigService.getById(obj.getDeviceId());
  190. vo.setTempSetInfo(BeanUtil.copyProperties(deviceConfig, DeviceInfoDto.TempSetInfo.class));
  191. return R.ok(vo);
  192. }
  193. @ApiOperation("小程序商户设备详情-数据统计")
  194. @PostMapping("dataCount")
  195. R<DeviceInfoDto.DeviceDataCountVO> dataCount(@RequestBody DeviceInfoDto.DeviceDataCountDTO dto) {
  196. dto.setMercId(MercAuthUtils.getMercId());
  197. return deviceInfoService.dataCount(dto);
  198. }
  199. private R checkDeviceByMerc(DeviceInfo deviceInfo) {
  200. Long mercId = MercAuthUtils.getMercId();
  201. //商户是否已通过审核
  202. MercDto.Vo mercInfo = mercFeignService.obj(new MercDto.ListDTO().setId(mercId)).getData();
  203. if (!mercInfo.getStatus().equals(String.valueOf(MercStatus.APPROVED.getCode()))) {
  204. return R.fail("商户未通过审核");
  205. }
  206. //设备是否存在
  207. if (!Emptys.check(deviceInfo)) {
  208. return R.fail("机器不存在");
  209. }
  210. //机器是否已授权给该商户
  211. if (!deviceInfo.getMercId().equals(mercId)) {
  212. return R.fail("机器未授权给商户");
  213. }
  214. //机器是否冻结
  215. Integer freezeStatus = SysDictUtils.getValue(EnumDeviceFreezeStatus.Code.CODE.getCode(), EnumDeviceFreezeStatus.N_2.getCode(), Integer.class);
  216. if (deviceInfo.getFreezeStatus().equals(freezeStatus)) {
  217. return R.fail("机器已冻结");
  218. }
  219. return R.ok();
  220. }
  221. @PostMapping("isMerc")
  222. @ApiOperation("判断设备是否归属商户")
  223. public R isMerc(@RequestBody MercMiniDeviceDto.Active active) {
  224. DeviceInfo deviceInfo = deviceInfoService.getById(active.getDeviceId());
  225. R checkR = this.checkDeviceByMerc(deviceInfo);
  226. if (checkR.getCode() == R.Enum.SUCCESS.getCode()) {
  227. Integer activeState = SysDictUtils.getValue(EnumDeviceActiveStatus.Code.CODE.getCode(), EnumDeviceActiveStatus.N_1.getCode(), Integer.class);
  228. String refMercCode = deviceInfo.getMercCode();
  229. //非质检商户需要进行判断,质检商户跳过
  230. if (!"10001".equals(refMercCode) && !deviceInfo.getActiveState().equals(activeState)) {
  231. return R.fail("机器未激活");
  232. }
  233. return R.ok();
  234. }
  235. return checkR;
  236. }
  237. @PostMapping("getActiveInfo")
  238. @ApiOperation("激活设备前判断")
  239. public R getActiveInfo(@RequestBody MercMiniDeviceDto.Active active) {
  240. DeviceInfo deviceInfo = deviceInfoService.getById(active.getDeviceId());
  241. R checkR = this.checkDeviceByMerc(deviceInfo);
  242. if (checkR.getCode() == R.Enum.SUCCESS.getCode()) {
  243. Integer activeState = SysDictUtils.getValue(EnumDeviceActiveStatus.Code.CODE.getCode(), EnumDeviceActiveStatus.N_1.getCode(), Integer.class);
  244. if (deviceInfo.getActiveState().equals(activeState)) {
  245. return R.fail("机器已激活");
  246. }
  247. return R.ok();
  248. }
  249. return checkR;
  250. }
  251. @PostMapping("active")
  252. @ApiOperation("激活设备")
  253. public R active(@RequestBody MercMiniDeviceDto.Active2 active) {
  254. List<Long> deviceIds = active.getDeviceId();
  255. List<DeviceInfo> list = deviceInfoService.list(new LambdaQueryWrapper<DeviceInfo>()
  256. .in(DeviceInfo::getDeviceId, deviceIds)
  257. );
  258. JMap<Integer, DeviceInfo> cover = new JArrayList<>(list).toMap(DeviceInfo::getDeviceType).cover();
  259. if (cover.size() > 1) {
  260. return R.fail("批量激活设备类型必须一致");
  261. }
  262. for (DeviceInfo deviceInfo : list) {
  263. R checkR = this.checkDeviceByMerc(deviceInfo);
  264. if (checkR.getCode() == R.Enum.FAIL.getCode()) {
  265. return checkR;
  266. }
  267. }
  268. return FactoryUtils.getServiceRoute(DeviceFactory.class, list.get(0).getDeviceType()).active(active);
  269. }
  270. @ApiOperation("运营状态修改")
  271. @PostMapping("modifyBusyStage")
  272. public R modifyBusyStage(@RequestBody @Validated MercMiniDeviceDto.BusySate busySate) {
  273. Long mercId = MercAuthUtils.getMercId();
  274. DeviceInfo deviceInfo = deviceInfoService.getById(busySate.getDeviceId());
  275. return FactoryUtils.getServiceRoute(DeviceFactory.class, deviceInfo.getDeviceType()).busyStatus(busySate.setMercId(mercId));
  276. }
  277. @ApiOperation("修改设备信息、上传坐标等")
  278. @PostMapping("updateInfo")
  279. public R updateInfo(@RequestBody @Validated MercMiniDeviceDto.UpdateInfo dto) {
  280. DeviceInfo deviceInfo = deviceInfoService.getById(dto.getDeviceId());
  281. if (!Emptys.check(deviceInfo) || Objects.equals(deviceInfo.getDeviceId(), MercAuthUtils.getMercId())) {
  282. return R.fail("设备不存在");
  283. }
  284. DeviceInfoDto.Update update = copy(DeviceInfoDto.Update.class, dto);
  285. deviceInfoService.update(update);
  286. return R.ok();
  287. }
  288. @ApiOperation("当前登录用户拥有的设备")
  289. @PostMapping("myDevices")
  290. R<List<Long>> myDevices() {
  291. return R.ok(getMyDevices());
  292. }
  293. /**
  294. * 获取登录人的设备
  295. *
  296. * @return
  297. */
  298. List<Long> getMyDevices() {
  299. boolean mercAdmin = MercAuthUtils.isMercAdmin();
  300. Long mercId = MercAuthUtils.getMercId();
  301. if (mercAdmin) {
  302. List<DeviceInfo> deviceInfos = deviceInfoService.list(Wrappers.<DeviceInfo>lambdaQuery().eq(DeviceInfo::getMercId, mercId).eq(DeviceInfo::getActiveState, DeviceActiveStateEnum.TRUE.getCode()));
  303. if (CollUtil.isEmpty(deviceInfos)) {
  304. return CollUtil.newArrayList();
  305. }
  306. return deviceInfos.stream().map(DeviceInfo::getDeviceId).collect(Collectors.toList());
  307. } else {
  308. //成员设备
  309. List<Long> deviceIds = R.feignCheckData(mercFeignService.mercUserDevice());
  310. return deviceIds;
  311. }
  312. }
  313. @PostMapping("genCode")
  314. @ApiOperation("蓝牙开门-生成授权码")
  315. public R<Boolean> genCode(@RequestBody @Validated DeviceBluetoothAuthDto.GenCode dto) {
  316. String deviceSn = dto.getDeviceSn();
  317. DeviceSysinfo deviceSysinfo = deviceSysinfoService.getOne(Wrappers.<DeviceSysinfo>lambdaQuery().eq(DeviceSysinfo::getDeviceSn, deviceSn));
  318. if (deviceSysinfo == null) {
  319. return R.fail("设备不存在!");
  320. }
  321. Long deviceId = deviceSysinfo.getDeviceId();
  322. //用户输入的
  323. String authCode = dto.getAuthCode();
  324. List<Long> myDevices = getMyDevices();
  325. if (!myDevices.contains(deviceId)) {
  326. return R.fail("抱歉!您无权对此设备进行授权!");
  327. }
  328. Long mercId = MercAuthUtils.getMercId();
  329. DeviceBluetoothAuth deviceBluetoothAuth = deviceBluetoothAuthService.getOne(Wrappers.<DeviceBluetoothAuth>lambdaQuery()
  330. .eq(DeviceBluetoothAuth::getDeviceId, deviceId)
  331. .eq(DeviceBluetoothAuth::getMercId, mercId)
  332. .eq(DeviceBluetoothAuth::getUseStatus, DeviceAuthCodeUseStatus.UN_USED.getCode())
  333. );
  334. String cacheAuthCode = getCacheAuthCode(deviceId);
  335. if (deviceBluetoothAuth != null) {
  336. if (StrUtil.isNotEmpty(cacheAuthCode)) {
  337. return R.fail("此设备尚有未使用的授权码:【" + cacheAuthCode + "】,请使用后再来生成!");
  338. } else {
  339. //已失效了
  340. deviceBluetoothAuthService.saveOrUpdate(deviceBluetoothAuth.setUseStatus(DeviceAuthCodeUseStatus.TIME_OUT.getCode()));
  341. }
  342. }
  343. //缓存
  344. setCacheAuthCode(deviceId, authCode);
  345. DeviceBluetoothAuth saveInfo = new DeviceBluetoothAuth()
  346. .setDeviceId(deviceId)
  347. .setMercId(mercId)
  348. .setDeviceId(deviceId).setAuthCode(authCode);
  349. return R.ok(deviceBluetoothAuthService.save(saveInfo));
  350. }
  351. @PostMapping("verificationCode")
  352. @ApiOperation("蓝牙开门-校验并使用授权码")
  353. public R<Boolean> verificationCode(@RequestBody @Validated DeviceBluetoothAuthDto.VerificationCode dto) {
  354. String deviceSn = dto.getDeviceSn();
  355. DeviceSysinfo deviceSysinfo = deviceSysinfoService.getOne(Wrappers.<DeviceSysinfo>lambdaQuery().eq(DeviceSysinfo::getDeviceSn, deviceSn));
  356. if (deviceSysinfo == null) {
  357. return R.fail("设备不存在!");
  358. }
  359. Long deviceId = deviceSysinfo.getDeviceId();
  360. String authCode = dto.getAuthCode();
  361. String cacheAuthCode = getCacheAuthCode(deviceId);
  362. if (!authCode.equals(cacheAuthCode)) {
  363. return R.fail("您输入的授权码有误或者无效!");
  364. }
  365. //验证通过,缓存去掉授权码,并更新状态
  366. Long mercId = MercAuthUtils.getMercId();
  367. DeviceBluetoothAuth deviceBluetoothAuth = deviceBluetoothAuthService.getOne(Wrappers.<DeviceBluetoothAuth>lambdaQuery()
  368. .eq(DeviceBluetoothAuth::getDeviceId, deviceId)
  369. .eq(DeviceBluetoothAuth::getAuthCode, authCode)
  370. .eq(DeviceBluetoothAuth::getMercId, mercId)
  371. .eq(DeviceBluetoothAuth::getUseStatus, DeviceAuthCodeUseStatus.UN_USED.getCode())
  372. );
  373. if (deviceBluetoothAuth == null) {
  374. return R.fail("您输入的授权码无效!");
  375. }
  376. //缓存去掉授权码
  377. delCacheAuthCode(deviceId);
  378. deviceBluetoothAuth.setUseStatus(DeviceAuthCodeUseStatus.USED.getCode());
  379. deviceBluetoothAuth.setUseUser(AuthorizeUtils.getLoginId(Long.class));
  380. deviceBluetoothAuth.setUseTime(LocalDateTime.now());
  381. return R.ok(deviceBluetoothAuthService.saveOrUpdate(deviceBluetoothAuth));
  382. }
  383. /**
  384. * auth-code有效期30分钟,单位:s ,
  385. */
  386. public static final Integer AUTH_CODE_TIMEOUT = 1800;
  387. public static void setCacheAuthCode(Long deviceId, String code) {
  388. RedisService<String> redisService = SpringBeanUtils.getBean(RedisService.class);
  389. redisService.set("device:auth:code:" + deviceId, code, AUTH_CODE_TIMEOUT);
  390. }
  391. public static String getCacheAuthCode(Long deviceId) {
  392. RedisService<String> redisService = SpringBeanUtils.getBean(RedisService.class);
  393. return redisService.get("device:auth:code:" + deviceId);
  394. }
  395. public static void delCacheAuthCode(Long deviceId) {
  396. RedisService<String> redisService = SpringBeanUtils.getBean(RedisService.class);
  397. redisService.remove("device:auth:code:" + deviceId);
  398. }
  399. }