cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
@@ -10,26 +10,31 @@
import com.dsh.account.feignclient.course.CoursePaymentClient;
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.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 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.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * <p>
@@ -58,15 +63,17 @@
    @Autowired
    private PayMoneyUtil payMoneyUtil;
    @Resource
    private SiteClient stClient;
    @Resource
    private RechargeConfigClient reconMapper;
    @Override
    public RechargeDetailsVo getAppUserRechargeRecord(String yearMonth, Integer recordId, Integer appUserId) {
        RechargeDetailsVo vo = new RechargeDetailsVo();
        List<RechargeDetailsVo.RechargesDetail> details = new ArrayList<>();
    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");
        Date monthStart = null;
@@ -79,17 +86,11 @@
            monthEnd = DateTimeHelper.getCurrentMouthEnd();
        }
        TAppUser tAppUser = tappMapper.selectById(appUserId);
        if (null != tAppUser){
            vo.setWpGold(tAppUser.getPlayPaiCoins());
        }else {
            vo.setWpGold(0);
        }
//            1.赛事报名
        List<PaymentCompetition> playPaiFGoldPayRecord = deducClient.getPlayPaiFGoldPayRecord(appUserId);
        if (playPaiFGoldPayRecord.size() > 0 ){
            for (PaymentCompetition competition : playPaiFGoldPayRecord) {
                RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail();
                RechargesDetail consumeDetail = new RechargesDetail();
                consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg() );
                consumeDetail.setConsumeTime(simpleDateFormat.format(competition.getInsertTime()));
                consumeDetail.setConsumeAmount("-" + competition.getAmount());
@@ -100,7 +101,7 @@
        List<TCoursePackagePayment> appuserCourseList = cpClient.getAppuserCourseList(appUserId);
        if (appuserCourseList.size() > 0){
            for (TCoursePackagePayment tCoursePackagePayment : appuserCourseList) {
                RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail();
                RechargesDetail consumeDetail = new RechargesDetail();
                consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg() );
                consumeDetail.setConsumeTime(simpleDateFormat.format(tCoursePackagePayment.getInsertTime()));
                consumeDetail.setConsumeAmount("-" + tCoursePackagePayment.getPlayPaiCoin());
@@ -108,6 +109,16 @@
            }
        }
//            3.场地预约
        List<SiteBooking> siteBookings = stClient.wanpaiGoldSiteBookingList(appUserId);
        if (siteBookings.size() > 0 ){
            for (SiteBooking booking : siteBookings) {
                RechargesDetail consumeDetail = new RechargesDetail();
                consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.name());
                consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getInsertTime()));
                consumeDetail.setConsumeAmount("-" + booking.getPayMoney());
                details.add(consumeDetail);
            }
        }
//            4.智慧球场
//            5.充值
@@ -117,15 +128,31 @@
                .between("insertTime", monthStart, monthEnd));
        if (rechargeRecords.size() > 0) {
            for (RechargeRecords rechargeRecord : rechargeRecords) {
                RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail();
                RechargesDetail consumeDetail = new RechargesDetail();
                consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.name() + ":" + rechargeRecord.getPlayPaiCoins());
                consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime()));
                consumeDetail.setConsumeAmount("+" + rechargeRecord.getAmount());
                details.add(consumeDetail);
            }
        }
        vo.setDetailList(details);
        return vo;
        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;
                }
            });
        }
        Pageable pageable = PageRequest.of(pageNum - 1, pageSize);
        Page<RechargesDetail> page = getPage(details, pageable);
        return page.getContent();
    }
    @Override
@@ -136,15 +163,19 @@
        RechargeRecords rechargeRecords = new RechargeRecords();
        rechargeRecords.setCode(code);
        rechargeRecords.setAppUserId(userIdFormRedis);
        rechargeRecords.setAmount(request.getPayAmount());
        List<Map<String, Object>> rechargeConfig = reconMapper.getRechargeConfig();
        BigDecimal amount = BigDecimal.ZERO;
        if (rechargeConfig.size() > 0){
            for (Map<String, Object> stringObjectMap : rechargeConfig) {
                Object o = stringObjectMap.get("money");
                if (o.equals(request.getPayAmount())){
                    if (tAppUser.getIsVip() == 1){
                Integer chargeId = (Integer) stringObjectMap.get("chargeId");
                if (chargeId.equals(request.getChargeId())) {
                    Long o = (Long) stringObjectMap.get("money");
                    amount = BigDecimal.valueOf(o);
                    rechargeRecords.setAmount(BigDecimal.valueOf(o));
                    if (tAppUser.getIsVip() == 1) {
                        rechargeRecords.setPlayPaiCoins((Integer) stringObjectMap.get("MemberCoins"));
                    }else {
                    } else {
                        rechargeRecords.setPlayPaiCoins((Integer) stringObjectMap.get("usersCoins"));
                    }
                }
@@ -157,9 +188,9 @@
        try {
            switch (request.getPayType()){
                case 1:
                    return WeChatPayment(code,request.getPayAmount());
                    return WeChatPayment(code,amount);
                case 2:
                    return AlipayPayment(code,request.getPayAmount());
                    return AlipayPayment(code,amount);
                default:
                    break;
            }
@@ -304,4 +335,11 @@
        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());
    }
}