From 5989fe7ff0414176ebf2a72aa610cb76b44ea128 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期四, 24 七月 2025 19:22:11 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/QianYunTong --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataNextVo.java | 39 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverIndexVo.java | 22 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 232 +++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml | 7 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderMoneyDataVo.java | 31 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java | 80 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java | 21 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java | 109 ++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java | 80 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPushOrderService.java | 19 DriverQYTTravel/guns-admin/pom.xml | 9 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 3 DriverQYTTravel/guns-admin/lib/ncoss-java-sdk-1.0.5.jar | 0 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java | 16 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java | 272 ++++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Output.java | 31 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java | 36 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/CloudRecordingCallback.java | 74 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java | 17 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java | 33 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java | 243 +++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java | 269 ++++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverServiceMapper.xml | 306 ++++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Config.java | 31 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderPromotionDataVo.java | 31 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java | 102 ++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java | 101 ++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PushOrderServiceImpl.java | 31 ManagementQYTTravel/guns-admin/pom.xml | 34 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml | 189 ++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java | 17 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverServiceMapper.java | 17 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java | 41 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataVo.java | 27 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java | 35 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java | 2 36 files changed, 2,556 insertions(+), 51 deletions(-) diff --git a/DriverQYTTravel/guns-admin/lib/ncoss-java-sdk-1.0.5.jar b/DriverQYTTravel/guns-admin/lib/ncoss-java-sdk-1.0.5.jar new file mode 100644 index 0000000..fbb6562 --- /dev/null +++ b/DriverQYTTravel/guns-admin/lib/ncoss-java-sdk-1.0.5.jar Binary files differ diff --git a/DriverQYTTravel/guns-admin/pom.xml b/DriverQYTTravel/guns-admin/pom.xml index ce324ad..5b9cc00 100644 --- a/DriverQYTTravel/guns-admin/pom.xml +++ b/DriverQYTTravel/guns-admin/pom.xml @@ -19,6 +19,15 @@ <dependencies> <dependency> + <groupId>com.ncoss</groupId> + <artifactId>ncoss-java-sdk</artifactId> + <version>1.0.5</version> + <scope>system</scope> + <systemPath>${pom.basedir}/lib/ncoss-java-sdk-1.0.5.jar</systemPath> + </dependency> + + + <dependency> <groupId>cn.rongcloud.im</groupId> <artifactId>server-sdk-java</artifactId> <version>3.2.13</version> diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java index 5228c11..201c236 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java @@ -1,12 +1,22 @@ package com.stylefeng.guns.modular.api; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.account.service.ITEnterpriseWithdrawalService; import com.stylefeng.guns.modular.account.service.UserWithdrawalService; +import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; +import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; +import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; +import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; import com.stylefeng.guns.modular.system.service.ICompanyService; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.service.IReassignService; import com.stylefeng.guns.modular.system.util.PayMoneyUtil; +import com.stylefeng.guns.modular.system.util.rongyun.RongYunUtil; +import com.stylefeng.guns.modular.system.util.rongyun.model.CloudRecordingCallback; +import com.stylefeng.guns.modular.taxi.model.OrderTaxi; +import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -15,7 +25,12 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; +import java.io.IOException; import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; import java.util.Map; /** @@ -30,15 +45,16 @@ @Autowired private PayMoneyUtil payMoneyUtil; - @Autowired - private IDriverService driverService; - @Autowired - private ICompanyService companyService; - @Autowired - private ITEnterpriseWithdrawalService enterpriseWithdrawalService; - @Autowired - private UserWithdrawalService userWithdrawalService; + + @Autowired + private IOrderPrivateCarService orderPrivateCarService; + + @Autowired + private IOrderTaxiService orderTaxiService; + + @Autowired + private IOrderCrossCityService orderCrossCityService; @@ -118,4 +134,52 @@ } } + + @ResponseBody + @PostMapping("/rongYunCallBack") + public void rongYunCallBack(HttpServletRequest request, HttpServletResponse response){ + CloudRecordingCallback cloudRecordingCallback = RongYunUtil.cloudRecordingCallback(request); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + System.err.println(sdf.format(new Date()) + "-------------------云端录制状态回调!-------------------"); + System.err.println(JSON.toJSONString(cloudRecordingCallback)); + if(null == cloudRecordingCallback){ + System.err.println("云端录制状态回调解析出错!"); + return; + } + Integer type = cloudRecordingCallback.getType(); + if(4 == type){//文件上传 + String fileUrl = cloudRecordingCallback.getOutput().getFileUrl(); + String roomId = cloudRecordingCallback.getRoomId(); + String[] split = roomId.split("_"); + String orderType = split[0]; + String orderId = split[1]; + if("1".equals(orderType)){ + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); + orderPrivateCar.setVoice(fileUrl); + orderPrivateCarService.updateById(orderPrivateCar); + } + if("2".equals(orderType)){ + OrderTaxi orderTaxi = orderTaxiService.selectById(orderId); + orderTaxi.setVoice(fileUrl); + orderTaxiService.updateById(orderTaxi); + } + if("3".equals(orderType)){ + OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId); + orderCrossCity.setVoice(fileUrl); + orderCrossCityService.updateById(orderCrossCity); + } + + // TODO 顺风车 + } + PrintWriter out = null; + try { + out = response.getWriter(); + } catch (IOException e) { + e.printStackTrace(); + } + out.print("OK"); + out.flush(); + out.close(); + } + } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java index 12ce5f8..bad9032 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java @@ -1,8 +1,14 @@ package com.stylefeng.guns.modular.api; import cn.hutool.core.io.FileUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.internal.util.file.IOUtils; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.config.properties.GunsProperties; import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.core.util.ToolUtil; @@ -14,11 +20,13 @@ import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; import com.stylefeng.guns.modular.system.dao.RegionMapper; import com.stylefeng.guns.modular.system.model.*; -import com.stylefeng.guns.modular.system.model.vo.CompanyVo; +import com.stylefeng.guns.modular.system.model.vo.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.ALiSendSms; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.WeChatUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.NCOSSUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.QianYunTongConfig; import com.stylefeng.guns.modular.system.warpper.*; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; @@ -26,15 +34,26 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.*; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.math.BigDecimal; +import java.security.SecureRandom; +import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -48,6 +67,7 @@ @CrossOrigin @RestController @RequestMapping("") +@Slf4j public class DriverController { @Resource @@ -94,6 +114,13 @@ @Autowired private ICompanyCityService companyCityService; + + @Autowired + private TDriverPromotionActivityService driverPromotionActivityService; + + + @Autowired + private QianYunTongConfig qianYunTongConfig; /** * 获取短信验证码 @@ -376,6 +403,244 @@ e.printStackTrace(); return ResultUtil.runErr(); } + } + + + @ResponseBody + @PostMapping("/api/driver/queryHomeDataFromDriver") + @ApiOperation(value = "获取首页统计数据(黔云通)", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<DriverIndexVo> queryHomeDataFromDriver(HttpServletRequest request){ + try { + Integer uid = driverService.getUserIdFormRedis(request); + if(null == uid){ + return ResultUtil.tokenErr(); + } + DriverIndexVo vo = driverService.queryHomeDataFromDriver(uid); + return ResultUtil.success(vo); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/api/driver/queryOrderDataFromDriver") + @ApiOperation(value = "获取订单统计数据(黔云通)", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "2022-02-02 - 2033-03-03", name = "time", required = false, dataType = "String"), + @ApiImplicitParam(value = "pageNumber", name = "pageNumber", required = true, dataType = "int"), + @ApiImplicitParam(value = "pageSize", name = "pageSize", required = true, dataType = "int") + }) + public ResultUtil<DriverOrderDataVo> queryOrderDataFromDriver(String time,Integer pageNumber,Integer pageSize,HttpServletRequest request){ + try { + Integer uid = driverService.getUserIdFormRedis(request); + if(null == uid){ + return ResultUtil.tokenErr(); + } + Page<DriverOrderDataNextVo> driverOrderDataVoPage = new Page<>(pageNumber, pageSize); + DriverOrderDataVo vo = driverService.queryOrderDataFromDriver(time,driverOrderDataVoPage,uid); + return ResultUtil.success(vo); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + + @ResponseBody + @PostMapping("/api/driver/queryOrderMoneyFromDriver") + @ApiOperation(value = "获取订单收入统计数据(黔云通)", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "2022-02-02 - 2033-03-03", name = "time", required = false, dataType = "String"), + @ApiImplicitParam(value = "pageNumber", name = "pageNumber", required = true, dataType = "int"), + @ApiImplicitParam(value = "pageSize", name = "pageSize", required = true, dataType = "int") + }) + public ResultUtil<DriverOrderMoneyDataVo> queryOrderMoneyFromDriver(String time, Integer pageNumber, Integer pageSize, HttpServletRequest request){ + try { + Integer uid = driverService.getUserIdFormRedis(request); + if(null == uid){ + return ResultUtil.tokenErr(); + } + Page<DriverOrderDataNextVo> driverOrderDataVoPage = new Page<>(pageNumber, pageSize); + DriverOrderMoneyDataVo vo = driverService.queryOrderMoneyFromDriver(time,driverOrderDataVoPage,uid); + return ResultUtil.success(vo); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + @ResponseBody + @PostMapping("/api/driver/queryOrderPromotionFromDriver") + @ApiOperation(value = "获取订单推广统计数据(黔云通)", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "2022-02-02 - 2033-03-03", name = "time", required = false, dataType = "String"), + @ApiImplicitParam(value = "pageNumber", name = "pageNumber", required = true, dataType = "int"), + @ApiImplicitParam(value = "pageSize", name = "pageSize", required = true, dataType = "int") + }) + public ResultUtil<DriverOrderPromotionDataVo> queryOrderPromotionFromDriver(String time, Integer pageNumber, Integer pageSize, HttpServletRequest request){ + try { + Integer uid = driverService.getUserIdFormRedis(request); + if(null == uid){ + return ResultUtil.tokenErr(); + } + Page<DriverOrderDataNextVo> driverOrderDataVoPage = new Page<>(pageNumber, pageSize); + DriverOrderPromotionDataVo vo = driverService.queryOrderPromotionFromDriver(time,driverOrderDataVoPage,uid); + return ResultUtil.success(vo); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/api/driver/getPromotionInfo") + @ApiOperation(value = "获取推广说明(黔云通)", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<String> getPromotionInfo(HttpServletRequest request){ + try { + Integer uid = driverService.getUserIdFormRedis(request); + if(null == uid){ + return ResultUtil.tokenErr(); + } + Driver driver = driverService.selectById(uid); + String areaCode = driver.getAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>() + .eq("districtCode", areaCode) + .eq("status", 2) + .last("LIMIT 1")); + if(tDriverPromotionActivity!=null){ + return ResultUtil.success(tDriverPromotionActivity.getActivityDesc()); + } + return ResultUtil.success(""); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + @ApiOperation(value = "个人的小程序码(分享码)生成", tags = {"司机端-首页"}, notes = "") + @GetMapping("/api/driver/person-code") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<HashMap<String, String>> createQRcode(HttpServletRequest request) { + InputStream inputStream = null; + OutputStream outputStream = null; + try { + Integer uid = driverService.getUserIdFormRedis(request); + if (null == uid) { + return ResultUtil.tokenErr(); + } + // 获取调用凭证accessToken + String accessToken = getAccessToken(); + RestTemplate rest = new RestTemplate(); + + String imgUrl = ""; + String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + accessToken; + Map<String, Object> param = new HashMap<>(); + param.put("path", "pages/home/home?driverId=" + uid); + param.put("width", 430); //二维码尺寸 + MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); + HttpEntity requestEntity = new HttpEntity(param, headers); + ResponseEntity<byte[]> entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); + byte[] result = entity.getBody(); + inputStream = new ByteArrayInputStream(result); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + // 最后上传生成的文件名 + String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg"; + // oss中的文件夹名 + String objectName = sdf.format(new Date()) + "/" + finalFileName; + String key = "imgs/management/" + objectName; + String object = NCOSSUtil.putObject( qianYunTongConfig.getBucketName(), key, inputStream); + + System.out.println(object); + + String url1 ="https://api.weixin.qq.com/wxa/generate_urllink?access_token="+accessToken; + Map<String, Object> param1 = new HashMap<>(); + param1.put("path", "pages/home/home"); + param1.put("query","driverId="+uid); + + HttpRequest post = HttpUtil.createPost(url1); + // map转json + String jsonString = JSON.toJSONString(param1); + post.body(jsonString); + HttpResponse execute = post.execute(); + String body = execute.body(); + String urlLink = JSONObject.parseObject(body).get("url_link").toString(); + + + HashMap<String, String> stringStringHashMap = new HashMap<>(); + stringStringHashMap.put("url_link",urlLink); + stringStringHashMap.put("img",object); + + +// inputStream = new ByteArrayInputStream(result); +// +// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); +// // 最后上传生成的文件名 +// String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg"; +// // oss中的文件夹名 +// String objectName = sdf.format(new Date()) + "/" + finalFileName; +// // 上传oss +//// ossUtil.uploadFile2OSS(inputStream, objectName); +//// //获取文件的URl地址 +//// imgUrl = ossUtil.getImgUrl(objectName); +// log.info("imgUrl: "+imgUrl); + return ResultUtil.success(stringStringHashMap); + + } catch (Exception e) { + log.error("调用小程序生成微信永久小程序码URL接口异常", e); + }finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(outputStream != null){ + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return ResultUtil.error("获取二维码失败"); + } + + @Value("${wx.url}") + private String ACCESS_TOKEN_URL; + + @Value("${wx.appletsAppSecret}") + private String memberAppSecret; + + @Value("${wx.appletsAppid}") + private String wxAppId; + + @Autowired + private RestTemplate restTemplate; + + + public String getAccessToken() { + String requestUrl = MessageFormat.format(ACCESS_TOKEN_URL,wxAppId,memberAppSecret); + String respBody = restTemplate.getForEntity(requestUrl, String.class).getBody(); + JSONObject jsonObject = JSONObject.parseObject(respBody); + return jsonObject.getString("access_token"); } @@ -1346,7 +1611,7 @@ if(companyCities.isEmpty()){ return ResultUtil.success(companyVos); } - List<Company> companies = companyService.selectList(new EntityWrapper<Company>().eq("type", 2).ne("flag", 3).in("id", companyCities.stream().map(CompanyCity::getCompanyId).collect(Collectors.toList()))); + List<Company> companies = companyService.selectList(new EntityWrapper<Company>().ne("type", 1).ne("flag", 3).in("id", companyCities.stream().map(CompanyCity::getCompanyId).collect(Collectors.toList()))); for (Company company : companies) { CompanyVo companyVo = new CompanyVo(company.getId(), company.getName()); companyVos.add(companyVo); diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java index 1dc0a38..508d55e 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.enums.IdType; import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; import java.util.Date; /** @@ -336,6 +337,40 @@ private String splitAllocation; + + // 推广应的金额 + private BigDecimal promotionMoney; + + // 推广司机id + private Integer promotionDriverId; + + + private String voice; + + public String getVoice() { + return voice; + } + + public void setVoice(String voice) { + this.voice = voice; + } + + public BigDecimal getPromotionMoney() { + return promotionMoney; + } + + public void setPromotionMoney(BigDecimal promotionMoney) { + this.promotionMoney = promotionMoney; + } + + public Integer getPromotionDriverId() { + return promotionDriverId; + } + + public void setPromotionDriverId(Integer promotionDriverId) { + this.promotionDriverId = promotionDriverId; + } + public Date getPayTime() { return payTime; } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java index 420fbee..b34d0b9 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; +import java.math.BigDecimal; import java.util.Date; /** @@ -406,6 +407,9 @@ private Integer totalPeopleNum; + @TableField("voice") + private String voice; + /** * 预估里程(米) */ @@ -423,6 +427,38 @@ private Integer driverCancle; + + + // 推广应的金额 + private BigDecimal promotionMoney; + + // 推广司机id + private Integer promotionDriverId; + + public String getVoice() { + return voice; + } + + public void setVoice(String voice) { + this.voice = voice; + } + + public BigDecimal getPromotionMoney() { + return promotionMoney; + } + + public void setPromotionMoney(BigDecimal promotionMoney) { + this.promotionMoney = promotionMoney; + } + + public Integer getPromotionDriverId() { + return promotionDriverId; + } + + public void setPromotionDriverId(Integer promotionDriverId) { + this.promotionDriverId = promotionDriverId; + } + public String getChargeRules() { return chargeRules; } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java index 711f372..c3c81ca 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java @@ -10,6 +10,22 @@ public interface DriverMapper extends BaseMapper<Driver> { /** + * 获取当前已上班type业务类型、设置了可以接此类型的单据且空闲的司机 + * @param type + * @return + */ + List<Driver> queryIdleDriver(@Param("type") Integer type, @Param("companyId") Integer companyId); + + /** + * 获取当前已上班type业务类型、设置了可以接此类型的单据、服务车型匹配且空闲的司机 + * @param type + * @param serverCarModelId + * @param companyId + * @return + */ + List<Driver> queryIdleDriver_(@Param("type") Integer type, @Param("serverCarModelId") Integer serverCarModelId, + @Param("companyId") Integer companyId); + /** * 根据电话获取司机 * @param phone * @return diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverServiceMapper.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverServiceMapper.java index 0b68c99..c5efd87 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverServiceMapper.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverServiceMapper.java @@ -1,7 +1,10 @@ package com.stylefeng.guns.modular.system.dao; import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.modular.system.model.DriverService; +import com.stylefeng.guns.modular.system.model.vo.DriverOrderDataNextVo; +import com.stylefeng.guns.modular.system.model.vo.DriverOrderDataVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,4 +19,18 @@ * @throws Exception */ List<DriverService> queryMyBusiness(@Param("uid") Integer uid); + + List<DriverOrderDataNextVo> queryOrderDataFromDriver(@Param("sTime") String sTime, @Param("eTime") String eTime, @Param("driverOrderDataVoPage") Page<DriverOrderDataNextVo> driverOrderDataVoPage, @Param("uid") Integer uid); + + + List<DriverOrderDataNextVo> queryOrderMoneyDataFromDriver(@Param("sTime") String sTime, @Param("eTime") String eTime, @Param("driverOrderDataVoPage") Page<DriverOrderDataNextVo> driverOrderDataVoPage, @Param("uid") Integer uid); + + List<DriverOrderDataNextVo> queryOrderMoneyDataFromDriverAll(@Param("sTime") String sTime, @Param("eTime") String eTime, @Param("uid") Integer uid); + + + List<DriverOrderDataNextVo> queryOrderPromotionFromDriver(@Param("sTime") String sTime, @Param("eTime") String eTime, @Param("driverOrderDataVoPage") Page<DriverOrderDataNextVo> driverOrderDataVoPage, @Param("uid") Integer uid); + + + List<DriverOrderDataNextVo> queryOrderPromotionFromDriverAll(@Param("sTime") String sTime, @Param("eTime") String eTime, @Param("uid") Integer uid); + } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java new file mode 100644 index 0000000..8b627b6 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java @@ -0,0 +1,17 @@ +package com.stylefeng.guns.modular.system.dao; + + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity; + +/** + * <p> + * 司机推广活动主表 Mapper 接口 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +public interface TDriverPromotionActivityMapper extends BaseMapper<TDriverPromotionActivity> { + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml index 47e4a2a..095c35a 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml @@ -77,7 +77,196 @@ <result column="updateUser" property="updateUser"/> </resultMap> + <select id="queryIdleDriver" resultType="com.stylefeng.guns.modular.system.model.Driver"> + select + id as id, + account as account, + jobNumber as jobNumber, + phone as phone, + password as password, + name as name, + sex as sex, + idCard as idCard, + companyId as companyId, + franchiseeId as franchiseeId, + headImgUrl as headImgUrl, + faceImgUrl as faceImgUrl, + idCardImgUrl1 as idCardImgUrl1, + idCardImgUrl2 as idCardImgUrl2, + placeOfEmployment as placeOfEmployment, + birthday as birthday, + bankCardNumber as bankCardNumber, + driverNationality as driverNationality, + driverNation as driverNation, + driverMaritalStatus as driverMaritalStatus, + driverLanguageLevel as driverLanguageLevel, + driverEducation as driverEducation, + driverCensus as driverCensus, + driverAddress as driverAddress, + driverContactAddress as driverContactAddress, + driverAge as driverAge, + driveCard as driveCard, + driveCardImgUrl as driveCardImgUrl, + driverType as driverType, + getDriverLicenseDate as getDriverLicenseDate, + driverLicenseOn as driverLicenseOn, + driverLicenseOff as driverLicenseOff, + taxiDriver as taxiDriver, + taxiAptitudeCard as taxiAptitudeCard, + networkCarlssueImg as networkCarlssueImg, + networkCarlssueOrganization as networkCarlssueOrganization, + networkCarlssueDate as networkCarlssueDate, + getNetworkCarProofDate as getNetworkCarProofDate, + networkCarProofOn as networkCarProofOn, + networkCarProofOff as networkCarProofOff, + registerDate as registerDate, + fullTimeDriver as fullTimeDriver, + inDriverBlacklist as inDriverBlacklist, + commercialType as commercialType, + contractCompany as contractCompany, + contractOn as contractOn, + contractOff as contractOff, + emergencyContact as emergencyContact, + emergencyContactPhone as emergencyContactPhone, + emergencyContactAddress as emergencyContactAddress, + remark as remark, + isPlatCar as isPlatCar, + carId as carId, + authState as authState, + state as state, + addType as addType, + balance as balance, + flag as flag, + insertTime as insertTime, + insertUser as insertUser, + updateTime as updateTime, + updateUser as updateUser + from t_driver + where flag != 3 and state = 2 and authState = 2 + <if test="null != companyId"> + <choose> + <when test="companyId != 1"> + and companyId = #{companyId} or franchiseeId = #{companyId} + </when> + <otherwise> + and companyId is null or companyId = 0 or companyId = 1 or franchiseeId is null or franchiseeId = 0 + </otherwise> + </choose> + </if> + and id in + ( + select driverId from t_driver_work where startTime < now() and state = 1 and `type` like CONCAT('%', #{type}, '%') + ) + <if test="8>type"> + and id in (select driverId from t_driver_orders where `type` = #{type}) + </if> + <if test="type>7"> + and id in (select driverId from t_driver_orders where `type` = 1) + </if> + </select> + + <select id="queryIdleDriver_" resultType="com.stylefeng.guns.modular.system.model.Driver"> + select + id as id, + account as account, + jobNumber as jobNumber, + phone as phone, + password as password, + name as name, + sex as sex, + idCard as idCard, + companyId as companyId, + franchiseeId as franchiseeId, + headImgUrl as headImgUrl, + faceImgUrl as faceImgUrl, + idCardImgUrl1 as idCardImgUrl1, + idCardImgUrl2 as idCardImgUrl2, + placeOfEmployment as placeOfEmployment, + birthday as birthday, + bankCardNumber as bankCardNumber, + driverNationality as driverNationality, + driverNation as driverNation, + driverMaritalStatus as driverMaritalStatus, + driverLanguageLevel as driverLanguageLevel, + driverEducation as driverEducation, + driverCensus as driverCensus, + driverAddress as driverAddress, + driverContactAddress as driverContactAddress, + driverAge as driverAge, + driveCard as driveCard, + driveCardImgUrl as driveCardImgUrl, + driverType as driverType, + getDriverLicenseDate as getDriverLicenseDate, + driverLicenseOn as driverLicenseOn, + driverLicenseOff as driverLicenseOff, + taxiDriver as taxiDriver, + taxiAptitudeCard as taxiAptitudeCard, + networkCarlssueImg as networkCarlssueImg, + networkCarlssueOrganization as networkCarlssueOrganization, + networkCarlssueDate as networkCarlssueDate, + getNetworkCarProofDate as getNetworkCarProofDate, + networkCarProofOn as networkCarProofOn, + networkCarProofOff as networkCarProofOff, + registerDate as registerDate, + fullTimeDriver as fullTimeDriver, + inDriverBlacklist as inDriverBlacklist, + commercialType as commercialType, + contractCompany as contractCompany, + contractOn as contractOn, + contractOff as contractOff, + emergencyContact as emergencyContact, + emergencyContactPhone as emergencyContactPhone, + emergencyContactAddress as emergencyContactAddress, + remark as remark, + isPlatCar as isPlatCar, + carId as carId, + authState as authState, + state as state, + addType as addType, + balance as balance, + flag as flag, + insertTime as insertTime, + insertUser as insertUser, + updateTime as updateTime, + updateUser as updateUser + from t_driver + where flag != 3 and state = 2 and authState = 2 + <if test="null != companyId"> + <choose> + <when test="companyId != 1"> + and companyId = #{companyId} or franchiseeId = #{companyId} + </when> + <otherwise> + and companyId is null or companyId = 0 or companyId = 1 or franchiseeId is null or franchiseeId = 0 + </otherwise> + </choose> + + </if> + and id in + ( + select driverId from t_driver_work where startTime < now() and state = 1 and `type` like CONCAT('%', #{type}, '%') + ) + <if test="8>type"> + and id in (select driverId from t_driver_orders where `type` = #{type}) + and carId in (select carId from t_car_service where `type` = #{type} + + <if test="null != serverCarModelId"> + and serverCarModelId = #{serverCarModelId} + </if> + ) + </if> + <if test="type>7"> + and id in (select driverId from t_driver_orders where `type` =1) + and carId in (select carId from t_car_service where `type` = 1 + + <if test="null != serverCarModelId"> + and serverCarModelId = #{serverCarModelId} + </if> + ) + </if> + + </select> <select id="queryByPhone" resultType="Driver"> select id as id, diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverServiceMapper.xml b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverServiceMapper.xml index a31e3b6..826a9f4 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverServiceMapper.xml +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverServiceMapper.xml @@ -17,4 +17,310 @@ `type` as `type` from t_driver_service where driverId = #{uid} </select> + <select id="queryOrderDataFromDriver" resultType="com.stylefeng.guns.modular.system.model.vo.DriverOrderDataNextVo"> + select * from ( + select + orderNum, + 1 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_private_car + where driverId = #{uid} and state !=10 + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 2 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_taxi + where driverId = #{uid} and state !=10 + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 3 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_cross_city + where driverId = #{uid} and state !=10 + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + ) t1 + order by t1.orderTime desc + + + + + + + + </select> + <select id="queryOrderMoneyDataFromDriver" resultType="com.stylefeng.guns.modular.system.model.vo.DriverOrderDataNextVo"> + select * from ( + select + orderNum, + 1 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_private_car + where driverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 2 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_taxi + where driverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 3 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_cross_city + where driverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + ) t1 + order by t1.orderTime desc + + + + + + + + </select> + <select id="queryOrderMoneyDataFromDriverAll" resultType="com.stylefeng.guns.modular.system.model.vo.DriverOrderDataNextVo"> + select * from ( + select + orderNum, + 1 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_private_car + where driverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 2 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_taxi + where driverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 3 as type, + insertTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + orderMoney + from t_order_cross_city + where driverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and insertTime between #{sTime} and #{eTime} + </if> + ) t1 + order by t1.orderTime desc + + + + + + + + </select> + <select id="queryOrderPromotionFromDriver" resultType="com.stylefeng.guns.modular.system.model.vo.DriverOrderDataNextVo"> + select * from ( + select + orderNum, + 1 as type, + successTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + promotionMoney as orderMoney + from t_order_private_car + where promotionDriverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and successTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 2 as type, + successTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + promotionMoney as orderMoney + from t_order_taxi + where promotionDriverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and successTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 3 as type, + successTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + promotionMoney as orderMoney + from t_order_cross_city + where promotionDriverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and successTime between #{sTime} and #{eTime} + </if> + ) t1 + order by t1.orderTime desc + + + + + + + + </select> + + <select id="queryOrderPromotionFromDriverAll" resultType="com.stylefeng.guns.modular.system.model.vo.DriverOrderDataNextVo"> + select * from ( + select + orderNum, + 1 as type, + successTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + promotionMoney as orderMoney + from t_order_private_car + where promotionDriverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and successTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 2 as type, + successTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + promotionMoney as orderMoney + from t_order_taxi + where promotionDriverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and successTime between #{sTime} and #{eTime} + </if> + + union all + + select + orderNum, + 3 as type, + successTime as orderTime, + id as orderId, + boardingAddress as startAddress, + getoffAddress as endAddress, + state, + promotionMoney as orderMoney + from t_order_cross_city + where promotionDriverId = #{uid} and state in (8,9) + <if test="sTime !=null"> + and successTime between #{sTime} and #{eTime} + </if> + ) t1 + order by t1.orderTime desc + + + + + + + + </select> + + + + + </mapper> \ No newline at end of file diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml new file mode 100644 index 0000000..e4515a0 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml @@ -0,0 +1,7 @@ +<?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.stylefeng.guns.modular.system.dao.TDriverPromotionActivityMapper"> + + <!-- 通用查询映射结果 --> + +</mapper> diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java new file mode 100644 index 0000000..c67d940 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java @@ -0,0 +1,109 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.enums.IdType; +import java.math.BigDecimal; +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.Version; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * <p> + * 司机推广活动主表 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_driver_promotion_activity") +public class TDriverPromotionActivity extends Model<TDriverPromotionActivity> { + + private static final long serialVersionUID = 1L; + + /** + * 推广活动ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 关联业务:1-专车/2-出租车/3-城际/4-顺风车/5-代驾 + */ + private String bizType; + /** + * 推广活动标题 + */ + private String activityTitle; + /** + * 活动区域-省 + */ + private String province; + /** + * 省code + */ + private String provinceCode; + /** + * 活动区域-市 + */ + private String city; + /** + * 市code + */ + private String cityCode; + /** + * 活动区域-区/县 + */ + private String district; + /** + * 区code + */ + private String districtCode; + /** + * 活动开始时间 + */ + private Date startTime; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 抽佣比例(如 10.00 代表 10%) + */ + private BigDecimal commissionRatio; + /** + * 司机乘客绑定有效期(天) + */ + private Integer bindingDays; + /** + * 推广活动说明 + */ + private String activityDesc; + /** + * 状态:1-未开始 2-进行中 3-已结束 + */ + private Integer status; + /** + * 创建人 + */ + private String creator; + private Date createTime; + private Date updateTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverIndexVo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverIndexVo.java new file mode 100644 index 0000000..912f9bc --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverIndexVo.java @@ -0,0 +1,22 @@ +package com.stylefeng.guns.modular.system.model.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DriverIndexVo { + @ApiModelProperty("今日订单数") + private Integer todayOrderNum; + + @ApiModelProperty("今日订单金额") + private BigDecimal todayOrderMoney; + + @ApiModelProperty("今日推广金额") + private BigDecimal todayPromotionMoney; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataNextVo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataNextVo.java new file mode 100644 index 0000000..72c8ed2 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataNextVo.java @@ -0,0 +1,39 @@ +package com.stylefeng.guns.modular.system.model.vo; + +import com.alipay.api.domain.DataEntry; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DriverOrderDataNextVo { + @ApiModelProperty("订单号") + private String orderNum; + + @ApiModelProperty("订单类型 1快车 2出租车 3跨城") + private Integer type; + + @ApiModelProperty("订单时间") + private Date orderTime; + + @ApiModelProperty("订单id") + private String orderId; + + @ApiModelProperty("订单开始地址") + private String startAddress; + + @ApiModelProperty("订单结束地址") + private String endAddress; + + @ApiModelProperty("订单状态 1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付") + private Integer state; + + @ApiModelProperty("订单金额/收入金额") + private Double orderMoney; + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataVo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataVo.java new file mode 100644 index 0000000..1a96607 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderDataVo.java @@ -0,0 +1,27 @@ +package com.stylefeng.guns.modular.system.model.vo; + +import com.baomidou.mybatisplus.plugins.Page; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DriverOrderDataVo { + @ApiModelProperty("总订单数") + private Integer allOrderNum; + + @ApiModelProperty("今日订单数") + private Integer todayOrderNum; + + @ApiModelProperty("本月订单数") + private Integer monthOrderNum; + + + @ApiModelProperty("订单列表") + private Page<DriverOrderDataNextVo> driverOrderDataNextVos; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderMoneyDataVo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderMoneyDataVo.java new file mode 100644 index 0000000..6d364a2 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderMoneyDataVo.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.model.vo; + +import com.baomidou.mybatisplus.plugins.Page; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DriverOrderMoneyDataVo { + @ApiModelProperty("总订单金额") + private BigDecimal allOrderMoney; + + @ApiModelProperty("今日订单金额") + private BigDecimal todayOrderMoney; + + @ApiModelProperty("本月订单金额") + private BigDecimal monthOrderMoney; + + + @ApiModelProperty("搜索合计金额") + private BigDecimal searchMoney; + + + @ApiModelProperty("订单列表") + private Page<DriverOrderDataNextVo> driverOrderDataNextVos; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderPromotionDataVo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderPromotionDataVo.java new file mode 100644 index 0000000..62a085c --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/vo/DriverOrderPromotionDataVo.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.model.vo; + +import com.baomidou.mybatisplus.plugins.Page; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DriverOrderPromotionDataVo { + @ApiModelProperty("总推广金额") + private BigDecimal allOrderMoney; + + @ApiModelProperty("今日推广金额") + private BigDecimal todayOrderMoney; + + @ApiModelProperty("本月推广金额") + private BigDecimal monthOrderMoney; + + + @ApiModelProperty("搜索合计金额") + private BigDecimal searchMoney; + + + @ApiModelProperty("列表") + private Page<DriverOrderDataNextVo> driverOrderDataNextVos; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java index 042ce39..1c04b91 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java @@ -1,7 +1,9 @@ package com.stylefeng.guns.modular.system.service; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.IService; import com.stylefeng.guns.modular.system.model.Driver; +import com.stylefeng.guns.modular.system.model.vo.*; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.warpper.ActivityWarpper; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; @@ -14,6 +16,32 @@ import java.util.Map; public interface IDriverService extends IService<Driver> { + + + /** + * 获取distance公里内空闲司机数量 + * @param type + * @param lon + * @param lat + * @return + * @throws Exception + */ + List<Driver> queryIdleDriver(Integer type, Double lon, Double lat, Double distance, Integer companyId) throws Exception; + + /** + * 获取给定车型且空闲的司机 + * @param type + * @param serverCarModelId + * @param lon + * @param lat + * @param distance + * @param companyId + * @return + * @throws Exception + */ + List<Driver> queryIdleDriver(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception; + + /** * 获取短信验证码 @@ -355,4 +383,17 @@ * @throws Exception */ ResultUtil loginOut(Integer id) throws Exception; + + DriverIndexVo queryHomeDataFromDriver(Integer uid); + + DriverOrderDataVo queryOrderDataFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid); + + DriverOrderMoneyDataVo queryOrderMoneyFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid); + + + DriverOrderPromotionDataVo queryOrderPromotionFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid); + + + + } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPushOrderService.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPushOrderService.java new file mode 100644 index 0000000..aa1bfc8 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPushOrderService.java @@ -0,0 +1,19 @@ +package com.stylefeng.guns.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.PushOrder; + +import java.util.List; + +public interface IPushOrderService extends IService<PushOrder> { + + + /** + * 获取推送配置数据 + * @param type + * @param pushType + * @return + * @throws Exception + */ + List<PushOrder> querys(Integer type, Integer pushType, Integer companyId) throws Exception; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java new file mode 100644 index 0000000..aa8c91a --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java @@ -0,0 +1,17 @@ +package com.stylefeng.guns.modular.system.service; + + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity; + +/** + * <p> + * 司机推广活动主表 服务类 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +public interface TDriverPromotionActivityService extends IService<TDriverPromotionActivity> { + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index 354d01b..7c0e5cc 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -1,15 +1,21 @@ package com.stylefeng.guns.modular.system.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.common.constant.JwtConstants; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.util.JwtTokenUtil; import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper; +import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; +import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper; +import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; import com.stylefeng.guns.modular.system.dao.*; import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.model.vo.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.system.util.qianyuntong.SMSUtil; @@ -20,6 +26,8 @@ import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.LoginWarpper; import com.stylefeng.guns.modular.system.warpper.RegisteredWarpper; +import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper; +import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import io.rong.models.response.TokenResult; import org.apache.shiro.authc.SimpleAuthenticationInfo; @@ -36,6 +44,7 @@ import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; @@ -46,8 +55,6 @@ @Resource private DriverMapper driverMapper; - @Resource - private CompanyCityMapper companyCityMapper; @Resource private UserActivityInviteMapper userActivityInviteMapper; @@ -87,9 +94,6 @@ @Resource private RedisTemplate<String, Object> redisTemplate; - - @Autowired - private ALiSendSms aLiSendSms; @Autowired private ICompanyCityService companyCityService; @@ -137,6 +141,52 @@ + @Autowired + private OrderPrivateCarMapper orderPrivateCarMapper; + + @Autowired + private OrderCrossCityMapper orderCrossCityMapper; + + @Autowired + private OrderTaxiMapper orderTaxiMapper; + + @Autowired + private GeodesyUtil geodesyUtil; + + + @Override + public List<Driver> queryIdleDriver(Integer type, Double lon, Double lat, Double distance, Integer companyId) throws Exception { + List<Driver> drivers = driverMapper.queryIdleDriver(type, companyId); + List<Driver> list = new ArrayList<>(); + for(Driver driver : drivers){ + String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(driver.getId())); + if(null != value){ + Map<String, Double> distance1 = geodesyUtil.getDistance(lon + "," + lat, value); + double d = Double.valueOf(distance1.get("WGS84")).doubleValue(); + if(d < (distance * 1000)){ + list.add(driver); + } + } + } + return list; + } + + @Override + public List<Driver> queryIdleDriver(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception { + List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId); + List<Driver> list = new ArrayList<>(); + for(Driver driver : drivers){ + String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(driver.getId())); + if(null != value){ + Map<String, Double> distance1 = geodesyUtil.getDistance(lon + "," + lat, value); + double d = Double.valueOf(distance1.get("WGS84")).doubleValue(); + if(d < (distance * 1000)){ + list.add(driver); + } + } + } + return list; + } /** * 获取短信验证码 @@ -486,10 +536,10 @@ } Company company = companyMapper.selectById(driver.getCompanyId()); //查询中台员工数据 - List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(driver.getPhone(), company.getEnterCode()); - if (null == userInfoByPhone || userInfoByPhone.size() == 0) { - return ResultUtil.error("账号未注册"); - } +// List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(driver.getPhone(), company.getEnterCode()); +// if (null == userInfoByPhone || userInfoByPhone.size() == 0) { +// return ResultUtil.error("账号未注册"); +// } if (ToolUtil.isNotEmpty(driver.getIdCard()) && driver.getAuthState() == 1) { return ResultUtil.error("账号正在审核中,请耐心等待"); @@ -1555,7 +1605,169 @@ redisTemplate.delete("DEVICE_" + id);//清除车载端登录的标识 return ResultUtil.success(); } - + + @Override + public DriverIndexVo queryHomeDataFromDriver(Integer uid) { + DriverIndexVo driverIndexVo = new DriverIndexVo(); + // 获取快车订单 + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().ne("state", 10).eq("driverId", uid).like("insertTime", LocalDateTime.now().toString())); + // 跨城订单 + List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().ne("state", 10).eq("driverId", uid).like("insertTime", LocalDateTime.now().toString())); + // 出租车订单 + List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().ne("state", 10).eq("driverId", uid).like("insertTime", LocalDateTime.now().toString())); + driverIndexVo.setTodayOrderNum(orderPrivateCars.size() + orderCrossCities.size() + orderTaxis.size()); + + + double sum = orderPrivateCars.stream().mapToDouble(OrderPrivateCar::getOrderMoney).sum(); + double sum1 = orderCrossCities.stream().mapToDouble(OrderCrossCity::getOrderMoney).sum(); + double sum2 = orderTaxis.stream().mapToDouble(OrderTaxi::getOrderMoney).sum(); + driverIndexVo.setTodayOrderMoney(new BigDecimal(sum +sum1+sum2)); + + + BigDecimal reduce = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("promotionDriverId", uid).like("insertTime", LocalDateTime.now().toString())).stream().map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce1 = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().eq("promotionDriverId", uid).like("insertTime", LocalDateTime.now().toString())).stream().map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce2 = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().eq("promotionDriverId", uid).like("insertTime", LocalDateTime.now().toString())).stream().map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + driverIndexVo.setTodayPromotionMoney(reduce.add(reduce1).add(reduce2)); + return driverIndexVo; + }; + + + + @Override + public DriverOrderDataVo queryOrderDataFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM"); + // 总的订单数 + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().ne("state", 10).eq("driverId", uid)); + // 跨城订单 + List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().ne("state", 10).eq("driverId", uid)); + // 出租车订单 + List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().ne("state", 10).eq("driverId", uid)); + DriverOrderDataVo driverOrderDataVo = new DriverOrderDataVo(); + driverOrderDataVo.setAllOrderNum(orderPrivateCars.size() + orderCrossCities.size() + orderTaxis.size()); + long count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).count(); + long count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).count(); + long count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).count(); + driverOrderDataVo.setTodayOrderNum((int) (count+count1+count2)); + + Date date = new Date(); + String month = simpleDateFormat1.format(date); + long count3 = orderPrivateCars.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).count(); + long count4 = orderCrossCities.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).count(); + long count5 = orderTaxis.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).count(); + driverOrderDataVo.setMonthOrderNum((int) (count3+count4+count5)); + + String sTime=null; + String eTime=null; + if(ToolUtil.isNotEmpty( time)){ + sTime=time.split(" - ")[0]+" 00:00:00"; + eTime=time.split(" - ")[1]+" 23:59:59"; + } + List<DriverOrderDataNextVo> driverOrderDataNextVoPage = driverServiceMapper.queryOrderDataFromDriver(sTime, eTime, driverOrderDataVoPage, uid); + driverOrderDataVoPage.setRecords(driverOrderDataNextVoPage); + driverOrderDataVo.setDriverOrderDataNextVos(driverOrderDataVoPage); + return driverOrderDataVo; + } + + + + @Override + public DriverOrderMoneyDataVo queryOrderMoneyFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid) { + DriverOrderMoneyDataVo driverOrderDataVo = new DriverOrderMoneyDataVo(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM"); + // 总的订单数 + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().in("state",Arrays.asList(8,9)).eq("driverId", uid)); + // 跨城订单 + List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().in("state",Arrays.asList(8,9)).eq("driverId", uid)); + // 出租车订单 + List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().in("state",Arrays.asList(8,9)).eq("driverId", uid)); + + + double sum = orderPrivateCars.stream().mapToDouble(OrderPrivateCar::getOrderMoney).sum(); + double sum1 = orderCrossCities.stream().mapToDouble(OrderCrossCity::getOrderMoney).sum(); + double sum2 = orderTaxis.stream().mapToDouble(OrderTaxi::getOrderMoney).sum(); + driverOrderDataVo.setAllOrderMoney(new BigDecimal(sum +sum1+sum2)); + + + + double count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).mapToDouble(OrderPrivateCar::getOrderMoney).sum(); + double count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).mapToDouble(OrderCrossCity::getOrderMoney).sum(); + double count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).mapToDouble(OrderTaxi::getOrderMoney).sum(); + driverOrderDataVo.setTodayOrderMoney(new BigDecimal(count+count1+count2)); + + + Date date = new Date(); + String month = simpleDateFormat1.format(date); + double count3 = orderPrivateCars.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).mapToDouble(OrderPrivateCar::getOrderMoney).sum(); + double count4 = orderCrossCities.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).mapToDouble(OrderCrossCity::getOrderMoney).sum(); + double count5 = orderTaxis.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).mapToDouble(OrderTaxi::getOrderMoney).sum(); + driverOrderDataVo.setMonthOrderMoney(new BigDecimal(count3+count4+count5)); + + String sTime=null; + String eTime=null; + if(ToolUtil.isNotEmpty( time)){ + sTime=time.split(" - ")[0]+" 00:00:00"; + eTime=time.split(" - ")[1]+" 23:59:59"; + } + List<DriverOrderDataNextVo> driverOrderDataNextVoPage = driverServiceMapper.queryOrderMoneyDataFromDriver(sTime, eTime, driverOrderDataVoPage, uid); + List<DriverOrderDataNextVo> driverOrderDataNextVoPage1 = driverServiceMapper.queryOrderMoneyDataFromDriverAll(sTime, eTime, uid); + double sum3 = driverOrderDataNextVoPage1.stream().mapToDouble(DriverOrderDataNextVo::getOrderMoney).sum(); + driverOrderDataVo.setSearchMoney(new BigDecimal(sum3)); + driverOrderDataVoPage.setRecords(driverOrderDataNextVoPage); + driverOrderDataVo.setDriverOrderDataNextVos(driverOrderDataVoPage); + return driverOrderDataVo; + } + @Override + public DriverOrderPromotionDataVo queryOrderPromotionFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid) { + DriverOrderPromotionDataVo driverOrderDataVo = new DriverOrderPromotionDataVo(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM"); + // 总的订单数 + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().in("state",Arrays.asList(8,9)).eq("promotionDriverId", uid)); + // 跨城订单 + List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().in("state",Arrays.asList(8,9)).eq("promotionDriverId", uid)); + // 出租车订单 + List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().in("state",Arrays.asList(8,9)).eq("promotionDriverId", uid)); + + + BigDecimal sum = orderPrivateCars.stream().map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal sum1 = orderCrossCities.stream().map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal sum2 = orderTaxis.stream().map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + driverOrderDataVo.setAllOrderMoney(sum.add(sum1).add(sum2)); + + + + BigDecimal count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + driverOrderDataVo.setTodayOrderMoney(count.add(count1).add(count2)); + + + Date date = new Date(); + String month = simpleDateFormat1.format(date); + BigDecimal count3 = orderPrivateCars.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count4 = orderCrossCities.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count5 = orderTaxis.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + driverOrderDataVo.setMonthOrderMoney(count3.add(count4).add(count5)); + + String sTime=null; + String eTime=null; + if(ToolUtil.isNotEmpty( time)){ + sTime=time.split(" - ")[0]+" 00:00:00"; + eTime=time.split(" - ")[1]+" 23:59:59"; + } + List<DriverOrderDataNextVo> driverOrderDataNextVoPage = driverServiceMapper.queryOrderPromotionFromDriver(sTime, eTime, driverOrderDataVoPage, uid); + List<DriverOrderDataNextVo> driverOrderDataNextVoPage1 =driverServiceMapper.queryOrderPromotionFromDriverAll(sTime, eTime, uid); + double sum3 = driverOrderDataNextVoPage1.stream().mapToDouble(DriverOrderDataNextVo::getOrderMoney).sum(); + driverOrderDataVo.setSearchMoney(new BigDecimal(sum3)); + + driverOrderDataVoPage.setRecords(driverOrderDataNextVoPage); + driverOrderDataVo.setDriverOrderDataNextVos(driverOrderDataVoPage); + return driverOrderDataVo; + } + + /** * 单点登录 * diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PushOrderServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PushOrderServiceImpl.java new file mode 100644 index 0000000..6256d0a --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PushOrderServiceImpl.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.PushOrderMapper; +import com.stylefeng.guns.modular.system.model.PushOrder; +import com.stylefeng.guns.modular.system.service.IPushOrderService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + + +@Service +public class PushOrderServiceImpl extends ServiceImpl<PushOrderMapper, PushOrder> implements IPushOrderService { + + @Resource + private PushOrderMapper pushOrderMapper; + + + /** + * 获取推送配置 + * @param type + * @param pushType + * @return + * @throws Exception + */ + @Override + public List<PushOrder> querys(Integer type, Integer pushType, Integer companyId) throws Exception { + return pushOrderMapper.querys(type, pushType, companyId); + } +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java index d2ac236..ee18e5c 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java @@ -36,6 +36,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; @Service @@ -191,6 +192,8 @@ //添加已收入明细 incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney()); + // qyt 改派直接推送 + pushOrderPrivate(orderPrivateCar,uid); break; case 2: OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId()); @@ -201,6 +204,9 @@ //添加已收入明细 incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney()); + + // qyt 改派直接推送 + pushOrderTaxi(orderTaxi,uid); break; case 4: OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId()); @@ -234,8 +240,7 @@ // jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId()); // } - // qyt 改派直接推送 - pushOrder(); + } @@ -662,12 +667,15 @@ @Autowired private IPushOrderService pushOrderService; + @Autowired + private PushUtil pushUtil; + /** * 推送订单给司机抢单 * @param orderTaxi * @throws Exception */ - public void pushOrder(OrderTaxi orderTaxi, Integer type) throws Exception{ + public void pushOrderTaxi(OrderTaxi orderTaxi, Integer uid) throws Exception{ new Thread(new Runnable() { @Override public void run() { @@ -680,11 +688,12 @@ } Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司 List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数 - for (int i = 1; i <= querys.size(); i++) { + for (int i = 1; i <=6; i++) { PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0); System.out.println("pushOrder:" + pushOrder); //获取空闲司机 List<Driver> list = driverService.queryIdleDriver(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + list = list.stream().filter(e->e.getId()!=uid).collect(Collectors.toList()); if (list.size() > 0) { double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) @@ -706,13 +715,15 @@ } } Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间 - OrderTaxi orderTaxi1 = OrderTaxiServiceImpl.this.selectById(orderTaxi.getId()); + OrderTaxi orderTaxi1 = orderTaxiService.selectById(orderTaxi.getId()); Integer state = orderTaxi1.getState(); if (state != 1) { break; } if (i == querys.size() && state == 1) { pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2); + orderTaxi1.setState(10); + orderTaxiService.updateById(orderTaxi1); orderIds.remove(orderTaxi.getId()); } } @@ -722,4 +733,84 @@ } }).start(); } + + + /** + * 推送抢单数据 + * @param orderPrivateCar + * @throws Exception + */ + public void pushOrderPrivate(OrderPrivateCar orderPrivateCar,Integer uid) throws Exception{ + new Thread(new Runnable() { + @Override + public void run() { + try { + Integer id = orderPrivateCar.getId(); + Integer orderType = orderPrivateCar.getRideType()==1?1:orderPrivateCar.getRideType()==2?9:8; + orderIds.add(orderPrivateCar.getId());//添加记录,防止调用接口重复提醒无人接单 + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); + List<Integer> integers = new ArrayList<>(); + if(ToolUtil.isNotEmpty(vehicle)){ + integers = JSON.parseArray(vehicle).toJavaList(Integer.class); + } + Company query = companyCityService.query(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 + List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 + for(int i = 1; i <= 6; i++){ + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(id); + if (null == orderPrivateCar || orderPrivateCar.getState() > 1) { + break; + } + PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); + System.out.println("pushOrder:"+pushOrder); + int i2 = pushOrder.getPushTime() / 10; + if(i2==0){ + i2=1; + } + for (int i1 = 0; i1 < i2 ; i1++) { + if (orderPrivateCar.getState() > 1) { + break; + } + //获取空闲司机 + List<Driver> list = driverService.queryIdleDriver(orderType, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + list = list.stream().filter(e->e.getId()!=uid).collect(Collectors.toList()); + if (list.size() > 0) { + double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 + int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) + lastIndex = lastIndex == 0 ? list.size() : lastIndex; + list = list.subList(0, lastIndex);//获取空闲司机中占比数据 + for (Driver driver : list) {//开始进行推送 + boolean bo = false; + for (Integer integer : integers) { + if (integer.compareTo(driver.getId()) == 0) { + bo = true; + break; + } + } + if (bo) { + continue; + } + pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime()); + } + } + Thread.sleep(10000);//设置等待时间 + Integer state = orderPrivateCar.getState(); + if (state > 1) { + orderIds.remove(orderPrivateCar.getId()); + return; + } + if (i == querys.size() && state == 1) { + pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); + orderPrivateCar.setState(10); + orderPrivateCarService.updateById(orderPrivateCar); + orderIds.remove(orderPrivateCar.getId()); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } + } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java new file mode 100644 index 0000000..7bd9569 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java @@ -0,0 +1,21 @@ +package com.stylefeng.guns.modular.system.service.impl; + + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.TDriverPromotionActivityMapper; +import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity; +import com.stylefeng.guns.modular.system.service.TDriverPromotionActivityService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 司机推广活动主表 服务实现类 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +@Service +public class TDriverPromotionActivityServiceImpl extends ServiceImpl<TDriverPromotionActivityMapper, TDriverPromotionActivity> implements TDriverPromotionActivityService { + +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java index a7e58bf..6b0eeaf 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java @@ -58,8 +58,84 @@ private Map<String, Timer> taskMap = new HashMap<>();//存储定时推送的定时器 private final String socket_uri = "http://172.21.35.142:6000"; - - + + + // qyt 改派重新推单 + public void pushOrderState(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state, Integer time) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "ORDER_STATUS"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); + map.put("time", time); + if (orderType == 1 && state == 100) { + map.put("carpooling", 1); + map.put("state", 2); + } else { + map.put("state", state); + } + jsonObject.put("data", map); + + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + } + + + /** + * 推单完成后,没有司机接单的推送提醒 qyt + * + * @param type + * @param uid + * @param orderId + * @param orderType + */ + public void pushEndPush(Integer type, Integer uid, Integer orderId, Integer orderType) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "END_PUSH"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); + jsonObject.put("data", map); + + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + } /** * 推送订单状态 * diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java new file mode 100644 index 0000000..e65e84f --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java @@ -0,0 +1,243 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong; + +import com.heredata.hos.HOS; +import com.heredata.hos.HOSClientBuilder; +import com.heredata.hos.model.CreateBucketRequest; +import com.heredata.hos.model.HOSObject; +import com.heredata.hos.model.PutObjectRequest; +import com.heredata.hos.model.PutObjectResult; +import com.heredata.hos.model.bucket.Bucket; +import com.heredata.model.VoidResult; +import com.stylefeng.guns.modular.system.util.SpringContextsUtil; +import lombok.extern.slf4j.Slf4j; + +import java.io.InputStream; + +/** + * OSS 工具类 + * @author zhibing.pu + * @Date 2025/6/23 17:50 + */ +@Slf4j +public class NCOSSUtil { + + private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();; + + /** + * 创建桶 + * @param bucketName + * @return + */ + public static Boolean createBucket(String bucketName) { + /** + * endPoint:HOS的基础路径(公共前缀) + * account:账户的ID + * accessKey:向UAAS服务请求到的access_key + * secretKey:向UAAS服务请求到的secret_key + */ + HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); + try { + // 创建请求对象,并且设置创建桶名为"example"的桶 + CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); + VoidResult result = hos.createBucket(createBucketRequest); + if (result.getResponse().isSuccessful()) { + log.info("创建桶成功:" + bucketName); + return true; + } + } catch (Exception e){ + log.info("创建桶失败:" + bucketName); + e.printStackTrace(); + } + return false; + } + + + /** + * 查询桶详情 + * @param bucketName + * @return + */ + public static Bucket getBucketInfo(String bucketName) { + /** + * endPoint:HOS的基础路径(公共前缀) + * account:账户的ID + * accessKey:向UAAS服务请求到的access_key + * secretKey:向UAAS服务请求到的secret_key + */ + HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); + try { + // 查询桶名为"example"的详情 + Bucket bucket = hos.getBucketInfo(bucketName); + return bucket; + } catch (Exception e){ + e.printStackTrace(); + } + return null; + } + + + /** + * 删除桶 + * @param bucketName + * @return + */ + public static Boolean deleteBucket(String bucketName) { + /** + * endPoint:HOS的基础路径(公共前缀) + * account:账户的ID + * accessKey:向UAAS服务请求到的access_key + * secretKey:向UAAS服务请求到的secret_key + */ + HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); + try { + VoidResult result = hos.deleteBucket(bucketName); + if (result.getResponse().isSuccessful()) { + log.info("删除桶成功:" + bucketName); + return true; + } + } catch (Exception e){ + log.info("删除桶成功:" + bucketName); + e.printStackTrace(); + } + return false; + } + + + /** + * 设置桶策略 + * @param bucketName 桶名 + * @param policyText 策略规则字符串 + * { + * // 策略配置的版本号,由用户定义 + * "Version": "2012-10-17", + * // 策略规则配置,可指定多条策略规则 + * "Statement": [{ + * // 策略规则ID,可用户指定,如不指定则服务自动生成一条 + * "Sid": "sid", + * // 策略规则指定的HOS API接口标识,可参照下表填写 + * "Action": [ + * "action" + * ], + * // 策略规则效果,具体表现为允许或拒绝,有效值为Allow(允许),Deny(拒绝); + * "Effect": "Allow", + * // 策略规则指定的资源参照下面resource配置 + * "Resource": "resource", + * // 策略规则指定的授权人 参照下面Principal配置 + * "Principal": { + * "HWS": [ + * "account_id:root" + * ] + * } + * } + * ] + * } + * @return + */ + public static Boolean setBucketPolicy(String bucketName, String policyText) { + /** + * endPoint:HOS的基础路径(公共前缀) + * account:账户的ID + * accessKey:向UAAS服务请求到的access_key + * secretKey:向UAAS服务请求到的secret_key + */ + HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); + // 桶策略字符串 + try { + VoidResult result = hos.setBucketPolicy(bucketName, policyText); + if (result.getResponse().isSuccessful()) { + log.info("设置桶策略成功:" + bucketName); + return true; + } + } catch (Exception e) { + log.info("设置桶策略失败:" + bucketName); + e.printStackTrace(); + } + return false; + } + + + /** + * 上传对象 + * @param bucketName 桶名称 + * @param key 存储文件名 + * @param inputStream 上传文件流 + * @return 对象唯一标识 + */ + public static String putObject(String bucketName, String key, InputStream inputStream) { + /** + * endPoint:HOS的基础路径(公共前缀) + * account:账户的ID + * accessKey:向UAAS服务请求到的access_key + * secretKey:向UAAS服务请求到的secret_key + */ + HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); + try { + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key , inputStream); + PutObjectResult example = hos.putObject(putObjectRequest); + if (example.getResponse().isSuccessful()) { + log.info("上传对象成功:" + bucketName + "--->" + key); + return example.getETag(); + } + } catch (Exception e) { + log.info("上传对象成功:" + bucketName); + e.printStackTrace(); + } + return null; + } + + + /** + * 查询对象 + * @param bucketName 桶名称 + * @param key 存储文件名 + * @return + */ + public static HOSObject getObject(String bucketName, String key) { + /** + * endPoint:HOS的基础路径(公共前缀) + * account:账户的ID + * accessKey:向UAAS服务请求到的access_key + * secretKey:向UAAS服务请求到的secret_key + */ + HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); + try { + HOSObject example = hos.getObject(bucketName, key); + if (example.getResponse().isSuccessful()) { + log.info("查询对象成功:" + bucketName + "--->" + key); + return example; + } + } catch (Exception e) { + log.info("查询对象失败:" + bucketName); + e.printStackTrace(); + } + return null; + } + + + /** + * 删除对象 + * @param bucketName 桶名称 + * @param key 存储文件名 + * @return + */ + public static Boolean deleteObject(String bucketName, String key) { + /** + * endPoint:HOS的基础路径(公共前缀) + * account:账户的ID + * accessKey:向UAAS服务请求到的access_key + * secretKey:向UAAS服务请求到的secret_key + */ + HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); + try { + VoidResult example = hos.deleteObject(bucketName, key); + if (example.getResponse().isSuccessful()) { + log.info("删除对象成功:" + bucketName + "--->" + key); + return true; + } + } catch (Exception e) { + log.info("删除对象失败:" + bucketName + "--->" + key); + e.printStackTrace(); + } + return false; + } +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java index 4958b9e..8bc51a5 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java @@ -67,7 +67,7 @@ public QianYunTongConfig getQianYunTongConfig() { if("dev".equals(activeProfile)){ this.appkey = "10001104"; - this.privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem"; + this.privateKeyPath = "C:\\Users\\Admin\\Desktop\\private_key_test.pem"; this.userName = "xiaofei"; this.status = "1"; this.setApiUrl("https://test-zhongtai.stqcloud.com:10070"); diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java new file mode 100644 index 0000000..90250c3 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/RongYunUtil.java @@ -0,0 +1,272 @@ +package com.stylefeng.guns.modular.system.util.rongyun; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.util.rongyun.model.CloudRecordingCallback; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.io.*; +import java.net.*; +import java.security.MessageDigest; + +/** + * 融云及时通讯工具类 + */ +@Component +public class RongYunUtil { + + @Value("${rongyun.app_key}") + private String app_key; + + @Value("${rongyun.app_secret}") + private String app_secret; + + + /** + * 注册获取token + * @param userId + * @param name + * @param headUrl + * @return + * @throws Exception + */ + public String getToken(String userId, String name, String headUrl) throws Exception { + String url = "http://api-cn.ronghub.com/user/getToken.json"; + String data = "userId=" + userId + "&name=" + name + "&portraitUri=" + headUrl; + String s = this.pushHttp(url, data); + return s; + } + + + /** + * 刷新用户信息 + * @param userId + * @param name + * @param headUrl + * @throws Exception + */ + public void refresh(String userId, String name, String headUrl) throws Exception { + String url = "http://api-cn.ronghub.com/user/refresh.json"; + String data = "userId=" + userId + "&name=" + name + "&portraitUri=" + headUrl; + String s = this.pushHttp(url, data); + } + + + /** + * 检查用户在线状态 + * @param userId + * @return 1:在线,0:离线 + * @throws Exception + */ + public Integer checkOnline(String userId) throws Exception { + String url = "http://api-cn.ronghub.com/user/checkOnline.json"; + String data = "userId=" + userId; + String s = this.pushHttp(url, data); + JSONObject jsonObject = JSON.parseObject(s); + if(jsonObject.getIntValue("code") == 200){ + return jsonObject.getIntValue("status"); + } + return null; + } + + + /** + * 发送普通消息 + * @param fromUserId + * @param toUserId + * @param objectName + * @param content + * @return + */ + public String sendSms(String fromUserId, String toUserId, String objectName, String content){ + try { + String url = "https://api-cn.ronghub.com/message/private/publish.json"; + String data = "fromUserId=" + URLEncoder.encode(fromUserId, "UTF-8") + "&toUserId=" + URLEncoder.encode(toUserId, "UTF-8") + "&objectName=" + + URLEncoder.encode(objectName, "UTF-8") + "&content=" + URLEncoder.encode(content, "UTF-8") + "&disablePush=0&isIncludeSender=1"; + String s = this.pushHttp(url, data); + return s; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + + + + /** + * 创建 IM 聊天室 + * @param id 房间id长度不超过 64 字节 + * @param name 聊天室名称 + * @return + */ + public Integer ChatRoomCreate(String id, String name){ + String url = "https://api-cn.ronghub.com/chatroom/create.json"; + String data = "chatroom[" + id + "]=" + name; + String s = this.pushHttp(url, data); + JSONObject jsonObject = JSON.parseObject(s); + if(jsonObject.getIntValue("code") == 200){ + return jsonObject.getIntValue("status"); + } + return null; + } + + + /** + * 销毁聊天室 + * @param chatroomId 聊天室id + * @return + */ + public Integer ChatRoomDestroy(String chatroomId){ + String url = "https://api-cn.ronghub.com/chatroom/destroy.json"; + String data = "chatroomId=" + chatroomId; + String s = this.pushHttp(url, data); + JSONObject jsonObject = JSON.parseObject(s); + if(jsonObject.getIntValue("code") == 200){ + return jsonObject.getIntValue("status"); + } + return null; + } + + + + /** + * 聊天室发送文本消息 + * @param userId 发送用户id + * @param chatroomId 聊天室id + * @param content 消息文本内容 + * @return + */ + public Integer ChatRoomPushTxtMessage(String userId, String chatroomId, String content){ + String url = "https://api-cn.ronghub.com/chatroom/destroy.json"; + String data = "fromUserId=" + userId + "&toChatroomId=" + chatroomId + "&objectName=RC:TxtMsg&content=" + content; + String s = this.pushHttp(url, data); + JSONObject jsonObject = JSON.parseObject(s); + if(jsonObject.getIntValue("code") == 200){ + return jsonObject.getIntValue("status"); + } + return null; + } + + + + /** + * 请求接口 + * @param path + * @param json + * @return + */ + public String pushHttp(String path, String json){ + String nonce = String.valueOf(Double.valueOf(Math.random() * 1000000.0D).intValue()); + String timeMillis = String.valueOf(System.currentTimeMillis() / 1000); + String signature = getSha1(app_secret + nonce + timeMillis); + + URL url = null; + try { + url = new URL(path); + HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + connection.setRequestMethod("POST"); + connection.setConnectTimeout(1000 * 30); + connection.setRequestProperty("Host", "api-cn.ronghub.com"); + connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + connection.setRequestProperty("App-Key", app_key); + connection.setRequestProperty("Nonce", nonce); + connection.setRequestProperty("Timestamp", timeMillis); + connection.setRequestProperty("Signature", signature); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + connection.connect(); + DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); + outputStream.write(json.getBytes("UTF-8")); + outputStream.flush(); + outputStream.close(); + + int responseCode = connection.getResponseCode(); + InputStream inputStream = null; + if(responseCode == 403){ + inputStream = connection.getErrorStream(); + } + if(responseCode == 200){ + inputStream = connection.getInputStream(); + } + DataInputStream dataInputStream = new DataInputStream(inputStream); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + int len; + byte[] bytes = new byte[1024]; + while ((len = dataInputStream.read(bytes)) != -1){ + stream.write(bytes, 0, len); + } + return stream.toString(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (ProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + + + public static String getSha1(String str) { + char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f' }; + try { + MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); + mdTemp.update(str.getBytes("UTF-8")); + byte[] md = mdTemp.digest(); + int j = md.length; + char buf[] = new char[j * 2]; + int k = 0; + for (int i = 0; i < j; i++) { + byte byte0 = md[i]; + buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; + buf[k++] = hexDigits[byte0 & 0xf]; + } + return new String(buf); + } catch (Exception e) { + return null; + } + } + + + /** + * 云端录制状态回调 + * @param request + * @return + */ + public static CloudRecordingCallback cloudRecordingCallback(HttpServletRequest request){ + String param = null; + try { + param = getParam(request); + } catch (IOException e) { + e.printStackTrace(); + } + if(ToolUtil.isNotEmpty(param)){ + CloudRecordingCallback cloudRecordingCallback = JSON.parseObject(param, CloudRecordingCallback.class); + return cloudRecordingCallback; + } + return null; + } + + + private static String getParam(HttpServletRequest request) throws IOException { + // 读取参数 + InputStream inputStream; + StringBuilder sb = new StringBuilder(); + inputStream = request.getInputStream(); + String s; + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); + while ((s = in.readLine()) != null) { + sb.append(s); + } + in.close(); + inputStream.close(); + return sb.toString(); + } +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/CloudRecordingCallback.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/CloudRecordingCallback.java new file mode 100644 index 0000000..343fa60 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/CloudRecordingCallback.java @@ -0,0 +1,74 @@ +package com.stylefeng.guns.modular.system.util.rongyun.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @date 2023/4/6 10:29 + */ +@Data +public class CloudRecordingCallback { + /** + * 时间戳,单位为毫秒。 + */ + private Long timestamp; + /** + *回调事件类型,如下: + * 1: 录制开始; + * 2: 录制切片; + * 3: 录制结束; + * 4: 文件上传 + */ + private Integer type; + /** + * 当前使用的 App Key + */ + private String appKey; + /** + * 录制 ID,每次录制任务的唯一标识。如果文件切片,可以通过此 ID 进行关联。 + */ + private String recordId; + /** + * 房间 ID + */ + private String roomId; + /** + * 会话 ID,每次通话的唯一标识。您可以通过融云服务端回调获取该 sessionId + */ + private String sessionId; + /** + * 用户 ID。如果录制模式为 Mix,此字段为空 + */ + private String userId; + /** + * 录制模式,如下: + * 0:音视频 single 模式; + * 1:纯视频 single 模式; + * 2:纯音频 single 模式; + * 3:音视频 mix 模式; + * 4:纯视频 mix 模式; + * 5:纯音频 mix 模式; + * 6:单人 mix 音视频模式。 + */ + private Integer mode; + /** + * 扩展字段,内容为手动录制时传入的 extra 字段的值 + */ + private String extra; + /** + * 状态码,200 为正常 + */ + private Integer code; + /** + * 错误信息。 + */ + private String errorMessage; + /** + * + */ + private Config config; + /** + * + */ + private Output output; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Config.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Config.java new file mode 100644 index 0000000..330f27f --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Config.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.util.rongyun.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @date 2023/4/6 10:48 + */ +@Data +public class Config { + /** + * 录制启动模式: 1 自动启动录制任务 + */ + private Integer trigger; + /** + * Mix模式下布局:2 悬浮布局(默认) 3 自适应布局 + */ + private Integer mixLayout; + /** + * 文件切片时间(分钟) + */ + private Integer slicesMin; + /** + * 设置的音频文件格式 + */ + private String audioFormat; + /** + * 设置的视频文件格式 + */ + private String videoFormat; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Output.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Output.java new file mode 100644 index 0000000..73e66e4 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/rongyun/model/Output.java @@ -0,0 +1,31 @@ +package com.stylefeng.guns.modular.system.util.rongyun.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @date 2023/4/6 10:50 + */ +@Data +public class Output { + /** + * 缓存的文件名。具体请参考「配置云端录制服务」中的切片文件命名规则。 + */ + private String fileName; + /** + * 音频采样率,如 48000。如果当前录制任务没有录制音频,该字段为空。 + */ + private Integer audioSample; + /** + * 视频分辨率,如 640x480。如果当前录制任务没有录制视频,该字段为空。 + */ + private String videoResoulation; + /** + * 切片生成的录制文件大小。 + */ + private Integer fileSize; + /** + * 已上传到的第三方存储的 URL。 + */ + private String fileUrl; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java index cdf3dc6..456478e 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.enums.IdType; import com.stylefeng.guns.modular.system.model.BaseBean; +import java.math.BigDecimal; import java.util.Date; /** @@ -343,6 +344,38 @@ private String splitAllocation; + // 推广应的金额 + private BigDecimal promotionMoney; + + // 推广司机id + private Integer promotionDriverId; + + private String voice; + + public String getVoice() { + return voice; + } + + public void setVoice(String voice) { + this.voice = voice; + } + + public BigDecimal getPromotionMoney() { + return promotionMoney; + } + + public void setPromotionMoney(BigDecimal promotionMoney) { + this.promotionMoney = promotionMoney; + } + + public Integer getPromotionDriverId() { + return promotionDriverId; + } + + public void setPromotionDriverId(Integer promotionDriverId) { + this.promotionDriverId = promotionDriverId; + } + public Integer getId() { return id; } diff --git a/ManagementQYTTravel/guns-admin/pom.xml b/ManagementQYTTravel/guns-admin/pom.xml index 85d100c..c1f9206 100644 --- a/ManagementQYTTravel/guns-admin/pom.xml +++ b/ManagementQYTTravel/guns-admin/pom.xml @@ -256,23 +256,23 @@ <build> <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <configuration> - <fork>true</fork><!-- 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart --> - - </configuration> - - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <skip>true</skip> - </configuration> - </plugin> +<!-- <plugin>--> +<!-- <groupId>org.springframework.boot</groupId>--> +<!-- <artifactId>spring-boot-maven-plugin</artifactId>--> +<!-- <configuration>--> +<!-- <fork>true</fork><!– 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart –>--> +<!-- --> +<!-- </configuration>--> +<!-- --> +<!-- </plugin>--> +<!-- --> +<!-- <plugin>--> +<!-- <groupId>org.apache.maven.plugins</groupId>--> +<!-- <artifactId>maven-surefire-plugin</artifactId>--> +<!-- <configuration>--> +<!-- <skip>true</skip>--> +<!-- </configuration>--> +<!-- </plugin>--> </plugins> <!--打包war包引入本地jar的打包方式--> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java index 8375e18..f8616ef 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java @@ -96,8 +96,7 @@ String onconParam = edu.yale.its.tp.cas.client.Util.getOnconParam(session); onconParam = new String(Base64.decodeBase64(onconParam), "UTF-8"); LoginUser loginUser = JSON.parseObject(onconParam, LoginUser.class); - log.debug("登录账号: " + JSON.toJSONString(loginUser)); - + //获取菜单列表 User user = userMapper.getByAccount(loginUser.getImUser()); if (null == user) { diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java index 4958b9e..0d3ed9b 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java @@ -8,7 +8,6 @@ * @author zhibing.pu * @Date 2025/7/8 11:31 */ -@Data @Component public class QianYunTongConfig { @@ -62,12 +61,107 @@ * 向UAAS服务请求到的secret_key */ private String secretKey; - - + + public String getActiveProfile() { + return activeProfile; + } + + public void setActiveProfile(String activeProfile) { + this.activeProfile = activeProfile; + } + + public String getAppkey() { + return appkey; + } + + public void setAppkey(String appkey) { + this.appkey = appkey; + } + + public String getPrivateKeyPath() { + return privateKeyPath; + } + + public void setPrivateKeyPath(String privateKeyPath) { + this.privateKeyPath = privateKeyPath; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getApiUrl() { + return apiUrl; + } + + public void setApiUrl(String apiUrl) { + this.apiUrl = apiUrl; + } + + public String getBucketName() { + return bucketName; + } + + public void setBucketName(String bucketName) { + this.bucketName = bucketName; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getEndPoint() { + return endPoint; + } + + public void setEndPoint(String endPoint) { + this.endPoint = endPoint; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getAccessKey() { + return accessKey; + } + + public void setAccessKey(String accessKey) { + this.accessKey = accessKey; + } + + public String getSecretKey() { + return secretKey; + } + + public void setSecretKey(String secretKey) { + this.secretKey = secretKey; + } + public QianYunTongConfig getQianYunTongConfig() { if("dev".equals(activeProfile)){ this.appkey = "10001104"; - this.privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem"; + this.privateKeyPath = "C:\\Users\\Admin\\Desktop\\private_key_test.pem"; this.userName = "xiaofei"; this.status = "1"; this.setApiUrl("https://test-zhongtai.stqcloud.com:10070"); -- Gitblit v1.7.1