From ae9bfd2d66f68a553786ac78b12f4390e65e4e09 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期五, 24 十一月 2023 18:30:18 +0800
Subject: [PATCH] 后台bug修改

---
 cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java |  204 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 166 insertions(+), 38 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 4fe4c9f..07c168f 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,27 +1,30 @@
 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.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.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.DateTimeHelper;
-import com.dsh.account.util.PayMoneyUtil;
-import com.dsh.account.util.ResultUtil;
-import com.dsh.account.util.UUIDUtil;
+import com.dsh.account.util.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
@@ -35,6 +38,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -69,12 +73,14 @@
 
     @Resource
     private RechargeConfigClient reconMapper;
+    @Autowired
+    private RechargeRecordsMapper rechargeRecordsMapper;
 
 
     @Override
     public List<RechargesDetail> getAppUserRechargeRecord(String yearMonth, Integer recordId, Integer appUserId,Integer pageNum,Integer pageSize) {
         List<RechargesDetail> details = new ArrayList<>();
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm");
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 
         Date monthStart = null;
         Date monthEnd = null;
@@ -90,21 +96,43 @@
         List<PaymentCompetition> playPaiFGoldPayRecord = deducClient.getPlayPaiFGoldPayRecord(appUserId);
         if (playPaiFGoldPayRecord.size() > 0 ){
             for (PaymentCompetition competition : playPaiFGoldPayRecord) {
-                RechargesDetail consumeDetail = new RechargesDetail();
-                consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg() );
-                consumeDetail.setConsumeTime(simpleDateFormat.format(competition.getInsertTime()));
-                consumeDetail.setConsumeAmount("-" + competition.getAmount());
-                details.add(consumeDetail);
+                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<TCoursePackagePayment> appuserCourseList = cpClient.getAppuserCourseList(appUserId);
+        List<CouponPaymentVo> appuserCourseList = cpClient.getAppuserCourseList(appUserId);
         if (appuserCourseList.size() > 0){
-            for (TCoursePackagePayment tCoursePackagePayment : appuserCourseList) {
+            for (CouponPaymentVo tCoursePackagePayment : appuserCourseList) {
                 RechargesDetail consumeDetail = new RechargesDetail();
                 consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg() );
-                consumeDetail.setConsumeTime(simpleDateFormat.format(tCoursePackagePayment.getInsertTime()));
-                consumeDetail.setConsumeAmount("-" + tCoursePackagePayment.getPlayPaiCoin());
+                consumeDetail.setConsumeTime(tCoursePackagePayment.getTime());
+                consumeDetail.setConsumeAmount("-" + tCoursePackagePayment.getAmount());
+                consumeDetail.setRecordId(2);
                 details.add(consumeDetail);
             }
         }
@@ -113,15 +141,28 @@
         if (siteBookings.size() > 0 ){
             for (SiteBooking booking : siteBookings) {
                 RechargesDetail consumeDetail = new RechargesDetail();
-                consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.name());
+                consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg());
                 consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getInsertTime()));
                 consumeDetail.setConsumeAmount("-" + booking.getPayMoney());
+                consumeDetail.setRecordId(2);
                 details.add(consumeDetail);
             }
         }
-//            4.智慧球场
+        //    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.充值
+
+       //  5.充值
         List<RechargeRecords> rechargeRecords = this.baseMapper.selectList(new QueryWrapper<RechargeRecords>()
                 .eq("payStatus", 2)
                 .eq("appUserId", appUserId)
@@ -129,11 +170,17 @@
         if (rechargeRecords.size() > 0) {
             for (RechargeRecords rechargeRecord : rechargeRecords) {
                 RechargesDetail consumeDetail = new RechargesDetail();
-                consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.name() + ":" + rechargeRecord.getPlayPaiCoins());
+                consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":¥" + rechargeRecord.getAmount());
                 consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime()));
-                consumeDetail.setConsumeAmount("+" + rechargeRecord.getAmount());
+                consumeDetail.setConsumeAmount("+" + rechargeRecord.getPlayPaiCoins());
+                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>() {
@@ -150,9 +197,34 @@
                 }
             });
         }
