From 2a3d0885c11a73d41fb03c985f0032086cd8fa07 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 08 三月 2024 17:42:58 +0800
Subject: [PATCH] 合并代码

---
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupPaymentServiceImpl.java |  118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 118 insertions(+), 0 deletions(-)

diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupPaymentServiceImpl.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupPaymentServiceImpl.java
index e3501fd..8789d3c 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupPaymentServiceImpl.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupPaymentServiceImpl.java
@@ -1,10 +1,32 @@
 package com.dsh.communityWorldCup.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alipay.api.AlipayApiException;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.communityWorldCup.entity.WorldCup;
 import com.dsh.communityWorldCup.entity.WorldCupPayment;
+import com.dsh.communityWorldCup.entity.WorldCupPaymentParticipant;
+import com.dsh.communityWorldCup.feignclient.account.AppUserClient;
+import com.dsh.communityWorldCup.feignclient.account.model.AppUser;
+import com.dsh.communityWorldCup.feignclient.course.CoursePackageOrderStudentClient;
+import com.dsh.communityWorldCup.feignclient.course.model.CoursePackageOrderStudent;
 import com.dsh.communityWorldCup.mapper.WorldCupPaymentMapper;
+import com.dsh.communityWorldCup.model.DeductionClassHourList;
+import com.dsh.communityWorldCup.service.IWorldCupPaymentParticipantService;
 import com.dsh.communityWorldCup.service.IWorldCupPaymentService;
+import com.dsh.communityWorldCup.service.IWorldCupService;
+import com.dsh.communityWorldCup.util.PayMoneyUtil;
+import com.dsh.communityWorldCup.util.ResultUtil;
+import net.bytebuddy.asm.Advice;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author zhibing.pu
@@ -12,4 +34,100 @@
  */
 @Service
 public class WorldCupPaymentServiceImpl extends ServiceImpl<WorldCupPaymentMapper, WorldCupPayment> implements IWorldCupPaymentService {
+
+    @Autowired
+    private IWorldCupPaymentParticipantService worldCupPaymentParticipantService;
+
+    @Autowired
+    private IWorldCupService worldCupService;
+
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
+
+    @Resource
+    private AppUserClient appUserClient;
+
+    @Resource
+    private CoursePackageOrderStudentClient coursePackageOrderStudentClient;
+
+
+
+
+    /**
+     * 取消已报名的世界杯
+     * @param id
+     * @return
+     */
+    @Override
+    public ResultUtil cancelMyWorldCup(String id) {
+        WorldCupPaymentParticipant worldCupPaymentParticipant = worldCupPaymentParticipantService.getById(id);
+        WorldCupPayment worldCupPayment = this.getById(worldCupPaymentParticipant.getWorldCupPaymentId());
+        WorldCup worldCup = worldCupService.getById(worldCupPayment.getWorldCupId());
+        //开始前一天不能取消
+        if(worldCup.getStartTime().getTime() < System.currentTimeMillis() + 86400000L){
+            return ResultUtil.error("世界杯快开始了,不能取消");
+        }
+        //开始处理退款
+        //免费
+        if(worldCupPayment.getPayType() == 0){
+            worldCupPayment.setRefundOrderNo("");
+            worldCupPayment.setRefundTime(new Date());
+            worldCupPayment.setPayStatus(3);
+            this.updateById(worldCupPayment);
+            return ResultUtil.success();
+        }
+        List<WorldCupPaymentParticipant> list1 = worldCupPaymentParticipantService.list(new QueryWrapper<WorldCupPaymentParticipant>()
+                .eq("worldCupPaymentId", worldCupPayment.getId()).eq("alreadyEntered", 0));
+        BigDecimal multiply = worldCupPayment.getUnitPrice().multiply(new BigDecimal(list1.size()));
+        //微信支付
+        if(worldCupPayment.getPayType() == 1){
+            Map<String, String> map = payMoneyUtil.wxRefund(worldCupPayment.getPayOrderNo(), worldCupPayment.getCode(),
+                    worldCupPayment.getAmount().toString(), multiply.toString(), "/base/worldCup/wxRefundWorldCupCallback");
+            if(!"SUCCESS".equals(map.get("return_code"))){
+                System.err.println("-------------微信退款失败---------");
+                System.err.println(map.get("return_msg"));
+                return ResultUtil.error("微信退款失败");
+            }
+        }
+        //支付宝支付
+        if(worldCupPayment.getPayType() == 2){
+            Map<String, String> map = null;
+            try {
+                map = payMoneyUtil.aliRefund(worldCupPayment.getPayOrderNo(), multiply.toString());
+            } catch (AlipayApiException e) {
+                throw new RuntimeException(e);
+            }
+            if("10000".equals(map.get("code"))){
+                String trade_no = map.get("trade_no");
+                worldCupPayment.setRefundTime(new Date());
+                worldCupPayment.setRefundOrderNo(trade_no);
+                worldCupPayment.setPayStatus(3);
+                this.updateById(worldCupPayment);
+            }
+        }
+        //玩湃币支付
+        if(worldCupPayment.getPayType() == 3){
+            Integer appUserId = worldCupPayment.getAppUserId();
+            AppUser appUser = appUserClient.getAppUser(appUserId);
+            appUser.setPlayPaiCoins(appUser.getPlayPaiCoins() + multiply.intValue());
+            appUserClient.updateAppUser(appUser);
+            worldCupPayment.setRefundTime(new Date());
+            worldCupPayment.setRefundOrderNo("");
+            worldCupPayment.setPayStatus(3);
+            this.updateById(worldCupPayment);
+        }
+        //课时支付
+        if(worldCupPayment.getPayType() == 4){
+            for (WorldCupPaymentParticipant worldCupPaymentParticipant1 : list1) {
+                String content = worldCupPaymentParticipant1.getContent();
+                DeductionClassHourList deductionClassHourList = JSON.parseObject(content, DeductionClassHourList.class);
+                coursePackageOrderStudentClient.backspaceClassHour(deductionClassHourList);
+            }
+            worldCupPayment.setRefundTime(new Date());
+            worldCupPayment.setRefundOrderNo("");
+            worldCupPayment.setPayStatus(3);
+            this.updateById(worldCupPayment);
+        }
+        return ResultUtil.success();
+    }
 }

--
Gitblit v1.7.1