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

Commit 01ee3ac8 authored by GaoHu's avatar GaoHu

exit

parent 510d763a
......@@ -250,12 +250,27 @@ public class GoblinRedisConst {
/**
* skuId助力所需人数
*/
public static final String ANTICIPATE_SHARE_SKUID_PEOPLE = PREFIX.concat("anticipate:share:skuId:people");
public static final String ANTICIPATE_SHARE_SKUID_PEOPLE = PREFIX.concat("anticipate:share:skuId:people:");
/**
* 助力头像保存
*/
public static final String ANTICIPATE_SHARE_HELP_AVATAR = PREFIX.concat("anticipate:share:help:avatar");
public static final String ANTICIPATE_SHARE_HELP_AVATAR = PREFIX.concat("anticipate:share:help:avatar:");
/**
* 创建分享vo
*/
public static final String ANTICIPATE_SHARE_VO = PREFIX.concat("anticipate:share:help:vo:");
/**
* 用户助力 助力人id:分享id
*/
public static final String ANTICIPATE_SHARE_HELPID_SID = PREFIX.concat("anticipate:share:helpId:sid:");
/**
* 助力sid
*/
public static final String ANTICIPATE_SHARE_SID = PREFIX.concat("anticipate:share:sid:");
......
package com.liquidnet.service.goblin.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author TT
*/
@Data
public class GoblinGoodsAnticipateHelp implements Serializable {
private static final long serialVersionUID = 1L;
/**
* skuId
*/
private String skuId;
/**
* 配置预约人数
*/
private Integer people;
/**
* 预约开始时间
*/
@ApiModelProperty(value = "预约开始时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime aboutStartDate;
/**
* 预约结束时间
*/
@ApiModelProperty(value = "预约结束时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime aboutEndDate;
/**
* 创建时间
*/
private LocalDateTime createDate;
private static final GoblinGoodsAnticipateHelp obj = new GoblinGoodsAnticipateHelp();
public static GoblinGoodsAnticipateHelp getNew() {
try {
return (GoblinGoodsAnticipateHelp) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsAnticipateHelp();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
......@@ -34,6 +37,20 @@ public class GoblinGoodsAnticipateShareVo implements Serializable{
*/
private String url;
/**
* 预约开始时间
*/
@ApiModelProperty(value = "预约开始时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime aboutStartDate;
/**
* 预约结束时间
*/
@ApiModelProperty(value = "预约结束时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime aboutEndDate;
/**
* 创建时
*/
......
......@@ -8,10 +8,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinGoodsAnticipateValueVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodAnticipateUserVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateHelpVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateShareVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateVo;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.service.IGoblinGoodsAnticipateService;
import com.liquidnet.service.goblin.util.GoblinAnticipateUtils;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
......@@ -23,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;
......@@ -66,6 +64,14 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
GoblinGoodAnticipateUserVo userVo = goblinRedisUtils.getUserAboutAut(skuId, uid);
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
if (userVo == null) {
//接入助力人数判断
GoblinGoodsAnticipateHelp sharePeopleBySkuId = goblinRedisUtils.getSharePeopleBySkuId(skuId);
Integer people = goblinRedisUtils.getHelpSidAddHelp(skuId);
if (sharePeopleBySkuId.getPeople() <= people) {
int num = sharePeopleBySkuId.getPeople() - people;
return ResponseDto.failure("预约失败!预约助力人数还差" + num + "人!");
}
GoblinGoodAnticipateUserVo user = new GoblinGoodAnticipateUserVo();
user.setUid(uid);
user.setSkuId(skuId);
......@@ -107,15 +113,26 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
@Override
public ResponseDto<Object> share(String skuId, String url) {
//查询是否可以预约
GoblinGoodsAnticipateValueVo valueBySkuId = goblinRedisUtils.getValueBySkuId(skuId);
if (valueBySkuId == null) {
return ResponseDto.failure("商品不存在!");
}
Integer integer = GoblinAnticipateUtils.setState(valueBySkuId.getAboutStartDate(), valueBySkuId.getAboutEndDate());
if (integer != null && !integer.equals(1)) {
return ResponseDto.failure("预约未开始或已结束!");
}
//获取用户uid
String uid = CurrentUtil.getCurrentUid();
//获取redis关联记录
//可以创建分享
//查询redis关联记录
Integer share = goblinRedisUtils.getShare(skuId, uid);
if (share != null) {
return ResponseDto.failure("已开启助力");
} else {
//查询sku需要助力人数
// Integer skuIdPeople = goblinRedisUtils.getSharePeopleBySkuId(skuId);
//Integer skuIdPeople = goblinRedisUtils.getSharePeopleBySkuId(skuId);
//redis缓存
goblinRedisUtils.setShare(skuId, uid, 0);
......@@ -127,9 +144,15 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
goblinGoodsAnticipateShareVo.setSkuId(skuId);
goblinGoodsAnticipateShareVo.setUrl(url);
goblinGoodsAnticipateShareVo.setCreatedDate(LocalDateTime.now());
goblinGoodsAnticipateShareVo.setAboutStartDate(valueBySkuId.getAboutStartDate());
goblinGoodsAnticipateShareVo.setAboutEndDate(valueBySkuId.getAboutEndDate());
//开启助力
//mongodb缓存
goblinMongoUtils.setGoblinGoodsAnticipateShareVo(goblinGoodsAnticipateShareVo);
//goblinMongoUtils.setGoblinGoodsAnticipateShareVo(goblinGoodsAnticipateShareVo);
//redis存储用户分享
goblinRedisUtils.setShareVo(goblinGoodsAnticipateShareVo);
//redis消息 MySQL
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
......@@ -147,19 +170,40 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
@Override
public ResponseDto<Object> help(String sid) {
//查询是否可以预约
GoblinGoodsAnticipateShareVo shareVo = goblinRedisUtils.getShareVo(sid);
if (shareVo == null) {
return ResponseDto.failure("分享不存在!");
}
Integer integer = GoblinAnticipateUtils.setState(shareVo.getAboutStartDate(), shareVo.getAboutEndDate());
if (integer != null && !integer.equals(1)) {
return ResponseDto.failure("预约未开始或已结束!");
}
//获取uid
String uid = CurrentUtil.getCurrentUid();
//查询mongodb 是否助力过该分享
GoblinGoodsAnticipateHelpVo goodsAnticipateHelpVo = goblinMongoUtils.getHelpVo(sid, uid);
// GoblinGoodsAnticipateHelpVo goodsAnticipateHelpVo = goblinMongoUtils.getHelpVo(sid, uid);
if (goodsAnticipateHelpVo == null) {
//redis缓存
Integer help = goblinRedisUtils.getHelpByUidAndSid(uid, sid);
if (help == null) {
GoblinGoodsAnticipateHelpVo helpVo = GoblinGoodsAnticipateHelpVo.getNew();
helpVo.setHelpUid(uid);
helpVo.setSid(sid);
helpVo.setCreateDate(LocalDateTime.now());
//mongodb缓存
goblinMongoUtils.setHelpVo(helpVo);
// goblinMongoUtils.setHelpVo(helpVo);
//加入redis缓存
Duration between = Duration.between(shareVo.getAboutStartDate(), shareVo.getAboutEndDate());
goblinRedisUtils.setHelpByUidAndSid(uid, sid, between.toDays());
//此助力sid人数+1
goblinRedisUtils.setHelpSidAddHelp(sid);
//redis消息 MySQL插入
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
......@@ -168,7 +212,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
helpVo.getHelpUid(),
helpVo.getCreateDate()
});
sendRedis("goblin_goods_anticipate_help",sqlValue);
sendRedis("goblin_goods_anticipate_help", sqlValue);
//记录助力人数头像(前六个)
List<String> helpUserAvatar = goblinRedisUtils.getHelpUserAvatar(sid);
......
......@@ -13,6 +13,7 @@ import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateValueAddPara
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateValueParam;
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.GoblinGoodsAnticipateHelp;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateVo;
import com.liquidnet.service.goblin.service.manage.IGoblinGoodsAnticipateMgService;
import com.liquidnet.service.goblin.util.GoblinAnticipateUtils;
......@@ -114,7 +115,13 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
goblinRedisUtils.setValue(goodsAnticipateValueVo);
//redis缓存预约条件
goblinRedisUtils.setSharePeopleBySkuId(item.getSkuId(), people);
GoblinGoodsAnticipateHelp goodsAnticipateHelp = GoblinGoodsAnticipateHelp.getNew();
goodsAnticipateHelp.setSkuId(goodsAnticipateValueVo.getSkuId());
goodsAnticipateHelp.setPeople(people);
goodsAnticipateHelp.setAboutStartDate(goodsAnticipateValueVo.getAboutStartDate());
goodsAnticipateHelp.setAboutEndDate(goodsAnticipateValueVo.getAboutEndDate());
goblinRedisUtils.setSharePeopleBySkuId(item.getSkuId(), goodsAnticipateHelp);
//保存mysql中间表
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
......
......@@ -191,23 +191,33 @@ public class GoblinMongoUtils {
mongoTemplate.updateFirst(query, update, GoblinGoodsAnticipateValueVo.class.getSimpleName());
}
/**
* 存入用户创建分享 不需要mongodb存储
*/
public void setGoblinGoodsAnticipateShareVo(GoblinGoodsAnticipateShareVo goblinGoodsAnticipateShareVo){
mongoTemplate.insert(goblinGoodsAnticipateShareVo,GoblinGoodsAnticipateShareVo.class.getSimpleName());
}
/**
* 根据创建id查询分享信息
*/
public GoblinGoodsAnticipateShareVo getShareVoBySid(String sid){
return mongoTemplate.findOne(Query.query(Criteria.where("sid").is(sid)),
GoblinGoodsAnticipateShareVo.class, GoblinGoodsAnticipateShareVo.class.getSimpleName());
}
/**
* 分享id和助力人id 查询助力信息
* 分享id和助力人id 查询助力信息 不存mongodb
*/
public GoblinGoodsAnticipateHelpVo getHelpVo(String sid,String uid){
return mongoTemplate.findOne(Query.query(Criteria.where("sid").is(sid).and("helpUid").is(uid)),
GoblinGoodsAnticipateHelpVo.class, GoblinGoodsAnticipateHelpVo.class.getSimpleName());
}
/**
* 助力vo 之后删去不需要储存
* @param goodsAnticipateHelpVo
*/
public void setHelpVo(GoblinGoodsAnticipateHelpVo goodsAnticipateHelpVo){
mongoTemplate.insert(goodsAnticipateHelpVo,GoblinGoodsAnticipateHelpVo.class.getSimpleName());
}
......
......@@ -162,24 +162,23 @@ public class GoblinRedisUtils {
*/
public void setShare(String skuId, String uid,Integer people) {
String key = GoblinRedisConst.ANTICIPATE_SHARE_UID_SKUID.concat(uid).concat(":").concat(skuId);
//获取缓存中是否有创建助力
redisUtil.set(key,people);
}
/**
* 缓存sku预约助力人数
*/
public void setSharePeopleBySkuId(String skuId,Integer people){
public void setSharePeopleBySkuId(String skuId,GoblinGoodsAnticipateHelp goodsAnticipateHelp){
String key = GoblinRedisConst.ANTICIPATE_SHARE_SKUID_PEOPLE.concat(skuId);
redisUtil.set(key,people);
redisUtil.set(key,goodsAnticipateHelp);
}
/**
* 缓存sku预约助力人数
*/
public Integer getSharePeopleBySkuId(String skuId){
public GoblinGoodsAnticipateHelp getSharePeopleBySkuId(String skuId){
String key = GoblinRedisConst.ANTICIPATE_SHARE_SKUID_PEOPLE.concat(skuId);
return (Integer) redisUtil.get(key);
return (GoblinGoodsAnticipateHelp) redisUtil.get(key);
}
/**
......@@ -221,6 +220,51 @@ public class GoblinRedisUtils {
}
}
/**
* 存储分享VO
*/
public void setShareVo(GoblinGoodsAnticipateShareVo goblinGoodsAnticipateShareVo){
redisUtil.set(GoblinRedisConst.ANTICIPATE_SHARE_VO.concat(goblinGoodsAnticipateShareVo.getSid()),goblinGoodsAnticipateShareVo);
}
/**
* 获取分享VO
*/
public GoblinGoodsAnticipateShareVo getShareVo(String sid){
return (GoblinGoodsAnticipateShareVo) redisUtil.get(GoblinRedisConst.ANTICIPATE_SHARE_VO.concat(sid));
}
/**
* 缓存助力
*/
public void setHelpByUidAndSid(String uid,String sid,Long day){
redisUtil.set(GoblinRedisConst.ANTICIPATE_SHARE_HELPID_SID.concat(uid).concat(":").concat(sid),0,(day+1)*60*60*24);
}
/**
* 获取助力
*/
public Integer getHelpByUidAndSid(String uid,String sid){
return (Integer) redisUtil.get(GoblinRedisConst.ANTICIPATE_SHARE_HELPID_SID.concat(uid).concat(":").concat(sid));
}
/**
* 助力id人数+1
*/
public void setHelpSidAddHelp(String sid) {
Integer helpByUidAndSid = getHelpSidAddHelp(sid);
int num = helpByUidAndSid != null ? helpByUidAndSid += 1 : 1;
redisUtil.set(GoblinRedisConst.ANTICIPATE_SHARE_SID.concat(sid), num);
}
/**
* 获取 助力id人数
*/
public Integer getHelpSidAddHelp(String sid){
return (Integer) redisUtil.get(GoblinRedisConst.ANTICIPATE_SHARE_SID.concat(sid));
}
/* ---------------------------------------- sku库存相关 ---------------------------------------- */
public void setSkuStock(String marketPre, String skuId, Integer stock) {
String rk = GoblinRedisConst.REAL_STOCK_SKU;
......
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