You've already forked FrameTour-BE
优惠券、通知加参数
This commit is contained in:
@ -2,6 +2,7 @@ package com.ycwl.basic.service.pc.impl;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ycwl.basic.biz.CouponBiz;
|
||||
import com.ycwl.basic.biz.OrderBiz;
|
||||
import com.ycwl.basic.biz.PriceBiz;
|
||||
import com.ycwl.basic.constant.BaseContextHandler;
|
||||
@ -13,6 +14,7 @@ import com.ycwl.basic.model.mobile.order.IsBuyRespVO;
|
||||
import com.ycwl.basic.model.mobile.order.OrderAppPageReq;
|
||||
import com.ycwl.basic.model.mobile.order.PriceObj;
|
||||
import com.ycwl.basic.model.mobile.order.RefundOrderReq;
|
||||
import com.ycwl.basic.model.pc.couponRecord.resp.CouponRecordQueryResp;
|
||||
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
||||
import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
|
||||
import com.ycwl.basic.model.pc.order.entity.OrderEntity;
|
||||
@ -28,6 +30,7 @@ import com.ycwl.basic.model.pc.orderOp.entity.OrderOperationEntity;
|
||||
import com.ycwl.basic.model.pc.price.entity.PriceConfigEntity;
|
||||
import com.ycwl.basic.model.pc.price.resp.GoodsListRespVO;
|
||||
import com.ycwl.basic.model.pc.source.entity.SourceEntity;
|
||||
import com.ycwl.basic.model.pc.task.entity.TaskEntity;
|
||||
import com.ycwl.basic.model.pc.video.entity.VideoEntity;
|
||||
import com.ycwl.basic.model.wx.WXPayOrderReqVO;
|
||||
import com.ycwl.basic.model.wx.WxPayRespVO;
|
||||
@ -84,6 +87,8 @@ public class OrderServiceImpl implements OrderService {
|
||||
private PriceBiz priceBiz;
|
||||
@Autowired
|
||||
private FaceRepository faceRepository;
|
||||
@Autowired
|
||||
private CouponBiz couponBiz;
|
||||
|
||||
@Override
|
||||
public ApiResponse<PageInfo<OrderRespVO>> pageQuery(OrderReqQuery query) {
|
||||
@ -147,12 +152,12 @@ public class OrderServiceImpl implements OrderService {
|
||||
if (orderItems.size() > 1) {
|
||||
goodsName = "多项景区Vlog商品";
|
||||
} else {
|
||||
int type = orderItems.get(NumberConstant.ZERO).getGoodsType();
|
||||
if (type == NumberConstant.ZERO) {
|
||||
int type = orderItems.get(0).getGoodsType();
|
||||
if (type == 0) {
|
||||
goodsName = "景区Vlog视频";
|
||||
} else if (type == NumberConstant.ONE) {
|
||||
} else if (type == 1) {
|
||||
goodsName = "景区录像包";
|
||||
} else if (type == NumberConstant.TWO) {
|
||||
} else if (type == 2) {
|
||||
goodsName = "景区照片包";
|
||||
}
|
||||
}
|
||||
@ -310,44 +315,81 @@ public class OrderServiceImpl implements OrderService {
|
||||
if (isBuy.isBuy()) {
|
||||
return ApiResponse.fail("您已购买此内容,无需重复购买!");
|
||||
}
|
||||
OrderEntity order = new OrderEntity();
|
||||
Long orderId = SnowFlakeUtil.getLongId();
|
||||
order.setId(orderId);
|
||||
order.setMemberId(userId);
|
||||
MemberRespVO member = memberMapper.getById(userId);
|
||||
order.setOpenId(member.getOpenId());
|
||||
order.setScenicId(createOrderReqVO.getScenicId());
|
||||
// 看看有没有之前购买的订单
|
||||
OrderEntity order = orderMapper.getUserOrderItem(userId, createOrderReqVO.getScenicId(), 0, null, createOrderReqVO.getGoodsType(), createOrderReqVO.getGoodsId());
|
||||
boolean haveOldOrder = order != null;
|
||||
if (!haveOldOrder) {
|
||||
order = new OrderEntity();
|
||||
order.setId(SnowFlakeUtil.getLongId());
|
||||
order.setMemberId(userId);
|
||||
MemberRespVO member = memberMapper.getById(userId);
|
||||
order.setOpenId(member.getOpenId());
|
||||
order.setScenicId(createOrderReqVO.getScenicId());
|
||||
|
||||
PriceObj priceObj = orderBiz.queryPrice(order.getScenicId(), createOrderReqVO.getGoodsType(), createOrderReqVO.getGoodsId());
|
||||
order.setSlashPrice(priceObj.getSlashPrice());
|
||||
order.setPrice(priceObj.getPrice());
|
||||
// 判断是否是本人数据
|
||||
FaceEntity goodsFace = faceRepository.getFace(priceObj.getFaceId());
|
||||
if (goodsFace != null && !goodsFace.getMemberId().equals(userId)) {
|
||||
return ApiResponse.fail("您无权购买此内容!");
|
||||
}
|
||||
// promo code
|
||||
order.setPayPrice(priceObj.getPrice());
|
||||
order.setPayPrice(order.getPayPrice().subtract(order.getCouponPrice()));
|
||||
if (order.getPayPrice().compareTo(BigDecimal.ZERO) < NumberConstant.ZERO) {
|
||||
// 至少需要支付0.01
|
||||
order.setPayPrice(BigDecimal.valueOf(0.01));
|
||||
}
|
||||
order.setFaceId(priceObj.getFaceId());
|
||||
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
|
||||
order.setStatus(OrderStateEnum.PAID.getState());
|
||||
order.setPayAt(new Date());
|
||||
} else {
|
||||
order.setStatus(OrderStateEnum.UNPAID.getState());
|
||||
}
|
||||
}
|
||||
// coupon
|
||||
CouponRecordQueryResp couponRecord = null;
|
||||
switch (createOrderReqVO.getGoodsType()) {
|
||||
case 0: // vlog
|
||||
VideoEntity video = videoRepository.getVideo(createOrderReqVO.getGoodsId());
|
||||
TaskEntity taskById = videoTaskRepository.getTaskById(video.getTaskId());
|
||||
if (taskById != null) {
|
||||
couponRecord = couponBiz.queryUserCouponRecord(order.getScenicId(), userId, order.getFaceId(), taskById.getTemplateId().toString());
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
couponRecord = couponBiz.queryUserCouponRecord(order.getScenicId(), userId, order.getFaceId(), String.valueOf(createOrderReqVO.getGoodsType()));
|
||||
break;
|
||||
}
|
||||
order.setCouponPrice(BigDecimal.ZERO);
|
||||
order.setCouponRecordId(null);
|
||||
order.setCouponId(null);
|
||||
if (couponRecord != null) {
|
||||
if (couponRecord.isUsable()) {
|
||||
order.setCouponId(couponRecord.getCouponId());
|
||||
order.setCouponRecordId(couponRecord.getId());
|
||||
order.setCouponPrice(couponRecord.getCoupon().calculateDiscountPrice(order.getPrice()));
|
||||
}
|
||||
}
|
||||
List<OrderItemEntity> orderItems = new ArrayList<>();
|
||||
OrderItemEntity orderItem = new OrderItemEntity();
|
||||
orderItem.setGoodsId(createOrderReqVO.getGoodsId());
|
||||
orderItem.setGoodsType(createOrderReqVO.getGoodsType());
|
||||
orderItem.setOrderId(orderId);
|
||||
orderItem.setOrderId(order.getId());
|
||||
orderItems.add(orderItem);
|
||||
PriceObj priceObj = orderBiz.queryPrice(order.getScenicId(), createOrderReqVO.getGoodsType(), createOrderReqVO.getGoodsId());
|
||||
order.setSlashPrice(priceObj.getSlashPrice());
|
||||
order.setPrice(priceObj.getPrice());
|
||||
// 判断是否是本人数据
|
||||
FaceEntity goodsFace = faceRepository.getFace(priceObj.getFaceId());
|
||||
if (goodsFace != null && !goodsFace.getMemberId().equals(userId)) {
|
||||
return ApiResponse.fail("您无权购买此内容!");
|
||||
}
|
||||
// promo code
|
||||
// coupon
|
||||
order.setPayPrice(priceObj.getPrice());
|
||||
order.setFaceId(priceObj.getFaceId());
|
||||
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
|
||||
order.setStatus(OrderStateEnum.PAID.getState());
|
||||
order.setPayAt(new Date());
|
||||
if (!haveOldOrder) {
|
||||
orderMapper.add(order);
|
||||
int addOrderItems = orderMapper.addOrderItems(orderItems);
|
||||
if (addOrderItems == NumberConstant.ZERO) {
|
||||
log.error("订单明细添加失败");
|
||||
return ApiResponse.fail("订单添加失败");
|
||||
}
|
||||
} else {
|
||||
order.setStatus(OrderStateEnum.UNPAID.getState());
|
||||
orderMapper.updateOrderPrice(order);
|
||||
}
|
||||
orderMapper.add(order);
|
||||
int addOrderItems = orderMapper.addOrderItems(orderItems);
|
||||
if (addOrderItems == NumberConstant.ZERO) {
|
||||
log.error("订单明细添加失败");
|
||||
return ApiResponse.fail("订单添加失败");
|
||||
}
|
||||
//点击支付按钮统计
|
||||
if (order.getPayPrice().compareTo(BigDecimal.ZERO) <= 0) {
|
||||
orderBiz.paidOrder(order.getId());
|
||||
return ApiResponse.success(new WxPayRespVO());
|
||||
|
@ -716,7 +716,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
||||
}
|
||||
ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId());
|
||||
String title = "您在【" + scenic.getName() + "】的专属影像";
|
||||
String page = "pages/videoSynthesis/index?scenicId=" + item.getScenicId() + "&faceId=" + item.getFaceId();
|
||||
String page = "pages/videoSynthesis/index?type=1&scenicId=" + item.getScenicId() + "&faceId=" + item.getFaceId();
|
||||
/**
|
||||
* 视频名称 {{thing1.DATA}}
|
||||
* 生成时间 {{time4.DATA}}
|
||||
|
Reference in New Issue
Block a user