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

Commit 53751100 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/dev_goblin' into dev_goblin

parents 561c2c8a 72993dc4
......@@ -32,8 +32,13 @@ public class GoblinGoodsSkuInfoDetailVo implements Serializable, Cloneable {
private String skuAppear;
@ApiModelProperty(position = 11, value = "商品ID[64]")
private String spuId;
@ApiModelProperty(position = 12, value = "库存是否告警,true 告警,false没有告警")
@ApiModelProperty(position = 12, value = "true 没有库存了, false 有库存")
private boolean stockLess;
@ApiModelProperty(position = 13, value = "可以购买数量")
private int canBuy;
@ApiModelProperty(position = 26, value = "限量[0-无限制|X:限购数量]")
private Integer buyLimit;
private static final GoblinGoodsSkuInfoDetailVo obj = new GoblinGoodsSkuInfoDetailVo();
......
......@@ -17,6 +17,7 @@ import com.liquidnet.service.goblin.util.ObjectUtil;
import com.liquidnet.service.goblin.util.QueueUtils;
import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
......@@ -279,6 +280,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
* 获得商品详情
*/
public GoblinFrontGoodDetailVo getGoodsDetail(String spuId){
Integer buyCount=0;
GoblinFrontGoodDetailVo goblinFrontGoodDetailVo=GoblinFrontGoodDetailVo.getNew();
GoblinGoodsInfoVo goblinGoodsInfoVo=goblinRedisUtils.getGoodsInfoVo(spuId);
GoblinGoodsInfoDetailVo goblinGoodsInfoDetailVo=GoblinGoodsInfoDetailVo.getNew();
......@@ -286,17 +288,27 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
goblinFrontGoodDetailVo.setGoblinGoodsInfoVo(goblinGoodsInfoDetailVo);
//skuIdList
if(null!=goblinGoodsInfoVo){
int limit= getStockCount(goblinGoodsInfoVo.getStoreId());
// int limit= getStockCount(goblinGoodsInfoVo.getStoreId());
List<String> skuIdList=goblinGoodsInfoVo.getSkuIdList();
ArrayList<GoblinGoodsSkuInfoDetailVo> list=ObjectUtil.goblinGoodsSkuInfoDetailVos();
for(String sku:skuIdList){
String userId=CurrentUtil.getCurrentUid();
if(StringUtils.isNotBlank(userId)){
buyCount=goblinRedisUtils.getSkuCountByUid(userId, sku);
}
GoblinGoodsSkuInfoVo goblinGoodsSkuInfoVo=goblinRedisUtils.getGoodsSkuInfoVo(sku);
if(null!=goblinGoodsSkuInfoVo){
//获取 sku 库存数量
int stock=goblinRedisUtils.getSkuStock(null,goblinGoodsSkuInfoVo.getSkuId());
GoblinGoodsSkuInfoDetailVo goblinGoodsSkuInfoDetailVo=GoblinGoodsSkuInfoDetailVo.getNew();
BeanUtils.copyProperties(goblinGoodsSkuInfoVo,goblinGoodsSkuInfoDetailVo);
if(limit>=stock){
if(null!=goblinGoodsSkuInfoDetailVo.getBuyLimit()){
if(null==buyCount){
buyCount=0;
}
goblinGoodsSkuInfoDetailVo.setCanBuy(goblinGoodsSkuInfoDetailVo.getBuyLimit()-buyCount);
}
if(stock<=0){
goblinGoodsSkuInfoDetailVo.setStockLess(true);
}else{
goblinGoodsSkuInfoDetailVo.setStockLess(false);
......
......@@ -116,7 +116,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
String skuId = skuParam.getSkuId();
int number = skuParam.getNumber();
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(skuId);
if (!(skuVo.getStatus().equals("3") && skuVo.getShelvesStatus().equals("3"))) {
if (!(skuVo.getStatus().equals("3") && skuVo.getShelvesStatus().equals("3")) || skuVo.getDelFlg().equals("1")) {
throw new Exception("不可购买");
}
// 判断库存
......@@ -144,7 +144,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
skuAndPreListAndNumber.add(skuId + "," + pre + "," + number);
//库存回滚
if (surplusGeneral < 0) {
throw new Exception("已售罄");
throw new Exception("库存不足");
}
}//GoblinOrderSkuParam
//下单
......@@ -195,7 +195,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
return ResponseDto.failure(e.getMessage());
} else if (e.getMessage().equals("参数异常")) {
return ResponseDto.failure(e.getMessage());
} else if (e.getMessage().equals("已售罄")) {
} else if (e.getMessage().equals("库存不足")) {
return ResponseDto.failure(e.getMessage());
} else if (e.getMessage().equals("已超出限购数量")) {
return ResponseDto.failure(e.getMessage());
......
......@@ -319,6 +319,8 @@ public class GoblinZhengzaiServiceImpl implements IGoblinZhengzaiService {
int restStock = redisUtils.getSkuStock(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue(), marketSkuId);
int restStockDe = redisUtils.decrSkuStock(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue(), marketSkuId, restStock);
redisUtils.incrSkuStock(null, skuId, restStock + restStockDe);
mongoUtils.delGoodsSkuInfoVo(marketSkuId);
redisUtils.delGoodsSkuInfoVo(marketSkuId);
}
//mongo
mongoUtils.delGoodsInfoVo(marketSpuId);
......
......@@ -279,12 +279,12 @@ public class GoblinMongoUtils {
GoblinStoreInfoVo.class, GoblinStoreInfoVo.class.getSimpleName());
}
public ArrayList<String> getStoreInfoVoRegexName(String storeName) {
public ArrayList<String> getStoreInfoVoRegexName(String storeName) {
Query query = Query.query(Criteria.where("storeName").regex("^.*" + storeName + ".*$").and("delFlg").is("0").and("status").in("3", "5"));
query.fields().include("storeId");
List<GoblinStoreInfoVo> voList = mongoTemplate.find(query, GoblinStoreInfoVo.class, GoblinStoreInfoVo.class.getSimpleName());
ArrayList<String> list = CollectionUtil.arrayListString();
for(GoblinStoreInfoVo goblinStoreInfoVo:voList){
for (GoblinStoreInfoVo goblinStoreInfoVo : voList) {
list.add(goblinStoreInfoVo.getStoreId());
}
return list;
......@@ -303,14 +303,19 @@ public class GoblinMongoUtils {
}
public boolean delGoodsInfoVo(String spuId) {
// return mongoTemplate.remove(Query.query(Criteria.where("spuId").is(spuId).and("delFlg").is("0")),
// GoblinGoodsInfoVo.class, GoblinGoodsInfoVo.class.getSimpleName()).getDeletedCount() > 0;
return mongoTemplate.getCollection(GoblinGoodsInfoVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("spuId").is(spuId).and("delFlg").is("0")).getQueryObject(),
Update.update("delFlg", "1").getUpdateObject()
).getModifiedCount() > 0;
}
public boolean delGoodsSkuInfoVo(String spuId) {
return mongoTemplate.getCollection(GoblinGoodsSkuInfoVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("skuId").is(spuId).and("delFlg").is("0")).getQueryObject(),
Update.update("delFlg", "1").getUpdateObject()
).getModifiedCount() > 0;
}
public boolean delGoodsInfoVoBySpuIds(String storeId, List<String> spuIdList, String uid, LocalDateTime time) {
return mongoTemplate.updateMulti(
Query.query(Criteria.where("storeId").is(storeId).and("spuId").in(spuIdList.toArray()).and("delFlg").is("0")),
......@@ -897,11 +902,13 @@ public class GoblinMongoUtils {
query.skip(skipCount).limit(size).with(Sort.by(Sort.Order.desc("createdAt")));
return mongoTemplate.find(query, GoblinStoreOrderVo.class, GoblinStoreOrderVo.class.getSimpleName());
}
public List<GoblinFrontBanner> getListBanner() {
Query query = Query.query(Criteria.where("delTag").is(0).and("bannerType").is(1));
return mongoTemplate.find(query,
GoblinFrontBanner.class, GoblinFrontBanner.class.getSimpleName());
}
public List<GoblinFrontBanner> getMiddleBanner() {
Query query = Query.query(Criteria.where("delTag").is(0).and("bannerType").is(2));
return mongoTemplate.find(query,
......
......@@ -69,6 +69,7 @@ public class DMCheckGoblinOrderTimeImpl extends ServiceImpl<GoblinStoreOrderMapp
goblinRedisUtils.removeGoblinOrder(i + "", orderId);
continue;
}
log.debug("ORDERDATA = " + orderVo);
LocalDateTime expireTime = LocalDateTime.parse(orderVo.getCreatedAt(), DTF_YMD_HMS).plusMinutes(orderVo.getPayCountdownMinute() + 1);
if (now.isAfter(expireTime) && orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_0.getValue()) {//过期
LinkedList<String> sqls = CollectionUtil.linkedListString();
......@@ -76,14 +77,20 @@ public class DMCheckGoblinOrderTimeImpl extends ServiceImpl<GoblinStoreOrderMapp
LinkedList<Object[]> sqlDataSku = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("goblin_order.close.order"));
sqls.add(SqlMapping.get("goblin_order.close.sku"));
for (String skuId : orderVo.getOrderSkuVoIds()) {
GoblinOrderSkuVo skuVo = goblinRedisUtils.getGoblinOrderSkuVo(skuId);
for (String orderSkuId : orderVo.getOrderSkuVoIds()) {
GoblinOrderSkuVo skuVo = goblinRedisUtils.getGoblinOrderSkuVo(orderSkuId);
//订单详情
skuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_5.getValue());
updateGoblinOrderSkuVo(skuVo.getOrderSkuId(), skuVo);
goblinRedisUtils.setGoblinOrderSku(skuVo.getOrderSkuId(), skuVo);
//库存&限购&&待支付订单
goblinRedisUtils.incrSkuStock("pre", skuVo.getSkuId(), skuVo.getNum());
String pre = GoblinStatusConst.MarketPreStatus.getPre(skuVo.getSkuId());
if (pre == null) {
goblinRedisUtils.incrSkuStock(pre, skuVo.getSkuId(), skuVo.getNum());
} else {
goblinRedisUtils.incrSkuStock(pre, skuVo.getSkuId().split(pre)[0], skuVo.getNum());
}
goblinRedisUtils.decrSkuCountByUid(orderVo.getUserId(), skuVo.getSkuId(), skuVo.getNum());
//mysql
sqlDataSku.add(new Object[]{
......@@ -102,7 +109,7 @@ public class DMCheckGoblinOrderTimeImpl extends ServiceImpl<GoblinStoreOrderMapp
//执行sql
queueUtils.sendMsgByGoblinRedis(MQConst.KylinQueue.SQL_ORDER_CLOSE.getKey(),
SqlMapping.gets(sqls, sqlDataOrder, sqlDataSku));
}else if(orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_5.getValue()||orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue()){
} else if (orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_5.getValue() || orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) {
goblinRedisUtils.removeGoblinOrder(i + "", orderVo.getOrderId());
}
}
......
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