添加限购

master
wyq 7 months ago
parent bd04519d70
commit d5f6bd93ae
  1. 2
      crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java
  2. 4
      crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java
  3. 5
      crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java
  4. 2
      crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderInfoDao.java
  5. 2
      crmeb-service/src/main/java/com/zbkj/service/dao/XsbuyDao.java
  6. 2
      crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderInfoService.java
  7. 2
      crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java
  8. 12
      crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java
  9. 5
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderInfoServiceImpl.java
  10. 4
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java
  11. 47
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java
  12. 4
      crmeb-service/src/main/resources/mapper/store/StoreOrderInfoMapper.xml
  13. 9
      crmeb-service/src/main/resources/mapper/store/XsSkuInfoMapper.xml

@ -416,7 +416,7 @@ public class Constants {
public static final String ORDER_TASK_REDIS_KEY_AFTER_DELETE_BY_USER = "alterOrderDeleteByUser"; // 用户删除订单后续操作
public static final String ORDER_TASK_REDIS_KEY_AFTER_COMPLETE_BY_USER = "alterOrderCompleteByUser"; // 用户完成订单后续操作
public static final String ORDER_TASK_REDIS_KEY_AFTER_CANCEL_BY_USER = "alterOrderCancelByUser"; // 用户取消订单后续操作
public static final String ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER = "alterOrderRefundByUser"; // 用户订单退款后续操作
public static final String ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER = "alterOrderRefundByUser1"; // 用户订单退款后续操作
public static final String ORDER_STATUS_CACHE_CREATE_ORDER = "cache_key_create_order";

@ -33,7 +33,11 @@ import java.math.BigDecimal;
public class StoreProduct implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "每单限购数量")
private Integer orderProductNums;
@ApiModelProperty(value = "用户限购数量")
private Integer userProductNums;
@ApiModelProperty(value = "商品id")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;

