线下活动报名

This commit is contained in:
wuchunlei
2024-11-26 18:08:08 +08:00
parent 168dd86a6f
commit 238a6364a4
4 changed files with 103 additions and 1 deletions

View File

@@ -1,14 +1,30 @@
package com.peanut.modules.common.controller; package com.peanut.modules.common.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.peanut.common.utils.R; 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.book.service.BuyOrderService;
import com.peanut.modules.common.entity.BuyOrder;
import com.peanut.modules.common.entity.MyUserEntity;
import com.peanut.modules.common.service.MyUserService;
import com.peanut.modules.common.service.OfflineActivityService; import com.peanut.modules.common.service.OfflineActivityService;
import com.peanut.modules.common.service.OfflineActivityToUserService; import com.peanut.modules.common.service.OfflineActivityToUserService;
import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo;
import com.peanut.modules.pay.weChatPay.service.WxpayService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
@@ -23,6 +39,12 @@ public class OfflineActivityController {
private OfflineActivityService offlineActivityService; private OfflineActivityService offlineActivityService;
@Autowired @Autowired
private OfflineActivityToUserService toUserService; private OfflineActivityToUserService toUserService;
@Autowired
private BuyOrderService buyOrderService;
@Autowired
private WxpayService wxpayService;
@Autowired
private RabbitTemplate rabbitTemplate;
@RequestMapping("/getOfflineActivityInfo") @RequestMapping("/getOfflineActivityInfo")
@@ -30,5 +52,51 @@ public class OfflineActivityController {
return R.ok().put("result", offlineActivityService.getById(params.get("id").toString())); return R.ok().put("result", offlineActivityService.getById(params.get("id").toString()));
} }
//线下活动报名
@RequestMapping("/offlineActivityPaySave")
@Transactional
public R relearnSave(@RequestBody BuyOrder buyOrder){
int uid = ShiroUtils.getUId();
buyOrder.setOrderStatus("0");
buyOrder.setOrderType("offlineActivity");
String timeId = IdWorker.getTimeId().substring(0, 32);
buyOrder.setOrderSn(timeId);
buyOrder.setUserId(uid);
buyOrderService.save(buyOrder);
BigDecimal totalPrice = buyOrder.getRealMoney();
//微信支付预付款订单
if(Constants.PAYMENT_METHOD_WECHAT_PAY.equals(buyOrder.getPaymentMethod())){
BuyOrder buyOrderEntity = buyOrderService.getBaseMapper().selectOne(new LambdaQueryWrapper<BuyOrder>()
.eq(BuyOrder::getOrderSn, timeId));
WechatPaymentInfo paymentInfo = new WechatPaymentInfo();
paymentInfo.setOrderSn(buyOrderEntity.getOrderSn());
paymentInfo.setBuyOrderId(buyOrder.getOrderId());
paymentInfo.setTotalAmount(buyOrderEntity.getRealMoney());
if (buyOrder.getCome()==2){
paymentInfo.setAppName("wumen");
} else if (buyOrder.getCome()==1) {
paymentInfo.setAppName("zmzm");
}else {
paymentInfo.setAppName(buyOrder.getAppName());
}
wxpayService.prepay(paymentInfo);
}
rabbitTemplate.convertAndSend(
DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE,
DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY,
buyOrder.getOrderId(),
messagePostProcessor()
);
return R.ok().put("orderSn", timeId).put("money", totalPrice);
}
private MessagePostProcessor messagePostProcessor() {
return message -> {
//设置有效期30分钟
message.getMessageProperties().setExpiration(String.valueOf(30 * 60 * 1000));
return message;
};
}
} }

View File

