ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/FinanceController.java
@@ -1,11 +1,21 @@ package com.ruoyi.web.controller.system; import com.ruoyi.system.mapper.WithdrawMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.pojo.dto.FinanceFlowsDTO; import com.ruoyi.system.pojo.dto.WithDrawAgreeDTO; import com.ruoyi.system.pojo.dto.WithDrawRefuseDTO; import com.ruoyi.system.pojo.dto.WithdrawPageDTO; import com.ruoyi.system.pojo.vo.FinanceFlowsPageVO; import com.ruoyi.system.pojo.vo.FinanceFlowsTopVO; import com.ruoyi.system.pojo.vo.WithdrawPageVO; import com.ruoyi.system.service.OrderService; import com.ruoyi.system.service.WithdrawService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -17,28 +27,61 @@ @Resource private WithdrawService withdrawService; @Resource private OrderService orderService; /** * 财务流水-顶部 */ @PostMapping("/top") @ApiOperation(value = "财务流水-顶部") @PreAuthorize("@ss.hasPermi('finance:flows')") public R<FinanceFlowsTopVO> top(){ return R.ok(orderService.financeTop()); } /** * 财务流水-分页 */ @PostMapping("/flows/page") @ApiOperation(value = "财务流水-分页") @PreAuthorize("@ss.hasPermi('finance:flows')") public R<IPage<FinanceFlowsPageVO>> flowsPage(@RequestBody FinanceFlowsDTO dto){ return R.ok(orderService.flowsPage(dto)); } /** * 提现申请-分页 */ @PostMapping("/withdraw/page") @ApiOperation(value = "提现申请-分页") @PreAuthorize("@ss.hasPermi('finance:apply')") public R<IPage<WithdrawPageVO>> withdrawPage(@RequestBody WithdrawPageDTO dto){ return R.ok(withdrawService.withdrawPage(dto)); } /** * 同意 */ @PutMapping("/withdraw/agree") @ApiOperation(value = "提现申请-同意") @PreAuthorize("@ss.hasPermi('finance:flows')") public R<Void> agree(@RequestBody WithDrawAgreeDTO dto){ withdrawService.agree(dto); return R.ok(); } /** * 拒绝 */ @PutMapping("/withdraw/refuse") @ApiOperation(value = "提现申请-拒绝") @PreAuthorize("@ss.hasPermi('finance:flows')") public R<Void> refuse(@RequestBody WithDrawRefuseDTO dto){ withdrawService.refuse(dto); return R.ok(); } } ruoyi-common/src/main/java/com/ruoyi/common/utils/wx/PaymentUtil.java
@@ -14,24 +14,24 @@ @Slf4j public class PaymentUtil { //微信公众号、微信小程序、微信 APP+/H5、云微小程序支付 private static final String appId = "wxdeed472c98e42a54"; //todo 商户号配置 微信公众号、微信小程序、微信 APP+/H5、云微小程序支付 private static final String appId = ""; /** * 商户密钥 */ private static final String key = "925899fcc374430f9e4b4ba3db05b448"; private static final String key = ""; /** * 商户号 */ private static final String merchantNo = "888122600004175"; private static final String merchantNo = ""; /** * 平台-报备商户号 */ private static final String sysTradeMerchantNo = "777168500885852"; private static final String sysTradeMerchantNo = ""; /** * 支付回调地址 */ private static final String callbackUrl = "https://www.qijisheng.top"; private static final String callbackUrl = ""; /** ruoyi-system/src/main/java/com/ruoyi/system/domain/AccountDetail.java
@@ -36,6 +36,10 @@ @ApiModelProperty(value = "分类:1提现 2售卖商品 3平台退款 4分佣") private Integer category; @TableField("source_id") @ApiModelProperty(value = "来源 下单用户id 1为提现表id") private String sourceId; @TableField("status") @ApiModelProperty(value = "状态:1待审核 2通过(完成) 3拒绝(取消)") private Integer status; ruoyi-system/src/main/java/com/ruoyi/system/domain/Message.java
@@ -35,4 +35,8 @@ @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @TableField("order_id") @ApiModelProperty(value = "关联订单ID") private String orderId; } ruoyi-system/src/main/java/com/ruoyi/system/domain/Order.java
@@ -81,4 +81,13 @@ @ApiModelProperty(value = "完成时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime sellerFinishTime; @TableField("is_refund") @ApiModelProperty("是否退款(1是,0-否)") private Integer isRefund; @TableField(value = "refund_time") @ApiModelProperty(value = "退款时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime refundTime; } ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderMapper.java
@@ -4,11 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.system.domain.Agreement; import com.ruoyi.system.domain.Order; import com.ruoyi.system.pojo.dto.FinanceFlowsDTO; import com.ruoyi.system.pojo.dto.OrderPageDTO; import com.ruoyi.system.pojo.model.DailyStatistics; import com.ruoyi.system.pojo.vo.OrderDetailVO; import com.ruoyi.system.pojo.vo.OrderPageVO; import com.ruoyi.system.pojo.vo.TodayStatisticsVO; import com.ruoyi.system.pojo.vo.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -27,4 +26,10 @@ TodayStatisticsVO today(@Param("startTime")LocalDateTime startTime,@Param("endTime") LocalDateTime endTime); List<DailyStatistics> getDailyStatistics(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime); FinanceFlowsTopVO financeTop(); IPage<FinanceFlowsPageVO> flowsPage(@Param("page") IPage<FinanceFlowsPageVO> page, @Param("dto")FinanceFlowsDTO dto); Long countFlowsPage(@Param("dto")FinanceFlowsDTO dto); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/WithdrawMapper.java
@@ -1,10 +1,15 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.system.domain.AccountDetail; import com.ruoyi.system.domain.Withdrawal; import com.ruoyi.system.pojo.dto.WithdrawPageDTO; import com.ruoyi.system.pojo.vo.WithdrawPageVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface WithdrawMapper extends BaseMapper<Withdrawal> { IPage<WithdrawPageVO> withdrawPage(@Param("page") IPage<WithdrawPageVO> page,@Param("dto") WithdrawPageDTO dto); } ruoyi-system/src/main/java/com/ruoyi/system/pojo/dto/AddSystemConfigDTO.java
@@ -19,9 +19,9 @@ private String url; @ApiModelProperty("每单平台提成比例") @Digits(integer = 4, fraction = 2, message = "整数部分不超过4位,保留2位小数") @Digits(integer = 2, fraction = 2, message = "整数部分不超过2位,保留2位小数") private BigDecimal platform; @ApiModelProperty("绑定用户可提成比例") @Digits(integer = 4, fraction = 2, message = "整数部分不超过4位,保留2位小数") @Digits(integer = 2, fraction = 2, message = "整数部分不超过2位,保留2位小数") private BigDecimal user; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/dto/FinanceFlowsDTO.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.system.pojo.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; import java.time.LocalDateTime; @Data @ApiModel("财务流水DTO") public class FinanceFlowsDTO { @ApiModelProperty("页码") private Integer pageNum=0; @ApiModelProperty("分页大小") private Integer pageSize=10; @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "类型:0-全部 1-收入 2-退款") private Integer type = 0; @ApiModelProperty(value = "操作时间-开始") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime operateTimeStart; @ApiModelProperty(value = "操作时间-结束") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime operateTimeEnd; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/dto/WithDrawAgreeDTO.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.system.pojo.dto; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("审核通过DTO") public class WithDrawAgreeDTO { @ApiModelProperty(value = "申请主键ID") private String id; @ApiModelProperty(value = "凭证图片URL") private String img; @ApiModelProperty(value = "备注") private String remark; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/dto/WithDrawRefuseDTO.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.system.pojo.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("审核拒绝DTO") public class WithDrawRefuseDTO { @ApiModelProperty(value = "申请主键ID") private String id; @ApiModelProperty(value = "备注") private String remark; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/dto/WithdrawPageDTO.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.system.pojo.dto; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("提现申请分页DTO") public class WithdrawPageDTO { @ApiModelProperty("页码") private Integer pageNum=0; @ApiModelProperty("分页大小") private Integer pageSize=10; @ApiModelProperty(value = "用户名称") private String userName; @ApiModelProperty(value = "联系电话") private String phone; @ApiModelProperty(value = "状态(0=待审核,1=通过,2=拒绝)") private Integer status; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/vo/FinanceFlowsPageVO.java
New file @@ -0,0 +1,38 @@ package com.ruoyi.system.pojo.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @ApiModel("财务流水分页VO") public class FinanceFlowsPageVO { @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "操作时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime operateTime; @ApiModelProperty(value = "总金额") private BigDecimal price; @ApiModelProperty(value = "卖家上级分佣") private BigDecimal commissionPrice; @ApiModelProperty(value = "平台利润") private BigDecimal commissionPlatform; @ApiModelProperty(value = "卖家收入") private BigDecimal seller; @ApiModelProperty("类型1-收入,2-退款") private Integer type; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/vo/FinanceFlowsTopVO.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.system.pojo.vo; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel("财务流水-顶部VO") public class FinanceFlowsTopVO { @ApiModelProperty("总入账") private BigDecimal total; @ApiModelProperty(value = "总利润") private BigDecimal totalProfit; @ApiModelProperty(value = "上级分佣金额") private BigDecimal superior; @ApiModelProperty(value = "卖家收入金额") private BigDecimal seller; } ruoyi-system/src/main/java/com/ruoyi/system/pojo/vo/WithdrawPageVO.java
New file @@ -0,0 +1,45 @@ package com.ruoyi.system.pojo.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @ApiModel("提现申请VO") public class WithdrawPageVO { @ApiModelProperty(value = "申请主键ID") private String id; @ApiModelProperty(value = "用户名称") private String appName; @ApiModelProperty(value = "联系电话") private String phone; @ApiModelProperty(value = "提现金额") private BigDecimal money; @ApiModelProperty(value = "申请时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @ApiModelProperty(value = "银行卡号") private String cardNo; @ApiModelProperty(value = "持卡人姓名") private String cardName; @ApiModelProperty(value = "状态(0=待审核,1=通过,2=拒绝)") private Integer status; } ruoyi-system/src/main/java/com/ruoyi/system/service/OrderService.java
@@ -7,7 +7,9 @@ import com.ruoyi.system.domain.Agreement; import com.ruoyi.system.domain.Order; import com.ruoyi.system.pojo.dto.AddAgreementDTO; import com.ruoyi.system.pojo.dto.FinanceFlowsDTO; import com.ruoyi.system.pojo.dto.OrderPageDTO; import com.ruoyi.system.pojo.dto.WithdrawPageDTO; import com.ruoyi.system.pojo.vo.*; import java.time.LocalDate; @@ -40,4 +42,9 @@ TodayStatisticsVO today(); IndexLineChartVO chart(LocalDate startDate, LocalDate endDate); FinanceFlowsTopVO financeTop(); IPage<FinanceFlowsPageVO> flowsPage(FinanceFlowsDTO dto); } ruoyi-system/src/main/java/com/ruoyi/system/service/WithdrawService.java
@@ -1,11 +1,18 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.domain.Agreement; import com.ruoyi.system.domain.Withdrawal; import com.ruoyi.system.pojo.dto.AddAgreementDTO; import com.ruoyi.system.pojo.dto.*; import com.ruoyi.system.pojo.vo.WithdrawPageVO; public interface WithdrawService extends IService<Withdrawal> { IPage<WithdrawPageVO> withdrawPage(WithdrawPageDTO dto); void agree(WithDrawAgreeDTO dto); void refuse(WithDrawRefuseDTO dto); } ruoyi-system/src/main/java/com/ruoyi/system/service/WithdrawServiceImpl.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java
@@ -13,7 +13,9 @@ import com.ruoyi.system.domain.*; import com.ruoyi.system.mapper.*; import com.ruoyi.system.pojo.dto.AddAgreementDTO; import com.ruoyi.system.pojo.dto.FinanceFlowsDTO; import com.ruoyi.system.pojo.dto.OrderPageDTO; import com.ruoyi.system.pojo.dto.WithdrawPageDTO; import com.ruoyi.system.pojo.model.DailyStatistics; import com.ruoyi.system.pojo.model.DrawSheet; import com.ruoyi.system.pojo.vo.*; @@ -53,6 +55,10 @@ private CompanyMapper companyMapper; @Autowired private SystemConfigMapper systemConfigMapper; @Autowired private AppUserMapper appUserMapper; @Autowired private WithdrawMapper withdrawMapper; @Override public IPage<OrderPageVO> getOrderPage(OrderPageDTO dto) { @@ -238,6 +244,7 @@ } @Transactional @Override public void cancel(String id) { Company company = companyMapper.selectById(id); @@ -262,12 +269,28 @@ //未付款 直接取消订单 order.setStatus(-1); this.baseMapper.updateById(order); //将分佣次数加回 User user = appUserMapper.selectById(order.getUserId()); user.setInviteNum(user.getInviteNum()+1); appUserMapper.updateById(user); //商品状态修改 company.setStatus(1); companyMapper.updateById(company); }else{ //退款 order.setStatus(-1); R r = refundPayMoney(order);//退款 if (200 == r.getCode()) { //退款成功 order.setStatus(-1);//订单取消状态 order.setIsRefund(1);//退款标志 order.setRefundTime(LocalDateTime.now());//退款时间 this.updateById(order); //将分佣次数加回 User user = appUserMapper.selectById(order.getUserId()); user.setInviteNum(user.getInviteNum()+1); appUserMapper.updateById(user); //商品状态修改 company.setStatus(1); companyMapper.updateById(company); } } } @@ -345,5 +368,20 @@ } @Override public FinanceFlowsTopVO financeTop() { return this.baseMapper.financeTop(); } @Override public IPage<FinanceFlowsPageVO> flowsPage(FinanceFlowsDTO dto) { IPage<FinanceFlowsPageVO> page = new Page<>(dto.getPageNum(), dto.getPageSize()); Long total = this.baseMapper.countFlowsPage(dto); IPage<FinanceFlowsPageVO> financeFlowsPageVOIPage = this.baseMapper.flowsPage(page, dto); financeFlowsPageVOIPage.setTotal(total); return financeFlowsPageVOIPage; } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SystemConfigServiceImpl.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.mapper.SystemConfigMapper; import com.ruoyi.system.domain.SystemConfig; import com.ruoyi.system.pojo.dto.AddSystemConfigDTO; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; @Service public class SystemConfigServiceImpl extends ServiceImpl<SystemConfigMapper, SystemConfig> implements SystemConfigService { @@ -49,6 +51,9 @@ //根据类型删除 systemConfigMapper.delete(new LambdaQueryWrapper<SystemConfig>().eq(SystemConfig::getType, dto.getType())); if (dto.getType()==3){ if (dto.getPlatform().add(dto.getUser()).compareTo(BigDecimal.valueOf(100)) > 0){ throw new ServiceException("平台提成+绑定用户提成不能超过100"); } //抽单设置 DrawSheet drawSheet = new DrawSheet(); drawSheet.setPlatform(dto.getPlatform()); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WithdrawServiceImpl.java
New file @@ -0,0 +1,90 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.domain.AccountDetail; import com.ruoyi.system.domain.User; import com.ruoyi.system.domain.Withdrawal; import com.ruoyi.system.mapper.AccountDetailMapper; import com.ruoyi.system.mapper.AppUserMapper; import com.ruoyi.system.mapper.WithdrawMapper; import com.ruoyi.system.pojo.dto.FinanceFlowsDTO; import com.ruoyi.system.pojo.dto.WithDrawAgreeDTO; import com.ruoyi.system.pojo.dto.WithDrawRefuseDTO; import com.ruoyi.system.pojo.dto.WithdrawPageDTO; import com.ruoyi.system.pojo.vo.WithdrawPageVO; import com.ruoyi.system.service.WithdrawService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdrawal> implements WithdrawService { private final AccountDetailMapper accountDetailMapper; private final AppUserMapper appUserMapper; public WithdrawServiceImpl(AccountDetailMapper accountDetailMapper, AppUserMapper appUserMapper) { this.accountDetailMapper = accountDetailMapper; this.appUserMapper = appUserMapper; } @Override public IPage<WithdrawPageVO> withdrawPage(WithdrawPageDTO dto) { IPage<WithdrawPageVO> page = new Page<>(dto.getPageNum(), dto.getPageSize()); return this.baseMapper.withdrawPage(page,dto); } @Transactional @Override public void agree(WithDrawAgreeDTO dto) { Withdrawal withdrawal = this.baseMapper.selectById(dto.getId()); if (null == withdrawal ) { throw new ServiceException("该申请记录不存在"); } if (withdrawal.getStatus() != 0) { throw new ServiceException("状态错误,不在审核状态中"); } //审核通过 线下打款 //1.审核状态修改 withdrawal.setStatus(1);//通过 withdrawal.setImg(dto.getImg()); withdrawal.setRemark(dto.getRemark()); this.baseMapper.updateById(withdrawal); //2.修改账户明细表 AccountDetail accountDetail = accountDetailMapper.selectOne(new LambdaQueryWrapper<AccountDetail>().eq(AccountDetail::getSourceId, withdrawal.getId())); accountDetail.setStatus(2);//通过 accountDetail.setRemark(dto.getRemark()); accountDetailMapper.updateById(accountDetail); } @Transactional @Override public void refuse(WithDrawRefuseDTO dto) { Withdrawal withdrawal = this.baseMapper.selectById(dto.getId()); if (null == withdrawal ) { throw new ServiceException("该申请记录不存在"); } if (withdrawal.getStatus() != 0) { throw new ServiceException("状态错误,不在审核状态中"); } //1.审核拒绝 withdrawal.setStatus(2);//拒绝 withdrawal.setRemark(dto.getRemark());//备注 this.baseMapper.updateById(withdrawal); //2. 返回账户余额 User user = appUserMapper.selectById(withdrawal.getUserId()); user.setBalance(user.getBalance().add(withdrawal.getMoney())); appUserMapper.updateById(user); //3.修改账户明细表 AccountDetail accountDetail = accountDetailMapper.selectOne(new LambdaQueryWrapper<AccountDetail>().eq(AccountDetail::getSourceId, withdrawal.getId())); accountDetail.setStatus(3);//通过 accountDetail.setRemark(dto.getRemark()); accountDetailMapper.updateById(accountDetail); } } ruoyi-system/src/main/resources/mapper/system/OrderMapper.xml
@@ -195,4 +195,85 @@ GROUP BY DATE(pay_time) ORDER BY DATE(pay_time) ASC </select> <select id="financeTop" resultType="com.ruoyi.system.pojo.vo.FinanceFlowsTopVO"> SELECT SUM(price) AS totalIncome, SUM(commission_platform) AS totalProfit, SUM(commission_price) AS totalCommission, SUM(price - commission_platform - commission_price) AS sellerIncome FROM tb_order WHERE status IN (4, 5, 6) AND is_refund = 0 </select> <select id="flowsPage" resultType="com.ruoyi.system.pojo.vo.FinanceFlowsPageVO"> SELECT order_no, price, commission_price, commission_platform, pay_time AS operateTime, (price - commission_platform - commission_price) as seller, 1 AS type -- 收入类型 FROM tb_order WHERE ((status IN (4, 5, 6)) -- 只查询已支付订单 or (status=-1 and is_refund =1)) -- 已取消且已退款的订单 <if test="null != dto.orderNo and '' != dto.orderNo"> and order_no LIKE CONCAT('%', #{dto.orderNo}, '%') </if> <if test="null != dto.operateTimeStart and null != dto.operateTimeEnd"> and pay_time between #{dto.operateTimeStart} and #{dto.operateTimeEnd} </if> AND ( #{dto.type} IS NULL OR 1 = #{dto.type} ) UNION ALL SELECT order_no, 0 AS price, 0 AS commission_price, 0 AS commission_platform, refund_time AS operateTime, 0 as seller, 2 AS type -- 退款类型 FROM tb_order WHERE is_refund = 1 -- 只查询已退款订单 <if test="null != dto.orderNo and '' != dto.orderNo"> and order_no LIKE CONCAT('%', #{dto.orderNo}, '%') </if> <if test="null != dto.operateTimeStart and null != dto.operateTimeEnd"> and refund_time between #{dto.operateTimeStart} and #{dto.operateTimeEnd} </if> AND ( #{dto.type} IS NULL OR 2 = #{dto.type} ) ORDER BY operateTime DESC LIMIT #{dto.pageNum}, #{dto.pageSize}; </select> <select id="countFlowsPage" resultType="java.lang.Long"> SELECT COUNT(*) FROM ( select 1 from tb_order WHERE ((status IN (4, 5, 6)) -- 只查询已支付订单 or (status=-1 and is_refund =1)) -- 已取消且已退款的订单 <if test="null != dto.orderNo and '' != dto.orderNo"> and order_no LIKE CONCAT('%', #{dto.orderNo}, '%') </if> <if test="null != dto.operateTimeStart and null != dto.operateTimeEnd"> and pay_time between #{dto.operateTimeStart} and #{dto.operateTimeEnd} </if> AND ( #{dto.type} IS NULL OR 1 = #{dto.type} ) UNION ALL select 1 FROM tb_order WHERE is_refund = 1 -- 只查询已退款订单 <if test="null != dto.orderNo and '' != dto.orderNo"> and order_no LIKE CONCAT('%', #{dto.orderNo}, '%') </if> <if test="null != dto.operateTimeStart and null != dto.operateTimeEnd"> and refund_time between #{dto.operateTimeStart} and #{dto.operateTimeEnd} </if> AND ( #{dto.type} IS NULL OR 2 = #{dto.type} ) ) AS t </select> </mapper> ruoyi-system/src/main/resources/mapper/system/WithdrawMapper.xml
@@ -3,4 +3,30 @@ <mapper namespace="com.ruoyi.system.mapper.WithdrawMapper"> <select id="withdrawPage" resultType="com.ruoyi.system.pojo.vo.WithdrawPageVO"> select w.id, u.user_name as appName, u.phone, w.money, w.create_time, w.card_no, w.username as cardName, w.status from tb_withdrawal w left join tb_user u on w.user_id = u.id <where> <if test="null != dto.userName and ''!=dto.userName"> and u.user_name like concat('%',#{dto.userName},'%') </if> <if test="null != dto.phone and '' != dto.phone"> and u.phone like concat('%',#{dto.phone},'%') </if> <if test="null != dto.status"> and w.status = #{dto.status} </if> </where> </select> </mapper>