From 43f6f2ca0b06058bab90d011b5f5443ac9fefef4 Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Tue, 8 Jul 2025 09:00:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=91=E5=AE=9A=EF=BC=8C?= =?UTF-8?q?=E8=A7=A3=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controller/AppDeviceController.java | 52 +++++++++++++ .../fuyuanshen/app/service/DeviceService.java | 58 -------------- .../src/main/resources/application-dev.yml | 4 +- .../equipment/domain/dto/AppDeviceBo.java | 31 ++++++++ .../domain/query/DeviceQueryCriteria.java | 2 + .../equipment/domain/vo/AppDeviceVo.java | 24 ++++++ .../equipment/mapper/DeviceMapper.java | 2 + .../equipment/service/DeviceService.java | 9 +++ .../service/impl/DeviceServiceImpl.java | 76 +++++++++++++++++++ .../mapper/equipment/DeviceMapper.xml | 9 +++ 10 files changed, 207 insertions(+), 60 deletions(-) create mode 100644 fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java delete mode 100644 fys-admin/src/main/java/com/fuyuanshen/app/service/DeviceService.java create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java create mode 100644 fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java diff --git a/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java b/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java new file mode 100644 index 0000000..b14bee6 --- /dev/null +++ b/fys-admin/src/main/java/com/fuyuanshen/app/controller/AppDeviceController.java @@ -0,0 +1,52 @@ +package com.fuyuanshen.app.controller; + +import com.fuyuanshen.common.core.domain.R; +import com.fuyuanshen.common.mybatis.core.page.PageQuery; +import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; +import com.fuyuanshen.common.web.core.BaseController; +import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; +import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; +import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; +import com.fuyuanshen.equipment.service.DeviceService; +import lombok.RequiredArgsConstructor; +import org.apache.ibatis.annotations.Delete; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * APP 设备信息管理 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app/device") +public class AppDeviceController extends BaseController { + + private final DeviceService deviceService; + + /** + * 查询文件列表 + */ + @GetMapping("/list") + public TableDataInfo list(DeviceQueryCriteria bo, PageQuery pageQuery) { + + return deviceService.queryAppDeviceList(bo,pageQuery); + } + + /** + * 绑定设备 + */ + @PostMapping("/bind") + public R bind(@RequestBody AppDeviceBo bo) { + return toAjax(deviceService.bindDevice(bo)); + } + + + /** + * 解绑设备 + */ + @Delete("/unBind") + public R unBind(Long id) { + return toAjax(deviceService.unBindDevice(id)); + } +} diff --git a/fys-admin/src/main/java/com/fuyuanshen/app/service/DeviceService.java b/fys-admin/src/main/java/com/fuyuanshen/app/service/DeviceService.java deleted file mode 100644 index f61fa28..0000000 --- a/fys-admin/src/main/java/com/fuyuanshen/app/service/DeviceService.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.fuyuanshen.app.service; - -import cn.dev33.satoken.exception.NotLoginException; -import cn.dev33.satoken.stp.StpUtil; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.ObjectUtil; -import com.fuyuanshen.app.domain.bo.AppUserBo; -import com.fuyuanshen.app.domain.vo.AppRoleVo; -import com.fuyuanshen.app.domain.vo.AppUserVo; -import com.fuyuanshen.app.domain.vo.DeviceVo; -import com.fuyuanshen.common.core.constant.Constants; -import com.fuyuanshen.common.core.constant.SystemConstants; -import com.fuyuanshen.common.core.constant.TenantConstants; -import com.fuyuanshen.common.core.domain.dto.RoleDTO; -import com.fuyuanshen.common.core.domain.model.AppLoginUser; -import com.fuyuanshen.common.core.domain.model.LoginUser; -import com.fuyuanshen.common.core.enums.LoginType; -import com.fuyuanshen.common.core.exception.user.UserException; -import com.fuyuanshen.common.core.utils.MessageUtils; -import com.fuyuanshen.common.core.utils.ServletUtils; -import com.fuyuanshen.common.core.utils.SpringUtils; -import com.fuyuanshen.common.core.utils.StringUtils; -import com.fuyuanshen.common.log.event.LogininforEvent; -import com.fuyuanshen.common.mybatis.core.page.PageQuery; -import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; -import com.fuyuanshen.common.redis.utils.RedisUtils; -import com.fuyuanshen.common.satoken.utils.LoginHelper; -import com.fuyuanshen.common.tenant.exception.TenantException; -import com.fuyuanshen.common.tenant.helper.TenantHelper; -import com.fuyuanshen.system.domain.vo.SysTenantVo; -import com.fuyuanshen.system.service.ISysTenantService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import java.time.Duration; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.function.Supplier; - -/** - * 登录校验方法 - * - * @author Lion Li - */ -@RequiredArgsConstructor -@Slf4j -@Service -public class DeviceService { - - - public TableDataInfo queryPageList(AppUserBo bo, PageQuery pageQuery) { - return null; - } -} diff --git a/fys-admin/src/main/resources/application-dev.yml b/fys-admin/src/main/resources/application-dev.yml index 811dcfd..9e18f8f 100644 --- a/fys-admin/src/main/resources/application-dev.yml +++ b/fys-admin/src/main/resources/application-dev.yml @@ -296,8 +296,8 @@ file: # MQTT配置 mqtt: username: admin - password: fys123456 - url: tcp://47.107.152.87:1883 + password: #YtvpSfCNG + url: tcp://47.120.79.150:2883 subClientId: fys_subClient_01 subTopic: worker/alert/#,worker/location/# pubTopic: worker/location diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java new file mode 100644 index 0000000..716d937 --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/dto/AppDeviceBo.java @@ -0,0 +1,31 @@ +package com.fuyuanshen.equipment.domain.dto; + +import com.fuyuanshen.common.core.validate.EditGroup; +import com.fuyuanshen.common.mybatis.core.domain.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 绑定设备参数 + */ +@Data +public class AppDeviceBo { + /** + * 设备IMEI + */ + private String deviceImei; + + /** + * 设备MAC + */ + private String deviceMac; + + /** + * 通讯方式 0:4G; 1:蓝牙 + */ + @NotNull(message = "通讯方式不能为空", groups = { EditGroup.class }) + private Integer communicationMode; + +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java index 6a098ab..5e7d837 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/query/DeviceQueryCriteria.java @@ -65,4 +65,6 @@ public class DeviceQueryCriteria { @Schema(name = "通讯方式", example = "0:4G;1:蓝牙") private Integer communicationMode; + /* app绑定用户id */ + private Long bindingUserId; } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java new file mode 100644 index 0000000..b68b96a --- /dev/null +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java @@ -0,0 +1,24 @@ +package com.fuyuanshen.equipment.domain.vo; + +import lombok.Data; + +@Data +public class AppDeviceVo { + + private Long id; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 设备IMEI + */ + private String deviceImei; + + /** + * 设备MAC + */ + private String deviceMac; +} diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java index c473541..e456382 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/mapper/DeviceMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; +import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -31,4 +32,5 @@ public interface DeviceMapper extends BaseMapper { List findAllDevices(@Param("criteria") DeviceQueryCriteria criteria); + Page queryAppDeviceList(Page page,@Param("criteria") DeviceQueryCriteria criteria); } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceService.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceService.java index 4990517..29abd2d 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceService.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/DeviceService.java @@ -3,10 +3,13 @@ package com.fuyuanshen.equipment.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.fuyuanshen.common.core.domain.PageResult; +import com.fuyuanshen.common.mybatis.core.page.PageQuery; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.equipment.domain.Device; +import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; import com.fuyuanshen.equipment.domain.form.DeviceForm; import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; +import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; import com.fuyuanshen.equipment.domain.vo.CustomerVo; import java.io.IOException; @@ -81,4 +84,10 @@ public interface DeviceService extends IService { * @param deviceForm */ void unbindDevice(DeviceForm deviceForm); + + TableDataInfo queryAppDeviceList(DeviceQueryCriteria bo, PageQuery pageQuery); + + int bindDevice(AppDeviceBo bo); + + int unBindDevice(Long id); } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java index df9f271..a3bc5e7 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceServiceImpl.java @@ -1,21 +1,30 @@ package com.fuyuanshen.equipment.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fuyuanshen.common.core.domain.model.LoginUser; +import com.fuyuanshen.common.mybatis.core.page.PageQuery; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; +import com.fuyuanshen.common.satoken.utils.AppLoginHelper; import com.fuyuanshen.common.satoken.utils.LoginHelper; import com.fuyuanshen.customer.domain.Customer; import com.fuyuanshen.customer.mapper.CustomerMapper; import com.fuyuanshen.equipment.constants.DeviceConstants; import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.DeviceType; +import com.fuyuanshen.equipment.domain.dto.AppDeviceBo; import com.fuyuanshen.equipment.domain.form.DeviceForm; import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria; import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria; +import com.fuyuanshen.equipment.domain.vo.AppDeviceVo; import com.fuyuanshen.equipment.domain.vo.CustomerVo; +import com.fuyuanshen.equipment.enums.BindingStatusEnum; +import com.fuyuanshen.equipment.enums.CommunicationModeEnum; import com.fuyuanshen.equipment.mapper.DeviceMapper; import com.fuyuanshen.equipment.mapper.DeviceTypeMapper; import com.fuyuanshen.equipment.service.DeviceService; @@ -306,5 +315,72 @@ public class DeviceServiceImpl extends ServiceImpl impleme } + @Override + public TableDataInfo queryAppDeviceList(DeviceQueryCriteria bo, PageQuery pageQuery) { + Long userId = AppLoginHelper.getUserId(); + bo.setBindingUserId(userId); + Page result = baseMapper.queryAppDeviceList(pageQuery.build(), bo); + return TableDataInfo.build(result); + } + + @Override + public int bindDevice(AppDeviceBo bo) { + Integer mode = bo.getCommunicationMode(); + Long userId = AppLoginHelper.getUserId(); + if(mode == CommunicationModeEnum.FOUR_G.getValue()){ + + String deviceImei = bo.getDeviceImei(); + QueryWrapper qw = new QueryWrapper() + .eq("device_imei", deviceImei); + List devices = baseMapper.selectList(qw); + if(devices.isEmpty()){ + throw new RuntimeException("请先将设备入库!!!"); + } + Device device = devices.get(0); + if(device.getBindingStatus()!=null && device.getBindingStatus() == BindingStatusEnum.BOUND.getCode()){ + throw new RuntimeException("设备已绑定"); + } + UpdateWrapper deviceUpdateWrapper = new UpdateWrapper<>(); + deviceUpdateWrapper.eq("id", device.getId()) + .set("binding_status", BindingStatusEnum.BOUND.getCode()) + .set("binding_user_id",userId);; + + return baseMapper.update(null, deviceUpdateWrapper); + }else if(mode == CommunicationModeEnum.BLUETOOTH.getValue()){ + String deviceMac = bo.getDeviceMac(); + QueryWrapper qw = new QueryWrapper() + .eq("device_mac", deviceMac); + List devices = baseMapper.selectList(qw); + if(devices.isEmpty()){ + throw new RuntimeException("请先将设备入库!!!"); + } + Device device = devices.get(0); + if(device.getBindingStatus() != null && device.getBindingStatus() == BindingStatusEnum.BOUND.getCode()){ + throw new RuntimeException("设备已绑定"); + } + UpdateWrapper deviceUpdateWrapper = new UpdateWrapper<>(); + deviceUpdateWrapper.eq("id", device.getId()) + .set("binding_status", BindingStatusEnum.BOUND.getCode()) + .set("binding_user_id",userId); + return baseMapper.update(null, qw); + }else{ + throw new RuntimeException("通讯方式错误"); + } + + } + + @Override + public int unBindDevice(Long id) { + Device device = baseMapper.selectById(id); + if(device == null){ + throw new RuntimeException("请先将设备入库!!!"); + } + DeviceType deviceType = deviceTypeMapper.selectById(device.getDeviceType()); + String mode = deviceType.getCommunicationMode(); + UpdateWrapper deviceUpdateWrapper = new UpdateWrapper<>(); + deviceUpdateWrapper.eq("id", device.getId()) + .set("binding_status", BindingStatusEnum.UNBOUND.getCode()); + return baseMapper.update(null, deviceUpdateWrapper); + } } diff --git a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml index 8879dae..b83c9ea 100644 --- a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml +++ b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml @@ -92,5 +92,14 @@ order by d.id desc + \ No newline at end of file