Pārlūkot izejas kodu

太阳能板凳的修改完成

weclouds 1 gadu atpakaļ
vecāks
revīzija
77f1418acd
31 mainītis faili ar 975 papildinājumiem un 13 dzēšanām
  1. 13 7
      src/main/java/com/welampiot/common/InterfaceResultEnum.java
  2. 1 1
      src/main/java/com/welampiot/controller/ArchiveManageController.java
  3. 438 0
      src/main/java/com/welampiot/controller/benchCommonController.java
  4. 10 0
      src/main/java/com/welampiot/dao/BenchDevInfoDao.java
  5. 9 0
      src/main/java/com/welampiot/dao/BenchUserInfoDao.java
  6. 12 0
      src/main/java/com/welampiot/dao/BenchUserLogDao.java
  7. 3 0
      src/main/java/com/welampiot/dao/LampPoleDao.java
  8. 1 0
      src/main/java/com/welampiot/dao/WifiDao.java
  9. 16 0
      src/main/java/com/welampiot/dto/BenchUserInfoDTO.java
  10. 17 0
      src/main/java/com/welampiot/dto/BenchUserLogDTO.java
  11. 1 1
      src/main/java/com/welampiot/security/ValidateImageCodeFilter.java
  12. 11 0
      src/main/java/com/welampiot/service/BenchDevInfoService.java
  13. 9 0
      src/main/java/com/welampiot/service/BenchUserInfoService.java
  14. 12 0
      src/main/java/com/welampiot/service/BenchUserLogService.java
  15. 3 0
      src/main/java/com/welampiot/service/LampPoleService.java
  16. 1 0
      src/main/java/com/welampiot/service/WifiService.java
  17. 25 0
      src/main/java/com/welampiot/service/impl/BenchDevInfoServiceImpl.java
  18. 27 0
      src/main/java/com/welampiot/service/impl/BenchUserInfoServiceImpl.java
  19. 32 0
      src/main/java/com/welampiot/service/impl/BenchUserLogServiceImpl.java
  20. 8 0
      src/main/java/com/welampiot/service/impl/LampPoleServiceImpl.java
  21. 4 0
      src/main/java/com/welampiot/service/impl/WifiServiceImpl.java
  22. 75 2
      src/main/java/com/welampiot/utils/ToolUtils.java
  23. 41 0
      src/main/java/com/welampiot/vo/BenchDevInfoVO.java
  24. 13 0
      src/main/java/com/welampiot/vo/BenchUserInfoVO.java
  25. 114 0
      src/main/resources/mapper/BenchDevInfoMapper.xml
  26. 24 0
      src/main/resources/mapper/BenchUserInfoMapper.xml
  27. 36 0
      src/main/resources/mapper/BenchUserLogMapper.xml
  28. 13 0
      src/main/resources/mapper/LampPoleMapper.xml
  29. 4 0
      src/main/resources/mapper/WifiMapper.xml
  30. 1 1
      src/main/resources/prod/application.yml
  31. 1 1
      src/main/resources/test/application.yml

