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

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

Merge remote-tracking branch 'origin/gh_nft_per' into dev_yy_dh

parents d06671ce 41c4d14c
......@@ -238,11 +238,40 @@ public class GoblinRedisConst {
*/
public static final String ANTICIPATE_SKUID_AVATAR = PREFIX.concat("anticipate:skuId:avatar:");
public static final String ANTICIPATE_VALUE_SKUID = PREFIX.concat("anticipate:value:skuid:");
public static final String NFT_PAY_TYPE = PREFIX.concat("nft:payType");
/**
* 用户助力
*/
public static final String ANTICIPATE_SHARE_UID_SKUID = PREFIX.concat("anticipate:share:uid:skuId:");
/**
* skuId助力所需人数
*/
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:");
/**
* 创建分享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:");
/* ----------------------------------------------------------------- */
......
......@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
......@@ -21,6 +22,13 @@ import java.util.List;
@Data
public class GoblinGoodsAnticipateAddParam {
/**
* 预约名称
*/
@ApiModelProperty(value = "预约名称")
@NotBlank(message = "预约名称")
private String name;
/**
* 预约规则
*/
......@@ -28,8 +36,16 @@ public class GoblinGoodsAnticipateAddParam {
@NotBlank(message = "预约规则")
private String rule;
@ApiModelProperty(value = "预约类型(1:预约提醒,2:预约获得购买资格)")
@NotBlank(message = "预约类型")
private int type;
@ApiModelProperty(value = "预约人数(达到一定人数可以预约)")
@NotBlank(message="预约人数")
private Integer people;
@ApiModelProperty("sku信息")
@NotBlank
private List<GoblinGoodsAnticipateValueAddParam> list;
......
......@@ -36,6 +36,10 @@ public class AnticipateValueVo implements Cloneable {
private String rule;
@ApiModelProperty("预约人数")
private BigInteger aboutPeople;
@ApiModelProperty("预约类型(1:预约提醒,2:预约获得购买资格)")
private Integer type;
@ApiModelProperty("设置预约人数")
private Integer peopleType;
@ApiModelProperty("前三预约头像")
private List<String> aboutAvatarList;
......
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 type;
/**
* 配置预约人数
*/
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 lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author TT
*/
@Data
public class GoblinGoodsAnticipateHelpVo implements Serializable,Cloneable{
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String sid;
/**
* 分享用户id
*/
// private String uid;
/**
* 助力人uid
*/
private String helpUid;
/**
* 创建时间
*/
private LocalDateTime createDate;
/**
* 头像集合
*/
// private List<String> helpUserAvatar;
private static final GoblinGoodsAnticipateHelpVo obj = new GoblinGoodsAnticipateHelpVo();
public static GoblinGoodsAnticipateHelpVo getNew() {
try {
return (GoblinGoodsAnticipateHelpVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsAnticipateHelpVo();
}
}
}
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 GoblinGoodsAnticipateShareVo implements Serializable,Cloneable{
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String sid;
/**
* 用户uid
*/
private String uid;
/**
* sku_Id
*/
private String skuId;
/**
* url分享地址(备用)
*/
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;
/**
* 创建时
*/
private LocalDateTime createdDate;
private static final GoblinGoodsAnticipateShareVo obj = new GoblinGoodsAnticipateShareVo();
public static GoblinGoodsAnticipateShareVo getNew() {
try {
return (GoblinGoodsAnticipateShareVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsAnticipateShareVo();
}
}
}
......@@ -33,11 +33,28 @@ public class GoblinGoodsAnticipateVo implements Serializable,Cloneable {
*/
private String id;
/**
* 预约名称
*/
private String name;
/**
* ant_id
*/
private String antId;
/**
* 配置人数
*/
@ApiModelProperty(value = "预约人数(达到一定人数可以预约)")
private Integer people;
/**
* 类型标识
*/
@ApiModelProperty(value = "预约类型(1:预约提醒,2:预约获得购买资格)")
private int type;
/**
* 预约规则
*/
......@@ -71,6 +88,9 @@ public class GoblinGoodsAnticipateVo implements Serializable,Cloneable {
public GoblinGoodsAnticipateVo copy(GoblinGoodsAnticipateAddParam goodsAnticipateAddParam) {
if (null==goodsAnticipateAddParam) return this;
this.name = goodsAnticipateAddParam.getName();
this.people = goodsAnticipateAddParam.getPeople();
this.type = goodsAnticipateAddParam.getType();
this.setRule(goodsAnticipateAddParam.getRule());
return this;
}
......
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class HelpAvatarVo implements Serializable,Cloneable{
private static final long serialVersionUID = 1L;
@ApiModelProperty("助力头像(只显示前六个)")
private List<String> helpAvatars;
@ApiModelProperty("助力人数")
private Integer helpPeople;
private static final HelpAvatarVo obj = new HelpAvatarVo();
public static HelpAvatarVo getNew() {
try {
return (HelpAvatarVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new HelpAvatarVo();
}
}
}
package com.liquidnet.service.goblin.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateHelpVo;
import java.util.List;
/**
......@@ -20,4 +23,13 @@ public interface IGoblinGoodsAnticipateService {
ResponseDto<Boolean> selectAnticipate(String skuId);
ResponseDto<Object> share(String skuId,String url);
ResponseDto<Object> help(String sid);
ResponseDto<List<String>> getHelpAvatar(String sid);
ResponseDto<String> getTurnOnHelp(String skuId);
}
......@@ -96,7 +96,7 @@ public class MybatisPlusCodeGenerator {
String resourcePath = "/Users/hujiachen/Downloads/tmp";
String directory = "com.liquidnet.service.goblin";
String[] dbTableArray = new String[]{
"goblin_marketing_zhengzai_relation"
"goblin_marketing_zhengzai_relation"
};
doGenerator(resourcePath, dsc, directory, dbTableArray);
......
......@@ -2,6 +2,7 @@ package com.liquidnet.service.goblin.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateHelpVo;
import com.liquidnet.service.goblin.service.IGoblinGoodsAnticipateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -9,6 +10,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 预约表 前端控制器
......@@ -34,8 +37,33 @@ public class GoblinGoodsAnticipateController {
@ApiOperation("根据skuId和uid查询")
@GetMapping("/selectAnticipateBySkuIdAndUid")
public ResponseDto<Boolean> selectAnticipate(@RequestParam(name = "skuId") String skuId){
public ResponseDto<Boolean> selectAnticipate(@RequestParam(name = "skuId") String skuId) {
return goblinGoodsAnticipateService.selectAnticipate(skuId);
}
@ApiOperation("用户分享,根据sku发起助力")
@PostMapping("/share")
public ResponseDto<Object> share(@RequestParam(name = "skuId", required = true) String skuId,
@RequestParam(name = "url", required = false) String url) {
return goblinGoodsAnticipateService.share(skuId, url);
}
@ApiOperation("用户为他人助力")
@PostMapping("help")
public ResponseDto<Object> help(@RequestParam(name = "sid", required = true) String sid) {
return goblinGoodsAnticipateService.help(sid);
}
@ApiOperation("获取助力头像")
@PostMapping("getHelpAvatar")
public ResponseDto<List<String>> getHelpAvatar(@RequestParam(name = "sid", required = true) String sid) {
return goblinGoodsAnticipateService.getHelpAvatar(sid);
}
@ApiOperation("是否开启助力(返回助力的sid)")
@GetMapping("getTurnOnHelp")
public ResponseDto<String> getTurnOnHelp(@RequestParam(name = "skuId") String skuId){
return goblinGoodsAnticipateService.getTurnOnHelp(skuId);
}
}
......@@ -5,12 +5,14 @@ import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateAddParam;
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.service.manage.IGoblinGoodsAnticipateMgService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigInteger;
......@@ -58,8 +60,8 @@ public class GoblinGoodsAnticipateMgController {
// @ApiOperation("更具sku获取信息")
// @GetMapping("/getAnticipateValueBySkuId")
// public ResponseDto<AnticipateValueVo> getAnticipateValueBySkuId(@RequestParam(name = "skuId") String skuId){
// return goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuId);
// public AnticipateValueVo getAnticipateValueBySkuId(@RequestParam(name = "skuId") String skuId){
// return goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuId,1);
// }
}
......@@ -2,14 +2,16 @@ package com.liquidnet.service.goblin.service.impl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
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.*;
import com.liquidnet.service.goblin.service.IGoblinGoodsAnticipateService;
import com.liquidnet.service.goblin.util.GoblinAnticipateUtils;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.QueueUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -17,6 +19,8 @@ import org.apache.commons.lang.StringUtils;
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;
......@@ -43,6 +47,9 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
@Autowired
GoblinAnticipateUtils goblinAnticipateUtils;
@Autowired
GoblinMongoUtils goblinMongoUtils;
@Override
public ResponseDto<Object> userAbout(String skuId) {
//查询该skuId是否能被预约
......@@ -57,6 +64,27 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
GoblinGoodAnticipateUserVo userVo = goblinRedisUtils.getUserAboutAut(skuId, uid);
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
if (userVo == null) {
//接入助力人数判断
//获取需要多少人助力
GoblinGoodsAnticipateHelp sharePeopleBySkuId = goblinRedisUtils.getSharePeopleBySkuId(skuId);
//判断如果所需助力人数
if (sharePeopleBySkuId.getPeople() != 0) {
//用户得到助力人数
String sid = goblinRedisUtils.getShare(skuId, uid);
if (sid != null) {
Integer people = goblinRedisUtils.getHelpSidAddHelp(sid);
if (sharePeopleBySkuId.getPeople() > people) {
int num = sharePeopleBySkuId.getPeople() - people;
log.debug(" skuId:{},分享sid:{},预约uid:{},需要助力人数:{},助力人数:{}", skuId, sid, uid, sharePeopleBySkuId.getPeople(), people);
return ResponseDto.failure("预约失败!");
}
} else {
log.debug("skuId:{},需要助力人数:{},uid:{},该用户未开启分享助力!",skuId,sharePeopleBySkuId.getPeople(),uid);
return ResponseDto.failure("预约失败!");
}
}
GoblinGoodAnticipateUserVo user = new GoblinGoodAnticipateUserVo();
user.setUid(uid);
user.setSkuId(skuId);
......@@ -96,6 +124,139 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
return ResponseDto.success(goblinRedisUtils.getUserAboutAut(skuId, uid) != null);
}
@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关联记录
String sid = goblinRedisUtils.getShare(skuId, uid);
if (sid!=null) {
return ResponseDto.failure("已开启助力");
} else {
//查询sku需要助力人数
//Integer skuIdPeople = goblinRedisUtils.getSharePeopleBySkuId(skuId);
String sId = IDGenerator.nextTimeId2();
GoblinGoodsAnticipateShareVo goblinGoodsAnticipateShareVo = GoblinGoodsAnticipateShareVo.getNew();
goblinGoodsAnticipateShareVo.setSid(sId);
goblinGoodsAnticipateShareVo.setUid(uid);
goblinGoodsAnticipateShareVo.setSkuId(skuId);
goblinGoodsAnticipateShareVo.setUrl(url);
goblinGoodsAnticipateShareVo.setCreatedDate(LocalDateTime.now());
goblinGoodsAnticipateShareVo.setAboutStartDate(valueBySkuId.getAboutStartDate());
goblinGoodsAnticipateShareVo.setAboutEndDate(valueBySkuId.getAboutEndDate());
//开启助力
//mongodb缓存
//goblinMongoUtils.setGoblinGoodsAnticipateShareVo(goblinGoodsAnticipateShareVo);
//redis缓存
goblinRedisUtils.setShare(skuId, uid, sId);
//redis存储用户分享
goblinRedisUtils.setShareVo(goblinGoodsAnticipateShareVo);
//redis消息 MySQL
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
sqlValue.add(new Object[]{
goblinGoodsAnticipateShareVo.getSid(),
goblinGoodsAnticipateShareVo.getUid(),
goblinGoodsAnticipateShareVo.getSkuId(),
goblinGoodsAnticipateShareVo.getUrl(),
goblinGoodsAnticipateShareVo.getCreatedDate()
});
sendRedis("goblin_goods_anticipate_share", sqlValue);
}
return ResponseDto.success();
}
@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();
if (shareVo.getUid().equals(uid)){
return ResponseDto.failure("助力失败,本人不能为本人助力!");
}
//查询mongodb 是否助力过该分享
// GoblinGoodsAnticipateHelpVo goodsAnticipateHelpVo = goblinMongoUtils.getHelpVo(sid, uid);
//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);
//加入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();
sqlValue.add(new Object[]{
helpVo.getSid(),
helpVo.getHelpUid(),
helpVo.getCreateDate()
});
sendRedis("goblin_goods_anticipate_help", sqlValue);
//记录助力人数头像(前六个)
List<String> helpUserAvatar = goblinRedisUtils.getHelpUserAvatar(sid);
if (helpUserAvatar.size() <= 6) {
//获取用户头像保存
AdamUserInfoVo userInfo = goblinAnticipateUtils.getUserInfo();
//新增助力头像
goblinRedisUtils.setHelpUserAvatar(sid, userInfo.getAvatar());
}
return ResponseDto.success();
}
return ResponseDto.failure("已助力该分享");
}
@Override
public ResponseDto<List<String>> getHelpAvatar(String sid) {
List<String> helpUserAvatar = goblinRedisUtils.getHelpUserAvatar(sid);
Integer helpPeople = goblinRedisUtils.getHelpSidAddHelp(sid);
return ResponseDto.success();
}
@Override
public ResponseDto<String> getTurnOnHelp(String skuId) {
String uid = CurrentUtil.getCurrentUid();
return ResponseDto.success(goblinRedisUtils.getShare(skuId, uid));
}
public void sendRedis(String sqlKey, LinkedList<Object[]> sqlData) {
LinkedList<String> sql = CollectionUtil.linkedListString();
sql.add(SqlMapping.get(sqlKey));
......
......@@ -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;
......@@ -23,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.math.BigInteger;
import java.time.LocalDateTime;
......@@ -69,7 +71,6 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
String antId = IDGenerator.nextTimeId2();
GoblinGoodsAnticipateVo goodsAnticipateVo = new GoblinGoodsAnticipateVo();
goodsAnticipateVo.copy(goodsAnticipateAddParam);
// BeanUtils.copyProperties(goodsAnticipateAddParam, goodsAnticipateVo);
goodsAnticipateVo.setAntId(antId);
goodsAnticipateVo.setCreatedDate(LocalDateTime.now());
goodsAnticipateVo.setDelTag(0);
......@@ -77,7 +78,10 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
//redis消息预约消息表
LinkedList<Object[]> sqlAnt = CollectionUtil.linkedListObjectArr();
sqlAnt.add(new Object[]{
goodsAnticipateVo.getName(),
antId,
goodsAnticipateVo.getPeople(),
goodsAnticipateVo.getType(),
goodsAnticipateVo.getRule(),
goodsAnticipateVo.getCreatedDate(),
goodsAnticipateVo.getDelTag()
......@@ -87,7 +91,7 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
//mongodb新增
goblinMongoUtils.setGoblinGoodsAnticipateVo(goodsAnticipateVo);
addAnticipateValues(antId, goodsAnticipateAddParam.getRule(), goodsAnticipateAddParam.getList());
addAnticipateValues(antId, goodsAnticipateAddParam.getRule(), goodsAnticipateAddParam.getList(),goodsAnticipateAddParam.getPeople(),goodsAnticipateAddParam.getType());
//返回预约id
return ResponseDto.success(antId);
......@@ -95,7 +99,7 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
return ResponseDto.failure("参数有误");
}
public void addAnticipateValues(String antId, String rule, List<GoblinGoodsAnticipateValueAddParam> list) {
public void addAnticipateValues(String antId, String rule, List<GoblinGoodsAnticipateValueAddParam> list,Integer people,Integer type) {
//获取创建者uid
String uid = CurrentUtil.getCurrentUid();
if (list != null && list.size() > 0) {
......@@ -113,6 +117,16 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
//redis标识存入该sku处于预约列表
goblinRedisUtils.setValue(goodsAnticipateValueVo);
//redis缓存预约条件
GoblinGoodsAnticipateHelp goodsAnticipateHelp = GoblinGoodsAnticipateHelp.getNew();
goodsAnticipateHelp.setSkuId(goodsAnticipateValueVo.getSkuId());
goodsAnticipateHelp.setType(type);
goodsAnticipateHelp.setPeople(people);
goodsAnticipateHelp.setAboutStartDate(goodsAnticipateValueVo.getAboutStartDate());
goodsAnticipateHelp.setAboutEndDate(goodsAnticipateValueVo.getAboutEndDate());
goblinRedisUtils.setSharePeopleBySkuId(item.getSkuId(), goodsAnticipateHelp);
//保存mysql中间表
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
sqlValue.add(new Object[]{
......@@ -193,6 +207,8 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
if (!goodsAnticipateValueVo.getState().equals(0)) {
return ResponseDto.failure("预约状态为已开启或已结束,不可删除!");
}
//删除sku助力相关
goblinRedisUtils.delSharePeopleBySkuId(skuId);
//mysql删除
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
sqlValue.add(new Object[]{
......@@ -211,6 +227,9 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
AnticipateValueVo valueVo = AnticipateValueVo.getNew();
if (anticipateValueVo != null) {
valueVo = valueVo.copy(anticipateValueVo);
GoblinGoodsAnticipateHelp help = goblinRedisUtils.getSharePeopleBySkuId(skuId);
valueVo.setType(help.getType());
valueVo.setPeopleType(help.getPeople());
valueVo.setState(GoblinAnticipateUtils.setState(valueVo.getAboutStartDate(), valueVo.getAboutEndDate()));
} else {
valueVo.setState(null);
......
......@@ -104,6 +104,14 @@ public class GoblinMongoUtils {
GoblinGoodsAnticipateVo.class, GoblinGoodsAnticipateVo.class.getSimpleName()) != null;
}
/**
* 根据名称查询预约
*/
public GoblinGoodsAnticipateVo getAnticipateVoBySku(String antId) {
return mongoTemplate.findOne(Query.query(Criteria.where("antId").is(antId)),
GoblinGoodsAnticipateVo.class, GoblinGoodsAnticipateVo.class.getSimpleName());
}
/**
* 新增预约
*/
......@@ -183,6 +191,37 @@ 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 查询助力信息 不存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());
}
/* ---------------------------------------- 平台分类数据源 ---------------------------------------- */
public List<GoblinSelfGoodsCategoryVo> getSelfGoodsCategoryVos() {
......
......@@ -157,6 +157,115 @@ public class GoblinRedisUtils {
}
}
/**
* 存用户助力关联
*/
public void setShare(String skuId, String uid,String sid) {
String key = GoblinRedisConst.ANTICIPATE_SHARE_UID_SKUID.concat(uid).concat(":").concat(skuId);
redisUtil.set(key,sid);
}
/**
* 获取用户是否开启关联助力
*/
public String getShare(String skuId,String uid){
String key = GoblinRedisConst.ANTICIPATE_SHARE_UID_SKUID.concat(uid).concat(":").concat(skuId);
return (String) redisUtil.get(key);
}
/**
* 缓存sku预约助力人数
*/
public void setSharePeopleBySkuId(String skuId,GoblinGoodsAnticipateHelp goodsAnticipateHelp){
String key = GoblinRedisConst.ANTICIPATE_SHARE_SKUID_PEOPLE.concat(skuId);
redisUtil.set(key,goodsAnticipateHelp);
}
/**
* 缓存sku预约助力人数
*/
public GoblinGoodsAnticipateHelp getSharePeopleBySkuId(String skuId){
String key = GoblinRedisConst.ANTICIPATE_SHARE_SKUID_PEOPLE.concat(skuId);
return (GoblinGoodsAnticipateHelp) redisUtil.get(key);
}
/**
* 缓存sku预约助力人数
*/
public void delSharePeopleBySkuId(String skuId){
String key = GoblinRedisConst.ANTICIPATE_SHARE_SKUID_PEOPLE.concat(skuId);
redisUtil.del(key);
}
/**
* 保存用户头像
*/
public void setHelpUserAvatar(String sid, String avatar) {
Object list = redisUtil.get(GoblinRedisConst.ANTICIPATE_SHARE_HELP_AVATAR.concat(sid));
List<String> urlList = list != null ? (List<String>) list : CollectionUtil.arrayListString();
urlList.add(avatar);
redisUtil.set(GoblinRedisConst.ANTICIPATE_SHARE_HELP_AVATAR.concat(sid), urlList);
}
/**
* 获取用户预约头像
*/
public List<String> getHelpUserAvatar(String sid) {
String rdk = GoblinRedisConst.ANTICIPATE_SHARE_HELP_AVATAR.concat(sid);
Object obj = redisUtil.get(rdk);
if (obj == null) {
return CollectionUtil.arrayListString();
} else {
return (List<String>) obj;
}
}
/**
* 存储分享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){
Integer people = (Integer) redisUtil.get(GoblinRedisConst.ANTICIPATE_SHARE_SID.concat(sid));
return people != null ? people : 0;
}
/* ---------------------------------------- sku库存相关 ---------------------------------------- */
public void setSkuStock(String marketPre, String skuId, Integer stock) {
String rk = GoblinRedisConst.REAL_STOCK_SKU;
......
......@@ -135,11 +135,13 @@ goblin_user_digital_artwork.update_for_chain=UPDATE goblin_user_digital_artwork
goblin_user_digital_artwork.update_for_unboxing=UPDATE goblin_user_digital_artwork SET state=1,del_flg='1',opening_at=?,updated_at=?,deleted_at=? WHERE artwork_id=? AND state<>1
#----
#---- \u9884\u7EA6
goblin_goods_anticipate=INSERT INTO goblin_goods_anticipate(ant_id,`rule`,created_date,del_tag) VALUES(?,?,?,?)
goblin_goods_anticipate=INSERT INTO goblin_goods_anticipate(`name`,ant_id,people,`type`,`rule`,created_date,del_tag) VALUES(?,?,?,?,?,?,?)
goblin_goods_anticipate_value=INSERT INTO goblin_goods_anticipate_value (uid,ant_id,sku_name,sku_id,spu_id,about_people,actual_people,rule,about_start_date,about_end_date,created_date,del_tag) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)
goblin_goods_anticipate_value_update_proper=UPDATE goblin_goods_anticipate_value SET about_people = ?,update_date = NOW() WHERE sku_id = ?
goblin_goods_anticipate_value_delete=UPDATE goblin_goods_anticipate_value SET `del_tag` = 1,update_date = NOW() WHERE sku_id = ?
goblin_goods_anticipate_user=INSERT INTO goblin_goods_anticipate_user(uid,sku_id,phone,state,created_date) VALUES(?,?,?,?,?)
goblin_goods_anticipate_help=INSERT INTO goblin_goods_anticipate_help(sid,help_uid,created_date) VALUES(?,?,?)
goblin_goods_anticipate_share=INSERT INTO goblin_goods_anticipate_share(sid,uid,sku_id,url,created_date) VALUES(?,?,?,?,?)
goblin_goods_anticipate_user_update=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE uid = ? AND sku_id = ?
goblin_goods_anticipate_user_update_sku=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE sku_id = ?
#---- \u4E1A\u52A1\u8D26\u53F7\u8BB0\u5F55
......
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