From c4af2be6090d6572d823ddea18d2b8bde78a0993 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 19 七月 2023 15:09:05 +0800 Subject: [PATCH] 处理用户端重复点击下单 --- user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java | 54 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 31 insertions(+), 23 deletions(-) diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java index d440b13..bbc9e0c 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java @@ -18,12 +18,16 @@ 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.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -35,6 +39,8 @@ @RestController @RequestMapping("") public class OrderController { + + Logger logger = LoggerFactory.getLogger(OrderController.class); @Autowired private IOrderService orderService; @@ -59,6 +65,9 @@ @Autowired private IAccountChangeDetailService accountChangeDetailService; + + @Autowired + private IDivisionRecordService divisionRecordService; @@ -247,7 +256,7 @@ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "long"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) - public ResponseWarpper<OrderPriceWarpper> queryOrderPrice(Long orderId){ + public ResponseWarpper<OrderPriceInfoWarpper> queryOrderPrice(Long orderId){ if(null == orderId){ return ResponseWarpper.success(ResultUtil.paranErr("orderId")); } @@ -256,7 +265,7 @@ if(null == uid){ return ResponseWarpper.success(ResultUtil.tokenErr()); } - OrderPriceWarpper orderPriceWarpper = orderService.queryOrderPrice(uid, orderId); + OrderPriceInfoWarpper orderPriceWarpper = orderService.queryOrderPrice(uid, orderId); return ResponseWarpper.success(orderPriceWarpper); }catch (Exception e){ e.printStackTrace(); @@ -349,7 +358,6 @@ /** * 订单微信支付回调处理 - * @param request * @param response */ @ResponseBody @@ -367,9 +375,9 @@ if(2 == status){ Order order = orderService.selectById(orderId); AccountChangeDetail accountChangeDetail = accountChangeDetailService.selectById(parameter2); - Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData(); + Double m = new BigDecimal(accountChangeDetail.getOldData()).subtract(new BigDecimal(accountChangeDetail.getNewData())).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); AppUser appUser1 = appUserService.selectById(order.getUserId()); - appUser1.setAccountBalance(appUser1.getAccountBalance() + m); + appUser1.setAccountBalance(new BigDecimal(appUser1.getAccountBalance()).add(new BigDecimal(m)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); appUserService.updateById(appUser1); accountChangeDetailService.deleteById(accountChangeDetail.getId()); System.err.println("支付失败"); @@ -408,7 +416,7 @@ JSONObject jsonObject = JSON.parseObject(execute.getResult()); Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败 if(2 == status){ - System.err.println("转账失败"); + logger.warn("转账失败"); return; } String parameter1 = jsonObject.getString("parameter1"); @@ -421,7 +429,7 @@ out.flush(); out.close(); }else{ - System.err.println("转账失败:" + execute.getMsg()); + logger.warn("转账失败:" + execute.getMsg()); return; } }catch (Exception e){ @@ -445,44 +453,44 @@ JSONObject jsonObject = JSON.parseObject(execute.getResult()); Integer status = jsonObject.getInteger("status"); if(2 == status){ - System.err.println("异步分账回调异常"); + logger.warn("异步分账回调异常"); return; } String merOrderId = jsonObject.getString("merOrderId"); - String orderId = jsonObject.getString("parameter1"); + String divisionRecordId = jsonObject.getString("parameter1"); + DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId); + if(divisionRecord.getState() == 2){ + + } + //确认收货 new Timer().schedule(new TimerTask() { @Override public void run() { - Order order = orderService.selectById(orderId); - List<Revenue> revenues = revenueService.selectList(new EntityWrapper<Revenue>().eq("userType", 2).eq("orderId", order.getId())); Receive receive = new Receive();//确认收货 receive.setOriginalMerOrderId(merOrderId); - receive.setRcvAmount(String.valueOf(order.getPayMoney() * 100)); + receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); List<ReceiveUser> splitList = new ArrayList<>(); - for (Revenue revenue : revenues) { - Driver driver = driverService.selectById(revenue.getUserId()); - ReceiveUser receiveUser = new ReceiveUser(); - receiveUser.setSplitUserId(driver.getMerchantNumber()); - receiveUser.setRcvSplitAmount(revenue.getAmount().toString()); - splitList.add(receiveUser); - } + 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())){ - System.err.println("确认收货" + execute.getMsg()); + logger.warn("确认收货" + execute.getMsg()); } JSONObject jsonObject = JSON.parseObject(execute.getResult()); String status = jsonObject.getString("status"); if("2".equals(status)){ - System.err.println("确认收货失败"); + logger.warn("确认收货失败"); } if("0".equals(status)){ - System.err.println("确认收货处理中"); + logger.warn("确认收货处理中"); } } - }, 15000); + }, 60000); response.setStatus(200); PrintWriter out = response.getWriter(); out.print("OK"); -- Gitblit v1.7.1