You've already forked FrameTour-BE
优惠券、通知加参数
This commit is contained in:
91
src/main/java/com/ycwl/basic/biz/CouponBiz.java
Normal file
91
src/main/java/com/ycwl/basic/biz/CouponBiz.java
Normal file
@@ -0,0 +1,91 @@
|
||||
package com.ycwl.basic.biz;
|
||||
|
||||
import com.ycwl.basic.mapper.CouponMapper;
|
||||
import com.ycwl.basic.mapper.CouponRecordMapper;
|
||||
import com.ycwl.basic.model.pc.coupon.entity.CouponEntity;
|
||||
import com.ycwl.basic.model.pc.couponRecord.entity.CouponRecordEntity;
|
||||
import com.ycwl.basic.model.pc.couponRecord.resp.CouponRecordQueryResp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Component
|
||||
public class CouponBiz {
|
||||
@Autowired
|
||||
private CouponMapper couponMapper;
|
||||
@Autowired
|
||||
private CouponRecordMapper couponRecordMapper;
|
||||
|
||||
public CouponRecordQueryResp queryUserCouponRecord(Long scenicId, Long memberId, Long faceId, String goodsId) {
|
||||
CouponRecordQueryResp resp = new CouponRecordQueryResp();
|
||||
List<CouponRecordEntity> recordList = couponRecordMapper.queryByUserWithGoodsId(scenicId, memberId, goodsId);
|
||||
if (recordList != null && !recordList.isEmpty()) {
|
||||
Optional<CouponRecordEntity> record = recordList.stream().filter(item -> item.getStatus() == 0).filter(item -> item.getFaceId() == null || item.getFaceId().equals(faceId)).findAny();
|
||||
if (record.isPresent()) {
|
||||
CouponRecordEntity recordEntity = record.get();
|
||||
resp.setExist(true);
|
||||
resp.setId(recordEntity.getId());
|
||||
resp.setCouponId(recordEntity.getCouponId());
|
||||
CouponEntity coupon = couponMapper.getById(recordEntity.getCouponId());
|
||||
if (coupon != null) {
|
||||
resp.setMemberId(recordEntity.getMemberId());
|
||||
resp.setFaceId(recordEntity.getFaceId());
|
||||
resp.setStatus(recordEntity.getStatus());
|
||||
resp.setCreateTime(recordEntity.getCreateTime());
|
||||
resp.setUsedTime(recordEntity.getUsedTime());
|
||||
resp.setUsedOrderId(recordEntity.getUsedOrderId());
|
||||
resp.setCoupon(coupon);
|
||||
} else {
|
||||
resp.setExist(false);
|
||||
}
|
||||
} else {
|
||||
Optional<CouponRecordEntity> usedRecord = recordList.stream().filter(item -> item.getStatus() != 0).filter(item -> item.getFaceId() == null || item.getFaceId().equals(faceId)).findAny();
|
||||
if (usedRecord.isPresent()) {
|
||||
CouponRecordEntity recordEntity = usedRecord.get();
|
||||
resp.setExist(true);
|
||||
resp.setId(recordEntity.getId());
|
||||
resp.setCouponId(recordEntity.getCouponId());
|
||||
CouponEntity coupon = couponMapper.getById(recordEntity.getCouponId());
|
||||
if (coupon != null) {
|
||||
resp.setMemberId(recordEntity.getMemberId());
|
||||
resp.setFaceId(recordEntity.getFaceId());
|
||||
resp.setStatus(recordEntity.getStatus());
|
||||
resp.setCreateTime(recordEntity.getCreateTime());
|
||||
resp.setUsedTime(recordEntity.getUsedTime());
|
||||
resp.setUsedOrderId(recordEntity.getUsedOrderId());
|
||||
resp.setCoupon(coupon);
|
||||
} else {
|
||||
resp.setExist(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return resp;
|
||||
}
|
||||
|
||||
public boolean userGetCoupon(Long memberId, Long faceId, Integer couponId) {
|
||||
CouponEntity coupon = couponMapper.getById(couponId);
|
||||
if (coupon == null) {
|
||||
return false;
|
||||
}
|
||||
CouponRecordEntity entity = new CouponRecordEntity();
|
||||
entity.setCouponId(couponId);
|
||||
entity.setFaceId(faceId);
|
||||
entity.setMemberId(memberId);
|
||||
entity.setStatus(0);
|
||||
entity.setCreateTime(new Date());
|
||||
return couponRecordMapper.insert(entity) > 0;
|
||||
}
|
||||
|
||||
public boolean userUseCoupon(Long memberId, Long faceId, Integer couponRecordId, Long orderId) {
|
||||
CouponRecordEntity entity = new CouponRecordEntity();
|
||||
entity.setId(couponRecordId);
|
||||
entity.setStatus(1);
|
||||
entity.setUsedTime(new Date());
|
||||
entity.setUsedOrderId(orderId);
|
||||
return couponRecordMapper.updateById(entity) > 0;
|
||||
}
|
||||
}
|
@@ -8,6 +8,8 @@ import com.ycwl.basic.mapper.VideoMapper;
|
||||
import com.ycwl.basic.model.mobile.order.IsBuyRespVO;
|
||||
import com.ycwl.basic.model.mobile.order.PriceObj;
|
||||
import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq;
|
||||
import com.ycwl.basic.model.pc.coupon.entity.CouponEntity;
|
||||
import com.ycwl.basic.model.pc.couponRecord.resp.CouponRecordQueryResp;
|
||||
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
||||
import com.ycwl.basic.model.pc.order.entity.OrderEntity;
|
||||
import com.ycwl.basic.model.pc.order.entity.OrderItemEntity;
|
||||
@@ -70,6 +72,8 @@ public class OrderBiz {
|
||||
private VideoTaskRepository videoTaskRepository;
|
||||
@Autowired
|
||||
private BrokerBiz brokerBiz;
|
||||
@Autowired
|
||||
private CouponBiz couponBiz;
|
||||
|
||||
public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) {
|
||||
PriceObj priceObj = new PriceObj();
|
||||
@@ -172,8 +176,8 @@ public class OrderBiz {
|
||||
respVO.setOrderId(orderEntity.getId());
|
||||
}
|
||||
}
|
||||
// 还是没买
|
||||
respVO.setBuy(isBuy);
|
||||
// 还是没买
|
||||
if (!isBuy) {
|
||||
PriceObj priceObj = queryPrice(scenicId, goodsType, goodsId);
|
||||
if (priceObj == null) {
|
||||
@@ -184,6 +188,36 @@ public class OrderBiz {
|
||||
respVO.setGoodsId(goodsId);
|
||||
respVO.setOrigPrice(priceObj.getPrice());
|
||||
respVO.setSlashPrice(priceObj.getSlashPrice());
|
||||
switch (goodsType) {
|
||||
case 0: // vlog
|
||||
VideoEntity video = videoRepository.getVideo(goodsId);
|
||||
TaskEntity taskById = videoTaskRepository.getTaskById(video.getTaskId());
|
||||
if (taskById != null) {
|
||||
CouponRecordQueryResp recordQueryResp = couponBiz.queryUserCouponRecord(scenicId, userId, taskById.getFaceId(), taskById.getTemplateId().toString());
|
||||
if (recordQueryResp.isUsable()) {
|
||||
respVO.setCouponId(recordQueryResp.getCouponId());
|
||||
respVO.setCouponRecordId(recordQueryResp.getId());
|
||||
CouponEntity coupon = recordQueryResp.getCoupon();
|
||||
if (coupon != null) {
|
||||
respVO.setCouponPrice(coupon.calculateDiscountPrice(priceObj.getPrice()));
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
CouponRecordQueryResp recordQueryResp = couponBiz.queryUserCouponRecord(scenicId, userId, goodsId, String.valueOf(goodsType));
|
||||
if (recordQueryResp.isUsable()) {
|
||||
respVO.setCouponId(recordQueryResp.getCouponId());
|
||||
respVO.setCouponRecordId(recordQueryResp.getId());
|
||||
CouponEntity coupon = recordQueryResp.getCoupon();
|
||||
if (coupon != null) {
|
||||
respVO.setCouponPrice(coupon.calculateDiscountPrice(priceObj.getPrice()));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
return respVO;
|
||||
}
|
||||
@@ -206,6 +240,9 @@ public class OrderBiz {
|
||||
}
|
||||
});
|
||||
orderRepository.clearOrderCache(orderId); // 更新完了,清理下
|
||||
if (order.getCouponRecordId() != null) {
|
||||
couponBiz.userUseCoupon(order.getMemberId(), order.getFaceId(), order.getCouponRecordId(), orderId);
|
||||
}
|
||||
|
||||
//支付时间
|
||||
OrderAppRespVO orderDetail = orderMapper.appDetail(orderId);
|
||||
|
@@ -1,7 +1,8 @@
|
||||
package com.ycwl.basic.biz;
|
||||
|
||||
import com.ycwl.basic.model.mobile.order.IsBuyBatchRespVO;
|
||||
import com.ycwl.basic.model.mobile.order.IsBuyRespVO;
|
||||
import com.ycwl.basic.model.pc.coupon.entity.CouponEntity;
|
||||
import com.ycwl.basic.model.pc.couponRecord.resp.CouponRecordQueryResp;
|
||||
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
||||
import com.ycwl.basic.model.pc.order.entity.OrderEntity;
|
||||
import com.ycwl.basic.model.pc.price.entity.PriceConfigEntity;
|
||||
@@ -34,6 +35,8 @@ public class PriceBiz {
|
||||
private OrderBiz orderBiz;
|
||||
@Autowired
|
||||
private FaceRepository faceRepository;
|
||||
@Autowired
|
||||
private CouponBiz couponBiz;
|
||||
|
||||
public List<GoodsListRespVO> listGoodsByScenic(Long scenicId) {
|
||||
List<GoodsListRespVO> goodsList = new ArrayList<>();
|
||||
@@ -96,6 +99,30 @@ public class PriceBiz {
|
||||
return respVO;
|
||||
}
|
||||
}
|
||||
switch (type) {
|
||||
case 0: // 单个定价
|
||||
CouponRecordQueryResp recordQueryResp = couponBiz.queryUserCouponRecord(scenicId, userId, faceId, goodsIds);
|
||||
if (recordQueryResp.isUsable()) {
|
||||
respVO.setCouponId(recordQueryResp.getCouponId());
|
||||
respVO.setCouponRecordId(recordQueryResp.getId());
|
||||
CouponEntity coupon = recordQueryResp.getCoupon();
|
||||
if (coupon != null) {
|
||||
respVO.setCouponPrice(coupon.calculateDiscountPrice(priceConfig.getPrice()));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case -1:
|
||||
CouponRecordQueryResp oneCouponRecordQueryResp = couponBiz.queryUserCouponRecord(scenicId, userId, faceId, "-1");
|
||||
if (oneCouponRecordQueryResp.isUsable()) {
|
||||
respVO.setCouponId(oneCouponRecordQueryResp.getCouponId());
|
||||
respVO.setCouponRecordId(oneCouponRecordQueryResp.getId());
|
||||
CouponEntity coupon = oneCouponRecordQueryResp.getCoupon();
|
||||
if (coupon != null) {
|
||||
respVO.setCouponPrice(coupon.calculateDiscountPrice(priceConfig.getPrice()));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
respVO.setConfigId(priceConfig.getId());
|
||||
respVO.setGoodsIds(goodsIds);
|
||||
respVO.setType(type);
|
||||
|
Reference in New Issue
Block a user