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

Commit 8836e7cf authored by 姜秀龙's avatar 姜秀龙

Merge branch 'jxl-xiangou' into 'master'

Jxl xiangou

See merge request !397
parents b8beb1c4 aefaa773
...@@ -62,6 +62,7 @@ public class KylinRedisConst { ...@@ -62,6 +62,7 @@ public class KylinRedisConst {
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:"; public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
public static final String PERFORMANCE_ID = "performanceId"; public static final String PERFORMANCE_ID = "performanceId";
public static final String TICKET_ID = "ticketId"; public static final String TICKET_ID = "ticketId";
public static final String TIME_ID = "timeId";
public static final String USE_TIME = "useTime"; public static final String USE_TIME = "useTime";
public static final String BUY_COUNT = "buyCount"; public static final String BUY_COUNT = "buyCount";
......
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
...@@ -33,6 +33,10 @@ public class CreateTicketTimesParam implements Serializable { ...@@ -33,6 +33,10 @@ public class CreateTicketTimesParam implements Serializable {
@NotNull(message = "不能为空") @NotNull(message = "不能为空")
private Integer type; private Integer type;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启", example = "0")
@NotNull(message = "实名认证限购不能为空")
private Integer realNameLimit;
@ApiModelProperty(value = "", example = "") @ApiModelProperty(value = "", example = "")
@JsonIgnore @JsonIgnore
private String createdAt; private String createdAt;
......
...@@ -44,6 +44,9 @@ public class PerformanceStep2Param implements Serializable,Cloneable { ...@@ -44,6 +44,9 @@ public class PerformanceStep2Param implements Serializable,Cloneable {
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
private String merchantId; private String merchantId;
@ApiModelProperty(value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧", example = "3")
private Integer type;
@ApiModelProperty(value = "场次数据",hidden = true) @ApiModelProperty(value = "场次数据",hidden = true)
private List<TicketTimesTicketCreatePartnerVo> ticketTimes; private List<TicketTimesTicketCreatePartnerVo> ticketTimes;
......
package com.liquidnet.service.kylin.dto.vo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesForOrderVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 限购错误结果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;
/**
* 已购买的票信息
*/
@ApiModelProperty("已购买的票信息")
private List<KylinOrderTicketEntitiesForOrderVo> entities;
}
\ No newline at end of file
...@@ -30,6 +30,8 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{ ...@@ -30,6 +30,8 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{
private String useStart; private String useStart;
@ApiModelProperty(value = "适用结束时间") @ApiModelProperty(value = "适用结束时间")
private String useEnd; private String useEnd;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启")
private Integer realNameLimit;
@ApiModelProperty(value = "票种") @ApiModelProperty(value = "票种")
private List<KylinTicketVo> ticketList; private List<KylinTicketVo> ticketList;
...@@ -47,6 +49,7 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{ ...@@ -47,6 +49,7 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{
this.ticketTimesId = ticketTimes.getTicketTimesId(); this.ticketTimesId = ticketTimes.getTicketTimesId();
this.title = ticketTimes.getTitle(); this.title = ticketTimes.getTitle();
this.type = ticketTimes.getType(); this.type = ticketTimes.getType();
this.realNameLimit = ticketTimes.getRealNameLimit();
this.useStart = DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseStart()); this.useStart = DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseStart());
this.useEnd = DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseEnd()); this.useEnd = DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseEnd());
} }
...@@ -57,5 +60,6 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{ ...@@ -57,5 +60,6 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{
this.type = ticketTimes.getType(); this.type = ticketTimes.getType();
this.useStart = ticketTimes.getUseStart(); this.useStart = ticketTimes.getUseStart();
this.useEnd = ticketTimes.getUseEnd(); this.useEnd = ticketTimes.getUseEnd();
this.realNameLimit = ticketTimes.getRealNameLimit();
} }
} }
package com.liquidnet.service.kylin.dto.vo.mongo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class KylinOrderTicketEntitiesForOrderVo implements Serializable, Cloneable {
private String orderId;
private String timeId;
@ApiModelProperty("演出名称")
private String performanceTitle;
@ApiModelProperty("票种名称")
private String ticketTitle;
@ApiModelProperty("场次开始")
private String useStart;
@ApiModelProperty("场次开始结束")
private String useEnd;
@ApiModelProperty("isPayment")
private Integer isPayment;
private static final KylinOrderTicketEntitiesForOrderVo obj = new KylinOrderTicketEntitiesForOrderVo();
public static KylinOrderTicketEntitiesForOrderVo getNew() {
try {
return (KylinOrderTicketEntitiesForOrderVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinOrderTicketEntitiesForOrderVo();
}
}
}
...@@ -37,6 +37,8 @@ public class KylinTicketTimesPartnerVo implements Serializable ,Cloneable{ ...@@ -37,6 +37,8 @@ public class KylinTicketTimesPartnerVo implements Serializable ,Cloneable{
@ApiModelProperty(value = "是否开启缺票登记") @ApiModelProperty(value = "是否开启缺票登记")
private Integer isLackRegister; private Integer isLackRegister;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启")
private Integer realNameLimit;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
private String createdAt; private String createdAt;
...@@ -61,6 +63,7 @@ public class KylinTicketTimesPartnerVo implements Serializable ,Cloneable{ ...@@ -61,6 +63,7 @@ public class KylinTicketTimesPartnerVo implements Serializable ,Cloneable{
this.setUseEnd(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseEnd())); this.setUseEnd(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseEnd()));
this.setStatus(ticketTimes.getStatus()); this.setStatus(ticketTimes.getStatus());
this.setType(ticketTimes.getType()); this.setType(ticketTimes.getType());
this.setRealNameLimit(ticketTimes.getRealNameLimit());
this.setCreatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getCreatedAt())); this.setCreatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getCreatedAt()));
this.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUpdatedAt())); this.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUpdatedAt()));
return this; return this;
......
...@@ -31,6 +31,9 @@ public class TicketTimesTicketCreatePartnerVo implements Serializable ,Cloneable ...@@ -31,6 +31,9 @@ public class TicketTimesTicketCreatePartnerVo implements Serializable ,Cloneable
@ApiModelProperty(value = "状态 1单日票 2通票") @ApiModelProperty(value = "状态 1单日票 2通票")
private Integer type; private Integer type;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启")
private Integer realNameLimit;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
private String createdAt; private String createdAt;
......
package com.liquidnet.service.kylin.dto.vo.returns; 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 com.liquidnet.service.kylin.dto.vo.middle.PayDataVo;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class PayInnerResultVo implements Serializable,Cloneable { public class PayInnerResultVo implements Serializable,Cloneable {
...@@ -18,6 +20,7 @@ public class PayInnerResultVo implements Serializable,Cloneable { ...@@ -18,6 +20,7 @@ public class PayInnerResultVo implements Serializable,Cloneable {
private String returnUrl; private String returnUrl;
private BigDecimal price; private BigDecimal price;
private PayDataVo payData; private PayDataVo payData;
private List<LimitErrorResultVo> limitResult;
private static final PayInnerResultVo obj = new PayInnerResultVo(); private static final PayInnerResultVo obj = new PayInnerResultVo();
public static PayInnerResultVo getNew() { public static PayInnerResultVo getNew() {
......
...@@ -6,6 +6,7 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -6,6 +6,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.PayAgainParam; import com.liquidnet.service.kylin.dto.param.PayAgainParam;
import com.liquidnet.service.kylin.dto.param.PayOrderParam; import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam; import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo;
import com.liquidnet.service.kylin.dto.vo.returns.*; import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.KylinOrderTickets; import com.liquidnet.service.kylin.entity.KylinOrderTickets;
...@@ -73,4 +74,6 @@ public interface IKylinOrderTicketsService { ...@@ -73,4 +74,6 @@ public interface IKylinOrderTicketsService {
//获取 订单Ar激活码 //获取 订单Ar激活码
ResponseDto<List<String>> getOrderArCode(String orderId); ResponseDto<List<String>> getOrderArCode(String orderId);
ResponseDto<List<LimitErrorResultVo>> limitInfo(List<LimitErrorResultVo> param);
} }
...@@ -117,6 +117,14 @@ ...@@ -117,6 +117,14 @@
<label>演出实名限购:</label> <label>演出实名限购:</label>
<span th:text="*{idCount}"></span> <span th:text="*{idCount}"></span>
</div> </div>
<div class="panel-footer">
<label>场次实名限购:</label>
<span th:each="dict, iterStat : ${kylinPerformanceMisVo.ticketTimes}"
th:if="${dict.realNameLimit == 1}"
th:text="${#strings.replace(#strings.replace(dict.title, ' 00:00', ''), ' 00:00', '')} + ${iterStat.last ? '' : '; '}">
</span>
<span th:if="${#lists.isEmpty(kylinPerformanceMisVo.ticketTimes.?[realNameLimit == 1])}"></span>
</div>
<div class="panel-footer"> <div class="panel-footer">
<label>时间:</label> <label>时间:</label>
<span th:text="*{timeStart}"></span> <span th:text="*{timeStart}"></span>
......
...@@ -69,6 +69,11 @@ public class KylinTicketTimes implements Serializable ,Cloneable { ...@@ -69,6 +69,11 @@ public class KylinTicketTimes implements Serializable ,Cloneable {
*/ */
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
/**
* 是否开启实名认证限购 0关闭 1开启
*/
private Integer realNameLimit;
private static final KylinTicketTimes obj = new KylinTicketTimes(); private static final KylinTicketTimes obj = new KylinTicketTimes();
public static KylinTicketTimes getNew() { public static KylinTicketTimes getNew() {
try { try {
...@@ -82,7 +87,8 @@ public class KylinTicketTimes implements Serializable ,Cloneable { ...@@ -82,7 +87,8 @@ public class KylinTicketTimes implements Serializable ,Cloneable {
return new Object[]{ return new Object[]{
vo.getTicketTimesId(),vo.getTitle(),vo.getStatus(), vo.getTicketTimesId(),vo.getTitle(),vo.getStatus(),
vo.getType(),vo.getUseStart(),vo.getUseEnd(), vo.getType(),vo.getUseStart(),vo.getUseEnd(),
vo.getComment(),vo.getCreatedAt(),vo.getUpdatedAt() vo.getComment(),vo.getCreatedAt(),vo.getUpdatedAt(),
vo.getRealNameLimit()
}; };
} }
} }
...@@ -341,7 +341,7 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin ...@@ -341,7 +341,7 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
// redis 改限购 // redis 改限购
for (int i = 0; i < kylinOrderTicketVo.getEntitiesVoList().size(); i++) { for (int i = 0; i < kylinOrderTicketVo.getEntitiesVoList().size(); i++) {
KylinOrderTicketEntitiesVo items = kylinOrderTicketVo.getEntitiesVoList().get(i); KylinOrderTicketEntitiesVo items = kylinOrderTicketVo.getEntitiesVoList().get(i);
kylinOrderUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1); kylinOrderUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), items.getTimeId(), -1);
} }
//改库存 //改库存
kylinOrderUtils.changeSurplusGeneral(kylinOrderTicketVo.getTicketId(), kylinOrderTicketVo.getNumber()); kylinOrderUtils.changeSurplusGeneral(kylinOrderTicketVo.getTicketId(), kylinOrderTicketVo.getNumber());
......
...@@ -135,11 +135,12 @@ public class KylinOrderUtils { ...@@ -135,11 +135,12 @@ public class KylinOrderUtils {
* @param ticketId * @param ticketId
* @param buyCount * @param buyCount
*/ */
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) { public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, String timeId, int buyCount) {
String redisKeyUid; String redisKeyUid;
String redisKeyIdCard; String redisKeyIdCard;
String performanceIdKeyIdCard=""; String performanceIdKeyIdCard="";
String ticketIdKeyIdCard=""; String ticketIdKeyIdCard="";
String timeIdKeyIdCard = "";
int isTrueName = getPerformanceIsTrueName(performanceId); int isTrueName = getPerformanceIsTrueName(performanceId);
...@@ -150,6 +151,7 @@ public class KylinOrderUtils { ...@@ -150,6 +151,7 @@ public class KylinOrderUtils {
if (isTrueName != 0) { if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId; performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId; ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
timeIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TIME_ID + ":" + timeId;
} }
if (buyCount > 0) { if (buyCount > 0) {
...@@ -158,11 +160,13 @@ public class KylinOrderUtils { ...@@ -158,11 +160,13 @@ public class KylinOrderUtils {
if (isTrueName != 0) { if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount); redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount); redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(timeIdKeyIdCard, buyCount);
} }
} else { } else {
if (isTrueName != 0) { if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyIdCard, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyIdCard, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(timeIdKeyIdCard, Math.abs(buyCount));
} }
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyUid, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyUid, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyUid, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyUid, Math.abs(buyCount));
......
-- 添加实名认证限购字段到场次表
USE ln_scene;
-- 在kylin_ticket_times表中添加real_name_limit字段
ALTER TABLE kylin_ticket_times
ADD COLUMN real_name_limit tinyint NOT NULL DEFAULT 0 COMMENT '是否开启实名认证限购 0关闭 1开启' AFTER comment;
\ No newline at end of file
...@@ -8,6 +8,7 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -8,6 +8,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.PayAgainParam; import com.liquidnet.service.kylin.dto.param.PayAgainParam;
import com.liquidnet.service.kylin.dto.param.PayOrderParam; import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam; import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo;
import com.liquidnet.service.kylin.dto.vo.returns.*; import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService; import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
...@@ -167,6 +168,13 @@ public class KylinOrderTicketsController { ...@@ -167,6 +168,13 @@ public class KylinOrderTicketsController {
return orderTicketsService.getOrderArCode(orderId); return orderTicketsService.getOrderArCode(orderId);
} }
@PostMapping("limitInfo")
@ApiOperation("获取用户限购详细信息")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<List<LimitErrorResultVo>> limitInfo(@RequestBody List<LimitErrorResultVo> param) {
return orderTicketsService.limitInfo(param);
}
/*@GetMapping("toOrderRefundDetails") /*@GetMapping("toOrderRefundDetails")
@ApiOperation("想要退款订单详情") @ApiOperation("想要退款订单详情")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
......
...@@ -10,6 +10,7 @@ import com.liquidnet.service.base.SqlMapping; ...@@ -10,6 +10,7 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo; 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.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*; import com.liquidnet.service.kylin.dto.vo.mongo.*;
...@@ -383,7 +384,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -383,7 +384,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
KylinTicketPartnerVo kylinTicketPartnerVo = dataUtils.getKylinTicketPartnerVoByTicketId(ticketsId); KylinTicketPartnerVo kylinTicketPartnerVo = dataUtils.getKylinTicketPartnerVoByTicketId(ticketsId);
if (null != kylinTicketPartnerVo && null != kylinTicketPartnerVo.getViewersNumber()) { if (null != kylinTicketPartnerVo && null != kylinTicketPartnerVo.getViewersNumber()) {
return kylinTicketPartnerVo.getViewersNumber() == 1; return kylinTicketPartnerVo.getViewersNumber() == 1;
}else { } else {
log.info("[isSingleTicket] 票信息为空, ticketsId: {}", ticketsId); log.info("[isSingleTicket] 票信息为空, ticketsId: {}", ticketsId);
return false; return false;
} }
...@@ -1364,4 +1365,36 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -1364,4 +1365,36 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
return ResponseDto.success(dataUtils.getOrderArCode(orderId)); return ResponseDto.success(dataUtils.getOrderArCode(orderId));
} }
@Override
public ResponseDto<List<LimitErrorResultVo>> limitInfo(List<LimitErrorResultVo> param) {
for (LimitErrorResultVo vo : param) {
Criteria criteria = Criteria.where("performanceId").is(vo.getPerformancesId())
.and("isPayment").in(Arrays.asList(0, 1, 2, 4));
if (vo.getLimitTarget().equals(2)) {
criteria.and("enterIdCode").is(vo.getIdCard());
}
if (vo.getLimitType().equals(2)) {
criteria.and("ticketId").is(vo.getTicketsId());
}
if (vo.getLimitType().equals(3)) {
criteria.and("timeId").is(vo.getTimeId());
}
Query query = Query.query(criteria);
List<KylinOrderTicketEntitiesForOrderVo> list = mongoTemplate.find(query,
KylinOrderTicketEntitiesForOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
List<KylinOrderTicketEntitiesForOrderVo> newList = new ArrayList<>();
for (KylinOrderTicketEntitiesForOrderVo entities : list) {
if (entities.getIsPayment().equals(0)) {
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(entities.getOrderId());
if (orderTicketVo.getStatus().equals(2)) {
continue;
}
}
newList.add(entities);
}
vo.setEntities(newList);
}
return ResponseDto.success(param);
}
} }
...@@ -26,6 +26,7 @@ import com.liquidnet.service.kylin.dto.vo.returns.PayInnerResultVo; ...@@ -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.dto.vo.returns.PayResultVo;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService; import com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService;
import com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo;
import com.liquidnet.service.order.utils.*; import com.liquidnet.service.order.utils.*;
import com.taobao.api.TaobaoClient; import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest; import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest;
...@@ -255,6 +256,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -255,6 +256,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
} }
// 获取限购 实名 // 获取限购 实名
Integer timeRealNameLimit = ticketTimesData.getRealNameLimit();
if (timeRealNameLimit == null) {
timeRealNameLimit = 0;
}
int ticketLimit = 1; int ticketLimit = 1;
int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购 int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购
int ticketIdCount = ticketData.getIdCount();//实名票种限购 int ticketIdCount = ticketData.getIdCount();//实名票种限购
...@@ -399,25 +404,41 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -399,25 +404,41 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购 //限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if (entersVoList.size() > 0) { if (entersVoList.size() > 0) {
for (int i = 0; i < entersVoList.size(); i++) { for (int i = 0; i < entersVoList.size(); i++) {
dataUtils.changeBuyInfo(uid, entersVoList.get(i).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), 1); AdamEntersVo adamEntersVo = entersVoList.get(i);
String res1 = orderUtils.judgeOrderLimit(uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, memberType, isTrueName); dataUtils.changeBuyInfo(uid, adamEntersVo.getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), 1);
if (!res1.equals("")) { 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++) { for (int x = 0; x <= i; x++) {
dataUtils.changeBuyInfo(uid, entersVoList.get(x).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), -1); dataUtils.changeBuyInfo(uid, entersVoList.get(x).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), -1);
} }
orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber()); orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber());
orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid); 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 { } else {
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getNumber()); dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), payOrderParam.getNumber());
String res1 = orderUtils.judgeOrderLimit(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, memberType, isTrueName); LimitErrorResultVo limitResult = orderUtils.judgeOrderLimit(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), payOrderParam.getTimeId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, timeRealNameLimit, memberType, isTrueName);
if (!res1.equals("")) { if (limitResult != null) {
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), -payOrderParam.getNumber()); dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), -payOrderParam.getNumber());
orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber()); orderUtils.changeSurplus(isPay, payOrderParam.getTicketId(), payOrderParam.getNumber());
orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid); 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);//返回完整的限购错误信息
} }
} }
...@@ -435,11 +456,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -435,11 +456,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
dataUtils.decrUseCouponCount(uid, performanceId); dataUtils.decrUseCouponCount(uid, performanceId);
} }
for (AdamEntersVo enters : entersVoList) { for (AdamEntersVo enters : entersVoList) {
dataUtils.changeBuyInfo(uid, enters.getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), -1); dataUtils.changeBuyInfo(uid, enters.getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), payOrderParam.getTimeId(), -1);
} }
if (entersVoList.size() == 0) { if (entersVoList.size() == 0) {
for (int i = 0; i < payOrderParam.getNumber(); i++) { for (int i = 0; i < payOrderParam.getNumber(); i++) {
dataUtils.changeBuyInfo(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), -1); dataUtils.changeBuyInfo(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), payOrderParam.getTimeId(), -1);
} }
} }
} }
......
...@@ -130,11 +130,12 @@ public class DataUtils { ...@@ -130,11 +130,12 @@ public class DataUtils {
* @param ticketId 票种id * @param ticketId 票种id
* @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表 * @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表
*/ */
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) { public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, String timeId, int buyCount) {
String redisKeyUid; String redisKeyUid;
String redisKeyIdCard; String redisKeyIdCard;
String performanceIdKeyIdCard = ""; String performanceIdKeyIdCard = "";
String ticketIdKeyIdCard = ""; String ticketIdKeyIdCard = "";
String timeIdKeyIdCard = "";
int isTrueName = getPerformanceIsTrueName(performanceId); int isTrueName = getPerformanceIsTrueName(performanceId);
...@@ -145,6 +146,7 @@ public class DataUtils { ...@@ -145,6 +146,7 @@ public class DataUtils {
if (isTrueName != 0) { if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId; performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId; ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
timeIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TIME_ID + ":" + timeId;
} }
if (buyCount > 0) { if (buyCount > 0) {
...@@ -153,11 +155,13 @@ public class DataUtils { ...@@ -153,11 +155,13 @@ public class DataUtils {
if (isTrueName != 0) { if (isTrueName != 0) {
redisUtil.incr(ticketIdKeyIdCard, buyCount); redisUtil.incr(ticketIdKeyIdCard, buyCount);
redisUtil.incr(performanceIdKeyIdCard, buyCount); redisUtil.incr(performanceIdKeyIdCard, buyCount);
redisUtil.incr(timeIdKeyIdCard, buyCount);
} }
} else { } else {
if (isTrueName != 0) { if (isTrueName != 0) {
redisUtil.decr(ticketIdKeyIdCard, Math.abs(buyCount)); redisUtil.decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyIdCard, Math.abs(buyCount)); redisUtil.decr(performanceIdKeyIdCard, Math.abs(buyCount));
redisUtil.decr(timeIdKeyIdCard, Math.abs(buyCount));
} }
redisUtil.decr(ticketIdKeyUid, Math.abs(buyCount)); redisUtil.decr(ticketIdKeyUid, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyUid, Math.abs(buyCount)); redisUtil.decr(performanceIdKeyUid, Math.abs(buyCount));
...@@ -202,6 +206,15 @@ public class DataUtils { ...@@ -202,6 +206,15 @@ public class DataUtils {
} }
} }
// 获取 证件维度 场次购买数量
public int getIdCardMBuyCount(String idCard, String timeId) {
try {
return (int) redisUtil.get(KylinRedisConst.IDCARD_BUY_INFO + idCard + ":" + KylinRedisConst.TIME_ID + ":" + timeId);
} catch (Exception e) {
return 0;
}
}
/** /**
* 删除订单redis * 删除订单redis
* *
......
...@@ -20,6 +20,9 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo; ...@@ -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.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.returns.InnerReturnVo; import com.liquidnet.service.kylin.dto.vo.returns.InnerReturnVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; 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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -46,24 +49,27 @@ public class OrderUtils { ...@@ -46,24 +49,27 @@ public class OrderUtils {
@Value("${liquidnet.service.smile.url}") @Value("${liquidnet.service.smile.url}")
private String smile; private String smile;
public String judgeOrderLimit( public LimitErrorResultVo judgeOrderLimit(
String userId, String userId,
String idCard, String idCard,
String performanceId, String performanceId,
String ticketId, String ticketId,
String timeId,
int performanceLimitCount, int performanceLimitCount,
int performanceMemberLimitCount, int performanceMemberLimitCount,
int performanceLimitIdCard, int performanceLimitIdCard,
int ticketLimitCount, int ticketLimitCount,
int ticketMemberLimitCount, int ticketMemberLimitCount,
int ticketLimitIdCard, int ticketLimitIdCard,
int timeRealNameLimit,
int memberType, int memberType,
int isTrueName int isTrueName
) { ) {
Integer[] integers = orderLimit(userId, idCard, performanceId, ticketId, isTrueName); Integer[] integers = orderLimit(userId, idCard, performanceId, ticketId, timeId, isTrueName);
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, performanceLimitIdCard, return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, performanceLimitIdCard,
ticketLimitCount, ticketMemberLimitCount, ticketLimitIdCard, ticketLimitCount, ticketMemberLimitCount, ticketLimitIdCard, timeRealNameLimit,
memberType, integers[0], integers[1], integers[2], integers[3], isTrueName); memberType, integers[0], integers[1], integers[2], integers[3], integers[4], isTrueName);
} }
public Integer[] orderLimit( public Integer[] orderLimit(
...@@ -71,75 +77,157 @@ public class OrderUtils { ...@@ -71,75 +77,157 @@ public class OrderUtils {
String idCard, String idCard,
String performanceId, String performanceId,
String ticketId, String ticketId,
String timeId,
int isTrueName int isTrueName
) { ) {
int performanceBuyCountUid = 0; int performanceBuyCountUid = 0;
int ticketBuyCountUid = 0; int ticketBuyCountUid = 0;
int performanceBuyCountIdCard = 0; int performanceBuyCountIdCard = 0;
int ticketBuyCountIdCard = 0; int ticketBuyCountIdCard = 0;
int timeBuyCountIdCard = 0;
if (1 == isTrueName) {//实名 if (1 == isTrueName) {//实名
performanceBuyCountIdCard = dataUtils.getIdCardPBuyCount(idCard, performanceId); performanceBuyCountIdCard = dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCountIdCard = dataUtils.getIdCardTBuyCount(idCard, ticketId); ticketBuyCountIdCard = dataUtils.getIdCardTBuyCount(idCard, ticketId);
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId); performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId); ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
timeBuyCountIdCard = dataUtils.getIdCardMBuyCount(idCard, timeId);
} else {//非实名 } else {//非实名
performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId); performanceBuyCountUid = dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId); ticketBuyCountUid = dataUtils.getUserTBuyCount(userId, ticketId);
} }
Integer[] array = new Integer[4]; Integer[] array = new Integer[5];
array[0] = performanceBuyCountUid; array[0] = performanceBuyCountUid;
array[1] = ticketBuyCountUid; array[1] = ticketBuyCountUid;
array[2] = performanceBuyCountIdCard; array[2] = performanceBuyCountIdCard;
array[3] = ticketBuyCountIdCard; array[3] = ticketBuyCountIdCard;
array[4] = timeBuyCountIdCard;
return array; 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 memberType, int ticketLimitCount, int ticketMemberLimitCount, int ticketLimitIdCard, int timeRealNameLimit, int memberType,
int performanceBuyCountUid, int ticketBuyCountUid, int performanceBuyCountIdCard, int ticketBuyCountIdCard, int isTrueName) { int performanceBuyCountUid, int ticketBuyCountUid, int performanceBuyCountIdCard, int ticketBuyCountIdCard,
int timeBuyCountIdCard,
int isTrueName) {
if (isTrueName == 1 && timeRealNameLimit != 0) {
if (timeBuyCountIdCard > 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 (memberType == 1 || memberType == 2) {
if (isTrueName == 1) { if (isTrueName == 1) {
if (performanceBuyCountIdCard > performanceMemberLimitCount && performanceMemberLimitCount != 0) { 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) { 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 { } else {
if (performanceBuyCountUid > performanceMemberLimitCount && performanceMemberLimitCount != 0) { 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) { 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 {//非会员区间 } else {//非会员区间
if (isTrueName == 1) { if (isTrueName == 1) {
if (performanceBuyCountIdCard > performanceLimitIdCard && performanceLimitIdCard != 0) { 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) { 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) { 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) { 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 { } else {
if (performanceBuyCountUid > performanceLimitCount && performanceLimitCount != 0) { 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) { 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;
} }
......
...@@ -261,7 +261,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -261,7 +261,7 @@ public class KylinRefundsStatusServiceImpl {
int surplusGeneral = dataUtils.changeSurplusGeneral(entitiesInfo.getTicketId(), 1); int surplusGeneral = dataUtils.changeSurplusGeneral(entitiesInfo.getTicketId(), 1);
log.info("refundCallback回滚库存res: [surplusGeneral={},ticketId={},orderRefundCode={}]", surplusGeneral, entitiesInfo.getTicketId(), refundCallbackParam.getOrderRefundCode()); log.info("refundCallback回滚库存res: [surplusGeneral={},ticketId={},orderRefundCode={}]", surplusGeneral, entitiesInfo.getTicketId(), refundCallbackParam.getOrderRefundCode());
log.info(UserPathDto.setData("changeBuyInfo", "UserId=" + orderInfo.getUserId() + "idCard=" + entitiesInfo.getEnterIdCode() + " PerformanceId=" + orderRelations.getPerformanceId() + " TicketId=" + entitiesInfo.getTicketId(), "info")); log.info(UserPathDto.setData("changeBuyInfo", "UserId=" + orderInfo.getUserId() + "idCard=" + entitiesInfo.getEnterIdCode() + " PerformanceId=" + orderRelations.getPerformanceId() + " TicketId=" + entitiesInfo.getTicketId(), "info"));
dataUtils.changeBuyInfo(orderInfo.getUserId(), entitiesInfo.getEnterIdCode(), orderRelations.getPerformanceId(), entitiesInfo.getTicketId(), -1); dataUtils.changeBuyInfo(orderInfo.getUserId(), entitiesInfo.getEnterIdCode(), orderRelations.getPerformanceId(), entitiesInfo.getTicketId(), entitiesInfo.getTimeId(), -1);
} }
} }
if (newStatus == KylinTableStatusConst.ORDER_STATUS4) { if (newStatus == KylinTableStatusConst.ORDER_STATUS4) {
......
...@@ -283,11 +283,12 @@ public class DataUtils { ...@@ -283,11 +283,12 @@ public class DataUtils {
* @param ticketId 票种id * @param ticketId 票种id
* @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表 * @param buyCount 购买数量 大于 0 增加 小于 0 减少 对应 支付 退款表
*/ */
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) { public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, String timeId, int buyCount) {
String redisKeyUid; String redisKeyUid;
String redisKeyIdCard; String redisKeyIdCard;
String performanceIdKeyIdCard=""; String performanceIdKeyIdCard="";
String ticketIdKeyIdCard=""; String ticketIdKeyIdCard="";
String timeIdKeyIdCard = "";
int isTrueName = getPerformanceIsTrueName(performanceId); int isTrueName = getPerformanceIsTrueName(performanceId);
...@@ -298,6 +299,7 @@ public class DataUtils { ...@@ -298,6 +299,7 @@ public class DataUtils {
if (isTrueName != 0) { if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId; performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId; ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
timeIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TIME_ID + ":" + timeId;
} }
if (buyCount > 0) { if (buyCount > 0) {
...@@ -306,11 +308,13 @@ public class DataUtils { ...@@ -306,11 +308,13 @@ public class DataUtils {
if (isTrueName != 0) { if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount); redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount); redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(timeIdKeyIdCard, buyCount);
} }
} else { } else {
if (isTrueName != 0) { if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyIdCard, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyIdCard, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(timeIdKeyIdCard, Math.abs(buyCount));
} }
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyUid, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyUid, Math.abs(buyCount));
redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyUid, Math.abs(buyCount)); redisDataSourceUtil.getRedisKylinUtil().decr(performanceIdKeyUid, Math.abs(buyCount));
......
...@@ -107,6 +107,9 @@ public class KylinPerformancesPartnerServiceImpl implements IKylinPerformancesPa ...@@ -107,6 +107,9 @@ public class KylinPerformancesPartnerServiceImpl implements IKylinPerformancesPa
PerformancePartnerVo performancePartnerVo = PerformancePartnerVo.getNew(); PerformancePartnerVo performancePartnerVo = PerformancePartnerVo.getNew();
BeanUtils.copyProperties(step1Param, performancePartnerVo); BeanUtils.copyProperties(step1Param, performancePartnerVo);
performancePartnerVo.setIsTrueName(0); performancePartnerVo.setIsTrueName(0);
if (step1Param.getType().equals(101)) {
performancePartnerVo.setIsTrueName(1);
}
performancePartnerVo.setLimitCount(0); performancePartnerVo.setLimitCount(0);
performancePartnerVo.setIdCount(0); performancePartnerVo.setIdCount(0);
performancePartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); performancePartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
......
...@@ -94,6 +94,7 @@ public class KylinTicketTimesPartnerServiceImpl implements IKylinTicketTimesPart ...@@ -94,6 +94,7 @@ public class KylinTicketTimesPartnerServiceImpl implements IKylinTicketTimesPart
kylinTicketTimesPartnerVo.setTitle(title); kylinTicketTimesPartnerVo.setTitle(title);
kylinTicketTimesPartnerVo.setPerformancesId(createTicketTimesParam.getPerformancesId()); kylinTicketTimesPartnerVo.setPerformancesId(createTicketTimesParam.getPerformancesId());
kylinTicketTimesPartnerVo.setType(createTicketTimesParam.getType()); kylinTicketTimesPartnerVo.setType(createTicketTimesParam.getType());
kylinTicketTimesPartnerVo.setRealNameLimit(createTicketTimesParam.getRealNameLimit());
kylinTicketTimesPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); kylinTicketTimesPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mongoSlimeUtils.insertTicketTimesPartnerVo(kylinTicketTimesPartnerVo); mongoSlimeUtils.insertTicketTimesPartnerVo(kylinTicketTimesPartnerVo);
return ResponseDto.success(kylinTicketTimesPartnerVo); return ResponseDto.success(kylinTicketTimesPartnerVo);
...@@ -132,6 +133,7 @@ public class KylinTicketTimesPartnerServiceImpl implements IKylinTicketTimesPart ...@@ -132,6 +133,7 @@ public class KylinTicketTimesPartnerServiceImpl implements IKylinTicketTimesPart
kylinTicketTimesPartnerVo.setTitle(title); kylinTicketTimesPartnerVo.setTitle(title);
kylinTicketTimesPartnerVo.setPerformancesId(createTicketTimesParam.getPerformancesId()); kylinTicketTimesPartnerVo.setPerformancesId(createTicketTimesParam.getPerformancesId());
kylinTicketTimesPartnerVo.setType(createTicketTimesParam.getType()); kylinTicketTimesPartnerVo.setType(createTicketTimesParam.getType());
kylinTicketTimesPartnerVo.setRealNameLimit(createTicketTimesParam.getRealNameLimit());
kylinTicketTimesPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); kylinTicketTimesPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mongoSlimeUtils.insertTicketTimesPartnerVo(kylinTicketTimesPartnerVo); mongoSlimeUtils.insertTicketTimesPartnerVo(kylinTicketTimesPartnerVo);
return ResponseDto.success(kylinTicketTimesPartnerVo); return ResponseDto.success(kylinTicketTimesPartnerVo);
......
...@@ -495,6 +495,10 @@ public class PerformanceUtils { ...@@ -495,6 +495,10 @@ public class PerformanceUtils {
log.info("performanceId = " + performanceId + " NEED CHANGE TIMES USE_START"); log.info("performanceId = " + performanceId + " NEED CHANGE TIMES USE_START");
return true; return true;
} }
if (!times.getRealNameLimit().equals(timesVo.getRealNameLimit())) {
log.info("performanceId = " + performanceId + " NEED CHANGE TIMES RealNameLimit");
return true;
}
if (!times.getUseEnd().equals(timesVo.getUseEnd())) { if (!times.getUseEnd().equals(timesVo.getUseEnd())) {
log.info("performanceId = " + performanceId + " NEED CHANGE TIMES USE_END"); log.info("performanceId = " + performanceId + " NEED CHANGE TIMES USE_END");
return true; return true;
......
...@@ -60,7 +60,7 @@ kylin_performance_relations.insert=INSERT INTO kylin_performance_relations (perf ...@@ -60,7 +60,7 @@ kylin_performance_relations.insert=INSERT INTO kylin_performance_relations (perf
kylin_ticket_times.del=DELETE FROM kylin_ticket_times WHERE ticket_times_id = ? kylin_ticket_times.del=DELETE FROM kylin_ticket_times WHERE ticket_times_id = ?
kylin_ticket_time_relation.del=DELETE FROM kylin_ticket_time_relation WHERE times_id = ? kylin_ticket_time_relation.del=DELETE FROM kylin_ticket_time_relation WHERE times_id = ?
kylin_ticket_times.insert=INSERT INTO kylin_ticket_times (ticket_times_id,title,status,type,use_start,use_end,comment,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?) kylin_ticket_times.insert=INSERT INTO kylin_ticket_times (ticket_times_id,title,status,type,use_start,use_end,comment,created_at,updated_at,real_name_limit) VALUES (?,?,?,?,?,?,?,?,?,?)
kylin_ticket_time_relation.insert=INSERT INTO kylin_ticket_time_relation (ticket_time_relation_id,times_id,performance_id,created_at,updated_at) VALUES (?,?,?,?,?) kylin_ticket_time_relation.insert=INSERT INTO kylin_ticket_time_relation (ticket_time_relation_id,times_id,performance_id,created_at,updated_at) VALUES (?,?,?,?,?)
kylin_tickets.del=DELETE FROM kylin_tickets WHERE tickets_id = ? kylin_tickets.del=DELETE FROM kylin_tickets WHERE tickets_id = ?
......
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