Pu Zhibing
2024-11-15 b9a57ab37dc80cebe8129ea7833751718d89a84a
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/SettlementRecordController.java
@@ -1,9 +1,13 @@
package com.stylefeng.guns.modular.api;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.MD5Util;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.model.SettlementRecord;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.ISettlementRecordService;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackRequest;
import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackResponse;
@@ -14,6 +18,7 @@
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.web.bind.annotation.*;
@@ -25,6 +30,7 @@
 * @author zhibing.pu
 * @Date 2023/8/17 9:39
 */
@Slf4j
@RestController
@RequestMapping("")
public class SettlementRecordController {
@@ -34,6 +40,12 @@
    @Autowired
    private IDriverService driverService;
    @Autowired
    private RedisUtil redisUtil;
    @ResponseBody
@@ -72,6 +84,13 @@
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            String format = String.format("uid=%s&payType=%s&language=%s", uid, payType, language);
            String key = MD5Util.encrypt(format);
            String value = redisUtil.getValue(key);
            if(ToolUtil.isNotEmpty(value) && (System.currentTimeMillis() - Long.valueOf(value)) <= 1000){
                return ResultUtil.error(language == 1 ? "请勿重复操作" : language == 2 ? "Don't repeat the operation" : "Ne répétez pas l’opération");
            }
            redisUtil.setStrValue(key, System.currentTimeMillis() + "", 5);
            return settlementRecordService.paymentSettlementAmount(uid, payType, bankCardId, language);
        }catch (Exception e){
            e.printStackTrace();
@@ -83,7 +102,7 @@
    @ResponseBody
    @PostMapping("/api/settlementRecord/queryHistoricalSettlement")
    @ApiOperation(value = "获取结算历史记录", tags = {"司机端-个人中心"}, notes = "")
    @ApiOperation(value = "获取结算历史记录【2.0】", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"),
            @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"),
@@ -137,8 +156,9 @@
     * @return
     */
    @ResponseBody
    @PostMapping("/base/settlementRecord/querySettlementAmount")
    @PostMapping("/base/settlementRecord/paymentSettlementAmountCallback")
    public CallbackResponse paymentSettlementAmountCallback(@RequestBody CallbackRequest callbackRequest){
        log.info("结算支付回调结果:{}", JSON.toJSONString(callbackRequest));
        CallbackResponse callbackResponse = new CallbackResponse();
        try {
            /**
@@ -158,13 +178,17 @@
                String order_id = payments.getPayer_transaction_id();
                if(ToolUtil.isNotEmpty(out_trade_no)){
                    Integer language = Integer.valueOf(out_trade_no.substring(17, 18));
                    Integer id = Integer.valueOf(out_trade_no.substring(18));
                    Integer payType = Integer.valueOf(out_trade_no.substring(18, 19));
                    Integer id = Integer.valueOf(out_trade_no.substring(19));
                    SettlementRecord settlementRecord = settlementRecordService.selectById(id);
                    settlementRecord.setPaymentStatus(2);
                    settlementRecord.setPayTime(new Date());
                    settlementRecord.setCode(order_id);
                    settlementRecordService.updateById(settlementRecord);
                    List<SettlementRecord> settlementRecords = settlementRecordService.selectList(new EntityWrapper<SettlementRecord>().eq("driverId", id).eq("paymentStatus", 1));
                    for (SettlementRecord settlementRecord : settlementRecords) {
                        settlementRecord.setPayType(payType);
                        settlementRecord.setPaymentStatus(2);
                        settlementRecord.setPayTime(new Date());
                        settlementRecord.setCode(order_id);
                        settlementRecordService.updateById(settlementRecord);
                    }
                    callbackResponse.setCheckout_request_id(order_id);
                    callbackResponse.setMerchant_transaction_id(out_trade_no);
@@ -182,6 +206,8 @@
        }catch (Exception e){
            e.printStackTrace();
        }
        log.info("结算支付回调结果处理结束:{}", JSON.toJSONString(callbackResponse));
        return callbackResponse;
    }
}