|
|
@@ -2,10 +2,15 @@ package com.ydtech.modules.admin.controller.websocket;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.ydtech.config.SpringContextUtils;
|
|
|
+import com.ydtech.exception.SystemException;
|
|
|
+import com.ydtech.modules.admin.dao.SysDeptMapper;
|
|
|
+import com.ydtech.modules.admin.model.SysDept;
|
|
|
import com.ydtech.modules.admin.model.SysGeographyPosition;
|
|
|
import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
|
|
|
import com.ydtech.modules.admin.model.SysUser;
|
|
|
+import com.ydtech.modules.admin.service.SysDeptService;
|
|
|
import com.ydtech.modules.admin.service.SysGeographyPositionRecordService;
|
|
|
import com.ydtech.modules.admin.service.SysGeographyPositionService;
|
|
|
import com.ydtech.modules.admin.service.SysUserService;
|
|
|
@@ -57,7 +62,10 @@ public class WebSocketServer {
|
|
|
log.info("用户连接:" + userId + ",当前在线人数为:" + onlineCount);
|
|
|
sendMessage("连接成功");
|
|
|
}
|
|
|
-
|
|
|
+// `prov` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '省会',
|
|
|
+// `city` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '城市',
|
|
|
+// `district` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '区县',
|
|
|
+// `street` varchar(66) DEFAULT NULL COMMENT '街道',
|
|
|
|
|
|
@OnMessage
|
|
|
public void onMessage(String message, Session session) {
|
|
|
@@ -65,8 +73,14 @@ public class WebSocketServer {
|
|
|
String userId = jsonObject.getString("userId");
|
|
|
String longitude = jsonObject.getString("longitude");
|
|
|
String latitude = jsonObject.getString("latitude");
|
|
|
- String address = jsonObject.getString("address");
|
|
|
- saveLocationData(userId, latitude, longitude,address);
|
|
|
+ String province = jsonObject.getString("province");
|
|
|
+ String city = jsonObject.getString("city");
|
|
|
+ String district = jsonObject.getString("district");
|
|
|
+ String street = jsonObject.getString("street");
|
|
|
+ String streetNum = jsonObject.getString("streetNum");
|
|
|
+ String poiName = jsonObject.getString("poiName");
|
|
|
+ String cityCode = jsonObject.getString("cityCode");
|
|
|
+ saveLocationData(userId, latitude, longitude,province,city,district,street,streetNum,poiName,cityCode);
|
|
|
log.info("服务端收到消息:{} ,主体:{}", message, userId);
|
|
|
sendMessage("服务端已收到信息:" +message);
|
|
|
}
|
|
|
@@ -107,23 +121,39 @@ public class WebSocketServer {
|
|
|
this.session.getAsyncRemote().sendText(message);
|
|
|
}
|
|
|
|
|
|
- public void saveLocationData(String userId, String latitude, String longitude,String address) {
|
|
|
+ public void saveLocationData(String userId, String latitude, String longitude,
|
|
|
+ String province,String city,String district,
|
|
|
+ String street,String streetNum,String poiName,String cityCode) {
|
|
|
SysGeographyPositionRecordService sysGeographyPositionRecordService = SpringContextUtils.getBean(SysGeographyPositionRecordService.class);
|
|
|
|
|
|
SysGeographyPositionService sysGeographyPositionService= SpringContextUtils.getBean(SysGeographyPositionService.class);
|
|
|
SysGeographyPosition sysGeographyPosition1 = sysGeographyPositionService.getById(userId);
|
|
|
+ SysDeptMapper sysDeptMapper = SpringContextUtils.getBean(SysDeptMapper.class);
|
|
|
+
|
|
|
+ SysUserService sysUserService = SpringContextUtils.getBean(SysUserService.class);
|
|
|
+ SysUser sysUser = sysUserService.getById(userId);
|
|
|
+
|
|
|
+ SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
|
|
|
+ .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
|
|
|
+
|
|
|
if (sysGeographyPosition1 == null) {
|
|
|
//不存在新增
|
|
|
- SysUserService sysUserService = SpringContextUtils.getBean(SysUserService.class);
|
|
|
- SysUser sysUser = sysUserService.getById(userId);
|
|
|
SysGeographyPosition sysGeographyPosition = new SysGeographyPosition();
|
|
|
sysGeographyPosition.setId(userId);
|
|
|
sysGeographyPosition.setUserName(sysUser.getName());
|
|
|
sysGeographyPosition.setLatitude(latitude);
|
|
|
sysGeographyPosition.setLongitude(longitude);
|
|
|
- sysGeographyPosition.setAddress(address);
|
|
|
+ sysGeographyPosition.setProvince(province);
|
|
|
+ sysGeographyPosition.setCity(city);
|
|
|
+ sysGeographyPosition.setDistrict(district);
|
|
|
+ sysGeographyPosition.setStreet(street);
|
|
|
+ sysGeographyPosition.setStreetNum(streetNum);
|
|
|
+ sysGeographyPosition.setPoiName(poiName);
|
|
|
+ sysGeographyPosition.setCityCode(cityCode);
|
|
|
+ sysGeographyPosition.setAddress(province + city + district + street);
|
|
|
sysGeographyPosition.setCreateTime(new Date());
|
|
|
sysGeographyPosition.setCreateBy(sysUser.getName());
|
|
|
+ sysGeographyPosition.setSource(sysDept.getManagementSource());
|
|
|
sysGeographyPositionService.save(sysGeographyPosition);
|
|
|
SysGeographyPositionRecord sysGeographyPositionRecord = BeanUtil.copyProperties(sysGeographyPosition, SysGeographyPositionRecord.class);
|
|
|
sysGeographyPositionRecord.setId(null);
|
|
|
@@ -133,9 +163,18 @@ public class WebSocketServer {
|
|
|
//存在更新
|
|
|
sysGeographyPosition1.setLongitude(longitude);
|
|
|
sysGeographyPosition1.setLatitude(latitude);
|
|
|
- sysGeographyPosition1.setAddress(address);
|
|
|
+ sysGeographyPosition1.setProvince(province);
|
|
|
+ sysGeographyPosition1.setCity(city);
|
|
|
+ sysGeographyPosition1.setDistrict(district);
|
|
|
+ sysGeographyPosition1.setStreet(street);
|
|
|
+ sysGeographyPosition1.setStreetNum(streetNum);
|
|
|
+ sysGeographyPosition1.setPoiName(poiName);
|
|
|
+ sysGeographyPosition1.setCityCode(cityCode);
|
|
|
+ sysGeographyPosition1.setAddress(province + city + district + street);
|
|
|
sysGeographyPosition1.setCreateTime(new Date());
|
|
|
+ sysGeographyPosition1.setSource(sysDept.getManagementSource());
|
|
|
sysGeographyPositionService.updateById(sysGeographyPosition1);
|
|
|
+
|
|
|
SysGeographyPositionRecord sysGeographyPositionRecord = BeanUtil.copyProperties(sysGeographyPosition1, SysGeographyPositionRecord.class);
|
|
|
sysGeographyPositionRecord.setId(null);
|
|
|
sysGeographyPositionRecord.setUserId(sysGeographyPosition1.getId());
|