记得上下班打卡 | 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 {
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 TIME_ID = "timeId";
public static final String USE_TIME = "useTime";
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 {
@NotNull(message = "不能为空")
private Integer type;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启", example = "0")
@NotNull(message = "实名认证限购不能为空")
private Integer realNameLimit;
@ApiModelProperty(value = "", example = "")
@JsonIgnore
private String createdAt;
......
......@@ -44,6 +44,9 @@ public class PerformanceStep2Param implements Serializable,Cloneable {
@ApiModelProperty(hidden = true)
private String merchantId;
@ApiModelProperty(value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧", example = "3")
private Integer type;
@ApiModelProperty(value = "场次数据",hidden = true)
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{
private String useStart;
@ApiModelProperty(value = "适用结束时间")
private String useEnd;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启")
private Integer realNameLimit;
@ApiModelProperty(value = "票种")
private List<KylinTicketVo> ticketList;
......@@ -47,6 +49,7 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{
this.ticketTimesId = ticketTimes.getTicketTimesId();
this.title = ticketTimes.getTitle();
this.type = ticketTimes.getType();
this.realNameLimit = ticketTimes.getRealNameLimit();
this.useStart = DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseStart());
this.useEnd = DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseEnd());
}
......@@ -57,5 +60,6 @@ public class KylinTicketTimesVo implements Serializable,Cloneable{
this.type = ticketTimes.getType();
this.useStart = ticketTimes.getUseStart();
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{
@ApiModelProperty(value = "是否开启缺票登记")
private Integer isLackRegister;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启")
private Integer realNameLimit;
@ApiModelProperty(value = "创建时间")
private String createdAt;
......@@ -61,6 +63,7 @@ public class KylinTicketTimesPartnerVo implements Serializable ,Cloneable{
this.setUseEnd(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUseEnd()));
this.setStatus(ticketTimes.getStatus());
this.setType(ticketTimes.getType());
this.setRealNameLimit(ticketTimes.getRealNameLimit());
this.setCreatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getCreatedAt()));
this.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(ticketTimes.getUpdatedAt()));
return this;
......
......@@ -31,6 +31,9 @@ public class TicketTimesTicketCreatePartnerVo implements Serializable ,Cloneable
@ApiModelProperty(value = "状态 1单日票 2通票")
private Integer type;
@ApiModelProperty(value = "是否开启实名认证限购 0关闭 1开启")
private Integer realNameLimit;
@ApiModelProperty(value = "创建时间")
private String createdAt;
......
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() {
......
......@@ -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.PayOrderParam;
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.entity.KylinOrderTickets;
......@@ -73,4 +74,6 @@ public interface IKylinOrderTicketsService {
//获取 订单Ar激活码
ResponseDto<List<String>> getOrderArCode(String orderId);
ResponseDto<List<LimitErrorResultVo>> limitInfo(List<LimitErrorResultVo> param);
}
......@@ -117,6 +117,14 @@
<label>演出实名限购:</label>
<span th:text="*{idCount}"></span>
</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">
<label>时间:</label>
<span th:text="*{timeStart}"></span>
......
......@@ -69,6 +69,11 @@ public class KylinTicketTimes implements Serializable ,Cloneable {
*/
private LocalDateTime updatedAt;
/**
* 是否开启实名认证限购 0关闭 1开启
*/
private Integer realNameLimit;
private static final KylinTicketTimes obj = new KylinTicketTimes();
public static KylinTicketTimes getNew() {
try {
......@@ -82,7 +87,8 @@ public class KylinTicketTimes implements Serializable ,Cloneable {
return new Object[]{
vo.getTicketTimesId(),vo.getTitle(),vo.getStatus(),
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
// redis 改限购
for (int i = 0; i < kylinOrderTicketVo.getEntitiesVoList().size(); 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());
......
......@@ -135,11 +135,12 @@ public class KylinOrderUtils {
* @param ticketId
* @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 redisKeyIdCard;
String performanceIdKeyIdCard="";
String ticketIdKeyIdCard="";
String timeIdKeyIdCard = "";
int isTrueName = getPerformanceIsTrueName(performanceId);
......@@ -150,6 +151,7 @@ public class KylinOrderUtils {
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
timeIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TIME_ID + ":" + timeId;
}
if (buyCount > 0) {
......@@ -158,11 +160,13 @@ public class KylinOrderUtils {
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(timeIdKeyIdCard, buyCount);
}
} else {
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, 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(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;
import com.liquidnet.service.kylin.dto.param.PayAgainParam;
import com.liquidnet.service.kylin.dto.param.PayOrderParam;
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.service.IKylinOrderTicketsService;
import io.swagger.annotations.*;
......@@ -167,6 +168,13 @@ public class KylinOrderTicketsController {
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")
@ApiOperation("想要退款订单详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
......
......@@ -10,6 +10,7 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.base.constant.MQConst;
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.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*;
......@@ -383,7 +384,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
KylinTicketPartnerVo kylinTicketPartnerVo = dataUtils.getKylinTicketPartnerVoByTicketId(ticketsId);
if (null != kylinTicketPartnerVo && null != kylinTicketPartnerVo.getViewersNumber()) {
return kylinTicketPartnerVo.getViewersNumber() == 1;
}else {
} else {
log.info("[isSingleTicket] 票信息为空, ticketsId: {}", ticketsId);
return false;
}
......@@ -1364,4 +1365,36 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
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;
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;
......@@ -255,6 +256,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
// 获取限购 实名
Integer timeRealNameLimit = ticketTimesData.getRealNameLimit();
if (timeRealNameLimit == null) {
timeRealNameLimit = 0;
}
int ticketLimit = 1;
int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购
int ticketIdCount = ticketData.getIdCount();//实名票种限购
......@@ -399,25 +404,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(), 1);
String res1 = orderUtils.judgeOrderLimit(uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, 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(), -1);
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.getNumber());
String res1 = orderUtils.judgeOrderLimit(uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, performanceIdCount, ticketLimit, ticketMemberLimit, ticketIdCount, memberType, isTrueName);
if (!res1.equals("")) {
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), -payOrderParam.getNumber());
dataUtils.changeBuyInfo(uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), payOrderParam.getTimeId(), payOrderParam.getNumber());
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);//返回完整的限购错误信息
}
}
......@@ -435,11 +456,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
dataUtils.decrUseCouponCount(uid, performanceId);
}
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) {
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 {
* @param ticketId 票种id
* @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 redisKeyIdCard;
String performanceIdKeyIdCard = "";
String ticketIdKeyIdCard = "";
String timeIdKeyIdCard = "";
int isTrueName = getPerformanceIsTrueName(performanceId);
......@@ -145,6 +146,7 @@ public class DataUtils {
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
timeIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TIME_ID + ":" + timeId;
}
if (buyCount > 0) {
......@@ -153,11 +155,13 @@ public class DataUtils {
if (isTrueName != 0) {
redisUtil.incr(ticketIdKeyIdCard, buyCount);
redisUtil.incr(performanceIdKeyIdCard, buyCount);
redisUtil.incr(timeIdKeyIdCard, buyCount);
}
} else {
if (isTrueName != 0) {
redisUtil.decr(ticketIdKeyIdCard, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyIdCard, Math.abs(buyCount));
redisUtil.decr(timeIdKeyIdCard, Math.abs(buyCount));
}
redisUtil.decr(ticketIdKeyUid, Math.abs(buyCount));
redisUtil.decr(performanceIdKeyUid, Math.abs(buyCount));
......@@ -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
*
......
......@@ -261,7 +261,7 @@ public class KylinRefundsStatusServiceImpl {
int surplusGeneral = dataUtils.changeSurplusGeneral(entitiesInfo.getTicketId(), 1);
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"));
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) {
......
......@@ -283,11 +283,12 @@ public class DataUtils {
* @param ticketId 票种id
* @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 redisKeyIdCard;
String performanceIdKeyIdCard="";
String ticketIdKeyIdCard="";
String timeIdKeyIdCard = "";
int isTrueName = getPerformanceIsTrueName(performanceId);
......@@ -298,6 +299,7 @@ public class DataUtils {
if (isTrueName != 0) {
performanceIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
ticketIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
timeIdKeyIdCard = redisKeyIdCard + ":" + KylinRedisConst.TIME_ID + ":" + timeId;
}
if (buyCount > 0) {
......@@ -306,11 +308,13 @@ public class DataUtils {
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().incr(ticketIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(performanceIdKeyIdCard, buyCount);
redisDataSourceUtil.getRedisKylinUtil().incr(timeIdKeyIdCard, buyCount);
}
} else {
if (isTrueName != 0) {
redisDataSourceUtil.getRedisKylinUtil().decr(ticketIdKeyIdCard, 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(performanceIdKeyUid, Math.abs(buyCount));
......
......@@ -107,6 +107,9 @@ public class KylinPerformancesPartnerServiceImpl implements IKylinPerformancesPa
PerformancePartnerVo performancePartnerVo = PerformancePartnerVo.getNew();
BeanUtils.copyProperties(step1Param, performancePartnerVo);
performancePartnerVo.setIsTrueName(0);
if (step1Param.getType().equals(101)) {
performancePartnerVo.setIsTrueName(1);
}
performancePartnerVo.setLimitCount(0);
performancePartnerVo.setIdCount(0);
performancePartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
......
......@@ -94,6 +94,7 @@ public class KylinTicketTimesPartnerServiceImpl implements IKylinTicketTimesPart
kylinTicketTimesPartnerVo.setTitle(title);
kylinTicketTimesPartnerVo.setPerformancesId(createTicketTimesParam.getPerformancesId());
kylinTicketTimesPartnerVo.setType(createTicketTimesParam.getType());
kylinTicketTimesPartnerVo.setRealNameLimit(createTicketTimesParam.getRealNameLimit());
kylinTicketTimesPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mongoSlimeUtils.insertTicketTimesPartnerVo(kylinTicketTimesPartnerVo);
return ResponseDto.success(kylinTicketTimesPartnerVo);
......@@ -132,6 +133,7 @@ public class KylinTicketTimesPartnerServiceImpl implements IKylinTicketTimesPart
kylinTicketTimesPartnerVo.setTitle(title);
kylinTicketTimesPartnerVo.setPerformancesId(createTicketTimesParam.getPerformancesId());
kylinTicketTimesPartnerVo.setType(createTicketTimesParam.getType());
kylinTicketTimesPartnerVo.setRealNameLimit(createTicketTimesParam.getRealNameLimit());
kylinTicketTimesPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mongoSlimeUtils.insertTicketTimesPartnerVo(kylinTicketTimesPartnerVo);
return ResponseDto.success(kylinTicketTimesPartnerVo);
......
......@@ -495,6 +495,10 @@ public class PerformanceUtils {
log.info("performanceId = " + performanceId + " NEED CHANGE TIMES USE_START");
return true;
}
if (!times.getRealNameLimit().equals(timesVo.getRealNameLimit())) {
log.info("performanceId = " + performanceId + " NEED CHANGE TIMES RealNameLimit");
return true;
}
if (!times.getUseEnd().equals(timesVo.getUseEnd())) {
log.info("performanceId = " + performanceId + " NEED CHANGE TIMES USE_END");
return true;
......
......@@ -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_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_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