-        Pageable pageable = PageRequest.of(pageNum - 1, pageSize);
-        Page<RechargesDetail> page = getPage(details, pageable);
-        return page.getContent();
+        //当前第几页
+        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
@@ -168,9 +240,8 @@
         BigDecimal amount = BigDecimal.ZERO;
         if (rechargeConfig.size() > 0){
             for (Map<String, Object> stringObjectMap : rechargeConfig) {
-                Integer chargeId = (Integer) stringObjectMap.get("chargeId");
-                if (chargeId.equals(request.getChargeId())) {
-                    Long o = (Long) stringObjectMap.get("money");
+                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) {
@@ -222,29 +293,49 @@
                             if(records.getPayStatus() == 2){
                                 break;
                             }
-                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
-                            if(resultUtil.getCode() == 200 && records.getPayStatus() == 1){
+                            AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
+
+                            if(resultUtil.getCode().equals("10000")&& records.getPayStatus() == 1){
                                 /**
                                  * WAIT_BUYER_PAY(交易创建,等待买家付款)、
                                  * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
                                  * TRADE_SUCCESS(交易支付成功)、
                                  * TRADE_FINISHED(交易结束,不可退款)
                                  */
-                                Map<String, String> data1 = resultUtil.getData();
-                                String s = data1.get("tradeStatus");
-                                String tradeNo = data1.get("tradeNo");
-                                if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
+//                                Map<String, String> data1 = resultUtil.getData();
+//                                String s = data1.get("tradeStatus");
+//                                String tradeNo = data1.get("tradeNo");
+
+                                String tradeNo = resultUtil.getTradeNo();
+                                String tradeStatus = resultUtil.getTradeStatus();
+                                System.out.println("ssssss"+tradeStatus);
+                                if("TRADE_CLOSED".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus) || num == 10){
                                     records.setState(3);
                                     rereMapper.deleteById(records.getId());
                                     break;
                                 }
-                                if("TRADE_SUCCESS".equals(s)){
+                                if("TRADE_SUCCESS".equals(tradeStatus)){
+                                    records.setAppUserId(null);
                                     records.setPayStatus(2);
+                                    records.setPayTime(new Date());
                                     records.setOrderNumber(tradeNo);
                                     rereMapper.updateById(records);
+
+                                    RechargeRecords rechargeRecords = rereMapper.selectOne(new QueryWrapper<RechargeRecords>()
+                                            .eq("code", code));
+                                    if (rechargeRecords.getPayStatus() == 2){
+                                        TAppUser tAppUser = tappMapper.selectById(rechargeRecords.getAppUserId());
+                                        tAppUser.setPlayPaiCoins(null == tAppUser.getPlayPaiCoins()? rechargeRecords.getPlayPaiCoins(): tAppUser.getPlayPaiCoins() +rechargeRecords.getPlayPaiCoins() );
+                                        tappMapper.updateById(tAppUser);
+                                        break;
+                                    }
+
+
+
+
                                     break;
                                 }
-                                if("WAIT_BUYER_PAY".equals(s)){
+                                if("WAIT_BUYER_PAY".equals(tradeStatus)){
                                     num++;
                                 }
                             }
@@ -324,6 +415,7 @@
         if (rechargeRecords.getPayStatus() == 2){
             return  ResultUtil.success();
         }
+        rechargeRecords.setAppUserId(null);
         rechargeRecords.setPayStatus(2);
         rechargeRecords.setPayTime(new Date());
         rechargeRecords.setOrderNumber(orderNumber);
@@ -335,11 +427,47 @@
         return null;
     }
 
-    // 对数据进行分页处理的方法
-    private static Page<RechargesDetail> getPage(List<RechargesDetail> dataList, Pageable pageable) {
-        int start = (int) pageable.getOffset();
-        int end = Math.min((start + pageable.getPageSize()), dataList.size());
-        return new PageImpl<>(dataList.subList(start, end), pageable, dataList.size());
+    @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