From 5b6082bd57f78cb5fe07631482bbe00c1f16e141 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Tue, 21 Oct 2025 17:36:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=BC=80=E9=80=9A=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=EF=BC=8C=E8=87=AA=E5=8A=A8=E6=89=A3=E9=99=A4=E5=A4=A9?= =?UTF-8?q?=E5=8C=BB=E5=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/UserCourseBuyController.java | 140 ++++++++++++------ 1 file changed, 98 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java b/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java index 77f850ba..83c3062d 100644 --- a/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java +++ b/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java @@ -6,28 +6,26 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.common.utils.DateUtils; import com.peanut.common.utils.R; import com.peanut.modules.common.entity.*; +import com.peanut.modules.common.service.JfTransactionDetailsService; +import com.peanut.modules.common.service.TransactionDetailsService; import com.peanut.modules.common.service.UserCourseBuyLogService; import com.peanut.modules.common.to.AddCourses; import com.peanut.modules.common.vo.AddCoursesFrag; import com.peanut.modules.master.service.CourseCatalogueService; +import com.peanut.modules.master.service.CourseService; +import com.peanut.modules.master.service.MyUserService; import com.peanut.modules.master.service.UserCourseBuyService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - -import java.io.*; import java.math.BigDecimal; -import java.net.URL; -import java.net.URLConnection; import java.util.ArrayList; import java.util.Date; -import java.util.Iterator; import java.util.Map; /** @@ -41,9 +39,17 @@ public class UserCourseBuyController { @Autowired private UserCourseBuyService userCourseBuyService; @Autowired + private CourseService courseService; + @Autowired private CourseCatalogueService courseCatalogueService; @Autowired private UserCourseBuyLogService userCourseBuyLogService; + @Autowired + private MyUserService userService; + @Autowired + private TransactionDetailsService transactionDetailsService; + @Autowired + private JfTransactionDetailsService jfTransactionDetailsService; @RequestMapping("/listByPage") public R listByPage(@RequestBody Map params) { @@ -81,50 +87,100 @@ public class UserCourseBuyController { @RequestMapping("/insertUserCourseBuy") @Transactional public R insertUserCourseBuy(@RequestBody Map params) { + if (StringUtils.isEmpty(params.get("payType").toString())){ + return R.error("支付方式不能为空"); + } + BigDecimal totalFee = new BigDecimal(params.get("fee").toString()); + BigDecimal totalJf = new BigDecimal(params.get("jf").toString()); + String payType = params.get("payType").toString(); int userId = Integer.parseInt(params.get("userId").toString()); + MyUserEntity user = userService.getById(userId); + if (totalFee.compareTo(BigDecimal.ZERO)<0||totalJf.compareTo(BigDecimal.ZERO)<0) { + return R.error("金额积分不能为负数"); + } + if ("后台天医币".equals(payType)) { + if (totalFee.compareTo(BigDecimal.ZERO) > 0) { + if (user.getPeanutCoin().compareTo(totalFee) < 0) { + return R.error("天医币余额不足"); + } + } + if (totalJf.compareTo(BigDecimal.ZERO)>0){ + if (user.getJf().compareTo(totalJf)<0){ + return R.error("积分余额不足"); + } + } + } int courseId = Integer.parseInt(params.get("courseId").toString()); String catalogueId = params.get("catalogueId").toString(); int days = Integer.parseInt(params.get("days").toString()); String come = params.get("come").toString(); String[] catalogueIds = catalogueId.split(","); for (int i=0;i() - .eq(UserCourseBuyEntity::getCatalogueId,id) + long count = userCourseBuyService.count(new LambdaQueryWrapper() + .eq(UserCourseBuyEntity::getCatalogueId,catalogueIds[i]) .eq(UserCourseBuyEntity::getUserId,userId)); - if (userCourseBuyEntity==null){ - userCourseBuyEntity = new UserCourseBuyEntity(); - userCourseBuyEntity.setUserId(userId); - userCourseBuyEntity.setCourseId(courseId); - userCourseBuyEntity.setCatalogueId(Integer.parseInt(id)); - userCourseBuyEntity.setDays(days); - userCourseBuyEntity.setCome(come); - userCourseBuyService.save(userCourseBuyEntity); - UserCourseBuyLog userCourseBuyLog = new UserCourseBuyLog(); - userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); - userCourseBuyLog.setUserId(userCourseBuyEntity.getUserId()); - userCourseBuyLog.setType("master"); - userCourseBuyLog.setPayType(params.get("payType").toString()); - userCourseBuyLog.setPayTime(new Date()); - userCourseBuyLog.setOrderSn(params.get("orderSn").toString()); - userCourseBuyLog.setDays(days); - BigDecimal totalFee = new BigDecimal(params.get("fee").toString()); - BigDecimal totalJf = new BigDecimal(params.get("jf").toString()); - BigDecimal fee = totalFee.divide(new BigDecimal(catalogueIds.length),2, BigDecimal.ROUND_HALF_UP); - BigDecimal jf = totalJf.divide(new BigDecimal(catalogueIds.length),2, BigDecimal.ROUND_HALF_UP); - if (i==(catalogueIds.length-1)){ - userCourseBuyLog.setFee(totalFee.subtract(fee.multiply(new BigDecimal(catalogueIds.length-1)))); - userCourseBuyLog.setJf(totalJf.subtract(jf.multiply(new BigDecimal(catalogueIds.length-1)))); - }else { - userCourseBuyLog.setFee(fee); - userCourseBuyLog.setJf(jf); - } - userCourseBuyLog.setRemark(params.get("remark").toString()); - userCourseBuyLogService.save(userCourseBuyLog); - }else { - CourseCatalogueEntity catalogueEntity = courseCatalogueService.getById(id); - return R.error(catalogueEntity.getTitle()+"已开通"); + if (count>0){ + CourseCatalogueEntity cc = courseCatalogueService.getById(catalogueIds[i]); + return R.error(cc.getTitle()+"已开通"); } + + } + String courseInfo = ""; + for (int i=0;i0){ + user.setPeanutCoin(user.getPeanutCoin().subtract(totalFee)); + TransactionDetailsEntity transactionDetailsEntity = new TransactionDetailsEntity(); + transactionDetailsEntity.setUserId(user.getId()); + transactionDetailsEntity.setUserName(user.getName()); + transactionDetailsEntity.setChangeAmount(totalFee.negate()); + transactionDetailsEntity.setUserBalance(user.getPeanutCoin()); + transactionDetailsEntity.setTel(user.getTel()); + transactionDetailsEntity.setOrderType("扣费"); + transactionDetailsEntity.setNote("开通课程"+courseService.getById(courseId).getTitle()+courseInfo); + transactionDetailsService.save(transactionDetailsEntity); + } + if (totalJf.compareTo(BigDecimal.ZERO)>0){ + user.setJf(user.getJf().subtract(totalJf)); + JfTransactionDetails jfTransactionDetails = new JfTransactionDetails(); + jfTransactionDetails.setUserId(user.getId()); + jfTransactionDetails.setChangeAmount(totalJf.negate()); + jfTransactionDetails.setActType(1); + jfTransactionDetails.setUserBalance(user.getJf()); + jfTransactionDetails.setRemark("开通课程"+courseService.getById(courseId).getTitle()+courseInfo); + jfTransactionDetailsService.save(jfTransactionDetails); + } + userService.updateById(user); } return R.ok(); }