@ -34,7 +34,12 @@ import java.util.List;
public class StoreProductAddRequest implements Serializable {
private static final long serialVersionUID = -452373239606480650L;
@ApiModelProperty(value = "每单限购数量")
private Integer orderProductNums;
@ApiModelProperty(value = "每个用户限购数量")
private Integer userProductNums;
@ApiModelProperty(value = "商品id|添加时不填,修改时必填")
private Integer id;

@ -19,7 +19,7 @@ import java.math.BigDecimal;
* +----------------------------------------------------------------------
*/
public interface StoreOrderInfoDao extends BaseMapper<StoreOrderInfo> {
int queryProductNums(@Param("productId") Integer id, @Param("uid") Integer uid);
/**
* 根据时间商品id获取销售件数
* @param date 时间格式'yyyy-MM-dd'

@ -10,6 +10,6 @@ import java.util.List;
*/
public interface XsbuyDao {
List<XsSkuInfo> selectListNew(@Param("content") String content,@Param("pageIndex") long l,@Param("pageSize") Long pageSize);
List<XsSkuInfo> selectBySkuNos (@Param("list") List<String> skuNo);
}

@ -22,7 +22,7 @@ import java.util.List;
* +----------------------------------------------------------------------
*/
public interface StoreOrderInfoService extends IService<StoreOrderInfo> {
int queryProductNums(Integer id, Integer uid);
HashMap<Integer, List<StoreOrderInfoOldVo>> getMapInId(List<Integer> orderIdList);
List<StoreOrderInfoOldVo> getOrderListByOrderId(Integer orderId);

@ -27,7 +27,7 @@ import java.util.Map;
* +----------------------------------------------------------------------
*/
public interface StoreOrderService extends IService<StoreOrder> {
int queryByProdcutId(Integer id, Integer uid);
/**
* 列表PC
* @param request 请求参数

@ -1560,6 +1560,18 @@ public class OrderServiceImpl implements OrderService {
detailVoList = validatePreOrderVideo(detailRequest);
orderInfoVo.setIsVideo(true);
}
detailVoList.forEach(detailVo -> {
StoreProduct storeProduct1 = storeProductService.getById(detailVo.getProductId());
if(detailVo.getPayNum()>storeProduct1.getOrderProductNums()){
throw new CrmebException("商品:"+storeProduct1.getStoreName()+",每个订单限购"+storeProduct1.getOrderProductNums()+"件,订单提交失败");
}
int oldByNum=storeOrderService.queryByProdcutId(storeProduct1.getId(),user.getUid());
if((oldByNum+detailVo.getPayNum())>storeProduct1.getUserProductNums()){
throw new CrmebException("商品:"+storeProduct1.getStoreName()+",每个用户限购"+storeProduct1.getUserProductNums()+"件,订单提交失败");
}
});
orderInfoVo.setOrderDetailList(detailVoList);
return orderInfoVo;
}

@ -42,7 +42,10 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl<StoreOrderInfoDao, St
@Autowired
private StoreProductReplyService storeProductReplyService;
@Override
public int queryProductNums(Integer id, Integer uid) {
return dao.queryProductNums(id,uid);
}
/**
* 根据id集合查询数据返回 map
* @param orderList List<Integer> id集合

@ -168,7 +168,11 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
@Autowired
private WechatOrderShippingService wechatOrderShippingService;
@Override
public int queryByProdcutId(Integer id, Integer uid) {
return storeOrderInfoService.queryProductNums(id,uid);
}
/**
* 列表
* @param request 请求参数

@ -44,6 +44,7 @@ import org.springframework.transaction.support.TransactionTemplate;
import javax.annotation.Resource;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -282,7 +283,12 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
throw new CrmebException("单规格商品属性值不能大于1");
}
}
if (request.getOrderProductNums() == null) {
request.setOrderProductNums(1);
}
if (request.getUserProductNums() == null) {
request.setUserProductNums(1);
}
StoreProduct storeProduct = new StoreProduct();
BeanUtils.copyProperties(request, storeProduct);
storeProduct.setId(null);
@ -360,7 +366,7 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
StoreProductDescription spd = new StoreProductDescription();
spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : "");
spd.setType(Constants.PRODUCT_TYPE_NORMAL);
checkExistThirdPartySkuNo(new ArrayList<>(), attrValueList, null);
Boolean execute = transactionTemplate.execute(e -> {
save(storeProduct);
@ -386,7 +392,35 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
return execute;
}
private void checkExistThirdPartySkuNo(List<StoreProductAttrValue> attrValueAddList, List<StoreProductAttrValue> attrValueUpdateList, StoreProduct storeProduct) {
List<StoreProductAttrValue> allAttrValueAddList = CollUtil.newArrayList();
allAttrValueAddList.addAll(attrValueAddList);
allAttrValueAddList.addAll(attrValueUpdateList);
List<String> distinctSku = allAttrValueAddList.stream().map(StoreProductAttrValue::getBarCode).distinct().collect(Collectors.toList());
if (distinctSku.size() != allAttrValueAddList.size()) {
throw new CrmebException("商品重复,请重新选择");
}
Map<String, XsSkuInfo> skuInfoMap = xsbuyDao.selectBySkuNos(distinctSku).stream().collect(Collectors.toMap(XsSkuInfo::getSkuNo, Function.identity(), (v1, v2) -> v1));
List<StoreProductAttrValue> list = storeProductAttrValueService.list(new LambdaQueryWrapper<StoreProductAttrValue>().in(StoreProductAttrValue::getBarCode, distinctSku).eq(StoreProductAttrValue::getIsDel, 0));
if (CollUtil.isNotEmpty(list)) {
for (StoreProductAttrValue storeProductAttrValue : list) {
XsSkuInfo xsSkuInfo = skuInfoMap.get(storeProductAttrValue.getBarCode());
if (xsSkuInfo == null) {
throw new CrmebException(String.format("商品编码未找到:%s", storeProductAttrValue.getBarCode()));
}
if (storeProduct == null) {
String msg = String.format("商品编号所填%s/%s已在商品id为%s中出现过", xsSkuInfo.getSkuName(), xsSkuInfo.getSkuNo(), storeProductAttrValue.getProductId());
throw new CrmebException(msg);
} else {
if (storeProductAttrValue.getId().equals(storeProduct.getId())) {
String msg = String.format("商品编号所填%s/%s已在商品id为%s中出现过", xsSkuInfo.getSkuName(), xsSkuInfo.getSkuNo(), storeProductAttrValue.getProductId());
throw new CrmebException(msg);
}
}
}
}
}
/**
* 商品sku
* @param attrValue json字符串
@ -454,7 +488,12 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
throw new CrmebException("单规格商品属性值不能大于1");
}
}
if (storeProductRequest.getOrderProductNums() == null) {
storeProductRequest.setOrderProductNums(1);
}
if (storeProductRequest.getUserProductNums() == null) {
storeProductRequest.setUserProductNums(1);
}
StoreProduct tempProduct = getById(storeProductRequest.getId());
if (ObjectUtil.isNull(tempProduct)) {
throw new CrmebException("商品不存在");
@ -539,7 +578,7 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
spd.setDescription(storeProductRequest.getContent().length() > 0 ? systemAttachmentService.clearPrefix(storeProductRequest.getContent()) : "");
spd.setType(Constants.PRODUCT_TYPE_NORMAL);
spd.setProductId(storeProduct.getId());
checkExistThirdPartySkuNo(attrValueAddList, attrValueUpdateList, tempProduct);
Boolean execute = transactionTemplate.execute(e -> {
dao.updateById(storeProduct);

@ -13,5 +13,7 @@
where order_id in (SELECT id FROM `eb_store_order` where paid = 1 and date_format(create_time, '%Y-%m-%d') = #{date})
and product_id = #{proId}
</select>
<select id="queryProductNums" resultType="java.lang.Integer">
select IFNULL(count(total_num),0) from eb_store_order where uid=#{uid} and `refund_status` !='2' and is_system_del=0 and id in (select order_id from eb_store_order_info where product_id =#{productId})
</select>
</mapper>

@ -14,5 +14,14 @@
ORDER BY id limit 20
</select>
<select id="selectBySkuNos" resultType="com.zbkj.service.pojo.XsSkuInfo">
select good_code sku_no,good_name sku_name,brand_code,brand_name,category_name,category_code from m_xsbuy_cn.xs_goods
where is_show=1 and good_code in (
<foreach collection="list" item="item" separator=",">
#{item}
</foreach>
)
</select>
</mapper>

Loading…
Cancel
Save