Authored by tanling

Merge branch 'test6.9.8' of http://git.yoho.cn/ufo/yohoufo-fore into test6.9.8

package com.yohoufo.dal.product;
package com.yohoufo.dal.order;
import com.yohoufo.dal.order.model.StorageDeposit;
import com.yohoufo.dal.order.model.StorageDepositCount;
... ... @@ -29,5 +29,17 @@ public interface StorageDepositMapper {
List<StorageDeposit> queryUserDopositBack(@Param("uid") Integer uid, @Param("start") Integer start, @Param("count") Integer count);
int queryUserProductDopositingCount(@Param("uid") Integer uid, @Param("productId") Integer productId);
List<StorageDeposit> queryUserProductDopositing(@Param("uid") Integer uid, @Param("productId") Integer productId, @Param("start") Integer start, @Param("count") Integer count);
StorageDeposit queryByDepositCode(@Param("uid") Integer uid, @Param("depositCode")String depositCode);
StorageDeposit queryByOwnerSkup(@Param("uid") Integer uid, @Param("skup") Integer newSkup);
int changeSaleStatusOn(@Param("uid") Integer uid, @Param("depositCode") String depositCode, @Param("newSkup") Integer newSkup);
int changeSaleStatusOff(@Param("uid") Integer uid, @Param("newSkup") Integer newSkup);
int sale(@Param("uid") Integer uid, @Param("skup") Integer skup, @Param("orderCode") long orderCode);
int getDepositOffShelvesCount(@Param("uid") Integer uid, @Param("storageId") Integer storageId);
StorageDeposit selectByDepositCode(@Param("uid") int uid, @Param("depositCode")String depositCode);
}
\ No newline at end of file
... ...
... ... @@ -17,7 +17,11 @@ public class StorageDeposit {
private Long orderCode;
private Long skup;
private Integer skup;
private Long newOrderCode;
private Integer newSkup;
private Integer status;
... ... @@ -101,11 +105,11 @@ public class StorageDeposit {
this.orderCode = orderCode;
}
public Long getSkup() {
public Integer getSkup() {
return skup;
}
public void setSkup(Long skup) {
public void setSkup(Integer skup) {
this.skup = skup;
}
... ... @@ -180,4 +184,20 @@ public class StorageDeposit {
public void setOutType(Integer outType) {
this.outType = outType;
}
public Long getNewOrderCode() {
return newOrderCode;
}
public void setNewOrderCode(Long newOrderCode) {
this.newOrderCode = newOrderCode;
}
public Integer getNewSkup() {
return newSkup;
}
public void setNewSkup(Integer newSkup) {
this.newSkup = newSkup;
}
}
\ No newline at end of file
... ...
... ... @@ -67,6 +67,7 @@ public interface StoragePriceMapper {
List<StoragePrice> selectBatchLeastPrice(@Param("skuList") Collection<Integer> skuList);
List<StoragePrice> selectBatchPreSaleLeastPrice(@Param("skuList") Collection<Integer> skuList);
List<StoragePrice> selectBatchHKLeastPrice(@Param("skuList") Collection<Integer> skuList);
List<StoragePrice> selectBatchFlashLeastPrice(@Param("skuList") Collection<Integer> skuList);
List<StoragePrice> selectByStorageIdsPlus(@Param("list") List<Integer> integers, @Param("storageId") Integer storageId, @Param("sellerUid") Integer sellerUid);
... ...
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yohoufo.dal.product.StorageDepositMapper" >
<mapper namespace="com.yohoufo.dal.order.StorageDepositMapper" >
<resultMap id="BaseResultMap" type="com.yohoufo.dal.order.model.StorageDeposit" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="product_id" property="productId" jdbcType="INTEGER" />
... ... @@ -10,7 +10,7 @@
<result column="shelf_code" property="shelfCode" jdbcType="VARCHAR" />
<result column="owner_uid" property="ownerUid" jdbcType="INTEGER" />
<result column="order_code" property="orderCode" jdbcType="BIGINT" />
<result column="skup" property="skup" jdbcType="BIGINT" />
<result column="skup" property="skup" jdbcType="INTEGER" />
<result column="status" property="status" jdbcType="INTEGER" />
<result column="order_status" property="orderStatus" jdbcType="INTEGER" />
<result column="update_time" property="updateTime" jdbcType="INTEGER" />
... ... @@ -20,6 +20,8 @@
<result column="edit_pid" property="editPid" jdbcType="INTEGER" />
<result column="del_status" property="delStatus" jdbcType="INTEGER" />
<result column="out_type" property="outType" jdbcType="INTEGER" />
<result column="new_order_code" property="newOrderCode" jdbcType="BIGINT" />
<result column="new_skup" property="newSkup" jdbcType="INTEGER" />
</resultMap>
<resultMap id="CountResultMap" type="com.yohoufo.dal.order.model.StorageDepositCount" >
... ... @@ -41,6 +43,13 @@
from storage_deposit
where id = #{id,jdbcType=INTEGER}
</select>
<select id="queryByDepositCode" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from storage_deposit
where deposit_code = #{depositCode} and del_status=0 and owner_uid=#{uid}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from storage_deposit
where id = #{id,jdbcType=INTEGER}
... ... @@ -254,6 +263,16 @@
out_type = #{outType,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
<update id="changeSaleStatusOn">
update storage_deposit
set order_status = 1, new_skup = #{newSkup} ,update_time = unix_timestamp(now())
where owner_uid=#{uid} and deposit_code = #{depositCode,jdbcType=VARCHAR} and status=1 and order_status = 0
</update>
<update id="changeSaleStatusOff">
update storage_deposit
set order_status = 0 ,update_time = unix_timestamp(now())
where owner_uid=#{uid} and new_skup = #{newSkup} and status=1 and order_status = 1
</update>
<select id="queryUserDepositProductCount" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select count(distinct product_id) from storage_deposit
where owner_uid = #{uid} and status=1 and del_status=0
... ... @@ -273,15 +292,39 @@
group by product_id
</select>
<select id="queryUserDopositBackCount" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select count(1) from storage_deposit
where owner_uid = #{uid} and status in(2,3,4) and out_type in(0,1) and del_status=0
select count(*) from storage_deposit
where owner_uid = #{uid} and status in(2,3,4) and out_type in(1) and del_status=0
</select>
<select id="queryUserDopositBack" resultMap="BaseResultMap">
select <include refid="Base_Column_List" /> from storage_deposit
where owner_uid = #{uid} and status in(2,3,4) and out_type in(0,1) and del_status=0
select * from storage_deposit
where owner_uid = #{uid} and status in(2,3,4) and out_type in(1) and del_status=0
limit #{start}, #{count}
</select>
<select id="queryUserProductDopositingCount" resultMap="BaseResultMap">
select count(*) from storage_deposit
where owner_uid = #{uid} and status in(1) and product_id =#{productId} and del_status=0
</select>
<select id="queryUserProductDopositing" resultMap="BaseResultMap">
select * from storage_deposit
where owner_uid = #{uid} and status in(1) and product_id =#{productId} and del_status=0
limit #{start}, #{count}
</select>
<select id="queryByOwnerSkup" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from storage_deposit
where owner_uid = #{uid} and new_skup =#{skup}
</select>
<update id="sale">
update storage_deposit set del_status=1, new_order_code =#{orderCode}, update_time = unix_timestamp(now())
where owner_uid = #{uid} and new_skup =#{skup} and del_status=0
</update>
<select id="getDepositOffShelvesCount" resultType="java.lang.Integer">
select count(*) from storage_deposit
where owner_uid = #{uid} and status=1 and order_status=0 and del_status=0 and storage_id = #{storageId}
</select>
<select id="selectByDepositCode" resultMap="BaseResultMap">
select <include refid="Base_Column_List" /> from storage_deposit
where owner_uid = #{uid} and status = 1 and del_status= 0 AND deposit_code = #{depositCode,jdbcType=VARCHAR} limit 1
... ...
... ... @@ -200,7 +200,14 @@
</foreach> and status = 1 and is_hide = 0 and pre_sale_flag=0 and region=1
group by storage_id
</select>
<select id="selectBatchFlashLeastPrice" resultMap="BaseResultMap">
select storage_id , min(price) as price from storage_price where
storage_id in
<foreach item="storageId" index="index" collection="skuList" open="(" separator="," close=")">
#{storageId, jdbcType=INTEGER}
</foreach> and status = 1 and is_hide = 0 and pre_sale_flag=3 and region=1
group by storage_id
</select>
<select id="selectByStorageIdsPlus" resultMap="BaseResultMap">
select id, skup, storage_id, price, status
... ...
... ... @@ -23,10 +23,10 @@ public class DepositController {
@RequestMapping(params = "method=ufo.deposit.queryUserDoposit")
public ApiResponse queryUserDoposit(@RequestParam("uid") Integer uid
, @RequestParam(value = "limit", required = false)Integer limit
, @RequestParam(value = "page", required = false)Integer page
, @RequestParam(value = "limit", required = false) Integer limit
, @RequestParam(value = "page", required = false) Integer page
) {
if(uid == null || uid < 1) {
if (uid == null || uid < 1) {
LOG.warn("queryUserDoposit failed, invalid uid: {}", uid);
return new ApiResponse.ApiResponseBuilder().code(500).message("查询失败").build();
}
... ... @@ -38,10 +38,10 @@ public class DepositController {
@RequestMapping(params = "method=ufo.deposit.queryUserDopositBackDetail")
public ApiResponse queryUserDopositBackDetail(@RequestParam("uid") Integer uid
, @RequestParam(value = "limit", required = false)Integer limit
, @RequestParam(value = "page", required = false)Integer page
, @RequestParam(value = "limit", required = false) Integer limit
, @RequestParam(value = "page", required = false) Integer page
) {
if(uid == null || uid < 1) {
if (uid == null || uid < 1) {
LOG.warn("queryUserDopositBackDetail failed, invalid uid: {}", uid);
return new ApiResponse.ApiResponseBuilder().code(500).message("查询失败").build();
}
... ... @@ -50,4 +50,24 @@ public class DepositController {
LOG.info("queryUserDopositBackDetail result: {}", depositDetailBoList);
return new ApiResponse.ApiResponseBuilder().code(200).data(depositDetailBoList).build();
}
@RequestMapping(params = "method=ufo.deposit.queryUserDopositing")
public ApiResponse queryUserDopositing(@RequestParam("uid") Integer uid
, @RequestParam("productId") Integer productId
, @RequestParam(value = "limit", required = false) Integer limit
, @RequestParam(value = "page", required = false) Integer page
) {
if (uid == null || uid < 1) {
LOG.warn("queryUserDopositing failed, invalid uid: {}", uid);
return new ApiResponse.ApiResponseBuilder().code(500).message("查询失败").build();
}
if (productId == null || productId < 1) {
LOG.warn("queryUserDopositing failed, invalid productId: {}", productId);
return new ApiResponse.ApiResponseBuilder().code(500).message("查询失败").build();
}
List<DepositDetailBo> depositDetailBoList = depositService.queryUserProductDopositingDetail(uid, productId, page, limit);
LOG.info("queryUserDopositing result: {}", depositDetailBoList);
return new ApiResponse.ApiResponseBuilder().code(200).data(depositDetailBoList).build();
}
}
... ...
... ... @@ -3,6 +3,8 @@ package com.yohoufo.order.service;
import com.yohobuy.ufo.model.order.bo.DepositDetailBo;
import com.yohobuy.ufo.model.order.bo.DepositProductBo;
import com.yohoufo.common.exception.UfoServiceException;
import com.yohoufo.dal.order.model.StorageDeposit;
import java.util.Collection;
import java.util.List;
... ... @@ -13,6 +15,12 @@ public interface DepositService {
List<DepositDetailBo> queryUserDopositBackDetail(Integer uid, Integer page, Integer limit);
List<DepositDetailBo> queryUserProductDopositDetail(Integer uid, Integer productId, Integer page, Integer limit);
List<DepositDetailBo> queryUserProductDopositingDetail(Integer uid, Integer productId, Integer page, Integer limit);
boolean changeSaleStatusOn(Integer uid, String depositCode, Integer skup);
boolean changeSaleStatusOff(Integer uid, Integer skup);
boolean changeOwner(Integer uid, Integer skup, long buyOrderCode, Integer newUid);
int getDepositOffShelvesCount(Integer uid, Integer storageId);
int getRemainDay(Integer uid, String depositCode);
}
... ...
... ... @@ -14,7 +14,7 @@ import com.yohoufo.dal.order.model.BuyerOrderGoods;
import com.yohoufo.dal.order.model.DepositOrder;
import com.yohoufo.dal.order.model.SellerOrderGoods;
import com.yohoufo.dal.order.model.StorageDeposit;
import com.yohoufo.dal.product.StorageDepositMapper;
import com.yohoufo.dal.order.StorageDepositMapper;
import com.yohoufo.order.convert.GoodsInfoConvertor;
import com.yohoufo.order.service.IBuyerOrderMetaService;
import org.apache.commons.collections.CollectionUtils;
... ... @@ -68,7 +68,7 @@ public class DepositOrderService {
depositRemainDay = (depositEndTime - DateUtil.getCurrentTimeSecond()) / 24 * 60 * 60;
}
Long skup = storageDeposit.getSkup();
Integer skup = storageDeposit.getSkup();
Long orderCode = storageDeposit.getOrderCode();
SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup.intValue());
... ...
... ... @@ -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;
}
}
... ...
... ... @@ -60,6 +60,8 @@ public class ProductProxyService extends AbsProxyService{
public final static String BATCH_STORAGE_DATAS = "ufo.product.storage.info";
public final static String FLASH_LEAST_PRICE = "ufo.product.storage.leastFlashSalePrice";
final static String BATCH_ADD = "ufo.product.batchAdd";
/**
... ... @@ -139,6 +141,17 @@ public class ProductProxyService extends AbsProxyService{
return ppc;
}
public Map<Integer, BigDecimal> getFlashLeastPrice(Integer productId) {
ProductDetailResp prdResp = null;
try {
Map<Integer, BigDecimal> result = ufoServiceCaller.call(FLASH_LEAST_PRICE, productId, null);
return result;
} catch (Exception ex) {
logger.warn("getFlashLeastPrice err");
}
return new HashMap<>();
}
public PrdPrice getPrdPriceRange(Integer uid,
int storageId){
StorageDataResp storage = getStorageData(storageId);
... ...
... ... @@ -35,8 +35,10 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
... ... @@ -664,6 +666,19 @@ public class ProductController {
return null;
}
@ApiOperation(name = "ufo.product.storage.leastFlashSalePrice", desc = "sku闪购最低价")
@RequestMapping(params = "method=ufo.product.storage.leastFlashSalePrice")
@Cachable(expire = 180)
public Map<Integer, BigDecimal> queryLeastFlashSalePrice(@RequestParam(value = "productId", required = true) Integer productId) {
if (productId == null) {
LOG.info("in method=ufo.product.storage.leastFlashSalePrice productId Is Null");
return null;
}
LOG.info("in method=ufo.product.storage.leastFlashSalePrice productId={}", productId);
return productService.queryProductLeastFlashSalePrice(productId);
}
@IgnoreSession
@RequestMapping(params = "method=ufo.product.skup.detail")
public ApiResponse querySkupDetailBySkup(@RequestParam(value = "skup") Integer skup) {
... ...
package com.yohoufo.product.service;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.yoho.core.dal.datasource.annotation.Database;
... ... @@ -30,6 +32,8 @@ public interface ProductService {
StoragePrice getStoragePriceBySkup(Integer skup);
Map<Integer, BigDecimal> queryProductLeastFlashSalePrice(Integer productId);
ProductSeriesTemplateResp querySeriesTemplateData(String skns);
ProductSortTemplateResp querySortTemplateData(String productIds);
... ...
... ... @@ -17,6 +17,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
... ... @@ -502,9 +503,13 @@ public class ProductServiceImpl implements ProductService {
List<StoragePrice> hkStoragePrices = storagePriceMapper.selectBatchHKLeastPrice(skuList);
List<StoragePrice> flashStoragePrices = storagePriceMapper.selectBatchFlashLeastPrice(skuList);
Map<Integer, BigDecimal> priceMap = storagePrices.stream().collect(Collectors.toMap(StoragePrice::getStorageId, StoragePrice::getPrice));
Map<Integer, BigDecimal> preSalePriceMap = preSaleStoragePrices.stream().collect(Collectors.toMap(StoragePrice::getStorageId, StoragePrice::getPrice));
Map<Integer, BigDecimal> hkPriceMap = hkStoragePrices.stream().collect(Collectors.toMap(StoragePrice::getStorageId, StoragePrice::getPrice));
Map<Integer, BigDecimal> falshPriceMap = flashStoragePrices.stream().collect(Collectors.toMap(StoragePrice::getStorageId, StoragePrice::getPrice));
List<StorageInfoResp> resp = Lists.newArrayList();
storageList.stream().forEach(item -> {
StorageInfoResp storageInfoResp = new StorageInfoResp();
... ... @@ -515,6 +520,7 @@ public class ProductServiceImpl implements ProductService {
storageInfoResp.setLeastPrice(priceMap.get(item.getId()));
storageInfoResp.setPreSaleLeastPrice(preSalePriceMap.get(item.getId()));
storageInfoResp.setHkLeastPrice(hkPriceMap.get(item.getId()));
storageInfoResp.setFlashLeastPrice(falshPriceMap.get(item.getId()));
resp.add(storageInfoResp);
});
... ... @@ -522,6 +528,15 @@ public class ProductServiceImpl implements ProductService {
}
@Override
public Map<Integer, BigDecimal> queryProductLeastFlashSalePrice(Integer productId) {
if (productId == null) {
return new HashMap<>();
}
List<StoragePrice> storagePrices = storagePriceMapper.selectLeastPricesByProductId(productId);
return storagePrices.stream().filter(price -> price.getPreSaleFlag() == 3).collect(Collectors.toMap(StoragePrice::getStorageId, StoragePrice::getPrice));
}
@Override
public StoragePrice getStoragePriceBySkup(Integer skup) {
return storagePriceMapper.selectBySkup(skup);
}
... ...
... ... @@ -107,6 +107,7 @@ datasources:
- com.yohoufo.dal.order.CmsPayMapper
- com.yohoufo.dal.order.OrdersPayHbfqMapper
- com.yohoufo.dal.order.BlackUserMapper
- com.yohoufo.dal.order.StorageDepositMapper
ufo_promotion:
servers:
... ...
... ... @@ -106,6 +106,7 @@ datasources:
- com.yohoufo.dal.order.CmsPayMapper
- com.yohoufo.dal.order.OrdersPayHbfqMapper
- com.yohoufo.dal.order.BlackUserMapper
- com.yohoufo.dal.order.StorageDepositMapper
ufo_promotion:
servers:
... ...