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

Commit 8e6b7488 authored by wanglele's avatar wanglele

批量空投

parent d0c817f3
...@@ -43,5 +43,5 @@ public interface IGoblinNftExCodeService { ...@@ -43,5 +43,5 @@ public interface IGoblinNftExCodeService {
* @param activityId * @param activityId
* @return * @return
*/ */
ResponseDto<Boolean> addAirdrops(MultipartFile file, String activityId); ResponseDto<Boolean> addAirdrops(MultipartFile file, GoblinNftExCodeParam goblinNftExCodeParam);
} }
...@@ -274,6 +274,7 @@ public class MQConst { ...@@ -274,6 +274,7 @@ public class MQConst {
GOBLIN_STORE_ORDER_OPERA("goblin:stream:order:store", "group.order:store", "商铺订单操作"), GOBLIN_STORE_ORDER_OPERA("goblin:stream:order:store", "group.order:store", "商铺订单操作"),
GOBLIN_USER_ORDER_OPERA("goblin:stream:order:user", "group.order:user", "用户订单操作"), GOBLIN_USER_ORDER_OPERA("goblin:stream:order:user", "group.order:user", "用户订单操作"),
GOBLIN_XLS_OPERA("goblin:stream:xls", "group.xls", "xls文件操作"), GOBLIN_XLS_OPERA("goblin:stream:xls", "group.xls", "xls文件操作"),
GOBLIN_PHONE_CODE_OPERA("goblin:stream:phone:code","goblin.phone.code","批量空投操作"),
GOBLIN_UN_PAY_0("goblin:stream:order:back:0", "group.order:back", "回滚关闭订单库存队列"), GOBLIN_UN_PAY_0("goblin:stream:order:back:0", "group.order:back", "回滚关闭订单库存队列"),
GOBLIN_UN_PAY_1("goblin:stream:order:back:1", "group.order:back", "回滚关闭订单库存队列"), GOBLIN_UN_PAY_1("goblin:stream:order:back:1", "group.order:back", "回滚关闭订单库存队列"),
......
...@@ -49,8 +49,17 @@ public interface AdamUserMapper extends BaseMapper<AdamUser> { ...@@ -49,8 +49,17 @@ public interface AdamUserMapper extends BaseMapper<AdamUser> {
/** /**
* 根据手机号获取 用户信息 * 根据手机号获取 用户信息
*
* @param mobile * @param mobile
* @return * @return
*/ */
AdamUserInfoDto selectByPhone(@Param("mobile") String mobile); AdamUserInfoDto selectByPhone(@Param("mobile") String mobile);
/**
* 根据手机号批量获取
*
* @param mobiles
* @return
*/
List<AdamUserInfoDto> selectByPhones(@Param("mobiles") String mobiles);
} }
...@@ -7,7 +7,16 @@ ...@@ -7,7 +7,16 @@
</resultMap> </resultMap>
<select id="selectByPhone" resultMap="BaseResult"> <select id="selectByPhone" resultMap="BaseResult">
select uid,mobile from adam_user where mobile = #{mobile,jdbcType=VARCHAR} select uid, mobile
from adam_user
where mobile = #{mobile,jdbcType=VARCHAR}
</select>
<select id="selectByPhones" resultMap="BaseResult">
select uid,mobile from adam_user where mobile in
<foreach collection="mobiles.split(',')" item="mobile" open="(" separator="," close=")">
#{mobile}
</foreach>
</select> </select>
<update id="executeForDM"> <update id="executeForDM">
......
...@@ -72,6 +72,7 @@ public interface GoblinNftExCodeMapper extends BaseMapper<GoblinNftExCode> { ...@@ -72,6 +72,7 @@ public interface GoblinNftExCodeMapper extends BaseMapper<GoblinNftExCode> {
/** /**
* 修改操作用户 * 修改操作用户
*
* @param goblinNftExCode * @param goblinNftExCode
* @return * @return
*/ */
...@@ -79,9 +80,18 @@ public interface GoblinNftExCodeMapper extends BaseMapper<GoblinNftExCode> { ...@@ -79,9 +80,18 @@ public interface GoblinNftExCodeMapper extends BaseMapper<GoblinNftExCode> {
/** /**
* 根据活动id获取可用的兑换码 * 根据活动id获取可用的兑换码
*
* @param activityId * @param activityId
* @return * @return
*/ */
List<GoblinNftExCode> selectCodeAvailableByActivityId(@Param("activityId") String activityId); List<GoblinNftExCode> selectCodeAvailableByActivityId(@Param("activityId") String activityId);
/**
* 批量修改
*
* @param codes
* @param adminUid
* @return
*/
int updateCodeAdminUids(@Param("codes") String codes, @Param("adminUid") String adminUid);
} }
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
<result column="status" property="status" jdbcType="VARCHAR"/> <result column="status" property="status" jdbcType="VARCHAR"/>
<result column="shelves_status" property="shelvesStatus" jdbcType="VARCHAR"/> <result column="shelves_status" property="shelvesStatus" jdbcType="VARCHAR"/>
<result column="sku_appear" property="skuAppear" jdbcType="VARCHAR"/> <result column="sku_appear" property="skuAppear" jdbcType="VARCHAR"/>
<result column="sku_canbuy" property="skuCanbuy" jdbcType="VARCHAR"/>
<result column="del_flg" property="delFlg" jdbcType="VARCHAR"/> <result column="del_flg" property="delFlg" jdbcType="VARCHAR"/>
<result column="soldout_status" property="soldoutStatus" jdbcType="VARCHAR"/> <result column="soldout_status" property="soldoutStatus" jdbcType="VARCHAR"/>
<result column="sale_start_time" property="saleStartTime" jdbcType="TIMESTAMP"/> <result column="sale_start_time" property="saleStartTime" jdbcType="TIMESTAMP"/>
...@@ -24,7 +25,7 @@ ...@@ -24,7 +25,7 @@
</select> </select>
<select id="selectBySkuIds" resultMap="BaseResult"> <select id="selectBySkuIds" resultMap="BaseResult">
select sku_id,name,sku_pic,hit_ratio,unbox,sku_type,status,shelves_status,sku_appear,del_flg,soldout_status,sale_start_time from goblin_goods_sku where select sku_id,name,sku_pic,hit_ratio,unbox,sku_type,status,shelves_status,sku_canbuy,sku_appear,del_flg,soldout_status,sale_start_time from goblin_goods_sku where
sku_id in sku_id in
<foreach collection="skuIds.split(',')" item="skuId" open="(" separator="," close=")"> <foreach collection="skuIds.split(',')" item="skuId" open="(" separator="," close=")">
#{skuId,jdbcType=VARCHAR} #{skuId,jdbcType=VARCHAR}
...@@ -32,7 +33,7 @@ ...@@ -32,7 +33,7 @@
</select> </select>
<select id="selectBySpuIds" resultMap="BaseResult"> <select id="selectBySpuIds" resultMap="BaseResult">
select spu_id,sku_id,hit_ratio,unbox,sku_type,status,shelves_status,sku_appear,del_flg,soldout_status,sale_start_time from goblin_goods_sku where select spu_id,sku_id,hit_ratio,unbox,sku_type,status,shelves_status,sku_appear,del_flg,sku_canbuy,soldout_status,sale_start_time from goblin_goods_sku where
spu_id in spu_id in
<foreach collection="spuIds.split(',')" item="spuId" open="(" separator="," close=")"> <foreach collection="spuIds.split(',')" item="spuId" open="(" separator="," close=")">
#{spuId,jdbcType=VARCHAR} #{spuId,jdbcType=VARCHAR}
......
...@@ -65,6 +65,17 @@ ...@@ -65,6 +65,17 @@
</set> </set>
where code_id = #{codeId} where code_id = #{codeId}
</update> </update>
<update id="updateCodeAdminUids">
update goblin_nft_ex_code
<set>
admin_uid = #{adminUid}
</set>
where code in
<foreach collection="codes.split(',')" item="code" open="(" separator="," close=")">
#{code}
</foreach>
</update>
<select id="selectGoblinNftCode" parameterType="com.liquidnet.service.goblin.entity.GoblinNftExCode" <select id="selectGoblinNftCode" parameterType="com.liquidnet.service.goblin.entity.GoblinNftExCode"
resultMap="BeseResult"> resultMap="BeseResult">
......
package com.liquidnet.service.consumer.kylin.receiver;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.mapper.GoblinNftExCodeMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
public class ConsumerGoblinPhoneCodeReceiver extends AbstractBizRedisReceiver{
@Autowired
private GoblinNftExCodeMapper goblinNftExCodeMapper;
@Value("${liquidnet.service.order.url}")
private String orderUrl;
@Override
protected boolean consumerMessageHandler(String msg) {
Boolean bol = false;
try{
JSONObject jsonObject = JSON.parseObject(msg);
String codestr = jsonObject.getString("codes");
String userIds = jsonObject.getString("userIds");
String adminUid = jsonObject.getString("adminUid");
List<String> codeList = Arrays.asList(codestr.split(","));
List<String> userIdList = Arrays.asList(userIds.split(","));
StringBuffer codes = new StringBuffer();
for (int i = 0; i < userIdList.size(); i++) {
MultiValueMap<String, String> params = new LinkedMultiValueMap();
params.add("code", codeList.get(i));
params.add("userId", userIdList.get(i));
MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString();
headers.add("Accept", "application/json;charset=UTF-8");
headers.add("Authorization", "Bearer " + CurrentUtil.getToken());
String post = HttpUtil.post(orderUrl + "/order/goblin/nft/airdrop", params, headers);
ResponseDto<Boolean> rsp = JsonUtils.fromJson(post, new TypeReference<ResponseDto<Boolean>>() {
});
if (rsp.isSuccess()) {
codes.append(codeList.get(i)).append(",");
}
}
if (StringUtil.isNotBlank(codes)){
codes.deleteCharAt(codes.length()-1);
}
goblinNftExCodeMapper.updateCodeAdminUids(codes.toString(),adminUid);
}catch (Exception e){
log.error("发送空投失败!");
}
return bol;
}
@Override
protected String getRedisStreamKey() {
return MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getGroup();
}
}
...@@ -56,9 +56,9 @@ public class GoblinNftExCodeController { ...@@ -56,9 +56,9 @@ public class GoblinNftExCodeController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@ApiOperation(value = "excel空投批量发送") @ApiOperation(value = "excel空投批量发送")
@PostMapping("addAirdrops/{activityId}") @PostMapping("addAirdrops")
public ResponseDto<Boolean> addAirdrops(MultipartFile file,@PathVariable("activityId")String activityId) { public ResponseDto<Boolean> addAirdrops(MultipartFile file,@RequestBody GoblinNftExCodeParam goblinNftExCodeParam) {
return iGoblinNftExCodeService.addAirdrops(file,activityId); return iGoblinNftExCodeService.addAirdrops(file,goblinNftExCodeParam);
} }
......
...@@ -5,12 +5,15 @@ import com.alibaba.excel.read.listener.PageReadListener; ...@@ -5,12 +5,15 @@ import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.AdamUserInfoDto; import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import com.liquidnet.service.adam.mapper.AdamUserMapper; import com.liquidnet.service.adam.mapper.AdamUserMapper;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.vo.CodeExcelVo; import com.liquidnet.service.goblin.dto.vo.CodeExcelVo;
import com.liquidnet.service.goblin.dto.vo.GoblinNftExCodeFetchExcelVo; import com.liquidnet.service.goblin.dto.vo.GoblinNftExCodeFetchExcelVo;
import com.liquidnet.service.goblin.dto.vo.GoblinNftExCodeVo; import com.liquidnet.service.goblin.dto.vo.GoblinNftExCodeVo;
...@@ -25,6 +28,7 @@ import com.liquidnet.service.goblin.param.GoblinNftExCodeParam; ...@@ -25,6 +28,7 @@ import com.liquidnet.service.goblin.param.GoblinNftExCodeParam;
import com.liquidnet.service.goblin.service.IGoblinNftExCodeService; import com.liquidnet.service.goblin.service.IGoblinNftExCodeService;
import com.liquidnet.service.platform.utils.GoblinRedisUtils; import com.liquidnet.service.platform.utils.GoblinRedisUtils;
import com.liquidnet.service.platform.utils.ObjectUtil; import com.liquidnet.service.platform.utils.ObjectUtil;
import com.liquidnet.service.platform.utils.QueueUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -41,6 +45,8 @@ import java.net.URLEncoder; ...@@ -41,6 +45,8 @@ import java.net.URLEncoder;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**
...@@ -64,6 +70,8 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -64,6 +70,8 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
private AdamUserMapper adamUserMapper; private AdamUserMapper adamUserMapper;
@Value("${liquidnet.service.order.url}") @Value("${liquidnet.service.order.url}")
private String orderUrl; private String orderUrl;
@Autowired
private QueueUtils queueUtils;
@Override @Override
public PageInfoVo selectCodePageList(GoblinNftExCodeParam goblinNftExCodeParam) { public PageInfoVo selectCodePageList(GoblinNftExCodeParam goblinNftExCodeParam) {
...@@ -232,7 +240,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -232,7 +240,7 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
return ResponseDto.failure(rsp.getMessage()); return ResponseDto.failure(rsp.getMessage());
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); // e.printStackTrace();
return ResponseDto.failure("发送公投失败!"); return ResponseDto.failure("发送公投失败!");
} }
} }
...@@ -296,8 +304,6 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -296,8 +304,6 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
break; break;
} }
} }
} }
} }
} }
...@@ -368,31 +374,71 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService { ...@@ -368,31 +374,71 @@ public class GoblinNftExCodeServiceImpl implements IGoblinNftExCodeService {
} }
@Override @Override
public ResponseDto<Boolean> addAirdrops(MultipartFile file, String activityId) { public ResponseDto<Boolean> addAirdrops(MultipartFile file, GoblinNftExCodeParam goblinNftExCodeParam) {
try{ try {
// 手机号集合 // 手机号集合
ArrayList<String> phones = CollectionUtil.arrayListString(); StringBuffer phonestr = new StringBuffer();
EasyExcel.read(file.getInputStream(), GoblinNftExCodeFetchExcelVo.class, new PageReadListener<GoblinNftExCodeFetchExcelVo>(dataList->{ EasyExcel.read(file.getInputStream(), GoblinNftExCodeFetchExcelVo.class, new PageReadListener<GoblinNftExCodeFetchExcelVo>(dataList -> {
for (GoblinNftExCodeFetchExcelVo data : dataList) { for (GoblinNftExCodeFetchExcelVo data : dataList) {
if (data.getPhone() == null) { if (data.getPhone() == null) {
continue; continue;
} }
phones.add(data.getPhone()); phonestr.append(data.getPhone()).append(",");
} }
})).sheet().doRead(); })).sheet().doRead();
if (StringUtil.isNotBlank(phonestr)) {
phonestr.deleteCharAt(phonestr.length() - 1);
}
// 根据手机号获取用户
List<AdamUserInfoDto> adamUserMappers = adamUserMapper.selectByPhones(phonestr.toString());
// 根据活动id获取可用兑换码 // 根据活动id获取可用兑换码
List<GoblinNftExCode> goblinNftExCodes = goblinNftExCodeMapper.selectCodeAvailableByActivityId(activityId); List<GoblinNftExCode> goblinNftExCodes = goblinNftExCodeMapper.selectCodeAvailableByActivityId(goblinNftExCodeParam.getActivityId());
if (goblinNftExCodes.size() < phones.size()){ if (goblinNftExCodes.size() < adamUserMappers.size()) {
return ResponseDto.failure("可用兑换码数量不足!"); return ResponseDto.failure("可用兑换码数量不足!");
} }
}catch (Exception e){ // 页条数
int pageSize = 2;
ArrayList<String> userIdList = CollectionUtil.arrayListString();
StringBuffer userIds = new StringBuffer();
int i = 1;
for (AdamUserInfoDto adamUserInfoDto : adamUserMappers) {
userIdList.add(adamUserInfoDto.getUid());
userIds.append(adamUserInfoDto.getUid()).append(",");
if (userIdList.size() == pageSize) {
StringBuffer codes = new StringBuffer();
PageHelper.startPage(i, pageSize, true);
List<GoblinNftExCode> goblinNftExCodeList = goblinNftExCodeMapper.selectCodeAvailableByActivityId(goblinNftExCodeParam.getActivityId());
for (GoblinNftExCode goblinNftExCode : goblinNftExCodeList) {
codes.append(goblinNftExCode.getCode()).append(",");
}
JSONObject jsonObject = new JSONObject();
codes.deleteCharAt(codes.length() - 1);
userIds.deleteCharAt(userIds.length() - 1);
jsonObject.put("codes", codes);
jsonObject.put("userIds", userIds);
jsonObject.put("adminUid",goblinNftExCodeParam.getAdminUid());
queueUtils.sendMssPhoneCodeRedis(MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getKey(), jsonObject.toJSONString());
userIdList.clear();
i++;
}
}
} catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
} }
public static void main(String[] args) {
}
/** /**
* 导出 * 导出
......
...@@ -230,6 +230,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -230,6 +230,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
// Map<String, Map<String, Object>> mapMap = new HashMap<>(); // Map<String, Map<String, Object>> mapMap = new HashMap<>();
// sku --> 概率/库存 // sku --> 概率/库存
Integer countStockNumber = 10;
HashMap<String, Map<String, Object>> mapMap = CollectionUtil.mapHashMap(); HashMap<String, Map<String, Object>> mapMap = CollectionUtil.mapHashMap();
for (String key : map.keySet()) { for (String key : map.keySet()) {
BigDecimal skuHitRatio = BigDecimal.valueOf(Double.valueOf(map.get(key).toString())); BigDecimal skuHitRatio = BigDecimal.valueOf(Double.valueOf(map.get(key).toString()));
...@@ -240,6 +241,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -240,6 +241,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
hitRatioCount = hitRatioCount.add(skuHitRatio); hitRatioCount = hitRatioCount.add(skuHitRatio);
objectMap.put("hitRatio", skuHitRatio); objectMap.put("hitRatio", skuHitRatio);
objectMap.put("stock", goblinRedisUtils.getSkuStock(key)); objectMap.put("stock", goblinRedisUtils.getSkuStock(key));
countStockNumber += goblinRedisUtils.getSkuStock(key);
mapMap.put(key, objectMap); mapMap.put(key, objectMap);
} }
...@@ -247,7 +249,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -247,7 +249,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
// sku ---> 库存 // sku ---> 库存
HashMap<String, Integer> stockMap = CollectionUtil.mapStringInteger(); HashMap<String, Integer> stockMap = CollectionUtil.mapStringInteger();
getStock(exStock, hitRatioCount, mapMap, stockMap); getStock(exStock, hitRatioCount, mapMap, stockMap,countStockNumber);
return stockMap; return stockMap;
} }
...@@ -259,19 +261,22 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -259,19 +261,22 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
Map<String, Map<String, Object>> mapMap = new HashMap<>(); Map<String, Map<String, Object>> mapMap = new HashMap<>();
Map<String, Object> objectMap = new HashMap<>(); Map<String, Object> objectMap = new HashMap<>();
objectMap.put("hitRatio", 33.33); objectMap.put("hitRatio", 20);
objectMap.put("stock", 5); objectMap.put("stock", 3);
mapMap.put("1", objectMap); mapMap.put("1", objectMap);
Map<String, Object> objectMap1 = new HashMap<>(); Map<String, Object> objectMap1 = new HashMap<>();
objectMap1.put("hitRatio", 33.33); objectMap1.put("hitRatio", 20);
objectMap1.put("stock", 100); objectMap1.put("stock", 10);
mapMap.put("2", objectMap1); mapMap.put("2", objectMap1);
Map<String, Object> objectMap2 = new HashMap<>(); Map<String, Object> objectMap2 = new HashMap<>();
objectMap2.put("hitRatio", 33.33); objectMap2.put("hitRatio", 20);
objectMap2.put("stock", 100); objectMap2.put("stock", 2);
mapMap.put("3", objectMap2); mapMap.put("3", objectMap2);
Map<String, Integer> stockMap = new HashMap<>(); Map<String, Integer> stockMap = new HashMap<>();
getStock(10, new BigDecimal(99.99), mapMap, stockMap); getStock(20, new BigDecimal(60), mapMap, stockMap,15);
for (String key : stockMap.keySet()) {
System.out.println("skuId" + key + "***********数量" + stockMap.get(key));
}
System.out.println("kkk"); System.out.println("kkk");
} }
...@@ -283,8 +288,8 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -283,8 +288,8 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
* @param mapMap * @param mapMap
* @return * @return
*/ */
private static void getStock(Integer exStock, BigDecimal hitRatioCount, Map<String, Map<String, Object>> mapMap, Map<String, Integer> stockMap) { private static void getStock(Integer exStock, BigDecimal hitRatioCount, Map<String, Map<String, Object>> mapMap, Map<String, Integer> stockMap,Integer countStockNumber) {
if (exStock <= 0) { if (exStock <= 0 || countStockNumber == 0) {
return; return;
} }
...@@ -306,6 +311,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -306,6 +311,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
if (subStock > Integer.valueOf(stock.toString())) { if (subStock > Integer.valueOf(stock.toString())) {
subNumber += Integer.valueOf(stock.toString()); subNumber += Integer.valueOf(stock.toString());
countStockNumber -= Integer.valueOf(stock.toString());
mapMap.get(key).put("stock", 0); mapMap.get(key).put("stock", 0);
if (stockMap.get(key) == null) { if (stockMap.get(key) == null) {
stockMap.put(key, Integer.valueOf(stock.toString())); stockMap.put(key, Integer.valueOf(stock.toString()));
...@@ -314,6 +320,8 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -314,6 +320,8 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
} }
} else { } else {
countStockNumber -= subStock;
mapMap.get(key).put("stock", Integer.valueOf(stock.toString()) - subStock);
subNumber += subStock; subNumber += subStock;
if (stockMap.get(key) == null) { if (stockMap.get(key) == null) {
stockMap.put(key, subStock); stockMap.put(key, subStock);
...@@ -356,7 +364,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService { ...@@ -356,7 +364,7 @@ public class GoblinNftExSkuServiceImpl implements IGoblinNftExSkuService {
hitRatioCount = hitRatioCount.subtract(new BigDecimal(hitRatio.toString())); hitRatioCount = hitRatioCount.subtract(new BigDecimal(hitRatio.toString()));
} }
} }
getStock(exStock, hitRatioCount, mapMap, stockMap); getStock(exStock, hitRatioCount, mapMap, stockMap,countStockNumber);
} }
} }
......
...@@ -12,7 +12,7 @@ import java.util.HashMap; ...@@ -12,7 +12,7 @@ import java.util.HashMap;
@Component @Component
public class QueueUtils { public class QueueUtils {
// @Autowired // @Autowired
// private RabbitTemplate rabbitTemplate; // private RabbitTemplate rabbitTemplate;
@Autowired @Autowired
RedisDataSourceUtil redisDataSourceUtil; RedisDataSourceUtil redisDataSourceUtil;
...@@ -64,4 +64,16 @@ public class QueueUtils { ...@@ -64,4 +64,16 @@ public class QueueUtils {
map.put(MQConst.QUEUE_MESSAGE_KEY, jsonMsg); map.put(MQConst.QUEUE_MESSAGE_KEY, jsonMsg);
redisDataSourceUtil.getRedisGoblinUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey)); redisDataSourceUtil.getRedisGoblinUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
} }
/**
* 发送消息 -REDIS
*
* @param
*/
public void sendMssPhoneCodeRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put(MQConst.QUEUE_MESSAGE_KEY, jsonMsg);
redisDataSourceUtil.getRedisGoblinUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
}
} }
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