修改开通课程时按照课程门数平均金额再相加不相等问题

This commit is contained in:
wuchunlei
2025-10-09 15:56:44 +08:00
parent 29765b76e4
commit 41f2446ad2
5 changed files with 71 additions and 29 deletions

View File

@@ -1126,7 +1126,8 @@ public class BuyOrderController {
private void addCourseToUser(BuyOrder orderEntity){
List<ShopProductCourseEntity> orderCourse = buyOrderService.getOrderCourse(orderEntity.getOrderSn());
for ( ShopProductCourseEntity s : orderCourse){
for (int i=0;i<orderCourse.size();i++){
ShopProductCourseEntity s = orderCourse.get(i);
LambdaQueryWrapper<UserCourseBuyEntity> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(UserCourseBuyEntity::getUserId,orderEntity.getUserId());
wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId());
@@ -1171,8 +1172,15 @@ public class BuyOrderController {
userCourseBuyLog.setBeginDay(0);
userCourseBuyLog.setDays(s.getDays());
}
userCourseBuyLog.setFee(orderEntity.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP));
userCourseBuyLog.setJf(orderEntity.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP));
BigDecimal fee = orderEntity.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP);
BigDecimal jf = orderEntity.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP);
if (i==(orderCourse.size()-1)){
userCourseBuyLog.setFee(orderEntity.getRealMoney().subtract(fee.multiply(new BigDecimal(orderCourse.size()-1))));
userCourseBuyLog.setJf(orderEntity.getJfDeduction().subtract(jf.multiply(new BigDecimal(orderCourse.size()-1))));
}else {
userCourseBuyLog.setFee(fee);
userCourseBuyLog.setJf(jf);
}
userCourseBuyLogService.save(userCourseBuyLog);
}
}

View File

