From 9486766c806fe1d9e082b2fd02ea1cc558f1b443 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 08 五月 2025 09:21:57 +0800
Subject: [PATCH] bug修改

---
 cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java |  389 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 389 insertions(+), 0 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
index 83729db..3113496 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
@@ -1,10 +1,47 @@
 package com.dsh.account.service.impl;
 
+import com.alipay.api.response.AlipayTradeQueryResponse;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.account.entity.RechargeRecords;
+import com.dsh.account.entity.TAppUser;
+import com.dsh.account.entity.VipPayment;
+import com.dsh.account.enums.RechargeRecordEnum;
+import com.dsh.account.feignclient.communityWorldCup.WorldCupPaymentClinet;
+import com.dsh.account.feignclient.communityWorldCup.model.GetWorldCupPayment;
+import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
+import com.dsh.account.feignclient.competition.model.PaymentCompetition;
+import com.dsh.account.feignclient.course.CoursePaymentClient;
+import com.dsh.account.feignclient.course.model.CouponPaymentVo;
+import com.dsh.account.feignclient.course.model.TCoursePackagePayment;
+import com.dsh.account.feignclient.other.RechargeConfigClient;
+import com.dsh.account.feignclient.other.SiteClient;
+import com.dsh.account.feignclient.other.model.SiteBooking;
 import com.dsh.account.mapper.RechargeRecordsMapper;
+import com.dsh.account.mapper.TAppUserMapper;
+import com.dsh.account.model.IncomeQuery;
+import com.dsh.account.model.WorldCupPayment;
+import com.dsh.account.model.query.RechargeRecordsQuery;
+import com.dsh.account.model.vo.RechargeRecordsVO;
+import com.dsh.account.model.vo.userBenefitDetail.RechargeDetailsVo;
+import com.dsh.account.model.vo.userBenefitDetail.RechargePayRequest;
+import com.dsh.account.model.vo.userBenefitDetail.RechargesDetail;
 import com.dsh.account.service.RechargeRecordsService;
