yangxiaokun hace 2 años
padre
commit
bb3d114714

+ 0 - 6
src/main/java/com/zy/omp/config/mqtt/MqttCallbackHandler.java

@@ -36,8 +36,6 @@ public class MqttCallbackHandler {
     private DeviceSetService deviceSetService;
     @Resource
     private SetService setService;
-    //@Resource
-    //private WebSocketServer webSocketServer;
     @Resource
     private CallRecordsService callRecordsService;
     @Resource
@@ -73,10 +71,6 @@ public class MqttCallbackHandler {
                 break;
             }
         }
-        //转发消息至网页,忽略注册的报文
-//        if (!topic.equals(Constant.TOPIC_REGISTER_SERVER)) {
-//            webSocketServer.massMessage(msgDto.getOpenNum(), payload);
-//        }
     }
 
     /**

+ 15 - 54
src/main/java/com/zy/omp/controller/wx/DeviceController.java

@@ -1,8 +1,6 @@
 package com.zy.omp.controller.wx;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.zy.omp.common.ServerResponse;
 import com.zy.omp.common.controller.BaseController;
 import com.zy.omp.model.Device;
@@ -35,39 +33,27 @@ public class DeviceController extends BaseController {
     private DeviceService deviceService;
 
     /**
-     * 查询用户默认设备的最新数据
+     * 查询设备最新的状态信息
      */
