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

Commit 2fe25219 authored by 胡佳晨's avatar 胡佳晨

下单 实名判断修改

parent cd2c7cc8
......@@ -142,8 +142,10 @@ public class ImportServiceImpl implements IImportService {
// 获取限购 实名
int ticketLimit = ticketData.getLimitCount();//普通票种限购
int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购
int ticketIdCount = ticketData.getIdCount();//实名票种限购
int performanceLimit = performanceData.getLimitCount();//普通演出限购
int performanceMemberLimit = performanceData.getLimitCountMember();//会员演出限购
int performanceMemberLimit = 1;//会员演出限购
int performanceIdCount = performanceData.getIdCount();//实名演出限购
int isTrueName = ticketData.getIsTrueName();//是否演出实名
Integer isStudent = ticketData.getIsStudent();
String ticketType = "";
......@@ -184,7 +186,7 @@ public class ImportServiceImpl implements IImportService {
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if (isTrueName == 1) {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, enterIdCode, performancesId, ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, 0, isTrueName);
String res1 = orderUtils.judgeOrderLimit(uid, enterIdCode, performancesId, ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, 0, isTrueName);
if (!res1.equals("")) {
orderOutLineVo.setReason(res1);
vos.add(orderOutLineVo);
......@@ -192,7 +194,7 @@ public class ImportServiceImpl implements IImportService {
continue;
}
} else {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", performancesId, ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, number, number, 0, isTrueName);
String res1 = orderUtils.judgeOrderLimit(uid, "", performancesId, ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, 0, isTrueName);
if (!res1.equals("")) {
orderOutLineVo.setReason(res1);
vos.add(orderOutLineVo);
......
......@@ -271,43 +271,36 @@ public class DataUtils {
* @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表
*/
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
String redisKeyUid;
String redisKeyIdCard;
String performanceIdKeyIdCard="";
String ticketIdKeyIdCard="";
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
// KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
// ArrayList<String> ticketList = new ArrayList<>();
// for (int y = 0; y < timeItem.getTicketList().size(); y++) {
// KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
// if (ticketItem.getType() == 1) {
// ticketList.add(ticketItem.getTicketsId());
// }
// if (ticketItem.getTicketsId().equals(ticketId)) {
// useTime = ticketItem.getUseStart();
// }
// }
// allTicketId.put(timeItem.getUseStart(), ticketList);
// }
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
// String ticketUseTimeKey = ticketIdKey + ":" + KylinRedisConst.USE_TIME;
// redisDataSourceUtil.getRedisKylinUtil().set(ticketUseTimeKey, useTime);
redisKeyUid = KylinRedisConst.USERID_BUY_INFO + userId;
redisKeyIdCard = KylinRedisConst.IDCARD_BUY_INFO + idCard;
String performanceIdKeyUid = redisKeyUid + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKeyUid = redisKeyUid + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
}
if (buyCount > 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKey, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKey, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyUid, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyUid, buyCount);
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount);
}
} else {
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKey, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKey, Math.abs(buyCount));
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyIdCard, Math.abs(buyCount));
}
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyUid, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyUid, Math.abs(buyCount));
}
}
......
......@@ -18,93 +18,101 @@ public class OrderUtils {
private DataUtils dataUtils;
public String judgeOrderLimit(
int type,
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceLimitCount,
int performanceMemberLimitCount,
int performanceLimitIdCard,
int ticketLimitCount,
int ticketMemberLimitCount,
int performanceBuyCount,
int ticketBuyCount,
int ticketLimitIdCard,
int memberType,
int isTrueName
) {
Integer[] integers;
if (101 == type) {
integers = festivalOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} else {
integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
}
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1], isTrueName);
Integer[] integers = orderLimit(userId, idCard, performanceId, ticketId, isTrueName);
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, performanceLimitIdCard,
ticketLimitCount, ticketMemberLimitCount,ticketLimitIdCard,
memberType, integers[0], integers[1], integers[2], integers[3], isTrueName);
}
public Integer[] roadShowOrderLimit(
public Integer[] orderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount += dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount += dataUtils.getIdCardTBuyCount(idCard, ticketId);
} else {//非实名
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = new Integer[2];
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
return array;
}
int performanceBuyCountUid = 0;
int ticketBuyCountUid = 0;
int performanceBuyCountIdCard = 0;
int ticketBuyCountIdCard = 0;
public Integer[] festivalOrderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount += dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount += dataUtils.getIdCardTBuyCount(idCard, ticketId);
performanceBuyCountIdCard = dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCountIdCard = dataUtils.getIdCardTBuyCount(idCard, ticketId);
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
} else {//非实名
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = new Integer[2];
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
Integer[] array = new Integer[4];
array[0] = performanceBuyCountUid;
array[1] = ticketBuyCountUid;
array[2] = performanceBuyCountIdCard;
array[3] = ticketBuyCountIdCard;
return array;
}
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount, int isTrueName) {
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int performanceLimitIdCard,
int ticketLimitCount, int ticketMemberLimitCount, int ticketLimitIdCard, int memberType,
int performanceBuyCountUid, int ticketBuyCountUid, int performanceBuyCountIdCard, int ticketBuyCountIdCard, int isTrueName) {
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
if(isTrueName==1){
if (performanceBuyCountIdCard > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "实名制演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountIdCard > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "实名制票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
}else{
if (performanceBuyCountUid > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "本场演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "该票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
if (ticketBuyCount > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount > performanceLimitCount && performanceLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
if(isTrueName==1){
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (performanceBuyCountIdCard > performanceLimitIdCard && performanceLimitIdCard != 0) {
return "实名制演出限购" + performanceLimitIdCard + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountIdCard > ticketLimitIdCard && ticketLimitIdCard != 0) {
return "实名制票种限购" + ticketLimitIdCard + "张,已超出";//超过演出维度购买量
}
}else{
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCount > ticketLimitCount && ticketLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketLimitCount + "张,已超出";//超过票维度购买量
}
}
return "";
}
/**
* @param userId 用户id
* @param type 1新增 2修改
......
package com.liquidnet.service.consumer.kylin.receiver;
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.service.base.OrderCloseMapping;
import com.liquidnet.service.consumer.kylin.utils.KylinUtils;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.stream.StreamListener;
import java.util.HashMap;
@Slf4j
public abstract class AbstractSqlOptOrderCloseRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisUtil redisUtil;
@Autowired
private KylinUtils kylinUtils;
@Override
public void onMessage(MapRecord<String, String, String> message) {
String redisStreamKey = this.getRedisStreamKey();
log.debug("CONSUMER MSG[streamKey:{},messageId:{},stream:{},body:{}]", redisStreamKey, message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerSqlOperationOrderCloseHandler(message.getValue().get("message"));
log.info("CONSUMER MSG RESULT:{} ==> [{}]MESSAGE_ID:{}", result, redisStreamKey, message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
} catch (Exception e) {
log.error("#CONSUMER MSG EX_ACK ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
}
try {
stringRedisTemplate.opsForStream().delete(redisStreamKey, message.getId());
} catch (Exception e) {
log.error("#CONSUMER MSG EX_DEL ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
}
}
private boolean consumerSqlOperationOrderCloseHandler(String msg) {
boolean aBoolean = false;
try {
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class);
for (int x = 0; x < mqMessage.getOrderTicketIds().size(); x++) {
String t = mqMessage.getOrderTicketIds().get(x);
String orderTicketId = t.split(",")[0];
String uid = t.split(",")[1];
KylinOrderTicketVo vo = kylinUtils.getOrderTicketVo(orderTicketId);
vo.setStatus(2);
redisUtil.set("kylin:order:id:" + orderTicketId, vo);
kylinUtils.resetOrderListVo(uid, 2, orderTicketId, vo);
// redis 限购
for (int i = 0; i < vo.getEntitiesVoList().size(); i++) {
KylinOrderTicketEntitiesVo items = vo.getEntitiesVoList().get(i);
kylinUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
}
}
aBoolean = true;
} catch (Exception e) {
log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), msg, e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
//package com.liquidnet.service.consumer.kylin.receiver;
//
//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.service.base.OrderCloseMapping;
//import com.liquidnet.service.consumer.kylin.utils.KylinUtils;
//import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
//import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//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.stream.StreamListener;
//
//import java.util.HashMap;
//
//@Slf4j
//public abstract class AbstractSqlOptOrderCloseRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
// @Autowired
// StringRedisTemplate stringRedisTemplate;
// @Autowired
// private RedisUtil redisUtil;
// @Autowired
// private KylinUtils kylinUtils;
//
// @Override
// public void onMessage(MapRecord<String, String, String> message) {
// String redisStreamKey = this.getRedisStreamKey();
// log.debug("CONSUMER MSG[streamKey:{},messageId:{},stream:{},body:{}]", redisStreamKey, message.getId(), message.getStream(), message.getValue());
// boolean result = this.consumerSqlOperationOrderCloseHandler(message.getValue().get("message"));
// log.info("CONSUMER MSG RESULT:{} ==> [{}]MESSAGE_ID:{}", result, redisStreamKey, message.getId());
//
// try {
// stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
// } catch (Exception e) {
// log.error("#CONSUMER MSG EX_ACK ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
// }
// try {
// stringRedisTemplate.opsForStream().delete(redisStreamKey, message.getId());
// } catch (Exception e) {
// log.error("#CONSUMER MSG EX_DEL ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
// }
// }
//
// private boolean consumerSqlOperationOrderCloseHandler(String msg) {
// boolean aBoolean = false;
// try {
// OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class);
//
// for (int x = 0; x < mqMessage.getOrderTicketIds().size(); x++) {
// String t = mqMessage.getOrderTicketIds().get(x);
// String orderTicketId = t.split(",")[0];
// String uid = t.split(",")[1];
// KylinOrderTicketVo vo = kylinUtils.getOrderTicketVo(orderTicketId);
// vo.setStatus(2);
// redisUtil.set("kylin:order:id:" + orderTicketId, vo);
//
// kylinUtils.resetOrderListVo(uid, 2, orderTicketId, vo);
// // redis 限购
// for (int i = 0; i < vo.getEntitiesVoList().size(); i++) {
// KylinOrderTicketEntitiesVo items = vo.getEntitiesVoList().get(i);
// kylinUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
// }
// }
//
// aBoolean = true;
// } catch (Exception e) {
// log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), msg, e);
// } finally {
// if (!aBoolean) {
// HashMap<String, String> map = CollectionUtil.mapStringString();
// map.put("message", msg);
// stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
// }
// }
// return aBoolean;
// }
//
// protected abstract String getRedisStreamKey();
//
// protected abstract String getRedisStreamGroup();
//}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinSqlOptOrderCloseRedisReceiver extends AbstractSqlOptOrderCloseRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_ORDER_CLOSE.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_ORDER_CLOSE.getGroup();
}
}
//package com.liquidnet.service.consumer.kylin.receiver;
//
//import com.liquidnet.service.base.constant.MQConst;
//import org.springframework.stereotype.Component;
//
//@Component
//public class ConsumerKylinSqlOptOrderCloseRedisReceiver extends AbstractSqlOptOrderCloseRedisReceiver {
// @Override
// protected String getRedisStreamKey() {
// return MQConst.KylinQueue.SQL_ORDER_CLOSE.getKey();
// }
//
// @Override
// protected String getRedisStreamGroup() {
// return MQConst.KylinQueue.SQL_ORDER_CLOSE.getGroup();
// }
//}
......@@ -83,45 +83,26 @@ public class KylinUtils {
}
}
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
// KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
// ArrayList<String> ticketList = new ArrayList<>();
// for (int y = 0; y < timeItem.getTicketList().size(); y++) {
// KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
// if (ticketItem.getType() == 1) {
// ticketList.add(ticketItem.getTicketsId());
// public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
// String redisKey;
// int isTrueName = getPerformanceIsTrueName(performanceId);
// if (0 == isTrueName) {
// redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
// } else {
// redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
// }
// if (ticketItem.getTicketsId().equals(ticketId)) {
// useTime = ticketItem.getUseStart();
//
// String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
// String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
//
// if (buyCount > 0) {
// redisUtil.incr(ticketIdKey, buyCount);
// redisUtil.incr(performanceIdKey, buyCount);
// } else {
// redisUtil.decr(ticketIdKey, Math.abs(buyCount));
// redisUtil.decr(performanceIdKey, Math.abs(buyCount));
// }
// }
// allTicketId.put(timeItem.getUseStart(), ticketList);
// }
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
// String ticketUseTimeKey = ticketIdKey + ":" + KylinRedisConst.USE_TIME;
// redisUtil.set(ticketUseTimeKey, useTime);
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
}
}
/**
* 根据演出id 获取 演出vo 详情
......
......@@ -138,21 +138,36 @@ public class KylinOrderUtils {
* @param buyCount
*/
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
String redisKeyUid;
String redisKeyIdCard;
String performanceIdKeyIdCard="";
String ticketIdKeyIdCard="";
int isTrueName = getPerformanceIsTrueName(performanceId);
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
redisKeyUid = KylinRedisConst.USERID_BUY_INFO + userId;
redisKeyIdCard = KylinRedisConst.IDCARD_BUY_INFO + idCard;
String performanceIdKeyUid = redisKeyUid + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKeyUid = redisKeyUid + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
redisUtil.incr(ticketIdKeyUid, buyCount);
redisUtil.incr(performanceIdKeyUid, buyCount);
if (isTrueName != 0) {
redisUtil.incr(ticketIdKeyIdCard, buyCount);
redisUtil.incr(performanceIdKeyIdCard, buyCount);
}
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
if (isTrueName != 0) {
redisUtil.decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyIdCard, Math.abs(buyCount));
}
redisUtil.decr(ticketIdKeyUid, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyUid, Math.abs(buyCount));
}
}
......
......@@ -83,46 +83,6 @@ public class KylinUtils {
}
}
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
// KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
// ArrayList<String> ticketList = new ArrayList<>();
// for (int y = 0; y < timeItem.getTicketList().size(); y++) {
// KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
// if (ticketItem.getType() == 1) {
// ticketList.add(ticketItem.getTicketsId());
// }
// if (ticketItem.getTicketsId().equals(ticketId)) {
// useTime = ticketItem.getUseStart();
// }
// }
// allTicketId.put(timeItem.getUseStart(), ticketList);
// }
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
// String ticketUseTimeKey = ticketIdKey + ":" + KylinRedisConst.USE_TIME;
// redisUtil.set(ticketUseTimeKey, useTime);
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
}
}
/**
* 根据演出id 获取 演出vo 详情
*
......
......@@ -645,8 +645,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
// 获取限购 实名
int ticketLimit = ticketData.getLimitCount();//普通票种限购
int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购
int ticketIdCount = ticketData.getIdCount();//实名票种限购
int performanceLimit = performanceData.getLimitCount();//普通演出限购
int performanceMemberLimit = performanceData.getLimitCountMember();//会员演出限购
int performanceMemberLimit = 1;//会员演出限购
int performanceIdCount = performanceData.getIdCount();//实名演出限购
int isTrueName = ticketData.getIsTrueName();//是否演出实名
//实名判断
......@@ -681,13 +683,13 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if (entersVoList.size() > 0) {
for (int i = 0; i < entersVoList.size(); i++) {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, 0, isTrueName);
String res1 = orderUtils.judgeOrderLimit(uid, entersVoList.get(i).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, 0, isTrueName);
if (!res1.equals("")) {
return ResponseDto.failure(res1);//乱七八糟异常
}
}
} else {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, orderTicketVo.getNumber(), orderTicketVo.getNumber(), 0, isTrueName);
String res1 = orderUtils.judgeOrderLimit(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, 0, isTrueName);
if (!res1.equals("")) {
return ResponseDto.failure(res1);//乱七八糟异常
}
......
......@@ -613,25 +613,36 @@ public class DataUtils {
}
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
String redisKeyUid;
String redisKeyIdCard;
String performanceIdKeyIdCard="";
String ticketIdKeyIdCard="";
int isTrueName = getPerformanceIsTrueName(performanceId);
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
redisKeyUid = KylinRedisConst.USERID_BUY_INFO + userId;
redisKeyIdCard = KylinRedisConst.IDCARD_BUY_INFO + idCard;
String performanceIdKeyUid = redisKeyUid + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKeyUid = redisKeyUid + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
redisUtil.incr(ticketIdKeyUid, buyCount);
redisUtil.incr(performanceIdKeyUid, buyCount);
if (isTrueName != 0) {
redisUtil.incr(ticketIdKeyIdCard, buyCount);
redisUtil.incr(performanceIdKeyIdCard, buyCount);
}
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
if (isTrueName != 0) {
redisUtil.decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyIdCard, Math.abs(buyCount));
}
redisUtil.decr(ticketIdKeyUid, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyUid, Math.abs(buyCount));
}
}
......
......@@ -31,93 +31,101 @@ public class OrderUtils {
public String judgeOrderLimit(
int type,
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceLimitCount,
int performanceMemberLimitCount,
int performanceLimitIdCard,
int ticketLimitCount,
int ticketMemberLimitCount,
int performanceBuyCount,
int ticketBuyCount,
int ticketLimitIdCard,
int memberType,
int isTrueName
) {
Integer[] integers;
if (101 == type) {
integers = festivalOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} else {
integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
}
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1], isTrueName);
Integer[] integers = orderLimit(userId, idCard, performanceId, ticketId, isTrueName);
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, performanceLimitIdCard,
ticketLimitCount, ticketMemberLimitCount,ticketLimitIdCard,
memberType, integers[0], integers[1], integers[2], integers[3], isTrueName);
}
public Integer[] roadShowOrderLimit(
public Integer[] orderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount += dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount += dataUtils.getIdCardTBuyCount(idCard, ticketId);
} else {//非实名
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = new Integer[2];
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
return array;
}
int performanceBuyCountUid = 0;
int ticketBuyCountUid = 0;
int performanceBuyCountIdCard = 0;
int ticketBuyCountIdCard = 0;
public Integer[] festivalOrderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount += dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount += dataUtils.getIdCardTBuyCount(idCard, ticketId);
performanceBuyCountIdCard = dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCountIdCard = dataUtils.getIdCardTBuyCount(idCard, ticketId);
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
} else {//非实名
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = new Integer[2];
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
Integer[] array = new Integer[4];
array[0] = performanceBuyCountUid;
array[1] = ticketBuyCountUid;
array[2] = performanceBuyCountIdCard;
array[3] = ticketBuyCountIdCard;
return array;
}
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount, int isTrueName) {
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int performanceLimitIdCard,
int ticketLimitCount, int ticketMemberLimitCount, int ticketLimitIdCard, int memberType,
int performanceBuyCountUid, int ticketBuyCountUid, int performanceBuyCountIdCard, int ticketBuyCountIdCard, int isTrueName) {
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
if(isTrueName==1){
if (performanceBuyCountIdCard > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "实名制演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountIdCard > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "实名制票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
}else{
if (performanceBuyCountUid > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "本场演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "该票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
if (ticketBuyCount > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount > performanceLimitCount && performanceLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
if(isTrueName==1){
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (performanceBuyCountIdCard > performanceLimitIdCard && performanceLimitIdCard != 0) {
return "实名制演出限购" + performanceLimitIdCard + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountIdCard > ticketLimitIdCard && ticketLimitIdCard != 0) {
return "实名制票种限购" + ticketLimitIdCard + "张,已超出";//超过演出维度购买量
}
}else{
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCount > ticketLimitCount && ticketLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketLimitCount + "张,已超出";//超过票维度购买量
}
}
return "";
}
/**
* @param userId 用户id
* @param type 1新增 2修改
......
......@@ -237,9 +237,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
// 获取限购 实名
int ticketLimit = ticketData.getLimitCount();//普通票种限购
int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购
int ticketIdCount = ticketData.getIdCount();//实名票种限购
int performanceLimit = performanceData.getLimitCount();//普通演出限购
// int performanceMemberLimit = performanceData.getLimitCountMember();//会员演出限购
int performanceMemberLimit = 1;//会员演出限购
int performanceIdCount = performanceData.getIdCount();//实名演出限购
int isTrueName = ticketData.getIsTrueName();//是否演出实名
if (!canBuyStatus.contains(performanceData.getAppStatus())) {
......@@ -359,7 +360,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (entersVoList.size() > 0) {
for (int i = 0; i < entersVoList.size(); i++) {
dataUtils.changeBuyInfo(uid, entersVoList.get(i).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), 1);
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, memberType, isTrueName);
String res1 = orderUtils.judgeOrderLimit(uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, memberType, isTrueName);
if (!res1.equals("")) {
for (int x = 0; x <= i; x++) {
dataUtils.changeBuyInfo(uid, entersVoList.get(x).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), -1);
......@@ -371,7 +372,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
} else {
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getNumber());
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, payOrderParam.getNumber(), payOrderParam.getNumber(), memberType, isTrueName);
String res1 = orderUtils.judgeOrderLimit(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, memberType, isTrueName);
if (!res1.equals("")) {
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), -payOrderParam.getNumber());
orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber());
......
......@@ -123,44 +123,38 @@ public class DataUtils {
* @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表
*/
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
String redisKeyUid;
String redisKeyIdCard;
String performanceIdKeyIdCard="";
String ticketIdKeyIdCard="";
int isTrueName = getPerformanceIsTrueName(performanceId);
// String useTime = "";
// HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
// for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
// KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
// ArrayList<String> ticketList = ObjectUtil.cloneArrayListString();
// for (int y = 0; y < timeItem.getTicketList().size(); y++) {
// KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
// if (ticketItem.getType() == 1) {
// ticketList.add(ticketItem.getTicketsId());
// }
// if (ticketItem.getTicketsId().equals(ticketId)) {
// useTime = ticketItem.getUseStart();
// }
// }
// allTicketId.put(timeItem.getUseStart(), ticketList);
// }
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
redisKeyUid = KylinRedisConst.USERID_BUY_INFO + userId;
redisKeyIdCard = KylinRedisConst.IDCARD_BUY_INFO + idCard;
String performanceIdKeyUid = redisKeyUid + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKeyUid = redisKeyUid + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
// String ticketUseTimeKey = ticketIdKey + ":" + KylinRedisConst.USE_TIME;
// redisUtil.set(ticketUseTimeKey, useTime);
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
redisUtil.incr(ticketIdKeyUid, buyCount);
redisUtil.incr(performanceIdKeyUid, buyCount);
if (isTrueName != 0) {
redisUtil.incr(ticketIdKeyIdCard, buyCount);
redisUtil.incr(performanceIdKeyIdCard, buyCount);
}
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
if (isTrueName != 0) {
redisUtil.decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyIdCard, Math.abs(buyCount));
}
redisUtil.decr(ticketIdKeyUid, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyUid, Math.abs(buyCount));
}
}
......
......@@ -44,98 +44,109 @@ public class OrderUtils {
private String candyUrl;
@Value("${liquidnet.service.smile.url}")
private String smile;
@Value("${liquidnet.service.stone.url}")
private String stoneUrl;
public String judgeOrderLimit(
int type,
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceLimitCount,
int performanceMemberLimitCount,
int performanceLimitIdCard,
int ticketLimitCount,
int ticketMemberLimitCount,
int performanceBuyCount,
int ticketBuyCount,
int ticketLimitIdCard,
int memberType,
int isTrueName
) {
Integer[] integers;
if (101 == type) {
integers = festivalOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} else {
integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
}
log.debug("演出购买数量=" + integers[0]);
log.debug("票种购买数量=" + integers[1]);
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1], isTrueName);
Integer[] integers = orderLimit(userId, idCard, performanceId, ticketId, isTrueName);
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, performanceLimitIdCard,
ticketLimitCount, ticketMemberLimitCount,ticketLimitIdCard,
memberType, integers[0], integers[1], integers[2], integers[3], isTrueName);
}
public Integer[] roadShowOrderLimit(
public Integer[] orderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount = dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount = dataUtils.getIdCardTBuyCount(idCard, ticketId);
} else {//非实名
performanceBuyCount = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount = dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = ObjectUtil.cloneInteger2Array();
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
return array;
}
int performanceBuyCountUid = 0;
int ticketBuyCountUid = 0;
int performanceBuyCountIdCard = 0;
int ticketBuyCountIdCard = 0;
public Integer[] festivalOrderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount = dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount = dataUtils.getIdCardTBuyCount(idCard, ticketId);
performanceBuyCountIdCard = dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCountIdCard = dataUtils.getIdCardTBuyCount(idCard, ticketId);
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
} else {//非实名
performanceBuyCount = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount = dataUtils.getUserTBuyCount(userId, ticketId);
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = ObjectUtil.cloneInteger2Array();
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
Integer[] array = new Integer[4];
array[0] = performanceBuyCountUid;
array[1] = ticketBuyCountUid;
array[2] = performanceBuyCountIdCard;
array[3] = ticketBuyCountIdCard;
return array;
}
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount, int isTrueName) {
log.debug("会员限购演出=" + performanceMemberLimitCount);
log.debug("限购演出=" + performanceLimitCount);
log.debug("会员限购票种=" + ticketMemberLimitCount);
log.debug("限购票种=" + ticketLimitCount);
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int performanceLimitIdCard,
int ticketLimitCount, int ticketMemberLimitCount, int ticketLimitIdCard, int memberType,
int performanceBuyCountUid, int ticketBuyCountUid, int performanceBuyCountIdCard, int ticketBuyCountIdCard, int isTrueName) {
// log.debug("会员限购演出=" + performanceMemberLimitCount);
// log.debug("限购演出=" + performanceLimitCount);
// log.debug("实名限购演出=" + performanceLimitIdCard);
// log.debug("会员限购票种=" + ticketMemberLimitCount);
// log.debug("限购票种=" + ticketLimitCount);
// log.debug("实名限购票种=" + ticketLimitIdCard);
log.debug("演出数量=" + performanceBuyCountUid);
log.debug("演出实名数量=" + performanceBuyCountIdCard);
log.debug("票种数量=" + ticketBuyCountUid);
log.debug("票种实名数量=" + ticketBuyCountIdCard);
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
if(isTrueName==1){
if (performanceBuyCountIdCard > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "实名制演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountIdCard > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "实名制票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
}else{
if (performanceBuyCountUid > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "本场演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "该票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
if (ticketBuyCount > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount > performanceLimitCount && performanceLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
if(isTrueName==1){
if (performanceBuyCountIdCard > performanceLimitIdCard && performanceLimitIdCard != 0) {
return "实名制演出限购" + performanceLimitIdCard + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountIdCard > ticketLimitIdCard && ticketLimitIdCard != 0) {
return "实名制票种限购" + ticketLimitIdCard + "张,已超出";//超过演出维度购买量
}
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
}else{
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCount > ticketLimitCount && ticketLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketLimitCount + "张,已超出";//超过票维度购买量
}
}
return "";
......
......@@ -155,13 +155,13 @@ public class DataUtils {
public List<KylinOrderListVo> getOrderList(String userId) {
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(KylinRedisConst.ORDER_LIST + userId);
if (obj!=null) {
return (List<KylinOrderListVo>)obj;
if (obj != null) {
return (List<KylinOrderListVo>) obj;
} else {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
for (KylinOrderListVo item : voList) {
item.setStatus(item.getStatus());
}
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.ORDER_LIST + userId, voList);
......@@ -175,8 +175,8 @@ public class DataUtils {
* @param performanceId
* @param isTrueName
*/
public void setPerformanceIsTrueName(String performanceId,int isTrueName) {
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId,isTrueName);
public void setPerformanceIsTrueName(String performanceId, int isTrueName) {
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId, isTrueName);
}
/**
......@@ -187,8 +187,8 @@ public class DataUtils {
*/
public KylinOrderTicketVo getOrderTicketVo(String orderId) {
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(KylinRedisConst.ORDER + orderId);
if (obj!=null) {
return (KylinOrderTicketVo)obj;
if (obj != null) {
return (KylinOrderTicketVo) obj;
} else {
KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
......@@ -228,7 +228,6 @@ public class DataUtils {
}
public void updatePerformanceMongo(String performanceIds, KylinPerformanceVo paramVo) {
//查询 mysql 数据
KylinPerformanceVo vo;
......@@ -273,29 +272,38 @@ public class DataUtils {
* @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表
*/
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
String redisKeyUid;
String redisKeyIdCard;
String performanceIdKeyIdCard="";
String ticketIdKeyIdCard="";
int isTrueName = getPerformanceIsTrueName(performanceId);
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
redisKeyUid = KylinRedisConst.USERID_BUY_INFO + userId;
redisKeyIdCard = KylinRedisConst.IDCARD_BUY_INFO + idCard;
String performanceIdKeyUid = redisKeyUid + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKeyUid = redisKeyUid + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (buyCount > 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKey, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKey, buyCount);
}else{
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKey, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKey, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyUid, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyUid, buyCount);
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount);
}
} else {
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyIdCard, Math.abs(buyCount));
}
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyUid, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyUid, Math.abs(buyCount));
}
}
// 获取 用户维度 演出购买数量
......@@ -351,8 +359,8 @@ public class DataUtils {
*/
public KylinPerformanceVo getPerformanceVo(String performanceId) {
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(KylinRedisConst.PERFORMANCES + performanceId);
if (obj!=null) {
return (KylinPerformanceVo)obj;
if (obj != null) {
return (KylinPerformanceVo) obj;
} else {
KylinPerformanceVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.PERFORMANCES + performanceId, performanceData);
......@@ -367,26 +375,27 @@ public class DataUtils {
*/
public int getPerformanceIsTrueName(String performanceId) {
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId);
if (obj!=null) {
return (int)obj;
}else{
if (obj != null) {
return (int) obj;
} else {
int isTrueName = getPerformanceVo(performanceId).getIsTrueName();
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId,isTrueName);
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId, isTrueName);
return isTrueName;
}
}
public void delOrderRefundVo(String orderRefundsId){
public void delOrderRefundVo(String orderRefundsId) {
redisDataSourceUtil.getRedisKylinUtil().del(KylinRedisConst.ORDER_REFUND + orderRefundsId);
}
public void delOrderRefundVoByOrderId(String orderId){
public void delOrderRefundVoByOrderId(String orderId) {
redisDataSourceUtil.getRedisKylinUtil().del(KylinRedisConst.ORDER_REFUND_BY_ORDER_ID + orderId);
}
/**
* 演出订单快递信息
*
* @param orderId
* @param kylinOrderExpressVo
*/
......@@ -409,7 +418,7 @@ public class DataUtils {
}
// 获取订单券的使用情况
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId){
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId) {
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(redisKey);
if (obj == null) {
......
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