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

Commit 8130ebdd authored by 张国柄's avatar 张国柄

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

parents df672a33 2d6b4c23
package com.liquidnet.service.goblin.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author TT
*/
@ApiModel(value = "NoticeGoblinGoodsSkuInfoVo", description = "票务")
@Data
public class NoticeGoblinGoodsSkuInfoVo implements Serializable, Cloneable {
@ApiModelProperty(value = "商品单品ID")
private String skuId;
@ApiModelProperty(value = "商品ID[64]")
private String spuId;
@ApiModelProperty(value = "单品的编号[45]")
private String skuNo;
@ApiModelProperty(value = "商品类型[0-常规|1-数字藏品]")
private int skuType;
@ApiModelProperty(value = "单品的名称[100]")
private String name;
@ApiModelProperty(value = "单品的副标题[128]")
private String subtitle;
@ApiModelProperty(value = "单品默认图片的URL[256]")
private String skuPic;
@ApiModelProperty(value = "单品详情展示文件URL[256]")
private String skuWatch;
@ApiModelProperty(value = "展示文件类型[1-图片|2-视频|3-模型]")
private String watchType;
@ApiModelProperty(value = "展示预览图片URL[256]")
private String skuWatchPic;
@ApiModelProperty(value = "素材原始文件类型[1-图片|2-视频|3-模型]")
private String materialType;
@ApiModelProperty(value = "素材原始文件URL")
private String materialUrl;
@ApiModelProperty(value = "单品销售价-原价[20,2]")
private BigDecimal sellPrice;
@ApiModelProperty(value = "单品现价[20,2]")
private BigDecimal price;
@ApiModelProperty(value = "IOS商品价格[20,2]")
private BigDecimal priceV;
@ApiModelProperty(value = "IOS商品价格ID")
private String productId;
@ApiModelProperty(value = "单品会员价格[20,2]")
private BigDecimal priceMember;
@ApiModelProperty(value = "NFT路由")
private String routeType;
@ApiModelProperty(value = "NFT上传声明状态[0-待上传|1-已声明|2-声明失败|9-声明中]")
private Integer upchain;
@ApiModelProperty(value = "NFT预览图访问URL")
private String displayUrl;
@ApiModelProperty(value = "NFT素材访问URL")
private String nftUrl;
@ApiModelProperty(value = "NFT系列ID")
private String seriesId;
@ApiModelProperty(value = "NFT系列HASH")
private String seriesHash;
@ApiModelProperty(value = "NFT藏品HASH")
private String nftHash;
@ApiModelProperty(value = "NFT系列声明时间")
private String declareAt;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(value = "开售时间")
private LocalDateTime saleStartTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(value = "停售时间")
private LocalDateTime saleStopTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(value = "预约开始时间")
private LocalDateTime aboutStartTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
@ApiModelProperty(value = "预约停止时间")
private LocalDateTime aboutStopTime;
@ApiModelProperty(value = "上架处理方式[1-等待手动上架|2-直接上架售卖|3-预约定时上架]")
private String shelvesHandle;
@ApiModelProperty(value = "预约上架时间[上架处理方式为3-预约定时上架时需要指定]")
private String shelvesTime;
@ApiModelProperty(position = 62, value = "标签[0-提前购买|1-分段购买|2-预约|3-普通数字藏品]")
private Integer tagType;
@ApiModelProperty(position = 70, value = "分批购活动id")
private String listId;
@ApiModelProperty(position = 12, value = "创作者")
private String author;
@ApiModelProperty(position = 13, value = "发行方")
private String publisher;
private static final NoticeGoblinGoodsSkuInfoVo obj = new NoticeGoblinGoodsSkuInfoVo();
public static NoticeGoblinGoodsSkuInfoVo getNew() {
try {
return (NoticeGoblinGoodsSkuInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new NoticeGoblinGoodsSkuInfoVo();
}
}
public NoticeGoblinGoodsSkuInfoVo copy(GoblinGoodsSkuInfoVo goblinGoodsSkuInfoVo) {
if (null == goblinGoodsSkuInfoVo) return getNew();
this.declareAt = goblinGoodsSkuInfoVo.getDeclareAt();
this.displayUrl = goblinGoodsSkuInfoVo.getDisplayUrl();
this.price = goblinGoodsSkuInfoVo.getPrice();
this.materialType = goblinGoodsSkuInfoVo.getMaterialType();
this.materialUrl = goblinGoodsSkuInfoVo.getMaterialUrl();
this.name = goblinGoodsSkuInfoVo.getName();
this.nftHash = goblinGoodsSkuInfoVo.getNftHash();
this.nftUrl = goblinGoodsSkuInfoVo.getNftUrl();
this.priceV = goblinGoodsSkuInfoVo.getPriceV();
this.priceMember = goblinGoodsSkuInfoVo.getPriceMember();
this.productId = goblinGoodsSkuInfoVo.getProductId();
this.routeType = goblinGoodsSkuInfoVo.getRouteType();
this.saleStartTime = goblinGoodsSkuInfoVo.getSaleStartTime();
this.saleStopTime = goblinGoodsSkuInfoVo.getSaleStopTime();
this.sellPrice = goblinGoodsSkuInfoVo.getSellPrice();
this.seriesHash = goblinGoodsSkuInfoVo.getSeriesHash();
this.seriesId = goblinGoodsSkuInfoVo.getSeriesId();
this.skuId = goblinGoodsSkuInfoVo.getSkuId();
this.skuNo = goblinGoodsSkuInfoVo.getSkuNo();
this.skuPic = goblinGoodsSkuInfoVo.getSkuPic();
this.skuType = goblinGoodsSkuInfoVo.getSkuType();
this.spuId = goblinGoodsSkuInfoVo.getSpuId();
this.skuWatch = goblinGoodsSkuInfoVo.getSkuWatch();
this.skuWatchPic = goblinGoodsSkuInfoVo.getSkuWatchPic();
this.subtitle = goblinGoodsSkuInfoVo.getSubtitle();
this.upchain = goblinGoodsSkuInfoVo.getUpchain();
this.watchType = goblinGoodsSkuInfoVo.getWatchType();
this.shelvesHandle = goblinGoodsSkuInfoVo.getShelvesHandle();
this.shelvesTime = goblinGoodsSkuInfoVo.getShelvesTime();
return this;
}
public NoticeGoblinGoodsSkuInfoVo valueCopy(GoblinGoodsAnticipateValueVo valueVo) {
if (null == valueVo) return getNew();
this.aboutStartTime = valueVo.getAboutStartDate();
this.aboutStopTime = valueVo.getAboutEndDate();
return this;
}
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author TT
*/
@ApiModel(value = "NoticeGoblinMixDetailsItemVo", description = "票务")
@Data
public class NoticeGoblinMixDetailsItemVo implements Serializable, Cloneable {
@ApiModelProperty(value = "spuId")
private String spuId;
@ApiModelProperty(value = "skuId")
private String skuId;
@ApiModelProperty(value = "skuId")
private String skuPic;
@ApiModelProperty(value = "sku名称")
private String skuName;
@ApiModelProperty(value = "spu名称")
private String spuName;
@ApiModelProperty(value = "商品类型[1-商城|2-数字藏品]")
private String position;
@ApiModelProperty(value = "sku原价")
private BigDecimal skuPrice;
@ApiModelProperty(value = "组合价格")
private BigDecimal price;
@ApiModelProperty(value = "苹果价格")
private BigDecimal priceV;
@ApiModelProperty(value = "苹果价格id")
private String productId;
@ApiModelProperty(value = "组合件数[数字藏品不能大于1]")
private Integer count;
private static final NoticeGoblinMixDetailsItemVo obj = new NoticeGoblinMixDetailsItemVo();
public static NoticeGoblinMixDetailsItemVo getNew() {
try {
return (NoticeGoblinMixDetailsItemVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new NoticeGoblinMixDetailsItemVo();
}
}
public NoticeGoblinMixDetailsItemVo copy(GoblinMixDetailsItemVo goblinMixDetailsItemVo){
if (null==goblinMixDetailsItemVo) return getNew();
this.count = goblinMixDetailsItemVo.getCount();
this.position = goblinMixDetailsItemVo.getPosition();
this.priceV = goblinMixDetailsItemVo.getPriceV();
this.price = goblinMixDetailsItemVo.getPrice();
this.productId = goblinMixDetailsItemVo.getProductId();
this.skuId = goblinMixDetailsItemVo.getSkuId();
this.skuName = goblinMixDetailsItemVo.getSkuName();
this.skuPic = goblinMixDetailsItemVo.getSkuPic();
this.skuPrice = goblinMixDetailsItemVo.getSkuPrice();
this.spuId = goblinMixDetailsItemVo.getSpuId();
this.spuName = goblinMixDetailsItemVo.getSpuName();
return this;
}
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author TT
*/
@ApiModel(value = "NoticeGoblinMixDetailsVo", description = "票务")
@Data
public class NoticeGoblinMixDetailsVo implements Serializable, Cloneable {
@ApiModelProperty(value = "活动id")
private String mixId;
@ApiModelProperty(value = "用户id")
private String userId;
@ApiModelProperty(value = "活动名称")
private String name;
@ApiModelProperty(value = "开始时间")
private String timeStart;
@ApiModelProperty(value = "结束时间")
private String timeEnd;
@ApiModelProperty(value = "展示位置[1-商城|2-数字藏品]")
private Integer showPosition;
@ApiModelProperty(value = "组合名称")
private String sellName;
@ApiModelProperty(value = "封面图片地址")
private String coverPic;
@ApiModelProperty(value = "展示文件类型[1-图片|2-视频]")
private Integer watchType;
@ApiModelProperty(value = "销售价格")
private BigDecimal sellPrice;
@ApiModelProperty(value = "原价")
private BigDecimal price;
@ApiModelProperty(value = "配置详情")
private List<NoticeGoblinMixDetailsItemVo> item;
private static final NoticeGoblinMixDetailsVo obj = new NoticeGoblinMixDetailsVo();
public static NoticeGoblinMixDetailsVo getNew() {
try {
return (NoticeGoblinMixDetailsVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new NoticeGoblinMixDetailsVo();
}
}
public NoticeGoblinMixDetailsVo copy(GoblinMixDetailsVo goblinMixDetailsVo) {
if (null == goblinMixDetailsVo) return getNew();
this.coverPic = goblinMixDetailsVo.getCoverPic();
this.item = goblinMixDetailsVo.getItem().stream().map(goblinMixDetailsItemVo -> {
return NoticeGoblinMixDetailsItemVo.getNew().copy(goblinMixDetailsItemVo);
}).collect(Collectors.toList());
this.price = goblinMixDetailsVo.getPrice();
this.mixId = goblinMixDetailsVo.getMixId();
this.timeEnd = goblinMixDetailsVo.getTimeEnd();
this.name = goblinMixDetailsVo.getName();
this.sellName = goblinMixDetailsVo.getSellName();
this.sellPrice = goblinMixDetailsVo.getSellPrice();
this.showPosition = goblinMixDetailsVo.getShowPosition();
this.timeStart = goblinMixDetailsVo.getTimeStart();
this.userId = goblinMixDetailsVo.getUserId();
this.watchType = goblinMixDetailsVo.getWatchType();
return this;
}
}
......@@ -7,6 +7,7 @@ public class KylinRedisConst {
public static final String PERFORMANCES_LIST_CITY = "kylin:performances:city:";
public static final String PERFORMANCES_LIST_SYSTEM_RECOMMEND = "kylin:performances:systemRecommend";
public static final String PERFORMANCES_LIST_NOTICE = "kylin:performances:notice";
public static final String PERFORMANCES_LIST_NOTICE_IDS = "kylin:performances:notice:ids";
public static final String PERFORMANCES_LIST_RECOMMEND = "kylin:performances:recommend";
public static final String PERFORMANCES_LIST_EXCLUSIVE = "kylin:performances:exclusive";
public static final String PERFORMANCES_ROADLIST = "kylin:performances:roadShowId:";
......
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author TT
*/
@ApiModel(value = "NoticeKylinPerformanceVo", description = "票务")
@Data
public class NoticeKylinPerformanceVo implements Serializable, Cloneable {
private Integer mid;
@ApiModelProperty(value = "主键")
private String performancesId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "演出图片")
private String imgPoster;
@ApiModelProperty(value = "演出开始时间")
private String timeStart;
@ApiModelProperty(value = "演出结束时间")
private String timeEnd;
@ApiModelProperty(value = "停售时间")
private String stopSellTime;
@ApiModelProperty(value = "价格")
private String price;
@ApiModelProperty(value = "开售时间")
private String sellTime;
@ApiModelProperty(value = "城市id")
private Integer cityId;
@ApiModelProperty(value = "城市名称")
private String cityName;
@ApiModelProperty(value = "场地id")
private String fieldId;
@ApiModelProperty(value = "场地名称")
private String fieldName;
@ApiModelProperty(value = "搭售id")
private String projectId;
@ApiModelProperty(value = "巡演id")
private String roadShowId;
private static final NoticeKylinPerformanceVo obj = new NoticeKylinPerformanceVo();
public static NoticeKylinPerformanceVo getNew() {
try {
return (NoticeKylinPerformanceVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new NoticeKylinPerformanceVo();
}
}
public NoticeKylinPerformanceVo copy(KylinPerformanceVo kylinPerformanceVo){
if (null == kylinPerformanceVo) return getNew();
this.mid = kylinPerformanceVo.getMid();
this.cityId = kylinPerformanceVo.getCityId();
this.cityName = kylinPerformanceVo.getCityName();
this.performancesId = kylinPerformanceVo.getPerformancesId();
this.fieldId = kylinPerformanceVo.getFieldId();
this.fieldName = kylinPerformanceVo.getFieldName();
this.imgPoster = kylinPerformanceVo.getImgPoster();
this.price = kylinPerformanceVo.getPrice();
this.projectId = kylinPerformanceVo.getProjectId();
this.roadShowId = kylinPerformanceVo.getRoadShowId();
this.sellTime = kylinPerformanceVo.getSellTime();
this.stopSellTime = kylinPerformanceVo.getStopSellTime();
this.timeEnd = kylinPerformanceVo.getTimeEnd();
this.timeStart = kylinPerformanceVo.getTimeStart();
this.title = kylinPerformanceVo.getTitle();
return this;
}
}
......@@ -24,4 +24,5 @@ public interface IKylinPerformancesService {
ResponseDto<String> subscribe(String performancesId, Integer sourceType);
ResponseDto<Integer> isSubscribe(String performancesId);
}
......@@ -52,4 +52,8 @@ public interface FeignKylinForChimeClient {
ResponseDto<KylinPerformanceVo> getDetail(
@RequestParam("performancesId") String performancesId
);
@GetMapping("inner/setNoticeIds")
ResponseDto<HashMap<String,Object>> setNoticeIds();
}
package com.liquidnet.service.executor.main.handler;
import com.liquidnet.service.feign.kylin.api.FeignKylinForChimeClient;
import com.liquidnet.service.feign.kylin.task.FeignPlatformTaskClient;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
......@@ -19,6 +20,9 @@ public class KylinTaskHandler {
@Autowired
private FeignPlatformTaskClient feignPlatformTaskClient;
@Autowired
private FeignKylinForChimeClient feignKylinForChimeClient;
@XxlJob(value = "sev-platform:checkOrderTimeHandler")
public void checkOrderTimeHandler() {
try {
......@@ -68,4 +72,14 @@ public class KylinTaskHandler {
XxlJobHelper.handleFail();
}
}
@XxlJob(value = "sev-platform:setNoticeIds")
public void setNoticeIds() {
try {
XxlJobHelper.handleSuccess("结果:" + feignKylinForChimeClient.setNoticeIds().getData());
} catch (Exception e) {
XxlJobHelper.log(e);
XxlJobHelper.handleFail();
}
}
}
......@@ -9,7 +9,7 @@ eureka:
spring:
cloud:
config:
# uri: http://182.92.70.253:7002/support-config
# uri: http://127.0.0.1:7002/support-config
# uri: http://39.107.71.112:7002/support-config
profile: ${liquidnet.cloudConfig.profile}
name: ${spring.application.name} #默认为spring.application.name
......
......@@ -38,6 +38,12 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-goblin-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
......
......@@ -7,6 +7,8 @@ import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.service.IKylinConsmerService;
import com.liquidnet.service.kylin.service.IKylinPerformancesService;
import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.HashMap;
@Api(tags = "内部接口")
@RestController
......@@ -33,6 +36,9 @@ public class InnerController {
@Autowired
IKylinConsmerService kylinConsmerService;
@Autowired
private KylinPerformancesServiceImpl kylinPerformancesService;
@GetMapping("cache/member/{uid}")
@ApiOperation("获取会员相关数据")
public void cacheMember(@NotBlank @PathVariable(value = "uid") String uid) {
......@@ -68,4 +74,11 @@ public class InnerController {
public ResponseDto<Boolean> orderTransferOverTime(String orderId) {
return kylinConsmerService.orderTransferOverTime(orderId);
}
@GetMapping("/setNoticeIds")
@ApiOperation("演出预告列表定时任务")
public ResponseDto<HashMap<String,Object>> setNoticeIds(){
HashMap<String, Object> map = kylinPerformancesService.setNoticeIds();
return ResponseDto.success(map);
}
}
......@@ -9,6 +9,7 @@ import com.liquidnet.service.kylin.dto.vo.returns.PayDetailVo;
import com.liquidnet.service.kylin.service.IKylinLackRegistersService;
import com.liquidnet.service.kylin.service.IKylinPerformancesService;
import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
......
......@@ -7,6 +7,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.SmileUserVO;
import com.liquidnet.service.kylin.constant.KylinPerformanceStatusEnum;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
......@@ -152,6 +153,14 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
HashMap<String, Object> performancesListNotice = dataUtils.getPerformancesListNotice();
List<KylinPerformanceVo> toDayList = (List<KylinPerformanceVo>) performancesListNotice.get("toDayList");
List<KylinPerformanceVo> threeDaysList = (List<KylinPerformanceVo>) performancesListNotice.get("threeDaysList");
List<GoblinGoodsSkuInfoVo> toDaysNftList = (List<GoblinGoodsSkuInfoVo>) performancesListNotice.get("toDaysNftList");
List<GoblinGoodsSkuInfoVo> threeDayNftList = (List<GoblinGoodsSkuInfoVo>) performancesListNotice.get("threeDayNftList");
List<GoblinGoodsSkuInfoVo> toDayCombinationList = (List<GoblinGoodsSkuInfoVo>) performancesListNotice.get("toDayCombinationList");
List<GoblinGoodsSkuInfoVo> threeDayCombinationList = (List<GoblinGoodsSkuInfoVo>) performancesListNotice.get("threeDayCombinationList");
/*List<NoticeGoblinGoodsSkuInfoVo> toDaysNftList = (List<NoticeGoblinGoodsSkuInfoVo>) performancesListNotice.get("toDaysNftList");
List<NoticeGoblinGoodsSkuInfoVo> threeNftList = (List<NoticeGoblinGoodsSkuInfoVo>) performancesListNotice.get("threeNftList");
List<NoticeGoblinMixDetailsVo> toDayCombinationList = (List<NoticeGoblinMixDetailsVo>) performancesListNotice.get("toDayCombinationList");
List<NoticeGoblinMixDetailsVo> threeDayCombinationList = (List<NoticeGoblinMixDetailsVo>) performancesListNotice.get("threeDayCombinationList");*/
toDayList = checkAppStatus(toDayList);
threeDaysList = checkAppStatus(threeDaysList);
......@@ -163,9 +172,17 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
HashMap<String, Object> newList = CollectionUtil.mapStringObject();
newList.put("toDayList", toDayList);
newList.put("threeDaysList", threeDaysList);
newList.put("toDaysNftList",toDaysNftList);
newList.put("threeDayNftList",threeDayNftList);
newList.put("toDayCombinationList",toDayCombinationList);
newList.put("threeDayCombinationList",threeDayCombinationList);
return newList;
}
public HashMap<String,Object> setNoticeIds() {
return dataUtils.setNoticeIds();
}
private List<KylinPerformanceVo> mergeRoadList(List<KylinPerformanceVo> performanceList) {
List<String> roadIdList = new ArrayList<>();
List<KylinPerformanceVo> newList = ObjectUtil.getKylinPerformanceVoArrayList();
......
......@@ -3,6 +3,9 @@ package com.liquidnet.service.kylin.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dao.KylinTicketActive;
......@@ -17,6 +20,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.dto.vo.returns.NoticeKylinPerformanceVo;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -43,6 +47,9 @@ public class DataUtils {
@Autowired
private RedisUtil redisUtil;
@Autowired
GoblinRedisUtils goblinRedisUtils;
/**
* 转赠订单
......@@ -354,56 +361,385 @@ public class DataUtils {
* 获取演出预告列表redis
*/
public HashMap<String, Object> getPerformancesListNotice() {
String redisKey = KylinRedisConst.PERFORMANCES_LIST_NOTICE;
Object obj = redisUtil.get(redisKey);
if (obj == null) {
// 固定条件
Query query = getCommonWhere();
// 排序
Sort sortName = Sort.by(Sort.Direction.ASC, "sellTime");
query.with(sortName);
String redisKeyIds = KylinRedisConst.PERFORMANCES_LIST_NOTICE_IDS;
Object obj = redisUtil.get(redisKeyIds);
if (obj != null) {
//获取ids
HashMap<String, Object> map = (HashMap<String, Object>) obj;
List<String> toDayIds = (List<String>) map.get("toDayIds");
List<String> threeDayIds = (List<String>) map.get("threeDayIds");
List<String> toDayNftIds = (List<String>) map.get("toDayNftIds");
List<String> threeNftIds = (List<String>) map.get("threeNftIds");
List<String> toDayCombinationIds = (List<String>) map.get("toDayCombinationIds");
List<String> threeDayCombinationIds = (List<String>) map.get("threeDayCombinationIds");
// 今天的
HashMap toDayTime = DateUtil.oneDayStartEnd();
String nowTimeTStr = (String) toDayTime.get("startStr");
String toDayEndTimeStr = (String) toDayTime.get("endStr");
query.addCriteria(Criteria.where("sellTime").gte(nowTimeTStr).lt(toDayEndTimeStr));
query.fields().exclude("details");
query.fields().exclude("noticeImage");
query.fields().exclude("ticketTimeList");
query.fields().exclude("describeElectronic");
List<KylinPerformanceVo> toDayList = mongoTemplate.find(query, KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
List<String> roadShowId = toDayList.stream().filter(r -> !r.getRoadShowId().equals("0")).map(KylinPerformanceVo -> KylinPerformanceVo.getRoadShowId()).collect(Collectors.toList());
// 固定条件
List<KylinPerformanceVo> toDayList = getKylinPerformanceVos(toDayIds);
toDayList.forEach(kylinPerformanceVo -> {
kylinPerformanceVo.setNoticeImage(null);
kylinPerformanceVo.setTicketTimeList(null);
kylinPerformanceVo.setDetails(null);
});
/*List<NoticeKylinPerformanceVo> toDayVoList = toDayList.stream().map(kylinPerformanceVo -> {
return NoticeKylinPerformanceVo.getNew().copy(kylinPerformanceVo);
}).collect(Collectors.toList());*/
// 固定条件
Query queryT = getCommonWhere();
// 排序
Sort sortNameT = Sort.by(Sort.Direction.ASC, "sellTime");
queryT.with(sortNameT);
// 三天的
Calendar cal = Calendar.getInstance();
cal.setTime((Date) toDayTime.get("end"));
Date beforeDayEnd = DateUtil.getBeforeDayEnd(cal, 2);
String threeDaysLaterStr = DateUtil.SDF_YMD_HMS.format(beforeDayEnd);
queryT.addCriteria(Criteria.where("sellTime").gte(toDayEndTimeStr).lt(threeDaysLaterStr));
queryT.fields().exclude("details");
queryT.fields().exclude("noticeImage");
queryT.fields().exclude("ticketTimeList");
queryT.fields().exclude("describeElectronic");
queryT.addCriteria(Criteria.where("roadShowId").nin(roadShowId));
List<KylinPerformanceVo> threeDaysList = mongoTemplate.find(queryT, KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
List<KylinPerformanceVo> threeDaysList = getKylinPerformanceVos(threeDayIds);
threeDaysList.forEach(kylinPerformanceVo -> {
kylinPerformanceVo.setNoticeImage(null);
kylinPerformanceVo.setTicketTimeList(null);
kylinPerformanceVo.setDetails(null);
});
/*List<NoticeKylinPerformanceVo> threeDayVoList = threeDaysList.stream().map(kylinPerformanceVo -> {
return NoticeKylinPerformanceVo.getNew().copy(kylinPerformanceVo);
}).collect(Collectors.toList());*/
//数字藏品
List<NoticeGoblinGoodsSkuInfoVo> toDayNftVoList = null;
List<NoticeGoblinGoodsSkuInfoVo> threeDayNftVoList = null;
try {
//当天
List<GoblinGoodsSkuInfoVo> toDaysNftList = getGoblinGoodsSkuInfoVos(toDayNftIds);
toDayNftVoList = aboutDayNftVoList(toDaysNftList);
//三天的
List<GoblinGoodsSkuInfoVo> threeNftList = getGoblinGoodsSkuInfoVos(threeNftIds);
threeDayNftVoList = aboutDayNftVoList(threeNftList);
} catch (Exception e) {
log.error("return NftVoList error!");
}
//组合购
List<NoticeGoblinMixDetailsVo> toDayCombinationVoList = null;
List<NoticeGoblinMixDetailsVo> threeDayCombinationVoList = null;
try {
//当天
List<GoblinMixDetailsVo> toDayCombinationList = getGoblinMixDetailsVos(toDayCombinationIds);
toDayCombinationVoList = toDayCombinationList.stream().map(goblinMixDetailsVo -> NoticeGoblinMixDetailsVo.getNew().copy(goblinMixDetailsVo)).collect(Collectors.toList());
//三天
List<GoblinMixDetailsVo> threeDayCombinationList = getGoblinMixDetailsVos(threeDayCombinationIds);
threeDayCombinationVoList = threeDayCombinationList.stream().map(goblinMixDetailsVo -> NoticeGoblinMixDetailsVo.getNew().copy(goblinMixDetailsVo)).collect(Collectors.toList());
} catch (Exception e) {
log.error("return CombinationVoList error!");
}
HashMap<String, Object> info = CollectionUtil.mapStringObject();
info.put("toDayList", toDayList);
info.put("threeDaysList", threeDaysList);
redisUtil.set(redisKey, info);
//过滤数据
info.put("toDaysNftList", toDayNftVoList);
info.put("threeDayNftList", threeDayNftVoList);
info.put("toDayCombinationList", toDayCombinationVoList);
info.put("threeDayCombinationList", threeDayCombinationVoList);
//原始数据
// info.put("toDaysNftList", toDaysNftList);
// info.put("threeNftList", threeNftList);
// info.put("toDayCombinationList", toDayCombinationList);
// info.put("threeDayCombinationList", threeDayCombinationList);
return info;
}
return (HashMap<String, Object>) obj;
}
private List<NoticeGoblinGoodsSkuInfoVo> aboutDayNftVoList(List<GoblinGoodsSkuInfoVo> toDaysNftList) {
LocalDateTime now = LocalDateTime.now();
String anticipateKey = GoblinRedisConst.ANTICIPATE_VALUE_SKUID;
List<NoticeGoblinGoodsSkuInfoVo> toDayNftVoList = toDaysNftList.stream().map(goblinGoodsSkuInfoVo -> {
NoticeGoblinGoodsSkuInfoVo noticeGoblinGoodsSkuInfoVo = NoticeGoblinGoodsSkuInfoVo.getNew().copy(goblinGoodsSkuInfoVo);
//获取预约开始结束时间
/*Object valueVo = redisUtil.get(anticipateKey.concat(goblinGoodsSkuInfoVo.getSkuId()));
if (valueVo != null) {
noticeGoblinGoodsSkuInfoVo = noticeGoblinGoodsSkuInfoVo.valueCopy((GoblinGoodsAnticipateValueVo) valueVo);
noticeGoblinGoodsSkuInfoVo.setTagType(2);
} else {
//非预约sku 查询优先购分批购
HashMap<String, Object> map = goblinRedisUtils.getGoodsSkuInfoVo(now, goblinGoodsSkuInfoVo.getSkuId());
if (map != null) {
Integer tagType = (Integer) map.get("tagType");
String listId = (String) map.get("listId");
noticeGoblinGoodsSkuInfoVo.setTagType(tagType);
noticeGoblinGoodsSkuInfoVo.setListId(listId);
}
}*/
//非预约sku 查询优先购分批购
HashMap<String, Object> map = goblinRedisUtils.getGoodsSkuInfoVo(now, goblinGoodsSkuInfoVo.getSkuId());
if (map != null) {
Integer tagType = (Integer) map.get("tagType");
String listId = (String) map.get("listId");
noticeGoblinGoodsSkuInfoVo.setTagType(tagType);
noticeGoblinGoodsSkuInfoVo.setListId(listId);
}
//根据spuId获取创作者 发行方
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(goblinGoodsSkuInfoVo.getSpuId());
noticeGoblinGoodsSkuInfoVo.setPublisher(goodsInfoVo.getPublisher());
noticeGoblinGoodsSkuInfoVo.setAuthor(goodsInfoVo.getAuthor());
//普通数字藏品
if (noticeGoblinGoodsSkuInfoVo.getTagType() == null) {
noticeGoblinGoodsSkuInfoVo.setTagType(3);
}
return noticeGoblinGoodsSkuInfoVo;
}).collect(Collectors.toList());
return toDayNftVoList;
}
private List<GoblinMixDetailsVo> getGoblinMixDetailsVos(List<String> toDayCombinationIds) {
List<GoblinMixDetailsVo> toDayCombinationList = new ArrayList<>();
//redis key
String rdk = GoblinRedisConst.GOBLIN_MIX_DETAILS;
String rk = GoblinRedisConst.BASIC_GOODS_SKU;
if (toDayCombinationIds != null && toDayCombinationIds.size() > 0) {
//查询redis
toDayCombinationIds.forEach(id -> {
Object obj = redisUtil.get(rdk.concat(id));
if (obj != null) {
GoblinMixDetailsVo goblinMixDetailsVo = (GoblinMixDetailsVo) obj;
goblinMixDetailsVo.getItem().forEach(goblinMixDetailsItemVo -> {
Object objRk = redisUtil.get(rk.concat(goblinMixDetailsItemVo.getSkuId()));
if (objRk != null) {
goblinMixDetailsItemVo.setSkuName(((GoblinGoodsSkuInfoVo) objRk).getName());
}
});
toDayCombinationList.add(goblinMixDetailsVo);
}
});
/*Query queryToDayCombination = new Query();
Sort sortToDayCombination = Sort.by(Sort.Direction.ASC, "saleStartTime");
queryToDayCombination.with(sortToDayCombination);
queryToDayCombination.fields().exclude("details");
queryToDayCombination.addCriteria(Criteria.where("mixId").in(toDayCombinationIds));
toDayCombinationList = mongoTemplate.find(queryToDayCombination, GoblinMixDetailsVo.class, GoblinMixDetailsVo.class.getSimpleName());
toDayCombinationList.forEach(goblinMixDetailsVo -> {
List<GoblinMixDetailsItemVo> item = goblinMixDetailsVo.getItem();
item.forEach(goblinMixDetailsItemVo -> {
Query query = new Query();
query.addCriteria(Criteria.where("skuId").is(goblinMixDetailsItemVo.getSkuId()));
//skuName查询redis
Object objRk = redisUtil.get(rk.concat(goblinMixDetailsItemVo.getSkuId()));
if (objRk != null) {
goblinMixDetailsItemVo.setSkuName(((GoblinGoodsSkuInfoVo) objRk).getName());
}
//skuName查询mongodb
*//*GoblinGoodsSkuInfoVo one = mongoTemplate.findOne(query, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
if (one != null) {
goblinMixDetailsItemVo.setSkuName(one.getName());
}*//*
});
});*/
}
return toDayCombinationList;
}
private List<GoblinGoodsSkuInfoVo> getGoblinGoodsSkuInfoVos(List<String> toDayNftIds) {
List<GoblinGoodsSkuInfoVo> toDaysNftList = new ArrayList<>();
//redis key
String rk = GoblinRedisConst.BASIC_GOODS_SKU;
if (toDayNftIds != null && toDayNftIds.size() > 0) {
//查询redis
toDayNftIds.forEach(id -> {
Object obj = redisUtil.get(rk.concat(id));
if (obj != null) {
toDaysNftList.add((GoblinGoodsSkuInfoVo) obj);
}
});
//查询mongodb
/*Query queryToDayNft = new Query();
queryToDayNft.fields().exclude("extagVoList");
queryToDayNft.addCriteria(Criteria.where("skuId").in(toDayNftIds));
toDaysNftList = mongoTemplate.find(queryToDayNft, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());*/
}
return toDaysNftList;
}
private List<KylinPerformanceVo> getKylinPerformanceVos(List<String> toDayIds) {
List<KylinPerformanceVo> toDayList = new ArrayList<>();
//redis key
String key = KylinRedisConst.PERFORMANCES;
if (toDayIds != null && toDayIds.size() > 0) {
//查询redis
toDayIds.forEach(id -> {
Object obj = redisUtil.get(key + id);
if (obj != null) {
toDayList.add((KylinPerformanceVo) obj);
} else {
Query query = new Query();
query.fields().exclude("details");
query.fields().exclude("noticeImage");
query.fields().exclude("ticketTimeList");
query.fields().exclude("describeElectronic");
query.addCriteria(Criteria.where("performancesId").is(id));
KylinPerformanceVo one = mongoTemplate.findOne(query, KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
if (one != null) {
//增加redis缓存
redisUtil.set(key + id, one);
toDayList.add(one);
}
}
});
}
return toDayList;
}
//执行脚本
public HashMap<String, Object> setNoticeIds() {
// 固定条件
Query query = getCommonWhere();
// 排序
Sort sortName = Sort.by(Sort.Direction.ASC, "sellTime");
query.with(sortName);
// 今天的
HashMap toDayTime = DateUtil.oneDayStartEnd();
String nowTimeTStr = (String) toDayTime.get("startStr");
String toDayEndTimeStr = (String) toDayTime.get("endStr");
query.addCriteria(Criteria.where("sellTime").gte(nowTimeTStr).lt(toDayEndTimeStr));
query.fields().exclude("details");
query.fields().exclude("noticeImage");
query.fields().exclude("ticketTimeList");
query.fields().exclude("describeElectronic");
List<KylinPerformanceVo> toDayList = mongoTemplate.find(query, KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
List<String> roadShowId = toDayList.stream().filter(r -> !r.getRoadShowId().equals("0")).map(KylinPerformanceVo -> KylinPerformanceVo.getRoadShowId()).collect(Collectors.toList());
List<String> toDayIds = toDayList.stream().map(KylinPerformanceVo::getPerformancesId).collect(Collectors.toList());
// 固定条件
Query queryT = getCommonWhere();
// 排序
Sort sortNameT = Sort.by(Sort.Direction.ASC, "sellTime");
queryT.with(sortNameT);
// 三天的
Calendar cal = Calendar.getInstance();
cal.setTime((Date) toDayTime.get("end"));
Date beforeDayEnd = DateUtil.getBeforeDayEnd(cal, 2);
String threeDaysLaterStr = DateUtil.SDF_YMD_HMS.format(beforeDayEnd);
queryT.addCriteria(Criteria.where("sellTime").gte(toDayEndTimeStr).lt(threeDaysLaterStr));
queryT.fields().exclude("details");
queryT.fields().exclude("noticeImage");
queryT.fields().exclude("ticketTimeList");
queryT.fields().exclude("describeElectronic");
queryT.addCriteria(Criteria.where("roadShowId").nin(roadShowId));
List<KylinPerformanceVo> threeDaysList = mongoTemplate.find(queryT, KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
List<String> threeDayIds = threeDaysList.stream().map(KylinPerformanceVo::getPerformancesId).collect(Collectors.toList());
//数字藏品
LocalDateTime nowTimeTime = null;
List<String> toDayNftIds = null;
List<String> threeNftIds = null;
try {
nowTimeTime = DateUtil.asLocalDateTime((Date) toDayTime.get("start"));
LocalDateTime toDayEndTime = DateUtil.asLocalDateTime((Date) toDayTime.get("end"));
LocalDateTime threeEndTime = DateUtil.asLocalDateTime(beforeDayEnd);
//查询预约(当天)
// List<GoblinGoodsSkuInfoVo> toDayAboutNft = getAboutNftByStartAndEndTime(nowTimeTime, toDayEndTime,0);
// List<String> toDayAboutNftSkuIds = toDayAboutNft.stream().map(GoblinGoodsSkuInfoVo::getSkuId).collect(Collectors.toList());
/*List<String> toDayAboutNft = getAboutNftByStartAndEndTime(nowTimeTime, toDayEndTime, 0);*/
//查询预约(三天)
// List<GoblinGoodsSkuInfoVo> threeDayAboutNft = getAboutNftByStartAndEndTime(toDayEndTime, threeEndTime,1);
// List<String> threeDayAboutNftSkuIds = threeDayAboutNft.stream().map(GoblinGoodsSkuInfoVo::getSkuId).collect(Collectors.toList());
// toDayAboutNftSkuIds.addAll(threeDayAboutNftSkuIds);
/*List<String> threeDayAboutNft = getAboutNftByStartAndEndTime(toDayEndTime, threeEndTime, 1);*/
/*ArrayList<String> allListSkuIds = new ArrayList<>();
allListSkuIds.addAll(toDayAboutNft);
allListSkuIds.addAll(threeDayAboutNft);*/
//当天
Query queryToDayNft = new Query();
queryToDayNft.addCriteria(Criteria.where("skuType").is(1));
queryToDayNft.addCriteria(Criteria.where("delFlg").is("0"));
queryToDayNft.addCriteria(Criteria.where("saleStartTime").gte(nowTimeTime).lt(toDayEndTime));
// queryToDayNft.addCriteria(Criteria.where("skuId").nin(toDayAboutNftSkuIds));
/* queryToDayNft.addCriteria(Criteria.where("skuId").nin(allListSkuIds));*/
queryToDayNft.addCriteria(Criteria.where("shelvesHandle").ne("3"));
Sort sortNameToDayNft = Sort.by(Sort.Direction.ASC, "saleStartTime");
queryToDayNft.with(sortNameToDayNft);
List<GoblinGoodsSkuInfoVo> toDaysNftList = mongoTemplate.find(queryToDayNft, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
// toDaysNftList.addAll(toDayAboutNft);
toDayNftIds = toDaysNftList.stream().map(GoblinGoodsSkuInfoVo::getSkuId).collect(Collectors.toList());
/*toDayNftIds.addAll(toDayAboutNft);*/
//三天的
Query queryThreeNft = new Query();
queryThreeNft.addCriteria(Criteria.where("skuType").is(1));
queryThreeNft.addCriteria(Criteria.where("delFlg").is("0"));
queryThreeNft.addCriteria(Criteria.where("saleStartTime").gte(toDayEndTime).lt(threeEndTime));
/*queryThreeNft.addCriteria(Criteria.where("skuId").nin(allListSkuIds));*/
queryThreeNft.addCriteria(Criteria.where("shelvesHandle").ne("3"));
Sort sortThreeNft = Sort.by(Sort.Direction.ASC, "saleStartTime");
queryThreeNft.with(sortThreeNft);
List<GoblinGoodsSkuInfoVo> threeNftList = mongoTemplate.find(queryThreeNft, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
// threeNftList.addAll(threeDayAboutNft);
threeNftIds = threeNftList.stream().map(GoblinGoodsSkuInfoVo::getSkuId).collect(Collectors.toList());
/*threeNftIds.addAll(threeDayAboutNft);*/
} catch (Exception e) {
log.error("get NftIds error!");
}
//组合购
List<String> toDayCombinationIds = null;
List<String> threeDayCombinationIds = null;
try {
//当天
Query queryToDayCombination = new Query();
Sort sortToDayCombination = Sort.by(Sort.Direction.ASC, "saleStartTime");
queryToDayCombination.addCriteria(Criteria.where("timeStart").gte(nowTimeTStr).lt(toDayEndTimeStr));
queryToDayCombination.addCriteria(Criteria.where("status").ne(7));
queryToDayCombination.with(sortToDayCombination);
List<GoblinMixDetailsVo> toDayCombinationList = mongoTemplate.find(queryToDayCombination, GoblinMixDetailsVo.class, GoblinMixDetailsVo.class.getSimpleName());
toDayCombinationIds = toDayCombinationList.stream().map(GoblinMixDetailsVo::getMixId).collect(Collectors.toList());
//三天
Query queryThreeDayCombination = new Query();
Sort sortThreeDayCombination = Sort.by(Sort.Direction.ASC, "saleStartTime");
queryThreeDayCombination.addCriteria(Criteria.where("timeStart").gte(toDayEndTimeStr).lt(threeDaysLaterStr));
queryThreeDayCombination.addCriteria(Criteria.where("status").ne(7));
queryThreeDayCombination.with(sortThreeDayCombination);
List<GoblinMixDetailsVo> threeDayCombinationList = mongoTemplate.find(queryThreeDayCombination, GoblinMixDetailsVo.class, GoblinMixDetailsVo.class.getSimpleName());
threeDayCombinationIds = threeDayCombinationList.stream().map(GoblinMixDetailsVo::getMixId).collect(Collectors.toList());
} catch (Exception e) {
log.error("get CombinationIds error!");
}
//缓存ids
HashMap<String, Object> idsList = CollectionUtil.mapStringObject();
idsList.put("toDayIds", toDayIds);
idsList.put("threeDayIds", threeDayIds);
idsList.put("toDayNftIds", toDayNftIds);
idsList.put("threeNftIds", threeNftIds);
idsList.put("toDayCombinationIds", toDayCombinationIds);
idsList.put("threeDayCombinationIds", threeDayCombinationIds);
idsList.put("now", nowTimeTime);
String redisKeyIds = KylinRedisConst.PERFORMANCES_LIST_NOTICE_IDS;
redisUtil.set(redisKeyIds, idsList);
return idsList;
}
// private List<GoblinGoodsSkuInfoVo> getAboutNftByStartAndEndTime(LocalDateTime nowTime, LocalDateTime EndTime,Integer tag) {
private List<String> getAboutNftByStartAndEndTime(LocalDateTime nowTime, LocalDateTime EndTime, Integer tag) {
Query aboutQuery = new Query();
if (tag.equals(0)) {
//当天 查询当天可预约的nft 预约结束时间>当前时间>预约开始
aboutQuery.addCriteria(Criteria.where("aboutStartDate").lt(nowTime));
aboutQuery.addCriteria(Criteria.where("aboutEndDate").gte(EndTime));
} else {
//三天 预约开始时间 范围在三天以内
aboutQuery.addCriteria(Criteria.where("aboutStartDate").gte(nowTime).lt(EndTime));
}
aboutQuery.addCriteria(Criteria.where("delTag").is(0));
List<GoblinGoodsAnticipateValueVo> aboutQueryList = mongoTemplate.find(aboutQuery, GoblinGoodsAnticipateValueVo.class, GoblinGoodsAnticipateValueVo.class.getSimpleName());
List<String> aboutIds = aboutQueryList.stream().map(GoblinGoodsAnticipateValueVo::getSkuId).collect(Collectors.toList());
if (aboutIds.size() > 0) {
/* Query queryAbout = new Query();
queryAbout.addCriteria(Criteria.where("skuId").in(aboutIds));
return mongoTemplate.find(queryAbout, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());*/
return aboutIds;
}
return new ArrayList<>();
}
/**
* 获取推荐演出列表redis
*/
......@@ -906,41 +1242,43 @@ public class DataUtils {
}
//万青补偿id 获取
public Integer getWqOrderId(String orderId){
public Integer getWqOrderId(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId);
Object obj = redisUtil.get(rdk);
if(obj==null){
if (obj == null) {
return 0;
}else{
} else {
return 1;
}
}
//万青补偿id 添加
public void setWqOrderId(String orderId){
public void setWqOrderId(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId);
redisUtil.set(rdk,orderId);
redisUtil.set(rdk, orderId);
}
//万青补偿id 删除
public void delWqOrderId(String orderId){
public void delWqOrderId(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId);
redisUtil.del(rdk,orderId);
redisUtil.del(rdk, orderId);
}
// 万青补偿vo覆盖
public void setWqOrderVo(WqTempVo vo){
public void setWqOrderVo(WqTempVo vo) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_EXPRESS.concat(vo.getOrderId());
redisUtil.set(rdk,vo);
redisUtil.set(rdk, vo);
}
// 万青补偿vo获取
public WqTempVo getWqOrderVo(String orderId){
public WqTempVo getWqOrderVo(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_EXPRESS.concat(orderId);
Object obj = redisUtil.get(rdk);
if(obj==null){
if (obj == null) {
WqTempVo vo = WqTempVo.getNew();
vo.setIsTemp(getWqOrderId(orderId));
return vo;
}else{
} else {
WqTempVo vo = (WqTempVo) obj;
vo.setIsTemp(getWqOrderId(orderId));
return vo;
......@@ -949,19 +1287,22 @@ public class DataUtils {
// 获取用户状态
public String getUserStatus(String userId) {
return (String) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_USER+ userId);
return (String) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_USER + userId);
}
//获得 ar券
public KylinTicketActive getArTicket(String code){
return (KylinTicketActive) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_TICKET+code);
public KylinTicketActive getArTicket(String code) {
return (KylinTicketActive) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_TICKET + code);
}
//设置 tikcet
public void setArTicket(KylinTicketActive kylinTicketActive){
redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_TICKET+kylinTicketActive.getCode(),kylinTicketActive);
public void setArTicket(KylinTicketActive kylinTicketActive) {
redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_TICKET + kylinTicketActive.getCode(), kylinTicketActive);
}
//设置用户状态。
public void setUser(String userId,String value){
redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_USER+userId,value);
public void setUser(String userId, String value) {
redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_USER + userId, value);
}
......
package com.liquidnet.service.kylin.utils;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
@Component
public class GoblinMongodbUtils {
@Autowired
MongoTemplate mongoTemplate;
// SKU信息
public GoblinGoodsSkuInfoVo getGoodsSkuInfoVo(String skuId) {
// return mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId).and("delFlg").is("0").and("shelvesStatus").is("3")),
// return mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId).and("delFlg").is("0")),
return mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId)),
GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
}
// SPU信息
public GoblinGoodsInfoVo getGoodsInfoVo(String spuId) {
// return mongoTemplate.findOne(Query.query(Criteria.where("spuId").is(spuId).and("delFlg").is("0").and("shelvesStatus").is("3")),
// return mongoTemplate.findOne(Query.query(Criteria.where("spuId").is(spuId).and("delFlg").is("0")),
return mongoTemplate.findOne(Query.query(Criteria.where("spuId").is(spuId)),
GoblinGoodsInfoVo.class, GoblinGoodsInfoVo.class.getSimpleName());
}
}
package com.liquidnet.service.kylin.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinListCollectVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class GoblinRedisUtils {
@Autowired
RedisUtil redisUtil;
@Autowired
GoblinMongodbUtils goblinMongoUtils;
/**
* 获取 包含分段购的sku详情 HASHMAP
*
* @param now 当前时间
* @param skuId skuId
* @return
*/
public HashMap<String, Object> getGoodsSkuInfoVo(LocalDateTime now, String skuId) {
GoblinGoodsSkuInfoVo vo = getGoodsSkuInfoVo(skuId);
if (null == vo) {
return null;
}
HashMap<String, Object> map = CollectionUtil.mapStringObject();
LocalDateTime nextSaleStartTime = null;
if (null == vo.getSaleStartTime() || now.isAfter(vo.getSaleStartTime())) {//普通商品已开售
map.put("vo", vo);
map.put("tagType", null);
map.put("listId", null);
map.put("whiteType", null);
map.put("baseSaleStartTime", vo.getSaleStartTime());
map.put("nextSaleStartTime", null);
} else {//未开售
GoblinListCollectVo collectVo = getCollectByNow(now, skuId);
Integer tagType = null;
Integer whiteType = null;
String listId = null;
LocalDateTime baseSaleStartTime = vo.getSaleStartTime();
if (collectVo != null) {
vo.setPrice(collectVo.getPrice());
vo.setPriceV(collectVo.getPriceV());
vo.setProductId(collectVo.getProductId());
vo.setSaleStartTime(collectVo.getTimeStart());
vo.setSaleStopTime(collectVo.getTimeEnd());
listId = collectVo.getListId();
whiteType = collectVo.getWhiteType();
tagType = collectVo.getTagType();
}
GoblinListCollectVo collectNext = getCollectByNowNext(now, skuId);
if (collectNext != null) {
if (tagType == null) {
tagType = collectNext.getTagType();
}
//todo 逻辑修改 开售时间
if (collectVo == null) {
vo.setSaleStartTime(collectNext.getTimeStart());
vo.setSaleStopTime(collectNext.getTimeEnd());
}
nextSaleStartTime = collectNext.getTimeStart();
}
map.put("vo", vo);
map.put("tagType", tagType);
map.put("listId", listId);
map.put("whiteType", whiteType);
map.put("baseSaleStartTime", baseSaleStartTime);
map.put("nextSaleStartTime", nextSaleStartTime);
}
return map;
}
/**
* 单品信息
*
* @param skuId 单品ID
* @return GoblinGoodsSkuInfoVo
*/
public GoblinGoodsSkuInfoVo getGoodsSkuInfoVo(String skuId) {
String pre = GoblinStatusConst.MarketPreStatus.getPre(skuId);
if (pre != null && pre.equals(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue())) {
String rk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId.split(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue())[0]);
GoblinGoodsSkuInfoVo vo = (GoblinGoodsSkuInfoVo) redisUtil.get(rk);
if (null == vo && null != (vo = goblinMongoUtils.getGoodsSkuInfoVo(skuId))) {
redisUtil.set(rk, vo);
}
if (vo == null) {
return vo;
}
String marketrk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId);
GoblinGoodsSkuInfoVo marketVo = (GoblinGoodsSkuInfoVo) redisUtil.get(marketrk);
if (null == marketVo && null != (marketVo = goblinMongoUtils.getGoodsSkuInfoVo(skuId))) {
redisUtil.set(marketrk, marketVo);
}
if (marketVo == null) {
return marketVo;
}
vo.setSpuId(marketVo.getSpuId());
vo.setSkuId(marketVo.getSkuId());
vo.setPrice(marketVo.getPrice());
vo.setPriceMember(marketVo.getPriceMember());
vo.setSkuStock(marketVo.getSkuStock());
vo.setBuyLimit(marketVo.getBuyLimit());
vo.setBuyRoster(marketVo.getBuyRoster());
vo.setBuyFactor(marketVo.getBuyFactor());
// vo.setDelFlg("0");
vo.setDelFlg(marketVo.getDelFlg().equals("1") ? marketVo.getDelFlg() : vo.getDelFlg());
vo.setMarketId(marketVo.getMarketId());
vo.setCreatedAt(LocalDateTime.now());
return vo;
} else {
String rk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId);
GoblinGoodsSkuInfoVo vo = (GoblinGoodsSkuInfoVo) redisUtil.get(rk);
if (null == vo && null != (vo = goblinMongoUtils.getGoodsSkuInfoVo(skuId))) {
redisUtil.set(rk, vo);
}
return vo;
}
}
/**
* 根据时间获取当前分段购vo 如果当前没有返回下一个
*
* @param now
* @param skuId
* @return
*/
public GoblinListCollectVo getCollectByNowNext(LocalDateTime now, String skuId) {
GoblinListCollectVo collectVo = null;
GoblinListCollectVo collectTemp = null;
GoblinListCollectVo collectNext = null;
List<GoblinListCollectVo> collectVos = getGoblinListCollect(skuId);
for (int i = 0; i < collectVos.size(); i++) {
GoblinListCollectVo collectVoItem = collectVos.get(i);
if (now.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) {
if (collectTemp == null || collectTemp.getTimeStart().isBefore(collectVoItem.getTimeStart())) {
collectTemp = collectVoItem;
}
} else if (now.isAfter(collectVoItem.getTimeStart()) && now.isBefore(collectVoItem.getTimeEnd())) {
collectVo = collectVoItem;
} else if (now.isBefore(collectVoItem.getTimeStart())) {
if (collectNext == null || collectNext.getTimeStart().isAfter(collectNext.getTimeStart())) {
collectNext = collectVoItem;
}
} else if (collectVoItem.getTimeEnd() != null && now.isAfter(collectVoItem.getTimeEnd())) {
collectTemp = null;
}
}
// if (collectVo == null && collectTemp != null) {
// collectVo = collectTemp;
// } else
// if (collectVo == null) {
// collectVo = collectNext;
// }
// return collectVo;
return collectNext;
}
public List<GoblinListCollectVo> getGoblinListCollect(String skuId) {
Object obj = redisUtil.get(GoblinRedisConst.LIST_COLLECT.concat(skuId));
if (obj == null) {
return ObjectUtil.getGoblinListCollectVo();
} else {
List<GoblinListCollectVo> list = (List<GoblinListCollectVo>) obj;
list = list.stream().sorted(Comparator.comparing(GoblinListCollectVo::getTimeStart)).collect(Collectors.toList());
return list;
}
}
/**
* 根据时间获取当前分段购vo
*
* @param now
* @param skuId
* @return
*/
public GoblinListCollectVo getCollectByNow(LocalDateTime now, String skuId) {
GoblinListCollectVo collectVo = null;
GoblinListCollectVo collectTemp = null;
List<GoblinListCollectVo> collectVos = getGoblinListCollect(skuId);
for (int i = 0; i < collectVos.size(); i++) {
GoblinListCollectVo collectVoItem = collectVos.get(i);
if (now.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) {
if (collectTemp == null || collectTemp.getTimeStart().isBefore(collectVoItem.getTimeStart())) {
collectTemp = collectVoItem;
}
} else if (now.isAfter(collectVoItem.getTimeStart()) && now.isBefore(collectVoItem.getTimeEnd())) {
collectVo = collectVoItem;
break;
} else if (collectVoItem.getTimeEnd() != null && now.isAfter(collectVoItem.getTimeEnd())) {
collectTemp = null;
}
}
if (collectVo == null) {
collectVo = collectTemp;
}
return collectVo;
}
/**
* 商品基础信息
*
* @param spuId 商品ID
* @return GoblinGoodsInfoVo
*/
public GoblinGoodsInfoVo getGoodsInfoVo(String spuId) {
String pre = GoblinStatusConst.MarketPreStatus.getPre(spuId);
if (pre != null && pre.equals(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue())) {
String[] spuSplitArr = spuId.split(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue());
String rk = GoblinRedisConst.BASIC_GOODS.concat(spuSplitArr[0]);
GoblinGoodsInfoVo vo = (GoblinGoodsInfoVo) redisUtil.get(rk);
if (null == vo && null != (vo = goblinMongoUtils.getGoodsInfoVo(spuId))) {
redisUtil.set(rk, vo);
}
if (vo == null) {
return vo;
}
String marketrk = GoblinRedisConst.BASIC_GOODS.concat(spuId);
GoblinGoodsInfoVo marketVo = (GoblinGoodsInfoVo) redisUtil.get(marketrk);
if (null == marketVo && null != (marketVo = goblinMongoUtils.getGoodsInfoVo(spuId))) {
redisUtil.set(marketrk, marketVo);
}
if (marketVo == null) {
return marketVo;
}
vo.setSpuId(marketVo.getSpuId());
List<String> skuIdList = CollectionUtil.linkedListString();
for (String skuIds : vo.getSkuIdList()) {
skuIdList.add(skuIds.concat(pre).concat(spuSplitArr[1]));
}
vo.setSkuIdList(skuIdList);
vo.setPriceGe(marketVo.getPriceGe());
vo.setPriceLe(marketVo.getPriceLe());
vo.setMarketId(marketVo.getMarketId());
vo.setDelFlg(marketVo.getDelFlg().equals("1") ? marketVo.getDelFlg() : vo.getDelFlg());
return vo;
} else {
String rk = GoblinRedisConst.BASIC_GOODS.concat(spuId);
GoblinGoodsInfoVo vo = (GoblinGoodsInfoVo) redisUtil.get(rk);
if (null == vo && null != (vo = goblinMongoUtils.getGoodsInfoVo(spuId))) {
redisUtil.set(rk, vo);
}
return vo;
}
}
}
......@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.utils;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.goblin.dto.vo.GoblinListCollectVo;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
......@@ -33,6 +34,9 @@ public class ObjectUtil {
private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>();
private static final ArrayList<KylinApiCameraDevicesVo> kylinApiCameraDevicesVoArrayList = new ArrayList<>();
/*正在热卖*/
private static final ArrayList<GoblinListCollectVo> goblinListCollectVo = new ArrayList<>();
public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() {
return (ArrayList<KylinStationPerformanceVo>) kylinStationPerformanceVoArrayList.clone();
......@@ -97,4 +101,10 @@ public class ObjectUtil {
public static ArrayList<KylinApiCameraDevicesVo> getKylinApiCameraDevicesVoArrayList() {
return (ArrayList<KylinApiCameraDevicesVo>) kylinApiCameraDevicesVoArrayList.clone();
}
/*正在热卖*/
public static ArrayList<GoblinListCollectVo> getGoblinListCollectVo() {
return (ArrayList<GoblinListCollectVo>) goblinListCollectVo.clone();
}
}
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