diff --git a/src/main/java/com/peanut/modules/common/controller/OfflineActivityController.java b/src/main/java/com/peanut/modules/common/controller/OfflineActivityController.java index 54680334..512b9103 100644 --- a/src/main/java/com/peanut/modules/common/controller/OfflineActivityController.java +++ b/src/main/java/com/peanut/modules/common/controller/OfflineActivityController.java @@ -1,14 +1,30 @@ 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.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.OfflineActivityToUserService; +import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo; +import com.peanut.modules.pay.weChatPay.service.WxpayService; 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.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; 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.Map; /** @@ -23,6 +39,12 @@ public class OfflineActivityController { private OfflineActivityService offlineActivityService; @Autowired private OfflineActivityToUserService toUserService; + @Autowired + private BuyOrderService buyOrderService; + @Autowired + private WxpayService wxpayService; + @Autowired + private RabbitTemplate rabbitTemplate; @RequestMapping("/getOfflineActivityInfo") @@ -30,5 +52,51 @@ public class OfflineActivityController { 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() + .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; + }; + } + } diff --git a/src/main/java/com/peanut/modules/common/entity/BuyOrder.java b/src/main/java/com/peanut/modules/common/entity/BuyOrder.java index a816b97d..264766bc 100644 --- a/src/main/java/com/peanut/modules/common/entity/BuyOrder.java +++ b/src/main/java/com/peanut/modules/common/entity/BuyOrder.java @@ -149,7 +149,7 @@ public class BuyOrder implements Serializable { private String buyType; /** - * vip order point abroadBook + * vip order point abroadBook offlineActivity */ private String orderType; @@ -165,6 +165,10 @@ public class BuyOrder implements Serializable { private Integer vipBuyConfigId; + private Integer abroadBookId;//海外读书购买书籍id + + private Integer offlineActivityId;//线下活动id + /** * 地址id */ diff --git a/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java b/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java index e76086cf..13e1f3e0 100644 --- a/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java +++ b/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java @@ -9,11 +9,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.common.utils.CopyUtils; import com.peanut.common.utils.OrderUtils; +import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.dao.*; import com.peanut.modules.book.service.*; import com.peanut.modules.common.entity.*; import com.peanut.modules.common.service.CouponHistoryService; 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.pay.alipay.config.AliPayConfig; import com.peanut.modules.pay.alipay.config.AliPayUtil; @@ -78,6 +80,8 @@ public class AliPayServiceImpl implements AliPayService { private CouponService couponService; @Autowired private CouponHistoryService couponHistoryService; + @Autowired + private OfflineActivityToUserService offlineActivityToUserService; @Override public String pay(AlipayDTO payDto) { @@ -170,6 +174,17 @@ public class AliPayServiceImpl implements AliPayService { 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)){ //更新 订单 记录 buyOrderService.updateOrderStatus(Integer.valueOf(customerid),oldPayZfbOrderEntity.getRelevanceoid(),"2"); diff --git a/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java b/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java index 13c022d8..5ccba614 100644 --- a/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java +++ b/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java @@ -7,11 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.dao.*; import com.peanut.modules.book.service.*; import com.peanut.modules.common.entity.*; import com.peanut.modules.common.service.CouponHistoryService; 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.pay.refund.entity.PayRefundOrder; import com.peanut.modules.pay.refund.service.PayRefundOrderService; @@ -86,6 +88,8 @@ public class WxpayServiceImpl extends ServiceImpl