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

Commit 86de8a2b authored by jiangxiulong's avatar jiangxiulong

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

parents e1d8fe06 3981f9f6
......@@ -58,6 +58,7 @@ public class GoblinUserDigitalArtworkInfoVo implements Serializable, Cloneable {
// this.setEdition();
this.setEditionSn(source.getEditionSn());
this.setNftId(source.getNftId());
this.setGenerateTime(source.getTradingAt());
this.setSource(source.getSource());
this.setState(source.getState());
// this.setAuthor();
......
......@@ -16,8 +16,8 @@ public interface IGoblinGoodsAnticipateService {
/**
* 用户预约
*/
ResponseDto<Object> userAbout(String skuId, String uid, String phone);
ResponseDto<Object> userAbout(String skuId);
ResponseDto<Boolean> selectAnticipate(String skuId, String uid);
ResponseDto<Boolean> selectAnticipate(String skuId);
}
......@@ -2,8 +2,6 @@ package com.liquidnet.common.cache.redis.config;
import lombok.extern.slf4j.Slf4j;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.RecordId;
......@@ -11,7 +9,6 @@ import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StreamOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.stereotype.Component;
import java.net.InetAddress;
import java.net.UnknownHostException;
......@@ -49,10 +46,26 @@ public class RedisStreamConfig {
}
public StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
// var options = StreamMessageListenerContainer
// .StreamMessageListenerContainerOptions
// .builder()
// .pollTimeout(Duration.ofMillis(1))
// .build();
// 创建配置对象
StreamMessageListenerContainer.StreamMessageListenerContainerOptions<String, MapRecord<String, String, String>> options = StreamMessageListenerContainer.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
// 一次性最多拉取多少条消息
.batchSize(10)
// 执行消息轮询的执行器
// .executor(this.threadPoolTaskExecutor)
// 消息消费异常的handler
.errorHandler(t -> {
// StreamListener中的异常会在这里抛出
System.out.println("errorHandler: " + t.getMessage());
})
// 超时时间,设置为0,表示不超时(超时后会抛出异常)
.pollTimeout(Duration.ZERO)
.build();
return StreamMessageListenerContainer.create(factory, options);
}
......
......@@ -83,11 +83,13 @@ public class TestAdam {
"goblin:bsc:self_g_c",
"goblin:u_d_art_ids:481073045099397123024514",
"goblin:u_d_art_ids:937580006703923201984419",
"goblin:u_d_art:2290182141046",
"goblin:u_d_art_gm:481073045099397123024514" + "229813465121758731" + "1042142566635601925113326",
"goblin:u_d_art_ct:481073045099397123024514",
"goblin:real_stock_sku:229811280317503513",
"goblin:nftNumAccount:926221815868989446709775",
"goblin:u_d_art_ub:22103172030604",
};
for (String key : keys) {
long value = key.hashCode();
......
......@@ -137,7 +137,7 @@
// // Redis记录VO
// redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(digitalArtworkVo.getArtworkId()), digitalArtworkVo);
// // Redis更新藏品ID列表
// this.addGoblinUserDigitalArtworkIds(uid, artworkId);
// this.addGoblinUserDigitalArtworkIds(uid, artworkId, fromArtworkId);
// // Redis生成标记(缓存三天),用于上面的生成检查
// redisUtil.set(genMarkerKey, 1, 259200);
//
......@@ -191,13 +191,14 @@
// /**
// * 缓存并更新用户藏品ID集合
// */
// public boolean addGoblinUserDigitalArtworkIds(String uid, String artworkId) {
// public boolean addGoblinUserDigitalArtworkIds(String uid, String artworkId, String boxArtworkId) {
// List<String> ids = this.getUserDigitalArtworkIdsFromRdb(uid);
// if (CollectionUtils.isEmpty(ids)) {
// ids = CollectionUtil.arrayListString();
// ids.add(artworkId);
// } else {
// ids.add(0, artworkId);
// if (null != boxArtworkId) ids.remove(boxArtworkId);
// int size = ids.size();
// if (size > 30) ids.remove(size - 1);
// }
......
......@@ -9,8 +9,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 预约表 前端控制器
......@@ -30,16 +28,14 @@ public class GoblinGoodsAnticipateController {
@ApiOperation("用户预约 (只能预约不能取消)")
@PostMapping("/userAbout")
public ResponseDto<Object> userAbout(@RequestParam(name = "skuId", required = true) String skuId,
@RequestParam(name = "uid", required = true) String uid,
@RequestParam(name = "phone", required = true) String phone) {
return goblinGoodsAnticipateService.userAbout(skuId, uid, phone);
public ResponseDto<Object> userAbout(@RequestParam(name = "skuId", required = true) String skuId) {
return goblinGoodsAnticipateService.userAbout(skuId);
}
@ApiOperation("根据skuId和uid查询")
@GetMapping("/selectAnticipateBySkuIdAndUid")
public ResponseDto<Boolean> selectAnticipate(@RequestParam(name = "skuId") String skuId,@RequestParam(name = "uid") String uid){
return goblinGoodsAnticipateService.selectAnticipate(skuId,uid);
public ResponseDto<Boolean> selectAnticipate(@RequestParam(name = "skuId") String skuId){
return goblinGoodsAnticipateService.selectAnticipate(skuId);
}
}
......@@ -931,6 +931,9 @@ public class GoblinStoreMgtGoodsController {
log.debug("商品管理:商品编辑:SKU编辑-数字藏品:[GoblinStoreMgtGoodsEditSkuParam={}]", JsonUtils.toJson(mgtDigitalGoodsEditSkuParam));
}
if (goblinstoreMgtGoodsService.digitalGoodsEditSku(currentUid, mgtDigitalGoodsEditSkuParam, mgtGoodsInfoVo)) {
if ("0".equals(mgtGoodsSkuInfoVo.getUnbox()) && !StringUtils.equals(mgtDigitalGoodsEditSkuParam.getSkuAppear(), mgtGoodsSkuInfoVo.getSkuAppear())) {
goblinRedisUtils.delGoblinNftGoodsInfoListVo();
}
mgtGoodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(paramSkuId);
mgtGoodsSkuInfoVo.setSurplusStock(goblinRedisUtils.getSkuStock(null, paramSkuId));
return ResponseDto.success(mgtGoodsSkuInfoVo);
......
package com.liquidnet.service.goblin.service.impl;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil;
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.GoblinGoodsAnticipateAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinGoodsAnticipateValueAddParam;
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.GoblinGoodAnticipateUserVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsAnticipateVo;
import com.liquidnet.service.goblin.service.IGoblinGoodsAnticipateService;
import com.liquidnet.service.goblin.service.manage.IGoblinGoodsAnticipateMgService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinAnticipateUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.QueueUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
/**
* <p>
......@@ -50,7 +38,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
QueueUtils queueUtils;
@Override
public ResponseDto<Object> userAbout(String skuId, String uid, String phone) {
public ResponseDto<Object> userAbout(String skuId) {
//查询该skuId是否能被预约
GoblinGoodsAnticipateValueVo anticipateValueVo = goblinRedisUtils.getValueBySkuId(skuId);
if (anticipateValueVo != null) {
......@@ -58,29 +46,34 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
if (!anticipateValueVo.getState().equals(1)) {
return ResponseDto.failure("该商品预约尚未开始或已经结束,不可预约!");
}
GoblinAnticipateUtils goblinAnticipateUtils = new GoblinAnticipateUtils();
AdamUserInfoVo userInfo = goblinAnticipateUtils.getUserInfo();
if (userInfo==null){
return ResponseDto.failure("登陆信息有误");
}
//查询该用户是否预
GoblinGoodAnticipateUserVo userVo = goblinRedisUtils.getUserAboutAut(skuId, uid);
GoblinGoodAnticipateUserVo userVo = goblinRedisUtils.getUserAboutAut(skuId, userInfo.getUid());
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
if (userVo == null) {
GoblinGoodAnticipateUserVo user = new GoblinGoodAnticipateUserVo();
user.setUid(uid);
user.setUid(userInfo.getUid());
user.setSkuId(skuId);
user.setPhone(phone);
user.setPhone(userInfo.getMobile());
user.setState(0);
//mongodb记录
goblinRedisUtils.setUserAboutSku(user);
//用户没有预约过
//发送redis消息修改mysql记录用户预约
sqlValue.add(new Object[]{
uid,
user.getUid(),
skuId,
phone,
user.getPhone(),
0
});
sendRedis("goblin_goods_anticipate_user", sqlValue);
goblinRedisUtils.setSkuIdPeople(skuId);
//储存用户头像
userAvatar(skuId);
goblinRedisUtils.setUserAvatar(skuId,userInfo.getAvatar());
}
return ResponseDto.success();
}
......@@ -88,8 +81,13 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
}
@Override
public ResponseDto<Boolean> selectAnticipate(String skuId, String uid) {
return ResponseDto.success(goblinRedisUtils.getUserAboutAut(skuId, uid) != null) ;
public ResponseDto<Boolean> selectAnticipate(String skuId) {
GoblinAnticipateUtils goblinAnticipateUtils = new GoblinAnticipateUtils();
AdamUserInfoVo userInfo = goblinAnticipateUtils.getUserInfo();
if (userInfo == null){
return ResponseDto.failure("登陆信息有误!");
}
return ResponseDto.success(goblinRedisUtils.getUserAboutAut(skuId,userInfo.getUid()) != null) ;
}
private Integer setState(LocalDateTime startDate, LocalDateTime endDate) {
......@@ -111,11 +109,6 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
return null;
}
private void userAvatar(String skuId) {
//获取
goblinRedisUtils.setUserAvatar(skuId);
}
public void sendRedis(String sqlKey, LinkedList<Object[]> sqlData) {
LinkedList<String> sql = CollectionUtil.linkedListString();
sql.add(SqlMapping.get(sqlKey));
......
......@@ -114,7 +114,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
artworkInfoVo.setAuthor(goodsInfoVo.getAuthor());
artworkInfoVo.setPublisher(goodsInfoVo.getPublisher());
artworkInfoVo.setDetails(goodsSkuInfoVo.getDetails());
artworkInfoVo.setGenerateTime(goodsSkuInfoVo.getDeclareAt());
// artworkInfoVo.setGenerateTime(goodsSkuInfoVo.getDeclareAt());
return artworkInfoVo;
}
......@@ -215,7 +215,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
// Redis记录VO
goblinRedisUtils.setUserDigitalArtworkVo(initUserDigitalArtworkVo);
// Redis更新藏品ID列表
goblinRedisUtils.addUserDigitalArtworkIds(uid, artworkId);
goblinRedisUtils.addUserDigitalArtworkIdsForUnbox(uid, artworkId, userDigitalArtworkBoxVo.getArtworkId());
// // Redis生成标记(缓存三天),用于上面的生成检查
// goblinRedisUtils.markGenUserDigitalArtwork(uid, skuId, orderId);
......@@ -234,6 +234,8 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
LinkedList<Object[]> updateBoxArtworkObjs = CollectionUtil.linkedListObjectArr();
updateBoxArtworkObjs.add(new Object[]{now, now, now, userDigitalArtworkBoxVo.getArtworkId()});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_ARTWORK_GEN.getKey(), SqlMapping.gets(toMqSqls, initUserDigitalArtworkObjs, updateBoxArtworkObjs));
return unboxDigitalArtworkListVo;
}
return null;
}
......
......@@ -243,11 +243,6 @@ public class GoblinGoodsAnticipateMgServiceImpl implements IGoblinGoodsAnticipat
return valueVo;
}
private void userAvatar(String skuId) {
//获取
goblinRedisUtils.setUserAvatar(skuId);
}
public void sendRedis(String sqlKey, LinkedList<Object[]> sqlData) {
LinkedList<String> sql = CollectionUtil.linkedListString();
sql.add(SqlMapping.get(sqlKey));
......
......@@ -5,6 +5,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserProfileVo;
import com.liquidnet.service.base.ResponseDto;
import lombok.extern.slf4j.Slf4j;
......@@ -24,22 +25,24 @@ public class GoblinAnticipateUtils {
private final String avatar = "";
public String getUserInfo() {
public AdamUserInfoVo getUserInfo() {
try {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken());
header.add("Accept", "application/json;charset=UTF-8");
String returnData = HttpUtil.post(adamUrl + " /adam/user/info", header);
String returnData = HttpUtil.post(adamUrl+"/adam/user/info",null, header);
ResponseDto<AdamUserProfileVo> innerReturnVo = JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<AdamUserProfileVo>>() {
});
if (innerReturnVo.getData()!=null){
return innerReturnVo.getData().getUserInfo().getAvatar();
return innerReturnVo.getData().getUserInfo();
}
return avatar;
log.info("post url:{}<----->Authorization:{}",adamUrl+" /adam/user/info",CurrentUtil.getToken());
return null;
} catch (Exception e) {
log.info("post url:{}<----->Authorization:{}",adamUrl+" /adam/user/info",CurrentUtil.getToken());
log.error("获取用户头像失败", e);
return avatar;
return null;
}
}
}
......@@ -124,12 +124,11 @@ public class GoblinRedisUtils {
/**
* 保存用户头像
*/
public void setUserAvatar(String skuId) {
public void setUserAvatar(String skuId,String avatar) {
List<String> list = (List) redisUtil.get(GoblinRedisConst.ANTICIPATE_SKUID_AVATAR.concat(skuId));
List<String> urlList = list != null ? list : new ArrayList<String>();
if (urlList.size()<=2){
GoblinAnticipateUtils goblinAnticipateUtils = new GoblinAnticipateUtils();
urlList.add(goblinAnticipateUtils.getUserInfo());
urlList.add(avatar);
redisUtil.set(GoblinRedisConst.ANTICIPATE_SKUID_AVATAR.concat(skuId),urlList);
}
}
......@@ -1598,16 +1597,33 @@ public class GoblinRedisUtils {
return redisUtil.hasKey(GoblinRedisConst.USER_DIGITAL_ARTWORK_GENMARK.concat(uid).concat(skuId).concat(orderId));
}
// /**
// * 缓存并更新用户藏品ID集合
// */
// public boolean addUserDigitalArtworkIds(String uid, String artworkId) {
// List<String> ids = this.getUserDigitalArtworkIds(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);
// }
/**
* 缓存并更新用户藏品ID集合
* 开启盲盒:缓存并更新用户藏品ID集合
*/
public boolean addUserDigitalArtworkIds(String uid, String artworkId) {
public boolean addUserDigitalArtworkIdsForUnbox(String uid, String artworkId, String boxArtworkId) {
List<String> ids = this.getUserDigitalArtworkIds(uid);
if (CollectionUtils.isEmpty(ids)) {
ids = CollectionUtil.arrayListString();
ids.add(artworkId);
} else {
ids.add(0, artworkId);
ids.remove(boxArtworkId);
int size = ids.size();
if (size > 30) ids.remove(size - 1);
}
......
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