订单类型,名称变更

This commit is contained in:
Jerry Yan 2025-02-26 13:43:44 +08:00
parent e199e0e57b
commit 99f5adf841
12 changed files with 57 additions and 17 deletions

View File

@ -18,6 +18,7 @@ import com.ycwl.basic.model.pc.order.resp.OrderRespVO;
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity;
import com.ycwl.basic.model.pc.source.entity.SourceEntity; 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.template.resp.TemplateRespVO;
import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.pc.video.entity.VideoEntity;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO; import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
@ -28,6 +29,7 @@ import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.repository.SourceRepository; import com.ycwl.basic.repository.SourceRepository;
import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.repository.TemplateRepository;
import com.ycwl.basic.repository.VideoRepository; import com.ycwl.basic.repository.VideoRepository;
import com.ycwl.basic.repository.VideoTaskRepository;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -64,6 +66,8 @@ public class OrderBiz {
private SourceMapper sourceMapper; private SourceMapper sourceMapper;
@Autowired @Autowired
private ProfitSharingBiz profitSharingBiz; private ProfitSharingBiz profitSharingBiz;
@Autowired
private VideoTaskRepository videoTaskRepository;
public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) { public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) {
PriceObj priceObj = new PriceObj(); PriceObj priceObj = new PriceObj();
@ -87,6 +91,10 @@ public class OrderBiz {
if (video == null) { if (video == null) {
return null; return null;
} }
TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId());
if (task != null) {
priceObj.setFaceId(task.getFaceId());
}
TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId()); TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId());
if (template == null) { if (template == null) {
return priceObj; return priceObj;
@ -103,10 +111,12 @@ public class OrderBiz {
case 1: // source case 1: // source
priceObj.setPrice(scenic.getSourceVideoPrice()); priceObj.setPrice(scenic.getSourceVideoPrice());
priceObj.setSlashPrice(scenic.getSourceVideoPrice()); priceObj.setSlashPrice(scenic.getSourceVideoPrice());
priceObj.setFaceId(goodsId);
break; break;
case 2: // source case 2: // source
priceObj.setPrice(scenic.getSourceImagePrice()); priceObj.setPrice(scenic.getSourceImagePrice());
priceObj.setSlashPrice(scenic.getSourceImagePrice()); priceObj.setSlashPrice(scenic.getSourceImagePrice());
priceObj.setFaceId(goodsId);
break; break;
} }
return priceObj; return priceObj;
@ -115,6 +125,22 @@ public class OrderBiz {
public IsBuyRespVO isBuy(Long userId, Long scenicId, int goodsType, Long goodsId) { public IsBuyRespVO isBuy(Long userId, Long scenicId, int goodsType, Long goodsId) {
IsBuyRespVO respVO = new IsBuyRespVO(); IsBuyRespVO respVO = new IsBuyRespVO();
boolean isBuy = orderRepository.checkUserBuyItem(userId, goodsType, goodsId); boolean isBuy = orderRepository.checkUserBuyItem(userId, goodsType, goodsId);
// 模板购买逻辑
if (!isBuy) {
if (goodsType == 0) {
VideoEntity video = videoRepository.getVideo(goodsId);
TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId());
Long templateId = video.getTemplateId();
// -1为整个模板购买
OrderEntity orderEntity = orderRepository.getUserBuyItem(userId, -1, templateId);
if (orderEntity != null && task != null) {
respVO.setOrderId(orderEntity.getId());
if (orderEntity.getFaceId() != null && task.getFaceId() != null) {
isBuy = orderEntity.getFaceId().equals(task.getFaceId());
}
}
}
}
// 免费送逻辑之前已经赠送了的 // 免费送逻辑之前已经赠送了的
if (!isBuy) { if (!isBuy) {
switch (goodsType) { switch (goodsType) {

View File

@ -38,7 +38,7 @@ public class PriceBiz {
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId);
if (scenicConfig != null) { if (scenicConfig != null) {
if (!Integer.valueOf(1).equals(scenicConfig.getDisableSourceVideo())) { if (!Integer.valueOf(1).equals(scenicConfig.getDisableSourceVideo())) {
goodsList.add(new GoodsListRespVO(1L, "原片")); goodsList.add(new GoodsListRespVO(1L, "录像"));
} }
if (!Integer.valueOf(1).equals(scenicConfig.getDisableSourceImage())) { if (!Integer.valueOf(1).equals(scenicConfig.getDisableSourceImage())) {
goodsList.add(new GoodsListRespVO(2L, "照片集")); goodsList.add(new GoodsListRespVO(2L, "照片集"));
@ -52,8 +52,11 @@ public class PriceBiz {
if (priceConfig == null) { if (priceConfig == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
String[] goodsIds = priceConfig.getGoodsIds().split(",");
List<GoodsListRespVO> goodsList = listGoodsByScenic(priceConfig.getScenicId()); List<GoodsListRespVO> goodsList = listGoodsByScenic(priceConfig.getScenicId());
if (Integer.valueOf(-1).equals(priceConfig.getType())) {
return goodsList;
}
String[] goodsIds = priceConfig.getGoodsIds().split(",");
return goodsList.stream().filter(goods -> { return goodsList.stream().filter(goods -> {
for (String goodsId : goodsIds) { for (String goodsId : goodsIds) {
if (StringUtils.equals(goods.getGoodsId().toString(), goodsId)) { if (StringUtils.equals(goods.getGoodsId().toString(), goodsId)) {

View File

@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public enum SourceTypeNameEnum { public enum SourceTypeNameEnum {
ORIGINAL_FILM_SET(1, "原片"), ORIGINAL_FILM_SET(1, "录像"),
PHOTO_GALLERY(2, "照片集"), PHOTO_GALLERY(2, "照片集"),
UNKNOWN(-1, "未知"); UNKNOWN(-1, "未知");
private int type; private int type;

View File

@ -10,6 +10,7 @@ public class PriceObj {
private Long scenicId; private Long scenicId;
private int goodsType; private int goodsType;
private Long goodsId; private Long goodsId;
private Long faceId;
private BigDecimal price = BigDecimal.ZERO; private BigDecimal price = BigDecimal.ZERO;
private BigDecimal scenicAllPrice; private BigDecimal scenicAllPrice;
private BigDecimal slashPrice; private BigDecimal slashPrice;

View File

@ -26,6 +26,7 @@ public class OrderEntity {
* 用户id * 用户id
*/ */
private Long memberId; private Long memberId;
private Long faceId;
/** /**
* 微信openId * 微信openId
*/ */

View File

@ -19,7 +19,7 @@ public class OrderItemEntity {
*/ */
private Long orderId; private Long orderId;
/** /**
* 商品类型0其他1成片2源素材 * 商品类型-1模板0其他1成片2源素材
*/ */
private Integer goodsType; private Integer goodsType;
/** /**

View File

@ -19,6 +19,9 @@ import java.util.List;
public class OrderRespVO { public class OrderRespVO {
private Long id; private Long id;
private Long memberId; private Long memberId;
private Long faceId;
private String faceUrl;
private Integer type;
@ApiModelProperty("用户昵称") @ApiModelProperty("用户昵称")
private String memberNickname; private String memberNickname;
@ApiModelProperty("用户真实名称") @ApiModelProperty("用户真实名称")

View File

@ -153,7 +153,7 @@ public class AppScenicServiceImpl implements AppScenicService {
List<SourceRespVO> sourceList = sourceMapper.queryByRelation(sourceReqQuery); List<SourceRespVO> sourceList = sourceMapper.queryByRelation(sourceReqQuery);
ContentPageVO sourceVideoContent = new ContentPageVO(); ContentPageVO sourceVideoContent = new ContentPageVO();
ContentPageVO sourceImageContent = new ContentPageVO(); ContentPageVO sourceImageContent = new ContentPageVO();
sourceVideoContent.setName("原片"); sourceVideoContent.setName("录像");
sourceImageContent.setName("照片集"); sourceImageContent.setName("照片集");
sourceVideoContent.setScenicId(faceRespVO.getScenicId()); sourceVideoContent.setScenicId(faceRespVO.getScenicId());
sourceImageContent.setScenicId(faceRespVO.getScenicId()); sourceImageContent.setScenicId(faceRespVO.getScenicId());

View File

@ -116,7 +116,7 @@ public class GoodsServiceImpl implements GoodsService {
goodsPageVO.setTemplateCoverUrl(goods.get(0).getUrl()); goodsPageVO.setTemplateCoverUrl(goods.get(0).getUrl());
goodsPageVO.setFaceId(faceId); goodsPageVO.setFaceId(faceId);
if (type == 1) { if (type == 1) {
goodsPageVO.setGoodsName("原片"); goodsPageVO.setGoodsName("录像");
goodsPageVO.setGoodsType(1); goodsPageVO.setGoodsType(1);
} else { } else {
goodsPageVO.setGoodsName("照片集"); goodsPageVO.setGoodsName("照片集");

View File

@ -328,6 +328,7 @@ public class OrderServiceImpl implements OrderService {
// promo code // promo code
// coupon // coupon
order.setPayPrice(priceObj.getPrice()); order.setPayPrice(priceObj.getPrice());
order.setFaceId(priceObj.getFaceId());
if (order.getPayPrice().equals(BigDecimal.ZERO)) { if (order.getPayPrice().equals(BigDecimal.ZERO)) {
order.setStatus(OrderStateEnum.PAID.getState()); order.setStatus(OrderStateEnum.PAID.getState());
order.setPayAt(new Date()); order.setPayAt(new Date());
@ -370,17 +371,19 @@ public class OrderServiceImpl implements OrderService {
orderItem.setGoodsId(batchOrderReqVO.getFaceId()); orderItem.setGoodsId(batchOrderReqVO.getFaceId());
orderItem.setGoodsType(1); orderItem.setGoodsType(1);
} else if (Long.valueOf(2L).equals(goods.getGoodsId())) { } else if (Long.valueOf(2L).equals(goods.getGoodsId())) {
orderItem.setGoodsId(batchOrderReqVO.getCouponId()); orderItem.setGoodsId(batchOrderReqVO.getFaceId());
orderItem.setGoodsType(2); orderItem.setGoodsType(2);
} else { } else {
// templateId
orderItem.setGoodsId(goods.getGoodsId()); orderItem.setGoodsId(goods.getGoodsId());
orderItem.setGoodsType(0); orderItem.setGoodsType(-1);
} }
return orderItem; return orderItem;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
order.setSlashPrice(priceConfig.getSlashPrice()); order.setSlashPrice(priceConfig.getSlashPrice());
order.setPrice(priceConfig.getPrice()); order.setPrice(priceConfig.getPrice());
order.setPayPrice(priceConfig.getPrice()); order.setPayPrice(priceConfig.getPrice());
order.setFaceId(batchOrderReqVO.getFaceId());
if (order.getPayPrice().equals(BigDecimal.ZERO)) { if (order.getPayPrice().equals(BigDecimal.ZERO)) {
order.setStatus(OrderStateEnum.PAID.getState()); order.setStatus(OrderStateEnum.PAID.getState());
order.setPayAt(new Date()); order.setPayAt(new Date());

View File

@ -57,7 +57,7 @@ public class PriceConfigServiceImpl extends ServiceImpl<PriceConfigMapper, Price
List<String> goodsNames = new ArrayList<>(); List<String> goodsNames = new ArrayList<>();
for (String s : item.getGoodsIds().split(",")) { for (String s : item.getGoodsIds().split(",")) {
if (StringUtils.equals(s, "1")) { if (StringUtils.equals(s, "1")) {
goodsNames.add("原片"); goodsNames.add("录像");
} else if (StringUtils.equals(s, "2")) { } else if (StringUtils.equals(s, "2")) {
goodsNames.add("照片集"); goodsNames.add("照片集");
} else { } else {

View File

@ -113,7 +113,7 @@
oi.goods_type, oi.goods_type,
CASE oi.goods_type CASE oi.goods_type
WHEN '0' THEN mvd.name WHEN '0' THEN mvd.name
WHEN '1' THEN '原片集' WHEN '1' THEN '录像集'
WHEN '2' THEN '照片集' WHEN '2' THEN '照片集'
ELSE '其他' ELSE '其他'
END AS goods_name, END AS goods_name,
@ -144,8 +144,8 @@
</select> </select>
<insert id="add"> <insert id="add">
insert into `order`(id, member_id, openid, `type`, `price_config_id`, slash_price, price, pay_price, remark, broker_id, promo_code, scenic_id, status) insert into `order`(id, member_id, openid, face_id, `type`, `price_config_id`, slash_price, price, pay_price, remark, broker_id, promo_code, scenic_id, status)
VALUES (#{id}, #{memberId}, #{openId}, #{type}, #{priceConfigId}, #{slashPrice}, #{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode}, #{scenicId}, #{status}) VALUES (#{id}, #{memberId}, #{openId}, #{faceId}, #{type}, #{priceConfigId}, #{slashPrice}, #{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode}, #{scenicId}, #{status})
</insert> </insert>
<insert id="addOrderItems"> <insert id="addOrderItems">
insert into order_item(order_id,goods_type, goods_id) VALUES insert into order_item(order_id,goods_type, goods_id) VALUES
@ -217,9 +217,10 @@
delete from `order` where id = #{id} delete from `order` where id = #{id}
</delete> </delete>
<select id="list" resultMap="PCBaseResultListMap"> <select id="list" resultMap="PCBaseResultListMap">
select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name, o.type, o.openid, o.face_id, f.face_url, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_id, o.create_at refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_id, o.create_at
from `order` AS o from `order` AS o
left join face f on o.face_id = f.id
left join member m on o.member_id = m.id left join member m on o.member_id = m.id
left join scenic s on o.scenic_id = s.id left join scenic s on o.scenic_id = s.id
left join order_item oi on o.id = oi.order_id left join order_item oi on o.id = oi.order_id
@ -288,10 +289,11 @@
order by o.create_at desc order by o.create_at desc
</select> </select>
<select id="getById" resultMap="PCBaseResultMap"> <select id="getById" resultMap="PCBaseResultMap">
select o.id, o.scenic_id, s.name as scenic_name, o.member_id, o.openid, o.price, o.pay_price, o.remark, o.broker_id, o.promo_code, o.refund_reason, select o.id, o.scenic_id, s.name as scenic_name, o.member_id, o.type, o.openid, o.face_id, f.face_url, o.price, o.pay_price, o.remark, o.broker_id, o.promo_code, o.refund_reason,
o.refund_status, o.status, o.create_at, o.update_at, o.pay_at, o.cancel_at, o.refund_at, o.refund_status, o.status, o.create_at, o.update_at, o.pay_at, o.cancel_at, o.refund_at,
m.nickname , m.real_name m.nickname , m.real_name
from `order` o from `order` o
left join face f on o.face_id = f.id
left join member m on m.id = o.member_id left join member m on m.id = o.member_id
left join scenic s on o.scenic_id = s.id left join scenic s on o.scenic_id = s.id
where o.id = #{id} where o.id = #{id}
@ -302,10 +304,11 @@
where o.member_id = #{userId} where o.member_id = #{userId}
</select> </select>
<select id="appList" resultMap="AppBaseResultMap"> <select id="appList" resultMap="AppBaseResultMap">
select DISTINCT o.id, o.member_id,o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select DISTINCT o.id, o.member_id,o.openid, o.type, o.face_id, f.face_url, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at, refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at,
sc.name scenicName sc.name scenicName
from `order` AS o from `order` AS o
left join face f on o.face_id = f.id
left join scenic sc on o.scenic_id = sc.id left join scenic sc on o.scenic_id = sc.id
<where> <where>
<if test="memberId!=null"> <if test="memberId!=null">
@ -315,7 +318,7 @@
order by o.create_at desc order by o.create_at desc
</select> </select>
<select id="appDetail" resultMap="AppBaseResultMap"> <select id="appDetail" resultMap="AppBaseResultMap">
select distinct o.id, o.member_id,o.openid, o.price, o.slash_price, pay_price, remark, o.broker_id, o.promo_code, select distinct o.id, o.member_id,o.openid, o.type, o.price, o.slash_price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at, refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at,
o.scenic_id, sc.name scenicName o.scenic_id, sc.name scenicName
from `order` AS o from `order` AS o
@ -324,7 +327,7 @@
where o.id = #{id} where o.id = #{id}
</select> </select>
<select id="refundList" resultType="com.ycwl.basic.model.pc.order.resp.OrderRespVO"> <select id="refundList" resultType="com.ycwl.basic.model.pc.order.resp.OrderRespVO">
select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name, o.type, o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_id, o.create_at refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_id, o.create_at
from `order` AS o from `order` AS o
left join member m on o.member_id = m.id left join member m on o.member_id = m.id