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

Commit 2ae90555 authored by jiangxiulong's avatar jiangxiulong

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

parents b3e40357 74c9d0d2
......@@ -32,6 +32,11 @@ public class GoblinGoodsAnticipateParam{
/**
* 预约名称
*/
@ApiModelProperty("预约名称")
private String name;
}
......@@ -77,9 +77,11 @@ public class GoblinStoreMgtDigitalGoodsAddSkuParam implements Serializable {
// private BigDecimal priceMember;
@ApiModelProperty(position = 25, required = false, value = "限购[0-无限制|X:限购数量],`unbox=0`时必传", example = "1")
// @NotNull(message = "限购数量不能为空")// TODO: 2022/4/11 ==zhanggb.open
@Min(value = 1, message = "限购数量必须大于0")
private Integer buyLimit;
@ApiModelProperty(position = 26, required = false, value = "购买限制[0-全部用户|1-仅会员],`unbox=0`时必传", example = "0")
// @NotBlank(message = "购买条件不能为空")// TODO: 2022/4/11 ==zhanggb.open
@Pattern(regexp = "\\b(0|1)\\b", message = "购买条件参数无效")
private String buyFactor;
@ApiModelProperty(position = 27, required = false, value = "是否隐藏[0-默认展示|1-隐藏],`unbox=0`时必传", example = "0")
......@@ -181,7 +183,8 @@ public class GoblinStoreMgtDigitalGoodsAddSkuParam implements Serializable {
} else {
initVo.setStock(0);
initVo.setSkuStock(0);
initVo.setBuyFactor("0");
initVo.setBuyLimit(this.getBuyLimit());//
initVo.setBuyFactor(this.getBuyFactor());//
initVo.setSkuAppear("0");
initVo.setSkuCanbuy("1");
initVo.setOpeningTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(this.getOpeningTime()));//1
......@@ -209,7 +212,8 @@ public class GoblinStoreMgtDigitalGoodsAddSkuParam implements Serializable {
updateVo.setSkuCanbuy(this.getSkuCanbuy());//0
break;
case "1":
updateVo.setBuyFactor("0");//
updateVo.setBuyLimit(this.getBuyLimit());//
updateVo.setBuyFactor(this.getBuyFactor());//
updateVo.setSkuAppear("0");//
updateVo.setSkuCanbuy("1");//
updateVo.setName(this.getName());//1
......
......@@ -40,4 +40,6 @@ public interface IGoblinGoodsAnticipateService{
ResponseDto<Object> addAnticipateValues(List<GoblinGoodsAnticipateValueParam> list);
ResponseDto<Object> updateAnticipateValues(List<GoblinGoodsAnticipateValueParam> list);
ResponseDto<Object> getAnticipateValues(String antId);
}
......@@ -130,23 +130,16 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece
.getUpdateObject()
);
}
} else {
redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid), 1);
}
// Redis记录VO
redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(digitalArtworkVo.getArtworkId()), digitalArtworkVo);
// Redis更新藏品ID列表
List<String> userDigitalArtworkIds = this.getUserDigitalArtworkIdsFromRdb(uid);
if (CollectionUtils.isEmpty(userDigitalArtworkIds)) {
userDigitalArtworkIds = CollectionUtil.arrayListString();
userDigitalArtworkIds.add(artworkId);
} else {
userDigitalArtworkIds.add(0, artworkId);
if (fromBoxArtworkFlg) {
userDigitalArtworkIds.remove(fromArtworkId);
}
int size = userDigitalArtworkIds.size();
if (size > 30) userDigitalArtworkIds.remove(size - 1);
}
redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid), userDigitalArtworkIds);
this.addGoblinUserDigitalArtworkIds(uid, artworkId);
// Redis生成标记(缓存三天),用于上面的生成检查
redisUtil.set(genMarkerKey, 1, 259200);
StreamOperations<String, Object, Object> streamOperations = stringRedisTemplate.opsForStream();
// Mysql持久化
HashMap<String, String> sqlArtworkMap = CollectionUtil.mapStringString();
......@@ -163,12 +156,6 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece
.put("skuId", skuId).put("userId", uid).put("buyTimestamp", DateUtil.Formatter.yyyyMMddHHmmss.format(now));
bizNftBuyMap.put("message", bizNftBuyNode.toString());
streamOperations.add(StreamRecords.mapBacked(bizNftBuyMap).withStreamKey(MQConst.GalaxyQueue.JSON_NFT_PUBLISH_AND_BUY.getKey()));
if (!fromBoxArtworkFlg) {
redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid), 1);
}
// Redis生成标记(缓存三天),用于上面的生成检查
redisUtil.set(genMarkerKey, 1, 259200);
return true;
}
......@@ -198,6 +185,22 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece
return (List<String>) redisUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid));
}
/**
* 缓存并更新用户藏品ID集合
*/
public boolean addGoblinUserDigitalArtworkIds(String uid, String artworkId) {
List<String> ids = this.getUserDigitalArtworkIdsFromRdb(uid);
if (CollectionUtils.isEmpty(ids)) {
ids = CollectionUtil.arrayListString();
ids.add(artworkId);
} else {
ids.add(0, artworkId);
int size = ids.size();
if (size > 30) ids.remove(size - 1);
}
return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid), ids);
}
public GoblinGoodsSkuInfoVo getGoodsSkuInfoVoFromRdb(String skuId) {
String rk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId);
GoblinGoodsSkuInfoVo vo = (GoblinGoodsSkuInfoVo) redisUtil.get(rk);
......
......@@ -88,4 +88,10 @@ public class GoblinGoodsAnticipateController {
return goblinGoodsAnticipateService.userAbout(antId, skuId, uid, phone, state);
}
@ApiOperation("根据预约id查询sku关联")
@PostMapping("getAnticipateValues")
public ResponseDto<Object> getAnticipateValues(@RequestParam(name = "antId", required = true) String antId){
return goblinGoodsAnticipateService.getAnticipateValues(antId);
}
}
......@@ -1037,7 +1037,7 @@ public class GoblinStoreMgtGoodsController {
if (goodsInfoVo.getSpuType() == 0) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品非数字藏品");
}
if (StringUtils.isBlank(mgtDigitalGoodsAddSkuParam.getProductId())) {// TODO: 2022/4/8 ==zhanggb
if (StringUtils.isBlank(mgtDigitalGoodsAddSkuParam.getProductId())) {// TODO: 2022/4/8 ==zhanggb.del
mgtDigitalGoodsAddSkuParam.setProductId("NGoods1");
}
JsonNode priceVNode = goblinRedisUtils.getIosProducts().get(mgtDigitalGoodsAddSkuParam.getProductId());
......@@ -1069,6 +1069,12 @@ public class GoblinStoreMgtGoodsController {
// }
// }
} else {// 盲盒校验
if (null == mgtDigitalGoodsAddSkuParam.getBuyLimit()) {// TODO: 2022/4/11 ==zhanggb.del
mgtDigitalGoodsAddSkuParam.setBuyLimit(1);
}
if (StringUtils.isEmpty(mgtDigitalGoodsAddSkuParam.getBuyFactor())) {// TODO: 2022/4/11 ==zhanggb.del
mgtDigitalGoodsAddSkuParam.setBuyFactor("0");
}
if (StringUtils.isEmpty(mgtDigitalGoodsAddSkuParam.getOpeningTime())) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "盲盒开启时间不能为空");
}
......
......@@ -456,6 +456,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
Pattern pattern = Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
Query query = new Query();
query.addCriteria(new Criteria().orOperator(
Criteria.where("spuType").is(0),
Criteria.where("name").regex(pattern),
Criteria.where("storeId").in(listStore),
Criteria.where("extagVoList.tagName").is(name)
......
......@@ -113,7 +113,8 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
//mongodb新增
goblinMongoUtils.setGoblinGoodsAnticipateVo(goodsAnticipateVo);
return ResponseDto.success();
//返回预约id
return ResponseDto.success(antId);
}
return ResponseDto.failure("参数有误");
}
......@@ -210,7 +211,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
public ResponseDto<Object> addAnticipateValues(List<GoblinGoodsAnticipateValueParam> list) {
if (list != null && list.size() > 0) {
for (GoblinGoodsAnticipateValueParam vo : list) {
if (goblinRedisUtils.getAnticipate(vo.getAntId(), vo.getSkuId()))
if (goblinRedisUtils.getAnticipate(vo.getSkuId()))
return ResponseDto.failure("该预约已选择该sku");
}
list.forEach(item -> {
......@@ -221,7 +222,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
goodsAnticipateValueVo.setDelTag(0);
//redis消息
//redis标识存入该sku处于预约列表
goblinRedisUtils.setAnticipateValue(goodsAnticipateValueVo.getAntId(), goodsAnticipateValueVo.getSkuId());
goblinRedisUtils.setAnticipateValue(goodsAnticipateValueVo.getSkuId());
//保存mysql中间表
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
......@@ -257,13 +258,13 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
//删除该sku关联
goblinMongoUtils.delAnticipateValueVo(goodsAnticipateValueVo);
//删除redis
goblinRedisUtils.delAnticipateValue(goodsAnticipateValueVo.getAntId(), goodsAnticipateValueVo.getSkuId());
goblinRedisUtils.delAnticipateValue(goodsAnticipateValueVo.getSkuId());
//删除mysql中的关联数据
sqlValue.add(new Object[]{
goodsAnticipateValueVo.getAntId(),
goodsAnticipateValueVo.getSkuId()
});
sendRedis("goblin_goods_anticipate_value_delete_by_antId_and_skuId",sqlValue);
sendRedis("goblin_goods_anticipate_value_delete_by_antId_and_skuId", sqlValue);
} else {
//保存mysql中间表
sqlValue.add(new Object[]{
......@@ -283,6 +284,11 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
return ResponseDto.success();
}
@Override
public ResponseDto<Object> getAnticipateValues(String antId) {
return ResponseDto.success(goblinMongoUtils.getGoodsAnticipateValues(antId));
}
public void sendRedis(String sqlKey, LinkedList<Object[]> sqlData) {
LinkedList<String> sql = CollectionUtil.linkedListString();
......
......@@ -123,7 +123,7 @@ public class GoblinMongoUtils {
* 根据活动id查询关联
*/
public List<GoblinGoodsAnticipateValueVo> getGoodsAnticipateValues(String antId){
Criteria criteria = Criteria.where("antId").is(antId);
Criteria criteria = Criteria.where("antId").is(antId).and("delTag").is(0);
Query query = Query.query(criteria);
return mongoTemplate.find(query, GoblinGoodsAnticipateValueVo.class, GoblinGoodsAnticipateValueVo.class.getSimpleName());
}
......@@ -164,6 +164,13 @@ public class GoblinMongoUtils {
*/
public void delAnticipateValues(String antId){
Query query = Query.query(Criteria.where("antId").is(antId));
//查询处所有的sku关联信息
List<GoblinGoodsAnticipateValueVo> goodsAnticipateValues = getGoodsAnticipateValues(antId);
if (goodsAnticipateValues != null && goodsAnticipateValues.size()>0){
goodsAnticipateValues.forEach(item -> {
redisUtils.delAnticipateValue(item.getSkuId());
});
}
mongoTemplate.remove(query, GoblinGoodsAnticipateValueVo.class.getSimpleName()).getDeletedCount();
}
......
......@@ -47,15 +47,15 @@ public class GoblinRedisUtils {
/**
* 该skuId已开启预约
*/
public void setAnticipateValue(String antId, String skuId){
redisUtil.set(GoblinRedisConst.ANTICIPATE_SKUID.concat(antId).concat(skuId),1);
public void setAnticipateValue(String skuId){
redisUtil.set(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId),1);
}
/**
* 删除skuId已开启预约
*/
public void delAnticipateValue(String antId, String skuId){
redisUtil.del(GoblinRedisConst.ANTICIPATE_SKUID.concat(antId).concat(skuId));
public void delAnticipateValue(String skuId){
redisUtil.del(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId));
}
......@@ -63,8 +63,8 @@ public class GoblinRedisUtils {
/**
* 获取关联
*/
public boolean getAnticipate(String antId, String skuId){
return redisUtil.get(GoblinRedisConst.ANTICIPATE_SKUID.concat(antId).concat(skuId)) != null;
public boolean getAnticipate(String skuId){
return redisUtil.get(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId)) != null;
}
public GoblinGoodAnticipateUserVo getUserAboutAut(String skuId, String uid) {
......
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