server/services/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
@@ -3,11 +3,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.doumee.dao.business.model.Goodsorder; import com.github.yulichang.base.MPJBaseMapper; /** * @author T14 */ public interface GoodsorderMapper extends BaseMapper<Goodsorder> { public interface GoodsorderMapper extends MPJBaseMapper<Goodsorder> { server/services/src/main/java/com/doumee/dao/business/model/WxBill.java
@@ -69,6 +69,22 @@ @ApiModelProperty(value = "自行车收入", example = "1") @ExcelColumn(name="自行车收入") private BigDecimal bikeFee; @ApiModelProperty(value = "套餐收入", example = "1") @ExcelColumn(name="套餐收入") private BigDecimal discountFee; @ApiModelProperty(value = "骑行订单退款", example = "1") @ExcelColumn(name="骑行订单退款") private BigDecimal bikeRefundFee; @ApiModelProperty(value = "套餐卡退款总金额", example = "1") @ExcelColumn(name="套餐卡退款总金额") private BigDecimal discountRefundFee; @ApiModelProperty(value = "骑行订单退款手续费", example = "1") @ExcelColumn(name="骑行订单退款手续费") private BigDecimal bikeRefundCmmsAmt; @ApiModelProperty(value = "套餐卡退款总金额手续费", example = "1") @ExcelColumn(name="套餐卡退款总金额手续费") private BigDecimal discountRefundCmmsAmt; @ApiModelProperty(value = "同步微信账单日期", example = "2023-10-08") @TableField(exist = false) @JsonFormat(pattern = "yyyy-MM-dd") server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderTotalDataVO.java
@@ -19,8 +19,12 @@ @ApiModelProperty(value = "支付押金",example = "0") private BigDecimal payMoney; @ApiModelProperty(value = "套餐卡收入",example = "0") private BigDecimal discountMoney; @ApiModelProperty(value = "支付交易笔数",example = "0") private int payNum; @ApiModelProperty(value = "套餐卡交易笔数",example = "0") private int discountNum; @ApiModelProperty(value = "退款",example = "0") private BigDecimal refundMoney; server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1016,6 +1016,7 @@ model.setPayMoney(new BigDecimal(0.00)); model.setRefundMoney(new BigDecimal(0.00)); model.setClosedMoney(new BigDecimal(0.00)); model.setDiscountMoney(new BigDecimal(0.00)); model.setUnClosedMoney(new BigDecimal(0.00)); model.setClosedNum(0); model.setUnClosedNum(0); @@ -1030,12 +1031,14 @@ } queryWrapper.lambda().eq(Goodsorder::getPayStatus, Constants.ONE);//已支付 queryWrapper.lambda().eq(Goodsorder::getIsdeleted, Constants.ZERO); queryWrapper.lambda().groupBy(Goodsorder::getStatus); queryWrapper.select( "status ","count(id) as count_num" queryWrapper.lambda().groupBy(Goodsorder::getStatus,Goodsorder::getType); queryWrapper.select( "type","status ","count(id) as count_num" ,"sum(money) as money","sum(close_money) as close_money" ); //按订单状态分组统计 List<Goodsorder> detailList = goodsorderMapper.selectList(queryWrapper); for(Goodsorder goodsorder : detailList){ if(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)){ //如果是骑行订单押金,计算骑行收入 if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.CLOSE.getKey()){ //已结算 model.setClosedNum(model.getClosedNum()+goodsorder.getCountNum()); @@ -1052,6 +1055,12 @@ model.setPayNum(model.getPayNum()+goodsorder.getCountNum()); model.setPayMoney(model.getPayMoney().add(Constants.translateMoney(goodsorder.getMoney()))); } }else{ //套餐卡收入累计 (交易笔数和交易金额) model.setDiscountNum(model.getDiscountNum()+goodsorder.getCountNum()); model.setDiscountMoney(model.getDiscountMoney().add(Constants.translateMoney(goodsorder.getMoney()))); } } QueryWrapper<Refund> queryWrapper2 = new QueryWrapper<>(); if(Objects.nonNull(param.getStartDate())) { server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
@@ -9,6 +9,7 @@ import com.doumee.core.utils.Utils; import com.doumee.core.wx.WxMiniConfig; import com.doumee.core.wx.WxPayProperties; import com.doumee.dao.business.GoodsorderMapper; import com.doumee.dao.business.WxBillDetailMapper; import com.doumee.dao.business.WxBillMapper; import com.doumee.dao.business.model.Goodsorder; @@ -46,6 +47,8 @@ @Autowired private WxBillMapper wxBillMapper; @Autowired private GoodsorderMapper goodsorderMapper; @Autowired private WxBillDetailMapper wxBillDetailMapper; @Override @@ -262,6 +265,11 @@ bill.setSumRefundCmmsAmt(new BigDecimal(0.00)); bill.setTotal(new BigDecimal(0.00)); bill.setBikeFee(new BigDecimal(0.00)); bill.setDiscountFee(new BigDecimal(0.00)); bill.setBikeRefundFee(new BigDecimal(0.00)); bill.setDiscountRefundFee(new BigDecimal(0.00)); bill.setDiscountRefundCmmsAmt(new BigDecimal(0.00)); bill.setBikeRefundCmmsAmt(new BigDecimal(0.00)); return bill; } @Override @@ -427,6 +435,9 @@ detail.setRefundApplyDate(DateUtil.getDateFromString2(info.getRefundTime())); //申请退款时间 //计算自行车收入,匹配来自自行车小程序的所有支付成功和退款成功的金额,作为自行车收入(累计收款金额-累计退款成功金额) if(StringUtils.equals(detail.getAppid(), WxMiniConfig.wxPayV2Service.getConfig().getSubAppId())){ Goodsorder order = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda() .eq(Goodsorder::getId,info.getOutTradeNo())); if(Constants.equalsInteger(order.getType(),Constants.ZERO)){ //自行车收入累计收款金额(支付成功总金额-退款总金额) if(StringUtils.equals(info.getTradeState(),"SUCCESS")){ //如果是交易(包含手续费) @@ -435,8 +446,24 @@ }else if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){ //如果退款成功,扣除退款金额(包含手续费) bill.setBikeFee(bill.getBikeFee().subtract(detail.getRefundFee()) ); bill.setBikeRefundFee(bill.getBikeRefundFee().add(detail.getRefundFee()) ); bill.setBikeRefundCmmsAmt(bill.getBikeRefundCmmsAmt().add(detail.getCmmsAmt()) ); // bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) ); } }else{ //自行车收入累计收款金额(支付成功总金额-退款总金额) if(StringUtils.equals(info.getTradeState(),"SUCCESS")){ //如果是交易(包含手续费) bill.setDiscountFee(bill.getDiscountFee().add(detail.getSettlementTotalFee())); // bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) ); }else if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){ //如果退款成功,扣除退款金额(包含手续费) bill.setDiscountFee(bill.getDiscountFee().subtract(detail.getRefundFee()) ); bill.setDiscountRefundFee(bill.getDiscountRefundFee().add(detail.getRefundFee()) ); bill.setDiscountRefundCmmsAmt(bill.getDiscountRefundCmmsAmt().add(detail.getCmmsAmt()) ); // bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) ); } } } detailList.add(detail); }