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

Commit ef975e2b authored by 胡佳晨's avatar 胡佳晨

准备处理库存

parent 67de5344
......@@ -336,6 +336,7 @@ public class GoblinRedisConst {
public static final String GOBLIN_MIX_SKU_START_LIST = PREFIX.concat("mix:goods:start");//sku 混合售开始列表
public static final String GOBLIN_MIX_LIMIT = PREFIX.concat("mix:limit:");//$key:$mixId:$uid 混合售开始列表
/* ----------------------------------------------------------------- */
/* ----------------------------------------------------------------- */
}
......@@ -13,8 +13,6 @@ import java.util.List;
@Data
public class MixOrderParam {
@ApiModelProperty(value = "用户id")
private String uid;
@ApiModelProperty(value = "混合售id")
private String mixId;
@ApiModelProperty(value = "入场人地址vo")
......
......@@ -152,20 +152,23 @@ public class GoblinMixServiceImpl implements IGoblinMixService {
itemVo.getProductId(), itemVo.getCount(), LocalDateTime.now()
});
//白名单
if (param.getWhiteType() == 1) {
queueUtils.sendMsgByRedisXls(mixId, param.getWhiteUrl(), "", "3", itemVo.getSkuId());
}
// if (param.getWhiteType() == 1) {
// queueUtils.sendMsgByRedisXls(mixId, param.getWhiteUrl(), "", "3", itemVo.getSkuId());
// }
}
GoblinMixDetailsVo vo = GoblinMixDetailsVo.getNew().copyByInsert(mixId, param, itemList, uid, sellPrice,price);
GoblinMixDetailsVo vo = GoblinMixDetailsVo.getNew().copyByInsert(mixId, param, itemList, uid, sellPrice, price);
goblinMix.add(new Object[]{
mixId, uid, vo.getName(), vo.getTimeStart(), vo.getTimeEnd(), 6, vo.getShowPosition(),
vo.getSellName(), vo.getExpressPrice(), vo.getIntro(), vo.getWatchType(), vo.getCoverPic(),
vo.getVideo(), vo.getDetailUrl(), vo.getDetails(), vo.getStock(), vo.getStockLock(),
vo.getIsLock(), vo.getLimit(), vo.getWhiteType(), vo.getWhiteUrl(),vo.getPayType(), LocalDateTime.now()
vo.getIsLock(), vo.getLimit(), vo.getWhiteType(), vo.getWhiteUrl(), vo.getPayType(), LocalDateTime.now()
});
//设置redis
redisUtils.setMixDetails(mixId, vo);
redisList(vo.getShowPosition(), vo.getMixId(), vo.getStatus());
if (param.getWhiteType() == 1) {
queueUtils.sendMsgByRedisXls(mixId, param.getWhiteUrl(), "", "3", mixId);
}
//设置mongo
mongoUtils.setGoblinMixDetailsVo(vo);
//设置mysql
......@@ -187,9 +190,9 @@ public class GoblinMixServiceImpl implements IGoblinMixService {
for (GoblinMixDetailsItemVo itemVo : vo.getItem()) {
//白名单
if (param.getWhiteType() == 1) {
queueUtils.sendMsgByRedisXls(param.getMixId(), param.getWhiteUrl(), vo.getWhiteUrl(), "3", itemVo.getSkuId());
}
// if (param.getWhiteType() == 1) {
// queueUtils.sendMsgByRedisXls(param.getMixId(), param.getWhiteUrl(), vo.getWhiteUrl(), "3", param.getMixId());
// }
}
vo.setShowPosition(param.getShowPosition());
......@@ -198,6 +201,9 @@ public class GoblinMixServiceImpl implements IGoblinMixService {
vo.setWhiteUrl(param.getWhiteUrl());
//redis
redisUtils.setMixDetails(param.getMixId(), vo);
if (param.getWhiteType() == 1) {
queueUtils.sendMsgByRedisXls(param.getMixId(), param.getWhiteUrl(), vo.getWhiteUrl(), "3", param.getMixId());
}
//mongo
mongoUtils.changeGoblinMixDetailsVo(vo);
//sql入库
......
......@@ -2554,25 +2554,25 @@ public class GoblinRedisUtils {
public void addGoblinMixNftStockList(String mixId) {
List<String> mixIds = getGoblinMixNftStockList();
mixIds.add(mixId);
setGoblinMixSkuList(mixId);
setGoblinMixNftStockList(mixId);
}
public void addGoblinMixNftStartList(String mixId) {
List<String> mixIds = getGoblinMixNftStartList();
mixIds.add(mixId);
setGoblinMixSkuList(mixId);
setGoblinMixNftStartList(mixId);
}
public void addGoblinMixSkuStockList(String mixId) {
List<String> mixIds = getGoblinMixSkuStockList();
mixIds.add(mixId);
setGoblinMixSkuList(mixId);
setGoblinMixSkuStockList(mixId);
}
public void addGoblinMixSkuStartList(String mixId) {
List<String> mixIds = getGoblinMixSkuStartList();
mixIds.add(mixId);
setGoblinMixSkuList(mixId);
setGoblinMixSkuStartList(mixId);
}
/* ---------------------------------------- ---------------------------------------- */
/* ---------------------------------------- ---------------------------------------- */
......
package com.liquidnet.service.order.service.impl;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam;
import com.liquidnet.service.goblin.constant.NftAccStatusEnum;
import com.liquidnet.service.goblin.dto.GoblinUserNftAccInfoVo;
import com.liquidnet.service.goblin.dto.manage.MixOrderParam;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinMixDetailsItemVo;
import com.liquidnet.service.goblin.dto.vo.GoblinMixDetailsVo;
import com.liquidnet.service.goblin.dto.vo.GoblinPayInnerResultVo;
import com.liquidnet.service.goblin.param.SyncOrderParam;
import com.liquidnet.service.goblin.service.IMixOrderService;
import com.liquidnet.service.order.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.tomcat.jni.Local;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
@Service
@Slf4j
......@@ -34,6 +46,51 @@ public class MixOrderServiceImpl implements IMixOrderService {
@Override
public ResponseDto<GoblinPayInnerResultVo> checkOrder(MixOrderParam param, String uid) {
GoblinMixDetailsVo mixVo = redisUtils.getMixDetails(param.getMixId());
String mixId = mixVo.getMixId();
String mobile = StringUtils.defaultString(((String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE)), "");
//判断 活动状态
LocalDateTime st = LocalDateTime.parse(mixVo.getTimeStart(), DTF_YMD_HMS);
LocalDateTime et = LocalDateTime.parse(mixVo.getTimeEnd(), DTF_YMD_HMS);
LocalDateTime nt = LocalDateTime.now();
if (!nt.isAfter(st) && nt.isBefore(et)) {
return ResponseDto.failure("不在活动有效期内");
}
//判断白名单
int whiteType = mixVo.getWhiteType();
Boolean canBuy = redisUtils.getListCanBuy(mixId, mixId, mobile, uid, whiteType == 2 ? -1 : whiteType);
if (!canBuy) {
return ResponseDto.failure("该藏品仅对部分用户开放~");
}
//判断限购
Integer limitCount = mixVo.getLimit();
int buyCount = redisUtils.incrMixLimit(mixId, uid);
if (buyCount > limitCount) {
return ResponseDto.failure("超出限购数量");
}
//构建 各个商品信息
List<GoblinGoodsSkuInfoVo> skuInfoList = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
List<GoblinGoodsSkuInfoVo> nftInfoList = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
for (GoblinMixDetailsItemVo itemVo : mixVo.getItem()) {
GoblinGoodsSkuInfoVo skuInfoVo = redisUtils.getGoodsSkuInfoVo(itemVo.getSkuId());
if (skuInfoVo.getSkuType() == 0) {
skuInfoList.add(skuInfoVo);
} else if (skuInfoVo.getSkuType() == 1) {
nftInfoList.add(skuInfoVo);
} else {
return ResponseDto.failure("参数异常");
}
}
// 认证验证
if (nftInfoList.size() > 0) {
GoblinUserNftAccInfoVo openAccountInfo = redisUtils.getOpenAccountInfo(uid);
if (null == openAccountInfo || !NftAccStatusEnum.StatusAcc.SUCCESS.getCode().equals(openAccountInfo.getCode())) {
return ResponseDto.failure("您还未开通数字账户~");
}
}
//库存处理
return null;
}
......
......@@ -15,6 +15,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
......@@ -234,7 +235,7 @@ public class GoblinRedisUtils {
} else if (now.isAfter(collectVoItem.getTimeStart()) && now.isBefore(collectVoItem.getTimeEnd())) {
collectVo = collectVoItem;
break;
}else if(collectVoItem.getTimeEnd() != null && now.isAfter(collectVoItem.getTimeEnd())){
} else if (collectVoItem.getTimeEnd() != null && now.isAfter(collectVoItem.getTimeEnd())) {
collectTemp = null;
}
}
......@@ -268,7 +269,7 @@ public class GoblinRedisUtils {
if (collectNext == null || collectNext.getTimeStart().isAfter(collectNext.getTimeStart())) {
collectNext = collectVoItem;
}
}else if(collectVoItem.getTimeEnd() != null && now.isAfter(collectVoItem.getTimeEnd())){
} else if (collectVoItem.getTimeEnd() != null && now.isAfter(collectVoItem.getTimeEnd())) {
collectTemp = null;
}
}
......@@ -318,7 +319,7 @@ public class GoblinRedisUtils {
}
if (whiteType == -1) {
return true;
}else if (whiteType == 0) {//会员
} else if (whiteType == 0) {//会员
return memberStage != null;
} else {//白名单
return wResult;
......@@ -632,6 +633,7 @@ public class GoblinRedisUtils {
/**
* 记录用户是否购买过技术部数字藏品
*
* @param uid
*/
public void setBuyNftTec(String uid) {
......@@ -639,5 +641,52 @@ public class GoblinRedisUtils {
redisUtil.set(rdk, 1);
}
/* ----------------------------------- ----------------------------------- */
/* ----------------------------------- 混合售 ----------------------------------- */
/**
* 获取 盲盒skuId 关联 的skuId
*/
public ArrayList<String> getGoblinMixRelationBox(String skuId, String mixId) {
String rdk = GoblinRedisConst.GOBLIN_MIX_RELATION_BOX.concat(skuId).concat(":" + mixId);
Object obj = redisUtil.get(rdk);
if (obj == null) {
return CollectionUtil.arrayListString();
} else {
return (ArrayList<String>) obj;
}
}
// 获取 组合售数据
public GoblinMixDetailsVo getMixDetails(String mixId) {
String rdk = GoblinRedisConst.GOBLIN_MIX_DETAILS.concat(mixId);
Object obj = redisUtil.get(rdk);
if (obj == null) {
return GoblinMixDetailsVo.getNew();
} else {
return (GoblinMixDetailsVo) obj;
}
}
//混合售限购增加
public int incrMixLimit(String mixId, String uid) {
String rdk = GoblinRedisConst.GOBLIN_MIX_LIMIT.concat(mixId).concat(":").concat(uid);
return (int) redisUtil.incr(rdk, 1);
}
//混合售限购减少
public int decrMixLimit(String mixId, String uid) {
String rdk = GoblinRedisConst.GOBLIN_MIX_LIMIT.concat(mixId).concat(":").concat(uid);
return (int) redisUtil.decr(rdk, 1);
}
//混合购限购获取
public int getMixLimit(String mixId, String uid) {
String rdk = GoblinRedisConst.GOBLIN_MIX_LIMIT.concat(mixId).concat(":").concat(uid);
Object obj = redisUtil.get(rdk);
if (obj == null) {
return 0;
} else {
return (int) obj;
}
}
}
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