...
|
...
|
@@ -3,24 +3,20 @@ package com.yohoufo.order.service.impl; |
|
|
import com.yohobuy.ufo.model.order.bo.ButtonShowBo;
|
|
|
import com.yohobuy.ufo.model.order.bo.DepositDetailBo;
|
|
|
import com.yohobuy.ufo.model.order.bo.DepositProductBo;
|
|
|
import com.yohobuy.ufo.model.order.common.ButtonShow;
|
|
|
import com.yohobuy.ufo.model.order.constants.StorageDepositStatusEnum;
|
|
|
import com.yohoufo.common.helper.ImageUrlAssist;
|
|
|
import com.yohoufo.common.exception.UfoServiceException;
|
|
|
import com.yohoufo.dal.order.SellerOrderGoodsMapper;
|
|
|
import com.yohoufo.dal.order.StorageDepositMapper;
|
|
|
import com.yohoufo.dal.order.model.SellerOrderGoods;
|
|
|
import com.yohoufo.dal.order.model.StorageDeposit;
|
|
|
import com.yohoufo.dal.order.model.StorageDepositCount;
|
|
|
import com.yohoufo.dal.product.StorageDepositMapper;
|
|
|
import com.yohoufo.dal.product.model.Goods;
|
|
|
import com.yohoufo.dal.product.model.GoodsImages;
|
|
|
import com.yohoufo.dal.product.model.Product;
|
|
|
import com.yohoufo.order.service.DepositService;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import com.yohoufo.order.service.proxy.ProductProxyService;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
...
|
...
|
@@ -35,11 +31,16 @@ public class DepositServiceImpl implements DepositService { |
|
|
private final Logger LOGGER = LoggerFactory.getLogger(DepositServiceImpl.class);
|
|
|
|
|
|
@Autowired
|
|
|
private ProductProxyService productProxyService;
|
|
|
|
|
|
@Autowired
|
|
|
private StorageDepositMapper storageDepositMapper;
|
|
|
|
|
|
@Autowired
|
|
|
private SellerOrderGoodsMapper sellerOrderGoodsMapper;
|
|
|
|
|
|
private static final int DEPOSIT_MAX_TIME = 45 * 24 * 60 * 60;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
public List<DepositProductBo> queryUserDoposit(Integer uid, Integer page, Integer limit) {
|
...
|
...
|
@@ -83,35 +84,150 @@ public class DepositServiceImpl implements DepositService { |
|
|
}
|
|
|
// 召回或者到期退回的
|
|
|
List<StorageDeposit> depositList = storageDepositMapper.queryUserDopositBack(uid, (page - 1) * limit, limit);
|
|
|
List<Integer> skupList = depositList.stream().map(StorageDeposit::getSkup).collect(Collectors.toList());
|
|
|
List<SellerOrderGoods> goodsList = sellerOrderGoodsMapper.selectBySkups(skupList);
|
|
|
Map<Integer, SellerOrderGoods> goodsMap = goodsList.stream().map(Function.identity()).collect(Collectors.toMap(SellerOrderGoods::getId, Function.identity()));
|
|
|
|
|
|
List<DepositDetailBo> result = new ArrayList<>();
|
|
|
for (StorageDeposit depo : depositList) {
|
|
|
DepositDetailBo bo = new DepositDetailBo();
|
|
|
SellerOrderGoods goods = goodsMap.get(depo.getSkup());
|
|
|
if (goods != null) {
|
|
|
bo.setProductName(goods.getProductName());
|
|
|
bo.setColorName(goods.getColorName());
|
|
|
bo.setSizeName(goods.getSizeName());
|
|
|
bo.setPic(goods.getImageUrl());
|
|
|
bo.setPrice(goods.getGoodsPrice().toString());
|
|
|
bo.setDepositStatusName(getBackStatusName(depo.getStatus()));
|
|
|
}
|
|
|
bo.setButtons(Arrays.asList(ButtonShowBo.detail()));
|
|
|
result.add(bo);
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
// 寄存中
|
|
|
@Override
|
|
|
public List<DepositDetailBo> queryUserProductDopositDetail(Integer uid, Integer productId, Integer page, Integer limit) {
|
|
|
int count = storageDepositMapper.queryUserDopositBackCount(uid);
|
|
|
public List<DepositDetailBo> queryUserProductDopositingDetail(Integer uid, Integer productId, Integer page, Integer limit) {
|
|
|
int count = storageDepositMapper.queryUserProductDopositingCount(uid, productId);
|
|
|
if (count == 0) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
// 召回或者到期退回的
|
|
|
List<StorageDeposit> depositList = storageDepositMapper.queryUserDopositBack(uid, (page - 1) * limit, limit);
|
|
|
|
|
|
List<StorageDeposit> depositList = storageDepositMapper.queryUserProductDopositing(uid, productId, (page - 1) * limit, limit);
|
|
|
List<Integer> skupList = depositList.stream().map(StorageDeposit::getSkup).collect(Collectors.toList());
|
|
|
List<SellerOrderGoods> goodsList = sellerOrderGoodsMapper.selectBySkups(skupList);
|
|
|
Map<Integer, SellerOrderGoods> goodsMap = goodsList.stream().map(Function.identity()).collect(Collectors.toMap(SellerOrderGoods::getId, Function.identity()));
|
|
|
// 最低价信息
|
|
|
Map<Integer, BigDecimal> leastMap = productProxyService.getFlashLeastPrice(productId);
|
|
|
List<DepositDetailBo> result = new ArrayList<>();
|
|
|
/*for (StorageDeposit depo : depositList) {
|
|
|
|
|
|
for (StorageDeposit depo : depositList) {
|
|
|
DepositDetailBo bo = new DepositDetailBo();
|
|
|
if (depo.getStatus() > StorageDepositStatusEnum.HAS_OUT.getCode()) {
|
|
|
bo.setButtons(Arrays.asList(Button.delete()));
|
|
|
} else {
|
|
|
bo.setButtons(Arrays.asList(Button.detail()));
|
|
|
SellerOrderGoods goods = goodsMap.get(depo.getSkup());
|
|
|
if (goods != null) {
|
|
|
bo.setProductName(goods.getProductName());
|
|
|
bo.setColorName(goods.getColorName());
|
|
|
bo.setPic(goods.getImageUrl());
|
|
|
bo.setPrice(goods.getGoodsPrice().toString());
|
|
|
bo.setSizeName(goods.getSizeName());
|
|
|
bo.setOrderStatusName(getOrderStatusName(depo.getOrderStatus()));
|
|
|
bo.setRemainDays(Integer.toString(getRemainDay(depo.getDepositEndTime())));
|
|
|
BigDecimal least = leastMap.get(depo.getStorageId());
|
|
|
bo.setFlashMinPrice(least == null ? "" : least.toString());
|
|
|
}
|
|
|
bo.setButtons(Arrays.asList(ButtonShowBo.back(), ButtonShowBo.addDepositDays(), depo.getOrderStatus() == 0 ? ButtonShowBo.grounding() : ButtonShowBo.detail("详情")));
|
|
|
result.add(bo);
|
|
|
}*/
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
// 上架
|
|
|
@Override
|
|
|
public boolean changeSaleStatusOn(Integer uid, String depositCode, Integer skup) {
|
|
|
return storageDepositMapper.changeSaleStatusOn(uid, depositCode, skup) == 1;
|
|
|
}
|
|
|
// 下架
|
|
|
@Override
|
|
|
public boolean changeSaleStatusOff(Integer uid, Integer skup) {
|
|
|
return storageDepositMapper.changeSaleStatusOff(uid, skup) == 1;
|
|
|
}
|
|
|
// 转卖
|
|
|
@Override
|
|
|
public boolean changeOwner(Integer uid, Integer skup, long buyOrderCode, Integer newUid) {
|
|
|
StorageDeposit sd = storageDepositMapper.queryByOwnerSkup(uid, skup);
|
|
|
if(sd==null) {
|
|
|
return false;
|
|
|
}
|
|
|
if(storageDepositMapper.sale(uid, skup, buyOrderCode) == 0) {
|
|
|
return false;
|
|
|
}
|
|
|
sd.setId(null);
|
|
|
sd.setOwnerUid(newUid);
|
|
|
sd.setOrderCode(buyOrderCode);
|
|
|
sd.setSkup(sd.getNewSkup());
|
|
|
sd.setStatus(1);
|
|
|
sd.setOrderStatus(0);
|
|
|
sd.setUpdateTime(0);
|
|
|
int now = (int) (System.currentTimeMillis()/1000);
|
|
|
sd.setCreateTime(now);
|
|
|
sd.setDepositStartTime(now);
|
|
|
sd.setDepositEndTime(now + DEPOSIT_MAX_TIME);
|
|
|
storageDepositMapper.insert(sd);
|
|
|
return true;
|
|
|
}
|
|
|
// 可上架数量
|
|
|
@Override
|
|
|
public int getDepositOffShelvesCount(Integer uid, Integer storageId) {
|
|
|
return storageDepositMapper.getDepositOffShelvesCount(uid, storageId);
|
|
|
}
|
|
|
|
|
|
// 剩余存储天数
|
|
|
@Override
|
|
|
public int getRemainDay(Integer uid, String depositCode) {
|
|
|
StorageDeposit sd = storageDepositMapper.queryByDepositCode(uid, depositCode);
|
|
|
if (sd == null) {
|
|
|
throw new UfoServiceException(400, "库存不存在");
|
|
|
}
|
|
|
return getRemainDay(sd.getDepositEndTime());
|
|
|
}
|
|
|
|
|
|
private String getBackStatusName(Integer code) {
|
|
|
if (code == null) {
|
|
|
return "";
|
|
|
}
|
|
|
if (code == 2 || code == 3) {
|
|
|
return "待寄回";
|
|
|
}
|
|
|
if (code == 4) {
|
|
|
return "已寄回";
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
private String getOrderStatusName(Integer code) {
|
|
|
if (code == null) {
|
|
|
return "";
|
|
|
}
|
|
|
if (code == 0) {
|
|
|
return "下架";
|
|
|
}
|
|
|
if (code == 1) {
|
|
|
return "出售中";
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
private int getRemainDay(Integer endTime) {
|
|
|
int second = endTime - (int) (System.currentTimeMillis() / 1000);
|
|
|
int day = second / (24 * 3600);
|
|
|
if (second % day != 0) {
|
|
|
if (day > 0) {
|
|
|
day += 1;
|
|
|
} else {
|
|
|
day -= 1;
|
|
|
}
|
|
|
}
|
|
|
return day;
|
|
|
}
|
|
|
} |
...
|
...
|
|