From b1fb83530b7105e4aa73e4101727dea945eb01c2 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 29 八月 2025 21:48:15 +0800
Subject: [PATCH] bug修改
---
cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java | 368 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 325 insertions(+), 43 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 511f7f2..a35522f 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,29 +1,48 @@
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.DateTimeHelper;
-import com.dsh.account.util.ResultUtil;
+import com.dsh.account.util.*;
+import com.dsh.account.util.wx.WxV3PayConfig;
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.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -46,12 +65,29 @@
@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 RechargeDetailsVo getAppUserRechargeRecord(String yearMonth, Integer recordId, Integer appUserId) {
- RechargeDetailsVo vo = new RechargeDetailsVo();
- List<RechargeDetailsVo.RechargesDetail> details = new ArrayList<>();
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm");
+ 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;
@@ -63,69 +99,315 @@
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) {
+ 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);
- if (appuserCourseList.size() > 0){
- for (TCoursePackagePayment tCoursePackagePayment : appuserCourseList) {
- RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail();
- consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg() );
- consumeDetail.setConsumeTime(simpleDateFormat.format(tCoursePackagePayment.getInsertTime()));
- consumeDetail.setConsumeAmount("-" + tCoursePackagePayment.getPlayPaiCoin());
+ 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.场地预约
-// 4.智慧球场
+ 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);
-// 5.充值
- List<RechargeRecords> rechargeRecords = rereMapper.selectList(new QueryWrapper<RechargeRecords>()
+ 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) {
- RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail();
- consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.name() + ":" + rechargeRecord.getPlayPaiCoins());
+ RechargesDetail consumeDetail = new RechargesDetail();
+ 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);
}
}
- vo.setDetailList(details);
- return vo;
+
+ //世界杯
+ 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) {
- // TODO: 2023/7/10 充值支付
- switch (request.getPayType()){
- case 1:
- WeChatPayment(request.getPayAmount());
- break;
- case 2:
- AlipayPayment(request.getPayAmount());
- break;
- default:
- break;
+ 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 void AlipayPayment(BigDecimal payAmount) {
-
+ 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", "");
+// ResultUtil weixinpay = payMoneyUtil.weixinpayV3(WxV3PayConfig.smidVx,"玩湃币充值", code,
+// "/base/recharge/wechatRechargeCallback1",
+// Long.valueOf(amount.toString()));
+ return weixinpay;
}
- private void WeChatPayment(BigDecimal payAmount) {
+ @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