@@ -87,7 +87,8 @@ public class UserCourseBuyController {
int days = Integer.parseInt(params.get("days").toString());
String come = params.get("come").toString();
String[] catalogueIds = catalogueId.split(",");
for (String id : catalogueIds) {
for (int i=0;i<catalogueIds.length;i++) {
String id = catalogueIds[i];
UserCourseBuyEntity userCourseBuyEntity = userCourseBuyService.getOne(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getCatalogueId,id)
.eq(UserCourseBuyEntity::getUserId,userId));
@@ -107,8 +108,17 @@ public class UserCourseBuyController {
userCourseBuyLog.setPayTime(new Date());
userCourseBuyLog.setOrderSn(params.get("orderSn").toString());
userCourseBuyLog.setDays(days);
userCourseBuyLog.setFee(new BigDecimal(params.get("fee").toString()));
userCourseBuyLog.setJf(new BigDecimal(params.get("jf").toString()));
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 {

View File

@@ -117,7 +117,8 @@ public class UserCourseBuyServiceImpl extends ServiceImpl<UserCourseBuyDao, User
ArrayList<UserCourseBuyEntity> l = new ArrayList<>();
ArrayList<UserCourseBuyLog> logs = new ArrayList<>();
for (MyUserEntity m : addCourses.getList()){
for (String s : cata) {
for (int i=0;i<cata.length;i++) {
String s = cata[i];
int check = this.getBaseMapper().selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getCatalogueId, s)
.eq(UserCourseBuyEntity::getUserId, m.getId())).intValue();
@@ -137,7 +138,29 @@ public class UserCourseBuyServiceImpl extends ServiceImpl<UserCourseBuyDao, User
userCourseBuyEntity.setCatalogueId(Integer.valueOf(s));
userCourseBuyEntity.setDays(addCourses.getDays());
userCourseBuyEntity.setUserId(m.getId());
l.add(userCourseBuyEntity);
this.save(userCourseBuyEntity);
//插入开课记录
UserCourseBuyLog userCourseBuyLog = new UserCourseBuyLog();
userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId());
userCourseBuyLog.setUserId(userCourseBuyEntity.getUserId());
userCourseBuyLog.setType("master");
userCourseBuyLog.setPayType(addCourses.getPayType());
userCourseBuyLog.setPayTime(new Date());
userCourseBuyLog.setOrderSn(addCourses.getOrderSn());
userCourseBuyLog.setDays(addCourses.getDays());
BigDecimal totalFee = new BigDecimal(addCourses.getFee());
BigDecimal totalJf = new BigDecimal(addCourses.getJf());
BigDecimal fee = totalFee.divide(new BigDecimal(cata.length),2, BigDecimal.ROUND_HALF_UP);
BigDecimal jf = totalJf.divide(new BigDecimal(cata.length),2, BigDecimal.ROUND_HALF_UP);
if (i==(cata.length-1)){
userCourseBuyLog.setFee(totalFee.subtract(fee.multiply(new BigDecimal(cata.length-1))));
userCourseBuyLog.setJf(totalJf.subtract(jf.multiply(new BigDecimal(cata.length-1))));
}else {
userCourseBuyLog.setFee(fee);
userCourseBuyLog.setJf(jf);
}
userCourseBuyLog.setRemark(addCourses.getRemark());
logs.add(userCourseBuyLog);
AddCoursesFrag addCoursesFrag = new AddCoursesFrag();
addCoursesFrag.setUserId(m.getId());
@@ -151,21 +174,6 @@ public class UserCourseBuyServiceImpl extends ServiceImpl<UserCourseBuyDao, User
}
}
}
this.saveBatch(l);
for(UserCourseBuyEntity ucb : l){
UserCourseBuyLog userCourseBuyLog = new UserCourseBuyLog();
userCourseBuyLog.setUserCourseBuyId(ucb.getId());
userCourseBuyLog.setUserId(ucb.getUserId());
userCourseBuyLog.setType("master");
userCourseBuyLog.setPayType(addCourses.getPayType());
userCourseBuyLog.setPayTime(new Date());
userCourseBuyLog.setOrderSn(addCourses.getOrderSn());
userCourseBuyLog.setDays(addCourses.getDays());
userCourseBuyLog.setFee(new BigDecimal(addCourses.getFee()));
userCourseBuyLog.setJf(new BigDecimal(addCourses.getJf()));
userCourseBuyLog.setRemark(addCourses.getRemark());
logs.add(userCourseBuyLog);
}
userCourseBuyLogDao.insert(logs);
frag.put("successList",successList);
frag.put("failList",falseList);

View File

@@ -261,7 +261,8 @@ public class AliPayServiceImpl implements AliPayService {
}
//开通coursestart
List<ShopProductCourseEntity> orderCourse = buyOrderService.getOrderCourse(order.getOrderSn());
for ( ShopProductCourseEntity s : orderCourse){
for (int i=0;i<orderCourse.size();i++){
ShopProductCourseEntity s = orderCourse.get(i);
LambdaQueryWrapper<UserCourseBuyEntity> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(UserCourseBuyEntity::getUserId,order.getUserId());
wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId());
@@ -306,8 +307,15 @@ public class AliPayServiceImpl implements AliPayService {
userCourseBuyLog.setBeginDay(0);
userCourseBuyLog.setDays(s.getDays());
}
userCourseBuyLog.setFee(order.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP));
userCourseBuyLog.setJf(order.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP));
BigDecimal fee = order.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP);
BigDecimal jf = order.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP);
if (i==(orderCourse.size()-1)){
userCourseBuyLog.setFee(order.getRealMoney().subtract(fee.multiply(new BigDecimal(orderCourse.size()-1))));
userCourseBuyLog.setJf(order.getJfDeduction().subtract(jf.multiply(new BigDecimal(orderCourse.size()-1))));
}else {
userCourseBuyLog.setFee(fee);
userCourseBuyLog.setJf(jf);
}
userCourseBuyLogDao.insert(userCourseBuyLog);
}
//开通courseend

View File

@@ -219,7 +219,8 @@ public class WxpayServiceImpl extends ServiceImpl<PayWechatOrderDao, PayWechatOr
//开通coursestart
List<ShopProductCourseEntity> orderCourse = buyOrderService.getOrderCourse(order.getOrderSn());
for ( ShopProductCourseEntity s : orderCourse){
for (int i = 0; i < orderCourse.size(); i++) {
ShopProductCourseEntity s = orderCourse.get(i);
LambdaQueryWrapper<UserCourseBuyEntity> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(UserCourseBuyEntity::getUserId,order.getUserId());
wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId());
@@ -264,8 +265,15 @@ public class WxpayServiceImpl extends ServiceImpl<PayWechatOrderDao, PayWechatOr
userCourseBuyLog.setBeginDay(0);
userCourseBuyLog.setDays(s.getDays());
}
userCourseBuyLog.setFee(order.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP));
userCourseBuyLog.setJf(order.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP));
BigDecimal fee = order.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP);
BigDecimal jf = order.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP);
if (i==(orderCourse.size()-1)){
userCourseBuyLog.setFee(order.getRealMoney().subtract(fee.multiply(new BigDecimal(orderCourse.size()-1))));
userCourseBuyLog.setJf(order.getJfDeduction().subtract(jf.multiply(new BigDecimal(orderCourse.size()-1))));
}else {
userCourseBuyLog.setFee(fee);
userCourseBuyLog.setJf(jf);
}
userCourseBuyLogDao.insert(userCourseBuyLog);
}
//开通courseend