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.*;
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;
/**
*
* 充值记录 服务实现类
*
*
* @author jqs
* @since 2023-07-07
*/
@Service
public class RechargeRecordsServiceImpl extends ServiceImpl 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;
@Autowired
private RechargeRecordsMapper rechargeRecordsMapper;
@Override
public List getAppUserRechargeRecord(String yearMonth, Integer recordId, Integer appUserId, Integer pageNum, Integer pageSize) {
List 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 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 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 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