Browse Source

Merge remote-tracking branch 'origin/milestone-20260113-现金管理0109' into milestone-20260113-现金管理0109

milestone-20260113-现金管理0109
wangguorui 1 day ago
parent
commit
b25866d45a
  1. 3
      src/main/java/com/example/demo/controller/cash/CashCollectionController.java
  2. 13
      src/main/java/com/example/demo/domain/DTO/PerformanceDTO.java
  3. 37
      src/main/java/com/example/demo/domain/vo/cash/PerformanceVO.java
  4. 3
      src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
  5. 3
      src/main/java/com/example/demo/service/cash/CashCollectionService.java
  6. 8
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  7. 4
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java
  8. 119
      src/main/resources/cashMapper/CashCollectionMapper.xml

3
src/main/java/com/example/demo/controller/cash/CashCollectionController.java

@ -277,9 +277,10 @@ public class CashCollectionController {
@PostMapping("/performanceSelect")
public Result performanceSelect(@RequestBody Page page) {
try {
return Result.success(cashCollectionService.performanceSelect(page.getPageSize(),page.getPageNum(),page.getPerformanceDTO()));
return Result.success(cashCollectionService.performanceSelect(page.getPageNum(),page.getPageSize(),page.getPerformanceDTO()));
} catch (Exception e) {
// 推送异常到飞书核心调用工具类
System.out.println(e.getMessage());
throw new SecurityException();
}
}

13
src/main/java/com/example/demo/domain/DTO/PerformanceDTO.java

@ -1,7 +1,11 @@
package com.example.demo.domain.DTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName PerformanceDTO
@ -13,4 +17,13 @@ import lombok.Data;
@Data
public class PerformanceDTO {
List<String> adminMarket;
String jwcode;
List<String> customerMarket;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 支付时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 支付时间
}

37
src/main/java/com/example/demo/domain/vo/cash/PerformanceVO.java

@ -0,0 +1,37 @@
package com.example.demo.domain.vo.cash;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serial;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName PerformanceVO
* @description:
* @author: Double
* @create: 202601-15 10:15
* @Version 1.0
**/
@Data
public class PerformanceVO {
private Integer jwcode; // 精网号
private String name; // 姓名
@ExcelIgnore
private String market; // 所属地区
private String marketName; // 所属地区
private String orderCode; // 金币订单号
private String paymentCurrency; // 付款币种
private BigDecimal paymentAmount; // 付款金额
private String receivedCurrency; // 到账币种
private BigDecimal receivedAmount; // 到账金额
private BigDecimal handlingCharge; // 手续费
}

3
src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java

@ -6,6 +6,7 @@ import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.entity.GOrder;
import com.example.demo.domain.entity.RechargeActivity;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.PerformanceVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -70,5 +71,5 @@ public interface CashCollectionMapper {
@Param("auditId") Integer auditId,
@Param("version") Integer version);
List<CashCollection> performanceSelect(PerformanceDTO performanceDTO);
List<PerformanceVO> performanceSelect(PerformanceDTO performanceDTO);
}

3
src/main/java/com/example/demo/service/cash/CashCollectionService.java

@ -6,6 +6,7 @@ import com.example.demo.domain.entity.GOrder;
import com.example.demo.domain.entity.RechargeActivity;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.PerformanceVO;
import com.example.demo.domain.vo.coin.Result;
import com.github.pagehelper.PageInfo;
@ -46,6 +47,6 @@ public interface CashCollectionService {
//同步事务方法
void processBatch(List<GOrder> gOrders);
PageInfo<CashCollection> performanceSelect(Integer pageNum, Integer pageSize, PerformanceDTO performanceDTO);
PageInfo<PerformanceVO> performanceSelect(Integer pageNum, Integer pageSize, PerformanceDTO performanceDTO);
}

