From adf76f841a890299a4c68826b3b1716f69351dd1 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 09 八月 2023 19:32:16 +0800
Subject: [PATCH] 修改bug和日志时间
---
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java | 242 +++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 228 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 bcc54e8..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,27 +1,43 @@
package com.supersavedriving.driver.modular.system.api;
+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.*;
-import com.supersavedriving.driver.core.common.annotion.ServiceLog;
import com.supersavedriving.driver.core.util.ToolUtil;
import com.supersavedriving.driver.modular.system.service.IDriverService;
import com.supersavedriving.driver.modular.system.service.IOrderService;
import com.supersavedriving.driver.modular.system.util.ResultUtil;
-import com.supersavedriving.driver.modular.system.warpper.*;
import com.supersavedriving.driver.modular.system.warpper.AddOrderWarpper;
import com.supersavedriving.driver.modular.system.warpper.HallOrderList;
import com.supersavedriving.driver.modular.system.warpper.OrderInfoWarpper;
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 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.*;
/**
* 订单控制器
@@ -32,11 +48,19 @@
@RequestMapping("")
public class OrderController {
+ Logger logger = LoggerFactory.getLogger(OrderController.class);
+
@Autowired
private IOrderService orderService;
@Autowired
private IDriverService driverService;
+
+ @Autowired
+ private IRechargeRecordService rechargeRecordService;
+
+ @Autowired
+ private IDivisionRecordService divisionRecordService;
@@ -48,14 +72,14 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResponseWarpper<Long> queryDriverServerOrder(){
+ public ResponseWarpper<Map<String, Object>> queryDriverServerOrder(){
try {
Integer uid = driverService.getUserByRequest();
if(null == uid){
return ResponseWarpper.tokenErr();
}
- Long id = orderService.queryDriverServerOrder(uid);
- return ResponseWarpper.success(id);
+ Map<String, Object> map = orderService.queryDriverServerOrder(uid);
+ return ResponseWarpper.success(map);
}catch (Exception e){
e.printStackTrace();
return new ResponseWarpper(500, e.getMessage());
@@ -71,7 +95,7 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
- public ResponseWarpper driverAddOrder(AddOrderWarpper addOrderWarpper){
+ public ResponseWarpper<Integer> driverAddOrder(AddOrderWarpper addOrderWarpper){
try {
Integer uid = driverService.getUserByRequest();
if(null == uid){
@@ -373,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"));
}
@@ -388,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();
@@ -397,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")
@@ -428,4 +485,161 @@
return new ResponseWarpper(500, e.getMessage());
}
}
+
+
+ /**
+ * 服务录音回调
+ * @param request
+ */
+ @ResponseBody
+ @PostMapping("/base/order/cloudRecordingCallback")
+ public void cloudRecordingCallback(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();
+ 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();
+ }
+
+
+ @ResponseBody
+ @PostMapping("/api/order/openOrderQRCode")
+// @ServiceLog(name = "打开下单二维码操作", url = "/api/order/openOrderQRCode")
+ @ApiOperation(value = "打开下单二维码操作", tags = {"司机端-首页"}, notes = "")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResponseWarpper openOrderQRCode(){
+ try {
+ Integer uid = driverService.getUserByRequest();
+ if(null == uid){
+ return ResponseWarpper.tokenErr();
+ }
+ ResultUtil resultUtil = driverService.openOrderQRCode(uid);
+ return ResponseWarpper.success(resultUtil);
+ }catch (Exception e){
+ e.printStackTrace();
+ return new ResponseWarpper(500, e.getMessage());
+ }
+ }
+
+
+
+ @ResponseBody
+ @PostMapping("/api/order/closeOrderQRCode")
+// @ServiceLog(name = "关闭下单二维码操作", url = "/api/order/closeOrderQRCode")
+ @ApiOperation(value = "关闭下单二维码操作", tags = {"司机端-首页"}, notes = "")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResponseWarpper closeOrderQRCode(){
+ try {
+ Integer uid = driverService.getUserByRequest();
+ if(null == uid){
+ return ResponseWarpper.tokenErr();
+ }
+ ResultUtil resultUtil = driverService.closeOrderQRCode(uid);
+ return ResponseWarpper.success(resultUtil);
+ }catch (Exception e){
+ e.printStackTrace();
+ 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