From b716afd262ff60ff1db0b1e7c95800e7ad2b7202 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 07 七月 2025 11:07:37 +0800 Subject: [PATCH] 支付版本更新 根据资金流向使用V2或V3服务商版本支付 --- cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PayHuiminServiceImpl.java | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 159 insertions(+), 3 deletions(-) diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PayHuiminServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PayHuiminServiceImpl.java index baa0086..d3e15ac 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PayHuiminServiceImpl.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PayHuiminServiceImpl.java @@ -1,13 +1,36 @@ package com.dsh.activity.service.impl; +import cn.hutool.core.collection.CollUtil; +import com.alipay.api.AlipayApiException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.dsh.activity.entity.THuiminAgreement; +import com.dsh.activity.entity.HuiminPayQuery; +import com.dsh.activity.entity.THuiminRecord; import com.dsh.activity.entity.TPayHuimin; -import com.dsh.activity.mapper.HuiminAgreementMapper; +import com.dsh.activity.entity.TStudent; +import com.dsh.activity.feignclient.account.AppUserClient; +import com.dsh.activity.feignclient.account.StudentClient; +import com.dsh.activity.feignclient.account.model.AppUser; import com.dsh.activity.mapper.PayHuiminMapper; -import com.dsh.activity.service.HuiminAgreementService; +import com.dsh.activity.model.response.SalesDetailVO; +import com.dsh.activity.service.HuiminRecordService; import com.dsh.activity.service.PayHuiminService; +import com.dsh.activity.util.DateUtil; +import com.dsh.activity.util.PayMoneyUtil; +import com.dsh.activity.util.ResultUtil; +import com.sun.org.apache.bcel.internal.generic.NEW; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; /** * @author zhibing.pu @@ -15,5 +38,138 @@ */ @Service public class PayHuiminServiceImpl extends ServiceImpl<PayHuiminMapper, TPayHuimin> implements PayHuiminService { + @Autowired + private AppUserClient appUserClient; + @Autowired + private StudentClient studentClient; + @Autowired + private HuiminRecordService huiminRecordService; + @Resource + private PayMoneyUtil payMoneyUtil; + @Override + public Page<SalesDetailVO> selectPage(HuiminPayQuery query) { + Page<SalesDetailVO> salesDetailVOPage = baseMapper.selectSalesDetailPage(new Page<>(query.getCurrent(), query.getSize()), query); + List<SalesDetailVO> records = salesDetailVOPage.getRecords(); + for (SalesDetailVO record : records) { + List<THuiminRecord> list = huiminRecordService.list(new LambdaQueryWrapper<THuiminRecord>() + .eq(THuiminRecord::getPayId, record.getId())); + record.setUseTimes(list.size()); + } + for (SalesDetailVO record : records) { + AppUser appUser = appUserClient.queryAppUser(record.getAppUserId()); + if (Objects.nonNull(appUser)){ + record.setUserName(appUser.getName()); + record.setPhone(appUser.getPhone()); + } + StringBuilder stringBuilder = new StringBuilder(); + String[] split = record.getStudentId().split(","); + for (String s : split) { + String replace = s.replace(" ", ""); + List<TStudent> studentById = studentClient.getStudentByIds(replace); + if (!studentById.isEmpty()){ + stringBuilder.append(studentById.get(0).getName()+","); + } + } + String string = stringBuilder.toString(); + if (StringUtils.hasLength(string)) { + String stringWithoutLastCharacter = string.substring(0, string.length() - 1); + record.setStudentName(stringWithoutLastCharacter); + } + } +// if (CollUtil.isNotEmpty(records)){ +// List<Integer> appUserIdList = records.stream().map(SalesDetailVO::getAppUserId).collect(Collectors.toList()); +// List<AppUser> appUserList = appUserClient.queryAppUserBatch(appUserIdList); +// Map<Integer, AppUser> appUserMap = appUserList.stream().collect(Collectors.toMap(AppUser::getId, appUser -> appUser)); +// records.forEach(item->{ +// AppUser appUser = appUserMap.get(item.getAppUserId()); +// if (Objects.nonNull(appUser)){ +// item.setUserName(appUser.getName()); +// item.setPhone(appUser.getPhone()); +// } +// List<TStudent> studentList = studentClient.getStudentByIds(item.getStudentId()); +// if (CollUtil.isNotEmpty(studentList)){ +// item.setStudentName(studentList.stream().map(TStudent::getName).collect(Collectors.joining(","))); +// } +// }); +// } + return salesDetailVOPage; + } + @Override + public Map<String, BigDecimal> getStaticsData(HuiminPayQuery query) { + return baseMapper.getStaticsData(query); + } + + @Override + public ResultUtil<?> refund(Integer id) throws AlipayApiException { + TPayHuimin payHuimin = this.getById(id); + if (Objects.nonNull(payHuimin)) { + // 后台录入订单直接修改为已退款 + if (payHuimin.getPaymentType()==3){ + payHuimin.setStatus(3); + payHuimin.setRefundStatus(3); + payHuimin.setRefundNumber(payHuimin.getCode()); + payHuimin.setRefundTime(new Date()); + this.updateById(payHuimin); + return ResultUtil.success(); + } + Integer count = huiminRecordService.lambdaQuery() + .eq(THuiminRecord::getPayId, payHuimin.getId()) + .count(); + if (count > 0 || new Date().after(DateUtil.addDay(payHuimin.getPaymentTime(),7))) { + //超过七日或者七日内有使用记录的退款:更改状态,实际退款线下操作。 + payHuimin.setRefundStatus(3); + } else { + if (payHuimin.getPaymentType() == 1) { + Map<String, String> map = payMoneyUtil.wxRefund(payHuimin.getOrderNumber(), payHuimin.getCode(), + payHuimin.getSalesMoney().toString(), payHuimin.getSalesMoney().toString(), "/base/huimin/callBack/wxRefundHuiminCallback"); + if (!"SUCCESS".equals(map.get("return_code"))) { + System.err.println("-------------微信退款失败---------"); + System.err.println(map.get("return_msg")); + return ResultUtil.error("微信退款失败"); + } + } else { + Map<String, String> map = payMoneyUtil.aliRefund(payHuimin.getOrderNumber(), payHuimin.getSalesMoney().toString()); + String return_code = map.get("code"); + if (!"10000".equals(return_code)) { + return ResultUtil.error(map.get("msg")); + } + String refund_id = map.get("trade_no"); + payHuimin.setRefundNumber(refund_id); + } + payHuimin.setRefundStatus(2); + } + payHuimin.setStatus(3); + payHuimin.setRefundTime(new Date()); + this.updateById(payHuimin); + } + return ResultUtil.success(); + } + + /** + * 导出数据 + * @param query + * @return + */ + @Override + public List<SalesDetailVO> exportData(HuiminPayQuery query) { + List<SalesDetailVO> records = baseMapper.exportData(query); + if (CollUtil.isNotEmpty(records)){ + List<Integer> appUserIdList = records.stream().map(SalesDetailVO::getAppUserId).collect(Collectors.toList()); + List<AppUser> appUserList = appUserClient.queryAppUserBatch(appUserIdList); + Map<Integer, AppUser> appUserMap = appUserList.stream().collect(Collectors.toMap(AppUser::getId, appUser -> appUser)); + records.forEach(item->{ + AppUser appUser = appUserMap.get(item.getAppUserId()); + if (Objects.nonNull(appUser)){ + item.setUserName(appUser.getName()); + item.setPhone(appUser.getPhone()); + } + List<TStudent> studentList = studentClient.getStudentByIds(item.getStudentId()); + if (CollUtil.isNotEmpty(studentList)){ + item.setStudentName(studentList.stream().map(TStudent::getName).collect(Collectors.joining(","))); + } + }); + } + return records; + } } -- Gitblit v1.7.1