From 572e818c0a74fc0faf4a10928ab1c2cb4b6bd266 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 19 七月 2023 15:01:33 +0800
Subject: [PATCH] 修改重复完成订单bug修改
---
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 158 insertions(+), 14 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 8458ebb..86f53e9 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,6 +1,17 @@
package com.supersavedriving.driver.modular.system.api;
-import com.supersavedriving.driver.modular.system.model.Driver;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.supersavedriving.driver.modular.system.model.DivisionRecord;
+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.rongyun.RongYunUtil;
import com.supersavedriving.driver.modular.system.util.rongyun.model.CloudRecordingCallback;
import com.supersavedriving.driver.modular.system.warpper.*;
@@ -14,15 +25,19 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.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 java.util.List;
-import java.util.Map;
+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.*;
/**
* 订单控制器
@@ -33,6 +48,8 @@
@RequestMapping("")
public class OrderController {
+ Logger logger = LoggerFactory.getLogger(OrderController.class);
+
@Autowired
private IOrderService orderService;
@@ -40,7 +57,10 @@
private IDriverService driverService;
@Autowired
- private RongYunUtil rongYunUtil;
+ private IRechargeRecordService rechargeRecordService;
+
+ @Autowired
+ private IDivisionRecordService divisionRecordService;
@@ -377,10 +397,11 @@
@ApiOperation(value = "服务完成后修改订单状态", tags = {"司机端-服务中"}, notes = "")
@ApiImplicitParams({
@ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "long"),
- @ApiImplicitParam(value = "107(线上支付),108(完成线下支付)", name = "state", required = true, dataType = "int"),
+ @ApiImplicitParam(value = "支付方式(1=线上,2=线下)", name = "payType", required = true, dataType = "int"),
+ @ApiImplicitParam(value = "107(待支付),108(已完成)", name = "state", required = true, dataType = "int"),
@ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResponseWarpper setOrderStatus(Long orderId, Integer state){
+ public ResponseWarpper setOrderStatus(Long orderId, Integer payType, Integer state){
if(ToolUtil.isEmpty(orderId)){
return ResponseWarpper.success(ResultUtil.paranErr("orderId"));
}
@@ -392,7 +413,7 @@
if(null == uid){
return ResponseWarpper.tokenErr();
}
- ResultUtil resultUtil = orderService.setOrderStatus(uid, orderId, state);
+ ResultUtil resultUtil = orderService.setOrderStatus(uid, orderId, payType, state);
return ResponseWarpper.success(resultUtil);
}catch (Exception e){
e.printStackTrace();
@@ -401,7 +422,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")
@@ -440,9 +493,11 @@
*/
@ResponseBody
@PostMapping("/base/order/cloudRecordingCallback")
- public void cloudRecordingCallback(HttpServletRequest request){
+ public void cloudRecordingCallback(HttpServletRequest request, HttpServletResponse response){
CloudRecordingCallback cloudRecordingCallback = RongYunUtil.cloudRecordingCallback(request);
- System.err.println("-------------------云端录制状态回调!-------------------");
+ 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;
@@ -450,8 +505,20 @@
Integer type = cloudRecordingCallback.getType();
if(4 == type){//文件上传
String fileUrl = cloudRecordingCallback.getOutput().getFileUrl();
- System.err.println("文件上传完毕:" + fileUrl);
+ String roomId = cloudRecordingCallback.getRoomId();
+ Order order = orderService.selectById(roomId);
+ order.setRouteRecord(fileUrl);
+ orderService.updateById(order);
}
+ PrintWriter out = null;
+ try {
+ out = response.getWriter();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ out.print("OK");
+ out.flush();
+ out.close();
}
@@ -498,4 +565,81 @@
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();
+ }
+ }
}
--
Gitblit v1.7.1