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

Commit 5f9d0f8b authored by zhengfuxin's avatar zhengfuxin

修改bug

parent a9591733
......@@ -76,7 +76,7 @@ public class GoblinCommonServiceImpl implements IGoblinCommonService {
if (spuAppear != null) {
queryWrapper.eq(GoblinGoods::getSpuAppear, spuAppear);
} else {
queryWrapper.eq(GoblinGoods::getSpuAppear, "1");
/* queryWrapper.eq(GoblinGoods::getSpuAppear, "1");*/
}
queryWrapper.eq(GoblinGoods::getSpuType, type);
if (StringUtil.isNotBlank(name)) {
......
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.goblin.dto.manage.vo.AnticipateValueVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.kylin.dto.vo.KylinRecommendActiveRelationVo;
import com.liquidnet.service.kylin.dto.vo.KylinRecommendActiveVo;
......@@ -9,20 +13,17 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.entity.KylinRecommendActive;
import com.liquidnet.service.kylin.entity.KylinRecommendActiveRelation;
import com.liquidnet.service.kylin.service.IKylinRecommendActiveService;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.KylinRedisUtils;
import com.liquidnet.service.kylin.utils.ObjectUtil;
import com.liquidnet.service.kylin.utils.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.*;
/**
*
......@@ -33,6 +34,8 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
private DataUtils dataUtils;
@Autowired
private KylinRedisUtils kylinRedisUtils;
@Autowired
private GoblinOrderUtils goblinOrderUtils;
@Override
public KylinRecommendActiveVo getRecommendById(List<KylinRecommendActive> list) throws ParseException {
......@@ -76,7 +79,9 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
}*/
//遍历list
List<KylinRecommendActiveRelationVo> kylinRecommendActiveVoList = kylinRecommendActiveVo.getList();
for (KylinRecommendActiveRelationVo kylinRecommendActiveRelationVo : kylinRecommendActiveVoList) {
ListIterator<KylinRecommendActiveRelationVo> iterator=kylinRecommendActiveVoList.listIterator();
while (iterator.hasNext()) {
KylinRecommendActiveRelationVo kylinRecommendActiveRelationVo =iterator.next();
if (kylinRecommendActiveRelationVo.getType() == 1) {
//NFT
GoblinNftGoodsSkuInfoVo goblinNftGoodsSkuInfoVo = goodsDetail(kylinRecommendActiveRelationVo.getRecommendBindId());
......@@ -90,8 +95,8 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo.setCount(true);
}else{
kylinRecommendActiveRelationVo.setCount(false);
iterator.remove();
}
} else if (kylinRecommendActiveRelationVo.getType() == 2) {
//组合购
GoblinMixAppDetailsVo goblinMixAppDetailsVo = mixDetails(kylinRecommendActiveRelationVo.getRecommendBindId());
......@@ -103,9 +108,11 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo.setCount(true);
}else{
kylinRecommendActiveRelationVo.setCount(false);
iterator.remove();
}
}else{
kylinRecommendActiveRelationVo.setCount(false);
iterator.remove();
}
} else if (kylinRecommendActiveRelationVo.getType() == 3) {
//演出
......@@ -116,9 +123,11 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo.setCount(true);
}else{
kylinRecommendActiveRelationVo.setCount(false);
iterator.remove();
}
}else{
kylinRecommendActiveRelationVo.setCount(false);
iterator.remove();
}
} else if (kylinRecommendActiveRelationVo.getType() == 4) {
//商品 //商品
......@@ -131,11 +140,16 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
kylinRecommendActiveRelationVo.setCount(true);
}else{
kylinRecommendActiveRelationVo.setCount(false);
iterator.remove();
}
}else{
kylinRecommendActiveRelationVo.setCount(false);
iterator.remove();
}
}
/* for (KylinRecommendActiveRelationVo kylinRecommendActiveRelationVo : kylinRecommendActiveVoList) {
}*/
}
return kylinRecommendActiveVo;
}
......@@ -183,6 +197,28 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
System.out.println(date.compareTo(date2));*/
}
public AnticipateValueVo getAnticipateValueBySkuId(String skuId, int hasHead) {
GoblinGoodsAnticipateValueVo anticipateValueVo = kylinRedisUtils.getValueBySkuId(skuId);
AnticipateValueVo valueVo = AnticipateValueVo.getNew();
if (anticipateValueVo != null) {
valueVo = valueVo.copy(anticipateValueVo);
valueVo.setState(GoblinAnticipateUtils.setState(valueVo.getAboutStartDate(), valueVo.getAboutEndDate()));
} else {
valueVo.setState(null);
valueVo.setAboutEndDate(null);
valueVo.setAboutStartDate(null);
valueVo.setAboutPeople(BigInteger.ZERO);
valueVo.setType(null);
valueVo.setPeopleType(null);
valueVo.setRule("");
}
if (hasHead == 1) {
valueVo.setAboutAvatarList(kylinRedisUtils.getUserAvatar(skuId));
} else {
valueVo.setAboutAvatarList(CollectionUtil.linkedListString());
}
return valueVo;
}
/**
* NFT 获取详情
*/
......@@ -199,18 +235,40 @@ public class KylinRecommendActiveServiceImpl implements IKylinRecommendActiveSer
LocalDateTime baseSaleStartTime = (LocalDateTime) map.get("baseSaleStartTime");
LocalDateTime nextSaleStartTime = (LocalDateTime) map.get("nextSaleStartTime");
if (kylinRedisUtils.getSkuAllStatusShow(skuInfoVo)) {
//获取预约相关
AnticipateValueVo anticipateValueVo = getAnticipateValueBySkuId(skuId, 1);
GoblinNftGoodsSkuInfoVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuInfoVo.getNew().copy(skuInfoVo, null);
GoblinNftGoodsSkuInfoVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuInfoVo.getNew().copy(skuInfoVo, anticipateValueVo);
// 限购数量
Integer buyCount = 0;
String userId = CurrentUtil.getCurrentUid();
if (StringUtils.isNotBlank(userId)) {
buyCount = kylinRedisUtils.getSkuCountByUid(userId, skuId);
}
if (null != skuInfoVo.getBuyLimit() && 0 != skuInfoVo.getBuyLimit()) {
nftGoodsSkuInfoVo.setCanBuyNum(skuInfoVo.getBuyLimit() - buyCount);
}
// spu信息
GoblinGoodsInfoVo goodsInfoVo = kylinRedisUtils.getGoodsInfoVo(skuInfoVo.getSpuId());
GoblinNftGoodsDetailSpuInfoVo nftGoodsDetailSpuInfoVo = GoblinNftGoodsDetailSpuInfoVo.getNew().copy(goodsInfoVo);
nftGoodsSkuInfoVo.setGoblinNftGoodsDetailSpuInfoVo(nftGoodsDetailSpuInfoVo);
// 库存
HashMap<String, Integer> stockHashMap = goblinOrderUtils.getIsStock(listId, skuId, skuInfoVo.getUnbox(), skuInfoVo.getSoldoutStatus(), goodsInfoVo.getSkuIdList());
nftGoodsSkuInfoVo.setIsStock(stockHashMap.get("isStock"));
// 总库存
if (skuInfoVo.getUnbox().equals("1")) {
nftGoodsSkuInfoVo.setSkuStock(stockHashMap.get("totalStock"));
}
// 系统时间
nftGoodsSkuInfoVo.setSystime(LocalDateTime.now());
nftGoodsSkuInfoVo.setTagType(tagType);
nftGoodsSkuInfoVo.setListId(listId);
nftGoodsSkuInfoVo.setBaseSaleStartTime(baseSaleStartTime);
nftGoodsSkuInfoVo.setNextSaleStartTime(nextSaleStartTime);
// 是否开启兑换
nftGoodsSkuInfoVo.setIsExchange(kylinRedisUtils.getIsExchange(skuId));
// 待支付订单数量
nftGoodsSkuInfoVo.setNotPayNum(kylinRedisUtils.getNotPayNum(skuId, listId));
return nftGoodsSkuInfoVo;
} else {
return null;
......
package com.liquidnet.service.kylin.utils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserProfileVo;
import com.liquidnet.service.base.ResponseDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import java.time.LocalDateTime;
/**
* @author TT
*/
@Component
@Slf4j
public class GoblinAnticipateUtils {
@Value("${liquidnet.service.adam.url}")
private String adamUrl;
public AdamUserInfoVo getUserInfo() {
try {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken());
header.add("Accept", "application/json;charset=UTF-8");
String returnData = HttpUtil.post(adamUrl + "/adam/user/info", null, header);
ResponseDto<AdamUserProfileVo> innerReturnVo = JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<AdamUserProfileVo>>() {
});
if (innerReturnVo.getData() != null) {
return innerReturnVo.getData().getUserInfo();
}
log.info("post url:{}<----->Authorization:{}", adamUrl + " /adam/user/info", CurrentUtil.getToken());
return null;
} catch (Exception e) {
log.info("post url:{}<----->Authorization:{}", adamUrl + " /adam/user/info", CurrentUtil.getToken());
log.error("获取用户头像失败", e);
return null;
}
}
public static Integer setState(LocalDateTime startDate, LocalDateTime endDate) {
LocalDateTime now = LocalDateTime.now();
if (startDate.isAfter(now)) {
//未开始 0
return 0;
}
if (startDate.isBefore(now) && endDate.isAfter(now)) {
//预约中 1
return 1;
}
if (endDate.isBefore(now)) {
//已结束 2
return 2;
}
//其他
return null;
}
}
package com.liquidnet.service.kylin.utils;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
@Component
@Slf4j
public class GoblinOrderUtils {
@Value("${liquidnet.service.candy.url}")
private String candyUrl;
/* @Autowired
GoblinRedisUtils redisUtils;*/
private KylinRedisUtils kylinRedisUtils;
@Autowired
QueueUtils queueUtils;
// NFT判断是否售罄
public HashMap<String, Integer> getIsStock(String listId, String skuId, String unbox, String soldoutStatus, List<String> skuIdList) {
HashMap<String, Integer> returnMap = CollectionUtil.mapStringInteger();
Integer isStock = 0;
Integer totalStock = 0;
if (null == soldoutStatus || soldoutStatus.equals("0")) {// 未设置售罄 查询库存
int surplusStock = 0;
if (unbox.equals("0")) {// 不是盲盒
surplusStock = kylinRedisUtils.getSkuStock(listId, skuId);
} else {
for (String skuIdItem : skuIdList) {// 盲盒计算所有sku库存总数
if (skuIdItem.equals(skuId)) {// 过滤自己
continue;
}
HashMap<String, Object> map = kylinRedisUtils.getGoodsSkuInfoVo(LocalDateTime.now(), skuIdItem);
GoblinGoodsSkuInfoVo itemVo = (GoblinGoodsSkuInfoVo) map.get("vo");
// String listId2 = (String) map.get("listId");
// surplusStock += redisUtils.getSkuAllStatusStock(itemVo, listId2);
surplusStock += kylinRedisUtils.getSkuAllStatusStock(itemVo, listId);
totalStock += kylinRedisUtils.getSkuTotalStock(itemVo);
}
}
if (surplusStock > 0) {
isStock = 1;
}
}
returnMap.put("isStock", isStock);
returnMap.put("totalStock", totalStock);
return returnMap;
}
}
......@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
......@@ -285,6 +286,93 @@ public class KylinRedisUtils {
public GoblinGoodsAnticipateValueVo getValueBySkuId(String skuId) {
return (GoblinGoodsAnticipateValueVo) redisUtil.get(GoblinRedisConst.ANTICIPATE_VALUE_SKUID.concat(skuId));
}
//获取 用户sku购买个数
public Integer getSkuCountByUid(String uid, String skuId) {
String redisKey = GoblinRedisConst.REDIS_GOBLIN_BUY_COUNT.concat(uid + ":skuId:" + skuId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return 0;
} else {
return (Integer) obj;
}
}
public int getIsExchange(String skuId) {
String redisKey = GoblinRedisConst.ACTIVITY_SKU_TIME.concat(skuId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return 1;
} else {
GoblinNftExSkuVo exSkuVo = (GoblinNftExSkuVo) obj;
if ((null == exSkuVo.getExStartTime() || LocalDateTime.now().isAfter(exSkuVo.getExStartTime())) && (null == exSkuVo.getExStopTime() || LocalDateTime.now().isBefore(exSkuVo.getExStopTime()))) {
return 2;
} else {
return 1;
}
}
}
public int getNotPayNum(String skuId, String listId) {
String redisKey = GoblinRedisConst.REDIS_GOBLIN_NFT_NOT_PAY_NUM.concat(skuId);
if (null != listId) {
redisKey = redisKey.concat(":").concat(listId);
}
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return 1;
} else {
return (int) obj;
}
}
// 获取盲盒下藏品的库存 各种状态下不能算库存的排除掉
public int getSkuAllStatusStock(GoblinGoodsSkuInfoVo info, String listId) {
if (
info != null
// && LocalDateTime.now().isAfter(info.getSaleStartTime())
&& (null == info.getSoldoutStatus() || info.getSoldoutStatus().equals("0"))
&& (null == info.getHitRatio() || info.getHitRatio().compareTo(BigDecimal.ZERO) > 0)
&& (null == info.getSkuCanbuy() || info.getSkuCanbuy().equals("1"))
) {// 可以返回库存
// 外面只有盲盒才能请求进来 里面只有不是分批购才判断盲盒里藏品的开售时间
if (null == listId) {
// if (LocalDateTime.now().isAfter(info.getSaleStartTime())) {
return getSkuStock(listId, info.getSkuId());
// } else {
// return 0;
// }
} else {
return getSkuStock(listId, info.getSkuId());
}
} else {// 不计入库存
return 0;
}
}
// 各种状态下判断藏品总库存
public Integer getSkuTotalStock(GoblinGoodsSkuInfoVo info) {
if (
info != null
// && LocalDateTime.now().isAfter(info.getSaleStartTime())
// && (null == info.getSoldoutStatus() || info.getSoldoutStatus().equals("0"))
// && (null == info.getHitRatio() || info.getHitRatio().compareTo(BigDecimal.ZERO) > 0)
) {// 可以返回库存
return info.getSkuStock();
} else {// 不计入库存
return 0;
}
}
/**
* 获取用户预约头像
*/
public List<String> getUserAvatar(String skuId) {
String rdk = GoblinRedisConst.ANTICIPATE_SKUID_AVATAR.concat(skuId);
Object obj = redisUtil.get(rdk);
if (obj == null) {
return CollectionUtil.arrayListString();
} else {
return (List<String>) obj;
}
}
// 获取 组合售数据
public GoblinMixDetailsVo getMixDetails(String mixId) {
......
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