From c18ec3846c8483975de2224c1ecac9470e9b2804 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 16 八月 2023 19:21:36 +0800 Subject: [PATCH] 同步代码 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java | 188 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 178 insertions(+), 10 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java index 559ced8..08187f8 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java @@ -1,8 +1,20 @@ package com.supersavedriving.driver.modular.system.api; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.supersavedriving.driver.modular.system.model.DivisionRecord; import com.supersavedriving.driver.modular.system.model.Driver; import com.supersavedriving.driver.modular.system.model.Order; +import com.supersavedriving.driver.modular.system.model.RechargeRecord; +import com.supersavedriving.driver.modular.system.service.IDivisionRecordService; +import com.supersavedriving.driver.modular.system.service.IRechargeRecordService; +import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse; +import com.supersavedriving.driver.modular.system.util.MallBook.model.Receive; +import com.supersavedriving.driver.modular.system.util.MallBook.model.ReceiveUser; +import com.supersavedriving.driver.modular.system.util.MallBook.util.RSASignature; +import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest; +import com.supersavedriving.driver.modular.system.util.PushUtil; import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil; import com.supersavedriving.driver.modular.system.util.rongyun.model.CloudRecordingCallback; import com.supersavedriving.driver.modular.system.warpper.*; @@ -15,21 +27,21 @@ import com.supersavedriving.driver.modular.system.warpper.OrderInfoWarpper; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 订单控制器 @@ -40,6 +52,8 @@ @RequestMapping("") public class OrderController { + Logger logger = LoggerFactory.getLogger(OrderController.class); + @Autowired private IOrderService orderService; @@ -47,7 +61,13 @@ private IDriverService driverService; @Autowired - private RongYunUtil rongYunUtil; + private IRechargeRecordService rechargeRecordService; + + @Autowired + private IDivisionRecordService divisionRecordService; + + @Autowired + private PushUtil pushUtil; @@ -248,9 +268,10 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "long"), @ApiImplicitParam(value = "原因", name = "cause", required = true, dataType = "string"), + @ApiImplicitParam(value = "phone", name = "phone", required = false, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) - public ResponseWarpper transferOrder(Long orderId, String cause){ + public ResponseWarpper transferOrder(Long orderId, String cause,String phone){ if(ToolUtil.isEmpty(orderId)){ return ResponseWarpper.success(ResultUtil.paranErr("orderId")); } @@ -262,12 +283,37 @@ if(null == uid){ return ResponseWarpper.tokenErr(); } - ResultUtil resultUtil = orderService.transferOrder(uid, orderId, cause); + ResultUtil resultUtil = orderService.transferOrder(uid, orderId, cause,phone); return ResponseWarpper.success(resultUtil); }catch (Exception e){ e.printStackTrace(); return new ResponseWarpper(500, e.getMessage()); } + } + @ResponseBody + @PostMapping("/api/order/transferOrderVerify") +// @ServiceLog(name = "司机转单操作", url = "/api/order/transferOrder") + @ApiOperation(value = "司机转单操作验证", tags = {"司机端-服务中"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "phone", name = "phone", required = false, dataType = "string"), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResponseWarpper transferOrderVerify(String phone){ + if(phone!=null && !"".equals(phone)) { + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("phone", phone)); + if (drivers.size() == 0) { + return new ResponseWarpper(500,"暂无该司机,无法转单"); + } else { + Driver driver = drivers.get(0); + if (driver.getServerStatus() != 1) { + return new ResponseWarpper(500,"司机正在服务中,无法转单。"); + } + if (driver.getStatus() != 1) { + return new ResponseWarpper(500,"该司机已被冻结,无法转单。"); + } + } + } + return ResponseWarpper.success(); } @@ -409,7 +455,39 @@ } + /** + * 转账回调 + * @param execute + * @param response + */ + @ResponseBody + @PostMapping("/base/order/zhaunzhangCallback") + public void zhaunzhangCallback(@RequestBody InterfaceResponse execute, HttpServletResponse response){ + try { + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败 + if(2 == status){ + System.err.println("转账失败"); + return; + } + String parameter1 = jsonObject.getString("parameter1"); + RechargeRecord rechargeRecord = rechargeRecordService.selectById(parameter1); + + response.setStatus(200); + PrintWriter out = response.getWriter(); + out.print("OK"); + out.flush(); + out.close(); + }else{ + System.err.println("转账失败:" + execute.getMsg()); + return; + } + }catch (Exception e){ + e.printStackTrace(); + } + } @ResponseBody @PostMapping("/api/order/queryDriverOrderList") @@ -520,4 +598,94 @@ return new ResponseWarpper(500, e.getMessage()); } } + + + + /** + * 异步分账回调 + */ + @ResponseBody + @PostMapping("/base/order/ledgerCallback") + public void ledgerCallback(@RequestBody InterfaceResponse execute, HttpServletResponse response){ + try{ + // 验签 + boolean verify = RSASignature.validate(execute.content(), execute.getSign()); + if (verify) {//验签成功业务处理逻辑 + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + Integer status = jsonObject.getInteger("status"); + if(2 == status){ + logger.warn("异步分账回调异常"); + return; + } + String merOrderId = jsonObject.getString("merOrderId"); + String divisionRecordId = jsonObject.getString("parameter1"); + DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId); + if(divisionRecord.getState() == 2){ + response.setStatus(200); + PrintWriter out = response.getWriter(); + out.print("OK"); + out.flush(); + out.close(); + return; + } + divisionRecord.setMerOrderId(merOrderId); + divisionRecord.setPayTime(new Date()); + divisionRecord.setState(2); + divisionRecordService.updateById(divisionRecord); + + //确认收货 + new Timer().schedule(new TimerTask() { + @Override + public void run() { + Receive receive = new Receive();//确认收货 + receive.setOriginalMerOrderId(merOrderId); + receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); + List<ReceiveUser> splitList = new ArrayList<>(); + ReceiveUser receiveUser = new ReceiveUser(); + receiveUser.setSplitUserId(divisionRecord.getMerchantNumber()); + receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); + splitList.add(receiveUser); + receive.setSplitList(splitList); + TrhRequest<Receive> request1 = new TrhRequest(); + InterfaceResponse execute = request1.execute(receive, Receive.SERVICE_CODE); + if(!"0000".equals(execute.getCode())){ + logger.warn("确认收货" + execute.getMsg()); + } + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + String status = jsonObject.getString("status"); + if("2".equals(status)){ + logger.warn("确认收货失败"); + } + if("0".equals(status)){ + logger.warn("确认收货处理中"); + } + } + }, 60000); + response.setStatus(200); + PrintWriter out = response.getWriter(); + out.print("OK"); + out.flush(); + out.close(); + } + } else {//验签失败业务处理逻辑 + logger.warn("支付回调验签失败"); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 管理后台调用推送 + * @param id + * @param type + * @param pushOrderInfoWarpper + */ + @ResponseBody + @PostMapping("/base/order/pushOrderInfo") + public void pushOrderInfo(Integer id, Integer type, PushOrderInfoWarpper pushOrderInfoWarpper){ + pushUtil.pushOrderInfo(id, type, pushOrderInfoWarpper); + } } -- Gitblit v1.7.1