@@ -149,7 +149,7 @@ public class BuyOrder implements Serializable {
private String buyType; private String buyType;
/** /**
* vip order point abroadBook * vip order point abroadBook offlineActivity
*/ */
private String orderType; private String orderType;
@@ -165,6 +165,10 @@ public class BuyOrder implements Serializable {
private Integer vipBuyConfigId; private Integer vipBuyConfigId;
private Integer abroadBookId;//海外读书购买书籍id
private Integer offlineActivityId;//线下活动id
/** /**
* 地址id * 地址id
*/ */

View File

@@ -9,11 +9,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.CopyUtils; import com.peanut.common.utils.CopyUtils;
import com.peanut.common.utils.OrderUtils; import com.peanut.common.utils.OrderUtils;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.common.dao.*; import com.peanut.modules.common.dao.*;
import com.peanut.modules.book.service.*; import com.peanut.modules.book.service.*;
import com.peanut.modules.common.entity.*; import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.CouponHistoryService; import com.peanut.modules.common.service.CouponHistoryService;
import com.peanut.modules.common.service.CouponService; import com.peanut.modules.common.service.CouponService;
import com.peanut.modules.common.service.OfflineActivityToUserService;
import com.peanut.modules.master.service.UserCourseBuyService; import com.peanut.modules.master.service.UserCourseBuyService;
import com.peanut.modules.pay.alipay.config.AliPayConfig; import com.peanut.modules.pay.alipay.config.AliPayConfig;
import com.peanut.modules.pay.alipay.config.AliPayUtil; import com.peanut.modules.pay.alipay.config.AliPayUtil;
@@ -78,6 +80,8 @@ public class AliPayServiceImpl implements AliPayService {
private CouponService couponService; private CouponService couponService;
@Autowired @Autowired
private CouponHistoryService couponHistoryService; private CouponHistoryService couponHistoryService;
@Autowired
private OfflineActivityToUserService offlineActivityToUserService;
@Override @Override
public String pay(AlipayDTO payDto) { public String pay(AlipayDTO payDto) {
@@ -170,6 +174,17 @@ public class AliPayServiceImpl implements AliPayService {
couponService.useCouponAmount(couponHistory); couponService.useCouponAmount(couponHistory);
} }
if("offlineActivity".equals(subject)){
//更新 订单 记录
buyOrderService.updateOrderStatus(Integer.valueOf(customerid),oldPayZfbOrderEntity.getRelevanceoid(),"2");
//插入活动人员关联
OfflineActivityToUser offlineActivityToUser = new OfflineActivityToUser();
offlineActivityToUser.setActivityId(order.getOfflineActivityId());
offlineActivityToUser.setOrderId(order.getOrderId());
offlineActivityToUser.setUserId(ShiroUtils.getUId());
offlineActivityToUserService.save(offlineActivityToUser);
}
if("relearn".equals(subject)){ if("relearn".equals(subject)){
//更新 订单 记录 //更新 订单 记录
buyOrderService.updateOrderStatus(Integer.valueOf(customerid),oldPayZfbOrderEntity.getRelevanceoid(),"2"); buyOrderService.updateOrderStatus(Integer.valueOf(customerid),oldPayZfbOrderEntity.getRelevanceoid(),"2");

View File

@@ -7,11 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.common.dao.*; import com.peanut.modules.common.dao.*;
import com.peanut.modules.book.service.*; import com.peanut.modules.book.service.*;
import com.peanut.modules.common.entity.*; import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.CouponHistoryService; import com.peanut.modules.common.service.CouponHistoryService;
import com.peanut.modules.common.service.CouponService; import com.peanut.modules.common.service.CouponService;
import com.peanut.modules.common.service.OfflineActivityToUserService;
import com.peanut.modules.master.service.UserCourseBuyService; import com.peanut.modules.master.service.UserCourseBuyService;
import com.peanut.modules.pay.refund.entity.PayRefundOrder; import com.peanut.modules.pay.refund.entity.PayRefundOrder;
import com.peanut.modules.pay.refund.service.PayRefundOrderService; import com.peanut.modules.pay.refund.service.PayRefundOrderService;
@@ -86,6 +88,8 @@ public class WxpayServiceImpl extends ServiceImpl<PayWechatOrderDao, PayWechatOr
private CouponService couponService; private CouponService couponService;
@Autowired @Autowired
private CouponHistoryService couponHistoryService; private CouponHistoryService couponHistoryService;
@Autowired
private OfflineActivityToUserService offlineActivityToUserService;
@Override @Override
public void prepay(WechatPaymentInfo paymentInfo){ public void prepay(WechatPaymentInfo paymentInfo){
@@ -153,6 +157,17 @@ public class WxpayServiceImpl extends ServiceImpl<PayWechatOrderDao, PayWechatOr
couponHistory.setOrderId(order.getOrderId()); couponHistory.setOrderId(order.getOrderId());
couponService.useCouponAmount(couponHistory); couponService.useCouponAmount(couponHistory);
} }
if("offlineActivity".equals(order.getOrderType())){
//更新 订单 记录
buyOrderService.updateOrderStatus(order.getUserId(),orderNo,"2");
//插入活动人员关联
OfflineActivityToUser offlineActivityToUser = new OfflineActivityToUser();
offlineActivityToUser.setActivityId(order.getOfflineActivityId());
offlineActivityToUser.setOrderId(order.getOrderId());
offlineActivityToUser.setUserId(ShiroUtils.getUId());
offlineActivityToUserService.save(offlineActivityToUser);
}
if("relearn".equals(order.getOrderType())){ if("relearn".equals(order.getOrderType())){
//更新 订单 记录 //更新 订单 记录
buyOrderService.updateOrderStatus(order.getUserId(),orderNo,"2"); buyOrderService.updateOrderStatus(order.getUserId(),orderNo,"2");