培训班
This commit is contained in:
@@ -6,12 +6,8 @@ import com.peanut.common.utils.R;
|
||||
import com.peanut.common.utils.ShiroUtils;
|
||||
import com.peanut.config.Constants;
|
||||
import com.peanut.config.DelayQueueConfig;
|
||||
import com.peanut.modules.common.entity.BuyOrder;
|
||||
import com.peanut.modules.common.entity.TrainingClass;
|
||||
import com.peanut.modules.common.entity.TrainingToUser;
|
||||
import com.peanut.modules.common.service.BuyOrderService;
|
||||
import com.peanut.modules.common.service.TrainingClassService;
|
||||
import com.peanut.modules.common.service.TrainingToUserService;
|
||||
import com.peanut.modules.common.entity.*;
|
||||
import com.peanut.modules.common.service.*;
|
||||
import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo;
|
||||
import com.peanut.modules.pay.weChatPay.service.WxpayService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -25,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -41,10 +38,16 @@ public class TrainingClassController {
|
||||
@Autowired
|
||||
private TrainingToUserService trainingToUserService;
|
||||
@Autowired
|
||||
private com.peanut.modules.book.service.TransactionDetailsService transactionDetailsService;
|
||||
@Autowired
|
||||
private JfTransactionDetailsService jfTransactionDetailsService;
|
||||
@Autowired
|
||||
private BuyOrderService buyOrderService;
|
||||
@Autowired
|
||||
private WxpayService wxpayService;
|
||||
@Autowired
|
||||
private MyUserService userService;
|
||||
@Autowired
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
//获取用户当前培训班最低价格
|
||||
@@ -59,8 +62,17 @@ public class TrainingClassController {
|
||||
public R trainingClassList(@RequestBody Map<String,Object> params) {
|
||||
List<TrainingClass> trainingClassList = trainingClassService.list(new LambdaQueryWrapper<TrainingClass>()
|
||||
.eq(StringUtils.isNotEmpty(params.get("year").toString()),TrainingClass::getYear,params.get("year"))
|
||||
.orderByDesc(TrainingClass::getSingupFlag)
|
||||
.orderByAsc(TrainingClass::getSort));
|
||||
for (TrainingClass trainingClass : trainingClassList) {
|
||||
trainingClass.setFinalFee("0");
|
||||
Map m = trainingClassService.getFinalPriceByUser(trainingClass.getId(),ShiroUtils.getUId());
|
||||
if (m!=null&m.containsKey("identity")){
|
||||
trainingClass.setIdentity(m.get("identity").toString());
|
||||
}
|
||||
if (m!=null&m.containsKey("fee")){
|
||||
trainingClass.setFinalFee(m.get("fee").toString());
|
||||
}
|
||||
int count = trainingToUserService.count(new LambdaQueryWrapper<TrainingToUser>()
|
||||
.eq(TrainingToUser::getUserId, ShiroUtils.getUId())
|
||||
.eq(TrainingToUser::getTrainingId,trainingClass.getId()));
|
||||
@@ -83,7 +95,34 @@ public class TrainingClassController {
|
||||
buyOrder.setOrderSn(timeId);
|
||||
buyOrder.setUserId(ShiroUtils.getUId());
|
||||
buyOrderService.save(buyOrder);
|
||||
if (StringUtils.isNotEmpty(buyOrder.getUserName())){
|
||||
MyUserEntity user = userService.getById(buyOrder.getUserId());
|
||||
user.setName(buyOrder.getUserName());
|
||||
userService.updateById(user);
|
||||
}
|
||||
BigDecimal totalPrice = buyOrder.getRealMoney();
|
||||
//虚拟币支付
|
||||
if (Constants.PAYMENT_METHOD_VIRTUAL.equals(buyOrder.getPaymentMethod())) {
|
||||
buyOrder.setOrderStatus(Constants.ORDER_STATUS_TO_BE_SHIPPED);
|
||||
MyUserEntity user = userService.getById(buyOrder.getUserId());
|
||||
if (usePeanutCoin(user, totalPrice)) {
|
||||
//处理抵扣积分
|
||||
if(buyOrder.getJfDeduction().compareTo(BigDecimal.ZERO)>0){
|
||||
userCoinJf(buyOrder);
|
||||
}
|
||||
buyOrder.setSuccessTime(new Date());
|
||||
// 更新订单状态
|
||||
buyOrderService.updateOrderStatus(user.getId(), buyOrder.getOrderSn(), "2");
|
||||
//记录用户虚拟币消费
|
||||
if(totalPrice.compareTo(BigDecimal.ZERO)>0){
|
||||
transactionDetailsService.recordTransaction(buyOrder, user, totalPrice);
|
||||
}
|
||||
//插入培训班
|
||||
trainingClassService.addTrainingClassForUser(buyOrder);
|
||||
} else {
|
||||
return R.error(500, "余额不足!");
|
||||
}
|
||||
}
|
||||
//微信支付预付款订单
|
||||
if(Constants.PAYMENT_METHOD_WECHAT_PAY.equals(buyOrder.getPaymentMethod())){
|
||||
BuyOrder buyOrderEntity = buyOrderService.getBaseMapper().selectOne(new LambdaQueryWrapper<BuyOrder>()
|
||||
@@ -112,6 +151,32 @@ public class TrainingClassController {
|
||||
return R.ok().put("orderSn", timeId).put("money", totalPrice);
|
||||
}
|
||||
|
||||
private boolean usePeanutCoin(MyUserEntity user, BigDecimal totalPrice) {
|
||||
if (user.getPeanutCoin().compareTo(totalPrice) >= 0) {
|
||||
if(totalPrice.compareTo(BigDecimal.ZERO)==0){//纯积分支付,虚拟币不用支付
|
||||
return true;
|
||||
}
|
||||
user.setPeanutCoin(user.getPeanutCoin().subtract(totalPrice));
|
||||
userService.updateById(user);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void userCoinJf(BuyOrder order){
|
||||
MyUserEntity userEntity = userService.getById(order.getUserId());
|
||||
userEntity.setJf(userEntity.getJf().subtract(order.getJfDeduction()));
|
||||
userService.updateById(userEntity);
|
||||
JfTransactionDetails jfTransactionDetails = new JfTransactionDetails();
|
||||
jfTransactionDetails.setUserId(userEntity.getId());
|
||||
jfTransactionDetails.setChangeAmount(order.getJfDeduction().negate());
|
||||
jfTransactionDetails.setActType(1);
|
||||
jfTransactionDetails.setUserBalance(userEntity.getJf());
|
||||
jfTransactionDetails.setRelationId(order.getOrderId());
|
||||
jfTransactionDetails.setRemark("消费积分抵扣:"+order.getJfDeduction().toString()+",订单号:"+order.getOrderSn());
|
||||
jfTransactionDetailsService.save(jfTransactionDetails);
|
||||
}
|
||||
|
||||
private MessagePostProcessor messagePostProcessor() {
|
||||
return message -> {
|
||||
//设置有效期30分钟
|
||||
|
||||
@@ -70,6 +70,7 @@ public class TransactionDetailsController {
|
||||
}
|
||||
}
|
||||
detail.setProductName(productName);
|
||||
detail.setRelationId(buyOrder.getOrderId());
|
||||
}
|
||||
}
|
||||
return R.ok().put("transactionDetailsList",list);
|
||||
|
||||
Reference in New Issue
Block a user