记得上下班打卡 | git大法好,push需谨慎

Commit 60ffbde9 authored by 张禹's avatar 张禹

Merge branch 'pre' into 'master'

Pre

See merge request !310
parents 29eddda5 da73dcdd
......@@ -39,6 +39,8 @@ public class GoblinMixAppListVo implements Serializable, Cloneable {
private String shelvesTime;
@ApiModelProperty(position = 23, value = "预约开启标识[0:未开启,1开启]")
private int reserve;
@ApiModelProperty(position = 24, value = "是否可转债[0-否|1-是]")
private Integer transferable;
private static final GoblinMixAppListVo obj = new GoblinMixAppListVo();
......
......@@ -41,6 +41,10 @@ public class GoblinMixDetailsItemVo implements Serializable, Cloneable {
private String productId;
@ApiModelProperty(value = "组合件数[数字藏品不能大于1]")
private Integer count;
@ApiModelProperty(value = "NFT路由[zxinchain-至信链|xuper-百度超级链]")
private String routeType;
@ApiModelProperty(value = "转赠时间[单位秒]")
private Long transferTimeLimit;
private static final GoblinMixDetailsItemVo obj = new GoblinMixDetailsItemVo();
......
......@@ -120,6 +120,11 @@ public class GoblinNftGoodsSkuInfoVo implements Serializable, Cloneable {
@ApiModelProperty(position = 74, value = "第一个分批购结束时间")
private LocalDateTime firstSaleEndTime;
@ApiModelProperty(position = 75, value = "NFT路由[zxinchain-至信链|xuper-百度超级链]")
private String routeType;
@ApiModelProperty(position = 76, value = "转赠时间[单位秒]")
private Long transferTimeLimit;
private static final GoblinNftGoodsSkuInfoVo obj = new GoblinNftGoodsSkuInfoVo();
public static GoblinNftGoodsSkuInfoVo getNew() {
......
......@@ -34,6 +34,9 @@ public class GoblinNftGoodsSkuListVo implements Serializable, Cloneable {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 27, value = "开售时间")
private LocalDateTime saleStartTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 28, value = "创建时间")
private LocalDateTime createdAt;
@ApiModelProperty(position = 55, value = "spu相关信息")
......@@ -52,6 +55,28 @@ public class GoblinNftGoodsSkuListVo implements Serializable, Cloneable {
private Integer state;
@ApiModelProperty(position = 62, value = "标签[0-提前购买|1-分段购买]")
private Integer tagType;
@ApiModelProperty(position = 63, value = "NFT路由[zxinchain-至信链|xuper-百度超级链]")
private String routeType;
@ApiModelProperty(position = 64, value = "转赠时间[单位秒]")
private Long transferTimeLimit;
@ApiModelProperty(position = 65, value = "是否可转债[0-否|1-是]")
private Integer transferable;
@ApiModelProperty(position = 70, value = "分批购活动id")
private String listId;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 71, value = "sku正常开售时间")
private LocalDateTime baseSaleStartTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 72, value = "下个分段购开始时间,如果为null则没有")
private LocalDateTime nextSaleStartTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 73, value = "第一个分批购开始时间")
private LocalDateTime firstSaleStartTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(position = 74, value = "第一个分批购结束时间")
private LocalDateTime firstSaleEndTime;
private static final GoblinNftGoodsSkuListVo obj = new GoblinNftGoodsSkuListVo();
......@@ -73,6 +98,7 @@ public class GoblinNftGoodsSkuListVo implements Serializable, Cloneable {
this.setSaleStartTime(source.getSaleStartTime());
this.setSoldoutStatus(source.getSoldoutStatus());
this.setUnbox(source.getUnbox());
this.setCreatedAt(source.getCreatedAt());
return this;
}
......
......@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
......@@ -51,7 +52,26 @@ public class GoblinMixAppServiceImpl implements IGoblinMixAppService {
for (String mixId : startList) {
GoblinMixDetailsVo vo = redisUtils.getMixDetails(mixId);
GoblinMixAppListVo itemVo = GoblinMixAppListVo.getNew().copy(vo, nowTime);
itemVo.setStatus(6);
LocalDateTime nt = LocalDateTime.now();
LocalDateTime st = LocalDateTime.parse(itemVo.getTimeStart(), DTF_YMD_HMS);
LocalDateTime et = LocalDateTime.parse(itemVo.getTimeEnd(), DTF_YMD_HMS);
if (nt.isBefore(st)) {
itemVo.setStatus(9);
} else if (nt.isAfter(et)) {
itemVo.setStatus(10);
} else {
itemVo.setStatus(6);
}
// itemVo.setStatus(6);
for (GoblinMixDetailsItemVo data:vo.getItem()){
String spuId = data.getSpuId();
if(redisUtils.getGoodsInfoVo(spuId).getSpuType()==1){
itemVo.setTransferable(1);
break;
}else{
itemVo.setTransferable(0);
}
}
voList.add(itemVo);
}
......@@ -59,6 +79,15 @@ public class GoblinMixAppServiceImpl implements IGoblinMixAppService {
GoblinMixDetailsVo vo = redisUtils.getMixDetails(mixId);
GoblinMixAppListVo itemVo = GoblinMixAppListVo.getNew().copy(vo, nowTime);
itemVo.setStatus(8);
for (GoblinMixDetailsItemVo data:vo.getItem()){
String spuId = data.getSpuId();
if(redisUtils.getGoodsInfoVo(spuId).getSpuType()==1){
itemVo.setTransferable(1);
break;
}else{
itemVo.setTransferable(0);
}
}
voList.add(itemVo);
}
......@@ -87,14 +116,34 @@ public class GoblinMixAppServiceImpl implements IGoblinMixAppService {
item.setStock(0);
item.setSkuName(skuInfoVo.getName());
item.setSpuName(spuInfoVo.getName());
String routeType = "";
if (skuInfoVo.getUnbox().equals("1")) {
List<String> relationIds = redisUtils.getGoblinMixRelationBox(item.getSkuId(), vo.getMixId());
for (String skuId : relationIds) {
stock += redisUtils.getSkuStock(vo.getMixId(), skuId);
}
for (String routeSkuId : spuInfoVo.getSkuIdList()) {
if ("".equals(routeType)) {
routeType = redisUtils.getGoodsSkuInfoVo(routeSkuId).getRouteType();
} else {
break;
}
}
} else {
stock += redisUtils.getSkuStock(vo.getMixId(), item.getSkuId());
routeType = skuInfoVo.getRouteType();
}
//转赠时间
if(skuInfoVo.getSkuType()==1) {
Map<String, Long> artworkTransferConfMap = redisUtils.getUserDigitalArtworkTransferConfMap();
item.setRouteType(routeType);
item.setTransferTimeLimit(artworkTransferConfMap.get(routeType));
}else{
item.setRouteType("");
item.setTransferTimeLimit(0L);
}
}
if (stock == 0) {
vo.setStatus(8);
......
......@@ -21,6 +21,7 @@ import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -45,7 +46,7 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
@Autowired
IGoblinGoodsAnticipateMgService goblinGoodsAnticipateMgService;
final static int size = 10;
final static int size = 20;
@Override
public ResponseDto<PagedResult<GoblinNftGoodsSkuListVo>> goodsList(int page) {
......@@ -72,17 +73,47 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
HashMap<String, Object> map = goblinRedisUtils.getGoodsSkuInfoVo(now, skuId);
GoblinGoodsSkuInfoVo skuInfoVo = (GoblinGoodsSkuInfoVo) map.get("vo");
Integer tagType = (Integer) map.get("tagType");
String listId = (String) map.get("listId");
LocalDateTime baseSaleStartTime = (LocalDateTime) map.get("baseSaleStartTime");
LocalDateTime nextSaleStartTime = (LocalDateTime) map.get("nextSaleStartTime");
LocalDateTime firstSaleStartTime = (LocalDateTime) map.get("firstSaleStartTime");
LocalDateTime firstSaleEndTime = (LocalDateTime) map.get("firstSaleEndTime");
GoblinNftGoodsSkuListVo goblinNftGoodsSkuListVo = GoblinNftGoodsSkuListVo.getNew().copy(skuInfoVo);
// spu信息
Object spuInfoMap = spuInfoList.get(skuInfoVo.getSpuId());
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(skuInfoVo.getSpuId());
if (null == spuInfoMap) {
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(skuInfoVo.getSpuId());
GoblinNftGoodsSpuInfoVo nftGoodsSpuInfoVo = GoblinNftGoodsSpuInfoVo.getNew().copy(goodsInfoVo);
spuInfoList.put(skuInfoVo.getSpuId(), nftGoodsSpuInfoVo);
goblinNftGoodsSkuListVo.setGoblinNftGoodsSpuInfoVo(nftGoodsSpuInfoVo);
} else {
goblinNftGoodsSkuListVo.setGoblinNftGoodsSpuInfoVo((GoblinNftGoodsSpuInfoVo) spuInfoMap);
}
// 链
String routeType = "";
if (skuInfoVo.getUnbox().equals("1")) {
for (String routeSkuId : goodsInfoVo.getSkuIdList()) {
if ("".equals(routeType)) {
routeType = goblinRedisUtils.getGoodsSkuInfoVo(routeSkuId).getRouteType();
} else {
break;
}
}
} else {
routeType = skuInfoVo.getRouteType();
}
//转赠时间
Map<String, Long> artworkTransferConfMap = goblinRedisUtils.getUserDigitalArtworkTransferConfMap();
goblinNftGoodsSkuListVo.setRouteType(routeType);
goblinNftGoodsSkuListVo.setTransferTimeLimit(artworkTransferConfMap.get(routeType));
goblinNftGoodsSkuListVo.setTransferable(1);
goblinNftGoodsSkuListVo.setListId(listId);
goblinNftGoodsSkuListVo.setBaseSaleStartTime(baseSaleStartTime);
goblinNftGoodsSkuListVo.setNextSaleStartTime(nextSaleStartTime);
goblinNftGoodsSkuListVo.setFirstSaleEndTime(firstSaleEndTime);
goblinNftGoodsSkuListVo.setFirstSaleStartTime(firstSaleStartTime);
// 库存、预约
if (soldOutSkuIdList.contains(skuId)) {// 是售罄的
goblinNftGoodsSkuListVo.setIsStock(0);
......@@ -176,10 +207,25 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
// 库存
HashMap<String, Integer> stockHashMap = goblinOrderUtils.getIsStock(listId, skuId, skuInfoVo.getUnbox(), skuInfoVo.getSoldoutStatus(), goodsInfoVo.getSkuIdList());
nftGoodsSkuInfoVo.setIsStock(stockHashMap.get("isStock"));
// 总库存
// 总库存&链
String routeType = "";
if (skuInfoVo.getUnbox().equals("1")) {
nftGoodsSkuInfoVo.setSkuStock(stockHashMap.get("totalStock"));
for (String routeSkuId : goodsInfoVo.getSkuIdList()) {
if ("".equals(routeType)) {
routeType = goblinRedisUtils.getGoodsSkuInfoVo(routeSkuId).getRouteType();
} else {
break;
}
}
} else {
routeType = skuInfoVo.getRouteType();
}
//转赠时间
Map<String, Long> artworkTransferConfMap = goblinRedisUtils.getUserDigitalArtworkTransferConfMap();
nftGoodsSkuInfoVo.setRouteType(routeType);
nftGoodsSkuInfoVo.setTransferTimeLimit(artworkTransferConfMap.get(routeType));
// 系统时间
nftGoodsSkuInfoVo.setSystime(LocalDateTime.now());
nftGoodsSkuInfoVo.setTagType(tagType);
......
......@@ -274,6 +274,11 @@ public class GoblinListServiceImpl implements IGoblinListService {
redisUtils.addGoblinListRelationBox(itemVo.getSkuId(), vo.getListId(), key);
}
}
for (String relationSkuId : spuInfoVo.getSkuIdList()) {
if (redisUtils.getGoodsSkuInfoVo(relationSkuId).getUnbox().equals("0")) {
redisUtils.addGoblinListRelationBox(itemVo.getSkuId(), vo.getListId(), relationSkuId);
}
}
} else {//非盲盒逻辑
//库存
......
......@@ -2467,8 +2467,10 @@ public class GoblinRedisUtils {
public void addGoblinListRelationBox(String skuId, String listId, String relationSkuId) {
String rdk = GoblinRedisConst.LIST_RELATION_BOX.concat(skuId).concat(":" + listId);
ArrayList<String> list = getGoblinListRelationBox(skuId, listId);
list.add(relationSkuId);
redisUtil.set(rdk, list);
if (!list.contains(relationSkuId)) {
list.add(relationSkuId);
redisUtil.set(rdk, list);
}
}
/**
......
......@@ -195,6 +195,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
return ResponseDto.success(payOrder(nftOrderList, preParam, orderMasterCode, param.getShowUrl(), param.getReturnUrl(), param.getDeviceFrom(), param.getPayType(), mixId, mixVo.getName(), param.getOpenId(), nt, storeName));
} catch (Exception e) {
e.printStackTrace();
log.error("mixOrder ERROR MESSAGE:{},EXCEPTION:{}", e.getMessage(), e);
initStock(canBuyIds, mixId, isUseLimit, uid);
return ResponseDto.failure();
}
......@@ -457,7 +458,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
nftItem.getNum(), nftItem.getStoreId(), nftItem.getStoreName(), nftItem.getOrderCode(), nftItem.getUserId(), nftItem.getUserName(), nftItem.getUserMobile(), nftItem.getPriceTotal(), nftItem.getPriceCoupon(),
nftItem.getStorePriceCoupon(), nftItem.getPriceRedEnvelope(), nftItem.getPriceVoucher(), nftItem.getPriceActual(), nftItem.getUcouponId(), nftItem.getStoreCouponId(), nftItem.getRedEnvelopeCode(), nftItem.getStatus(), nftItem.getSource(),
nftItem.getOrderType(), nftItem.getPayType(), nftItem.getDeviceFrom(), nftItem.getVersion(), nftItem.getPayCountdownMinute(), nftItem.getIpAddress(), nftItem.getCreatedAt(), nftItem.getPayCode(),
nftItem.getSkuTitle(), nftItem.getListId(), nftItem.getExCode(), mixId,masterCode
nftItem.getSkuTitle(), nftItem.getListId(), nftItem.getExCode(), mixId, masterCode
});
// 订单vo redis
GoblinNftOrderVo orderVo = GoblinNftOrderVo.getNew().copyMix(nftItem, mixId, mixName);
......@@ -490,7 +491,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
sqlDataGoblin.add(new Object[]{
storeOrder.getMasterOrderCode(), storeOrder.getOrderId(), storeOrder.getStoreId(), storeOrder.getStoreName(), storeOrder.getOrderCode(), storeOrder.getUserId(), storeOrder.getUserName(), storeOrder.getUserMobile(), storeOrder.getPriceTotal(), storeOrder.getPayCode(),
storeOrder.getPriceActual(), storeOrder.getPriceRefund(), storeOrder.getPriceExpress(), storeOrder.getPriceCoupon(), storeOrder.getStorePriceCoupon(), storeOrder.getPriceVoucher(), storeOrder.getStatus(), storeOrder.getUcouponId(), storeOrder.getStoreCouponId(), storeOrder.getPayType(), storeOrder.getDeviceFrom(),
storeOrder.getSource(), storeOrder.getVersion(), storeOrder.getIsMember(), storeOrder.getOrderType(), storeOrder.getWriteOffCode(), storeOrder.getPayCountdownMinute(), storeOrder.getIpAddress(), storeOrder.getMarketId(), storeOrder.getMarketType(), storeOrder.getCreatedAt(), mixId,masterCode
storeOrder.getSource(), storeOrder.getVersion(), storeOrder.getIsMember(), storeOrder.getOrderType(), storeOrder.getWriteOffCode(), storeOrder.getPayCountdownMinute(), storeOrder.getIpAddress(), storeOrder.getMarketId(), storeOrder.getMarketType(), storeOrder.getCreatedAt(), mixId, masterCode
});
GoblinOrderAttr orderAttr = preParam.getOrderAttr();
sqlDataAttr.add(new Object[]{
......@@ -813,7 +814,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
break;
}
String nftR = nftCheck(uid, orderId);
if(vo.getMixId()==null){
if (vo.getMixId() == null) {
vo.setMixId(nftOrderUtils.getNftOrder(orderId).getMixId());
}
if ("订单不存在".equals(nftR)) {
......@@ -828,7 +829,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
break;
}
String goblinR = goblinCheck(uid, orderId);
if(vo.getMixId()==null){
if (vo.getMixId() == null) {
vo.setMixId(redisUtils.getGoblinOrder(orderId).getMixId());
}
if ("订单不存在".equals(goblinR)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment