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

Commit 5611e208 authored by 胡佳晨's avatar 胡佳晨

订单限购修改

parent 85d8283c
......@@ -15,6 +15,13 @@ public class KylinRedisConst {
public static final String AGENT = "kylin:agent:info";
public static final String ORDER_LIST = "kylin:order:list:userId:";
public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
public static final String PERFORMANCE_ID = "performanceId";
public static final String TICKET_ID = "ticketId";
public static final String USE_TIME = "useTime";
public static final String BUY_COUNT = "buyCount";
public static final String ENTER_INFO = "kylin:enter:info:id:";//入场须知
public static final String CHECK_USER = "kylin:checkUser:id:";
......
......@@ -9,6 +9,8 @@ import java.math.BigDecimal;
public class KylinOrderListVo implements Serializable {
private static final long serialVersionUID = 6554829077875538374L;
private String orderTicketsId;
private String performanceId;
private String ticketId;
private String performanceTitle;
private String performanceImg;
private String orderCode;
......
......@@ -218,8 +218,9 @@ public class KylinPerformancesController {
}
@PostMapping("/checkPerformanceTime")
public ResponseDto<String> checkPerformanceTime(){
return ResponseDto.success(kylinPerformancesService.checkPerformanceTime());
@ApiOperation("演出脚本")
public ResponseDto<String> checkPerformanceTime(@RequestParam(value = "performancesId",required = false)String performancesId){
return ResponseDto.success(kylinPerformancesService.checkPerformanceTime(performancesId));
}
@PostMapping("lackRegister")
......
......@@ -40,6 +40,7 @@ public class KylinLackRegistersServiceImpl extends ServiceImpl<KylinLackRegister
SqlMapping.get("kylin_lack_register.insert", lackRegisters.getInsertObj()));
return ResponseDto.success("登记成功");
}catch (Exception e){
e.printStackTrace();
return ResponseDto.success("登记失败");
}
}
......
......@@ -24,14 +24,18 @@ import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketEntitiesMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.MongoVoUtils;
import com.liquidnet.service.kylin.utils.OrderUtils;
import com.liquidnet.service.kylin.utils.TaobaoTicketUtils;
import com.mongodb.BasicDBObject;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest;
import com.taobao.api.response.AlibabaDamaiMevOpenBatchpushticketResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -79,6 +83,8 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Autowired
private RedisUtil redisUtil;
@Autowired
private OrderUtils orderUtils;
@Autowired
private MongoVoUtils mongoVoUtils;
@Autowired
private RedisLockUtil redisLockUtil;
......@@ -94,6 +100,8 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
private TaobaoTicketUtils taobaoTicketUtils;
@Autowired
private KylinOrderTicketsMapper orderTicketsMapper;
@Autowired
private KylinOrderTicketEntitiesMapper entitiesMapper;
@Override
public ResponseDto<PayResultVo> checkCanOrder(PayOrderParam payOrderParam) {
......@@ -142,7 +150,8 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String timeStart = ticketData.getTimeStart(); // 普通开售时间
String timeEnd = ticketData.getTimeEnd(); // 购票停售时间
String timeExpressEnd = ticketData.getTimeEndExpress(); // 快递停售时间
boolean isMember = feignAdamBaseClient.isMember(uid).getData();//获取是否是会员
// boolean isMember = feignAdamBaseClient.isMember(uid).getData();//获取是否是会员
boolean isMember = true;
int memberType; //会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if (ticketData.getIsExclusive() == 1) {
memberType = 2;
......@@ -237,77 +246,22 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
Query queryTicket = new Query();
queryPerformance.addCriteria(Criteria.where("performanceId").is(payOrderParam.getPerformanceId()).and("status").in(KylinTableStatusConst.ORDER_STATUS0, KylinTableStatusConst.ORDER_STATUS1));
queryTicket.addCriteria(Criteria.where("ticketId").is(payOrderParam.getTicketId()).and("status").in(KylinTableStatusConst.ORDER_STATUS0, KylinTableStatusConst.ORDER_STATUS1));
int performanceBuyCount = 0; //演出下所有票种购买数量
int ticketBuyCount = 0;// 单一票种购买数量
if (isTrueName == 1) {
//已购买数量 身份证
queryPerformance.fields().include("orderTicketsId");
queryTicket.fields().include("orderTicketsId");
KylinOrderTicketVo performanceOrderId = mongoTemplate.findOne(queryPerformance, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
KylinOrderTicketVo ticketOrderId = mongoTemplate.findOne(queryTicket, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if (performanceOrderId != null && ticketOrderId != null) {
for (AdamEntersVo item : entersVoList) {
performanceBuyCount += mongoTemplate.count(Query.query(Criteria.where("enterIdCode").is(item.getIdCard()).and("performanceId").is(payOrderParam.getPerformanceId()).and("orderTicketsId").is(performanceOrderId.getOrderTicketsId())), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName())
+ payOrderParam.getNumber();
ticketBuyCount += mongoTemplate.count(Query.query(Criteria.where("enterIdCode").is(item.getIdCard()).and("ticketId").is(payOrderParam.getPerformanceId()).and("orderTicketsId").is(ticketOrderId.getOrderTicketsId())), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName())
+ payOrderParam.getNumber();
//会员区间
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount >= performanceMemberLimit && performanceMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceMemberLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketMemberLimit && ticketMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketMemberLimit + "张");//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount >= performanceLimit && performanceLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketLimit && ticketLimit != 0) {
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketLimit + "张");//超过票维度购买量
}
}
}
}
} else {
//已购买数量 数量
queryPerformance.fields().include("number");
queryTicket.fields().include("number");
List<KylinOrderTicketVo> performanceList = mongoTemplate.find(queryPerformance, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
List<KylinOrderTicketVo> ticketList = mongoTemplate.find(queryTicket, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo number : performanceList) {
performanceBuyCount += number.getNumber();
}
for (KylinOrderTicketVo number : ticketList) {
ticketBuyCount += number.getNumber();
}
performanceBuyCount += payOrderParam.getNumber(); //演出下所有票种购买数量
ticketBuyCount += payOrderParam.getNumber(); // 单一票种购买数量
//会员区间
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount >= performanceMemberLimit && performanceMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceMemberLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketMemberLimit && ticketMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketMemberLimit + "张");//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount >= performanceLimit && performanceLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketLimit && ticketLimit != 0) {
if(entersVoList.size()>0) {
for (int i = 0; i < entersVoList.size(); i++) {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, memberType, isTrueName);
if(!res1.equals("")){
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketLimit + "张");//超过票维度购买量
return ResponseDto.failure(res1);//乱七八糟异常
}
}
}else {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, payOrderParam.getNumber(), payOrderParam.getNumber(), memberType, isTrueName);
if(!res1.equals("")){
lock.unlock();
return ResponseDto.failure(res1);//乱七八糟异常
}
}
lock.unlock();
return order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, ticketTimesData);
......@@ -333,8 +287,8 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTickets.setOrderTicketsId(orderTicketId);
orderTickets.setUserId(uid);
Map token = CurrentUtil.getTokenClaims();
orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
// orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
// orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
orderTickets.setPerformanceTitle(performanceData.getTitle());
orderTickets.setOrderCode(IDGenerator.ticketOrderCode(orderTicketId));
orderTickets.setPayCode("");
......@@ -453,6 +407,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTicketEntitiesVo.setCreatedAt(orderTicketEntities.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
orderTicketEntitiesVo.setUpdatedAt(null);
mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName());
dataUtils.changeBuyInfo(orderTicketEntitiesVo.getUserId(),orderTicketEntitiesVo.getEnterIdCode(), orderTicketEntitiesVo.getPerformanceId(), orderTicketEntitiesVo.getTicketId(),1);
}
} else {
for (int i = 0; i < payOrderParam.getNumber(); i++) {
......@@ -488,6 +443,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTicketEntitiesVo.setCreatedAt(orderTicketEntities.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
orderTicketEntitiesVo.setUpdatedAt(null);
mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName());
dataUtils.changeBuyInfo(orderTicketEntitiesVo.getUserId(),orderTicketEntitiesVo.getEnterIdCode(), orderTicketEntitiesVo.getPerformanceId(), orderTicketEntitiesVo.getTicketId(),1);
}
}
// 调用支付
......@@ -540,7 +496,6 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 执行sql
String sqlData = SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC, sqlsDataD);
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
sqlData);
return ResponseDto.success(payResultVo);
......@@ -725,6 +680,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
Query.query(Criteria.where("orderId").is(orderTickets.getOrderTicketsId())).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(orderTicketEntitiesVo))
);
dataUtils.delOrderTicketRedis(orderTickets.getOrderTicketsId());
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
......@@ -836,24 +792,13 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Override
public boolean checkOrderTime(String userId) {
// Query query = new Query();
// query.addCriteria(Criteria.where("status").is(KylinTableStatusConst.ORDER_STATUS0).and("overdueAt").lte(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
// if (null != userId) {
// query.addCriteria(Criteria.where("userId").is(userId));
// }
// List<KylinOrderTicketVo> orderTicketVo = mongoTemplate.find(query,
// KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
// UpdateWrapper updateWrapper = new UpdateWrapper<KylinOrderTickets>();//.eq("userId",userId);
// updateWrapper.eq("userId",userId);
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
for (OrderScriptDto item : dtoData) {
if (!RedisLockUtil.tryLock("order_lock:" + item.getOrderCode(), 30, 240)) {
continue;
}
RLock lock = redisLockUtil.lock("order_lock:" + item.getOrderCode(), 240);
// KylinOrderTicketVo itemData = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
if (item.getStatus() == KylinTableStatusConst.ORDER_STATUS0) {
LocalDateTime now = LocalDateTime.now();
try {
......@@ -877,7 +822,13 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
);
dataUtils.delOrderTicketRedis(orderTickets.getOrderTicketsId());
dataUtils.changeSurplusGeneral(item.getTicketId(), item.getNumber());
mongoVoUtils.resetOrderListVo(item.getUserId(),2,item.getOrderTicketsId());
mongoVoUtils.resetOrderListVo(item.getUserId(), 2, item.getOrderTicketsId());
List<KylinOrderTicketEntities> entities = entitiesMapper.selectList(new UpdateWrapper<KylinOrderTicketEntities>().eq("order_id",item.getOrderTicketsId()));
for (int i =0 ;i <entities.size();i++) {
KylinOrderTicketEntities items =entities.get(i);
dataUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), 1);
}
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.get("kylin_order_ticket.close", orderTickets.getCloseOrderObject()));
......@@ -925,8 +876,8 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
try {
KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(orderId);
KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId());
TaobaoClient client = taobaoTicketUtils.initTaobaoClient();
int isSysDamai = 0;
for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
for (int y = 0; y < timeItem.getTicketList().size(); y++) {
......@@ -938,7 +889,8 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
}
}
if (isSysDamai == 1) {
List<KylinOrderTicketEntitiesVo> listData = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
KylinOrderTicketVo orderVo = dataUtils.getOrderTicketVo(orderId);
List<KylinOrderTicketEntitiesVo> listData = orderVo.getEntitiesVoList();
AlibabaDamaiMevOpenBatchpushticketRequest req = new AlibabaDamaiMevOpenBatchpushticketRequest();
List<AlibabaDamaiMevOpenBatchpushticketRequest.ThirdTicketPushOpenParam> list2 = new ArrayList<AlibabaDamaiMevOpenBatchpushticketRequest.ThirdTicketPushOpenParam>();
for (int i = 0; i < listData.size(); i++) {
......@@ -961,6 +913,13 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
obj3.setSeatType(1L);
obj3.setTicketType(1L);//票类型
}
req.setThirdTicketSetOpenParamList(list2);
if (list2.size() == 0) {
return true;
} else {
AlibabaDamaiMevOpenBatchpushticketResponse rsp = client.execute(req);
return rsp.getResult().getSuccess();
}
}
return true;
} catch (Exception e) {
......
......@@ -475,9 +475,9 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
return payDetailVo;
}
public String checkPerformanceTime(){
public String checkPerformanceTime(String performancesId){
try {
task.performanceVoStatus(null);
task.performanceVoStatus(performancesId);
return "成功";
}catch (Exception e){
e.printStackTrace();
......
......@@ -477,7 +477,6 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketRelationsItem.getTicketId()).eq("status", 7));
}
}
dataUtils.updatePerformanceMongo(performancesId);
// 判断状态
performanceVoTask.performanceVoStatus(performancesId);
return ResponseDto.success("上线成功");
......
......@@ -5,11 +5,12 @@ import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.*;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper;
import io.lettuce.core.GeoArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
......@@ -17,6 +18,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Component
......@@ -77,6 +80,20 @@ public class DataUtils {
}
}
/**
* 判断 当前库存是否售罄
*
* @param ticketId 票id
* @return boolean
*/
public boolean ticketIsSoldOut(String ticketId) {
if (0 >= getSurplusGeneral(ticketId)) {
return true;
} else {
return false;
}
}
/**
* 初始化兑换库存
*
......@@ -127,7 +144,7 @@ public class DataUtils {
return (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
}
public void setOrderTicketVo(String userId,List<KylinOrderListVo> vo) {
public void setOrderTicketVo(String userId, List<KylinOrderListVo> vo) {
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, vo);
}
......@@ -135,7 +152,7 @@ public class DataUtils {
if (redisUtil.hasKey(KylinRedisConst.ORDER_LIST + userId)) {
} else {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
}
......@@ -170,6 +187,7 @@ public class DataUtils {
/**
* 获取bannerVo
*
* @param bannerId
* @return
*/
......@@ -304,4 +322,136 @@ public class DataUtils {
System.out.println("创建Vo异常");
}
}
/**
* @param performanceId 演出id
* @param ticketId 票种id
* @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表
*/
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
KylinPerformanceVo vo = getPerformanceVo(performanceId);
int isTrueName = vo.getIsTrueName();
int ticketType = 0;
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();
ticketType = ticketItem.getType();
}
}
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);
if (1 == ticketType) {
int count = 0;
for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
String item = allTicketId.get(useTime).get(i);
if(allTicketId.get(useTime).size()==1){
redisUtil.incr(performanceIdKey, buyCount);
break;
}
if (i == 0) {
count = (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item);
} else {
if(count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)){
redisUtil.incr(performanceIdKey, buyCount);
break;
}
}
}
} else {
redisUtil.incr(performanceIdKey, buyCount);
}
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
if (1 == ticketType) {
int count = 0;
for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
String item = allTicketId.get(useTime).get(i);
if(allTicketId.get(useTime).size()==1){
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
break;
}
if (i == 0) {
count = (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item);
} else {
if(count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)){
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
break;
}
}
}
} else {
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
}
}
}
// 获取 用户维度 演出购买数量
public int getUserPBuyCount(String userId, String performanceId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + userId + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId);
} catch (Exception e) {
return 0;
}
}
// 获取 用户维度 票种购买数量
public int getUserTBuyCount(String userId, String ticketId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + userId + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId);
} catch (Exception e) {
return 0;
}
}
// 获取 证件维度 演出购买数量
public int getIdCardPBuyCount(String idCard, String performanceId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + idCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId);
} catch (Exception e) {
return 0;
}
}
// 获取 证件维度 票种购买数量
public int getIdCardTBuyCount(String idCard, String ticketId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + idCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId);
} catch (Exception e) {
return 0;
}
}
// 获取 证件维度 票种适用时间
public String getIdCardTUseTime(String idCard, String ticketId) {
try {
return (String) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + idCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId + ":" + KylinRedisConst.USE_TIME);
} catch (Exception e) {
return "";
}
}
}
package com.liquidnet.service.kylin.utils;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
@Component
public class OrderUtils {
@Autowired
private DataUtils dataUtils;
public String judgeOrderLimit(
int type,
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceLimitCount,
int performanceMemberLimitCount,
int ticketLimitCount,
int ticketMemberLimitCount,
int performanceBuyCount,
int ticketBuyCount,
int memberType,
int isTrueName
) {
Integer[] integers;
if (103 == 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]);
}
public Integer[] roadShowOrderLimit(
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);
}
return new Integer[]{performanceBuyCount,ticketBuyCount};
}
public Integer[] festivalOrderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount += dataUtils.getUserPBuyCount(idCard, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(idCard, ticketId);
} else {//非实名
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
}
return new Integer[]{performanceBuyCount,ticketBuyCount};
}
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount) {
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount >= performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "该演出只能购买" + performanceMemberLimitCount + "张";//超过演出维度购买量
}
if (ticketBuyCount >= ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "该票种只能购买" + ticketMemberLimitCount + "张";//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount >= performanceLimitCount && performanceLimitCount != 0) {
return "该演出只能购买" + performanceLimitCount + "张";//超过演出维度购买量
}
if (ticketBuyCount >= ticketLimitCount && ticketLimitCount != 0) {
return "该票种只能购买" + ticketLimitCount + "张";//超过票维度购买量
}
}
return "";
}
}
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