+import com.dsh.account.util.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +54,356 @@
 @Service
 public class RechargeRecordsServiceImpl extends ServiceImpl<RechargeRecordsMapper, RechargeRecords> implements RechargeRecordsService {
 
+    @Resource
+    private RechargeRecordsMapper rereMapper;
+
+
+    @Resource
+    private TAppUserMapper tappMapper;
+
+    @Autowired
+    private CoursePaymentClient cpClient;
+
+    @Autowired
+    private DeductionCompetitionsClient deducClient;
+
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
+
+    @Resource
+    private SiteClient stClient;
+
+
+    @Resource
+    private RechargeConfigClient reconMapper;
+    @Resource
+    private RechargeRecordsMapper rechargeRecordsMapper;
+
+    @Resource
+    private WorldCupPaymentClinet worldCupPaymentClinet;
+
+
+    @Override
+    public List<RechargesDetail> getAppUserRechargeRecord(String yearMonth, Integer recordId, Integer appUserId, Integer pageNum, Integer pageSize) {
+        List<RechargesDetail> details = new ArrayList<>();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+        Date monthStart = null;
+        Date monthEnd = null;
+        if (StringUtils.hasText(yearMonth)) {
+            monthStart = DateTimeHelper.getCurrentIdetMouthStart(yearMonth);
+            monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(yearMonth);
+        } else {
+            monthStart = DateTimeHelper.getCurrentMouthStart();
+            monthEnd = DateTimeHelper.getCurrentMouthEnd();
+        }
+
+//            1.赛事报名
+        List<PaymentCompetition> playPaiFGoldPayRecord = deducClient.getPlayPaiFGoldPayRecord(appUserId);
+        if (playPaiFGoldPayRecord.size() > 0) {
+            for (PaymentCompetition competition : playPaiFGoldPayRecord) {
+                if (competition.getPayStatus() == 2) {
+                    RechargesDetail consumeDetail = new RechargesDetail();
+                    consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg());
+                    consumeDetail.setConsumeTime(simpleDateFormat.format(competition.getInsertTime()));
+                    consumeDetail.setConsumeAmount("-" + competition.getAmount());
+                    consumeDetail.setRecordId(2);
+                    details.add(consumeDetail);
+                } else {
+
+
+                    RechargesDetail consumeDetail1 = new RechargesDetail();
+                    consumeDetail1.setConsumeName(RechargeRecordEnum.CANCEL_EVENT_REGISTRATION.getMsg());
+                    consumeDetail1.setConsumeTime(simpleDateFormat.format(competition.getRefundTime()));
+                    consumeDetail1.setConsumeAmount("+" + competition.getAmount());
+                    consumeDetail1.setRecordId(1);
+                    details.add(consumeDetail1);
+
+                    RechargesDetail consumeDetail = new RechargesDetail();
+                    consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg());
+                    consumeDetail.setConsumeTime(simpleDateFormat.format(competition.getInsertTime()));
+                    consumeDetail.setConsumeAmount("-" + competition.getAmount());
+                    consumeDetail.setRecordId(2);
+                    details.add(consumeDetail);
+
+
+                }
+            }
+        }
+//            2.课包购买
+        List<CouponPaymentVo> appuserCourseList = cpClient.getAppuserCourseList(appUserId);
+        if (appuserCourseList.size() > 0) {
+            for (CouponPaymentVo tCoursePackagePayment : appuserCourseList) {
+                RechargesDetail consumeDetail = new RechargesDetail();
+                consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg());
+                consumeDetail.setConsumeTime(tCoursePackagePayment.getTime());
+                consumeDetail.setConsumeAmount("-" + tCoursePackagePayment.getAmount());
+                consumeDetail.setRecordId(2);
+                details.add(consumeDetail);
+            }
+        }
+//            3.场地预约
+        List<SiteBooking> siteBookings = stClient.wanpaiGoldSiteBookingList(appUserId);
+        if (siteBookings.size() > 0) {
+            for (SiteBooking booking : siteBookings) {
+                if (booking.getStatus() != 5) {
+                    RechargesDetail consumeDetail = new RechargesDetail();
+                    consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg());
+                    consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getInsertTime()));
+                    consumeDetail.setConsumeAmount("-" + booking.getPayMoney());
+                    consumeDetail.setRecordId(2);
+                    details.add(consumeDetail);
+                } else {
+                    RechargesDetail consumeDetail1 = new RechargesDetail();
+                    consumeDetail1.setConsumeName(RechargeRecordEnum.CANCEL_VENUE_RESERVATION.getMsg());
+                    consumeDetail1.setConsumeTime(simpleDateFormat.format(booking.getCancelTime()));
+                    consumeDetail1.setConsumeAmount("+" + booking.getPayMoney());
+                    consumeDetail1.setRecordId(1);
+                    details.add(consumeDetail1);
+
+                    RechargesDetail consumeDetail = new RechargesDetail();
+                    consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg());
+                    consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getInsertTime()));
+                    consumeDetail.setConsumeAmount("-" + booking.getPayMoney());
+                    consumeDetail.setRecordId(2);
+                    details.add(consumeDetail);
+
+
+                }
+            }
+        }
+        //    4.智慧球场
+        List<Map<String, Object>> list = stClient.game(appUserId);
+        if (list.size() > 0) {
+            for (Map<String, Object> booking : list) {
+                RechargesDetail consumeDetail = new RechargesDetail();
+                consumeDetail.setConsumeName("激战游戏");
+                consumeDetail.setConsumeTime(simpleDateFormat.format(new Date(Long.valueOf(booking.get("time").toString()))));
+                consumeDetail.setConsumeAmount("-" + String.valueOf(booking.get("money")));
+                consumeDetail.setRecordId(2);
+                details.add(consumeDetail);
+            }
+        }
+
+
+        //  5.充值
+        List<RechargeRecords> rechargeRecords = this.baseMapper.selectList(new QueryWrapper<RechargeRecords>()
+                .eq("payStatus", 2)
+                .eq("appUserId", appUserId)
+                .between("insertTime", monthStart, monthEnd));
+        if (rechargeRecords.size() > 0) {
+            for (RechargeRecords rechargeRecord : rechargeRecords) {
+                RechargesDetail consumeDetail = new RechargesDetail();
+                consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":¥" + rechargeRecord.getAmount());
+                consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime()));
+                consumeDetail.setConsumeAmount("+" + rechargeRecord.getPlayPaiCoins());
+                consumeDetail.setRecordId(1);
+                details.add(consumeDetail);
+            }
+        }
+
+        //世界杯
+        GetWorldCupPayment getWorldCupPayment = new GetWorldCupPayment();
+        getWorldCupPayment.setAppUserId(appUserId);
+        getWorldCupPayment.setPayType("3");
+        getWorldCupPayment.setStartTime(monthStart);
+        getWorldCupPayment.setEndTime(monthEnd);
+        List<WorldCupPayment> worldCupPayment = worldCupPaymentClinet.getWorldCupPayment(getWorldCupPayment);
+        for (WorldCupPayment cupPayment : worldCupPayment) {
+            RechargesDetail consumeDetail = new RechargesDetail();
+            if(cupPayment.getPayStatus() != 3){
+                consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg());
+                consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getPayTime()));
+                consumeDetail.setConsumeAmount("-" + cupPayment.getAmount());
+                consumeDetail.setRecordId(2);
+                details.add(consumeDetail);
+            }else{
+                consumeDetail = new RechargesDetail();
+                consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg());
+                consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getPayTime()));
+                consumeDetail.setConsumeAmount("-" + cupPayment.getAmount());
+                consumeDetail.setRecordId(2);
+                details.add(consumeDetail);
+
+                consumeDetail = new RechargesDetail();
+                consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_WORLD_CIP_PAYMENT.getMsg());
+                consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getRefundTime()));
+                consumeDetail.setConsumeAmount("+" + cupPayment.getRefundAmount());
+                consumeDetail.setRecordId(1);
+                details.add(consumeDetail);
+            }
+        }
+
+
+        if (ToolUtil.isNotEmpty(recordId)) {
+            details = details.stream()
+                    .filter(record -> record.getRecordId().equals(recordId))
+                    .collect(Collectors.toList());
+        }
+        if (details.size() > 0) {
+            Collections.sort(details, new Comparator<RechargesDetail>() {
+                @Override
+                public int compare(RechargesDetail o1, RechargesDetail o2) {
+                    try {
+                        Date date1 = simpleDateFormat.parse(o1.getConsumeTime());
+                        Date date2 = simpleDateFormat.parse(o2.getConsumeTime());
+                        return date2.compareTo(date1); // 降序排序
+                    } catch (ParseException e) {
+                        e.printStackTrace();
+                    }
+                    return 0;
+                }
+            });
+        }
+        //当前第几页
+        int pageNo = pageNum;
+        //一页五条
+        int size = pageSize;
+
+
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        List<RechargesDetail> filteredList = new ArrayList<>();
+        for (RechargesDetail detail : details) {
+            try {
+                Date consumeTime = dateFormat.parse(detail.getConsumeTime());
+                if (consumeTime.after(monthStart) && consumeTime.before(monthEnd)) {
+                    String substring = detail.getConsumeTime().substring(5);
+                    detail.setConsumeTime(substring);
+                    filteredList.add(detail);
+                }
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+
+
+        //分页
+        filteredList = filteredList.stream().skip((pageNo - 1) * size).limit(size).
+                collect(Collectors.toList());
+
+        return filteredList;
+    }
+
+    @Override
+    public ResultUtil rechargeCenPayment(Integer userIdFormRedis, RechargePayRequest request) {
+        TAppUser tAppUser = tappMapper.selectById(userIdFormRedis);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
+        RechargeRecords rechargeRecords = new RechargeRecords();
+        rechargeRecords.setCode(code);
+        rechargeRecords.setAppUserId(userIdFormRedis);
+
+        List<Map<String, Object>> rechargeConfig = reconMapper.getRechargeConfig();
+        BigDecimal amount = BigDecimal.ZERO;
+        if (rechargeConfig.size() > 0) {
+            for (Map<String, Object> stringObjectMap : rechargeConfig) {
+                double o = (double) stringObjectMap.get("money");
+                if (BigDecimal.valueOf(o).compareTo(request.getAmount()) == 0) {
+                    amount = BigDecimal.valueOf(o);
+                    rechargeRecords.setAmount(BigDecimal.valueOf(o));
+                    if (tAppUser.getIsVip() == 1) {
+                        rechargeRecords.setPlayPaiCoins((Integer) stringObjectMap.get("MemberCoins"));
+                    } else {
+                        rechargeRecords.setPlayPaiCoins((Integer) stringObjectMap.get("usersCoins"));
+                    }
+                }
+            }
+        }
+        rechargeRecords.setPayStatus(1);
+        rechargeRecords.setState(1);
+        rechargeRecords.setInsertTime(new Date());
+        this.baseMapper.insert(rechargeRecords);
+        try {
+            switch (request.getPayType()) {
+                case 1:
+                    return WeChatPayment(code, amount);
+                case 2:
+                    return AlipayPayment(code, amount);
+                default:
+                    break;
+            }
+        } catch (Exception e) {
+            ResultUtil.runErr();
+        }
+        return ResultUtil.success();
+    }
+
+    private String smid = "2088330203191220";//平台支付宝商户号
+    private ResultUtil AlipayPayment(String code, BigDecimal amount) {
+        ResultUtil alipay = payMoneyUtil.alipay(smid,"玩湃币充值", "玩湃币充值", "", code, amount.toString(),
+                "/base/recharge/alipayRechargeCallback");
+        return alipay;
+    }
+
+    private ResultUtil WeChatPayment(String code, BigDecimal amount) throws Exception {
+        ResultUtil weixinpay = payMoneyUtil.weixinpay("玩湃币充值", "", code, amount.toString(),
+                "/base/recharge/wechatRechargeCallback", "APP", "");
+        return weixinpay;
+
+    }
+
+    @Override
+    public ResultUtil addRechargeCallbackPay(String code, String orderNumber) {
+        RechargeRecords rechargeRecords = this.baseMapper.selectOne(new QueryWrapper<RechargeRecords>()
+                .eq("code", code));
+        if (null == rechargeRecords || rechargeRecords.getPayStatus() == 2) {
+            return ResultUtil.success();
+        }
+
+        TAppUser tAppUser = tappMapper.selectById(rechargeRecords.getAppUserId());
+        tAppUser.setPlayPaiCoins(null == tAppUser.getPlayPaiCoins() ? rechargeRecords.getPlayPaiCoins() : tAppUser.getPlayPaiCoins() + rechargeRecords.getPlayPaiCoins());
+        tappMapper.updateById(tAppUser);
+
+        rechargeRecords.setAppUserId(null);
+        rechargeRecords.setPayStatus(2);
+        rechargeRecords.setPayTime(new Date());
+        rechargeRecords.setOrderNumber(orderNumber);
+        this.baseMapper.updateById(rechargeRecords);
+        return ResultUtil.success();
+    }
+
+    @Override
+    public List<RechargeRecordsVO> rechargeList(RechargeRecordsQuery query) {
+        String STime = null;
+        String ETime = null;
+        if (StringUtils.hasLength(query.getTime())) {
+            STime = query.getTime().split(" - ")[0] + " 00:00:00";
+            ETime = query.getTime().split(" - ")[1] + " 23:59:59";
+        }
+
+        return rechargeRecordsMapper.rechargeList(query, STime, ETime);
+
+    }
+
+    @Override
+    public List<VipPayment> listAll(IncomeQuery query) {
+        String STime = null;
+        String ETime = null;
+        if (StringUtils.hasLength(query.getTime())) {
+            STime = query.getTime().split(" - ")[0] + " 00:00:00";
+            ETime = query.getTime().split(" - ")[1] + " 23:59:59";
+        }
+        return rechargeRecordsMapper.listAll(query, STime, ETime, query.getAmount(), query.getInsertType());
+    }
+
+    public static <T> List<T> pageList(List<T> list, int pageNum, int pageSize) {
+        //计算总页数
+        int page = list.size() % pageSize == 0 ? list.size() / pageSize : list.size() / pageSize + 1;
+        //兼容性分页参数错误
+        pageNum = pageNum <= 0 ? 1 : pageNum;
+        pageNum = pageNum >= page ? page : pageNum;
+        // 开始索引
+        int begin = 0;
+        // 结束索引
+        int end = 0;
+        if (pageNum != page) {
+            begin = (pageNum - 1) * pageSize;
+            end = begin + pageSize;
+        } else {
+            begin = (pageNum - 1) * pageSize;
+            end = list.size();
+        }
+        return list.subList(begin, end);
+    }
+
 }

--
Gitblit v1.7.1