Pu Zhibing
7 天以前 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/SettlementRecordController.java
@@ -1,9 +1,14 @@
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.IIncomeService;
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,9 +19,11 @@
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.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
@@ -25,6 +32,7 @@
 * @author zhibing.pu
 * @Date 2023/8/17 9:39
 */
@Slf4j
@RestController
@RequestMapping("")
public class SettlementRecordController {
@@ -34,6 +42,15 @@
    @Autowired
    private IDriverService driverService;
    @Autowired
    private RedisUtil redisUtil;
    @Resource
    private IIncomeService incomeService;
    @ResponseBody
@@ -72,6 +89,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,19 +107,19 @@
    @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"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<QueryHistoricalSettlement>> queryHistoricalSettlement(Integer pageNum, Integer size, HttpServletRequest request){
    public ResultUtil<List<QueryHistoricalSettlement>> queryHistoricalSettlement(Integer language, Integer pageNum, Integer size, HttpServletRequest request){
        try {
            Integer uid = driverService.getUserIdFormRedis(request);
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            List<QueryHistoricalSettlement> queryHistoricalSettlements = settlementRecordService.queryHistoricalSettlement(uid, pageNum, size);
            List<QueryHistoricalSettlement> queryHistoricalSettlements = settlementRecordService.queryHistoricalSettlement(language, uid, pageNum, size);
            return ResultUtil.success(queryHistoricalSettlements);
        }catch (Exception e){
            e.printStackTrace();
@@ -137,8 +161,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 +183,21 @@
                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);
                    }
                    //添加司机结算的平台收入记录
                    if(settlementRecords.size() > 0){
                        incomeService.saveData(1, 1, 8, id, null, payments.getAmount_paid());
                    }
                    callbackResponse.setCheckout_request_id(order_id);
                    callbackResponse.setMerchant_transaction_id(out_trade_no);
@@ -182,6 +215,8 @@
        }catch (Exception e){
            e.printStackTrace();
        }
        log.info("结算支付回调结果处理结束:{}", JSON.toJSONString(callbackResponse));
        return callbackResponse;
    }
}