实现商品信息查询和商品价格查询逻辑

This commit is contained in:
longbinbin
2024-12-05 17:05:59 +08:00
parent 3114fc7046
commit 92dfc1ceff
22 changed files with 399 additions and 11 deletions

View File

@ -0,0 +1,130 @@
package com.ycwl.basic.service.impl.mobile;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.mapper.pc.ScenicMapper;
import com.ycwl.basic.mapper.pc.SourceMapper;
import com.ycwl.basic.mapper.pc.VideoMapper;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.goods.GoodsReqQuery;
import com.ycwl.basic.model.mobile.goods.GoodsVO;
import com.ycwl.basic.model.pc.order.resp.OrderItemVO;
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
import com.ycwl.basic.model.pc.video.req.VideoReqQuery;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* @Authorlongbinbin
* @Date2024/12/5 15:04
*/@Service
public class GoodsServiceImpl implements GoodsService {
@Autowired
private VideoMapper videoMapper;
@Autowired
private SourceMapper sourceMapper;
@Autowired
private ScenicMapper scenicMapper;
public ApiResponse<List<GoodsVO>> goodsList(GoodsReqQuery query) {
//查询原素材
List<GoodsVO> goodsList = new ArrayList<>();
VideoReqQuery videoReqQuery = new VideoReqQuery();
videoReqQuery.setScenicId(query.getScenicId());
videoReqQuery.setIsBuy(query.getIsBuy());
videoReqQuery.setMemberId(query.getMemberId());
//查询成片vlog
List<VideoRespVO> videoList = videoMapper.list(videoReqQuery);
videoList.forEach(videoRespVO -> {
GoodsVO goodsVO = new GoodsVO();
goodsVO.setGoodsName(videoRespVO.getTemplateName());
goodsVO.setScenicId(videoRespVO.getScenicId());
goodsVO.setScenicName(videoRespVO.getScenicName());
goodsVO.setLongitude(videoRespVO.getLongitude());
goodsVO.setLatitude(videoRespVO.getLatitude());
goodsVO.setGoodsType(1);
goodsVO.setGoodsId(videoRespVO.getId());
goodsVO.setVideoUrl(videoRespVO.getVideoUrl());
goodsList.add(goodsVO);
});
SourceReqQuery sourceReqQuery = new SourceReqQuery();
videoReqQuery.setScenicId(query.getScenicId());
videoReqQuery.setIsBuy(query.getIsBuy());
videoReqQuery.setMemberId(query.getMemberId());
//查询源素材
List<SourceRespVO> sourceList = sourceMapper.listGroupByType(sourceReqQuery);
sourceList.forEach(sourceRespVO -> {
GoodsVO goodsVO = new GoodsVO();
Integer type = sourceRespVO.getType();
if(type==1){
goodsVO.setGoodsName("原片集");
}else {
goodsVO.setGoodsName("照片集");
}
goodsVO.setScenicId(sourceRespVO.getScenicId());
goodsVO.setScenicName(sourceRespVO.getScenicName());
goodsVO.setLongitude(sourceRespVO.getLongitude());
goodsVO.setLatitude(sourceRespVO.getLatitude());
goodsVO.setGoodsType(2);
goodsVO.setSourceType(type);
goodsList.add(goodsVO);
});
return ApiResponse.success(goodsList);
}
@Override
public ApiResponse<List<SourceRespVO>> sourceGoodsList(GoodsReqQuery query) {
SourceReqQuery sourceReqQuery = new SourceReqQuery();
sourceReqQuery.setScenicId(query.getScenicId());
sourceReqQuery.setIsBuy(query.getIsBuy());
sourceReqQuery.setMemberId(query.getMemberId());
sourceReqQuery.setType(query.getSourceType());
List<SourceRespVO> list = sourceMapper.list(sourceReqQuery);
return ApiResponse.success(list);
}
@Override
public ApiResponse queryPrice(GoodsPriceQueryReq queryPriceData) {
Integer goodsType = queryPriceData.getGoodsType();
if(goodsType==1){//成片vlog
//成片的价格就是成片所用template的价格
Long videoId = queryPriceData.getGoodsId();
VideoRespVO videoRespVO = videoMapper.getById(videoId);
if(videoRespVO==null){
return ApiResponse.fail("该vlog不存在或已失效");
}
BigDecimal tmplatePrice = videoRespVO.getTmplatePrice();
if(tmplatePrice==null){
return ApiResponse.fail("该vlog使用的模板价格或状态异常请联系管理员");
}
return ApiResponse.success(tmplatePrice);
}else if(goodsType==2){//原素材
//原素材的价格就是原素材对应景区定的价格
Long scenicId = queryPriceData.getScenicId();
ScenicRespVO scenicRespVO = scenicMapper.getById(scenicId);
if(scenicRespVO==null){
return ApiResponse.fail("该景区不存在或状态异常,请联系管理员");
}
BigDecimal price = scenicRespVO.getPrice();
if(price==null){
return ApiResponse.fail("该景区的原片价格未设定或状态异常,请联系管理员");
}
return ApiResponse.success(price);
}
return ApiResponse.fail("不合法的商品,请联系管理员");
}
}

View File

@ -119,4 +119,5 @@ public class OrderServiceImpl implements OrderService {
}
return ApiResponse.success(orderAppRespVO);
}
}

View File

@ -0,0 +1,37 @@
package com.ycwl.basic.service.mobile;
import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq;
import com.ycwl.basic.model.mobile.goods.GoodsReqQuery;
import com.ycwl.basic.model.mobile.goods.GoodsVO;
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
import com.ycwl.basic.utils.ApiResponse;
import java.util.List;
/**
* @Authorlongbinbin
* @Date2024/12/5 15:03
*/
public interface GoodsService {
/**
* 查询商品列表
* @param query 查询条件
* @return
*/
ApiResponse<List<GoodsVO>> goodsList(GoodsReqQuery query);
/**
* 查询源素材商品列表
* @param query
* @return
*/
ApiResponse<List<SourceRespVO>> sourceGoodsList(GoodsReqQuery query);
/**
* 查询订单应付价格
* @param queryPriceData
* @return
*/
ApiResponse queryPrice(GoodsPriceQueryReq queryPriceData);
}

View File

@ -1,7 +1,6 @@
package com.ycwl.basic.service.pc;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.model.pc.order.entity.OrderEntity;
import com.ycwl.basic.model.pc.order.req.OrderAddOrUpdateReq;
import com.ycwl.basic.model.pc.order.req.OrderReqQuery;
import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO;
@ -26,4 +25,6 @@ public interface OrderService {
ApiResponse<PageInfo<OrderAppRespVO>> appPageQuery(OrderReqQuery orderReqQuery);
ApiResponse<OrderAppRespVO> appDetail(Long id);
}