diff --git a/src/main/java/com/ycwl/basic/biz/CouponBiz.java b/src/main/java/com/ycwl/basic/biz/CouponBiz.java deleted file mode 100644 index 96130d44..00000000 --- a/src/main/java/com/ycwl/basic/biz/CouponBiz.java +++ /dev/null @@ -1,91 +0,0 @@ -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 recordList = couponRecordMapper.queryByUserWithGoodsId(scenicId, memberId, goodsId); - if (recordList != null && !recordList.isEmpty()) { - Optional 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 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; - } -} diff --git a/src/main/java/com/ycwl/basic/biz/OrderBiz.java b/src/main/java/com/ycwl/basic/biz/OrderBiz.java index 90053469..443c93f9 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -3,23 +3,14 @@ package com.ycwl.basic.biz; import com.ycwl.basic.enums.StatisticEnum; import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.mapper.OrderMapper; -import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.mapper.StatisticsMapper; -import com.ycwl.basic.mapper.VideoMapper; -import com.ycwl.basic.model.mobile.order.IsBuyBatchRespVO; 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; -import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO; -import com.ycwl.basic.model.pc.order.resp.OrderItemVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; -import com.ycwl.basic.model.pc.source.entity.SourceEntity; -import com.ycwl.basic.model.pc.task.entity.TaskEntity; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.pricing.dto.PriceCalculationRequest; @@ -42,16 +33,12 @@ import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.List; -import java.util.Optional; @Component public class OrderBiz { - @Autowired - private VideoMapper videoMapper; @Autowired private ScenicRepository scenicRepository; @Autowired @@ -69,16 +56,12 @@ public class OrderBiz { @Autowired private OrderMapper orderMapper; @Autowired - private SourceMapper sourceMapper; - @Autowired private ProfitSharingBiz profitSharingBiz; @Autowired private VideoTaskRepository videoTaskRepository; @Autowired private BrokerBiz brokerBiz; @Autowired - private CouponBiz couponBiz; - @Autowired @Lazy private PrinterService printerService; @Autowired @@ -244,10 +227,6 @@ public class OrderBiz { } }); orderRepository.clearOrderCache(orderId); // 更新完了,清理下 - Integer couponRecordId = order.getCouponRecordId(); - if (couponRecordId != null) { - couponBiz.userUseCoupon(order.getMemberId(), order.getFaceId(), couponRecordId, orderId); - } StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq(); statisticsRecordAddReq.setMemberId(order.getMemberId()); Long enterType = statisticsMapper.getUserRecentEnterType(order.getMemberId(), order.getCreateAt()); @@ -310,15 +289,4 @@ public class OrderBiz { profitSharingBiz.revokeProfitSharing(order.getScenicId(), orderId, "订单已退款"); } - /** - * 检查用户是否购买了指定商品,并额外校验订单的faceId是否匹配 - * @param userId 用户ID - * @param faceId 人脸ID - * @param goodsType 商品类型 - * @param goodsId 商品ID - * @return 是否已购买且faceId匹配 - */ - public boolean checkUserBuyFaceItem(Long userId, Long faceId, int goodsType, Long goodsId) { - return orderRepository.checkUserBuyFaceItem(userId, faceId, goodsType, goodsId); - } } diff --git a/src/main/java/com/ycwl/basic/biz/PriceBiz.java b/src/main/java/com/ycwl/basic/biz/PriceBiz.java index b1a1565b..a42494d5 100644 --- a/src/main/java/com/ycwl/basic/biz/PriceBiz.java +++ b/src/main/java/com/ycwl/basic/biz/PriceBiz.java @@ -17,6 +17,7 @@ import com.ycwl.basic.puzzle.entity.PuzzleTemplateEntity; import com.ycwl.basic.puzzle.mapper.PuzzleTemplateMapper; import com.ycwl.basic.repository.FaceRepository; import com.ycwl.basic.repository.MemberRelationRepository; +import com.ycwl.basic.repository.OrderRepository; import com.ycwl.basic.repository.PriceRepository; import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.TemplateRepository; @@ -45,16 +46,13 @@ public class PriceBiz { @Autowired private FaceRepository faceRepository; @Autowired - @Lazy - private FaceService faceService; - @Autowired - private CouponBiz couponBiz; - @Autowired private MemberRelationRepository memberRelationRepository; @Autowired private PuzzleTemplateMapper puzzleTemplateMapper; @Autowired private IProductTypeCapabilityManagementService productTypeCapabilityManagementService; + @Autowired + private OrderRepository orderRepository; public List listGoodsByScenic(Long scenicId) { List goodsList = new ArrayList<>(); @@ -231,30 +229,6 @@ 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); @@ -283,7 +257,7 @@ public class PriceBiz { allContentsPurchased = false; break; } - boolean hasPurchasedTemplate = orderBiz.checkUserBuyFaceItem(userId, faceId, -1, videoEntities.getFirst().getVideoId()); + boolean hasPurchasedTemplate = orderRepository.checkUserBuyFaceItem(userId, faceId, -1, videoEntities.getFirst().getVideoId()); if (!hasPurchasedTemplate) { allContentsPurchased = false; break; @@ -295,7 +269,7 @@ public class PriceBiz { if (scenicConfig != null) { // 检查录像集 if (!Boolean.TRUE.equals(scenicConfig.getDisableSourceVideo())) { - boolean hasPurchasedRecording = orderBiz.checkUserBuyFaceItem(userId, faceId, 1, faceId); + boolean hasPurchasedRecording = orderRepository.checkUserBuyFaceItem(userId, faceId, 1, faceId); if (!hasPurchasedRecording) { allContentsPurchased = false; } @@ -303,7 +277,7 @@ public class PriceBiz { // 检查照片集 if (allContentsPurchased && !Boolean.TRUE.equals(scenicConfig.getDisableSourceImage())) { - boolean hasPurchasedPhoto = orderBiz.checkUserBuyFaceItem(userId, faceId, 2, faceId); + boolean hasPurchasedPhoto = orderRepository.checkUserBuyFaceItem(userId, faceId, 2, faceId); if (!hasPurchasedPhoto) { allContentsPurchased = false; } diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java index 9b8e28c7..e83a0c50 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java @@ -13,7 +13,6 @@ import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity; import com.ycwl.basic.repository.MemberRelationRepository; import com.ycwl.basic.repository.OrderRepository; import com.ycwl.basic.utils.JacksonUtil; -import com.ycwl.basic.biz.CouponBiz; import com.ycwl.basic.biz.OrderBiz; import com.ycwl.basic.constant.StorageConstant; import com.ycwl.basic.image.watermark.ImageWatermarkFactory; @@ -99,8 +98,6 @@ public class GoodsServiceImpl implements GoodsService { @Autowired private DeviceRepository deviceRepository; @Autowired - private CouponBiz couponBiz; - @Autowired private VideoUpdateConfig videoUpdateConfig; @Autowired private MemberRelationRepository memberRelationRepository; @@ -248,15 +245,6 @@ public class GoodsServiceImpl implements GoodsService { goodsDetailVO.setShotTime(videoTaskRepository.getTaskShotDate(video.getTaskId())); goodsDetailVO.setLensNum(videoTaskRepository.getTaskLensNum(video.getTaskId())); goodsDetailVO.setDevicesNum(videoTaskRepository.getTaskDeviceNum(video.getTaskId())); - CouponRecordQueryResp couponRecord = couponBiz.queryUserCouponRecord(video.getScenicId(), userId, video.getFaceId(), video.getTemplateId().toString()); - if (couponRecord != null) { - if (couponRecord.isUsable()) { - goodsDetailVO.setCouponId(couponRecord.getCouponId()); - goodsDetailVO.setCouponRecordId(couponRecord.getId()); - goodsDetailVO.setCouponPrice(couponRecord.getCoupon().calculateDiscountPrice(goodsDetailVO.getOrigPrice())); - goodsDetailVO.setPrice(couponRecord.getCoupon().calculateDiscountedPrice(goodsDetailVO.getPrice())); - } - } return ApiResponse.success(goodsDetailVO); } diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java index 04f61c31..13bc7173 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java @@ -480,7 +480,7 @@ public class FaceServiceImpl implements FaceService { contentPageVO.setLockType(1); } } - boolean buy = orderBiz.checkUserBuyFaceItem(userId, faceId, contentPageVO.getGoodsType(), contentPageVO.getContentId()); + boolean buy = orderRepository.checkUserBuyFaceItem(userId, faceId, contentPageVO.getGoodsType(), contentPageVO.getContentId()); if (buy) { contentPageVO.setIsBuy(1); } else { diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java index fe99f2a0..c8003324 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java @@ -15,7 +15,6 @@ import com.ycwl.basic.pricing.service.ICouponService; import com.ycwl.basic.pricing.service.IVoucherService; 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; @@ -122,12 +121,8 @@ public class OrderServiceImpl implements OrderService { @Autowired private FaceRepository faceRepository; @Autowired - private CouponBiz couponBiz; - @Autowired private TemplateRepository templateRepository; @Autowired - private TaskTaskServiceImpl taskTaskService; - @Autowired private PrinterMapper printerMapper; @Autowired private ScenicService scenicService; @@ -786,45 +781,6 @@ public class OrderServiceImpl implements OrderService { order.setStatus(OrderStateEnum.UNPAID.getState()); } } - - // 只有新订单才计算优惠券,避免重复处理 - if (!haveOldOrder) { - // coupon - CouponRecordQueryResp couponRecord = null; - switch (createOrderReqVO.getGoodsType()) { - case 0: // vlog - VideoEntity video = videoRepository.getVideo(createOrderReqVO.getGoodsId()); - if (video != null && video.getTemplateId() != null) { - couponRecord = couponBiz.queryUserCouponRecord(order.getScenicId(), userId, order.getFaceId(), video.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()) { - log.info("优惠券可用,优惠券记录ID:{},优惠券ID:{}", couponRecord.getId(), couponRecord.getCouponId()); - order.setCouponId(couponRecord.getCouponId()); - order.setCouponRecordId(couponRecord.getId()); - order.setCouponPrice(couponRecord.getCoupon().calculateDiscountPrice(order.getPrice())); - order.setPayPrice(order.getPayPrice().subtract(order.getCouponPrice())); - if (order.getPayPrice().compareTo(BigDecimal.ZERO) < NumberConstant.ZERO) { - // 至少需要支付0.01 - order.setPayPrice(BigDecimal.valueOf(0.01)); - } - } else { - log.info("优惠券不可用,优惠券记录ID:{},优惠券ID:{}", couponRecord.getId(), couponRecord.getCouponId()); - order.setCouponId(null); - order.setCouponRecordId(null); - order.setCouponPrice(BigDecimal.ZERO); - } - } - } List orderItems = new ArrayList<>(); OrderItemEntity orderItem = new OrderItemEntity(); orderItem.setGoodsId(createOrderReqVO.getGoodsId());