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

Commit 01e5e047 authored by 胡佳晨's avatar 胡佳晨

正在下单 增加 指定用户可买逻辑

parent 2c2fc6a3
...@@ -111,7 +111,7 @@ public class GoblinRedisConst { ...@@ -111,7 +111,7 @@ public class GoblinRedisConst {
public static final String REDIS_GOBLIN_ORDER_MASTER = PREFIX.concat("order:masterCode:");//用户订单id列表 key:$masterCode public static final String REDIS_GOBLIN_ORDER_MASTER = PREFIX.concat("order:masterCode:");//用户订单id列表 key:$masterCode
public static final String REDIS_GOBLIN_ORDER_OFFCODE = PREFIX.concat("order:offCode:");//用户订单id列表 key:$wtrieOffCode public static final String REDIS_GOBLIN_ORDER_OFFCODE = PREFIX.concat("order:offCode:");//用户订单id列表 key:$wtrieOffCode
public static final String REDIS_GOBLIN_BACK_ORDER_ID = PREFIX.concat("order:backIds:");//用户订单下的退款订单id key:$orderId public static final String REDIS_GOBLIN_BACK_ORDER_ID = PREFIX.concat("order:backIds:");//用户订单下的退款订单id key:$orderId
public static final String REDIS_UN_BUY = PREFIX.concat("unBuy:");//用户订单下的退款订单id key:$skuId:$uid public static final String REDIS_CAN_BUY = PREFIX.concat("canBuy:");//用户订单下的退款订单id key:$skuId:$mobile
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* SKU剩余库存 * SKU剩余库存
......
...@@ -4,22 +4,17 @@ import com.alibaba.excel.EasyExcel; ...@@ -4,22 +4,17 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener; import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.fastjson.JSON; 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.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.consumer.goblin.dto.PhoneDto; import com.liquidnet.service.consumer.goblin.dto.PhoneDto;
import com.liquidnet.service.consumer.goblin.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;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord; import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener; import org.springframework.data.redis.stream.StreamListener;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.util.HashMap;
@Slf4j @Slf4j
public abstract class AbstractXlsRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> { public abstract class AbstractXlsRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
...@@ -59,7 +54,7 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String, ...@@ -59,7 +54,7 @@ public abstract class AbstractXlsRedisReceiver implements StreamListener<String,
if(data.getMobile()==null){ if(data.getMobile()==null){
continue; continue;
} }
String redisKey = GoblinRedisConst.REDIS_UN_BUY.concat(skuId + ":").concat(data.getMobile()); String redisKey = GoblinRedisConst.REDIS_CAN_BUY.concat(skuId + ":").concat(data.getMobile());
if (type.equals(1)) {//添加 if (type.equals(1)) {//添加
log.debug("添加 读取到一条数据{}", JSON.toJSONString(data)); log.debug("添加 读取到一条数据{}", JSON.toJSONString(data));
redisUtil.set(redisKey, 0); redisUtil.set(redisKey, 0);
......
...@@ -127,6 +127,11 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -127,6 +127,11 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
if (!res1.equals("")) { if (!res1.equals("")) {
throw new Exception("已超出限购数量"); throw new Exception("已超出限购数量");
} }
//权限限购
Boolean res2 = orderUtils.judgeOrderRose(isMember, skuId, StringUtils.defaultString(((String) CurrentUtil.getTokenClaims().get("mobile")), ""), Integer.parseInt(skuVo.getBuyFactor()));
if (!res2) {
throw new Exception("无权购买");
}
} }
int surplusGeneral = redisUtils.decrSkuStock(pre, skuId, number); int surplusGeneral = redisUtils.decrSkuStock(pre, skuId, number);
skuAndPreListAndNumber.add(skuId + "," + pre + "," + number); skuAndPreListAndNumber.add(skuId + "," + pre + "," + number);
......
...@@ -10,6 +10,7 @@ import com.liquidnet.service.adam.dto.vo.AdamRscPolymer01Vo; ...@@ -10,6 +10,7 @@ import com.liquidnet.service.adam.dto.vo.AdamRscPolymer01Vo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.param.BackCouponParam; import com.liquidnet.service.candy.param.BackCouponParam;
import com.liquidnet.service.candy.vo.CandyUseResultVo; import com.liquidnet.service.candy.vo.CandyUseResultVo;
import com.sun.org.apache.xpath.internal.operations.Bool;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -56,6 +57,7 @@ public class GoblinOrderUtils { ...@@ -56,6 +57,7 @@ public class GoblinOrderUtils {
} }
} }
//判断 数量限购
public String judgeOrderLimit(String uid, String skuId, int number, int limitCount) { public String judgeOrderLimit(String uid, String skuId, int number, int limitCount) {
int buyCount = redisUtils.getSkuCountByUid(uid, skuId); int buyCount = redisUtils.getSkuCountByUid(uid, skuId);
if (buyCount + number > limitCount) { if (buyCount + number > limitCount) {
...@@ -66,6 +68,23 @@ public class GoblinOrderUtils { ...@@ -66,6 +68,23 @@ public class GoblinOrderUtils {
} }
} }
//判断指定人群购买
public Boolean judgeOrderRose(Boolean isMember, String skuId, String mobile, int buyFactor) {
Boolean result = false;
switch (buyFactor) {
case 0:
result = true;
break;
case 1:
result = isMember;
break;
case 2:
result = redisUtils.getSkuCanBuyByUid(mobile, skuId);
break;
}
return result;
}
/** /**
* 使用优惠券 * 使用优惠券
* *
...@@ -88,7 +107,7 @@ public class GoblinOrderUtils { ...@@ -88,7 +107,7 @@ public class GoblinOrderUtils {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString(); MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken()); header.add("Authorization", "Bearer " + CurrentUtil.getToken());
header.add("Accept", "application/json;charset=UTF-8"); header.add("Accept", "application/json;charset=UTF-8");
log.debug("url="+candyUrl + "/candy-coupon/use"); log.debug("url=" + candyUrl + "/candy-coupon/use");
String returnData = HttpUtil.post(candyUrl + "/candy-coupon/use", params, header); String returnData = HttpUtil.post(candyUrl + "/candy-coupon/use", params, header);
ResponseDto<CandyUseResultVo> innerReturnVo = JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<CandyUseResultVo>>() { ResponseDto<CandyUseResultVo> innerReturnVo = JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<CandyUseResultVo>>() {
}); });
......
...@@ -610,6 +610,12 @@ public class GoblinRedisUtils { ...@@ -610,6 +610,12 @@ public class GoblinRedisUtils {
} }
} }
//获取 用户是否可购买
public boolean getSkuCanBuyByUid(String mobile, String skuId) {
String redisKey = GoblinRedisConst.REDIS_CAN_BUY.concat(skuId + ":").concat(mobile);
return redisUtil.hasKey(redisKey);
}
// 增加 用户sku购买个数 // 增加 用户sku购买个数
public int incrSkuCountByUid(String uid, String skuId, int number) { public int incrSkuCountByUid(String uid, String skuId, int number) {
String redisKey = GoblinRedisConst.REDIS_GOBLIN_BUY_COUNT.concat(uid + ":skuId:" + skuId); String redisKey = GoblinRedisConst.REDIS_GOBLIN_BUY_COUNT.concat(uid + ":skuId:" + skuId);
......
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