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

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

黑白名单暂时提交

parent 763d00c2
......@@ -123,6 +123,10 @@ public class GoblinRedisConst {
public static final String REDIS_GOBLIN_TEMP_COUPON_MARKET = PREFIX.concat("temp:coupon:marketId:");//id 列表 $key:$marketId
public static final String REDIS_GOBLIN_TEMP_COUPON = PREFIX.concat("temp:coupon:");//详情 $key:$ucouponId
public static final String REDIS_BLACK = PREFIX.concat("black:");//黑名单 key:$skuId:$mobile
public static final String REDIS_WHITE = PREFIX.concat("white:");//白名单 key:$skuId:$mobile
/* --------------------------------NFT--------------------------------- */
/*public static final String REDIS_GOBLIN_NFT_ORDER_INFO = PREFIX.concat("nftOrder:");// nft订单详情 orderId
public static final String REDIS_GOBLIN_NFT_ORDER_ID_OF_CODE = PREFIX.concat("nftOrder:orderCode:");// nft订单ID获取 orderCode
......
......@@ -330,7 +330,7 @@ public class CouponBaseUtil {
boolean isHas = false;
for (CandyUserCouponBasicDto dtoItem : dtoList) {
if (dtoItem.getUcouponId().equals(uCouponId)) {
if (dtoItem.getState().equals(1)) {
if (dtoItem.getState().equals(1) && dtoItem.getDuedAt().isBefore(LocalDateTime.now())) {
dtoItem.setState(5);
dtoItem.setUsedAt(LocalDateTime.now());
dtoItem.setUsedFor(content);
......
package com.liquidnet.service.consumer.kylin.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode
public class PhoneUnIdDto {
private String mobile;
}
......@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.consumer.kylin.dto.PhoneDto;
import com.liquidnet.service.consumer.kylin.dto.PhoneUnIdDto;
import com.liquidnet.service.consumer.kylin.service.IBaseDao;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import lombok.extern.slf4j.Slf4j;
......@@ -52,40 +53,75 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String,
private boolean consumerMessageHandler(Map<String, String> message) {
LinkedList<Object[]> objs = CollectionUtil.linkedListObjectArr();
String xlsPath = null, skuId = null;
String oXlsPath = null;
Integer type = null;
boolean aBoolean = false;
try {
xlsPath = message.get("message");
String[] path = message.get("message").split(",");
xlsPath = path[0];
if (path.length > 1) {
oXlsPath = path[1];
}
String finalSkuId = (skuId = message.get("skuId"));
Integer finalType = (type = Integer.parseInt(message.get("type")));
EasyExcel.read(new URL(xlsPath).openStream(), PhoneDto.class, new PageReadListener<PhoneDto>(dataList -> {
for (PhoneDto data : dataList) {
if (data.getMobile() == null) {
continue;
if (finalType.equals(1) || finalType.equals(2)) {
EasyExcel.read(new URL(xlsPath).openStream(), PhoneDto.class, new PageReadListener<PhoneDto>(dataList -> {
for (PhoneDto data : dataList) {
if (data.getMobile() == null) {
continue;
}
String redisKey = GoblinRedisConst.REDIS_CAN_BUY.concat(finalSkuId + ":").concat(data.getMobile());
if (finalType.equals(1)) {//添加
if (log.isDebugEnabled()) {
log.debug("添加 读取到一条数据{}", JSON.toJSONString(data));
}
redisUtil.set(redisKey, 0);
} else {
if (log.isDebugEnabled()) {
log.debug("删除 读取到一条数据{}", JSON.toJSONString(data));
}
redisUtil.del(redisKey);
}
}
String redisKey = GoblinRedisConst.REDIS_CAN_BUY.concat(finalSkuId + ":").concat(data.getMobile());
if (finalType.equals(1)) {//添加
if (log.isDebugEnabled()) {
log.debug("添加 读取到一条数据{}", JSON.toJSONString(data));
})).sheet().doRead();
objs.add(new Object[]{skuId, xlsPath, type, 1, LocalDateTime.now()});
aBoolean = baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs);
} else if (finalType.equals(3) || finalType.equals(4)) {
//添加
EasyExcel.read(new URL(xlsPath).openStream(), PhoneUnIdDto.class, new PageReadListener<PhoneUnIdDto>(dataList -> {
for (PhoneUnIdDto data : dataList) {
if (data.getMobile() == null) {
continue;
}
redisUtil.set(redisKey, 0);
} else {
if (log.isDebugEnabled()) {
log.debug("删除 读取到一条数据{}", JSON.toJSONString(data));
if (finalType.equals(3)) {
redisUtil.set(GoblinRedisConst.REDIS_WHITE.concat(finalSkuId + ":").concat(data.getMobile()), 1);
} else {
redisUtil.set(GoblinRedisConst.REDIS_BLACK.concat(finalSkuId + ":").concat(data.getMobile()), 1);
}
redisUtil.del(redisKey);
}
})).sheet().doRead();
if (oXlsPath != null) {//删除旧的黑白名单
EasyExcel.read(new URL(oXlsPath).openStream(), PhoneUnIdDto.class, new PageReadListener<PhoneUnIdDto>(dataList -> {
for (PhoneUnIdDto data : dataList) {
if (data.getMobile() == null) {
continue;
}
if (finalType.equals(3)) {
redisUtil.del(GoblinRedisConst.REDIS_WHITE.concat(finalSkuId + ":").concat(data.getMobile()));
} else {
redisUtil.del(GoblinRedisConst.REDIS_BLACK.concat(finalSkuId + ":").concat(data.getMobile()));
}
}
})).sheet().doRead();
}
})).sheet().doRead();
objs.add(new Object[]{skuId, xlsPath, type, 1, LocalDateTime.now()});
aBoolean = baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs);
}
} catch (Exception e) {
log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), message, e);
try {
objs.add(new Object[]{skuId, xlsPath, type, 2, LocalDateTime.now()});
aBoolean = baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs);
if (type.equals(1) || type.equals(2)) {
objs.add(new Object[]{skuId, xlsPath, type, 2, LocalDateTime.now()});
aBoolean = baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs);
}
} catch (Exception ignored) {
}
}
......
package com.liquidnet.service.goblin.service.impl.manage;
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.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsItemVo;
import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsVo;
......@@ -13,9 +16,12 @@ import com.liquidnet.service.goblin.service.manage.IGoblinListService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import com.liquidnet.service.goblin.util.QueueUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;
/**
......@@ -33,6 +39,8 @@ public class GoblinListServiceImpl implements IGoblinListService {
GoblinRedisUtils redisUtils;
@Autowired
GoblinMongoUtils mongoUtils;
@Autowired
QueueUtils queueUtils;
@Override
public void getList() {
......@@ -45,7 +53,7 @@ public class GoblinListServiceImpl implements IGoblinListService {
if (vo == null || !vo.getUid().equals(CurrentUtil.getCurrentUid())) {
return ResponseDto.failure("信息错误");
}
for (GoblinListDetailsItemVo item:vo.getItemVo()) {
for (GoblinListDetailsItemVo item : vo.getItemVo()) {
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(item.getSkuId());
item.setSkuName(skuVo.getName());
if (skuVo.getUnbox().equals("0")) {
......@@ -57,12 +65,12 @@ public class GoblinListServiceImpl implements IGoblinListService {
int stock = 0;
for (String skuIdItem : skuIdList) {// 盲盒计算所有sku库存总数
if (skuIdItem.equals(item.getSkuId())) {// 过滤自己
stock+=skuVo.getSkuStock();
stock += skuVo.getSkuStock();
continue;
}
GoblinGoodsSkuInfoVo itemVo = redisUtils.getGoodsSkuInfoVo(skuIdItem);
surplusStock += redisUtils.getSkuAllStatusStock(itemVo);
stock+=itemVo.getSkuStock();
stock += itemVo.getSkuStock();
}
item.setSurplusStock(surplusStock);
item.setStock(stock);
......@@ -73,6 +81,13 @@ public class GoblinListServiceImpl implements IGoblinListService {
@Override
public ResponseDto<Boolean> create(GoblinListCreateParam param) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("goblin_list_insert"));
sqls.add(SqlMapping.get("goblin_list_detail_insert"));
LinkedList<Object[]> goblinList = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> goblinListDetails = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
GoblinListDetailsVo vo = GoblinListDetailsVo.getNew();
List<GoblinListDetailsItemVo> voItemList = ObjectUtil.goblinListDetailsItemVoArrayList();
vo.setListId(IDGenerator.nextTimeId2());
......@@ -94,11 +109,21 @@ public class GoblinListServiceImpl implements IGoblinListService {
GoblinListDetailsItemVo itemVo = GoblinListDetailsItemVo.getNew();
itemVo.setSkuId(item.getSkuId());
itemVo.setSpuId(item.getSpuId());
// 白名单
queueUtils.sendMsgByRedisXls(param.getWhiteUrl(), null, "3", item.getSkuId());
// 黑名单
queueUtils.sendMsgByRedisXls(param.getBlackUrl(), null, "4", item.getSkuId());
goblinListDetails.add(new Object[]{
vo.getListId(),itemVo.getSpuId(),itemVo.getSkuId(),now
});
}
vo.setItemVo(voItemList);
redisUtils.setGoblinListDetailsVo(vo);
mongoUtils.insertGoblinListDetailsVo(vo);
//todo sql入库/添加白名单/添加黑名单
goblinList.add(new Object[]{
vo.getListId(),vo.getUid(),vo.getName(),vo.getWhiteType(),vo.getWhiteUrl(),vo.getAdvanceMin(),vo.getBlackUrl(), now
});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_USER_ORDER_OPERA.getKey(), SqlMapping.gets(sqls, goblinList, goblinListDetails));
return ResponseDto.success();
}
......@@ -123,9 +148,15 @@ public class GoblinListServiceImpl implements IGoblinListService {
vo.setWhiteUrl("");
}
vo.setBlackUrl(param.getBlackUrl() == null ? "" : param.getBlackUrl());
for (GoblinListDetailsItemVo item:vo.getItemVo()) {
// 白名单
queueUtils.sendMsgByRedisXls(param.getWhiteUrl(), whiteUrl, "3", item.getSkuId());
// 黑名单
queueUtils.sendMsgByRedisXls(param.getBlackUrl(), blackUrl, "4", item.getSkuId());
}
redisUtils.setGoblinListDetailsVo(vo);
mongoUtils.changeGoblinListDetailsVo(param.getListId(), vo);
//todo sql入库/添加白名单/添加黑名单
//todo sql入库
return ResponseDto.success();
}
}
......@@ -44,7 +44,7 @@ public class QueueUtils {
* 发送消息 - REDIS [XLS]
*
* @param xlsPath xls 对应的OSS 全量路径
* @param type [1-添加|2-删除]
* @param type [1-添加|2-删除|3-白名单|4-白名单]
* @param skuId skuId
*/
public void sendMsgByRedisXls(String xlsPath, String type, String skuId) {
......@@ -58,4 +58,25 @@ public class QueueUtils {
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(MQConst.GoblinQueue.GOBLIN_XLS_OPERA.getKey()));
}
}
/**
* 发送消息 - REDIS [XLS]
*
* @param nXlsPath xls 新地址
* @param oXlsPath xls 旧地址
* @param type [1-添加|2-删除|3-白名单|4-白名单]
* @param skuId skuId
*/
public void sendMsgByRedisXls(String nXlsPath, String oXlsPath, String type, String skuId) {
if (nXlsPath == null || nXlsPath.equals("") || oXlsPath == null || oXlsPath.equals("") || type == null || type.equals("") || skuId == null || skuId.equals("")) {
} else {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put(MQConst.QUEUE_MESSAGE_KEY, nXlsPath.concat(",").concat(oXlsPath));
map.put("type", type);
map.put("skuId", skuId);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(MQConst.GoblinQueue.GOBLIN_XLS_OPERA.getKey()));
}
}
}
......@@ -144,3 +144,9 @@ goblin_goods_anticipate_user_update=UPDATE goblin_goods_anticipate_user SET stat
goblin_goods_anticipate_user_update_sku=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE sku_id = ?
#---- \u4E1A\u52A1\u8D26\u53F7\u8BB0\u5F55
adam_user_busi_acct.add=INSERT INTO adam_user_busi_acct (`uid`, busi, uuid, `work`, ppwd, `state`, created_at) VALUES (?,?,?,?,?,?,?)
#---- 黑白名单 ----
goblin_list_insert = "INSERT INTO goblin_list (`list_id`,`uid`,`name`,`white_type`,`white_url`,`advance_min``,`black_url`,`created_at`) VALUES (?,?,?,?,?,?,?,?)"
goblin_list_detail_insert = "INSERT INTO goblin_list_details (`list_id`,`spu_id`,`sku_id`,`created_at`) VALUES (?,?,?,?)"
goblin_list_update = ""
\ No newline at end of file
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