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

Commit 28e90242 authored by 胡佳晨's avatar 胡佳晨

Merge branch 'dev_transfer' into pre

# Conflicts:
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
parents be8681e5 9b2d2f09
-- 退款转赠添加 --
ALTER TABLE kylin_performance_status ADD is_transfer tinyint DEFAULT 0 COMMENT '是否支持转赠';
ALTER TABLE kylin_performance_status ADD transfer_start_time datetime NULL DEFAULT NULL COMMENT '转赠开启时间';
ALTER TABLE kylin_performance_status ADD transfer_end_time datetime NULL DEFAULT NULL COMMENT '转赠结束时间';
ALTER TABLE kylin_order_ticket_relations ADD transfer_uid varchar(255) DEFAULT "" COMMENT '转赠用户id';
drop table if exists kylin_order_task;
create table kylin_order_task
(
mid bigint unsigned auto_increment primary key,
order_id varchar(64) default '',
status int(3) comment '状态 [10-转赠订单可失效]',
created_at datetime ,
updated_at datetime ,
comment text
) engine = InnoDB comment '订单定时任务表';
\ No newline at end of file
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel(value = "AdamUserInfoVo", description = "用户详情")
@Data
public class AdamUserInfoSimpleVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 8479869354894030303L;
@ApiModelProperty(position = 10, value = "用户ID[64]")
private String uid;
@ApiModelProperty(position = 11, value = "手机号[20]")
private String mobile;
@ApiModelProperty(position = 14, value = "昵称[32]")
private String nickname;
private static final AdamUserInfoSimpleVo obj = new AdamUserInfoSimpleVo();
public static AdamUserInfoSimpleVo getNew() {
try {
return (AdamUserInfoSimpleVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamUserInfoSimpleVo();
}
}
...@@ -26,6 +26,8 @@ public class KylinRedisConst { ...@@ -26,6 +26,8 @@ public class KylinRedisConst {
public static final String ORDER_REFUND_BY_ORDER_ID = "kylin:order:refund:orderId:"; public static final String ORDER_REFUND_BY_ORDER_ID = "kylin:order:refund:orderId:";
public static final String ORDER_REFUND = "kylin:order:refund:orderRefundsId:"; public static final String ORDER_REFUND = "kylin:order:refund:orderRefundsId:";
public static final String ORDER_TRANSFER = "kylin:order:transfer:uid:";
public static final String USERID_BUY_INFO = "kylin:buy:userId:"; public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:"; public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
public static final String PERFORMANCE_ID = "performanceId"; public static final String PERFORMANCE_ID = "performanceId";
......
package com.liquidnet.service.kylin.dto.vo.admin;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ApiModel
@Data
public class PerformanceTransferConfigVo {
private String performancesId;
private String title;
private Integer isCanTransfer;
private String transferStartTime;
private String transferEndTime;
}
...@@ -16,7 +16,7 @@ import java.util.List; ...@@ -16,7 +16,7 @@ import java.util.List;
@ApiModel(value = "KylinOrderTicketVo", description = "订单数据") @ApiModel(value = "KylinOrderTicketVo", description = "订单数据")
@Data @Data
public class KylinOrderTicketVo implements Serializable,Cloneable { public class KylinOrderTicketVo implements Serializable, Cloneable {
private Integer mid; private Integer mid;
private static final long serialVersionUID = 5325511589667456213L; private static final long serialVersionUID = 5325511589667456213L;
@ApiModelProperty(position = 10, value = "ID") @ApiModelProperty(position = 10, value = "ID")
...@@ -29,9 +29,13 @@ public class KylinOrderTicketVo implements Serializable,Cloneable { ...@@ -29,9 +29,13 @@ public class KylinOrderTicketVo implements Serializable,Cloneable {
private String userMobile; private String userMobile;
@ApiModelProperty(position = 14, value = "演出名称") @ApiModelProperty(position = 14, value = "演出名称")
private String performanceTitle; private String performanceTitle;
@ApiModelProperty(position = 15, value = "票种名称")
private String ticketTitle; private String ticketTitle;
@ApiModelProperty(position = 15, value = "开始时间")
private String timeStart; private String timeStart;
@ApiModelProperty(position = 15, value = "适用时间")
private String useStart; private String useStart;
@ApiModelProperty(position = 15, value = "演出图片")
private String performanceImg; private String performanceImg;
@ApiModelProperty(position = 15, value = "订单号") @ApiModelProperty(position = 15, value = "订单号")
private String orderCode; private String orderCode;
...@@ -81,51 +85,81 @@ public class KylinOrderTicketVo implements Serializable,Cloneable { ...@@ -81,51 +85,81 @@ public class KylinOrderTicketVo implements Serializable,Cloneable {
private String getTicketDescribe; private String getTicketDescribe;
@ApiModelProperty(position = 38, value = "订单过期时间(分钟)") @ApiModelProperty(position = 38, value = "订单过期时间(分钟)")
private Integer payCountdownMinute; private Integer payCountdownMinute;
@ApiModelProperty(position = 15, value = "快递方式")
private Integer expressType; private Integer expressType;
@ApiModelProperty(position = 15, value = "是否学生票")
private Integer isStudent; private Integer isStudent;
@ApiModelProperty(position = 15, value = "转赠状态[0可转赠,1转赠中,2已转赠,3转赠订单,4待接收,5被退回,6已退回]")
private Integer transferStatus; private Integer transferStatus;
@ApiModelProperty(position = 15, value = "订单状态[订单状态:0待付款,1已付款,2已关闭,3正在退款,4已退款, 5待关闭 6部分退款]")
private Integer status; private Integer status;
@ApiModelProperty(position = 15, value = "支付状态[支付状态:0未支付 1已支付 2支付失败]")
private Integer payStatus; private Integer payStatus;
@ApiModelProperty(position = 15, value = "转赠订单id")
private String transferId; private String transferId;
@ApiModelProperty(position = 15, value = "转赠用户id")
private String transferUid;
@ApiModelProperty(position = 15, value = "直播id")
private String liveId; private String liveId;
@ApiModelProperty(position = 15, value = "演出id")
private String performanceId; private String performanceId;
@ApiModelProperty(position = 15, value = "场次id")
private String timeId; private String timeId;
@ApiModelProperty(position = 15, value = "票种id")
private String ticketId; private String ticketId;
@ApiModelProperty(position = 15, value = "代理id")
private String agentId; private String agentId;
@ApiModelProperty(position = 15, value = "是否会员")
private Integer isMember; private Integer isMember;
@ApiModelProperty(position = 15, value = "订单过期日期")
private String overdueAt; private String overdueAt;
@ApiModelProperty(position = 15, value = "创建时间")
private String createdAt; private String createdAt;
@ApiModelProperty(position = 15, value = "更新时间")
private String updatedAt; private String updatedAt;
// private Integer isCanRefund; // private Integer isCanRefund;
@ApiModelProperty(position = 15, value = "退款相关列表")
private List<OrderRefundListVo> orderRefundListVos; private List<OrderRefundListVo> orderRefundListVos;
private LocalDateTime changeDate; private LocalDateTime changeDate;
@ApiModelProperty(position = 15, value = "是否实名")
private Integer isTrueName; private Integer isTrueName;
@ApiModelProperty(position = 15, value = "购票须知")
private String noticeImage; private String noticeImage;
private String notice; private String notice;
@ApiModelProperty(position = 15, value = "票种类型")
private Integer ticketType; private Integer ticketType;
@ApiModelProperty(position = 15, value = "演出名称")
private String fieldName; private String fieldName;
@ApiModelProperty(position = 20, value = "转赠时间")
private String transferTime;
@ApiModelProperty(position = 15, value = "票单列表")
private List<KylinOrderTicketEntitiesVo> entitiesVoList; private List<KylinOrderTicketEntitiesVo> entitiesVoList;
public void setTransferTime(String transferTime) {
this.transferTime = transferTime==null?"":transferTime;
}
public String getTransferTime() {
return transferTime==null?"":transferTime;
}
public void setOrderTicket(KylinOrderTickets orderTicket) { public void setOrderTicket(KylinOrderTickets orderTicket) {
BeanUtils.copyProperties(orderTicket,this); BeanUtils.copyProperties(orderTicket, this);
} }
public void setOrderTicketStatus(KylinOrderTicketStatus orderTicketStatus) { public void setOrderTicketStatus(KylinOrderTicketStatus orderTicketStatus) {
BeanUtils.copyProperties(orderTicketStatus,this); BeanUtils.copyProperties(orderTicketStatus, this);
} }
public void setOrderTicketRelation(KylinOrderTicketRelations orderTicketRelation) { public void setOrderTicketRelation(KylinOrderTicketRelations orderTicketRelation) {
BeanUtils.copyProperties(orderTicketRelation,this); BeanUtils.copyProperties(orderTicketRelation, this);
} }
private static final KylinOrderTicketVo obj = new KylinOrderTicketVo(); private static final KylinOrderTicketVo obj = new KylinOrderTicketVo();
public static KylinOrderTicketVo getNew() { public static KylinOrderTicketVo getNew() {
try { try {
return (KylinOrderTicketVo) obj.clone(); return (KylinOrderTicketVo) obj.clone();
......
...@@ -112,6 +112,14 @@ public class KylinPerformanceVo { ...@@ -112,6 +112,14 @@ public class KylinPerformanceVo {
private String refundOpenTime; private String refundOpenTime;
private String refundCloseTime; private String refundCloseTime;
private Integer isTransfer;
private String transferStartTime;
private String transferEndTime;
// private Integer isRefundPoundage;
// private Integer isRefundVoucher;
// private Integer isRefundExpress;
public void setPerformance(KylinPerformances performance) { public void setPerformance(KylinPerformances performance) {
this.mid = performance.getMid(); this.mid = performance.getMid();
this.performancesId = performance.getPerformancesId(); this.performancesId = performance.getPerformancesId();
...@@ -120,13 +128,13 @@ public class KylinPerformanceVo { ...@@ -120,13 +128,13 @@ public class KylinPerformanceVo {
this.timeStart = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeStart()); this.timeStart = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeStart());
this.timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeEnd()); this.timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeEnd());
this.type = performance.getType(); this.type = performance.getType();
this.details =performance.getDetails(); this.details = performance.getDetails();
this.noticeImage = performance.getNoticeImage(); this.noticeImage = performance.getNoticeImage();
this.notice=performance.getNotice(); this.notice = performance.getNotice();
this.approvalUrl=performance.getApprovalUrl(); this.approvalUrl = performance.getApprovalUrl();
} }
public void setTimePriceVipAndLack(int isLackRegister, int isMember, int isExclusive, BigDecimal price, LocalDateTime stopSellTime, LocalDateTime sellMemberTime,LocalDateTime sellTime,int isAdvance,int isDiscount,int payCountdownMinute) { public void setTimePriceVipAndLack(int isLackRegister, int isMember, int isExclusive, BigDecimal price, LocalDateTime stopSellTime, LocalDateTime sellMemberTime, LocalDateTime sellTime, int isAdvance, int isDiscount, int payCountdownMinute) {
this.isLackRegister = isLackRegister; this.isLackRegister = isLackRegister;
this.isMember = isMember; this.isMember = isMember;
this.isExclusive = isExclusive; this.isExclusive = isExclusive;
...@@ -141,7 +149,7 @@ public class KylinPerformanceVo { ...@@ -141,7 +149,7 @@ public class KylinPerformanceVo {
this.payCountdownMinute = payCountdownMinute; this.payCountdownMinute = payCountdownMinute;
} }
public void setFieldsData(KylinFields fields,String cityName){ public void setFieldsData(KylinFields fields, String cityName) {
this.longitude = fields.getLongitude(); this.longitude = fields.getLongitude();
this.latitude = fields.getLatitude(); this.latitude = fields.getLatitude();
this.cityName = cityName; this.cityName = cityName;
...@@ -156,11 +164,14 @@ public class KylinPerformanceVo { ...@@ -156,11 +164,14 @@ public class KylinPerformanceVo {
this.limitCount = performanceStatus.getLimitCount(); this.limitCount = performanceStatus.getLimitCount();
this.limitCountMember = performanceStatus.getLimitCountMember(); this.limitCountMember = performanceStatus.getLimitCountMember();
this.sysDamai = performanceStatus.getSyncDamai(); this.sysDamai = performanceStatus.getSyncDamai();
this.isShow=performanceStatus.getIsShow(); this.isShow = performanceStatus.getIsShow();
this.isCanRefund = performanceStatus.getIsCanRefund(); this.isCanRefund = performanceStatus.getIsCanRefund();
this.isOpenRefundPresent = performanceStatus.getIsOpenRefundPresent(); this.isOpenRefundPresent = performanceStatus.getIsOpenRefundPresent();
this.refundOpenTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundOpenTime()); this.refundOpenTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundOpenTime());
this.refundCloseTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundCloseTime()); this.refundCloseTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundCloseTime());
this.isTransfer = performanceStatus.getIsTransfer();
this.transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferStartTime());
this.transferEndTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferEndTime());
} }
public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) { public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) {
......
package com.liquidnet.service.kylin.dto.vo.returns; package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
@Data @Data
public class KylinOrderListVo implements Serializable,Cloneable { @ApiModel
public class KylinOrderListVo implements Serializable, Cloneable {
private static final long serialVersionUID = 6554829077875538374L; private static final long serialVersionUID = 6554829077875538374L;
@ApiModelProperty(value = "订单id", example = "")
private String orderTicketsId; private String orderTicketsId;
@ApiModelProperty(value = "演出id", example = "")
private String performanceId; private String performanceId;
@ApiModelProperty(value = "票种id", example = "")
private String ticketId; private String ticketId;
@ApiModelProperty(value = "演出标题", example = "")
private String performanceTitle; private String performanceTitle;
@ApiModelProperty(value = "演出图片", example = "")
private String performanceImg; private String performanceImg;
@ApiModelProperty(value = "订单号", example = "")
private String orderCode; private String orderCode;
@ApiModelProperty(value = "开售时间", example = "")
private String timeStart; private String timeStart;
@ApiModelProperty(value = "票种名称", example = "")
private String ticketTitle; private String ticketTitle;
@ApiModelProperty(value = "适用开始时间", example = "")
private String useStart; private String useStart;
@ApiModelProperty(value = "订单过期时间", example = "")
private String overdueAt; private String overdueAt;
@ApiModelProperty(value = "过期倒计时", example = "")
private Long restTime; private Long restTime;
@ApiModelProperty(value = "实际支付价格", example = "")
private BigDecimal priceActual; private BigDecimal priceActual;
@ApiModelProperty(value = "数量", example = "")
private Integer number; private Integer number;
@ApiModelProperty(value = "订单状态(订单状态:0待付款,1已付款,2已关闭,3正在退款,4已退款, 5待关闭,6部分退款," +
"11转赠中,12已转赠,13转赠订单,14待接收,15被退回,16已退回)", example = "")
private Integer status; private Integer status;
@ApiModelProperty(value = "快递状态", example = "")
private Integer expressStatus; private Integer expressStatus;
@ApiModelProperty(value = "取票方式", example = "")
private String getTicketType; private String getTicketType;
@ApiModelProperty(value = "转赠状态")
private Integer transferStatus;
@ApiModelProperty(value = "创建时间", example = "")
private String createdAt; private String createdAt;
private static final KylinOrderListVo obj = new KylinOrderListVo(); private static final KylinOrderListVo obj = new KylinOrderListVo();
public static KylinOrderListVo getNew() { public static KylinOrderListVo getNew() {
try { try {
return (KylinOrderListVo) obj.clone(); return (KylinOrderListVo) obj.clone();
...@@ -34,4 +59,63 @@ public class KylinOrderListVo implements Serializable,Cloneable { ...@@ -34,4 +59,63 @@ public class KylinOrderListVo implements Serializable,Cloneable {
return new KylinOrderListVo(); return new KylinOrderListVo();
} }
} }
public void setStatus(Integer status) {
if(status.equals(1) && transferStatus!=null) {
if (this.transferStatus.equals(1)) {
this.status = 11;
} else if (this.transferStatus.equals(2)) {
this.status = 12;
} else if (this.transferStatus.equals(3)) {
this.status = 13;
} else if (this.transferStatus.equals(4)) {
this.status = 14;
} else if (this.transferStatus.equals(5)) {
this.status = 15;
} else if (this.transferStatus.equals(6)) {
this.status = 16;
} else {
this.status = status;
}
}else{
this.status = status;
}
}
public KylinOrderListVo copy(KylinOrderTicketVo vo) {
if (null == vo) return this;
this.orderTicketsId = vo.getOrderTicketsId();
this.performanceId = vo.getPerformanceId();
this.ticketId = vo.getTicketId();
this.performanceTitle = vo.getPerformanceTitle();
this.performanceImg = vo.getPerformanceImg();
this.orderCode = vo.getOrderCode();
this.timeStart = vo.getTimeStart();
this.ticketTitle = vo.getTicketTitle();
this.useStart = vo.getUseStart();
this.overdueAt = vo.getOverdueAt();
this.priceActual = vo.getPriceActual();
this.number = vo.getNumber();
this.expressStatus = 0;
this.getTicketType = vo.getGetTicketType();
this.createdAt = vo.getCreatedAt();
this.restTime = 0L;
if (vo.getTransferStatus().equals(1)) {
this.status = 11;
} else if (vo.getTransferStatus().equals(2)) {
this.status = 12;
} else if (vo.getTransferStatus().equals(3)) {
this.status = 13;
} else if (vo.getTransferStatus().equals(4)) {
this.status = 14;
} else if (vo.getTransferStatus().equals(5)) {
this.status = 15;
} else if (vo.getTransferStatus().equals(6)) {
this.status = 16;
} else {
this.status = vo.getStatus();
}
return this;
}
} }
...@@ -2,21 +2,36 @@ package com.liquidnet.service.kylin.dto.vo.returns; ...@@ -2,21 +2,36 @@ package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinFields; import com.liquidnet.service.kylin.entity.KylinFields;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@Data @Data
@ApiModel(value = "OrderDetailsVo", description = "订单详情外层数据")
public class OrderDetailsVo implements Cloneable { public class OrderDetailsVo implements Cloneable {
@ApiModelProperty(position = 10, value = "订单详情vo")
private KylinOrderTicketVo orderTicketVo; private KylinOrderTicketVo orderTicketVo;
@ApiModelProperty(position = 10, value = "入场须知")
private String enterDescribe; private String enterDescribe;
@ApiModelProperty(position = 10, value = "快递状态")
private Integer expressStatus; private Integer expressStatus;
@ApiModelProperty(position = 10, value = "订单失效时间")
private Long restTime; private Long restTime;
@ApiModelProperty(position = 10, value = "订单转赠失效时间")
private Long restTransferTime;
@ApiModelProperty(position = 10, value = "是否可退款")
private Integer isCanRefund; private Integer isCanRefund;
@ApiModelProperty(position = 10, value = "是否展示二维码")
private Integer isShowQrCode; private Integer isShowQrCode;
@ApiModelProperty(position = 10, value = "二维码显示时间")
private String showQrCodeTime; private String showQrCodeTime;
@ApiModelProperty(position = 10, value = "是否可转赠")
private Integer isCanTransfer;
@ApiModelProperty(position = 10, value = "是否可回退")
private Integer isCanBack;
@ApiModelProperty(position = 10, value = "退款相关list")
private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList; private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList;
private static final OrderDetailsVo obj = new OrderDetailsVo(); private static final OrderDetailsVo obj = new OrderDetailsVo();
......
...@@ -20,7 +20,7 @@ import java.util.List; ...@@ -20,7 +20,7 @@ import java.util.List;
* @author liquidnet * @author liquidnet
* @since 2021-05-20 * @since 2021-05-20
*/ */
public interface IKylinOrderTicketsService { public interface IKylinOrderTicketsService {
//订单列表(状态 待支付 已支付 倒计时 已失效) //订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderList(); PageInfo<List<KylinOrderListVo>> orderList();
...@@ -35,18 +35,34 @@ public interface IKylinOrderTicketsService { ...@@ -35,18 +35,34 @@ public interface IKylinOrderTicketsService {
ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(String orderId); ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(String orderId);
//退款详情 //退款详情
ResponseDto<OrderRefundVo> orderRefundDetails(String orderId,String orderRefundId); ResponseDto<OrderRefundVo> orderRefundDetails(String orderId, String orderRefundId);
/** /**
* 发起退款 * 发起退款
* @param orderId 订单id *
* @param orderTicketEntitiesId 票单id * @param orderId 订单id
* @param reason 退款原因 * @param orderTicketEntitiesId 票单id
* @param picList 证据截图 * @param reason 退款原因
* @return 是否成功 * @param picList 证据截图
* @return 是否成功
*/ */
String sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList); String sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList);
//退款撤回 //退款撤回
ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId); ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId);
//发起转赠订单
ResponseDto<String> orderTransfer(String orderId, String transferUid, String transferMobile);
//撤回转赠订单
ResponseDto<String> orderTransferWithdraw(String orderId);
//接受转赠订单
ResponseDto<String> orderTransferAccept(String enterIdList);
//拒绝转赠订单
ResponseDto<String> orderTransferReject();
//拒绝转赠订单
ResponseDto<String> orderTransferBack(String orderId);
} }
...@@ -9,6 +9,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam; ...@@ -9,6 +9,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo; import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceTransferConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.entity.KylinPerformances; import com.liquidnet.service.kylin.entity.KylinPerformances;
...@@ -182,7 +183,23 @@ public interface IKylinPerformancesAdminService { ...@@ -182,7 +183,23 @@ public interface IKylinPerformancesAdminService {
* 修改 演出退款配置 * 修改 演出退款配置
* @return * @return
*/ */
boolean changeRefundConfig(String performancesId, String changeRefundConfig(String performancesId,
Integer isCanRefund,
String refundOpenTime,
String refundCloseTime);
/**
* 获取 演出转赠配置
* @param performanceId
* @return
*/
PerformanceTransferConfigVo getTransferConfig(String performanceId);
/**
* 修改 演出转赠配置
* @return
*/
String changeTransferConfig(String performancesId,
Integer isCanRefund, Integer isCanRefund,
String refundOpenTime, String refundOpenTime,
String refundCloseTime); String refundCloseTime);
......
...@@ -81,9 +81,8 @@ public class KylinOrderRefundAdminController extends BaseController { ...@@ -81,9 +81,8 @@ public class KylinOrderRefundAdminController extends BaseController {
@Log(title = "订单退款列表", businessType = BusinessType.DETAIL) @Log(title = "订单退款列表", businessType = BusinessType.DETAIL)
@PostMapping("applyOrder") @PostMapping("applyOrder")
@ResponseBody @ResponseBody
public RefundOrderDetailsVo applyOrder(RefundApplyParam refundApplyParam) { public AjaxResult applyOrder(RefundApplyParam refundApplyParam) {
RefundOrderDetailsVo orderInfo = kylinOrderRefundsServiceImpl.orderDetails(refundApplyParam.getOrderCode()); return kylinOrderRefundsServiceImpl.orderDetails(refundApplyParam.getOrderCode());
return orderInfo;
} }
@Log(title = "订单退款列表", businessType = BusinessType.INSERT) @Log(title = "订单退款列表", businessType = BusinessType.INSERT)
......
...@@ -18,6 +18,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam; ...@@ -18,6 +18,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo; import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceTransferConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService; import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import com.liquidnet.service.kylin.service.other.DamaiService; import com.liquidnet.service.kylin.service.other.DamaiService;
...@@ -198,7 +199,25 @@ public class KylinPerformancesController extends BaseController { ...@@ -198,7 +199,25 @@ public class KylinPerformancesController extends BaseController {
@RequestParam("isCanRefund") Integer isCanRefund, @RequestParam("isCanRefund") Integer isCanRefund,
@RequestParam("refundOpenTime") String refundOpenTime, @RequestParam("refundOpenTime") String refundOpenTime,
@RequestParam("refundCloseTime") String refundCloseTime) { @RequestParam("refundCloseTime") String refundCloseTime) {
boolean result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime); String result = kylinPerformancesService.changeRefundConfig(performancesId, isCanRefund, refundOpenTime, refundCloseTime);
return toAjax(result); return this.success(result);
}
@GetMapping(value = "/transferConfig/{performancesId}")
public String getTransferConfig(@PathVariable("performancesId") String performancesId, ModelMap mmap) {
PerformanceTransferConfigVo result = kylinPerformancesService.getTransferConfig(performancesId);
mmap.put("performanceTransferConfigVo", result);
return prefix + "/transferConfig";
}
//@RequiresPermissions("kylin:performances:view")
@PostMapping(value = "/transferConfig/change")
@ResponseBody
public AjaxResult changeTransferConfig(@RequestParam("performancesId") String performancesId,
@RequestParam("isCanTransfer") Integer isCanTransfer,
@RequestParam("transferStartTime") String transferStartTime,
@RequestParam("transferEndTime") String transferEndTime) {
String result = kylinPerformancesService.changeTransferConfig(performancesId, isCanTransfer, transferStartTime, transferEndTime);
return this.success(result);
} }
} }
...@@ -21,14 +21,14 @@ ...@@ -21,14 +21,14 @@
<!-- </li>--> <!-- </li>-->
<li id="li-tab-6"><a data-toggle="tab" href="#tab-6" aria-expanded="false" onclick="refundConfigInfo()">退款管理</a> <li id="li-tab-6"><a data-toggle="tab" href="#tab-6" aria-expanded="false" onclick="refundConfigInfo()">退款管理</a>
</li> </li>
<li id="li-tab-7"><a data-toggle="tab" href="#tab-7" aria-expanded="false" onclick="transferInfo()">转赠配置</a>
</li>
<li id="li-tab-3"><a data-toggle="tab" href="#tab-3" aria-expanded="false" onclick="memberInfo()">会员信息配置</a> <li id="li-tab-3"><a data-toggle="tab" href="#tab-3" aria-expanded="false" onclick="memberInfo()">会员信息配置</a>
</li> </li>
<li id="li-tab-4"><a data-toggle="tab" href="#tab-4" aria-expanded="false" onclick="agentInfo()">代理配置</a> <li id="li-tab-4"><a data-toggle="tab" href="#tab-4" aria-expanded="false" onclick="agentInfo()">代理配置</a>
</li> </li>
<li id="li-tab-5"><a data-toggle="tab" href="#tab-5" aria-expanded="false" onclick="damaiInfo()">大麦配置</a> <li id="li-tab-5"><a data-toggle="tab" href="#tab-5" aria-expanded="false" onclick="damaiInfo()">大麦配置</a>
</li> </li>
<li id="li-tab-7"><a data-toggle="tab" href="#tab-7" aria-expanded="false" onclick="transferInfo()">转赠配置</a>
</li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<div id="tab-1" class="tab-pane"> <div id="tab-1" class="tab-pane">
...@@ -366,9 +366,9 @@ ...@@ -366,9 +366,9 @@
document.getElementById("refundConfig_iframe").src = "../refundConfig/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", ""); document.getElementById("refundConfig_iframe").src = "../refundConfig/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "");
} }
//转配置 //转配置
function transferInfo(){ function transferInfo(){
// document.getElementById("transfer_iframe").src = "../refundConfig/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", ""); document.getElementById("transfer_iframe").src = "../transferConfig/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "");
} }
$("#tab-nav-1").bind("click", function () { $("#tab-nav-1").bind("click", function () {
......
...@@ -87,6 +87,7 @@ ...@@ -87,6 +87,7 @@
$.operate.post(prefix + "/refundConfig/change", $.operate.post(prefix + "/refundConfig/change",
param, param,
function (res) { function (res) {
alert(res.msg);
location.reload(); location.reload();
}); });
} }
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('转赠管理')"/>
<th:block th:include="include :: datetimepicker-css"/>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-transfer-edit" th:object="${performanceTransferConfigVo}">
<div class="form-group">
<label class="col-sm-3 control-label is-required">演出id:</label>
<div class="col-sm-8">
<input name="performancesId" th:field="*{performancesId}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">演出名称:</label>
<div class="col-sm-8">
<input name="title" th:field="*{title}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">开启转赠:</label>
<div class="col-sm-8" th:if="*{isCanTransfer==1}">
<div class="radio check-box">
<input type="radio" value="1" name="performance_isCanTransfer" checked>开启</label>
</div>
<div class="radio check-box">
<input type="radio" value="0" name="performance_isCanTransfer">关闭</label>
</div>
</div>
<div class="col-sm-8" th:if="*{isCanTransfer==0}">
<div class="radio check-box">
<input type="radio" value="1" name="performance_isCanTransfer">开启</label>
</div>
<div class="radio check-box">
<input type="radio" value="0" name="performance_isCanTransfer" checked> 关闭</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">定时: </label>
<input th:field="${performanceTransferConfigVo.transferStartTime}" type="text"
style="width: 200px;float: left"
class="form-control" id="startTime" placeholder="开始时间选择" name="transferOpenTime"
required/>
<span class="control-label" style="float: left;margin-left: 10px;margin-right: 10px"></span>
<input th:field="${performanceTransferConfigVo.transferEndTime}" type="text"
style="width: 200px;float: left"
class="form-control" id="endTime" placeholder="结束时间选择" name="transferCloseTime"
required/>
</div>
<button type="button" class="btn btn-w-m btn-success" onclick="submitHandler()">
修改
</button>
</form>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: datetimepicker-js"/>
<script th:inline="javascript">
var prefix = ctx + "kylin/performances";
$("#form-transfer-edit").validate({
focusCleanup: true
});
$("#startTime").datetimepicker({
format: "yyyy-mm-dd hh:ii:ss",
autoclose: true
});
$("#endTime").datetimepicker({
format: "yyyy-mm-dd hh:ii:ss",
autoclose: true
});
function submitHandler() {
var param = {
performancesId: '[[${performanceTransferConfigVo.performancesId}]]'.replaceAll("\"", ""),
isCanTransfer: parseInt($("input[name^='performance_isCanTransfer']:checked").val()),
transferStartTime: $("input[name^='transferStartTime']").val(),
transferEndTime: $("input[name^='transferEndTime']").val()
}
if ($("input[name^='transferStartTime']").val() == "" || $("input[name^='transferEndTime']").val() == "") {
alert("定时时间不能为空");
} else {
$.operate.post(prefix + "/transferConfig/change",
param,
function (res) {
alert(res.msg);
location.reload();
});
}
}
</script>
</body>
</html>
...@@ -63,17 +63,17 @@ ...@@ -63,17 +63,17 @@
$.modal.loading("正在查询订单,请稍后..."); $.modal.loading("正在查询订单,请稍后...");
}, },
success: function (result) { success: function (result) {
if (result.msg) { if (result.status > 0) {
$.modal.closeLoading(); $.modal.closeLoading();
layer.msg("未找到该订单信息"); layer.msg(result.msg);
return false; return false;
} else { } else {
$("#orderTicketsId").val(result.orderTicketVo.orderTicketsId); $("#orderTicketsId").val(result.data.orderTicketVo.orderTicketsId);
$('input[name="RefundPriceExpress"]').val(result.orderTicketVo.priceExpress); $('input[name="RefundPriceExpress"]').val(result.data.orderTicketVo.priceExpress);
$('input[name="RefundPriceExpress"]').attr("max", result.orderTicketVo.priceExpress); $('input[name="RefundPriceExpress"]').attr("max", result.data.orderTicketVo.priceExpress);
$("#performanceTitle").text(result.kylinPerformanceVo.title); $("#performanceTitle").text(result.data.kylinPerformanceVo.title);
var options = { var options = {
data: result.kylinOrderTicketEntitiesDao, data: result.data.kylinOrderTicketEntitiesDao,
pagination: false, pagination: false,
columns: [{ columns: [{
checkbox: true checkbox: true
......
...@@ -182,6 +182,7 @@ public class KylinOrderTicketsAdminServiceImpl extends ServiceImpl<KylinOrderTic ...@@ -182,6 +182,7 @@ public class KylinOrderTicketsAdminServiceImpl extends ServiceImpl<KylinOrderTic
} }
return vo; return vo;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
return vo; return vo;
} }
} }
......
...@@ -13,10 +13,7 @@ import com.liquidnet.commons.lang.util.JsonUtils; ...@@ -13,10 +13,7 @@ import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.*; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.*; import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo; import com.liquidnet.service.kylin.dto.vo.admin.*;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceMemberHistoryVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
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.partner.KylinPerformanceMisVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
...@@ -581,10 +578,57 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -581,10 +578,57 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
} }
@Override @Override
public boolean changeRefundConfig(String performancesId, public PerformanceTransferConfigVo getTransferConfig(String performanceId) {
KylinPerformances kylinPerformances = performancesMapper.selectOne(new UpdateWrapper<KylinPerformances>().eq("performances_id", performanceId));
KylinPerformanceStatus kylinPerformanceStatus = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performanceId));
PerformanceTransferConfigVo vo = new PerformanceTransferConfigVo();
vo.setPerformancesId(kylinPerformances.getPerformancesId());
vo.setTitle(kylinPerformances.getTitle());
vo.setIsCanTransfer(kylinPerformanceStatus.getIsTransfer());
vo.setTransferStartTime(kylinPerformanceStatus.getTransferStartTime() == null ? "" : DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getTransferStartTime()));
vo.setTransferEndTime(kylinPerformanceStatus.getTransferEndTime() == null ? "" : DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getTransferEndTime()));
return vo;
}
@Override
public String changeTransferConfig(String performancesId,
Integer isCanTransfer,
String transferStartTime,
String transferEndTime) {
KylinPerformanceStatus kylinPerformanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if(kylinPerformanceStatusData.getIsCanRefund().equals(1) && isCanTransfer.equals(1)){
return "修改失败,演出已开启退款";
}
KylinPerformances kylinPerformances = performancesMapper.selectOne(new UpdateWrapper<KylinPerformances>().eq("performances_id", performancesId));
if(!(kylinPerformances.getType().equals(1) || kylinPerformances.getType().equals(101))){
return "修改失败,只支持音乐节类型演出";
}
KylinPerformanceStatus kylinPerformanceStatus = new KylinPerformanceStatus();
kylinPerformanceStatus.setIsTransfer(isCanTransfer);
kylinPerformanceStatus.setTransferStartTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(transferStartTime));
kylinPerformanceStatus.setTransferEndTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(transferEndTime));
try {
performanceStatusMapper.update(kylinPerformanceStatus, new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
performanceVoUtils.performanceVoStatus(performancesId);
return "修改成功";
} catch (Exception e) {
e.printStackTrace();
return "修改失败";
}
}
@Override
public String changeRefundConfig(String performancesId,
Integer isCanRefund, Integer isCanRefund,
String refundOpenTime, String refundOpenTime,
String refundCloseTime) { String refundCloseTime) {
KylinPerformanceStatus kylinPerformanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if(kylinPerformanceStatusData.getIsTransfer().equals(1) && isCanRefund.equals(1)){
return "修改失败,演出已开启转赠";
}
KylinPerformanceStatus kylinPerformanceStatus = new KylinPerformanceStatus(); KylinPerformanceStatus kylinPerformanceStatus = new KylinPerformanceStatus();
kylinPerformanceStatus.setIsCanRefund(isCanRefund); kylinPerformanceStatus.setIsCanRefund(isCanRefund);
kylinPerformanceStatus.setRefundOpenTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundOpenTime)); kylinPerformanceStatus.setRefundOpenTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundOpenTime));
...@@ -592,10 +636,10 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -592,10 +636,10 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
try { try {
performanceStatusMapper.update(kylinPerformanceStatus, new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId)); performanceStatusMapper.update(kylinPerformanceStatus, new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
performanceVoUtils.performanceVoStatus(performancesId); performanceVoUtils.performanceVoStatus(performancesId);
return true; return "修改成功";
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return false; return "修改失败";
} }
} }
...@@ -654,7 +698,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -654,7 +698,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
//找到所有ticketId //找到所有ticketId
List<TicketTimesTicketCreatePartnerVo> timesVoList = vo.getTicketTimes(); List<TicketTimesTicketCreatePartnerVo> timesVoList = vo.getTicketTimes();
for (TicketTimesTicketCreatePartnerVo timesVo : timesVoList) { for (TicketTimesTicketCreatePartnerVo timesVo : timesVoList) {
for (KylinTicketPartnerVo ticketVo : timesVo.getTicket()){ for (KylinTicketPartnerVo ticketVo : timesVo.getTicket()) {
List<String> orderTicketRedisIdList = new ArrayList<>(); List<String> orderTicketRedisIdList = new ArrayList<>();
List<String> userRedisIdList = new ArrayList<>(); List<String> userRedisIdList = new ArrayList<>();
List<String> orderTicketIdList = new ArrayList<>(); List<String> orderTicketIdList = new ArrayList<>();
......
...@@ -120,6 +120,9 @@ public class DataUtils { ...@@ -120,6 +120,9 @@ public class DataUtils {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId)) List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40), .with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName()); KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList); redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
} }
return (List<KylinOrderListVo>) redisUtil.get(KylinRedisConst.ORDER_LIST + userId); return (List<KylinOrderListVo>) redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
......
...@@ -417,7 +417,7 @@ public class PerformanceVoUtils { ...@@ -417,7 +417,7 @@ public class PerformanceVoUtils {
ticketRelationsMapper.update(ticketRelations, new UpdateWrapper<KylinTicketRelations>().eq("ticket_id", tickets.getTicketsId())); ticketRelationsMapper.update(ticketRelations, new UpdateWrapper<KylinTicketRelations>().eq("ticket_id", tickets.getTicketsId()));
BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map)); BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
mongoTemplate.getCollection(KylinTicketPartnerVo.class.getSimpleName()).updateOne( mongoTemplate.getCollection(KylinTicketPartnerVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())).getQueryObject(), Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId()).and("status").ne(7)).getQueryObject(),
objectTicketVo); objectTicketVo);
} }
} }
......
...@@ -45,6 +45,9 @@ public class MQConst { ...@@ -45,6 +45,9 @@ public class MQConst {
SQL_ORDER_WITHDRAW("kylin:stream:rk.order.withdraw", "group.order.withdraw", "订单申请撤回"), SQL_ORDER_WITHDRAW("kylin:stream:rk.order.withdraw", "group.order.withdraw", "订单申请撤回"),
SQL_ORDER_OVERTIME_REFUND("kylin:stream:rk.order.overtime.refund", "group.order.overtime.refund", "超时支付申请退款"), SQL_ORDER_OVERTIME_REFUND("kylin:stream:rk.order.overtime.refund", "group.order.overtime.refund", "超时支付申请退款"),
SQL_STATION("kylin:stream:rk.station", "group.station", "验票更新"), SQL_STATION("kylin:stream:rk.station", "group.station", "验票更新"),
SQL_TRANSFER("kylin:stream:rk.transfer", "group.transfer", "订单发起转赠"),
SQL_TRANSFER_RESULT("kylin:stream:rk.transfer.result", "group.transfer.result", "订单结果转赠"),
SQL_TRANSFER_OVERTIME("kylin:stream:rk.transfer.overtime", "group.transfer.overtime", "订单结果转赠"),
; ;
private final String key; private final String key;
private final String group; private final String group;
......
...@@ -62,8 +62,6 @@ liquidnet: ...@@ -62,8 +62,6 @@ liquidnet:
check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://devkylin.zhengzai.tv/kylin/order/syncOrder localUrl: http://devkylin.zhengzai.tv/kylin/order/syncOrder
order: order:
adam:
url: http://devadam.zhengzai.tv/adam
url-pay: url-pay:
pay: http://devdragon.zhengzai.tv/dragon/pay/dragonPay pay: http://devdragon.zhengzai.tv/dragon/pay/dragonPay
check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder
......
...@@ -24,3 +24,5 @@ liquidnet: ...@@ -24,3 +24,5 @@ liquidnet:
pay: ${liquidnet.service.kylin.url-pay.pay} pay: ${liquidnet.service.kylin.url-pay.pay}
check: ${liquidnet.service.kylin.url-pay.check} check: ${liquidnet.service.kylin.url-pay.check}
localUrl: ${liquidnet.service.kylin.url-pay.localUrl} localUrl: ${liquidnet.service.kylin.url-pay.localUrl}
adam:
url: ${liquidnet.service.adam.url}
...@@ -24,3 +24,5 @@ liquidnet: ...@@ -24,3 +24,5 @@ liquidnet:
pay: ${liquidnet.service.kylin.url-pay.pay} pay: ${liquidnet.service.kylin.url-pay.pay}
check: ${liquidnet.service.kylin.url-pay.check} check: ${liquidnet.service.kylin.url-pay.check}
localUrl: ${liquidnet.service.kylin.url-pay.localUrl} localUrl: ${liquidnet.service.kylin.url-pay.localUrl}
adam:
url: ${liquidnet.service.adam.url}
\ No newline at end of file
...@@ -25,4 +25,4 @@ liquidnet: ...@@ -25,4 +25,4 @@ liquidnet:
check: ${liquidnet.service.order.url-pay.check} check: ${liquidnet.service.order.url-pay.check}
localUrl: ${liquidnet.service.order.url-pay.localUrl} localUrl: ${liquidnet.service.order.url-pay.localUrl}
adam: adam:
url:${liquidnet.service.order.adam.url} url:${liquidnet.service.adam.url}
...@@ -25,4 +25,4 @@ liquidnet: ...@@ -25,4 +25,4 @@ liquidnet:
check: ${liquidnet.service.order.url-pay.check} check: ${liquidnet.service.order.url-pay.check}
localUrl: ${liquidnet.service.order.url-pay.localUrl} localUrl: ${liquidnet.service.order.url-pay.localUrl}
adam: adam:
url:${liquidnet.service.order.adam.url} url:${liquidnet.service.adam.url}
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class KylinOrderTask implements Serializable {
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* order_id
*/
private String orderId;
/**
* status
*/
private Integer status;
/**
* created_at
*/
private LocalDateTime createdAt;
/**
* updated_at
*/
private LocalDateTime updatedAt;
/**
* comment
*/
private String comment;
}
...@@ -41,6 +41,11 @@ public class KylinOrderTicketRelations implements Serializable ,Cloneable{ ...@@ -41,6 +41,11 @@ public class KylinOrderTicketRelations implements Serializable ,Cloneable{
*/ */
private String transferId; private String transferId;
/**
* 转增用户id
*/
private String transferUid;
/** /**
* 关联直播id * 关联直播id
*/ */
......
...@@ -47,7 +47,7 @@ public class KylinOrderTicketStatus implements Serializable,Cloneable { ...@@ -47,7 +47,7 @@ public class KylinOrderTicketStatus implements Serializable,Cloneable {
private Integer isStudent; private Integer isStudent;
/** /**
* 转移状态,0未转移,1收到他人转赠,2已转赠给他人 *
*/ */
private Integer transferStatus; private Integer transferStatus;
......
...@@ -109,6 +109,36 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{ ...@@ -109,6 +109,36 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{
*/ */
private LocalDateTime refundCloseTime; private LocalDateTime refundCloseTime;
/**
* 是否开启转赠 0否 1是
*/
private Integer isTransfer;
/**
* 转赠开始时间
*/
private LocalDateTime transferStartTime;
/**
* 转赠结束时间
*/
private LocalDateTime transferEndTime;
// /**
// * 是否有手续费
// */
// private Integer isRefundPoundage;
//
// /**
// * 是否退优惠券
// */
// private Integer isRefundVoucher;
//
// /**
// * 是否退快递费
// */
// private Integer isRefundExpress;
/** /**
* 创建时间 * 创建时间
*/ */
......
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.BannerDetailsDao;
import com.liquidnet.service.kylin.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.entity.KylinBanners;
import com.liquidnet.service.kylin.entity.KylinOrderTask;
import java.util.List;
import java.util.Map;
/**
* <p>
* 轮播图 Mapper 接口 处理数据库
* </p>
*
* @author jiangxiulong
* @since 2021-05-01
*/
public interface KylinOrderTaskMapper extends BaseMapper<KylinOrderTask> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinOrderTaskMapper">
</mapper>
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
<where> <where>
r.performance_id=#{targetId} r.performance_id=#{targetId}
AND s.status IN (1, 3, 6) AND s.status IN (1, 3, 6)
AND s.transfer_status IN (0, 5)
AND s.pay_status=1 AND s.pay_status=1
AND o.coupon_type='no' AND o.coupon_type='no'
AND o.payment_type IN AND o.payment_type IN
...@@ -82,6 +83,7 @@ ...@@ -82,6 +83,7 @@
<where> <where>
r.performance_id=${targetId} r.performance_id=${targetId}
AND s.status IN (1, 3, 6) AND s.status IN (1, 3, 6)
AND s.transfer_status IN (0, 5)
AND s.pay_status=1 AND s.pay_status=1
AND o.coupon_type='no' AND o.coupon_type='no'
AND o.mid>${mid} AND o.mid>${mid}
......
...@@ -176,7 +176,10 @@ ...@@ -176,7 +176,10 @@
) AS 'total_sale_price' , ) AS 'total_sale_price' ,
otr.performance_id AS 'performance_id' FROM kylin_order_tickets AS ot LEFT JOIN kylin_order_ticket_status AS ots otr.performance_id AS 'performance_id' FROM kylin_order_tickets AS ot LEFT JOIN kylin_order_ticket_status AS ots
ON ots.order_id = ot.order_tickets_id LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ON ots.order_id = ot.order_tickets_id LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id =
ot.order_tickets_id WHERE (ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) AND coupon_type = 'no' GROUP BY otr.performance_id ot.order_tickets_id
WHERE (ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) AND coupon_type = 'no'
and ots.transfer_status in (0,1,2,5)
GROUP BY otr.performance_id
) AS ot ON ot.performance_id = p.performances_id ) AS ot ON ot.performance_id = p.performances_id
<where> <where>
<if test="title!=''"> <if test="title!=''">
...@@ -265,7 +268,7 @@ ...@@ -265,7 +268,7 @@
LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = ot.order_tickets_id LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = ot.order_tickets_id
LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id
WHERE WHERE
(ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) and coupon_type ='no' (ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) and coupon_type ='no' and ots.transfer_status in (0,1,2,5)
GROUP BY otr.performance_id GROUP BY otr.performance_id
) AS ot ON ot.performance_id = p.performances_id ) AS ot ON ot.performance_id = p.performances_id
<where> <where>
...@@ -423,7 +426,7 @@ ...@@ -423,7 +426,7 @@
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
WHERE 1>0 and kotr.performance_id = ${performancesId} WHERE 1>0 and kotr.performance_id = ${performancesId}
and kots.`status` in(1,3,6) and kot.coupon_type ='no' and kots.`status` in(1,3,6) and kot.coupon_type ='no' and kots.transfer_status in (0,1,2,5)
group by kotr.performance_id,kotr.ticket_id group by kotr.performance_id,kotr.ticket_id
) AS ot ON (ot.performance_id = kp.performances_id and ot.ticket_id = kp.ticket_id) ) AS ot ON (ot.performance_id = kp.performances_id and ot.ticket_id = kp.ticket_id)
left JOIN( left JOIN(
...@@ -435,7 +438,7 @@ ...@@ -435,7 +438,7 @@
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
WHERE 1>0 and kotr.performance_id = ${performancesId} WHERE 1>0 and kotr.performance_id = ${performancesId}
and kots.`status` = 0 and kot.coupon_type ='no' and kots.`status` = 0 and kot.coupon_type ='no' and kots.transfer_status in (0,1,2,5)
group by kotr.performance_id,kotr.ticket_id group by kotr.performance_id,kotr.ticket_id
) AS otp ON (otp.performance_id = kp.performances_id and otp.ticket_id = kp.ticket_id) ) AS otp ON (otp.performance_id = kp.performances_id and otp.ticket_id = kp.ticket_id)
left JOIN( left JOIN(
...@@ -448,7 +451,7 @@ ...@@ -448,7 +451,7 @@
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
WHERE 1>0 and kotr.performance_id = ${performancesId} WHERE 1>0 and kotr.performance_id = ${performancesId}
and kots.`status` in(4,6) and kot.coupon_type ='no' and kots.`status` in(4,6) and kot.coupon_type ='no' and kots.transfer_status in (0,1,2,5)
group by kotr.performance_id,kotr.ticket_id group by kotr.performance_id,kotr.ticket_id
) AS rd ON (rd.performance_id = kp.performances_id and rd.ticket_id = kp.ticket_id) ) AS rd ON (rd.performance_id = kp.performances_id and rd.ticket_id = kp.ticket_id)
left join kylin_tickets kt on kt.tickets_id = kp.ticket_id left join kylin_tickets kt on kt.tickets_id = kp.ticket_id
......
...@@ -5,6 +5,7 @@ import feign.hystrix.FallbackFactory; ...@@ -5,6 +5,7 @@ import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Component @Component
@FeignClient(name = "liquidnet-service-platform", @FeignClient(name = "liquidnet-service-platform",
...@@ -19,4 +20,7 @@ public interface FeignPlatformTaskClient { ...@@ -19,4 +20,7 @@ public interface FeignPlatformTaskClient {
@PostMapping("platform/performance/checkPerformanceTime") @PostMapping("platform/performance/checkPerformanceTime")
ResponseDto<String> checkPerformanceTime(); ResponseDto<String> checkPerformanceTime();
@PostMapping("platform/order/checkTransferOrder")
ResponseDto<Boolean> checkTransferOrder(@RequestParam("minute") Integer minute);
} }
...@@ -319,6 +319,30 @@ public class AdamUserController { ...@@ -319,6 +319,30 @@ public class AdamUserController {
return ResponseDto.success(map); return ResponseDto.success(map);
} }
@ApiOperationSupport(order = 10)
@ApiOperation(value = "用户简易信息", notes = "根据用户手机号查询用户姓名,id,手机号")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "手机号"),
})
@PostMapping(value = {"gif/mobile"})
public ResponseDto<AdamUserInfoSimpleVo> getInfoByMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
@RequestParam String mobile) {
String uid = adamRdmService.getUidByMobile(mobile);
if(uid==null){
return ResponseDto.failure("账号不存在,请确认");
}
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
AdamUserInfoSimpleVo vo = AdamUserInfoSimpleVo.getNew();
if (userInfoVo.getState().equals(1)) {
vo.setMobile(userInfoVo.getMobile());
vo.setUid(userInfoVo.getUid());
vo.setNickname(userInfoVo.getNickname());
return ResponseDto.success(vo);
} else {
return ResponseDto.failure("账号不存在,请确认");
}
}
/* ---------------------------- Internal Method ---------------------------- */ /* ---------------------------- Internal Method ---------------------------- */
private static final String PHP_API_SMS_CODE_VALID = "/smsValidation"; private static final String PHP_API_SMS_CODE_VALID = "/smsValidation";
......
...@@ -35,9 +35,8 @@ public class KylinUtils { ...@@ -35,9 +35,8 @@ public class KylinUtils {
public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) { public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) {
List<KylinOrderListVo> vo = new ArrayList<>(); List<KylinOrderListVo> vo = new ArrayList<>();
List<KylinOrderListVo> redisVo = new ArrayList(); List<KylinOrderListVo> redisVo = new ArrayList();
KylinOrderListVo voItem = new KylinOrderListVo();
KylinOrderTicketVo data = dataSingle; KylinOrderTicketVo data = dataSingle;
BeanUtils.copyProperties(data, voItem); KylinOrderListVo voItem = KylinOrderListVo.getNew().copy(data);
List<KylinOrderListVo> redisData = (List<KylinOrderListVo>) redisUtil.get(KylinRedisConst.ORDER_LIST + userId); List<KylinOrderListVo> redisData = (List<KylinOrderListVo>) redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
if(redisData==null){ if(redisData==null){
return false; return false;
......
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerKylinTransferOverTimeRdsReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.KylinQueue.SQL_TRANSFER_OVERTIME;
@Configuration
public class ConsumerKylinOptTransferOverTimeRedisStreamConfig {
@Autowired
ConsumerKylinTransferOverTimeRdsReceiver consumerKylinTransferOverTimeRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/**
* 验票更新
*
* @param listenerContainer
* @param t
* @return
*/
private Subscription receiveTransferOverTimeResult(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SQL_TRANSFER_OVERTIME.getGroup(), SQL_TRANSFER_OVERTIME.name() + t),
StreamOffset.create(SQL_TRANSFER_OVERTIME.getKey(), ReadOffset.lastConsumed()), consumerKylinTransferOverTimeRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 验票更新 */
@Bean
public Subscription subscriptionReceiveTransferOverTime1(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferOverTimeResult(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferOverTime2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferOverTimeResult(listenerContainer, 2);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferOverTime3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferOverTimeResult(listenerContainer, 3);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferOverTime4(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferOverTimeResult(listenerContainer, 4);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferOverTime5(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferOverTimeResult(listenerContainer, 5);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerKylinSqlStationRdsReceiver;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerKylinTransferRdsReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.KylinQueue.SQL_STATION;
import static com.liquidnet.service.base.constant.MQConst.KylinQueue.SQL_TRANSFER;
@Configuration
public class ConsumerKylinSqlTransferRedisStreamConfig {
@Autowired
ConsumerKylinTransferRdsReceiver consumerKylinTransferRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/**
* 验票更新
*
* @param listenerContainer
* @param t
* @return
*/
private Subscription receiveTransfer(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SQL_TRANSFER.getGroup(), SQL_TRANSFER.name() + t),
StreamOffset.create(SQL_TRANSFER.getKey(), ReadOffset.lastConsumed()), consumerKylinTransferRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 验票更新 */
@Bean
public Subscription subscriptionReceiveTransfer1(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransfer(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransfer2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransfer(listenerContainer, 2);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransfer3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransfer(listenerContainer, 3);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransfer4(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransfer(listenerContainer, 4);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransfer5(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransfer(listenerContainer, 5);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerKylinTransferResultRdsReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.KylinQueue.SQL_TRANSFER_RESULT;
@Configuration
public class ConsumerKylinSqlTransferResultRedisStreamConfig {
@Autowired
ConsumerKylinTransferResultRdsReceiver consumerKylinTransferResultRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/**
* 验票更新
*
* @param listenerContainer
* @param t
* @return
*/
private Subscription receiveTransferResult(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SQL_TRANSFER_RESULT.getGroup(), SQL_TRANSFER_RESULT.name() + t),
StreamOffset.create(SQL_TRANSFER_RESULT.getKey(), ReadOffset.lastConsumed()), consumerKylinTransferResultRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 验票更新 */
@Bean
public Subscription subscriptionReceiveTransferResult1(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferResult(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferResult2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferResult(listenerContainer, 2);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferResult3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferResult(listenerContainer, 3);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferResult4(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferResult(listenerContainer, 4);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionReceiveTransferResult5(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveTransferResult(listenerContainer, 5);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.OrderCloseMapping;
import com.liquidnet.service.consumer.kylin.Utils.KylinUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import java.util.HashMap;
@Slf4j
public abstract class AbstractOptOrderTransferOverTimeRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisUtil redisUtil;
@Autowired
private KylinUtils kylinUtils;
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerOrderTransferOverTimeHandler(message.getValue().get("message"));
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception ignored) {
}
}
}
private boolean consumerOrderTransferOverTimeHandler(String msg) {
boolean aBoolean = false;
try {
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class);
if (mqMessage == null) {
} else {
for (int x = 0; x < mqMessage.getOrderTicketIds().size(); x++) {
String orderTicketId = mqMessage.getOrderTicketIds().get(x);
KylinOrderTicketVo vo = kylinUtils.getOrderTicketVo(orderTicketId);
String uid = vo.getTransferUid();
vo.setTransferUid("");
vo.setTransferStatus(0);
redisUtil.del(KylinRedisConst.ORDER_TRANSFER.concat(uid));
redisUtil.set("kylin:order:id:" + orderTicketId, vo);
kylinUtils.resetOrderListVo(vo.getUserId(), 2, orderTicketId, vo);
}
}
aBoolean = true;
} catch (Exception e) {
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinTransferOverTimeRdsReceiver extends AbstractOptOrderTransferOverTimeRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_TRANSFER_OVERTIME.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_TRANSFER_OVERTIME.getGroup();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinTransferRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_TRANSFER.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_TRANSFER.getGroup();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerKylinTransferResultRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.KylinQueue.SQL_TRANSFER_RESULT.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.KylinQueue.SQL_TRANSFER_RESULT.getGroup();
}
}
...@@ -3,11 +3,13 @@ package com.liquidnet.service.executor.main.handler; ...@@ -3,11 +3,13 @@ package com.liquidnet.service.executor.main.handler;
import com.liquidnet.commons.lang.util.HttpUtil; import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.service.feign.kylin.task.FeignPlatformTaskClient; import com.liquidnet.service.feign.kylin.task.FeignPlatformTaskClient;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;
/** /**
* XxlJob开发示例(Bean模式) * XxlJob开发示例(Bean模式)
...@@ -28,7 +30,7 @@ public class KylinTaskHandler { ...@@ -28,7 +30,7 @@ public class KylinTaskHandler {
public ReturnT<String> checkOrderTimeHandler() { public ReturnT<String> checkOrderTimeHandler() {
try { try {
boolean result = feignPlatformTaskClient.checkOrderTime().getData(); boolean result = feignPlatformTaskClient.checkOrderTime().getData();
log.info("checkOrderTimeHandler:结果:"+result); log.info("checkOrderTimeHandler:结果:" + result);
return ReturnT.SUCCESS; return ReturnT.SUCCESS;
} catch (Exception e) { } catch (Exception e) {
return ReturnT.FAIL; return ReturnT.FAIL;
...@@ -39,13 +41,27 @@ public class KylinTaskHandler { ...@@ -39,13 +41,27 @@ public class KylinTaskHandler {
public ReturnT<String> checkPerformanceTimeHandler() { public ReturnT<String> checkPerformanceTimeHandler() {
try { try {
String result = feignPlatformTaskClient.checkPerformanceTime().getData(); String result = feignPlatformTaskClient.checkPerformanceTime().getData();
log.info("checkPerformanceTimeHandler:结果:"+result); log.info("checkPerformanceTimeHandler:结果:" + result);
return ReturnT.SUCCESS; return ReturnT.SUCCESS;
} catch (Exception e) { } catch (Exception e) {
return ReturnT.FAIL; return ReturnT.FAIL;
} }
} }
@XxlJob(value = "sev-platform:checkTransferOrderHandler")
public ReturnT<String> checkTransferOrderHandler() {
try {
String minute = XxlJobHelper.getJobParam(); //执行参数
log.debug("minute = " + Integer.parseInt(minute));
boolean result = feignPlatformTaskClient.checkTransferOrder(Integer.parseInt(minute)).getData();
log.info("checkTransferOrderHandler:结果:" + result);
return ReturnT.SUCCESS;
} catch (Exception e) {
log.info("exception = ", e);
return ReturnT.FAIL;
}
}
// @Autowired // @Autowired
// private FeignSequenceClient feignSequenceClient; // private FeignSequenceClient feignSequenceClient;
// //
......
...@@ -25,7 +25,14 @@ XGROUP CREATE kylin:stream:rk.order.overtime.refund group.order.overtime.refund ...@@ -25,7 +25,14 @@ XGROUP CREATE kylin:stream:rk.order.overtime.refund group.order.overtime.refund
XADD kylin:stream:rk.station * 0 0 XADD kylin:stream:rk.station * 0 0
XGROUP CREATE kylin:stream:rk.station group.station 0 XGROUP CREATE kylin:stream:rk.station group.station 0
XADD kylin:stream:rk.transfer * 0 0
XGROUP CREATE kylin:stream:rk.transfer group.transfer 0
XADD kylin:stream:rk.transfer.result * 0 0
XGROUP CREATE kylin:stream:rk.transfer.result group.transfer.result 0
XADD kylin:stream:rk.transfer.overtime * 0 0
XGROUP CREATE kylin:stream:rk.transfer.overtime group.transfer.overtime 0
# ================================================== # ==================================================
# XGROUP DESTROY adam:stream:rk.sms.notice group.sms.sender 0 # XGROUP DESTROY adam:stream:rk.sms.notice group.sms.sender 0
...@@ -11,15 +11,15 @@ import com.liquidnet.service.kylin.dto.param.SyncOrderParam; ...@@ -11,15 +11,15 @@ import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
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 com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl; import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.*;
import io.swagger.annotations.ApiOperation; import org.apache.ibatis.annotations.Param;
import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -135,4 +135,53 @@ public class KylinOrderTicketsController { ...@@ -135,4 +135,53 @@ public class KylinOrderTicketsController {
map.put("unPayCount", unPayCount); map.put("unPayCount", unPayCount);
return ResponseDto.success(map); return ResponseDto.success(map);
} }
@PostMapping("transfer")
@ApiOperation("转赠订单")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单id"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "transferUid", value = "转赠目标uid"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "transferMobile", value = "转赠目标手机号"),
})
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> orderTransfer(@RequestParam(value = "orderId") @NotNull @NotBlank String orderId,
@RequestParam(value = "transferUid") @NotNull @NotBlank String transferUid,
@RequestParam(value = "transferMobile") @NotNull @NotBlank String transferMobile
) {
return orderTicketsService.orderTransfer(orderId, transferUid, transferMobile);
}
@PostMapping("transferWithDraw")
@ApiOperation("转赠订单撤回")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单id"),
})
public ResponseDto<String> orderTransferWithdraw(@RequestParam(value = "orderId") @NotNull @NotBlank String orderId) {
return orderTicketsService.orderTransferWithdraw(orderId);
}
@PostMapping("transferAccept")
@ApiOperation("转赠订单接收")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "enterIdList", value = "逗号隔开的入场人id"),
})
public ResponseDto<String> orderTransferAccept(@RequestParam(required = false) String enterIdList) {
return orderTicketsService.orderTransferAccept(enterIdList);
}
@PostMapping("transferReject")
@ApiOperation("转赠订单拒收")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> orderTransferReject() {
return orderTicketsService.orderTransferReject();
}
@PostMapping("transferBack")
@ApiOperation("转赠订单退回")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> orderTransferBack(@RequestParam(value = "orderId") String orderId) {
return orderTicketsService.orderTransferBack(orderId);
}
} }
...@@ -34,6 +34,53 @@ public class DataUtils { ...@@ -34,6 +34,53 @@ public class DataUtils {
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
/**
* 转赠订单
*
* @param uid
* @param vo
*/
public void setTransferOrder(String uid, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
redisUtil.set(redisKey, vo);
}
/**
* 转赠订单
*
* @param uid
*/
public KylinOrderTicketVo getTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
Object obj = redisUtil.get(redisKey);
if (obj != null) {
return (KylinOrderTicketVo) obj;
} else {
return null;
}
}
/**
* 转赠订单
*
* @param uid
*/
public void delTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
redisUtil.del(redisKey);
}
/**
* 转赠订单
*
* @param uid
*/
public boolean hasTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
return redisUtil.hasKey(redisKey);
}
/** /**
* 获取普通剩余库存 * 获取普通剩余库存
* *
...@@ -64,13 +111,15 @@ public class DataUtils { ...@@ -64,13 +111,15 @@ public class DataUtils {
public List<KylinOrderListVo> getOrderList(String userId) { public List<KylinOrderListVo> getOrderList(String userId) {
Object obj = redisUtil.get(KylinRedisConst.ORDER_LIST + userId); Object obj = redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
;
if (obj != null) { if (obj != null) {
return (List<KylinOrderListVo>) obj; return (List<KylinOrderListVo>) obj;
} else { } else {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId)) List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40), .with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName()); KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList); redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
return voList; return voList;
} }
...@@ -88,6 +137,9 @@ public class DataUtils { ...@@ -88,6 +137,9 @@ public class DataUtils {
return (KylinOrderTicketVo) obj; return (KylinOrderTicketVo) obj;
} else { } else {
KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName()); KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if(ticketData==null){
return null;
}
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName()); List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
ticketData.setEntitiesVoList(kylinOrderTicketEntitiesVoList); ticketData.setEntitiesVoList(kylinOrderTicketEntitiesVoList);
redisUtil.set(KylinRedisConst.ORDER + orderId, ticketData); redisUtil.set(KylinRedisConst.ORDER + orderId, ticketData);
...@@ -95,6 +147,11 @@ public class DataUtils { ...@@ -95,6 +147,11 @@ public class DataUtils {
} }
} }
public void setOrderTicketVo(String orderId, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER + orderId;
redisUtil.set(redisKey, vo);
}
/** /**
* 删除订单redis * 删除订单redis
* *
...@@ -527,4 +584,78 @@ public class DataUtils { ...@@ -527,4 +584,78 @@ public class DataUtils {
return (KylinOrderExpressVo) redisUtil.get(redisKey); return (KylinOrderExpressVo) redisUtil.get(redisKey);
} }
/**
* 演出是否实名
*
* @param performanceId
*/
public int getPerformanceIsTrueName(String performanceId) {
Object obj = redisUtil.get(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId);
if (obj!=null) {
return (int)obj;
}else{
int isTrueName = getPerformanceVo(performanceId).getIsTrueName();
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId,isTrueName);
return isTrueName;
}
}
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
int isTrueName = getPerformanceIsTrueName(performanceId);
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
}
}
// 获取 用户维度 演出购买数量
public int getUserPBuyCount(String userId, String performanceId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + userId + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId);
} catch (Exception e) {
return 0;
}
}
// 获取 用户维度 票种购买数量
public int getUserTBuyCount(String userId, String ticketId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + userId + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId);
} catch (Exception e) {
return 0;
}
}
// 获取 证件维度 演出购买数量
public int getIdCardPBuyCount(String idCard, String performanceId) {
try {
return (int) redisUtil.get(KylinRedisConst.IDCARD_BUY_INFO + idCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId);
} catch (Exception e) {
return 0;
}
}
// 获取 证件维度 票种购买数量
public int getIdCardTBuyCount(String idCard, String ticketId) {
try {
return (int) redisUtil.get(KylinRedisConst.IDCARD_BUY_INFO + idCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId);
} catch (Exception e) {
return 0;
}
}
} }
package com.liquidnet.service.kylin.utils; package com.liquidnet.service.kylin.utils;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
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;
...@@ -24,6 +25,8 @@ public class ObjectUtil { ...@@ -24,6 +25,8 @@ public class ObjectUtil {
private static final ArrayList<KylinOrderListVo> kylinOrderListVoArrayList = new ArrayList<>(); private static final ArrayList<KylinOrderListVo> kylinOrderListVoArrayList = new ArrayList<>();
private static final ArrayList<KylinBanners> kylinBannerListArrayList = new ArrayList<>(); private static final ArrayList<KylinBanners> kylinBannerListArrayList = new ArrayList<>();
private static final PagedResult<KylinStationPerformanceVo> kylinStationPerformanceVoPagedResult = new PagedResult<>(); private static final PagedResult<KylinStationPerformanceVo> kylinStationPerformanceVoPagedResult = new PagedResult<>();
private static final ArrayList<AdamEntersVo> arrayListObject = new ArrayList<>();
public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() { public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() {
return (ArrayList<KylinStationPerformanceVo>) kylinStationPerformanceVoArrayList.clone(); return (ArrayList<KylinStationPerformanceVo>) kylinStationPerformanceVoArrayList.clone();
...@@ -72,4 +75,8 @@ public class ObjectUtil { ...@@ -72,4 +75,8 @@ public class ObjectUtil {
public static PagedResult<KylinStationPerformanceVo> getKylinStationPerformanceVoPagedResult() { public static PagedResult<KylinStationPerformanceVo> getKylinStationPerformanceVoPagedResult() {
return kylinStationPerformanceVoPagedResult.clone(); return kylinStationPerformanceVoPagedResult.clone();
} }
public static ArrayList<AdamEntersVo> cloneArrayListObject() {
return (ArrayList<AdamEntersVo>) arrayListObject.clone();
}
} }
package com.liquidnet.service.kylin.utils; package com.liquidnet.service.kylin.utils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.ResponseDto;
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.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayInnerResultVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import javax.xml.ws.Response;
import java.util.List; import java.util.List;
@Component @Component
...@@ -15,6 +26,97 @@ public class OrderUtils { ...@@ -15,6 +26,97 @@ public class OrderUtils {
@Autowired @Autowired
private DataUtils dataUtils; private DataUtils dataUtils;
@Value("${liquidnet.adam.url}")
private String adamUrl;
public String judgeOrderLimit(
int type,
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceLimitCount,
int performanceMemberLimitCount,
int ticketLimitCount,
int ticketMemberLimitCount,
int performanceBuyCount,
int ticketBuyCount,
int memberType,
int isTrueName
) {
Integer[] integers;
if (101 == type) {
integers = festivalOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} else {
integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
}
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1], isTrueName);
}
public Integer[] roadShowOrderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount += dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount += dataUtils.getIdCardTBuyCount(idCard, ticketId);
} else {//非实名
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = new Integer[2];
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
return array;
}
public Integer[] festivalOrderLimit(
String userId,
String idCard,
String performanceId,
String ticketId,
int performanceBuyCount,
int ticketBuyCount,
int isTrueName
) {
if (1 == isTrueName) {//实名
performanceBuyCount += dataUtils.getIdCardPBuyCount(idCard, performanceId);
ticketBuyCount += dataUtils.getIdCardTBuyCount(idCard, ticketId);
} else {//非实名
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
}
Integer[] array = new Integer[2];
array[0] = performanceBuyCount;
array[1] = ticketBuyCount;
return array;
}
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount, int isTrueName) {
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount > performanceMemberLimitCount && performanceMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceMemberLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCount > ticketMemberLimitCount && ticketMemberLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketMemberLimitCount + "张,已超出";//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount > performanceLimitCount && performanceLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "本场") + "演出限购" + performanceLimitCount + "张,已超出";//超过演出维度购买量
}
if (ticketBuyCount > ticketLimitCount && ticketLimitCount != 0) {
return (1 == isTrueName ? "实名制" : "该") + "票种限购" + ticketLimitCount + "张,已超出";//超过票维度购买量
}
}
return "";
}
/** /**
* @param userId 用户id * @param userId 用户id
...@@ -24,14 +126,14 @@ public class OrderUtils { ...@@ -24,14 +126,14 @@ public class OrderUtils {
public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) { public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) {
List<KylinOrderListVo> vo = ObjectUtil.getKylinOrderListVoArrayList(); List<KylinOrderListVo> vo = ObjectUtil.getKylinOrderListVoArrayList();
List<KylinOrderListVo> redisVo = ObjectUtil.getKylinOrderListVoArrayList(); List<KylinOrderListVo> redisVo = ObjectUtil.getKylinOrderListVoArrayList();
KylinOrderListVo voItem = KylinOrderListVo.getNew();
KylinOrderTicketVo data; KylinOrderTicketVo data;
if (dataSingle == null) { if (dataSingle == null) {
data = dataUtils.getOrderTicketVo(orderId); data = dataUtils.getOrderTicketVo(orderId);
} else { } else {
data = dataSingle; data = dataSingle;
} }
BeanUtils.copyProperties(data, voItem);
KylinOrderListVo voItem = KylinOrderListVo.getNew().copy(data);
List<KylinOrderListVo> redisData = dataUtils.getOrderList(userId); List<KylinOrderListVo> redisData = dataUtils.getOrderList(userId);
if (type == 1) { if (type == 1) {
redisVo.add(voItem); redisVo.add(voItem);
...@@ -77,4 +179,14 @@ public class OrderUtils { ...@@ -77,4 +179,14 @@ public class OrderUtils {
return false; return false;
} }
} }
public List<AdamEntersVo> getEnters(String entersIds, String uid) {
MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString();
headers.add("Accept", "application/json;charset=UTF-8");
String returnVo = HttpUtil.get("https://testadam.zhengzai.tv" + "/adam/rsc/inquire/enters?entersIds=" + entersIds + "&uid=" + uid, null, headers);
ResponseDto<List<AdamEntersVo>> ResponseVo = JsonUtils.fromJson(returnVo, new TypeReference<ResponseDto<List<AdamEntersVo>>>() {
});
return ResponseVo.getData();
}
} }
...@@ -44,4 +44,9 @@ kylin_order_refund.overtimeRefund=INSERT INTO kylin_order_refunds (order_refunds ...@@ -44,4 +44,9 @@ kylin_order_refund.overtimeRefund=INSERT INTO kylin_order_refunds (order_refunds
kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?) kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?)
# ------------------------用户转赠相关接口----------------------------
kylin_order_task.insert = INSERT INTO `kylin_order_task`(`order_id` , `status` , `created_at`) VALUES (? ,? ,?);
kylin_order_task.delete = DELETE FROM kylin_order_task WHERE order_id = ?;
kylin_order_ticket_status.transfer.update = UPDATE kylin_order_ticket_status SET transfer_status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.transfer.update = UPDATE kylin_order_ticket_relations SET transfer_uid = ?, transfer_id = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
...@@ -60,6 +60,9 @@ public class DataUtils { ...@@ -60,6 +60,9 @@ public class DataUtils {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId)) List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40), .with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName()); KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList); redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
return voList; return voList;
} }
......
...@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
...@@ -35,4 +36,11 @@ public class KylinOrderTicketsController { ...@@ -35,4 +36,11 @@ public class KylinOrderTicketsController {
public ResponseDto<Boolean> checkOrderTime() { public ResponseDto<Boolean> checkOrderTime() {
return ResponseDto.success(kylinCheckOrderTime.checkOrderTime("")); return ResponseDto.success(kylinCheckOrderTime.checkOrderTime(""));
} }
@PostMapping("checkTransferOrder")
@ApiOperation("转赠订单失效脚本")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<Boolean> checkTransferOrder(@RequestParam Integer minute) {
return ResponseDto.success(kylinCheckOrderTime.checkTransferOrder(minute));
}
} }
package com.liquidnet.service.platform.service.impl.kylin; package com.liquidnet.service.platform.service.impl.kylin;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.OrderCloseMapping; import com.liquidnet.service.base.OrderCloseMapping;
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.dao.OrderScriptDto; import com.liquidnet.service.kylin.dao.OrderScriptDto;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketRelations; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus; import com.liquidnet.service.kylin.mapper.KylinOrderTaskMapper;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketRelationsMapper; import com.liquidnet.service.kylin.mapper.KylinOrderTicketRelationsMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper; import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper; import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
...@@ -18,6 +19,7 @@ import com.liquidnet.service.platform.utils.DataUtils; ...@@ -18,6 +19,7 @@ import com.liquidnet.service.platform.utils.DataUtils;
import com.liquidnet.service.platform.utils.QueueUtils; import com.liquidnet.service.platform.utils.QueueUtils;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter;
...@@ -55,6 +57,8 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K ...@@ -55,6 +57,8 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
private KylinOrderTicketStatusMapper orderTicketStatusMapper; private KylinOrderTicketStatusMapper orderTicketStatusMapper;
@Autowired @Autowired
private KylinOrderTicketRelationsMapper orderTicketRelationsMapper; private KylinOrderTicketRelationsMapper orderTicketRelationsMapper;
@Autowired
private KylinOrderTaskMapper orderTaskMapper;
public boolean checkOrderTime(String userId) { public boolean checkOrderTime(String userId) {
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId); List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
...@@ -141,4 +145,57 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K ...@@ -141,4 +145,57 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
} }
return true; return true;
} }
public boolean checkTransferOrder(Integer minute) {
LocalDateTime now = LocalDateTime.now();
List<KylinOrderTask> task = orderTaskMapper.selectList(
Wrappers.lambdaQuery(KylinOrderTask.class).eq(KylinOrderTask::getStatus, 10).last("and NOW() > DATE_SUB(created_at,INTERVAL -("+minute+") MINUTE)")
);
ArrayList<String> orderIdList = CollectionUtil.arrayListString();
for (KylinOrderTask item : task) {
orderIdList.add(item.getOrderId());
}
if (orderIdList.size() == 0) {
return true;
}
//处理原订单mongo
HashMap<String, Object> mapMongo = new HashMap<>();
mapMongo.put("transferStatus", 0);
mapMongo.put("transferUid", "");
mapMongo.put("updatedAt", DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
mapMongo.put("changeDate", now);
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("orderTicketsId").in(orderIdList)).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(mapMongo))
);
//处理原订单mysql
KylinOrderTicketStatus orderTicketStatus = new KylinOrderTicketStatus();
orderTicketStatus.setTransferStatus(0);
orderTicketStatus.setUpdatedAt(now);
orderTicketStatusMapper.update(orderTicketStatus, new UpdateWrapper<KylinOrderTicketStatus>().in("order_id", orderIdList));
KylinOrderTicketRelations orderTicketRelations = new KylinOrderTicketRelations();
orderTicketRelations.setTransferUid("");
orderTicketRelations.setUpdatedAt(now);
orderTicketRelationsMapper.update(orderTicketRelations, new UpdateWrapper<KylinOrderTicketRelations>().in("order_id", orderIdList));
// mysql 删除持久化数据
orderTaskMapper.delete(Wrappers.lambdaQuery(KylinOrderTask.class).eq(KylinOrderTask::getStatus, 10).last("and NOW() > DATE_SUB(created_at,INTERVAL -("+minute+") MINUTE)"));
//处理原订单redis
int forSize = 500;
int forCount = orderIdList.size() % forSize == 0 ? orderIdList.size() / forSize : (orderIdList.size() / forSize) + 1;
for (int i = 0; i < forCount; i++) {
LinkedList<String> mqList = new LinkedList<>();
for (int y = 0; y < forSize; y++) {
try {
String t = orderIdList.get(i * 500 + y);
mqList.add(t);
} catch (Exception e) {
break;
}
}
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_TRANSFER_OVERTIME.getKey(), OrderCloseMapping.get(mqList));
}
return true;
}
} }
...@@ -151,6 +151,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -151,6 +151,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return performanceId; return performanceId;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData(step1Param.getMerchantId(), "createStep1", step1Param, e));
return null; return null;
} }
} }
...@@ -203,6 +204,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -203,6 +204,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return performanceId; return performanceId;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData(step1Param.getMerchantId(), "updateStep1", step1Param, e));
return null; return null;
} }
} }
...@@ -314,6 +316,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -314,6 +316,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "createStep2", step2Param, e));
return ResponseDto.failure(ErrorMapping.get(20115)); return ResponseDto.failure(ErrorMapping.get(20115));
} }
} }
...@@ -444,6 +447,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -444,6 +447,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "updateStep2", step2Param, e));
return ResponseDto.failure(ErrorMapping.get(20115)); return ResponseDto.failure(ErrorMapping.get(20115));
} }
} }
...@@ -527,7 +531,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -527,7 +531,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
log.info(UserPathDto.setPartnerData("0", "onLinePerformance", "performancesId=" + performancesId, "上线成功")); log.info(UserPathDto.setPartnerData("0", "onLinePerformance", "performancesId=" + performancesId, "上线成功"));
return ResponseDto.success("上线成功"); return ResponseDto.success("上线成功");
} catch (Exception e) { } catch (Exception e) {
log.debug("上线失败", e); log.info(UserPathDto.setPartnerData("0", "onLinePerformance", "performancesId=" + performancesId, e));
return ResponseDto.failure(ErrorMapping.get(20108)); return ResponseDto.failure(ErrorMapping.get(20108));
} }
} }
...@@ -552,7 +556,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -552,7 +556,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return ResponseDto.failure(ErrorMapping.get(20111)); return ResponseDto.failure(ErrorMapping.get(20111));
} }
} catch (Exception e) { } catch (Exception e) {
log.debug("下线失败", e); log.info(UserPathDto.setPartnerData("0", "outLinePerformance", "outLinePerformance=" + performancesId, e));
return ResponseDto.failure(ErrorMapping.get(20109)); return ResponseDto.failure(ErrorMapping.get(20109));
} }
} }
...@@ -589,6 +593,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -589,6 +593,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return performancePartnerVo.getPerformancesId(); return performancePartnerVo.getPerformancesId();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "copyPerformance", "performancesId=" + performancesId, e));
return null; return null;
} }
} }
...@@ -680,6 +685,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -680,6 +685,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "withdraw", performancesId, e));
return ResponseDto.failure(ErrorMapping.get(20117)); return ResponseDto.failure(ErrorMapping.get(20117));
} }
} }
......
...@@ -123,6 +123,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT ...@@ -123,6 +123,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
return ResponseDto.success(kylinTicketTimesPartnerVo); return ResponseDto.success(kylinTicketTimesPartnerVo);
} catch (Exception e) { } catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","createTimes", createTicketTimesParam,e));
return ResponseDto.failure(ErrorMapping.get(20105)); return ResponseDto.failure(ErrorMapping.get(20105));
} }
} }
...@@ -162,6 +163,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT ...@@ -162,6 +163,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
); );
return ResponseDto.success(kylinTicketTimesPartnerVo); return ResponseDto.success(kylinTicketTimesPartnerVo);
} catch (Exception e) { } catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","addNewTimes", createTicketTimesParam,e));
return ResponseDto.failure(ErrorMapping.get(20101)); return ResponseDto.failure(ErrorMapping.get(20101));
} }
} }
...@@ -204,6 +206,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT ...@@ -204,6 +206,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
return ResponseDto.success(); return ResponseDto.success();
} }
} catch (Exception e) { } catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","deleteTimes", "ticketTimesId="+ticketTimesId,e));
return ResponseDto.failure(ErrorMapping.get(20102)); return ResponseDto.failure(ErrorMapping.get(20102));
} }
} }
...@@ -249,6 +252,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT ...@@ -249,6 +252,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
return ResponseDto.success(JsonUtils.fromJson(doc.toJson(), KylinTicketTimesPartnerVo.class)); return ResponseDto.success(JsonUtils.fromJson(doc.toJson(), KylinTicketTimesPartnerVo.class));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","changeTimes", createTicketTimesParam,e));
return ResponseDto.failure(ErrorMapping.get(20103)); return ResponseDto.failure(ErrorMapping.get(20103));
} }
} }
......
...@@ -144,6 +144,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -144,6 +144,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVo); return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) { } catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","createTicket", ticketCreateParam,e));
return ResponseDto.failure(ErrorMapping.get(20105)); return ResponseDto.failure(ErrorMapping.get(20105));
} }
} }
...@@ -197,6 +198,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -197,6 +198,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVo); return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) { } catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","addNewTicket", ticketCreateParam,e));
return ResponseDto.failure(ErrorMapping.get(20101)); return ResponseDto.failure(ErrorMapping.get(20101));
} }
} }
...@@ -250,6 +252,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -250,6 +252,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVoData); return ResponseDto.success(kylinTicketPartnerVoData);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","updateTicket", ticketCreateParam,e));
return ResponseDto.failure(ErrorMapping.get(20103)); return ResponseDto.failure(ErrorMapping.get(20103));
} }
} }
...@@ -295,6 +298,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -295,6 +298,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","deleteTicket", "ticketsId="+ticketsId,e));
return ResponseDto.failure(ErrorMapping.get(20102)); return ResponseDto.failure(ErrorMapping.get(20102));
} }
} }
...@@ -321,6 +325,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -321,6 +325,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVo); return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","deleteTicket", "performanceId="+performanceId+",ticketsId="+ticketsId,e));
return ResponseDto.failure(ErrorMapping.get(20107)); return ResponseDto.failure(ErrorMapping.get(20107));
} }
} }
...@@ -389,6 +394,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -389,6 +394,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","onLine", "performancesId="+performancesId+",ticketsId="+ticketsId,"上线失败"));
return ResponseDto.failure(ErrorMapping.get(20108)); return ResponseDto.failure(ErrorMapping.get(20108));
} }
} }
...@@ -421,6 +427,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -421,6 +427,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","outLine", "performancesId="+performancesId+",ticketsId="+ticketsId,"下线失败"));
return ResponseDto.failure(ErrorMapping.get(20109)); return ResponseDto.failure(ErrorMapping.get(20109));
} }
} }
......
...@@ -149,6 +149,9 @@ public class DataUtils { ...@@ -149,6 +149,9 @@ public class DataUtils {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId)) List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40), .with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName()); KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList); redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
return voList; return voList;
} }
......
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