+ 13 - 7
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -250,13 +250,19 @@ public enum InterfaceResultEnum {
     PERSON_BIND_ERROR("0900","推送人员已经绑定了","The pusher is already bound","толкатель уже связал"),
     PERSON_OVER_ERROR("0901","推送人员不能超过10个","No more than 10 people can be pushed","Численность персонала не должна превышать 10 человек"),
 
-    //档案管理 1000-1999
-    LACK_FILE_NAME_ERROR("0901","请输入名称","Please enter a name","Введите имя"),
-    LACK_FILE_NUMBER_ERROR("0902","请输入编号","Please enter the number","Пожалуйста, войдите в номер."),
-    REPEAT_FILE_NAME_ERROR("0903","文件名称已存在","File name already exists","Имя файла уже существует"),
-    LACK_FILE_ERROR("0904","缺少文件","Missing file","Отсутствие документов"),
-    FILE_TYPE_ERROR("0905","文件不支持","File type not supported","Тип файла не поддерживается "),
-    UNKNOW_FILE_ERROR("0906","文件未知错误","Unknown file error","Файл Неизвестная ошибка"),
+    //档案管理 1000-1099
+    LACK_FILE_NAME_ERROR("1000","请输入名称","Please enter a name","Введите имя"),
+    LACK_FILE_NUMBER_ERROR("1001","请输入编号","Please enter the number","Пожалуйста, войдите в номер."),
+    REPEAT_FILE_NAME_ERROR("1002","文件名称已存在","File name already exists","Имя файла уже существует"),
+    LACK_FILE_ERROR("1003","缺少文件","Missing file","Отсутствие документов"),
+    FILE_TYPE_ERROR("1004","文件不支持","File type not supported","Тип файла не поддерживается "),
+    UNKNOW_FILE_ERROR("1005","文件未知错误","Unknown file error","Файл Неизвестная ошибка"),
+
+    //太阳能板凳设备 1100-1199
+    DEVICE_CONNECTED("1100","设备已连接","device connected","устройство подключено"),
+    DEVICE_CONNECTED_ELSE("1101","设备已被他人连接","The device is connected by someone else","устройство подключено"),
+    DEVICE_DISCONNECT("1102","请先断开其他设备","Please disconnect other devices first","Отключите сначала другое устройство"),
+    DEVICE_TURN_ON("1103","请先开启输出状态","Please turn on the output state first","состояние на выходе"),
 
     ;
     private String code;

+ 1 - 1
src/main/java/com/welampiot/controller/ArchiveManageController.java

@@ -348,7 +348,7 @@ public class ArchiveManageController {
     public BaseResult<?> updateFile(HttpServletRequest request) throws Exception {
         MultipartFile file = ((StandardMultipartHttpServletRequest) request).getFile("file");
 
-        String result = toolUtils.uploadFile(file, null, null,null);
+        String result = toolUtils.uploadFile(file,null, null,null);
         if (result.equals("0001")){
             //缺少文件
             return toolUtils.response(InterfaceResultEnum.LACK_FILE_ERROR,0);

+ 438 - 0
src/main/java/com/welampiot/controller/benchCommonController.java

@@ -0,0 +1,438 @@
+package com.welampiot.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.welampiot.common.BaseResult;
+import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.BenchUserInfoDTO;
+import com.welampiot.dto.BenchUserLogDTO;
+import com.welampiot.dto.LampPoleDTO;
+import com.welampiot.dto.WifiDTO;
+import com.welampiot.service.*;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.BenchDevInfoVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+@RestController
+@CrossOrigin
+@RequestMapping("/benchCommon")
+public class benchCommonController {
+    @Autowired
+    private ToolUtils toolUtils;
+    @Autowired
+    private BenchUserInfoService benchUserInfoService;
+    @Autowired
+    private BenchDevInfoService benchDevInfoService;
+    @Autowired
+    private LampPoleService lampPoleService;
+    @Autowired
+    private WifiService wifiService;
+    @Autowired
+    private BenchUserLogService benchUserLogService;
+
+    /**
+     * 登录
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/login", method = RequestMethod.POST)
+    public BaseResult<?> login(HttpServletRequest request) {
+        Integer version = (Integer) toolUtils.getRequestContent(request, "version", 1);
+        Integer code = request.getParameter("code") == null ? 0 : Integer.parseInt(request.getParameter("code"));
+        String nickname = request.getParameter("nickname");
+        String avaurl = request.getParameter("avaurl");
+        String sex = request.getParameter("sex");
+        String appid = "wx2a33d29d59659327";
+        String secret = "76beab10aad5b7c072dc249b16337c51";
+        String url = "https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+secret+"&js_code="+code+"&grant_type=authorization_code";
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String currentTime = simpleDateFormat.format(new Date());
+
+        try {
+            String getResult = toolUtils.sendHttp("get", url, null, 5, null, null);
+            JSONObject jsonObject = JSON.parseObject(getResult);
+            Integer errcode = jsonObject.getInteger("errcode");
+            if (errcode != null){
+                //失败
+                BaseResult<Object> objectBaseResult = new BaseResult<>(String.format("%d",errcode), jsonObject.getString("errmsg"), new Object());
+               return objectBaseResult;
+
+            }else {
+                //成功
+               String openid = jsonObject.getString("openid");
+               String sessionKey = jsonObject.getString("session_key");
+                BenchUserInfoDTO benchUserInfoDTO = new BenchUserInfoDTO();
+                benchUserInfoDTO.setOpenId(openid);
+                BenchUserInfoDTO oneData = benchUserInfoService.getOneData(benchUserInfoDTO);
+                if (oneData.getOpenId() == null){
+                    //添加数据 - 第一次
+                    benchUserInfoDTO.setNickName(nickname);
+                    benchUserInfoDTO.setAvaurl(avaurl);
+                    benchUserInfoDTO.setSex(sex);
+                    benchUserInfoDTO.setSessionKey(sessionKey);
+                    benchUserInfoDTO.setUpdateTime(currentTime);
+                    benchUserInfoDTO.setCreateTime(currentTime);
+                    benchUserInfoService.addData(benchUserInfoDTO);
+                    return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,benchUserInfoDTO);
+                }else {
+                    //已经登录过的
+                    benchUserInfoDTO.setNickName(nickname);
+                    benchUserInfoDTO.setAvaurl(avaurl);
+                    benchUserInfoDTO.setSex(sex);
+                    benchUserInfoDTO.setSessionKey(sessionKey);
+                    benchUserInfoDTO.setUpdateTime(currentTime);
+                    benchUserInfoService.updateData(benchUserInfoDTO);
+                    return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,benchUserInfoDTO);
+                }
+            }
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        //return toolUtils.response(InterfaceResultEnum.USER_LOGIN_ERROR,version,new Object());
+    }
+
+    /**
+     * 设备列表
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/getList", method = RequestMethod.POST)
+    public BaseResult<?> getList(HttpServletRequest request) {
+        Integer version = request.getParameter("version") == null? 0 : Integer.valueOf(request.getParameter("version"));
+        String openId = request.getParameter("openId");
+        String sessionKey = request.getParameter("sessionKey");
+        Integer page = request.getParameter("page") == null? 1 : Integer.valueOf(request.getParameter("page"));
+        Integer count = request.getParameter("count") == null ? 0 : Integer.valueOf(request.getParameter("count"));
+
+        if (openId == null || sessionKey == null) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version,new Object());
+        //查询用户是否存在
+        BenchDevInfoVO vo = new BenchDevInfoVO();
+        vo.setList(new ArrayList<>());
+        vo.setTotal(0);
+        BenchUserInfoDTO benchUserInfoDTO = new BenchUserInfoDTO();
+        benchUserInfoDTO.setOpenId(openId);
+        benchUserInfoDTO.setSessionKey(sessionKey);
+        BenchUserInfoDTO oneData = benchUserInfoService.getOneData(benchUserInfoDTO);
+        if (oneData == null) return toolUtils.response(InterfaceResultEnum.USER_EXISTS_ERROR,version,vo);
+
+        HashMap<String, Integer> map = new HashMap<>();
+        map.put("page",page-1);
+        map.put("count",(page-1) * count + count);
+        map.put("version",version);
+        List<BenchDevInfoVO> benchJoinList = benchDevInfoService.getBenchJoinList(map);
+        vo.setList(benchJoinList);
+        vo.setTotal(benchJoinList.size());
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,vo);
+    }
+
+    /**
+     * 周边设备
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/getAroundDevice", method = RequestMethod.POST)
+    public BaseResult<?> getAroundDevice(HttpServletRequest request) {
+        Integer version = request.getParameter("version") == null? 0 : Integer.valueOf(request.getParameter("version"));
+        String openId = request.getParameter("openId");
+        String sessionKey = request.getParameter("sessionKey");
+        Double longitude = request.getParameter("longitude") == null ? 0: Double.valueOf(request.getParameter("longitude"));
+        Double latitude = request.getParameter("latitude") == null ? 0: Double.valueOf(request.getParameter("latitude"));
+
+        BenchDevInfoVO vo = new BenchDevInfoVO();
+        vo.setList(new ArrayList<>());
+        vo.setTotal(0);
+        BenchUserInfoDTO benchUserInfoDTO = new BenchUserInfoDTO();
+        benchUserInfoDTO.setOpenId(openId);
+        benchUserInfoDTO.setSessionKey(sessionKey);
+        BenchUserInfoDTO oneData = benchUserInfoService.getOneData(benchUserInfoDTO);
+        if (oneData == null) return toolUtils.response(InterfaceResultEnum.USER_EXISTS_ERROR,version,vo);
+        //查询在线的设备(联合查询: 太阳能板凳,灯杆,云盒)
+        //1. 查询在这个范围内的所有灯杆 - 经纬度
+        //2. 筛选是太阳能板凳的灯杆 - id
+        //3. 筛选云盒,与太阳能板凳同时在线的设备 - 在线
+        HashMap<String, HashMap<String, Double>> map = this.returnSquarePoint(longitude, latitude, 20.0);
+        Double rightBottomLat = map.get("rightBottom").get("lat");//右下纬度
+        Double leftTopLat = map.get("leftTop").get("lat");//左上纬度
+        Double leftTopLng = map.get("leftTop").get("lng");//左上经度
+        Double rightBottomLng = map.get("rightBottom").get("lng");//右下经度
+
+        HashMap<String, Double> hashMap = new HashMap<>();
+        hashMap.put("rightBottomLat",rightBottomLat);
+        hashMap.put("leftTopLat",leftTopLat);
+        hashMap.put("leftTopLng",leftTopLng);
+        hashMap.put("rightBottomLng",rightBottomLng);
+        List<LampPoleDTO> rangeLampPole = lampPoleService.getRangeLampPole(hashMap);
+        ArrayList<Integer> lampPoldIdList = new ArrayList<>();
+        for (LampPoleDTO dto:rangeLampPole) {
+            if (dto.getId() != null){
+                lampPoldIdList.add(dto.getId());
+            }
+        }
+        if (lampPoldIdList != null && lampPoldIdList.size() > 0){
+            //联合查询相关的板凳的id,online,lamp_pole_id,number
+            List<BenchDevInfoVO> benchInfoByIds = benchDevInfoService.getBenchInfoByIds(lampPoldIdList);
+            vo.setList(benchInfoByIds);
+            vo.setTotal(benchInfoByIds.size());
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,vo);
+    }
+    /**
+     *计算某个经纬度的周围某段距离的正方形的四个点
+     * @param lng float 经度
+     * @param lat float 纬度
+     * @param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
+     * @return array 正方形的四个点的经纬度坐标
+     */
+    public HashMap<String, HashMap<String, Double>> returnSquarePoint(Double longitude,Double latitude, Double distance) {
+        if (distance == null || distance == 0) distance = 0.5;
+
+        HashMap<String, HashMap<String, Double>> map = new HashMap<>();
+        // 地球半径
+        double earthRadius = 6371.0;
+        // 计算正方形的边长
+        double dlng = 2 * Math.asin(Math.sin(distance / (2 * earthRadius) / Math.cos(Math.toRadians(latitude))));
+        dlng = Math.toDegrees(dlng);
+
+        double dlat = distance / earthRadius;
+        dlat = Math.toDegrees(dlat);
+        // 计算顶点经纬度
+        // 左上顶点
+        HashMap<String, Double> leftTop = new HashMap<>();
+        leftTop.put("lat",latitude + dlat);
+        leftTop.put("lng",longitude - dlng);
+        map.put("leftTop",leftTop);
+        // 右上顶点
+        HashMap<String, Double> rightTop = new HashMap<>();
+        rightTop.put("lat",latitude + dlat);
+        rightTop.put("lng",longitude + dlng);
+        map.put("rightTop",rightTop);
+        // 左下顶点
+        HashMap<String, Double> leftBottom = new HashMap<>();
+        leftBottom.put("lat",latitude - dlat);
+        leftBottom.put("lng",longitude - dlng);
+        map.put("leftBottom",leftBottom);
+        // 右下顶点
+        HashMap<String, Double> rightBottom = new HashMap<>();
+        rightBottom.put("lat",latitude - dlat);
+        rightBottom.put("lng",longitude + dlng);
+        map.put("rightBottom",rightBottom);
+        return map;
+    }
+
+    /**
+     * 单个设备信息
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/getDevInfo", method = RequestMethod.POST)
+    public BaseResult<?> getDevInfo(HttpServletRequest request) {
+        Integer version = request.getParameter("version") == null ? 0 : Integer.valueOf(request.getParameter("version"));
+        String openId = request.getParameter("openId");
+        String sessionKey = request.getParameter("sessionKey");
+
+        Double devLongitude = request.getParameter("devLongitude") == null ? 0 : Double.valueOf(request.getParameter("devLongitude"));
+        Double devLatitude = request.getParameter("devLatitude")  == null ? 0 : Double.valueOf(request.getParameter("devLatitude"));
+        Double curLongitude = request.getParameter("curLongitude") == null ? 0 : Double.valueOf(request.getParameter("curLongitude"));
+        Double curLatitude = request.getParameter("curLatitude") == null ? 0 : Double.valueOf(request.getParameter("curLatitude"));
+        String deviceId = request.getParameter("deviceId");
+        if (openId == null || sessionKey == null) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version,new Object());
+        BenchUserInfoDTO benchUserInfoDTO = new BenchUserInfoDTO();
+        benchUserInfoDTO.setOpenId(openId);
+        benchUserInfoDTO.setSessionKey(sessionKey);
+        BenchUserInfoDTO oneData = benchUserInfoService.getOneData(benchUserInfoDTO);
+        if (oneData == null) return toolUtils.response(InterfaceResultEnum.USER_EXISTS_ERROR,version,new Object());
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("version",version);
+        hashMap.put("deviceId",deviceId);
+        List<BenchDevInfoVO> listByDeviceId = benchDevInfoService.getListByDeviceId(hashMap);
+        Double distancefn = this.distancefn(devLatitude, devLongitude, curLatitude, curLongitude, true);
+        BenchDevInfoVO vo = listByDeviceId.get(0);
+        vo.setDistance(distancefn);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,vo);
+    }
+    //计算两个坐标之间的距离
+    private Double distancefn(Double lat1, Double lng1,Double lat2, Double lng2, boolean miles ){
+
+        Double pi80 = Math.PI / 180;
+        lat1 *= pi80;
+        lng1 *= pi80;
+        lat2 *= pi80;
+        lng2 *= pi80;
+        Double r = 6372.797; // mean radius of Earth in km
+        Double dlat = lat2 - lat1;
+        Double dlng = lng2 - lng1;
+        Double a = Math.sin(dlat / 2) * Math.sin(dlat / 2) + Math.cos(lat1) * Math.cos(lat2) * Math.sin(dlng / 2) * Math.sin(dlng /2);
+        Double c = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a));
+        Double km = r * c;
+        return (miles ? (km * 0.621371192) : km);
+    }
+    /**
+     * 连接设备
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/connectDevice", method = RequestMethod.POST)
+    public BaseResult<?> connectDevice(HttpServletRequest request) throws UnsupportedEncodingException {
+        Integer version = request.getParameter("version") == null ? 0 : Integer.valueOf(request.getParameter("version"));
+        String sessionKey = request.getParameter("sessionKey");
+        String openId = request.getParameter("openId");
+        String deviceId = request.getParameter("deviceId");
+        Integer type = request.getParameter("type") == null ? 0 : Integer.valueOf(request.getParameter("type"));
+        if (openId == null || sessionKey == null) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version,new Object());
+        BenchUserInfoDTO benchUserInfoDTO = new BenchUserInfoDTO();
+        benchUserInfoDTO.setOpenId(openId);
+        benchUserInfoDTO.setSessionKey(sessionKey);
+        BenchUserInfoDTO oneData = benchUserInfoService.getOneData(benchUserInfoDTO);
+        if (oneData == null) return toolUtils.response(InterfaceResultEnum.USER_EXISTS_ERROR,version,new Object());
+        BenchDevInfoVO lampPoleDevice = benchDevInfoService.getLampPoleDevice(deviceId);
+        if (lampPoleDevice == null) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version,new Object());
+
+        String sendTopic = "/WEGW2/WriteIn/"+lampPoleDevice.getSn();
+        String backTopic = "/WEGW2/WriteOut/"+lampPoleDevice.getSn();
+        String cmd = "";
+        if (type == 0) {
+            cmd = "{\"D8\":\"0000000000\"}";
+        } else {
+            cmd = "{\"D8\":\"0001000000\"}";
+        }
+        String hex = "060B";
+
+        String sendData = hex + cmd;
+        String back = toolUtils.sendWifiMqttCmd(sendTopic, sendData, backTopic, 5);
+        if (back != null && !back.equals("")){
+            WifiDTO wifiDTO = new WifiDTO();
+            wifiDTO.setNum(lampPoleDevice.getSn());
+            wifiDTO.setLna1Status(type);
+            wifiDTO.setType4(0);
+            wifiService.updataWifiBySn(wifiDTO);
+            if (type == 0){
+                BenchUserLogDTO benchUserLogDTO = new BenchUserLogDTO();
+                benchUserLogDTO.setSn(lampPoleDevice.getSn());
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                String currentTime = simpleDateFormat.format(new Date());
+                benchUserLogDTO.setCloseTime(currentTime);
+                benchUserLogService.updateUserLog(benchUserLogDTO);
+            }
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,new Object());
+        }else {
+            return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version,new Object());
+        }
+    }
+
+    /**
+     * 扫描连接设备
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/scanDevQrcode", method = RequestMethod.POST)
+    public BaseResult<?> scanDevQrcode(HttpServletRequest request) throws IOException {
+
+        Integer version = request.getParameter("version") == null ? 0 : Integer.valueOf(request.getParameter("version"));
+        String openId = request.getParameter("openId");
+        String codeInfo = request.getParameter("codeInfo");
+        if (openId == null ) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version,new Object());
+        BenchUserInfoDTO benchUserInfoDTO = new BenchUserInfoDTO();
+        benchUserInfoDTO.setOpenId(openId);
+        //benchUserInfoDTO.setSessionKey(sessionKey);
+        BenchUserInfoDTO oneData = benchUserInfoService.getOneData(benchUserInfoDTO);
+        if (oneData == null) return toolUtils.response(InterfaceResultEnum.USER_EXISTS_ERROR,version,new Object());
+        String[] codeArr = codeInfo.split("-");
+        if (codeArr.length == 0 || codeArr[0] == null || codeArr[1] == null){
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version,new Object());
+        }
+        String sn = codeArr[0];
+        String address = codeArr[1];
+        BenchUserLogDTO benchUserLogDTO = new BenchUserLogDTO();
+        benchUserLogDTO.setSn(sn);
+        benchUserLogDTO.setStatus(1);
+        BenchUserLogDTO one = benchUserLogService.getOne(benchUserLogDTO);
+        if (one != null){
+            if (one.getOpenId().equals(openId)){
+                return toolUtils.response(InterfaceResultEnum.DEVICE_CONNECTED,version,new Object());
+            }else {
+                return toolUtils.response(InterfaceResultEnum.DEVICE_CONNECTED_ELSE,version,new Object());
+            }
+        }
+        benchUserLogDTO.setOpenId(openId);
+        benchUserLogDTO.setSn(null);
+        BenchUserLogDTO res = benchUserLogService.getOne(benchUserLogDTO);
+        if (res != null) return toolUtils.response(InterfaceResultEnum.DEVICE_DISCONNECT,version,new Object());
+        LampPoleDTO lampPoleDTO = new LampPoleDTO();
+        lampPoleDTO.setSn(sn);
+        LampPoleDTO simpleOne = lampPoleService.getSimpleOne(lampPoleDTO);
+        String sendTopic = "/WEGW2/WriteIn/"+sn;
+        String backTopic = "/WEGW2/WriteOut/"+sn;
+        String cmd = "{\"D8\":\"0001000000\"}";
+        String hex = "060B";
+        String sendData = hex+cmd;
+        String back = toolUtils.sendWifiMqttCmd(sendTopic, sendData, backTopic, 5);
+        toolUtils.setLog("scan_dev_qrcode.txt",sendTopic);
+        toolUtils.setLog("scan_dev_qrcode.txt",backTopic);
+        toolUtils.setLog("scan_dev_qrcode.txt",cmd);
+        if (back != null && !back.equals("")){
+            toolUtils.setLog("scan_dev_qrcode.txt", back);
+            if (back.substring(back.length()-2).equals("01")) {
+                if (simpleOne != null) {
+                    benchDevInfoService.updateCount(simpleOne.getLampPoleId());
+                }
+                WifiDTO wifiDTO = new WifiDTO();
+                wifiDTO.setLna1Status(1);
+                wifiDTO.setType4(0);
+                wifiDTO.setNum(sn);
+                wifiService.updataWifiBySn(wifiDTO);
+                benchUserLogDTO.setSn(sn);
+                benchUserLogDTO.setAddress(address);
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                String currentTime = simpleDateFormat.format(new Date());
+                benchUserLogDTO.setUpdateTime(currentTime);
+                benchUserLogService.addData(benchUserLogDTO);
+                return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,new Object());
+            }
+        }else {
+            return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version,new Object());
+        }
+        return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version,new Object());
+    }
+    /**
+     * 扫描连接设备
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/scanDevList", method = RequestMethod.POST)
+    public BaseResult<?> scanDevList(HttpServletRequest request) throws IOException, ParseException {
+
+        Integer version = request.getParameter("version") == null ? 0 : Integer.valueOf(request.getParameter("version"));
+        String openId = request.getParameter("openId");
+        if (openId == null ) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version,new Object());
+        BenchUserLogDTO benchUserLogDTO = new BenchUserLogDTO();
+        benchUserLogDTO.setStatus(1);
+        benchUserLogDTO.setOpenId(openId);
+        SimpleDateFormat outFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        List<BenchUserLogDTO> devList = benchUserLogService.getDevList(benchUserLogDTO);
+        for (BenchUserLogDTO dto:devList) {
+            Date parse = simpleDateFormat.parse(dto.getUpdateTime());
+            dto.setUpdateTime(outFormat.format(parse));
+        }
+        BenchUserLogDTO dto = new BenchUserLogDTO();
+        dto.setList(devList);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,dto);
+    }
+}
+

+ 10 - 0
src/main/java/com/welampiot/dao/BenchDevInfoDao.java

@@ -1,7 +1,12 @@
 package com.welampiot.dao;
 
+import com.welampiot.vo.BenchDevInfoVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * ClassName: BenchDevInfoDao
  * Package: com.welampiot.dao
@@ -17,4 +22,9 @@ public interface BenchDevInfoDao {
     Integer getLampPoleIdByBenchId(@Param("id") Integer id);
 
     Integer getBenchCountByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
+    List<BenchDevInfoVO> getBenchJoinList(HashMap<String,Integer> map);
+    List<BenchDevInfoVO> getBenchInfoByIds(ArrayList<Integer> lampPoleIds);
+    List<BenchDevInfoVO> getListByDeviceId(HashMap<String,Object> map);
+    BenchDevInfoVO getLampPoleDevice(String deviceId);
+    void updateCount(Integer lampPoleId);
 }

+ 9 - 0
src/main/java/com/welampiot/dao/BenchUserInfoDao.java

@@ -0,0 +1,9 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.BenchUserInfoDTO;
+
+public interface BenchUserInfoDao {
+    BenchUserInfoDTO getOneData(BenchUserInfoDTO dto);
+    void addData(BenchUserInfoDTO dto);
+    void updateData(BenchUserInfoDTO dto);
+}

+ 12 - 0
src/main/java/com/welampiot/dao/BenchUserLogDao.java

@@ -0,0 +1,12 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.BenchUserLogDTO;
+
+import java.util.List;
+
+public interface BenchUserLogDao {
+    void updateUserLog(BenchUserLogDTO dto);
+    BenchUserLogDTO getOne(BenchUserLogDTO dto);
+    void addData(BenchUserLogDTO dto);
+    List<BenchUserLogDTO> getDevList(BenchUserLogDTO dto);
+}

+ 3 - 0
src/main/java/com/welampiot/dao/LampPoleDao.java

@@ -7,6 +7,7 @@ import com.welampiot.vo.LampPoleVO;
 import com.welampiot.vo.MapDataVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.HashMap;
 import java.util.List;
 
 public interface LampPoleDao {
@@ -64,4 +65,6 @@ public interface LampPoleDao {
     void updateById(LampPoleDTO lampPoleDTO);
     List<LampPoleDTO>getPoleAlarmLogList(List<Integer> lampPoleIds);
     LampPoleDTO getLocalDataById(Integer id);
+    List<LampPoleDTO> getRangeLampPole(HashMap<String,Double> hashMap);
+    LampPoleDTO getSimpleOne(LampPoleDTO dto);
 }

+ 1 - 0
src/main/java/com/welampiot/dao/WifiDao.java

@@ -37,4 +37,5 @@ public interface WifiDao {
     WifiDTO getWifiByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
     WifiDTO getOneWifi(HashMap<String,Object> map);
     WifiDTO getOneWifiByLampPoleId(Integer id);
+    void updataWifiBySn(WifiDTO dto);
 }

+ 16 - 0
src/main/java/com/welampiot/dto/BenchUserInfoDTO.java

@@ -0,0 +1,16 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+@Data
+public class BenchUserInfoDTO {
+    private Integer id;
+    private String nickName;
+    private String avaurl;
+    private String sex;
+    private String openId;
+    private String sessionKey;
+    private String updateTime;
+    private String createTime;
+
+}

+ 17 - 0
src/main/java/com/welampiot/dto/BenchUserLogDTO.java

@@ -0,0 +1,17 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BenchUserLogDTO {
+    private Integer id;
+    private String sn;
+    private String address;
+    private Integer status;
+    private String updateTime;
+    private String closeTime;
+    private String openId;
+    private List<BenchUserLogDTO> list;
+}

+ 1 - 1
src/main/java/com/welampiot/security/ValidateImageCodeFilter.java

@@ -28,7 +28,7 @@ public class ValidateImageCodeFilter extends OncePerRequestFilter {
         @Override
         protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
             //请求路径中是否包含login这个关键词 && 发送的请求必须是post
-            if (StringUtils.contains(request.getRequestURI(), "login") && StringUtils.equalsIgnoreCase(request.getMethod(), "post")) {
+            if (StringUtils.contains(request.getRequestURI(), "common/login") && StringUtils.equalsIgnoreCase(request.getMethod(), "post")) {
                 try {
                 //开始验证
                 validateCode(new ServletWebRequest(request));

+ 11 - 0
src/main/java/com/welampiot/service/BenchDevInfoService.java

@@ -1,5 +1,11 @@
 package com.welampiot.service;
 
+import com.welampiot.vo.BenchDevInfoVO;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * ClassName: BenchDevInfoService
  * Package: com.welampiot.service
@@ -15,4 +21,9 @@ public interface BenchDevInfoService {
     Integer getLampPoleIdByBenchId(Integer id);
 
     Integer getBenchCountByLampPoleId(Integer lampPoleId);
+    List<BenchDevInfoVO> getBenchJoinList(HashMap<String,Integer> map);
+    List<BenchDevInfoVO> getBenchInfoByIds(ArrayList<Integer> lampPoleIds);
+    List<BenchDevInfoVO> getListByDeviceId(HashMap<String,Object> map);
+    BenchDevInfoVO getLampPoleDevice(String deviceId);
+    void updateCount(Integer lampPoleId);
 }

+ 9 - 0
src/main/java/com/welampiot/service/BenchUserInfoService.java

@@ -0,0 +1,9 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.BenchUserInfoDTO;
+
+public interface BenchUserInfoService {
+    BenchUserInfoDTO getOneData(BenchUserInfoDTO dto);
+    void addData(BenchUserInfoDTO dto);
+    void updateData(BenchUserInfoDTO dto);
+}

+ 12 - 0
src/main/java/com/welampiot/service/BenchUserLogService.java

@@ -0,0 +1,12 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.BenchUserLogDTO;
+
+import java.util.List;
+
+public interface BenchUserLogService {
+    void updateUserLog(BenchUserLogDTO dto);
+    BenchUserLogDTO getOne(BenchUserLogDTO dto);
+    void addData(BenchUserLogDTO dto);
+    List<BenchUserLogDTO> getDevList(BenchUserLogDTO dto);
+}

+ 3 - 0
src/main/java/com/welampiot/service/LampPoleService.java

@@ -10,6 +10,7 @@ import com.welampiot.vo.LampPoleVO;
 import com.welampiot.vo.MapDataVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.HashMap;
 import java.util.List;
 
 public interface LampPoleService {
@@ -56,4 +57,6 @@ public interface LampPoleService {
     void updateById(LampPoleDTO lampPoleDTO);
     List<LampPoleDTO>getPoleAlarmLogList(List<Integer> lampPoleIds);
     LampPoleDTO getLocalDataById(Integer id);
+    List<LampPoleDTO> getRangeLampPole(HashMap<String,Double> hashMap);
+    LampPoleDTO getSimpleOne(LampPoleDTO dto);
 }

+ 1 - 0
src/main/java/com/welampiot/service/WifiService.java

@@ -39,4 +39,5 @@ public interface WifiService {
     WifiDTO getWifiByLampPoleId(Integer lampPoleId);
     WifiDTO getOneWifi(HashMap<String,Object> map);
     WifiDTO getOneWifiByLampPoleId(Integer id);
+    void updataWifiBySn(WifiDTO dto);
 }

+ 25 - 0
src/main/java/com/welampiot/service/impl/BenchDevInfoServiceImpl.java

@@ -2,9 +2,14 @@ package com.welampiot.service.impl;
 
 import com.welampiot.dao.BenchDevInfoDao;
 import com.welampiot.service.BenchDevInfoService;
+import com.welampiot.vo.BenchDevInfoVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * ClassName: BenchDevInfoServiceImpl
  * Package: com.welampiot.service.impl
@@ -33,4 +38,24 @@ public class BenchDevInfoServiceImpl implements BenchDevInfoService {
     public Integer getBenchCountByLampPoleId(Integer lampPoleId) {
         return benchDevInfoDao.getBenchCountByLampPoleId(lampPoleId);
     }
+    @Override
+    public List<BenchDevInfoVO> getBenchJoinList(HashMap<String,Integer> map){
+        return benchDevInfoDao.getBenchJoinList(map);
+    }
+    @Override
+    public List<BenchDevInfoVO> getBenchInfoByIds(ArrayList<Integer> lampPoleIds){
+        return benchDevInfoDao.getBenchInfoByIds(lampPoleIds);
+    }
+    @Override
+    public List<BenchDevInfoVO> getListByDeviceId(HashMap<String,Object> map){
+        return benchDevInfoDao.getListByDeviceId(map);
+    }
+    @Override
+    public BenchDevInfoVO getLampPoleDevice(String deviceId){
+        return benchDevInfoDao.getLampPoleDevice(deviceId);
+    }
+    @Override
+    public void updateCount(Integer lampPoleId){
+        benchDevInfoDao.updateCount(lampPoleId);
+    }
 }

+ 27 - 0
src/main/java/com/welampiot/service/impl/BenchUserInfoServiceImpl.java

@@ -0,0 +1,27 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.BenchUserInfoDao;
+import com.welampiot.dto.BenchUserInfoDTO;
+import com.welampiot.service.BenchUserInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class BenchUserInfoServiceImpl implements BenchUserInfoService {
+    @Autowired
+    private BenchUserInfoDao benchUserInfoDao;
+
+    @Override
+    public BenchUserInfoDTO getOneData(BenchUserInfoDTO dto) {
+        return benchUserInfoDao.getOneData(dto);
+    }
+    @Override
+    public void addData(BenchUserInfoDTO dto){
+        benchUserInfoDao.addData(dto);
+    }
+    @Override
+    public void updateData(BenchUserInfoDTO dto){
+        benchUserInfoDao.updateData(dto);
+    }
+
+}

+ 32 - 0
src/main/java/com/welampiot/service/impl/BenchUserLogServiceImpl.java

@@ -0,0 +1,32 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.BenchUserLogDao;
+import com.welampiot.dto.BenchUserLogDTO;
+import com.welampiot.service.BenchUserLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class BenchUserLogServiceImpl implements BenchUserLogService {
+    @Autowired
+    private BenchUserLogDao benchUserLogDao;
+
+    @Override
+    public void updateUserLog(BenchUserLogDTO dto) {
+        benchUserLogDao.updateUserLog(dto);
+    }
+    @Override
+    public BenchUserLogDTO getOne(BenchUserLogDTO dto){
+        return benchUserLogDao.getOne(dto);
+    }
+    @Override
+    public void addData(BenchUserLogDTO dto){
+        benchUserLogDao.addData(dto);
+    }
+    @Override
+    public List<BenchUserLogDTO> getDevList(BenchUserLogDTO dto){
+        return benchUserLogDao.getDevList(dto);
+    }
+}

+ 8 - 0
src/main/java/com/welampiot/service/impl/LampPoleServiceImpl.java

@@ -631,4 +631,12 @@ public class LampPoleServiceImpl implements LampPoleService {
     public LampPoleDTO getLocalDataById(Integer id){
         return lampPoleDao.getLocalDataById(id);
     }
+    @Override
+    public List<LampPoleDTO> getRangeLampPole(HashMap<String,Double> hashMap){
+        return lampPoleDao.getRangeLampPole(hashMap);
+    }
+    @Override
+    public LampPoleDTO getSimpleOne(LampPoleDTO dto){
+        return lampPoleDao.getSimpleOne(dto);
+    }
 }

+ 4 - 0
src/main/java/com/welampiot/service/impl/WifiServiceImpl.java

@@ -272,4 +272,8 @@ public class WifiServiceImpl implements WifiService {
     public WifiDTO getOneWifiByLampPoleId(Integer id){
         return wifiDao.getOneWifiByLampPoleId(id);
     }
+    @Override
+    public void updataWifiBySn(WifiDTO dto){
+        wifiDao.updataWifiBySn(dto);
+    }
 }

+ 75 - 2
src/main/java/com/welampiot/utils/ToolUtils.java

@@ -9,6 +9,7 @@ import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.common.LampControlTypeEnum;
 import com.welampiot.configuration.MqttConfig;
 import com.welampiot.configuration.PlcMqttConfig;
+import com.welampiot.configuration.WifiMqttConfig;
 import com.welampiot.dto.*;
 import com.welampiot.handle.MqttHandler;
 import com.welampiot.service.*;
@@ -90,6 +91,8 @@ public class ToolUtils {
     private OperationLogService operationLogService;
     @Autowired
     private GbPlayService gbPlayService;
+    @Autowired
+    private WifiMqttConfig wifiMqttConfig;
 
     /**
      * 获取用户所有路段 id
@@ -1457,8 +1460,17 @@ System.out.println(res);
     public String uploadFile(MultipartFile file, MultipartFile image,MultipartFile video, String title) throws Exception {
 
         String rootPath = System.getProperty("user.dir");
-        int lastedIndex = rootPath.lastIndexOf("/");
-        rootPath = rootPath.substring(0,lastedIndex); //工程根目录
+        String systemName = System.getProperty("os.name");
+        if (systemName.toLowerCase().contains("windows")){
+            //windows
+            int lastedIndex = rootPath.lastIndexOf("\\");
+            rootPath = rootPath.substring(0,lastedIndex); //工程根目录
+        }else {
+            //os/linux
+            int lastedIndex = rootPath.lastIndexOf("/");
+            rootPath = rootPath.substring(0,lastedIndex); //工程根目录
+        }
+
         File imagePath; //图⽚存放地址
         File fileRealPath; //⽂件存放地址
         File videoPath; //音视频存在地址
@@ -1908,4 +1920,65 @@ System.out.println(res);
         map.put("999","неизвестный");
         return map.get(code) == null ? "":map.get(code);
     }
+
+    /**
+     * 发送wifimqtt指令
+     * @param sendTopic  发送的topic
+     * @param cmdInfo   发送的指令内容
+     * @param resTopic  接收指令返回的topic
+     * @param timeout  指令超时时间,默认是4s
+     * @return
+     */
+    public String sendWifiMqttCmd(String sendTopic,Object cmdInfo,String resTopic,Integer timeout){
+        MqttClient client;
+        String res = "";
+        if (timeout == null || timeout == 0) timeout = 4;
+        try {
+            try {
+                client=new MqttClient(wifiMqttConfig.getUrl(),wifiMqttConfig.getClientId()+"_"+(new Date()).getTime(),new MemoryPersistence());
+                MqttConnectOptions options=new MqttConnectOptions();
+                options.setCleanSession(true);
+                options.setUserName(wifiMqttConfig.getUsername());
+                options.setPassword(wifiMqttConfig.getPassword().toCharArray());
+                options.setConnectionTimeout(wifiMqttConfig.getTimeout());
+                options.setKeepAliveInterval(wifiMqttConfig.getKeepalive());
+                mqttHandler.setTopic(resTopic);
+
+                // 设置回调
+                client.setCallback(mqttHandler);
+
+                // 建立连接
+                client.connect(options);
+                //            MqttCustomerClient.setClient(client);
+                client.subscribe(resTopic);
+
+                // 消息发布所需参数
+                MqttMessage message;
+                if (cmdInfo instanceof String){
+                    message = new MqttMessage(((String) cmdInfo).getBytes());
+                }else {
+                    message = new MqttMessage((byte[]) cmdInfo);
+                }
+                message.setQos(0);
+                client.publish(sendTopic, message);
+                int in = 0;
+
+                while (true){
+                    Thread.sleep(1000);
+                    if (mqttHandler.getRes() != null && mqttHandler.getRes().length() != 0){
+                        res = mqttHandler.getRes();
+                        break;
+                    }
+                    in ++;
+                    if (in > 30) break;
+                }
+                client.disconnect();
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return res;
+    }
 }

+ 41 - 0
src/main/java/com/welampiot/vo/BenchDevInfoVO.java

@@ -0,0 +1,41 @@
+package com.welampiot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BenchDevInfoVO {
+    private String area;
+    private Integer id;
+    private Integer number;
+    private Integer status;
+    private Integer devOnline;
+    private Integer lampPoleId;
+    private Integer batteryCapacity;
+    private String sn;
+    private String name;
+    private Integer areaId;
+    private Integer sectionId;
+    private Float longitude;
+    private Float latitude;
+    private String section;
+    private Integer netType;
+    private Integer boxOnline;
+    private Float batteryVol;
+    private Float batteryCurL;
+    private Float batteryCurH;
+    private Float loadVal;
+    private Float loadCur;
+    private Float loadPowerL;
+    private Float loadPowerH;
+    private Float panelVal;
+    private Float panelCur;
+    private Float panelPowerL;
+    private Float panelPowerH;
+    private Integer total;
+    private String url;
+    private Double distance;
+
+    private List<BenchDevInfoVO> list;
+}

+ 13 - 0
src/main/java/com/welampiot/vo/BenchUserInfoVO.java

@@ -0,0 +1,13 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.BenchUserInfoDTO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BenchUserInfoVO {
+    private List<BenchUserInfoDTO> list;
+    private Integer total;
+
+}

+ 114 - 0
src/main/resources/mapper/BenchDevInfoMapper.xml

@@ -20,4 +20,118 @@
         where b.lamp_pole_id = #{lampPoleId}
     </select>
 
+    <select id="getBenchJoinList" resultType="BenchDevInfoVO" parameterType="HashMap">
+        select B.id,
+               B.number,
+               B.status,
+               B.online as devOnline,
+               B.lamp_pole_id as lampPoleId,
+               B.battery_capacity as batteryCapacity,
+               LP.sn,
+               LP.name,
+               LP.areaid as areaId,
+               LP.sectionid as sectionId,
+               LP.longitude,
+               LP.latitude,
+               S.name as section,
+               W.net_type as netType,
+               W.online as boxOnline,
+               B.battery_vol as batteryVol,
+               B.battery_cur_L as batteryCurL,
+               B.battery_cur_H as batteryCurH,
+               B.load_val as loadVal,
+               B.load_cur as loadCur,
+               B.load_power_L as loadPowerL,
+               B.load_power_H as loadPowerH,
+               B.panel_val as panelVal,
+               B.panel_cur as panelCur,
+               B.panel_power_L as panelPowerL,
+               B.panel_power_H as panelPowerH
+        <choose>
+            <when test="version == 0">
+                ,G.chinese_name as area
+            </when>
+            <when test="version == 1">
+                ,G.english_name as area
+            </when>
+            <otherwise>
+                ,G.ru_name as area
+            </otherwise>
+        </choose>
+        from bench_dev_info B
+        left join lamp_pole as LP on LP.id = B.lamp_pole_id
+        left join section as S on S.id = LP.sectionid
+        left join global_location as G on G.id = S.pid
+        left join wifi as W on W.num = LP.sn
+        <if test="page >= 0 and count > 0">
+            limit #{page},#{count}
+        </if>
+
+    </select>
+
+    <select id="getBenchInfoByIds" parameterType="ArrayList" resultType="BenchDevInfoVO">
+        select B.id,
+               B.lamp_pole_id as lampPoleId,
+               B.battery_capacity as batteryCapacity,
+               B.number,
+               W.online,
+               B.status,
+               LP.areaid as areaId,
+               LP.sectionid as sectionId,
+               LP.longitude,
+               LP.latitude
+        from bench_dev_info as B
+        left join lamp_pole as LP on LP.id = B.lamp_pole_id
+        left join wifi as W on W.num = LP.sn
+        where
+        B.lamp_pole_id in
+        <foreach item="vo" collection="lampPoleIds" open="(" separator="," close=")">
+            #{vo}
+        </foreach>
+
+    </select>
+    
+    <select id="getListByDeviceId" resultType="BenchDevInfoVO" parameterType="HashMap">
+        select B.id,
+               B.number,
+               B.logo as url,
+               B.online as devOnline,
+               B.lamp_pole_id as lampPoleId,
+               B.battery_capacity as batteryCapacity,
+               B.status,
+               LP.longitude,
+               LP.latitude,
+               S.name as section,
+               LP.areaid as areaId,
+               LP.sectionid as sectionId,
+               W.num as sn,
+               W.net_type as netType,
+               W.online as boxOnline
+        <choose>
+            <when test="version == 0">
+                ,G.chinese_name as area
+            </when>
+            <when test="version == 1">
+                ,G.english_name as area
+            </when>
+            <otherwise>
+                ,G.ru_name as area
+            </otherwise>
+        </choose>
+        from bench_dev_info as B
+        left join lamp_pole as LP on LP.id = B.lamp_pole_id
+        left join section as S on S.id = LP.sectionid
+        left join global_location as G on G.id = S.pid
+        left join wifi as W on W.lamp_pole_id = B.lamp_pole_id
+        where B.id in (#{deviceId})
+    </select>
+
+    <select id="getLampPoleDevice" parameterType="string" resultType="BenchDevInfoVO">
+        select lp.sn from bench_dev_info B left join lamp_pole lp on lp.id = B.lamp_pole_id
+        where B.id in (#{deviceId})
+    </select>
+    
+    <update id="updateCount" parameterType="Integer">
+        update bench_dev_info set charge_count = charge_count+1 where lamp_pole_id = #{lampPoleId}
+    </update>
 </mapper>

+ 24 - 0
src/main/resources/mapper/BenchUserInfoMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.BenchUserInfoDao">
+    <select id="getOneData" parameterType="BenchUserInfoDTO" resultType="BenchUserInfoDTO">
+        select id,openid as openId from bench_user_info
+        where
+             <if test="openId != null">
+                 openid = #{openId}
+             </if>
+            <if test="sessionKey !=null">
+                and session_key = #{sessionKey}
+            </if>
+    </select>
+
+    <insert id="addData" parameterType="BenchUserInfoDTO" useGeneratedKeys="true" keyProperty="id">
+        insert into bench_user_info(nickname, avaurl, sex, openid, session_key, updatetime, createtime) VALUES (#{nickName},#{avaurl},#{sex},#{openId},#{sessionKey},#{updateTime},#{createTime})
+    </insert>
+
+    <update id="updateData" parameterType="BenchUserInfoDTO">
+        update bench_user_info set nickname = #{nickName},avaurl = #{avaurl},openid = #{openId},sex = #{sex},session_key = #{sessionKey},updatetime = #{updateTime} where openid = #{openId}
+    </update>
+</mapper>

+ 36 - 0
src/main/resources/mapper/BenchUserLogMapper.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.BenchUserLogDao">
+    <update id="updateUserLog" parameterType="BenchUserLogDTO">
+        update bench_user_log set status = 0, closetime = #{closeTime} where sn = #{sn}
+    </update>
+
+    <select id="getOne" parameterType="BenchUserLogDTO" resultType="BenchUserLogDTO">
+        select id,openid as openId from bench_user_log
+        <trim prefix="where" suffixOverrides="and|or">
+            <if test="sn != null">
+                sn = #{sn} and
+            </if>
+            <if test="status != null">
+                 status = #{status} and
+            </if>
+            <if test="openId != null">
+                openid = #{openId}
+            </if>
+        </trim>
+    </select>
+    
+    <insert id="addData" parameterType="BenchUserLogDTO" keyProperty="id" useGeneratedKeys="true">
+        insert into bench_user_log(openid,status,sn,address,updatetime) values (#{openId},#{status},#{sn},#{address},#{updateTime})
+    </insert>
+
+    <select id="getDevList" parameterType="BenchUserLogDTO" resultType="BenchUserLogDTO">
+        select BD.id,BD.number,BU.updatetime,LP.name
+        from bench_user_log as BU
+        left join lamp_pole LP on LP.sn = BU.sn
+        left join bench_dev_info BD on BD.lamp_pole_id = LP.id
+        where BU.status = #{status} and BU.openid = #{openId} and BD.id is not null
+    </select>
+</mapper>

+ 13 - 0
src/main/resources/mapper/LampPoleMapper.xml

@@ -1402,4 +1402,17 @@
         from lamp_pole LP left join global_location G on G.id = LP.areaid
         where LP.id = #{id}
     </select>
+    
+    <select id="getRangeLampPole" parameterType="HashMap" resultType="LampPoleDTO">
+        select id, sn, longitude, latitude, areaid as areaId, sectionid as sectionId
+        from lamp_pole
+        where latitude>= #{rightBottomLat} and latitude &lt;= #{leftTopLat} and longitude>= #{leftTopLng} and longitude &lt;= #{rightBottomLng}
+    </select>
+
+    <select id="getSimpleOne" resultType="LampPoleDTO" parameterType="LampPoleDTO">
+        select id from lamp_pole
+        <trim prefix="where" suffixOverrides="and|or">
+            sn = #{sn} and
+        </trim>
+    </select>
 </mapper>

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

@@ -315,4 +315,8 @@
     <select id="getOneWifiByLampPoleId" parameterType="integer" resultType="WifiDTO">
         select day_flow,id from wifi where lamp_pole_id = #{id}
     </select>
+    
+    <update id="updataWifiBySn" parameterType="WifiDTO">
+        update wifi set lna1_status = #{lna1Status},type4 = #{type4} where num = #{num}
+    </update>
 </mapper>

+ 1 - 1
src/main/resources/prod/application.yml

@@ -49,7 +49,7 @@ welampiot:
 
 wifi: #云盒
   mqtt:
-    url: streetserver.weclouds.xyz:1883
+    url: tcp://streetserver.weclouds.xyz:1883
     clientId: welampiot_mqtt_client
     topics: /#
     username: weclouds

+ 1 - 1
src/main/resources/test/application.yml

@@ -49,7 +49,7 @@ welampiot:
 
 wifi: #云盒
   mqtt:
-    url: streetserver.weclouds.xyz:1883
+    url: tcp://streetserver.weclouds.xyz:1883
     clientId: welampiot_mqtt_client
     topics: /#
     username: weclouds