后台开通课程,自动扣除天医币

This commit is contained in:
wuchunlei
2025-10-21 17:36:04 +08:00
parent 5d88b6c660
commit 5b6082bd57

View File

@@ -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<String, Object> params) {
@@ -81,19 +87,50 @@ public class UserCourseBuyController {
@RequestMapping("/insertUserCourseBuy")
@Transactional
public R insertUserCourseBuy(@RequestBody Map<String, Object> 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<catalogueIds.length;i++) {
String id = catalogueIds[i];
UserCourseBuyEntity userCourseBuyEntity = userCourseBuyService.getOne(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getCatalogueId,id)
long count = userCourseBuyService.count(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getCatalogueId,catalogueIds[i])
.eq(UserCourseBuyEntity::getUserId,userId));
if (userCourseBuyEntity==null){
userCourseBuyEntity = new UserCourseBuyEntity();
if (count>0){
CourseCatalogueEntity cc = courseCatalogueService.getById(catalogueIds[i]);
return R.error(cc.getTitle()+"已开通");
}
}
String courseInfo = "";
for (int i=0;i<catalogueIds.length;i++) {
String id = catalogueIds[i];
CourseCatalogueEntity cc = courseCatalogueService.getById(catalogueIds[i]);
courseInfo += cc.getTitle()+days+"";
UserCourseBuyEntity userCourseBuyEntity = new UserCourseBuyEntity();
userCourseBuyEntity.setUserId(userId);
userCourseBuyEntity.setCourseId(courseId);
userCourseBuyEntity.setCatalogueId(Integer.parseInt(id));
@@ -108,8 +145,6 @@ public class UserCourseBuyController {
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)){
@@ -121,10 +156,31 @@ public class UserCourseBuyController {
}
userCourseBuyLog.setRemark(params.get("remark").toString());
userCourseBuyLogService.save(userCourseBuyLog);
}else {
CourseCatalogueEntity catalogueEntity = courseCatalogueService.getById(id);
return R.error(catalogueEntity.getTitle()+"已开通");
}
if ("后台天医币".equals(params.get("payType").toString())){
if (totalFee.compareTo(BigDecimal.ZERO)>0){
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();
}