-    @GetMapping("getLatestState.do")
-    public ServerResponse getLatestState() {
-        return ServerResponse.createBySuccess(deviceInfoStateService.getLatestState(getOpenId()));
+    @GetMapping("getLatestDetail.do")
+    public ServerResponse getLatestDetail(String openNum) {
+        return ServerResponse.createBySuccess(deviceInfoStateService.getDeviceLatestDetail(openNum, getOpenId()));
     }
 
     /**
-     * 查询用户默认设备
+     * 查询用户绑定的设备
      */
-    @GetMapping("getDefaultDevice.do")
-    public ServerResponse getDefaultDevice() {
-        return ServerResponse.createBySuccess(relationService.getDefaultByOpenId(getOpenId()));
+    @GetMapping("listBindDevices.do")
+    public ServerResponse listBindDevices() {
+        return ServerResponse.createBySuccess(relationService.listByOpenId(getOpenId()));
     }
 
     /**
-     * 查询用户所有的设备
+     * 切换默认设备
      */
-    @GetMapping("getListByOpenId.do")
-    public ServerResponse getListByOpenId() {
-        return ServerResponse.createBySuccess(relationService.getListByOpenId(getOpenId()));
-    }
-
-    /**
-     * 设置默认设备
-     */
-    @PostMapping("setDefault.do")
+    @PostMapping("switchDefault.do")
     public ServerResponse setDefault(String openNum) {
-        relationService.update(new UpdateWrapper<Relation>()
-                .set("isDefault", 1)
-                .eq("openId", getOpenId())
-                .eq("openNum", openNum));
-        return ServerResponse.createBySuccess();
+        return ServerResponse.createBySuccess(relationService.updateDefaultDevice(openNum, getOpenId()));
     }
 
     /**
@@ -75,11 +61,8 @@ public class DeviceController extends BaseController {
      */
     @PostMapping("updateName.do")
     public ServerResponse updateName(Relation relation) {
-        relationService.update(new UpdateWrapper<Relation>()
-                .set("deviceName", relation.getDeviceName())
-                .eq("openId", getOpenId())
-                .eq("openNum", relation.getOpenNum()));
-        return ServerResponse.createBySuccess();
+        relation.setOpenId(getOpenId());
+        return ServerResponse.createBySuccess(relationService.updateDeviceName(relation));
     }
 
     /**
@@ -90,11 +73,8 @@ public class DeviceController extends BaseController {
         //校验设备码有效性
         if (deviceService.getOne(new QueryWrapper<Device>().eq("openNum", relation.getOpenNum())) == null)
             return ServerResponse.createByWarning("设备码无效!");
-        //校验是否有绑定关系
-        if (relationService.checkBind(relation.getOpenNum())) return ServerResponse.createByWarning("该设备已经有用户绑定!");
         relation.setOpenId(getOpenId());
-        relationService.save(relation);
-        return ServerResponse.createBySuccess();
+        return ServerResponse.createBySuccess(relationService.saveRelation(relation));
     }
 
     /**
@@ -102,26 +82,7 @@ public class DeviceController extends BaseController {
      */
     @PostMapping("unbind.do")
     public ServerResponse unbind(String openNum) {
-        relationService.remove(new QueryWrapper<Relation>()
-                .eq("openNum", openNum)
-                .eq("openId", getOpenId()));
-        return ServerResponse.createBySuccess();
+        return ServerResponse.createBySuccess(relationService.remove(new QueryWrapper<Relation>().eq("openNum", openNum).eq("openId", getOpenId())));
     }
 
-    /**
-     * 修改默认设备
-     * 即登陆以后使用那个设备
-     *
-     * @param openNum 设备码
-     */
-    @PostMapping("changeDefault.do")
-    public ServerResponse changeDefault(String openNum) {
-        //删除上一个默认设备
-        relationService.update(Wrappers.<Relation>lambdaUpdate().eq(Relation::getIsDefault, 1)
-                .eq(Relation::getOpenId, getOpenId()).set(Relation::getIsDefault, 0));
-        //添加新的默认设备
-        relationService.update(Wrappers.<Relation>lambdaUpdate().eq(Relation::getOpenNum, openNum)
-                .set(Relation::getIsDefault, 1));
-        return ServerResponse.createBySuccess();
-    }
 }

+ 1 - 1
src/main/java/com/zy/omp/controller/wx/SetController.java

@@ -81,7 +81,7 @@ public class SetController extends BaseController {
     }
 
     /**
-     * 设置SOS紧急呼叫
+     * 设置联系人
      */
     @PostMapping("sos.do")
     public ServerResponse setSOS(DeviceSet param) {

+ 2 - 2
src/main/java/com/zy/omp/controller/wx/SetInfoController.java

@@ -28,7 +28,7 @@ public class SetInfoController extends BaseController {
     @Resource
     private CallRecordsService callRecordsService;
     @Resource
-    private NewsService setNewsService;
+    private NewsService newsService;
 
     /**
      * 查询设备的音量设置
@@ -75,6 +75,6 @@ public class SetInfoController extends BaseController {
      */
     @GetMapping("news.do")
     public ServerResponse news(NewsIO io) {
-        return ServerResponse.createBySuccess(setNewsService.getListPage(io));
+        return ServerResponse.createBySuccess(newsService.getListPage(io));
     }
 }

+ 4 - 4
src/main/java/com/zy/omp/controller/wx/UserController.java

@@ -1,6 +1,5 @@
 package com.zy.omp.controller.wx;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.zy.omp.common.ServerResponse;
 import com.zy.omp.model.Relation;
 import com.zy.omp.model.User;
@@ -13,6 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -47,9 +47,9 @@ public class UserController {
         Map<String, String> result = new HashMap<>();
         result.put("userId", AesUtils.encrypt(openId));
         //用户默认设备ID
-        Relation relation = relationService.getDefaultByOpenId(openId);
-        if (relation != null) {
-            result.put("openNum", relation.getOpenNum());
+        List<Relation> relationList = relationService.listByOpenId(openId);
+        if (relationList != null && !relationList.isEmpty()) {
+            result.put("openNum", relationList.get(0).getOpenNum());
         }
         return ServerResponse.createBySuccess(result);
     }

+ 5 - 4
src/main/java/com/zy/omp/mapper/DeviceInfoStateMapper.java

@@ -2,7 +2,7 @@ package com.zy.omp.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zy.omp.model.DeviceInfoState;
-import com.zy.omp.pojo.vo.WxLatestDeviceState;
+import com.zy.omp.pojo.vo.DeviceDetailVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -18,9 +18,10 @@ import org.springframework.stereotype.Repository;
 public interface DeviceInfoStateMapper extends BaseMapper<DeviceInfoState> {
 
     /**
-     * 通过用户openId 查询该用户的默认设备
+     * 查询设备最新的状态信息
      *
-     * @param openId 用户openId
+     * @param openNum 设备号
+     * @param openId  用户openId
      */
-    WxLatestDeviceState getDefaultByOpenId(@Param("openId") String openId);
+    DeviceDetailVO getDeviceLatestDetail(@Param("openNum") String openNum, @Param("openId") String openId);
 }

+ 8 - 0
src/main/java/com/zy/omp/mapper/RelationMapper.java

@@ -16,6 +16,14 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface RelationMapper extends BaseMapper<Relation> {
 
+    /**
+     * 更新默认设备
+     *
+     * @param openNum 设备编号
+     * @param openId  用户ID
+     */
+    int updateDefaultDevice(@Param("openNum") String openNum, @Param("openId") String openId);
+
     /**
      * 查询设备是否有绑定用户
      *

+ 1 - 0
src/main/java/com/zy/omp/model/Relation.java

@@ -13,6 +13,7 @@ import java.time.LocalDateTime;
  */
 @Data
 public class Relation {
+
     @TableId
     private Integer id;
 

+ 7 - 10
src/main/java/com/zy/omp/pojo/vo/WxLatestDeviceState.java → src/main/java/com/zy/omp/pojo/vo/DeviceDetailVO.java

@@ -1,25 +1,28 @@
 package com.zy.omp.pojo.vo;
 
-import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import java.time.LocalDateTime;
 
 /**
- * 设备最新状态信息
+ * 设备最新详情状态信息
  *
  * @author yang xiao kun
  * create on 2021/11/29
  */
 @Data
-public class WxLatestDeviceState {
+public class DeviceDetailVO {
 
     /**
      * 设备ID
      */
-    @TableId
     private String openNum;
 
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
     /**
      * 0:无法定位,1:北斗定位,2:基站定位,3:GPS定位
      */
@@ -69,10 +72,4 @@ public class WxLatestDeviceState {
      * 数据上传时间
      */
     private LocalDateTime uploadTime;
-
-    /**
-     * 设备名称
-     */
-    private String deviceName;
-
 }

+ 6 - 5
src/main/java/com/zy/omp/service/DeviceInfoStateService.java

@@ -3,7 +3,7 @@ package com.zy.omp.service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zy.omp.mapper.DeviceInfoStateMapper;
 import com.zy.omp.model.DeviceInfoState;
-import com.zy.omp.pojo.vo.WxLatestDeviceState;
+import com.zy.omp.pojo.vo.DeviceDetailVO;
 import org.springframework.stereotype.Service;
 
 /**
@@ -16,11 +16,12 @@ import org.springframework.stereotype.Service;
 public class DeviceInfoStateService extends ServiceImpl<DeviceInfoStateMapper, DeviceInfoState> {
 
     /**
-     * 通过用户openId 查询该用户的设备集合
+     * 查询设备最新的状态信息
      *
-     * @param openId 用户openId
+     * @param openNum 设备号
+     * @param openId  用户openId
      */
-    public WxLatestDeviceState getLatestState(String openId) {
-        return baseMapper.getDefaultByOpenId(openId);
+    public DeviceDetailVO getDeviceLatestDetail(String openNum, String openId) {
+        return baseMapper.getDeviceLatestDetail(openNum, openId);
     }
 }

+ 29 - 12
src/main/java/com/zy/omp/service/RelationService.java

@@ -1,6 +1,7 @@
 package com.zy.omp.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zy.omp.mapper.RelationMapper;
 import com.zy.omp.model.Relation;
@@ -22,23 +23,39 @@ public class RelationService extends ServiceImpl<RelationMapper, Relation> {
      *
      * @param openId 用户ID
      */
-    public Relation getDefaultByOpenId(String openId) {
-        QueryWrapper<Relation> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("openId", openId)
-                .eq("isDefault", 1);
-        return baseMapper.selectOne(queryWrapper);
+    public List<Relation> listByOpenId(String openId) {
+        return baseMapper.selectList(new QueryWrapper<Relation>().select("openNum", "deviceName", "isDefault")
+                .eq("openId", openId).orderByDesc("isDefault", "updateTime"));
     }
 
     /**
-     * 查询用户的所有设备
+     * 切换默认设备
+     */
+    public boolean updateDefaultDevice(String openNum, String openId) {
+        return baseMapper.updateDefaultDevice(openNum, openId) > 0;
+    }
+
+    /**
+     * 更新设备名称
+     */
+    public boolean updateDeviceName(Relation relation) {
+        return update(new UpdateWrapper<Relation>()
+                .set("deviceName", relation.getDeviceName())
+                .eq("openId", relation.getOpenId())
+                .eq("openNum", relation.getOpenNum()));
+    }
+
+    /**
+     * 保存设备绑定关系
      *
-     * @param openId 用户ID
+     * @return 当前绑定的设备列表
      */
-    public List<Relation> getListByOpenId(String openId) {
-        QueryWrapper<Relation> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("openId", openId)
-                .orderByDesc("isDefault", "updateTime");
-        return baseMapper.selectList(queryWrapper);
+    public List<Relation> saveRelation(Relation relation) {
+        //保存新纪录
+        save(relation);
+        //设置默认设备
+        updateDefaultDevice(relation.getOpenNum(), relation.getOpenId());
+        return listByOpenId(relation.getOpenId());
     }
 
     /**

+ 0 - 6
src/main/java/com/zy/omp/service/SetService.java

@@ -30,8 +30,6 @@ public class SetService {
     private MqttGateway mqttGateway;
     @Resource
     private MqttLogService mqttLogService;
-//    @Resource
-//    private WebSocketServer webSocketServer;
 
     /**
      * 存储语音播报
@@ -46,8 +44,6 @@ public class SetService {
         newsService.save(news);
         // 3. 存储消息日志
         mqttLogService.saveSendLog(topic, msgDto.toJson());
-        // 4. 消息转发前端webSocket
-        //webSocketServer.massMessage(news.getOpenNum(), msgDto.toJson());
     }
 
     /**
@@ -65,8 +61,6 @@ public class SetService {
         deviceSetService.updateById(param);
         // 3. 存储消息日志
         mqttLogService.saveSendLog(topic, msgDto.toJson());
-        // 4. 消息转发前端webSocket
-//        webSocketServer.massMessage(param.getOpenNum(), msgDto.toJson());
     }
 
     /**

+ 9 - 6
src/main/resources/mapper/DeviceInfoStateMapping.xml

@@ -2,12 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zy.omp.mapper.DeviceInfoStateMapper">
 
-    <select id="getDefaultByOpenId" resultType="com.zy.omp.pojo.vo.WxLatestDeviceState">
-        SELECT t1.deviceName,
-               t2.*
+    <select id="getDeviceLatestDetail" resultType="com.zy.omp.pojo.vo.DeviceDetailVO">
+        SELECT
+            t1.deviceName,
+            t2.*
         FROM relation t1
-                 LEFT JOIN device_info_state t2 ON t1.openNum = t2.openNum
-        WHERE t1.openId = #{openId}
-          AND t1.isDefault = 1
+        LEFT JOIN device_info_state t2 ON t1.openNum = t2.openNum
+        WHERE
+            t1.openNum = #{openNum}
+            AND t1.openId = #{openId}
     </select>
+
 </mapper>

+ 4 - 0
src/main/resources/mapper/RelationMapping.xml

@@ -2,6 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zy.omp.mapper.RelationMapper">
 
+    <update id="updateDefaultDevice">
+        update relation set isDefault = (openNum = #{openNum}) where openId = #{openId}
+    </update>
+
     <select id="checkBind" resultType="java.lang.Integer">
         SELECT IFNULL( (SELECT 1 FROM relation WHERE openNum = #{openNum} LIMIT 1) ,0)
     </select>