From 504fdd09f7ae6278308156ad416a35fc02ecb8b8 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 16 二月 2023 19:08:10 +0800 Subject: [PATCH] 新增加代客下单接口 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemBulletinController.java | 95 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 274 +++++ driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BaseWarpper.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java | 34 driver/guns-admin/src/main/resources/application.yml | 7 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinMapper.java | 32 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpClientUtil.java | 268 +++++ driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemMessage.java | 60 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemConfigServiceImpl.java | 16 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapUtil.java | 60 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/GeoJson.java | 9 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpResult.java | 31 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java | 49 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemBulletinServiceImpl.java | 59 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemMessageService.java | 36 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java | 41 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemConfig.java | 33 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverWorkService.java | 27 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java | 101 + driver/guns-admin/pom.xml | 4 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/OrderMapper.java | 7 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemMessageMapper.java | 22 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/LocationQuery.java | 23 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/AddOrderWarpper.java | 26 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinUserMapper.xml | 15 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java | 80 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemConfigMapper.xml | 11 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinListWarpper.java | 26 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemMessageWarpper.java | 31 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemMessageController.java | 94 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemMessageMapper.xml | 34 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/MongoUtils.java | 166 +++ driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverService.java | 18 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml | 50 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinMapper.xml | 38 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemBulletinService.java | 31 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderPositionService.java | 28 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverWorkMapper.xml | 14 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverWorkMapper.java | 7 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverWork.java | 7 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java | 230 ++++ driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPositionWarpper.java | 44 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverWorkController.java | 84 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java | 87 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemConfigMapper.java | 7 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemConfigService.java | 12 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinInfo.java | 19 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinUserMapper.java | 7 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletinUser.java | 55 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapConfig.java | 14 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/Location.java | 50 /dev/null | 266 ----- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemMessageServiceImpl.java | 53 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java | 95 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverPositionWarpper.java | 28 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletin.java | 50 56 files changed, 2,787 insertions(+), 280 deletions(-) diff --git a/driver/guns-admin/pom.xml b/driver/guns-admin/pom.xml index bec6b9f..7d705ec 100644 --- a/driver/guns-admin/pom.xml +++ b/driver/guns-admin/pom.xml @@ -179,6 +179,10 @@ <version>1.18.20</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-mongodb</artifactId> + </dependency> </dependencies> diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java index 6547ca5..76b14d4 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java @@ -9,16 +9,17 @@ import com.supersavedriving.driver.modular.system.util.ResultUtil; import com.supersavedriving.driver.modular.system.util.SMSUtil; import com.supersavedriving.driver.modular.system.util.UUIDUtil; -import com.supersavedriving.driver.modular.system.warpper.DriverRegisterWarpper; -import com.supersavedriving.driver.modular.system.warpper.OpenCityWarpper; -import com.supersavedriving.driver.modular.system.warpper.ResponseWarpper; -import com.supersavedriving.driver.modular.system.warpper.TokenWarpper; +import com.supersavedriving.driver.modular.system.warpper.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.geo.GeoJsonPoint; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -26,6 +27,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.List; +import java.util.Objects; /** * 司机控制器 @@ -243,4 +245,43 @@ } } + + + @ResponseBody + @PostMapping("/api/driver/queryDriverPosition") + @ServiceLog(name = "获取5公里范围内的司机", url = "/api/driver/queryDriverPosition") + @ApiOperation(value = "获取5公里范围内的司机", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper<List<String>> queryDriverPosition(HttpServletRequest request){ + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + ResultUtil<List<String>> listResultUtil = driverService.queryDriverPosition(uid); + return ResponseWarpper.success(listResultUtil); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } + + + + + + @ResponseBody + @PostMapping("/base/driver/addDriverPosition") + @ServiceLog(name = "存储司机实时位置", url = "/base/driver/addDriverPosition") + public ResponseWarpper addDriverPosition(DriverPositionWarpper driverPositionWarpper) { + try { + driverService.addDriverPosition(driverPositionWarpper); + return ResponseWarpper.success(); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverWorkController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverWorkController.java new file mode 100644 index 0000000..bfb0b04 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverWorkController.java @@ -0,0 +1,84 @@ +package com.supersavedriving.driver.modular.system.api; + +import com.supersavedriving.driver.core.common.annotion.ServiceLog; +import com.supersavedriving.driver.modular.system.service.IDriverService; +import com.supersavedriving.driver.modular.system.service.IDriverWorkService; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.ResponseWarpper; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +/** +* 司机上下班控制器 +* @author pzb +* @Date 2023/2/15 15:39 +*/ +@RestController +@RequestMapping("") +public class DriverWorkController { + + @Autowired + private IDriverService driverService; + + @Autowired + private IDriverWorkService driverWorkService; + + + + + + @ResponseBody + @PostMapping("/api/home/driverWork") + @ServiceLog(name = "司机上班操作", url = "/api/home/driverWork") + @ApiOperation(value = "司机上班操作", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper driverWork(HttpServletRequest request){ + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + ResultUtil resultUtil = driverWorkService.driverWork(uid); + return ResponseWarpper.success(resultUtil); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } + + + @ResponseBody + @PostMapping("/api/home/driverOffWork") + @ServiceLog(name = "司机下班操作", url = "/api/home/driverOffWork") + @ApiOperation(value = "司机下班操作", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "在线时长(秒)", name = "onlineTime", required = true, dataType = "long"), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper driverOffWork(Long onlineTime, HttpServletRequest request){ + if(null == onlineTime){ + return ResponseWarpper.success(ResultUtil.paranErr("onlineTime")); + } + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + ResultUtil resultUtil = driverWorkService.driverOffWork(uid, onlineTime); + return ResponseWarpper.success(resultUtil); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java new file mode 100644 index 0000000..a7a423d --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java @@ -0,0 +1,80 @@ +package com.supersavedriving.driver.modular.system.api; + +import com.supersavedriving.driver.core.common.annotion.ServiceLog; +import com.supersavedriving.driver.modular.system.service.IDriverService; +import com.supersavedriving.driver.modular.system.service.IOrderService; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.AddOrderWarpper; +import com.supersavedriving.driver.modular.system.warpper.ResponseWarpper; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +/** +* 订单控制器 +* @author pzb +* @Date 2023/2/16 15:02 +*/ +@RestController +@RequestMapping("") +public class OrderController { + + @Autowired + private IOrderService orderService; + + @Autowired + private IDriverService driverService; + + + + + @ResponseBody + @PostMapping("/api/order/queryDriverServerOrder") + @ServiceLog(name = "获取司机服务中的订单id", url = "/api/order/queryDriverServerOrder") + @ApiOperation(value = "获取司机服务中的订单id", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper<Long> queryDriverServerOrder(HttpServletRequest request){ + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + Long id = orderService.queryDriverServerOrder(uid); + return ResponseWarpper.success(id); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } + + + @ResponseBody + @PostMapping("/api/order/driverAddOrder") + @ServiceLog(name = "司机代客下单", url = "/api/order/driverAddOrder") + @ApiOperation(value = "司机代客下单", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper driverAddOrder(AddOrderWarpper addOrderWarpper, HttpServletRequest request){ + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + ResultUtil resultUtil = orderService.driverAddOrder(uid, addOrderWarpper); + return ResponseWarpper.success(resultUtil); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemBulletinController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemBulletinController.java new file mode 100644 index 0000000..fae9936 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemBulletinController.java @@ -0,0 +1,95 @@ +package com.supersavedriving.driver.modular.system.api; + +import com.supersavedriving.driver.core.common.annotion.ServiceLog; +import com.supersavedriving.driver.core.util.ToolUtil; +import com.supersavedriving.driver.modular.system.service.IDriverService; +import com.supersavedriving.driver.modular.system.service.ISystemBulletinService; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.ResponseWarpper; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinInfo; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinListWarpper; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** +* 系统公告 +* @author pzb +* @Date 2023/2/13 11:18 +*/ +@RestController +@RequestMapping("") +public class SystemBulletinController { + + @Autowired + private ISystemBulletinService systemBulletinService; + + @Autowired + private IDriverService driverService; + + + + + @ResponseBody + @PostMapping("/api/systemBulletin/querySystemBulletinList") + @ServiceLog(name = "获取系统公告列表", url = "/api/systemBulletin/querySystemBulletinList") + @ApiOperation(value = "获取系统公告列表", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), + @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper<List<SystemBulletinListWarpper>> querySystemBulletinList(Integer pageNum, Integer size, HttpServletRequest request){ + if(ToolUtil.isEmpty(pageNum)){ + return ResponseWarpper.success(ResultUtil.paranErr("pageNum")); + } + if(ToolUtil.isEmpty(size)){ + return ResponseWarpper.success(ResultUtil.paranErr("size")); + } + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + List<SystemBulletinListWarpper> systemBulletinListWarppers = systemBulletinService.querySystemBulletinList(uid, pageNum, size); + return ResponseWarpper.success(systemBulletinListWarppers); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } + + + @ResponseBody + @PostMapping("/api/systemBulletin/querySystemBulletinInfo") + @ServiceLog(name = "获取系统公告详情", url = "/api/systemBulletin/querySystemBulletinInfo") + @ApiOperation(value = "获取系统公告详情", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "公告id", name = "id", required = true, dataType = "long"), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper<SystemBulletinInfo> querySystemBulletinInfo(Long id, HttpServletRequest request){ + if(ToolUtil.isEmpty(id)){ + return ResponseWarpper.success(ResultUtil.paranErr("id")); + } + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + SystemBulletinInfo systemBulletinInfo = systemBulletinService.querySystemBulletinInfo(id); + return ResponseWarpper.success(systemBulletinInfo); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemMessageController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemMessageController.java new file mode 100644 index 0000000..27cce01 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/SystemMessageController.java @@ -0,0 +1,94 @@ +package com.supersavedriving.driver.modular.system.api; + +import com.supersavedriving.driver.core.common.annotion.ServiceLog; +import com.supersavedriving.driver.core.util.ToolUtil; +import com.supersavedriving.driver.modular.system.service.IDriverService; +import com.supersavedriving.driver.modular.system.service.ISystemMessageService; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.ResponseWarpper; +import com.supersavedriving.driver.modular.system.warpper.SystemMessageWarpper; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** +* 系统消息 +* @author pzb +* @Date 2023/2/10 15:35 +*/ +@RestController +@RequestMapping("") +public class SystemMessageController { + + @Autowired + private ISystemMessageService systemMessageService; + + @Autowired + private IDriverService driverService; + + + + + @ResponseBody + @PostMapping("/api/systemMessage/querySystemMessageList") + @ServiceLog(name = "获取系统消息列表", url = "/api/systemMessage/querySystemMessageList") + @ApiOperation(value = "获取系统消息列表", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), + @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper<List<SystemMessageWarpper>> querySystemMessageList(Integer pageNum, Integer size, HttpServletRequest request){ + if(ToolUtil.isEmpty(pageNum)){ + return ResponseWarpper.success(ResultUtil.paranErr("pageNum")); + } + if(ToolUtil.isEmpty(size)){ + return ResponseWarpper.success(ResultUtil.paranErr("size")); + } + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + List<SystemMessageWarpper> systemMessageWarppers = systemMessageService.querySystemMessageList(uid, pageNum, size); + return ResponseWarpper.success(systemMessageWarppers); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } + + + @ResponseBody + @PostMapping("/api/systemMessage/readSystems") + @ServiceLog(name = "阅读系统消息", url = "/api/systemMessage/readSystems") + @ApiOperation(value = "阅读系统消息", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "消息id,多个逗号分隔", name = "ids", required = true, dataType = "string"), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper readSystems(String ids, HttpServletRequest request){ + if(ToolUtil.isEmpty(ids)){ + return ResponseWarpper.success(ResultUtil.paranErr("ids")); + } + try { + Integer uid = driverService.getUserByRequset(request); + if(null == uid){ + return ResponseWarpper.success(ResultUtil.tokenErr()); + } + systemMessageService.readSystems(uid, ids); + return ResponseWarpper.success(); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverWorkMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverWorkMapper.java new file mode 100644 index 0000000..31b872f --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverWorkMapper.java @@ -0,0 +1,7 @@ +package com.supersavedriving.driver.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.supersavedriving.driver.modular.system.model.DriverWork; + +public interface DriverWorkMapper extends BaseMapper<DriverWork> { +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/OrderMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/OrderMapper.java new file mode 100644 index 0000000..9dc7c9c --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/OrderMapper.java @@ -0,0 +1,7 @@ +package com.supersavedriving.driver.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.supersavedriving.driver.modular.system.model.Order; + +public interface OrderMapper extends BaseMapper<Order> { +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinMapper.java new file mode 100644 index 0000000..38a1a93 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinMapper.java @@ -0,0 +1,32 @@ +package com.supersavedriving.driver.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.supersavedriving.driver.modular.system.model.SystemBulletin; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinInfo; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinListWarpper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface SystemBulletinMapper extends BaseMapper<SystemBulletin> { + + + /** + * 获取系统公告 + * @param uid + * @param pageNum + * @param size + * @return + */ + List<SystemBulletinListWarpper> querySystemBulletinList(@Param("uid") Integer uid, @Param("pageNum") Integer pageNum, + @Param("size") Integer size); + + + /** + * 获取公告详情 + * @param uid + * @param id + * @return + */ + SystemBulletinInfo querySystemBulletinInfo(@Param("id") Long id); +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinUserMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinUserMapper.java new file mode 100644 index 0000000..7cdda79 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemBulletinUserMapper.java @@ -0,0 +1,7 @@ +package com.supersavedriving.driver.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.supersavedriving.driver.modular.system.model.SystemBulletinUser; + +public interface SystemBulletinUserMapper extends BaseMapper<SystemBulletinUser> { +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemConfigMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemConfigMapper.java new file mode 100644 index 0000000..c7a7da7 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemConfigMapper.java @@ -0,0 +1,7 @@ +package com.supersavedriving.driver.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.supersavedriving.driver.modular.system.model.SystemConfig; + +public interface SystemConfigMapper extends BaseMapper<SystemConfig> { +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemMessageMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemMessageMapper.java new file mode 100644 index 0000000..0d27557 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/SystemMessageMapper.java @@ -0,0 +1,22 @@ +package com.supersavedriving.driver.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.supersavedriving.driver.modular.system.model.SystemMessage; +import com.supersavedriving.driver.modular.system.warpper.SystemMessageWarpper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface SystemMessageMapper extends BaseMapper<SystemMessage> { + + + /** + * 获取个人系统消息列表 + * @param uid + * @param pageNum + * @param size + * @return + */ + List<SystemMessageWarpper> querySystemMessageList(@Param("uid") Integer uid, @Param("pageNum") Integer pageNum, + @Param("size") Integer size); +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverWorkMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverWorkMapper.xml new file mode 100644 index 0000000..8a4e19e --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverWorkMapper.xml @@ -0,0 +1,14 @@ +<?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.supersavedriving.driver.modular.system.dao.DriverWorkMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.DriverWork"> + <id column="id" property="id"/> + <result column="driverId" property="driverId"/> + <result column="workTime" property="workTime"/> + <result column="offWorkTime" property="offWorkTime"/> + <result column="onlineTime" property="onlineTime"/> + <result column="status" property="status"/> + </resultMap> +</mapper> \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml new file mode 100644 index 0000000..1e1d143 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml @@ -0,0 +1,50 @@ +<?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.supersavedriving.driver.modular.system.dao.OrderMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.Order"> + <id column="id" property="id" /> + <result column="code" property="code" /> + <result column="userId" property="userId" /> + <result column="driverId" property="driverId" /> + <result column="source" property="source" /> + <result column="agentId" property="agentId" /> + <result column="branchOfficeId" property="branchOfficeId" /> + <result column="startTime" property="startTime" /> + <result column="startAddress" property="startAddress" /> + <result column="startLat" property="startLat" /> + <result column="startLng" property="startLng" /> + <result column="endAddress" property="endAddress" /> + <result column="endLat" property="endLat" /> + <result column="endLng" property="endLng" /> + <result column="boardingTime" property="boardingTime" /> + <result column="getoffTime" property="getoffTime" /> + <result column="startDistance" property="startDistance" /> + <result column="startPrice" property="startPrice" /> + <result column="overDriveDistance" property="overDriveDistance" /> + <result column="overDrivePrice" property="overDrivePrice" /> + <result column="longDistance" property="longDistance" /> + <result column="longDistancePrice" property="longDistancePrice" /> + <result column="overLongDistance" property="overLongDistance" /> + <result column="overLongDistancePrice" property="overLongDistancePrice" /> + <result column="waitTime" property="waitTime" /> + <result column="waitTimePrice" property="waitTimePrice" /> + <result column="outWaitTime" property="outWaitTime" /> + <result column="outWaitTimePrice" property="outWaitTimePrice" /> + <result column="badWeatherDistance" property="badWeatherDistance" /> + <result column="badWeatherPrice" property="badWeatherPrice" /> + <result column="overBadWeatherDistance" property="overBadWeatherDistance" /> + <result column="overBadWeatherPrice" property="overBadWeatherPrice" /> + <result column="estimatedPrice" property="estimatedPrice" /> + <result column="orderMoney" property="orderMoney" /> + <result column="payMoney" property="payMoney" /> + <result column="discountedPrice" property="discountedPrice" /> + <result column="couponId" property="couponId" /> + <result column="payType" property="payType" /> + <result column="payTime" property="payTime" /> + <result column="state" property="state" /> + <result column="status" property="status" /> + <result column="createTime" property="createTime" /> + </resultMap> +</mapper> \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinMapper.xml new file mode 100644 index 0000000..753168b --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinMapper.xml @@ -0,0 +1,38 @@ +<?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.supersavedriving.driver.modular.system.dao.SystemBulletinMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.SystemBulletin"> + <id column="id" property="id" /> + <result column="introduce" property="introduce" /> + <result column="img" property="img" /> + <result column="content" property="content" /> + <result column="status" property="status" /> + <result column="createTime" property="createTime" /> + </resultMap> + + + <select id="querySystemBulletinList" resultType="com.supersavedriving.driver.modular.system.warpper.SystemBulletinListWarpper"> + select + b.id, + a.introduce, + a.img, + b.isRead, + (UNIX_TIMESTAMP(b.createTime) * 1000) as createTime + from t_system_bulletin a + left join t_system_bulletin_user b on (a.id = b.systemBulletinId) + where b.status = 1 and b.userType = 2 and b.userId = #{uid} order by b.createTime desc limit #{pageNum}, #{size} + </select> + + + + <select id="querySystemBulletinInfo" resultType="com.supersavedriving.driver.modular.system.warpper.SystemBulletinInfo"> + select + b.id, + a.content + from t_system_bulletin a + left join t_system_bulletin_user b on (a.id = b.systemBulletinId) + where b.id = #{id} + </select> +</mapper> \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinUserMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinUserMapper.xml new file mode 100644 index 0000000..2347264 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemBulletinUserMapper.xml @@ -0,0 +1,15 @@ +<?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.supersavedriving.driver.modular.system.dao.SystemBulletinUserMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.SystemBulletinUser"> + <id column="id" property="id" /> + <result column="systemBulletinId" property="systemBulletinId" /> + <result column="userType" property="userType" /> + <result column="userId" property="userId" /> + <result column="isRead" property="isRead" /> + <result column="status" property="status" /> + <result column="createTime" property="createTime" /> + </resultMap> +</mapper> \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemConfigMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemConfigMapper.xml new file mode 100644 index 0000000..658a66e --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemConfigMapper.xml @@ -0,0 +1,11 @@ +<?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.supersavedriving.driver.modular.system.dao.SystemConfigMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.SystemConfig"> + <id column="id" property="id"/> + <result column="type" property="type"/> + <result column="content" property="content"/> + </resultMap> +</mapper> \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemMessageMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemMessageMapper.xml new file mode 100644 index 0000000..2ffacd3 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/SystemMessageMapper.xml @@ -0,0 +1,34 @@ +<?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.supersavedriving.driver.modular.system.dao.SystemMessageMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.SystemMessage"> + <id column="id" property="id" /> + <result column="userType" property="userType" /> + <result column="userId" property="userId" /> + <result column="title" property="title" /> + <result column="content" property="content" /> + <result column="isRead" property="isRead" /> + <result column="status" property="status" /> + <result column="createTime" property="createTime" /> + </resultMap> + + + <select id="querySystemMessageList" resultType="com.supersavedriving.driver.modular.system.warpper.SystemMessageWarpper"> + select + id, + title, + content, + isRead, + (UNIX_TIMESTAMP(createTime) * 1000) as createTime + from t_system_message where status = 1 + <if test="null != uid"> + and userType = 2 and userId = #{uid} + </if> + order by createTime desc + <if test="null != pageNum and null != size"> + limit #{pageNum}, #{size} + </if> + </select> +</mapper> \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverWork.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverWork.java index 7e18676..9f2b419 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverWork.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverWork.java @@ -38,5 +38,10 @@ * 在线时长(秒) */ @TableField("onlineTime") - private + private Long onlineTime; + /** + * 状态(1=上班,2=下班) + */ + @TableField("status") + private Integer status; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java new file mode 100644 index 0000000..5f95819 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java @@ -0,0 +1,230 @@ +package com.supersavedriving.driver.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.util.Date; + +/** +* 订单 +* @author pzb +* @Date 2023/2/15 16:59 +*/ +@Data +@TableName("t_order") +public class Order { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @TableField("id") + private Long id; + /** + * 订单编号 + */ + @TableField("code") + private String code; + /** + * 用户id + */ + @TableField("userId") + private Integer userId; + /** + * 司机id + */ + @TableField("driverId") + private Integer driverId; + /** + * 订单来源(1=小程序,2=APP) + */ + @TableField("source") + private Integer source; + /** + * 代理商id + */ + @TableField("agentId") + private Integer agentId; + /** + * 分公司id + */ + @TableField("branchOfficeId") + private Integer branchOfficeId; + /** + * 开始服务时间 + */ + @TableField("startTime") + private Date startTime; + /** + * 起点地址 + */ + @TableField("startAddress") + private String startAddress; + /** + * 起点纬度 + */ + @TableField("startLat") + private String startLat; + /** + * 起点经度 + */ + @TableField("startLng") + private String startLng; + /** + * 终点地址 + */ + @TableField("endAddress") + private String endAddress; + /** + * 终点纬度 + */ + @TableField("endLat") + private String endLat; + /** + * 终点经度 + */ + @TableField("endLng") + private String endLng; + /** + * 上车时间 + */ + @TableField("boardingTime") + private Date boardingTime; + /** + * 下车时间 + */ + @TableField("getoffTime") + private Date getoffTime; + /** + * 起步里程 + */ + @TableField("startDistance") + private Double startDistance; + /** + * 起步价 + */ + @TableField("startPrice") + private Double startPrice; + /** + * 超出起步里程 + */ + @TableField("overDriveDistance") + private Double overDriveDistance; + /** + * 超出起步里程费 + */ + @TableField("overDrivePrice") + private Double overDrivePrice; + /** + * 长途里程 + */ + @TableField("longDistance") + private String longDistance; + /** + * 长途里程费 + */ + @TableField("longDistancePrice") + private Double longDistancePrice; + /** + * 超出长途里程 + */ + @TableField("overLongDistance") + private Double overLongDistance; + /** + * 超出长途里程费 + */ + @TableField("overLongDistancePrice") + private Double overLongDistancePrice; + /** + * 等待时长(分钟) + */ + @TableField("waitTime") + private Integer waitTime; + /** + * 等待费 + */ + @TableField("waitTimePrice") + private Double waitTimePrice; + /** + * 超出等待时长(分钟) + */ + @TableField("outWaitTime") + private Integer outWaitTime; + /** + * 超出等待时长费 + */ + @TableField("outWaitTimePrice") + private Double outWaitTimePrice; + /** + * 恶劣天气里程 + */ + @TableField("badWeatherDistance") + private Double badWeatherDistance; + /** + * 恶劣天气里程费 + */ + @TableField("badWeatherPrice") + private Double badWeatherPrice; + /** + * 恶劣天气超出里程 + */ + @TableField("overBadWeatherDistance") + private Double overBadWeatherDistance; + /** + * 恶劣天气超出里程费 + */ + @TableField("overBadWeatherPrice") + private Double overBadWeatherPrice; + /** + * 预估价 + */ + @TableField("estimatedPrice") + private Double estimatedPrice; + /** + * 订单金额 + */ + @TableField("orderMoney") + private Double orderMoney; + /** + * 支付金额 + */ + @TableField("payMoney") + private Double payMoney; + /** + * 优惠金额 + */ + @TableField("discountedPrice") + private Double discountedPrice; + /** + * 优惠券id + */ + @TableField("couponId") + private Integer couponId; + /** + * 支付类型(1=微信支付,2=余额支付,3=线下支付) + */ + @TableField("payType") + private Integer payType; + /** + * 支付时间 + */ + @TableField("payTime") + private Date payTime; + /** + * 订单状态(101=待接单,102=已接单,103=前往预约点,104=到达预约点,105=开始服务,106=到达目的地,107=待评价,108=已完成,201=转单中,301=已取消) + */ + @TableField("state") + private Integer state; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("status") + private Integer status; + /** + * 添加时间 + */ + @TableField("createTime") + private Date createTime; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletin.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletin.java new file mode 100644 index 0000000..294691b --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletin.java @@ -0,0 +1,50 @@ +package com.supersavedriving.driver.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.util.Date; + +/** +* 系统公告 +* @author pzb +* @Date 2023/2/13 11:13 +*/ +@Data +@TableName("t_system_bulletin") +public class SystemBulletin { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @TableField("id") + private Integer id; + /** + * 介绍 + */ + @TableField("introduce") + private String introduce; + /** + * 图片 + */ + @TableField("img") + private String img; + /** + * 富文本内容 + */ + @TableField("content") + private String content; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("status") + private Integer status; + /** + * 添加时间 + */ + @TableField("createTime") + private Date createTime; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletinUser.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletinUser.java new file mode 100644 index 0000000..c5a6144 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemBulletinUser.java @@ -0,0 +1,55 @@ +package com.supersavedriving.driver.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.util.Date; + +/** +* 用户系统公告关系数据 +* @author pzb +* @Date 2023/2/13 11:49 +*/ +@Data +@TableName("t_system_bulletin_user") +public class SystemBulletinUser { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @TableField("id") + private Long id; + /** + * 系统公告id + */ + @TableField("systemBulletinId") + private Integer systemBulletinId; + /** + * 用户类型(1=用户,2=司机) + */ + @TableField("userType") + private Integer userType; + /** + * 用户id + */ + @TableField("userId") + private Integer userId; + /** + * 阅读(0=否,1=是) + */ + @TableField("isRead") + private Integer isRead; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("status") + private Integer status; + /** + * 添加时间 + */ + @TableField("createTime") + private Date createTime; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemConfig.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemConfig.java new file mode 100644 index 0000000..afa32e3 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemConfig.java @@ -0,0 +1,33 @@ +package com.supersavedriving.driver.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +/** +* 系统配置 +* @author pzb +* @Date 2023/2/15 16:22 +*/ +@Data +@TableName("t_system_config") +public class SystemConfig { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @TableField("id") + private Integer id; + /** + * 类型(1=派单规则,2=佣金分成规则,3=抽成规则,4=积分规则,5=价格规则,6=余额规则,7=客服管理) + */ + @TableField("type") + private Integer type; + /** + * 内容 + */ + @TableField("content") + private String content; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemMessage.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemMessage.java new file mode 100644 index 0000000..b87740e --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/SystemMessage.java @@ -0,0 +1,60 @@ +package com.supersavedriving.driver.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.util.Date; + +/** +* 系统消息 +* @author pzb +* @Date 2023/2/10 15:28 +*/ +@Data +@TableName("t_system_message") +public class SystemMessage { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @TableField("id") + private Long id; + /** + * 用户类型(1=用户,2=司机) + */ + @TableField("userType") + private Integer userType; + /** + * 用户id + */ + @TableField("userId") + private Integer userId; + /** + * 标题 + */ + @TableField("title") + private String title; + /** + * 内容 + */ + @TableField("content") + private String content; + /** + * 阅读状态(0=否,1=是) + */ + @TableField("isRead") + private Integer isRead; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("status") + private Integer status; + /** + * 添加时间 + */ + @TableField("createTime") + private Date createTime; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverService.java index fb44015..4d392f3 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverService.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverService.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.service.IService; import com.supersavedriving.driver.modular.system.model.Driver; import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.DriverPositionWarpper; import com.supersavedriving.driver.modular.system.warpper.DriverRegisterWarpper; import com.supersavedriving.driver.modular.system.warpper.TokenWarpper; import javax.servlet.http.HttpServletRequest; +import java.util.List; /** * 司机 @@ -71,4 +73,20 @@ * @throws Exception */ void setPassword(Integer uid, String password) throws Exception; + + + /** + * 获取5公里范围内的司机坐标 + * @param uid + * @return + * @throws Exception + */ + ResultUtil<List<String>> queryDriverPosition(Integer uid) throws Exception; + + + /** + * 存储司机实时位置 + * @throws Exception + */ + void addDriverPosition(DriverPositionWarpper driverPositionWarpper) throws Exception; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverWorkService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverWorkService.java new file mode 100644 index 0000000..bf72cc6 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverWorkService.java @@ -0,0 +1,27 @@ +package com.supersavedriving.driver.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.supersavedriving.driver.modular.system.model.DriverWork; +import com.supersavedriving.driver.modular.system.util.ResultUtil; + +public interface IDriverWorkService extends IService<DriverWork> { + + + /** + * 上班操作 + * @param driverId + * @return + * @throws Exception + */ + ResultUtil driverWork(Integer driverId) throws Exception; + + + /** + * 司机下班操作 + * @param driverId 司机id + * @param onlineTime 在线时长(秒) + * @return + * @throws Exception + */ + ResultUtil driverOffWork(Integer driverId, Long onlineTime) throws Exception; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderPositionService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderPositionService.java new file mode 100644 index 0000000..d0c57ee --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderPositionService.java @@ -0,0 +1,28 @@ +package com.supersavedriving.driver.modular.system.service; + +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.DriverPositionWarpper; +import com.supersavedriving.driver.modular.system.warpper.OrderPositionWarpper; + +import java.util.List; + +public interface IOrderPositionService { + + + /** + * 存储最新订单坐标 + * @param driverPositionWarpper + * @throws Exception + */ + void saveOrderPosition(DriverPositionWarpper driverPositionWarpper) throws Exception; + + + /** + * 获取订单坐标 + * @param orderId + * @param orderType + * @return + * @throws Exception + */ + List<OrderPositionWarpper> queryPosition(Integer orderId, Integer orderType) throws Exception; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java new file mode 100644 index 0000000..2f8599b --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java @@ -0,0 +1,34 @@ +package com.supersavedriving.driver.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.supersavedriving.driver.modular.system.model.Order; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.AddOrderWarpper; +import com.supersavedriving.driver.modular.system.warpper.BaseWarpper; + +/** +* 订单 +* @author pzb +* @Date 2023/2/16 15:47 +*/ +public interface IOrderService extends IService<Order> { + + + /** + * 获取司机服务中的订单 + * @param uid + * @return + * @throws Exception + */ + Long queryDriverServerOrder(Integer uid) throws Exception; + + + /** + * 司机代客下单 + * @param uid + * @param addOrderWarpper + * @return + * @throws Exception + */ + ResultUtil driverAddOrder(Integer uid, AddOrderWarpper addOrderWarpper) throws Exception; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemBulletinService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemBulletinService.java new file mode 100644 index 0000000..6e756c1 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemBulletinService.java @@ -0,0 +1,31 @@ +package com.supersavedriving.driver.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.supersavedriving.driver.modular.system.model.SystemBulletin; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinInfo; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinListWarpper; + +import java.util.List; + +public interface ISystemBulletinService extends IService<SystemBulletin> { + + + /** + * 获取系统公告列表 + * @param uid 司机id + * @param pageNum 页码 + * @param size 页条数 + * @return + * @throws Exception + */ + List<SystemBulletinListWarpper> querySystemBulletinList(Integer uid, Integer pageNum, Integer size) throws Exception; + + + /** + * 获取公告详情 + * @param id + * @return + * @throws Exception + */ + SystemBulletinInfo querySystemBulletinInfo(Long id) throws Exception; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemConfigService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemConfigService.java new file mode 100644 index 0000000..929a7b4 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemConfigService.java @@ -0,0 +1,12 @@ +package com.supersavedriving.driver.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.supersavedriving.driver.modular.system.model.SystemConfig; + +/** +* 系统配置 +* @author pzb +* @Date 2023/2/15 16:26 +*/ +public interface ISystemConfigService extends IService<SystemConfig> { +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemMessageService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemMessageService.java new file mode 100644 index 0000000..2f42fbf --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ISystemMessageService.java @@ -0,0 +1,36 @@ +package com.supersavedriving.driver.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.supersavedriving.driver.modular.system.model.SystemMessage; +import com.supersavedriving.driver.modular.system.warpper.SystemMessageWarpper; + +import java.util.List; + + +/** +* 系统消息 +* @author pzb +* @Date 2023/2/10 15:34 +*/ +public interface ISystemMessageService extends IService<SystemMessage> { + + + /** + * 获取个人系统消息列表 + * @param uid + * @param pageNum + * @param size + * @return + * @throws Exception + */ + List<SystemMessageWarpper> querySystemMessageList(Integer uid, Integer pageNum, Integer size) throws Exception; + + + /** + * 阅读系统消息 + * @param uid + * @param ids + * @throws Exception + */ + void readSystems(Integer uid, String ids) throws Exception; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java index 3a34f15..6cd2522 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java @@ -1,5 +1,7 @@ package com.supersavedriving.driver.modular.system.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.supersavedriving.driver.core.common.constant.JwtConstants; @@ -10,11 +12,16 @@ import com.supersavedriving.driver.modular.system.dao.DriverMapper; import com.supersavedriving.driver.modular.system.model.BranchOffice; import com.supersavedriving.driver.modular.system.model.Driver; +import com.supersavedriving.driver.modular.system.model.DriverWork; import com.supersavedriving.driver.modular.system.service.IBranchOfficeService; import com.supersavedriving.driver.modular.system.service.IDriverService; +import com.supersavedriving.driver.modular.system.service.IDriverWorkService; +import com.supersavedriving.driver.modular.system.service.IOrderPositionService; import com.supersavedriving.driver.modular.system.util.RedisUtil; import com.supersavedriving.driver.modular.system.util.ResultUtil; import com.supersavedriving.driver.modular.system.util.UUIDUtil; +import com.supersavedriving.driver.modular.system.util.mongodb.model.Location; +import com.supersavedriving.driver.modular.system.warpper.DriverPositionWarpper; import com.supersavedriving.driver.modular.system.warpper.DriverRegisterWarpper; import com.supersavedriving.driver.modular.system.warpper.TokenWarpper; import org.apache.shiro.authc.SimpleAuthenticationInfo; @@ -23,10 +30,25 @@ import org.apache.shiro.crypto.hash.Md5Hash; import org.apache.shiro.util.ByteSource; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.geo.Circle; +import org.springframework.data.geo.Distance; +import org.springframework.data.geo.Metrics; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.geo.GeoJsonPoint; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.util.ArrayList; import java.util.Date; +import java.util.List; +import java.util.Objects; import static org.bouncycastle.asn1.x500.style.RFC4519Style.c; @@ -45,6 +67,18 @@ @Autowired private RedisUtil redisUtil; + + @Autowired + private MongoTemplate mongoTemplate; + + @Autowired + private IOrderPositionService orderPositionService; + + @Autowired + private IDriverWorkService driverWorkService; + + @Value("${filePath}") + private String filePath; /** @@ -299,4 +333,71 @@ driver.setPassword(ShiroKit.md5(password, salt)); this.updateById(driver); } + + + @Override + public ResultUtil<List<String>> queryDriverPosition(Integer uid) throws Exception { + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", uid).eq("status", 1)); + if(null == driverWork){ + return ResultUtil.error("请先上班"); + } + String value = redisUtil.getValue("DRIVER" + uid); + List<String> list = new ArrayList<>(); + if(ToolUtil.isNotEmpty(value)){ + String[] split = value.split(","); + String lon = split[0]; + String lat = split[1]; + //找到中心点 + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(lon), Double.valueOf(lat)); + //构造半径 + Distance distanceR = new Distance(5D, Metrics.KILOMETERS); + //画圆 + Circle circle = new Circle(geoJsonPoint, distanceR); + // 构造query对象 + Query query = Query.query(Criteria.where("location").withinSphere(circle)); + List<Location> locations = mongoTemplate.find(query, Location.class); + locations.forEach(s -> { + list.add(s.getLocation().getX() + "," + s.getLocation().getY()); + }); + } + return ResultUtil.success(list); + } + + + + @Override + public void addDriverPosition(DriverPositionWarpper driverPositionWarpper) throws Exception { + //实时位置存入redis中 + Double lon = driverPositionWarpper.getLon(); + Double lat = driverPositionWarpper.getLat(); + Integer driverId = driverPositionWarpper.getDriverId(); + Integer orderId = driverPositionWarpper.getOrderId(); + redisUtil.setStrValue("DRIVER" + driverId, lon + "," + lat, 30); + Query query = Query.query(Criteria.where("driverId").is(driverId)); + Location old = this.mongoTemplate.findOne(query, Location.class); + if (Objects.isNull(old)) { + old = new Location(); + old.setDriverId(driverId); + old.setLocation(new GeoJsonPoint(lon, lat)); + old.setUpdated(System.currentTimeMillis()); + old.setLastUpdated(System.currentTimeMillis()); + this.mongoTemplate.save(old); + } else { + //更新 + Update update = Update + .update("location", new GeoJsonPoint(lon, lat)) + .set("updated", System.currentTimeMillis()) + .set("lastUpdated", System.currentTimeMillis()); + this.mongoTemplate.updateFirst(query, update, Location.class); + } + + //存储订单轨迹 + if(null != orderId){ + orderPositionService.saveOrderPosition(driverPositionWarpper); + } + + } + + + } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java new file mode 100644 index 0000000..be255cf --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java @@ -0,0 +1,87 @@ +package com.supersavedriving.driver.modular.system.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.supersavedriving.driver.modular.system.dao.DriverWorkMapper; +import com.supersavedriving.driver.modular.system.model.Driver; +import com.supersavedriving.driver.modular.system.model.DriverWork; +import com.supersavedriving.driver.modular.system.model.SystemConfig; +import com.supersavedriving.driver.modular.system.service.IDriverService; +import com.supersavedriving.driver.modular.system.service.IDriverWorkService; +import com.supersavedriving.driver.modular.system.service.ISystemConfigService; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** +* 司机上下班操作记录 +* @author pzb +* @Date 2023/2/15 15:48 +*/ +@Service +public class DriverWorkServiceImpl extends ServiceImpl<DriverWorkMapper, DriverWork> implements IDriverWorkService { + + @Autowired + private IDriverService driverService; + + @Autowired + private ISystemConfigService systemConfigService; + + + + + /** + * 司机上班操作 + * @param driverId + * @return + * @throws Exception + */ + @Override + public ResultUtil driverWork(Integer driverId) throws Exception { + Driver driver = driverService.selectById(driverId); + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6)); + Double num1 = JSON.parseObject(systemConfig.getContent()).getDouble("num1"); + if(driver.getBalance() == null || driver.getBalance().compareTo(num1) < 0){ + return ResultUtil.error("账户余额不足,请先充值"); + } + DriverWork driverWork = this.selectOne(new EntityWrapper<DriverWork>().eq("driverId", 1).eq("status", 1)); + if(null != driverWork){ + return ResultUtil.error("您正在上班中"); + } + driverWork = new DriverWork(); + driverWork.setDriverId(driverId); + driverWork.setWorkTime(new Date()); + driverWork.setOnlineTime(0L); + driverWork.setStatus(1); + this.updateById(driverWork); + return ResultUtil.success(); + } + + + /** + * 司机下班操作 + * @param driverId 司机id + * @param onlineTime 在线时长(秒) + * @return + * @throws Exception + */ + @Override + public ResultUtil driverOffWork(Integer driverId, Long onlineTime) throws Exception { + DriverWork driverWork = this.selectOne(new EntityWrapper<DriverWork>().eq("driverId", 1).eq("status", 2)); + if(null != driverWork){ + return ResultUtil.error("您已下班,不能重复操作"); + } + driverWork = this.selectOne(new EntityWrapper<DriverWork>().eq("driverId", 1).eq("status", 1)); + if(null == driverWork){ + return ResultUtil.error("您还未上班"); + } + driverWork.setOffWorkTime(new Date()); + driverWork.setOnlineTime(onlineTime); + driverWork.setStatus(2); + this.updateById(driverWork); + return ResultUtil.success(); + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java new file mode 100644 index 0000000..2602b9f --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java @@ -0,0 +1,95 @@ +package com.supersavedriving.driver.modular.system.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.supersavedriving.driver.core.util.ToolUtil; +import com.supersavedriving.driver.modular.system.model.DriverWork; +import com.supersavedriving.driver.modular.system.service.IDriverWorkService; +import com.supersavedriving.driver.modular.system.service.IOrderPositionService; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.warpper.DriverPositionWarpper; +import com.supersavedriving.driver.modular.system.warpper.OrderPositionWarpper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 订单轨迹逻辑类 + */ +@Service +public class OrderPositionServiceImpl implements IOrderPositionService { + + @Value("${filePath}") + private String filePath; + + + + + + /** + * 保存订单最新坐标 + * @param driverPositionWarpper + * @throws Exception + */ + @Override + public void saveOrderPosition(DriverPositionWarpper driverPositionWarpper) throws Exception { + Integer orderId = driverPositionWarpper.getOrderId(); + Integer orderType = driverPositionWarpper.getOrderType(); + File file = new File(filePath + orderId + "_" + orderType + ".json"); + if(!file.exists()){ + file.getParentFile().mkdirs(); + file.createNewFile(); + } + List<OrderPositionWarpper> orderPositionWarppers = queryPosition(orderId, orderType); + OrderPositionWarpper orderPositionWarpper = new OrderPositionWarpper(); + BeanUtils.copyProperties(driverPositionWarpper, orderPositionWarpper); + orderPositionWarpper.setInsertTime(new Date()); + orderPositionWarppers.add(orderPositionWarpper); + + //写入相应的文件 + PrintWriter out = new PrintWriter(new FileWriter(file)); + out.write(JSON.toJSONString(driverPositionWarpper)); + out.flush(); + out.close(); + } + + + /** + * 获取订单坐标数据 + * @param orderId + * @param orderType + * @return + * @throws Exception + */ + @Override + public List<OrderPositionWarpper> queryPosition(Integer orderId, Integer orderType) throws Exception { + //将数据存储到文件中 + File file = new File(filePath + orderId + "_" + orderType + ".txt"); + if(!file.exists()){ + return new ArrayList<>(); + } + //读取文件(字符流) + BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); + //循环取出数据 + String str = null; + StringBuffer sb = new StringBuffer(); + while ((str = in.readLine()) != null) { + sb.append(str); + } + List<OrderPositionWarpper> list = new ArrayList<>(); + if(ToolUtil.isNotEmpty(sb.toString())){ + list = JSONArray.parseArray(sb.toString(), OrderPositionWarpper.class); + } + return list; + } + + +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java new file mode 100644 index 0000000..04e0e9d --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -0,0 +1,274 @@ +package com.supersavedriving.driver.modular.system.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.supersavedriving.driver.modular.system.dao.OrderMapper; +import com.supersavedriving.driver.modular.system.model.Driver; +import com.supersavedriving.driver.modular.system.model.DriverWork; +import com.supersavedriving.driver.modular.system.model.Order; +import com.supersavedriving.driver.modular.system.model.SystemConfig; +import com.supersavedriving.driver.modular.system.service.IDriverService; +import com.supersavedriving.driver.modular.system.service.IDriverWorkService; +import com.supersavedriving.driver.modular.system.service.IOrderService; +import com.supersavedriving.driver.modular.system.service.ISystemConfigService; +import com.supersavedriving.driver.modular.system.util.GaoDe.MapUtil; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.util.UUIDUtil; +import com.supersavedriving.driver.modular.system.warpper.AddOrderWarpper; +import com.supersavedriving.driver.modular.system.warpper.BaseWarpper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.xml.crypto.Data; +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; +import java.util.Map; + + +/** +* 订单 +* @author pzb +* @Date 2023/2/16 15:57 +*/ +@Service +public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService { + + @Autowired + private IDriverWorkService driverWorkService; + + @Autowired + private IDriverService driverService; + + @Autowired + private ISystemConfigService systemConfigService; + + + /** + * 获取服务中的订单id + * @param uid + * @return + * @throws Exception + */ + @Override + public Long queryDriverServerOrder(Integer uid) throws Exception { + Order order = this.selectOne(new EntityWrapper<Order>().eq("driverId", uid).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201))); + if(null != order){ + return order.getId(); + } + return 0L; + } + + + @Override + public ResultUtil driverAddOrder(Integer uid, AddOrderWarpper addOrderWarpper) throws Exception { + /** + * 司机上线且空闲,下单直接给当前司机,其余进大厅 + * 司机下的订单不需要创建新用户,且只能走线下支付 + */ + Driver driver = driverService.selectById(uid); + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", uid).eq("status", 1)); + Order order1 = this.selectOne(new EntityWrapper<Order>().eq("driverId", uid).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201))); + Order order = new Order(); + if(driverWork != null && null == order1){ + order.setDriverId(uid); + } + order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3)); + order.setSource(2); + order.setAgentId(driver.getAgentId()); + order.setBranchOfficeId(driver.getBranchOfficeId()); + order.setStartAddress(addOrderWarpper.getStartAddress()); + order.setStartLat(addOrderWarpper.getStartLat()); + order.setStartLng(addOrderWarpper.getStartLng()); + order.setEndAddress(addOrderWarpper.getEndAddress()); + order.setEndLat(addOrderWarpper.getEndLat()); + order.setEndLng(addOrderWarpper.getEndLng()); + Map<String, String> distance = MapUtil.getDistance(order.getStartLng() + "," + order.getStartLat(), order.getEndLng() + "," + order.getEndLat(), 1); + if(null == distance){ + return ResultUtil.error("获取预估距离出错"); + } + Double d = Double.valueOf(distance.get("distance")) / 1000; + order = getOrderPrice(1, d, 0, order); + order.setState(null == order.getDriverId() ? 101 : 102); + order.setStatus(1); + order.setCreateTime(new Date()); + this.insert(order); + return null; + } + + + /** + * 获取订单价格 + * @param type + * @param distance + * @param waitTime + * @param order + * @return + */ + public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order){ + order = getOrderInitialPrice(order); + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); + if(null == systemConfig){ + if(type == 1){//预估金额 + order.setEstimatedPrice(0D); + } + if(type == 2){//订单金额 + order.setOrderMoney(0D); + } + return order; + } + JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); + JSONArray chargeStandard = jsonObject.getJSONArray("ChargeStandard"); + JSONObject extraCost = jsonObject.getJSONObject("ExtraCost"); + Date date = new Date(); + for (int i = 0; i < chargeStandard.size(); i++) { + JSONObject jsonObject1 = chargeStandard.getJSONObject(i); + String num1 = jsonObject1.getString("num1"); + String num2 = jsonObject1.getString("num2"); + Double num3 = jsonObject1.getDouble("num3");//起步里程 + Double num4 = jsonObject1.getDouble("num4");//起步价格 + Double num5 = jsonObject1.getDouble("num5");//超过公里 + Double num6 = jsonObject1.getDouble("num6");//超过num3每num5公里收取num6 + Double num7 = jsonObject1.getDouble("num7");//长途起始公里 + Double num8 = jsonObject1.getDouble("num8");//长途结束公里 + Double num9 = jsonObject1.getDouble("num9");//长途费 + Double num10 = jsonObject1.getDouble("num10");//超出长途里程每num10公里 + Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11 + + String[] split = num1.split(":"); + Calendar s = Calendar.getInstance(); + s.setTime(date); + s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + s.set(Calendar.MINUTE, Integer.valueOf(split[1])); + s.set(Calendar.SECOND, 0); + + split = num2.split(":"); + Calendar e = Calendar.getInstance(); + e.setTime(date); + e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + e.set(Calendar.MINUTE, Integer.valueOf(split[1])); + e.set(Calendar.SECOND, 0); + + if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){ + if(num3.compareTo(distance) >= 0){//起步里程内 + order.setStartDistance(distance);//起步里程 + order.setStartPrice(num4);//起步价 + }else{ + BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3));//超出起步里程 + BigDecimal divide = subtract.divide(new BigDecimal(num5), new MathContext(2, RoundingMode.HALF_EVEN)); + BigDecimal multiply = divide.multiply(new BigDecimal(num6)); + order.setStartDistance(num3);//起步里程 + order.setStartPrice(num4);//起步价 + order.setOverDriveDistance(subtract.doubleValue());//超出起步里程 + order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费 + + //计算长途费 + if(distance.compareTo(num7) > 0){ + order.setLongDistance(num7 + "-" + num8);//长途里程 + order.setLongDistancePrice(num9);//长途费 + } + //计算长途里程超出的部分 + if(distance.compareTo(num8) > 0){ + BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)); + BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), new MathContext(2, RoundingMode.HALF_EVEN)); + BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11)); + order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 + order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 + } + } + break; + } + } + + //计算额外费用 + Integer num1 = extraCost.getInteger("num1");//等待时长 + Double num2 = extraCost.getDouble("num2");//等待费 + Integer num3 = extraCost.getInteger("num3");//等待超出时长 + Double num4 = extraCost.getDouble("num4");//等到超出时长费用单价 X/分钟 + Double num5 = extraCost.getDouble("num5");//恶劣天气公里 + Double num6 = extraCost.getDouble("num6");//恶劣天气费 + Double num7 = extraCost.getDouble("num7");//恶劣天气超出公里 + Double num8 = extraCost.getDouble("num8");//恶劣天气超出公里单价 X/公里 + Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额 + + //等待费用 + if(waitTime.compareTo(num1) >= 0){ + order.setWaitTime(num1);//等待时长 + order.setWaitTimePrice(num2);//等待费用 + + Integer w = waitTime - num3; + BigDecimal multiply = new BigDecimal(w).multiply(new BigDecimal(num4)); + order.setOutWaitTime(w);//等待时长超出分钟 + order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用 + } + + //恶劣天气 + if(true){ + order.setBadWeatherDistance(num5);//恶劣天气公里 + order.setBadWeatherPrice(num6);//恶劣天气费 + if(distance.compareTo(num7) > 0){ + BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num7)); + BigDecimal multiply = subtract.multiply(new BigDecimal(num8)); + order.setOverBadWeatherDistance(subtract.doubleValue());//恶劣天气超出公里 + order.setOverBadWeatherPrice(multiply.doubleValue());//恶劣天气超出公里费 + } + + double add = new BigDecimal(order.getOverBadWeatherPrice()).add(new BigDecimal(order.getBadWeatherPrice())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); + if(num9.compareTo(add) < 0){//超出最高金额(重新调整金额) + if(num9.compareTo(num6) < 0){//如果恶劣天气费大于最高金额 + order.setBadWeatherPrice(num9);//恶劣天气费 + order.setOverBadWeatherPrice(0D);//恶劣天气超出公里费 + }else{ + BigDecimal subtract = new BigDecimal(num9).subtract(new BigDecimal(add)); + order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费 + } + } + } + + //计算总金额 + BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() + + order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice()).setScale(2, BigDecimal.ROUND_HALF_EVEN); + if(type == 1){//预估价 + order.setEstimatedPrice(bigDecimal.doubleValue()); + } + if(type == 2){//订单金额 + order.setOrderMoney(bigDecimal.doubleValue()); + } + return order; + } + + + /** + * 初始订单费用 + * @param order + * @return + */ + public Order getOrderInitialPrice(Order order){ + order.setStartDistance(0D);//起步里程 + order.setStartPrice(0D);//起步价 + order.setOverDriveDistance(0D);//超出起步里程 + order.setOverDrivePrice(0D);//超出起步里程费 + order.setLongDistance("");//长途里程 + order.setLongDistancePrice(0D);//长途里程费 + order.setOverLongDistance(0D);//超出长途里程 + order.setOverLongDistancePrice(0d);//超出长途里程费 + order.setWaitTime(0);//等待时长 + order.setWaitTimePrice(0D);//等待费 + order.setOutWaitTime(0);//超出等待时长 + order.setOutWaitTimePrice(0D);//超出等待时长费 + order.setBadWeatherDistance(0D);//恶劣天气里程 + order.setBadWeatherPrice(0D);//恶劣天气里程费 + order.setOverBadWeatherDistance(0D);//恶劣天气超出里程 + order.setOverBadWeatherPrice(0D);//恶劣天气超出里程费 + order.setDiscountedPrice(0D);//优惠金额 + order.setCouponId(null);//优惠券 + return order; + } + +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemBulletinServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemBulletinServiceImpl.java new file mode 100644 index 0000000..7812582 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemBulletinServiceImpl.java @@ -0,0 +1,59 @@ +package com.supersavedriving.driver.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.supersavedriving.driver.modular.system.dao.SystemBulletinMapper; +import com.supersavedriving.driver.modular.system.dao.SystemBulletinUserMapper; +import com.supersavedriving.driver.modular.system.model.SystemBulletin; +import com.supersavedriving.driver.modular.system.model.SystemBulletinUser; +import com.supersavedriving.driver.modular.system.service.ISystemBulletinService; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinInfo; +import com.supersavedriving.driver.modular.system.warpper.SystemBulletinListWarpper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** +* 系统公告 +* @author pzb +* @Date 2023/2/13 11:18 +*/ +@Service +public class SystemBulletinServiceImpl extends ServiceImpl<SystemBulletinMapper, SystemBulletin> implements ISystemBulletinService { + + @Resource + private SystemBulletinUserMapper systemBulletinUserMapper; + + + + + /** + * 获取公告列表 + * @param uid 司机id + * @param pageNum 页码 + * @param size 页条数 + * @return + * @throws Exception + */ + @Override + public List<SystemBulletinListWarpper> querySystemBulletinList(Integer uid, Integer pageNum, Integer size) throws Exception { + pageNum = (pageNum - 1) * size; + return this.baseMapper.querySystemBulletinList(uid, pageNum, size); + } + + + /** + * 获取公告详情 + * @param id + * @return + * @throws Exception + */ + @Override + public SystemBulletinInfo querySystemBulletinInfo(Long id) throws Exception { + SystemBulletinInfo systemBulletinInfo = this.baseMapper.querySystemBulletinInfo(id); + SystemBulletinUser systemBulletinUser = systemBulletinUserMapper.selectById(id); + systemBulletinUser.setIsRead(1); + systemBulletinUserMapper.updateById(systemBulletinUser); + return systemBulletinInfo; + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemConfigServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemConfigServiceImpl.java new file mode 100644 index 0000000..c8a0270 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemConfigServiceImpl.java @@ -0,0 +1,16 @@ +package com.supersavedriving.driver.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.supersavedriving.driver.modular.system.dao.SystemConfigMapper; +import com.supersavedriving.driver.modular.system.model.SystemConfig; +import com.supersavedriving.driver.modular.system.service.ISystemConfigService; +import org.springframework.stereotype.Service; + +/** +* 系统配置 +* @author pzb +* @Date 2023/2/15 16:26 +*/ +@Service +public class SystemConfigServiceImpl extends ServiceImpl<SystemConfigMapper, SystemConfig> implements ISystemConfigService { +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemMessageServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemMessageServiceImpl.java new file mode 100644 index 0000000..904991d --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/SystemMessageServiceImpl.java @@ -0,0 +1,53 @@ +package com.supersavedriving.driver.modular.system.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.supersavedriving.driver.modular.system.dao.SystemMessageMapper; +import com.supersavedriving.driver.modular.system.model.SystemMessage; +import com.supersavedriving.driver.modular.system.service.ISystemMessageService; +import com.supersavedriving.driver.modular.system.warpper.SystemMessageWarpper; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** +* 系统消息逻辑类 +* @author pzb +* @Date 2023/2/10 15:34 +*/ +@Service +public class SystemMessageServiceImpl extends ServiceImpl<SystemMessageMapper, SystemMessage> implements ISystemMessageService { + + + /** + * 获取个人系统消息列表 + * @param uid + * @param pageNum + * @param size + * @return + * @throws Exception + */ + @Override + public List<SystemMessageWarpper> querySystemMessageList(Integer uid, Integer pageNum, Integer size) throws Exception { + pageNum = (pageNum - 1) * size; + List<SystemMessageWarpper> systemMessageWarppers = this.baseMapper.querySystemMessageList(uid, pageNum, size); + return systemMessageWarppers; + } + + + /** + * 阅读系统消息 + * @param uid + * @param ids + * @throws Exception + */ + @Override + public void readSystems(Integer uid, String ids) throws Exception { + String[] split = ids.split(","); + List<SystemMessage> systemMessages = this.selectList(new EntityWrapper<SystemMessage>().eq("userType", 2).eq("userId", uid).in("id", split)); + for (SystemMessage systemMessage : systemMessages) { + systemMessage.setIsRead(1); + } + this.updateBatchById(systemMessages); + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GDFalconUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GDFalconUtil.java deleted file mode 100644 index 443a240..0000000 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GDFalconUtil.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.supersavedriving.driver.modular.system.util; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.RestTemplate; - - -/** - * 高德猎鹰服务 - */ -@Component -public class GDFalconUtil implements ApplicationRunner { - - private String key = "e17d799b2506d05faf7f88320a266803"; - - @Autowired - private RestTemplate restTemplate; - - private static String serverId = null; - - - public String getServerId() { - return serverId; - } - - /** - * 服务启动后执行的代码 - * @param args - * @throws Exception - */ - @Override - public void run(ApplicationArguments args) throws Exception { - this.init(); - } - - - - /** - * 初始化创建服务 - */ - public void init(){ - if(serverId == null){ - JSONArray jsonArray = this.selectServer(); - if(null == jsonArray){ - serverId = this.createServer("server"); - }else{ - serverId = jsonArray.getJSONObject(0).getString("sid"); - } - } - - } - - - /** - * 创建新的服务 - * @return - */ - public String createServer(String name){ - String url = "https://tsapi.amap.com/v1/track/service/add"; - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("key", key); - params.add("name", name); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = restTemplate.postForObject(url, requestEntity , String.class); - JSONObject jsonObject = JSON.parseObject(s); - if(jsonObject.getIntValue("errcode") == 10000){ - JSONObject data = jsonObject.getJSONObject("data"); - if(null != data){ - return data.getString("sid"); - } - } - return null; - } - - - /** - * 查询服务 - * @return - */ - private JSONArray selectServer(){ - String url = "https://tsapi.amap.com/v1/track/service/list?key=" + key; - String forObject = restTemplate.getForObject(url, String.class); - JSONObject jsonObject = JSON.parseObject(forObject); - if(jsonObject.getIntValue("errcode") == 10000){ - JSONObject data = jsonObject.getJSONObject("data"); - if(null != data){ - return data.getJSONArray("results"); - } - } - return null; - } - - - /** - * 创建终端数据 - * @param name - * @return - */ - public String createTerminal(String name){ - String tid = this.selectTerminal(name); - if(tid != null){ - return tid; - } - String url = "https://tsapi.amap.com/v1/track/terminal/add"; - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("key", key); - params.add("sid", serverId); - params.add("name", name); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = restTemplate.postForObject(url, requestEntity , String.class); - JSONObject jsonObject = JSON.parseObject(s); - if(jsonObject.getIntValue("errcode") == 10000){ - JSONObject data = jsonObject.getJSONObject("data"); - return data.getString("tid"); - } - System.err.println(jsonObject.getString("errmsg")); - return null; - } - - - /** - * 查询终端 - * @param name - * @return - */ - public String selectTerminal(String name){ - String url = "https://tsapi.amap.com/v1/track/terminal/list?key=" + key + "&name=" + name; - String forObject = restTemplate.getForObject(url, String.class); - JSONObject jsonObject = JSON.parseObject(forObject); - if(jsonObject.getIntValue("errcode") == 10000){ - JSONObject data = jsonObject.getJSONObject("data"); - int count = 0; - if(null != data){ - count = data.getIntValue("count"); - } - if(count > 0){ - JSONObject results = data.getJSONArray("results").getJSONObject(0); - return results.getString("tid"); - }else{ - return this.createTerminal(name); - } - } - return null; - } - - - /** - * 创建轨迹 - * @param tid 终端id - * @return - */ - public String createTrack(String tid){ - String url = "https://tsapi.amap.com/v1/track/trace/add"; - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("key", key); - params.add("sid", serverId); - params.add("tid", tid); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = restTemplate.postForObject(url, requestEntity , String.class); - JSONObject jsonObject = JSON.parseObject(s); - if(jsonObject.getIntValue("errcode") == 10000){ - return jsonObject.getString("data"); - } - System.err.println(jsonObject.getString("errmsg")); - return null; - } - - - /** - * 删除轨迹 - * @param tid 终端id - * @param trid 轨迹id - */ - public void deleteTrack(String tid, String trid){ - String url = "https://tsapi.amap.com/v1/track/trace/delete"; - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("key", key); - params.add("sid", serverId); - params.add("tid", tid); - params.add("trid", trid); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = restTemplate.postForObject(url, requestEntity , String.class); - JSONObject jsonObject = JSON.parseObject(s); - if(jsonObject.getIntValue("errcode") != 10000){ - System.err.println(jsonObject.getString("errmsg")); - } - } - - -// -// public Map<String, Object> queryTrsearch(){ -// -// } -} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapConfig.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapConfig.java new file mode 100644 index 0000000..8e2d96f --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapConfig.java @@ -0,0 +1,14 @@ +package com.supersavedriving.driver.modular.system.util.GaoDe; + +/** +* 高德地图配置 +* @author pzb +* @Date 2023/2/16 18:52 +*/ +public interface MapConfig { + + /** + * 高德key + */ + String key = ""; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapUtil.java new file mode 100644 index 0000000..3d7a8cc --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/GaoDe/MapUtil.java @@ -0,0 +1,60 @@ +package com.supersavedriving.driver.modular.system.util.GaoDe; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.supersavedriving.driver.modular.system.util.httpClinet.HttpClientUtil; +import com.supersavedriving.driver.modular.system.util.httpClinet.HttpResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; + +/** +* 地图工具类 +* @author pzb +* @Date 2023/2/16 18:48 +*/ +public class MapUtil { + + public static Logger logger = LoggerFactory.getLogger("ServiceLog"); + + + + + /** + * 获取两点的距离 + * @param origins 起点坐标 + * @param destination 终点坐标 + * @param type 计算类型:0:直线距离 1:驾车导航距离(仅支持国内坐标)。 + * @return + */ + public static Map<String, String> getDistance(String origins, String destination, Integer type){ + try { + String url = "https://restapi.amap.com/v3/distance?key=" + MapConfig.key + "&origins=" + origins + "&destination=" + destination + + "&type=" + type; + HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", url, null, null, "json"); + if(httpResult.getCode() != 200){ + logger.debug(httpResult.getData()); + return null; + } + String data = httpResult.getData(); + JSONObject jsonObject = JSON.parseObject(data); + String status = jsonObject.getString("status"); + if(status.equals("1")){ + JSONArray results = jsonObject.getJSONArray("results"); + JSONObject jsonObject1 = results.getJSONObject(0); + Map<String, String> map = new HashMap<>(); + map.put("distance", jsonObject1.getString("distance"));//距离(米) + map.put("duration", jsonObject1.getString("duration"));//预计时间(秒) + return map; + }else{ + logger.debug(data); + } + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/HttpClientUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/HttpClientUtil.java deleted file mode 100644 index 2a27857..0000000 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/HttpClientUtil.java +++ /dev/null @@ -1,266 +0,0 @@ -package com.supersavedriving.driver.modular.system.util; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.http.NameValuePair; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.util.EntityUtils; -import org.springframework.stereotype.Component; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.*; -import java.util.concurrent.TimeUnit; - -/** - * http工具类 - */ -@Component -public class HttpClientUtil { - - private CloseableHttpClient httpClient; - - private CloseableHttpResponse httpResponse; - - private RequestConfig requestConfig; - - - /** - * 创建一个httpClient对象 - */ - private void getHttpCline(){ - //1.创建连接池管理器 - PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(60000, - TimeUnit.MILLISECONDS); - connectionManager.setMaxTotal(1000); - connectionManager.setDefaultMaxPerRoute(50); - - //2.创建httpclient对象 - this.httpClient = HttpClients.custom() - .setConnectionManager(connectionManager) - .disableAutomaticRetries() - .build(); - } - - private RequestConfig getRequestConfig(){ - return RequestConfig.custom() - .setConnectTimeout(60000) - .setSocketTimeout(60000) - .build(); - } - - - - /** - * 创建一个POST请求实例 - * @param url 请求地址 - * @param params 请求参数 - */ - private void setPostHttpRequset(String url, Map<String, Object> params, Map<String, String> header, String contentType){ - HttpPost httpPost = new HttpPost(url); - httpPost.setConfig(this.getRequestConfig()); - if(null != header){ - for(String key : header.keySet()){ - httpPost.setHeader(key, header.get(key)); - } - } - List<NameValuePair> list = new ArrayList<>(); - if(null != params){ - Set<String> keys = params.keySet(); - for(String key : keys){ - list.add(new BasicNameValuePair(key, params.get(key).toString())); - } - } - try { - switch (contentType){ - case "form": - httpPost.setEntity(new UrlEncodedFormEntity(list, "UTF-8")); - break; - case "json": - ObjectMapper objectMapper = new ObjectMapper(); - String s =objectMapper.writeValueAsString(params); - System.err.println(s); - httpPost.setEntity(new StringEntity(s, Charset.forName("UTF-8"))); - break; - } - this.getHttpCline(); - if(null == this.httpClient){ - this.getHttpCline(); - } - httpResponse = this.httpClient.execute(httpPost); - } catch (IOException e) { - e.printStackTrace(); - this.close(); - } - } - - - /** - * 获取get请求实例 - * @param url 请求地址 - * @param params 请求参数 - */ - private void setGetHttpRequset(String url, Map<String, Object> params, Map<String, String> header){ - StringBuffer sb = new StringBuffer(); - String p = ""; - if(null != params){ - Set<String> keys = params.keySet(); - for(String key : keys){ - sb.append(key + "=" + params.get(key) + "&"); - } - p = "?" + sb.substring(0, sb.length() - 1); - } - HttpGet httpGet = new HttpGet(url + p); - if(null != header){ - for(String key : header.keySet()){ - httpGet.setHeader(key, header.get(key)); - } - } - this.getHttpCline(); - if(null == this.httpClient){ - this.getHttpCline(); - } - try { - httpResponse = this.httpClient.execute(httpGet); - } catch (IOException e) { - e.printStackTrace(); - this.close(); - } - } - - - /** - * 发送http请求 - * @param mothed "GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS" - * @param url 请求地址 - * @param params 请求参数 - * @param header 请求头 - * @param contentType 参数请求方式form/json - * @return - */ - public String pushHttpRequset(String mothed, String url, Map<String, Object> params, Map<String, String> header, String contentType){ - String content = null; - switch (mothed){ - case "GET": - this.setGetHttpRequset(url, params, header); - break; - case "POST": - this.setPostHttpRequset(url, params, header, contentType); - break; - } - if(httpResponse.getStatusLine().getStatusCode() == 200){ - try { - content = EntityUtils.toString(httpResponse.getEntity()); - this.close(); - return content; - } catch (IOException e) { - e.printStackTrace(); - this.close(); - } - } - if(httpResponse.getStatusLine().getStatusCode() == 201){ - content = "{\"status\":201}"; - this.close(); - return content; - }else{ - try { - System.err.println("返回状态码:" + httpResponse.getStatusLine() + "。"); - content = EntityUtils.toString(httpResponse.getEntity()); - this.close(); - return content; - } catch (IOException e) { - e.printStackTrace(); - this.close(); - } - } - this.close(); - return content; - } - - - /** - * 发送XML请求 - * @param url 请求地址 - * @param xml XML数据 - * @param header 自定义请求头 - * @return - */ - public String pushHttpRequsetXml(String url, String xml, Map<String, String> header){ - HttpPost httpPost = new HttpPost(url); - for(String key : header.keySet()){ - httpPost.setHeader(key, header.get(key)); - } - httpPost.setHeader("Content-Type", "application/xml"); - try { - httpPost.setEntity(new StringEntity(xml, "UTF-8")); - this.getHttpCline(); - if(null == this.httpClient){ - this.getHttpCline(); - } - httpResponse = this.httpClient.execute(httpPost); - String content = null; - if(httpResponse.getStatusLine().getStatusCode() == 200){ - try { - content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); - this.close(); - return content; - } catch (IOException e) { - e.printStackTrace(); - this.close(); - } - }else{ - try { - content = "返回状态码:" + httpResponse.getStatusLine() + "。" + EntityUtils.toString(httpResponse.getEntity()); - this.close(); - return content; - } catch (IOException e) { - e.printStackTrace(); - this.close(); - } - } - this.close(); - return content; - } catch (IOException e) { - e.printStackTrace(); - this.close(); - } - return null; - } - - - - /** - * 关闭资源 - */ - private void close(){ - try { - if(null != httpClient){ - httpClient.close(); - } - if(null != httpResponse){ - httpResponse.close(); - } - } catch (IOException e) { - e.printStackTrace(); - }finally { - try { - if(null != httpClient){ - httpClient.close(); - } - if(null != httpResponse){ - httpResponse.close(); - } - }catch (Exception e){ - e.printStackTrace(); - } - } - } -} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java index 2ead1b1..1e98e46 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java @@ -2,6 +2,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -19,15 +21,10 @@ @Component public class PushUtil { + Logger logger = LoggerFactory.getLogger("ServiceLog"); + @Autowired private RestTemplate internalRestTemplate; - - @Autowired - private RedisUtil redisUtil; - - private Map<String, JSONObject> pushMap = new HashMap<>();//存储需要定时推送的数据 - - private Map<String, Timer> taskMap = new HashMap<>();//存储定时推送的定时器 @@ -56,9 +53,39 @@ String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); if(jsonObject1.getIntValue("code") != 200){ + logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } + /** + * 余额不足提醒 + * @param id + * @param type + */ + public void pushBalance(Integer id, Integer type){ + JSONObject msg = new JSONObject(); + msg.put("code", 200); + msg.put("msg", "SUCCESS"); + msg.put("method", "BALANCE"); + msg.put("data", new Object()); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + //将请求头部和参数合成一个请求 + MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); + params.add("msg", msg.toJSONString()); + params.add("id", id.toString()); + params.add("type", type.toString()); + HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); + String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if(jsonObject1.getIntValue("code") != 200){ + logger.debug(jsonObject1.getString("msg")); + System.err.println(jsonObject1.getString("msg")); + } + } } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpClientUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpClientUtil.java new file mode 100644 index 0000000..3322768 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpClientUtil.java @@ -0,0 +1,268 @@ +package com.supersavedriving.driver.modular.system.util.httpClinet; + +import com.alibaba.fastjson.JSON; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.http.NameValuePair; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.ssl.SSLContexts; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.net.ssl.SSLContext; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.security.KeyStore; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; + +/** + * http工具类 + */ +public class HttpClientUtil { + + private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); + + private static PoolingHttpClientConnectionManager connectionManager; + + + { + //1.创建连接池管理器 + connectionManager = new PoolingHttpClientConnectionManager(60000, + TimeUnit.MILLISECONDS); + connectionManager.setMaxTotal(1000); + connectionManager.setDefaultMaxPerRoute(50); + } + + /** + * 创建一个httpClient对象 + */ + private static CloseableHttpClient getHttpCline(){ + return HttpClients.custom() + .setConnectionManager(connectionManager) + .disableAutomaticRetries() + .build(); + } + + private static RequestConfig getRequestConfig(){ + RequestConfig.Builder builder = RequestConfig.custom(); + builder.setSocketTimeout(60000)//3.1设置客户端等待服务端返回数据的超时时间 + .setConnectTimeout(30000)//3.2设置客户端发起TCP连接请求的超时时间 + .setExpectContinueEnabled(true) + .setConnectionRequestTimeout(30000);//3.3设置客户端从连接池获取链接的超时时间 + return builder.build(); + } + + + + /** + * 创建一个POST请求实例 + * @param url 请求地址 + * @param params 请求参数 + */ + private static CloseableHttpResponse setPostHttpRequset(String url, Map<String, Object> params, Map<String, String> header, String contentType) throws Exception{ + HttpPost httpPost = new HttpPost(url); + httpPost.setConfig(getRequestConfig()); + if(null != header){ + for(String key : header.keySet()){ + httpPost.setHeader(key, header.get(key)); + } + } + List<NameValuePair> list = new ArrayList<>(); + if(null != params){ + Set<String> keys = params.keySet(); + for(String key : keys){ + list.add(new BasicNameValuePair(key, null == params.get(key) ? null : params.get(key).toString())); + } + } + switch (contentType){ + case "form": + httpPost.setEntity(new UrlEncodedFormEntity(list, "UTF-8")); + break; + case "json": + ObjectMapper objectMapper = new ObjectMapper(); + String s =objectMapper.writeValueAsString(params); + httpPost.setEntity(new StringEntity(s, ContentType.create(ContentType.APPLICATION_JSON.getMimeType(), Charset.forName("UTF-8")))); + break; + } + return getHttpCline().execute(httpPost); + } + + + /** + * 获取get请求实例 + * @param url 请求地址 + * @param params 请求参数 + */ + private static CloseableHttpResponse setGetHttpRequset(String url, Map<String, Object> params, Map<String, String> header) throws Exception{ + StringBuffer sb = new StringBuffer(); + String p = ""; + if(null != params){ + Set<String> keys = params.keySet(); + for(String key : keys){ + sb.append(key + "=" + params.get(key) + "&"); + } + p = "?" + sb.substring(0, sb.length() - 1); + } + HttpGet httpGet = new HttpGet(url + p); + httpGet.setConfig(getRequestConfig()); + if(null != header){ + for(String key : header.keySet()){ + httpGet.setHeader(key, header.get(key)); + } + } + return getHttpCline().execute(httpGet); + } + + + /** + * 发送http请求 + * @param mothed "GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS" + * @param url 请求地址 + * @param params 请求参数 + * @param header 请求头 + * @param contentType 参数请求方式form/json + * @return + */ + public static HttpResult pushHttpRequset(String mothed, String url, Map<String, Object> params, Map<String, String> header, String contentType) throws Exception{ + String randome = UUID.randomUUID().toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); + logger.info(sdf.format(new Date()) + "----(" + randome + ")请求参数:" + JSON.toJSONString(params)); + CloseableHttpResponse httpResponse = null; + switch (mothed){ + case "GET": + httpResponse = setGetHttpRequset(url, params, header); + break; + case "POST": + httpResponse = setPostHttpRequset(url, params, header, contentType); + break; + } + int statusCode = httpResponse.getStatusLine().getStatusCode(); + String content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + logger.info(sdf.format(new Date()) + "----(" + randome + ")返回结果:" + content); + HttpResult httpResult = HttpResult.getHttpResult(statusCode, content); + close(httpResponse); + return httpResult; + } + + + /** + * 发送XML请求 + * @param url 请求地址 + * @param xml XML数据 + * @param header 自定义请求头 + * @return + */ + public HttpResult pushHttpRequsetXml(String url, String xml, Map<String, String> header) throws Exception{ + HttpPost httpPost = new HttpPost(url); + httpPost.setConfig(getRequestConfig()); + for(String key : header.keySet()){ + httpPost.setHeader(key, header.get(key)); + } + httpPost.setHeader("Content-Type", "application/xml"); + httpPost.setEntity(new StringEntity(xml, "UTF-8")); + CloseableHttpResponse httpResponse = getHttpCline().execute(httpPost); + int statusCode = httpResponse.getStatusLine().getStatusCode(); + String content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + HttpResult httpResult = HttpResult.getHttpResult(statusCode, content); + this.close(httpResponse); + return httpResult; + } + + + + /** + * 请求https发送XML请求 + * @param url 接口路径 + * @param xml 内容 + * @param header 请求头 + * @param certPassword 证书密码 + * @param certPath 证书路径 + * @param certType 证书类型 + * @return + * @throws Exception + */ + public String pushHttpsRequsetXml(String url, String xml, Map<String, String> header, String certPassword, String certPath, String certType) throws Exception{ + HttpPost httpPost = new HttpPost(url); + for(String key : header.keySet()){ + httpPost.setHeader(key, header.get(key)); + } + httpPost.setHeader("Content-Type", "application/xml"); + httpPost.setEntity(new StringEntity(xml, "UTF-8")); + CloseableHttpClient httpCline = this.initCert(certPassword, certPath, certType); + CloseableHttpResponse httpResponse = httpCline.execute(httpPost); + String content = null; + if(httpResponse.getStatusLine().getStatusCode() == 200){ + content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + }else{ + content = "返回状态码:" + httpResponse.getStatusLine() + "。" + EntityUtils.toString(httpResponse.getEntity()); + } + this.close(httpResponse); + httpCline.close(); + return content; + } + + + /** + * 初始化https对象(带证书) + * @param key 证书密码 + * @param certPath 证书路径 + * @param certType 证书类型 + * @throws Exception + */ + private CloseableHttpClient initCert(String key, String certPath, String certType) throws Exception { + KeyStore keyStore = KeyStore.getInstance(certType); + InputStream inputStream = new FileInputStream(new File(certPath)); + try { + keyStore.load(inputStream, key.toCharArray()); + } finally { + inputStream.close(); + } + SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, key.toCharArray()).build(); + SSLConnectionSocketFactory sslsf = + new SSLConnectionSocketFactory(sslcontext, new String[] {"TLSv1"}, null, + SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); + return HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } + + + + /** + * 关闭资源 + */ + private static void close(CloseableHttpResponse httpResponse){ + try { + if(null != httpResponse){ + EntityUtils.consume(httpResponse.getEntity());//此处高能,通过源码分析,由EntityUtils是否回收HttpEntity + httpResponse.close(); + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + try { + if(null != httpResponse){ + httpResponse.close(); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + } + + +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpResult.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpResult.java new file mode 100644 index 0000000..12a84d3 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/httpClinet/HttpResult.java @@ -0,0 +1,31 @@ +package com.supersavedriving.driver.modular.system.util.httpClinet; + +import lombok.Data; + +/** + * http请求返回封装 + */ +@Data +public class HttpResult { + /** + * 返回状态码 + */ + private Integer code; + /** + * 返回结果 + */ + private String data; + + /** + * 返回封装结果 + * @param code + * @param data + * @return + */ + public static HttpResult getHttpResult(Integer code, String data){ + HttpResult httpResult = new HttpResult(); + httpResult.setCode(code); + httpResult.setData(data); + return httpResult; + } +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/MongoUtils.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/MongoUtils.java new file mode 100644 index 0000000..64d48dd --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/MongoUtils.java @@ -0,0 +1,166 @@ +package com.supersavedriving.driver.modular.system.util.mongodb; + +import com.alibaba.fastjson.JSONObject; +import com.mongodb.BasicDBObject; +import com.mongodb.client.AggregateIterable; +import com.mongodb.client.MongoCursor; +import com.supersavedriving.driver.modular.system.util.mongodb.model.Location; +import com.supersavedriving.driver.modular.system.util.mongodb.model.LocationQuery; +import org.bson.Document; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.Map.Entry; +import java.util.function.Supplier; + + +@Component +public class MongoUtils<T> { + + @Autowired + private MongoTemplate mongoTemplate; + + /** + * lambda + * @param data 添加数据 + * @param collectionName 表名 + */ + public void insert(Supplier<T> data,String collectionName){ + mongoTemplate.insert(data.get(),collectionName); + } + + public void insert(Object data, String collectionName){ + mongoTemplate.insert(data,collectionName); + } + + /** + * + * @param sp 查询条件lambda + * @param sets 更新的字段 + * @param collectionName 表名 + */ + public void update(Supplier<Criteria> sp, Supplier<Map<String,Object>> sets, String collectionName){ + Query query = Query.query(sp.get()); + Update update = new Update(); + + sets.get().forEach((key,value) ->{ + //System.out.println(key); + //System.out.println(value); + update.set(key,value); + }); + mongoTemplate.updateFirst(query, update, collectionName); + } + + public void update(Criteria sp, Supplier<Map<String,Object>> sets, String collectionName){ + Query query = Query.query(sp); + Update update = new Update(); + + sets.get().forEach((key,value) ->{ + //System.out.println(key); + //System.out.println(value); + update.set(key,value); + }); + mongoTemplate.updateFirst(query, update, collectionName); + } + + /**lambda + * @param sp 查询条件lambda + * @param collectionName 表名 + * @return + */ + public List<T> query(Supplier<Criteria> sp, String collectionName, Class entityClass){ + Query query = Query.query(sp.get()); + List<T> ts = mongoTemplate.find(query,entityClass,collectionName); + + return ts; + } + + public List<T> query(Criteria sp, String collectionName, Class entityClass){ + Query query = Query.query(sp); + List<T> ts = mongoTemplate.find(query,entityClass,collectionName); + + return ts; + } + + /** + * @param sp 查询条件lambda + * @param collectionName 表名 + * @return + */ + public void delete(Supplier<Criteria> sp, String collectionName){ + Query query = Query.query(sp.get()); + mongoTemplate.remove(query, collectionName); + } + + public void delete(Criteria sp, String collectionName){ + Query query = Query.query(sp); + mongoTemplate.remove(query, collectionName); + } + + + + /** + * 查询符合条件总条数 + * @return + * @throws Exception + */ + public long findLogCount(HashMap<String,Object> paras,Class entityClass,String collectionName) throws Exception { + Query query = new Query(); + Criteria criteria = new Criteria(); + if (null != paras ) { + Iterator<Entry<String, Object>> iterator = paras.entrySet().iterator(); + while(iterator.hasNext()) { + Entry<String, Object> entry = iterator.next(); + String key = entry.getKey(); + Object value = entry.getValue(); + criteria.and(key).is(value); + + } + query.addCriteria(criteria); + } + long count = mongoTemplate.count(query, entityClass,collectionName); + + return count; + } + + /** + * 查询附近的对象 + * @param model + * @return + */ + public List<Location> geoNear(LocationQuery model){ + List<Location> resultList = new ArrayList<>(); + try{ + List<BasicDBObject> pipeLine = new ArrayList<>(); + BasicDBObject aggregate = new BasicDBObject("$geoNear", + new BasicDBObject("near" + , new BasicDBObject("type", "Point") + .append("coordinates", model.getCoordinates())) + .append("distanceField", "distance") + .append("maxDistance", model.getDistance()) + .append("spherical", true) + + ); + + pipeLine.add(aggregate); + AggregateIterable<Document> location = mongoTemplate.getCollection("location").aggregate(pipeLine); + MongoCursor<Document> cursor = location.iterator(); + + //将查询的结果,封装成对象返回出去 + while (cursor.hasNext()) { + org.bson.Document document = cursor.next(); + Location node = JSONObject.parseObject(JSONObject.toJSONString(document),Location.class); + resultList.add(node); + } + }catch (Exception e){ + e.printStackTrace(); + } + return resultList; + } + +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/GeoJson.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/GeoJson.java new file mode 100644 index 0000000..ff19a2c --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/GeoJson.java @@ -0,0 +1,9 @@ +package com.supersavedriving.driver.modular.system.util.mongodb.model; + +import lombok.Data; + +@Data +public class GeoJson { + private String type; + private Double[] coordinates; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/Location.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/Location.java new file mode 100644 index 0000000..9c4d9fa --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/Location.java @@ -0,0 +1,50 @@ +package com.supersavedriving.driver.modular.system.util.mongodb.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.geo.GeoJsonPoint; +import org.springframework.data.mongodb.core.index.CompoundIndex; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Document(collection = "driver_location") +@CompoundIndex(name = "location_index", def = "{'location': '2dsphere'}") +public class Location implements Serializable { + + private static final long serialVersionUID = 4508868382007529970L; + + @Id + private String id; + /** + * 司机id + */ + private Integer driverId; + /** + * x:经度 y:纬度 + */ + private GeoJsonPoint location; + /** + * 位置名称 + **/ + private String name; + /** + * 创建时间 + */ + private Long created; + /** + * 更新时间 + */ + private Long updated; + /** + * 上次更新时间 + */ + private Long lastUpdated; + +} \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/LocationQuery.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/LocationQuery.java new file mode 100644 index 0000000..db6d662 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/mongodb/model/LocationQuery.java @@ -0,0 +1,23 @@ +package com.supersavedriving.driver.modular.system.util.mongodb.model; + +import lombok.Data; + +@Data +public class LocationQuery { + /** + * 当前经纬度[xxx,xxx] + **/ + private Double[] coordinates; + /** + * 距离,如:200,500,1,3,5,10,20 + **/ + private Double distance; + /** + * 距离单位,如:m,km + **/ + private String unit; + /** + * 位置类型:1-景点,2-加油站,3-酒店 + **/ + private Integer type; +} \ No newline at end of file diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/AddOrderWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/AddOrderWarpper.java new file mode 100644 index 0000000..8515c25 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/AddOrderWarpper.java @@ -0,0 +1,26 @@ +package com.supersavedriving.driver.modular.system.warpper; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class AddOrderWarpper { + @ApiModelProperty(value = "用户电话", required = true, dataType = "string") + private String phone; + @ApiModelProperty(value = "用户姓名", required = false, dataType = "string") + private String userName; + @ApiModelProperty(value = "起点地址", required = true, dataType = "string") + private String startAddress; + @ApiModelProperty(value = "起点经度", required = true, dataType = "string") + private String startLng; + @ApiModelProperty(value = "起点纬度", required = true, dataType = "string") + private String startLat; + @ApiModelProperty(value = "终点地址", required = true, dataType = "string") + private String endAddress; + @ApiModelProperty(value = "终点经度", required = true, dataType = "string") + private String endLng; + @ApiModelProperty(value = "终点纬度", required = true, dataType = "string") + private String endLat; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BaseWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BaseWarpper.java index c56d312..43dca9b 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BaseWarpper.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BaseWarpper.java @@ -8,7 +8,7 @@ @ApiModel public class BaseWarpper { @ApiModelProperty("id") - private Integer id; + private Long id; @ApiModelProperty(value = "编号", required = true, dataType = "string") private String code; @ApiModelProperty(value = "名称", required = true, dataType = "stirng") diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverPositionWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverPositionWarpper.java new file mode 100644 index 0000000..854ca45 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverPositionWarpper.java @@ -0,0 +1,28 @@ +package com.supersavedriving.driver.modular.system.warpper; + +import lombok.Data; + + +@Data +public class DriverPositionWarpper { + /** + * 司机id + */ + private Integer driverId; + /** + * 经度 + */ + private Double lon; + /** + * 纬度 + */ + private Double lat; + /** + * 订单类型 + */ + private Integer orderType; + /** + * 订单id + */ + private Integer orderId; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPositionWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPositionWarpper.java new file mode 100644 index 0000000..75f6d53 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPositionWarpper.java @@ -0,0 +1,44 @@ +package com.supersavedriving.driver.modular.system.warpper; + +import lombok.Data; + +import java.util.Date; + +/** + * 订单坐标信息表 + */ +@Data +public class OrderPositionWarpper { + /** + * 订单类型 + */ + private Integer orderType; + /** + * 订单id + */ + private Integer orderId; + /** + * 司机id + */ + private Integer driverId; + /** + * 经度 + */ + private String lon; + /** + * 纬度 + */ + private String lat; + /** + * 方向角 + */ + private String directionAngle; + /** + * 海拔 + */ + private String altitude; + /** + * 添加时间 + */ + private Date insertTime; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinInfo.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinInfo.java new file mode 100644 index 0000000..b5197ff --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinInfo.java @@ -0,0 +1,19 @@ +package com.supersavedriving.driver.modular.system.warpper; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** +* 系统公告详情 +* @author pzb +* @Date 2023/2/13 11:44 +*/ +@Data +@ApiModel +public class SystemBulletinInfo { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("H5") + private String content; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinListWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinListWarpper.java new file mode 100644 index 0000000..2ddb154 --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemBulletinListWarpper.java @@ -0,0 +1,26 @@ +package com.supersavedriving.driver.modular.system.warpper; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** +* 系统公告列表 +* @author pzb +* @Date 2023/2/13 11:23 +*/ +@Data +@ApiModel +public class SystemBulletinListWarpper { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("介绍") + private String introduce; + @ApiModelProperty("图片") + private String img; + @ApiModelProperty("阅读状态(0=否,1=是)") + private Integer isRead; + @ApiModelProperty("时间") + private Long createTime; +} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemMessageWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemMessageWarpper.java new file mode 100644 index 0000000..72b7f7a --- /dev/null +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/SystemMessageWarpper.java @@ -0,0 +1,31 @@ +package com.supersavedriving.driver.modular.system.warpper; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** +* 系统消息 +* @author pzb +* @Date 2023/2/10 15:28 +*/ +@Data +@ApiModel +public class SystemMessageWarpper { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("标题") + private String title; + @ApiModelProperty("内容") + private String content; + @ApiModelProperty("阅读状态(0=否,1=是)") + private Integer isRead; + @ApiModelProperty("消息日期") + private Long createTime; +} diff --git a/driver/guns-admin/src/main/resources/application.yml b/driver/guns-admin/src/main/resources/application.yml index 22f3260..9085bc7 100644 --- a/driver/guns-admin/src/main/resources/application.yml +++ b/driver/guns-admin/src/main/resources/application.yml @@ -116,4 +116,9 @@ #callbackPath: http://47.108.254.217:80/user ---- \ No newline at end of file +--- + +spring: + data: + mongodb: + uri: mongodb://admin:123456@127.0.0.1:27017/admin -- Gitblit v1.7.1