8
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -6,6 +6,7 @@ import com.example.demo.domain.DTO.PerformanceDTO;
import com.example.demo.domain.entity.*;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.CashCollectionMessage;
import com.example.demo.domain.vo.cash.PerformanceVO;
import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Messages;
import com.example.demo.domain.vo.coin.Result;
@ -507,11 +508,10 @@ public User getNameAndMarket(Integer jwcode) {
//多条件查询收款订单列表
@Override
public PageInfo<CashCollection> performanceSelect(Integer pageNum, Integer pageSize,PerformanceDTO performanceDTO) {
public PageInfo<PerformanceVO> performanceSelect(Integer pageNum, Integer pageSize, PerformanceDTO performanceDTO) {
PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper
List<CashCollection> cashCollections = cashCollectionMapper.performanceSelect(performanceDTO);
return new PageInfo<>(cashCollections);
List<PerformanceVO> performanceVOs = cashCollectionMapper.performanceSelect(performanceDTO);
return new PageInfo<>(performanceVOs);
}
}

4
src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

@ -214,7 +214,7 @@ public class AuditServiceImpl implements AuditService {
}
//如果是旧订单发送报警
if (AuditContext.getRedCheckResult().equals("old")){
if (AuditContext.getRedCheckResult()!=null &&AuditContext.getRedCheckResult().equals("old")){
Exception e = new Exception("旧订单退款");
String title = "旧订单退款";
String detail= ("精网号:"+order.getJwcode())+"\n金币订单号:"+orderCode+"\n永久金币:"+Math.abs(order.getPermanentGold())/100+
@ -286,7 +286,7 @@ public class AuditServiceImpl implements AuditService {
redService.consumeRed(linkId);
}
//link扣除已有红包
else if (!AuditContext.getRedCheckResult().equals("old")){
else if (AuditContext.getRedCheckResult()!=null &&!AuditContext.getRedCheckResult().equals("old")){
redService.consumeRed(linkId);
}
else {

119
src/main/resources/cashMapper/CashCollectionMapper.xml

@ -302,102 +302,47 @@
AND version = #{version}
</update>
<select id="performanceSelect" resultType="com.example.demo.domain.vo.cash.CashCollection">
select cr.order_type, cr.id,cr.jwcode,cr.name,cr.market,
m1.name as marketName, ra.id as activityId,
ra.activity_name as activity,cr.order_code,cr.bank_code,
cr.goods_name,cr.good_num,
cr.num_unit,
cr.permanent_gold/100 as permanentGold,cr.free_gold/100 as freeGold,cr.payment_amount/100 as paymentAmount,
r1.rate_name as paymentCurrency,
r2.rate_name as receivedCurrency,
m2.name as receivedMarket,
cr.received_amount/100 as receivedAmount,cr.handling_charge/100 as handlingCharge,
cr.pay_type,cr.pay_time,cr.received_time,
cr.status,cr.submitter_id,cr.submitter_market,cr.voucher,cr.remark,cr.reject_reason,
cr.audit_id,cr.create_time,cr.update_time,cr.audit_time,
a1.admin_name as submitterName,
a2.admin_name as auditName
<select id="performanceSelect" resultType="com.example.demo.domain.vo.cash.PerformanceVO" parameterType="com.example.demo.domain.DTO.PerformanceDTO">
select cr.jwcode,cr.name,cr.market,m.name as marketName,cr.order_code,r1.rate_name as paymentCurrency,cr.payment_amount,r2.rate_name as receivedCurrency,cr.received_amount,cr.handling_charge
from cash_record_collection cr
left join admin a1 on cr.submitter_id = a1.id
left join admin a2 on cr.audit_id = a2.id
left join market m1 on m1.id = cr.market
left join market m2 on m2.id = cr.received_market
left join market m on m.id = cr.market
left join rate r1 on r1.id = cr.payment_currency
left join rate r2 on r2.id = cr.received_currency
left join recharge_activity ra on ra.id = cr.activity
<where>
1 = 1
<if test="cashCollection.market != null and cashCollection.market != ''">
AND cr.market = #{cashCollection.market}
</if>
<if test="cashCollection.jwcode != null and cashCollection.jwcode!=''">
AND cr.jwcode = #{cashCollection.jwcode}
</if>
<if test="cashCollection.name!=null and cashCollection.name !=''">
AND cr.name like concat('%',#{cashCollection.name},'%')
</if>
<if test="cashCollection.submitterId!=null and cashCollection.submitterId !=''">
AND cr.submitter_id = #{cashCollection.submitterId}
</if>
<!-- 其他原有条件不变 -->
where order_type = 1 and status = 4
<!-- adminMarket筛选:如果adminMarket列表不为空且不包含研发部或总部,则筛选market表中的name等于adminMarket列表中的内容 -->
<if test="adminMarket != null and adminMarket.size() > 0">
<choose>
<when test="cashCollection.status != null and (cashCollection.status == 46||cashCollection.status == 13)">
<if test="cashCollection.receivedMarket != null and cashCollection.receivedMarket != ''">
AND (cr.received_market = #{cashCollection.receivedMarket}
<if test="cashCollection.submitterMarket != null and cashCollection.submitterMarket != ''">
OR cr.submitter_market = #{cashCollection.submitterMarket}
</if>
)
</if>
<if test="(cashCollection.receivedMarket == null or cashCollection.receivedMarket == '')
and cashCollection.submitterMarket != null and cashCollection.submitterMarket != ''">
AND cr.submitter_market = #{cashCollection.submitterMarket}
</if>
<when test="adminMarket.contains('研发部') or adminMarket.contains('总部')">
<!-- 如果包含研发部或总部,则不筛选 -->
</when>
<!-- 非 status=46 保持原逻辑:同时满足 -->
<otherwise>
<if test="cashCollection.receivedMarket != null and cashCollection.receivedMarket != ''">
AND cr.received_market = #{cashCollection.receivedMarket}
</if>
<if test="cashCollection.submitterMarket != null and cashCollection.submitterMarket != ''">
AND cr.submitter_market = #{cashCollection.submitterMarket}
</if>
AND m.name IN
<foreach collection="adminMarket" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</otherwise>
</choose>
<if test="cashCollection.activity!=null and cashCollection.activity!=''">
AND cr.activity =#{cashCollection.activity}
</if>
<if test="cashCollection.paymentCurrency!=null and cashCollection.paymentCurrency!=''">
AND cr.payment_currency like concat('%',#{cashCollection.paymentCurrency},'%')
</if>
</if>
<if test="cashCollection.goodsName!=null and cashCollection.goodsName!=''">
AND cr.goods_name like concat('%',#{cashCollection.goodsName},'%')
</if>
<if test="cashCollection.payType!=null and cashCollection.payType!=''">
AND cr.pay_type = #{cashCollection.payType}
</if>
<if test="cashCollection.status != null">
AND cr.status IN
<foreach collection="cashCollection.status.toString().toCharArray()" item="digit" open="(" separator="," close=")">
#{digit}
</foreach>
</if>
<if test="cashCollection.startTime!=null and cashCollection.endTime!=null">
AND cr.pay_time between #{cashCollection.startTime} and #{cashCollection.endTime}
</if>
and cr.order_type=1
</where>
<choose>
<when test="cashCollection.sortField != null and cashCollection.sortField.length > 0 or cashCollection.sortOrder != null and cashCollection.sortOrder.length > 0">
ORDER BY ${cashCollection.sortField} ${cashCollection.sortOrder}
</when>
<otherwise>
ORDER BY create_time DESC
</otherwise>
</choose>
<!-- customerMarket筛选:如果customerMarket列表不为空,则筛选cash_record_collection表中的market等于customerMarket列表中的内容 -->
<if test="customerMarket != null and customerMarket.size() > 0">
AND cr.market IN
<foreach collection="customerMarket" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<!-- jwcode筛选:如果jwcode不为空,则筛选cash_record_collection表中的jwcode等于jwcode -->
<if test="jwcode != null and jwcode != ''">
AND cr.jwcode = #{jwcode}
</if>
<!-- 时间范围筛选:如果startTime和endTime不为空,则筛选cash_record_collection表中的pay_time在startTime和endTime之间 -->
<if test="startTime != null and endTime != null">
AND cr.pay_time BETWEEN #{startTime} AND #{endTime}
</if>
</select>
</mapper>
Loading…
Cancel
Save