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

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

黑白名单暂时提交

parent 763d00c2
...@@ -123,6 +123,10 @@ public class GoblinRedisConst { ...@@ -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_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_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--------------------------------- */ /* --------------------------------NFT--------------------------------- */
/*public static final String REDIS_GOBLIN_NFT_ORDER_INFO = PREFIX.concat("nftOrder:");// nft订单详情 orderId /*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 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 { ...@@ -330,7 +330,7 @@ public class CouponBaseUtil {
boolean isHas = false; boolean isHas = false;
for (CandyUserCouponBasicDto dtoItem : dtoList) { for (CandyUserCouponBasicDto dtoItem : dtoList) {
if (dtoItem.getUcouponId().equals(uCouponId)) { if (dtoItem.getUcouponId().equals(uCouponId)) {
if (dtoItem.getState().equals(1)) { if (dtoItem.getState().equals(1) && dtoItem.getDuedAt().isBefore(LocalDateTime.now())) {
dtoItem.setState(5); dtoItem.setState(5);
dtoItem.setUsedAt(LocalDateTime.now()); dtoItem.setUsedAt(LocalDateTime.now());
dtoItem.setUsedFor(content); 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; ...@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.consumer.kylin.dto.PhoneDto; 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.consumer.kylin.service.IBaseDao;
import com.liquidnet.service.goblin.constant.GoblinRedisConst; import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -52,13 +53,18 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String, ...@@ -52,13 +53,18 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String,
private boolean consumerMessageHandler(Map<String, String> message) { private boolean consumerMessageHandler(Map<String, String> message) {
LinkedList<Object[]> objs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> objs = CollectionUtil.linkedListObjectArr();
String xlsPath = null, skuId = null; String xlsPath = null, skuId = null;
String oXlsPath = null;
Integer type = null; Integer type = null;
boolean aBoolean = false; boolean aBoolean = false;
try { 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")); String finalSkuId = (skuId = message.get("skuId"));
Integer finalType = (type = Integer.parseInt(message.get("type"))); Integer finalType = (type = Integer.parseInt(message.get("type")));
if (finalType.equals(1) || finalType.equals(2)) {
EasyExcel.read(new URL(xlsPath).openStream(), PhoneDto.class, new PageReadListener<PhoneDto>(dataList -> { EasyExcel.read(new URL(xlsPath).openStream(), PhoneDto.class, new PageReadListener<PhoneDto>(dataList -> {
for (PhoneDto data : dataList) { for (PhoneDto data : dataList) {
if (data.getMobile() == null) { if (data.getMobile() == null) {
...@@ -78,14 +84,44 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String, ...@@ -78,14 +84,44 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String,
} }
} }
})).sheet().doRead(); })).sheet().doRead();
objs.add(new Object[]{skuId, xlsPath, type, 1, LocalDateTime.now()}); objs.add(new Object[]{skuId, xlsPath, type, 1, LocalDateTime.now()});
aBoolean = baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs); 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;
}
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);
}
}
})).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();
}
}
} catch (Exception e) { } catch (Exception e) {
log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), message, e); log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), message, e);
try { try {
if (type.equals(1) || type.equals(2)) {
objs.add(new Object[]{skuId, xlsPath, type, 2, LocalDateTime.now()}); objs.add(new Object[]{skuId, xlsPath, type, 2, LocalDateTime.now()});
aBoolean = baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs); aBoolean = baseDao.batchSql(SQL_INSERT_GOODS_BUY_ROSTER_LOG, objs);
}
} catch (Exception ignored) { } catch (Exception ignored) {
} }
} }
......
package com.liquidnet.service.goblin.service.impl.manage; 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.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto; 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.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsItemVo; import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsItemVo;
import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsVo; import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsVo;
...@@ -13,9 +16,12 @@ import com.liquidnet.service.goblin.service.manage.IGoblinListService; ...@@ -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.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils; import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil; import com.liquidnet.service.goblin.util.ObjectUtil;
import com.liquidnet.service.goblin.util.QueueUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List; import java.util.List;
/** /**
...@@ -33,6 +39,8 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -33,6 +39,8 @@ public class GoblinListServiceImpl implements IGoblinListService {
GoblinRedisUtils redisUtils; GoblinRedisUtils redisUtils;
@Autowired @Autowired
GoblinMongoUtils mongoUtils; GoblinMongoUtils mongoUtils;
@Autowired
QueueUtils queueUtils;
@Override @Override
public void getList() { public void getList() {
...@@ -45,7 +53,7 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -45,7 +53,7 @@ public class GoblinListServiceImpl implements IGoblinListService {
if (vo == null || !vo.getUid().equals(CurrentUtil.getCurrentUid())) { if (vo == null || !vo.getUid().equals(CurrentUtil.getCurrentUid())) {
return ResponseDto.failure("信息错误"); return ResponseDto.failure("信息错误");
} }
for (GoblinListDetailsItemVo item:vo.getItemVo()) { for (GoblinListDetailsItemVo item : vo.getItemVo()) {
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(item.getSkuId()); GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(item.getSkuId());
item.setSkuName(skuVo.getName()); item.setSkuName(skuVo.getName());
if (skuVo.getUnbox().equals("0")) { if (skuVo.getUnbox().equals("0")) {
...@@ -57,12 +65,12 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -57,12 +65,12 @@ public class GoblinListServiceImpl implements IGoblinListService {
int stock = 0; int stock = 0;
for (String skuIdItem : skuIdList) {// 盲盒计算所有sku库存总数 for (String skuIdItem : skuIdList) {// 盲盒计算所有sku库存总数
if (skuIdItem.equals(item.getSkuId())) {// 过滤自己 if (skuIdItem.equals(item.getSkuId())) {// 过滤自己
stock+=skuVo.getSkuStock(); stock += skuVo.getSkuStock();
continue; continue;
} }
GoblinGoodsSkuInfoVo itemVo = redisUtils.getGoodsSkuInfoVo(skuIdItem); GoblinGoodsSkuInfoVo itemVo = redisUtils.getGoodsSkuInfoVo(skuIdItem);
surplusStock += redisUtils.getSkuAllStatusStock(itemVo); surplusStock += redisUtils.getSkuAllStatusStock(itemVo);
stock+=itemVo.getSkuStock(); stock += itemVo.getSkuStock();
} }
item.setSurplusStock(surplusStock); item.setSurplusStock(surplusStock);
item.setStock(stock); item.setStock(stock);
...@@ -73,6 +81,13 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -73,6 +81,13 @@ public class GoblinListServiceImpl implements IGoblinListService {
@Override @Override
public ResponseDto<Boolean> create(GoblinListCreateParam param) { 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(); GoblinListDetailsVo vo = GoblinListDetailsVo.getNew();
List<GoblinListDetailsItemVo> voItemList = ObjectUtil.goblinListDetailsItemVoArrayList(); List<GoblinListDetailsItemVo> voItemList = ObjectUtil.goblinListDetailsItemVoArrayList();
vo.setListId(IDGenerator.nextTimeId2()); vo.setListId(IDGenerator.nextTimeId2());
...@@ -94,11 +109,21 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -94,11 +109,21 @@ public class GoblinListServiceImpl implements IGoblinListService {
GoblinListDetailsItemVo itemVo = GoblinListDetailsItemVo.getNew(); GoblinListDetailsItemVo itemVo = GoblinListDetailsItemVo.getNew();
itemVo.setSkuId(item.getSkuId()); itemVo.setSkuId(item.getSkuId());
itemVo.setSpuId(item.getSpuId()); 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); vo.setItemVo(voItemList);
redisUtils.setGoblinListDetailsVo(vo); redisUtils.setGoblinListDetailsVo(vo);
mongoUtils.insertGoblinListDetailsVo(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(); return ResponseDto.success();
} }
...@@ -123,9 +148,15 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -123,9 +148,15 @@ public class GoblinListServiceImpl implements IGoblinListService {
vo.setWhiteUrl(""); vo.setWhiteUrl("");
} }
vo.setBlackUrl(param.getBlackUrl() == null ? "" : param.getBlackUrl()); 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); redisUtils.setGoblinListDetailsVo(vo);
mongoUtils.changeGoblinListDetailsVo(param.getListId(), vo); mongoUtils.changeGoblinListDetailsVo(param.getListId(), vo);
//todo sql入库/添加白名单/添加黑名单 //todo sql入库
return ResponseDto.success(); return ResponseDto.success();
} }
} }
...@@ -44,7 +44,7 @@ public class QueueUtils { ...@@ -44,7 +44,7 @@ public class QueueUtils {
* 发送消息 - REDIS [XLS] * 发送消息 - REDIS [XLS]
* *
* @param xlsPath xls 对应的OSS 全量路径 * @param xlsPath xls 对应的OSS 全量路径
* @param type [1-添加|2-删除] * @param type [1-添加|2-删除|3-白名单|4-白名单]
* @param skuId skuId * @param skuId skuId
*/ */
public void sendMsgByRedisXls(String xlsPath, String type, String skuId) { public void sendMsgByRedisXls(String xlsPath, String type, String skuId) {
...@@ -58,4 +58,25 @@ public class QueueUtils { ...@@ -58,4 +58,25 @@ public class QueueUtils {
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(MQConst.GoblinQueue.GOBLIN_XLS_OPERA.getKey())); 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 ...@@ -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 = ? goblin_goods_anticipate_user_update_sku=UPDATE goblin_goods_anticipate_user SET state = 1 WHERE sku_id = ?
#---- \u4E1A\u52A1\u8D26\u53F7\u8BB0\u5F55 #---- \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 (?,?,?,?,?,?,?) 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