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

Commit 71adc379 authored by 姜秀龙's avatar 姜秀龙

场次限购-order 下单返回限购查询需要的数据

parent db52051c
package com.liquidnet.service.kylin.constant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* 限购对象枚举
*/
@ApiModel("限购对象枚举")
public enum LimitTargetEnum {
@ApiModelProperty("账户")
ACCOUNT(1, "账户"),
@ApiModelProperty("实名")
IDCARD(2, "实名");
private final int code;
private final String desc;
LimitTargetEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static LimitTargetEnum valueOf(int code) {
for (LimitTargetEnum target : values()) {
if (target.code == code) {
return target;
}
}
return null;
}
}
\ No newline at end of file
package com.liquidnet.service.kylin.constant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* 限购类型枚举
*/
@ApiModel("限购类型枚举")
public enum LimitTypeEnum {
@ApiModelProperty("演出")
PERFORMANCE(1, "演出"),
@ApiModelProperty("票种")
TICKET(2, "票种"),
@ApiModelProperty("场次")
TIME(3, "场次");
private final int code;
private final String desc;
LimitTypeEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static LimitTypeEnum valueOf(int code) {
for (LimitTypeEnum type : values()) {
if (type.code == code) {
return type;
}
}
return null;
}
}
\ No newline at end of file
package com.liquidnet.service.kylin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 限购错误结果VO
*/
@ApiModel("限购错误结果VO")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LimitErrorResultVo {
/**
* 限购类型
*/
@ApiModelProperty("限购类型:1-演出,2-票种,3-场次")
private Integer limitType;
/**
* 限购对象
*/
@ApiModelProperty("限购对象:1-账户,2-实名")
private Integer limitTarget;
/**
* 限购数量
*/
@ApiModelProperty("限购数量")
private Integer limitCount;
/**
* 当前已购买数量
*/
@ApiModelProperty("当前已购买数量")
private Integer currentCount;
/**
* 会员逻辑
*/
@ApiModelProperty("0全员 2会员专属 1会员时间段")
private Integer memberType;
/**
* 演出 id
*/
@ApiModelProperty("演出 id")
private String performancesId;
/**
* 票种 id
*/
@ApiModelProperty("票种 id")
private String ticketsId;
/**
* 场次 id
*/
@ApiModelProperty("场次 id")
private String timeId;
/**
* 身份证
*/
@ApiModelProperty("身份证")
private String idCard;
/**
* 姓名
*/
@ApiModelProperty("姓名")
private String idName;
/**
* 入场人 id
*/
@ApiModelProperty("入场人 id")
private String entersId;
/**
* 错误信息
*/
@ApiModelProperty("错误信息")
private String errorMessage;
}
\ No newline at end of file
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo;
import com.liquidnet.service.kylin.dto.vo.middle.PayDataVo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data
public class PayInnerResultVo implements Serializable,Cloneable {
......@@ -18,6 +20,7 @@ public class PayInnerResultVo implements Serializable,Cloneable {
private String returnUrl;
private BigDecimal price;
private PayDataVo payData;
private List<LimitErrorResultVo> limitResult;
private static final PayInnerResultVo obj = new PayInnerResultVo();
public static PayInnerResultVo getNew() {
......
......@@ -26,6 +26,7 @@ import com.liquidnet.service.kylin.dto.vo.returns.PayInnerResultVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService;
import com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo;
import com.liquidnet.service.order.utils.*;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest;
......@@ -400,25 +401,41 @@ 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(), payOrderParam.getTimeId(), 1);
String res1 = orderUtils.judgeOrderLimit(uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), payOrderParam.getTimeId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, timeRealNameLimit, memberType, isTrueName);
if (!res1.equals("")) {
AdamEntersVo adamEntersVo = entersVoList.get(i);
dataUtils.changeBuyInfo(uid, adamEntersVo.getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), 1);
LimitErrorResultVo limitResult = orderUtils.judgeOrderLimit(uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), payOrderParam.getTimeId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, timeRealNameLimit, memberType, isTrueName);
if (limitResult != null) {
for (int x = 0; x <= i; x++) {
dataUtils.changeBuyInfo(uid, entersVoList.get(x).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), -1);
}
orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber());
orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid);
return ResponseDto.failure(res1);//乱七八糟异常
PayInnerResultVo payInnerResultVo = PayInnerResultVo.getNew();
limitResult.setPerformancesId(payOrderParam.getPerformanceId());
limitResult.setTimeId(payOrderParam.getTimeId());
limitResult.setTicketsId(payOrderParam.getTicketId());
limitResult.setIdCard(adamEntersVo.getIdCard());
limitResult.setIdName(adamEntersVo.getName());
limitResult.setEntersId(adamEntersVo.getEntersId());
payInnerResultVo.setLimitResult(Collections.singletonList(limitResult));
return ResponseDto.failure("12345", "购买数量超出限制", payInnerResultVo);//返回完整的限购错误信息
}
}
} else {
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), payOrderParam.getNumber());
String res1 = orderUtils.judgeOrderLimit(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), payOrderParam.getTimeId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, timeRealNameLimit, memberType, isTrueName);
if (!res1.equals("")) {
LimitErrorResultVo limitResult = orderUtils.judgeOrderLimit(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), payOrderParam.getTimeId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, timeRealNameLimit, memberType, isTrueName);
if (limitResult != null) {
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), -payOrderParam.getNumber());
orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber());
orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid);
return ResponseDto.failure(res1);//乱七八糟异常
PayInnerResultVo payInnerResultVo = PayInnerResultVo.getNew();
limitResult.setPerformancesId(payOrderParam.getPerformanceId());
limitResult.setTimeId(payOrderParam.getTimeId());
limitResult.setTicketsId(payOrderParam.getTicketId());
payInnerResultVo.setLimitResult(Collections.singletonList(limitResult)); // 设置为List
return ResponseDto.failure("12345", "购买数量超出限制", payInnerResultVo);//返回完整的限购错误信息
}
}
......
......@@ -20,6 +20,9 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.returns.InnerReturnVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.constant.LimitTargetEnum;
import com.liquidnet.service.kylin.constant.LimitTypeEnum;
import com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
......@@ -46,7 +49,7 @@ public class OrderUtils {
@Value("${liquidnet.service.smile.url}")
private String smile;
public String judgeOrderLimit(
public LimitErrorResultVo judgeOrderLimit(
String userId,
String idCard,
String performanceId,
......@@ -103,58 +106,128 @@ public class OrderUtils {
return array;
}
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int performanceLimitIdCard,
public LimitErrorResultVo judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int performanceLimitIdCard,
int ticketLimitCount, int ticketMemberLimitCount, int ticketLimitIdCard, int timeRealNameLimit, int memberType,
int performanceBuyCountUid, int ticketBuyCountUid, int performanceBuyCountIdCard, int ticketBuyCountIdCard,
int timeBuyCountIdCard,
int isTrueName) {
if (isTrueName == 1 && timeRealNameLimit == 1) {
if (isTrueName == 1 && timeRealNameLimit != 0) {
if (timeBuyCountIdCard > timeRealNameLimit) {
return "实名制场次限购" + timeRealNameLimit + "张,已超出";//超过场次维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.TIME.getCode())
.limitTarget(LimitTargetEnum.IDCARD.getCode())
.limitCount(timeRealNameLimit)
.currentCount(timeBuyCountIdCard)
// .errorMessage("实名制场次限购" + timeRealNameLimit + "张,已超出")
.build();
}
}
if (memberType == 1 || memberType == 2) {
if (isTrueName == 1) {
if (performanceBuyCountIdCard > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "实名制演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.PERFORMANCE.getCode())
.limitTarget(LimitTargetEnum.IDCARD.getCode())
.memberType(memberType)
.limitCount(performanceMemberLimitCount)
.currentCount(performanceBuyCountIdCard)
// .errorMessage("实名制演出限购" + performanceMemberLimitCount + "张,已超出")
.build();
}
if (ticketBuyCountIdCard > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "实名制票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.TICKET.getCode())
.limitTarget(LimitTargetEnum.IDCARD.getCode())
.memberType(memberType)
.limitCount(ticketMemberLimitCount)
.currentCount(ticketBuyCountIdCard)
// .errorMessage("实名制票种限购" + ticketMemberLimitCount + "张,已超出")
.build();
}
} else {
if (performanceBuyCountUid > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return "本场演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.PERFORMANCE.getCode())
.limitTarget(LimitTargetEnum.ACCOUNT.getCode())
.memberType(memberType)
.limitCount(performanceMemberLimitCount)
.currentCount(performanceBuyCountUid)
// .errorMessage("本场演出限购" + performanceMemberLimitCount + "张,已超出")
.build();
}
if (ticketBuyCountUid > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return "该票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.TICKET.getCode())
.limitTarget(LimitTargetEnum.ACCOUNT.getCode())
.memberType(memberType)
.limitCount(ticketMemberLimitCount)
.currentCount(ticketBuyCountUid)
// .errorMessage("该票种限购" + ticketMemberLimitCount + "张,已超出")
.build();
}
}
} else {//非会员区间
if (isTrueName == 1) {
if (performanceBuyCountIdCard > performanceLimitIdCard && performanceLimitIdCard != 0) {
return "实名制演出限购" + performanceLimitIdCard + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.PERFORMANCE.getCode())
.limitTarget(LimitTargetEnum.IDCARD.getCode())
.limitCount(performanceLimitIdCard)
.currentCount(performanceBuyCountIdCard)
// .errorMessage("实名制演出限购" + performanceLimitIdCard + "张,已超出")
.build();
}
if (ticketBuyCountIdCard > ticketLimitIdCard && ticketLimitIdCard != 0) {
return "实名制票种限购" + ticketLimitIdCard + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.TICKET.getCode())
.limitTarget(LimitTargetEnum.IDCARD.getCode())
.limitCount(ticketLimitIdCard)
.currentCount(ticketBuyCountIdCard)
// .errorMessage("实名制票种限购" + ticketLimitIdCard + "张,已超出")
.build();
}
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.PERFORMANCE.getCode())
.limitTarget(LimitTargetEnum.ACCOUNT.getCode())
.limitCount(performanceLimitCount)
.currentCount(performanceBuyCountUid)
// .errorMessage("本场演出限购" + performanceLimitCount + "张,已超出")
.build();
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + ticketLimitCount + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.TICKET.getCode())
.limitTarget(LimitTargetEnum.ACCOUNT.getCode())
.limitCount(ticketLimitCount)
.currentCount(ticketBuyCountUid)
// .errorMessage("该票种限购" + ticketLimitCount + "张,已超出")
.build();
}
} else {
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) {
return "本场演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.PERFORMANCE.getCode())
.limitTarget(LimitTargetEnum.ACCOUNT.getCode())
.limitCount(performanceLimitCount)
.currentCount(performanceBuyCountUid)
// .errorMessage("本场演出限购" + performanceLimitCount + "张,已超出")
.build();
}
if (ticketBuyCountUid > ticketLimitCount && ticketLimitCount != 0) {
return "该票种限购" + ticketLimitCount + "张,已超出";//超过演出维度购买量
return LimitErrorResultVo.builder()
.limitType(LimitTypeEnum.TICKET.getCode())
.limitTarget(LimitTargetEnum.ACCOUNT.getCode())
.limitCount(ticketLimitCount)
.currentCount(ticketBuyCountUid)
// .errorMessage("该票种限购" + ticketLimitCount + "张,已超出")
.build();
}
}
}
return "";
return 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