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

Commit 7b21c115 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/master' into dev_member_coupon

# Conflicts:
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/mongo/KylinPerformanceVo.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/OrderDetailsVo.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinPerformancesController.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinPerformancesAdminServiceImpl.java
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-dev.yml
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-test.yml
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinPerformanceStatus.java
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinPerformancesMapper.xml
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
#	liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/service/impl/kylin/DMCheckOrderTimeImpl.java
parents d5501151 f388a9f8
-- 退款转赠添加 --
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 ORDER_COUPON = "kylin:order:coupon:id:"; public static final String ORDER_COUPON = "kylin:order:coupon:id:";
// 收货地址 // 收货地址
......
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,14 +112,14 @@ public class KylinPerformanceVo { ...@@ -112,14 +112,14 @@ public class KylinPerformanceVo {
private String refundOpenTime; private String refundOpenTime;
private String refundCloseTime; private String refundCloseTime;
private Integer isRefundPoundage;
private Integer isRefundVoucher;
private Integer isRefundExpress;
private Integer isTransfer; private Integer isTransfer;
private String transferStartTime; private String transferStartTime;
private String transferEndTime; 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();
...@@ -128,13 +128,13 @@ public class KylinPerformanceVo { ...@@ -128,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;
...@@ -149,7 +149,7 @@ public class KylinPerformanceVo { ...@@ -149,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;
...@@ -164,11 +164,14 @@ public class KylinPerformanceVo { ...@@ -164,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());
this.isRefundPoundage = performanceStatus.getIsRefundPoundage(); this.isRefundPoundage = performanceStatus.getIsRefundPoundage();
this.isRefundVoucher = performanceStatus.getIsRefundVoucher(); this.isRefundVoucher = performanceStatus.getIsRefundVoucher();
this.isRefundExpress = performanceStatus.getIsRefundExpress(); this.isRefundExpress = performanceStatus.getIsRefundExpress();
......
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,22 +2,37 @@ package com.liquidnet.service.kylin.dto.vo.returns; ...@@ -2,22 +2,37 @@ 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 com.liquidnet.service.kylin.entity.KylinOrderCoupons; import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
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 List<KylinOrderCoupons> orderCouponsList; private List<KylinOrderCoupons> orderCouponsList;
......
...@@ -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);
} }
...@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam; ...@@ -8,6 +8,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 java.util.List; import java.util.List;
...@@ -189,7 +190,23 @@ public interface IKylinPerformancesAdminService { ...@@ -189,7 +190,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)
......
...@@ -105,6 +105,7 @@ public class KylinOrderRefundBatchAdminController extends BaseController { ...@@ -105,6 +105,7 @@ public class KylinOrderRefundBatchAdminController extends BaseController {
return error(res.getMessage()); return error(res.getMessage());
} }
} catch (Exception e) { } catch (Exception e) {
logger.info("refundBatchApplyException", e);
return error(e.getMessage()); return error(e.getMessage());
} }
} }
......
...@@ -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;
...@@ -201,7 +202,24 @@ public class KylinPerformancesController extends BaseController { ...@@ -201,7 +202,24 @@ public class KylinPerformancesController extends BaseController {
@RequestParam("isRefundPoundage") Integer isRefundPoundage, @RequestParam("isRefundPoundage") Integer isRefundPoundage,
@RequestParam("isRefundVoucher") Integer isRefundVoucher, @RequestParam("isRefundVoucher") Integer isRefundVoucher,
@RequestParam("isRefundExpress") Integer isRefundExpress) { @RequestParam("isRefundExpress") Integer isRefundExpress) {
boolean result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime,isRefundPoundage,isRefundVoucher,isRefundExpress); String result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime,isRefundPoundage,isRefundVoucher,isRefundExpress); return this.success(result);
return toAjax(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 () {
......
...@@ -166,6 +166,7 @@ ...@@ -166,6 +166,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.code > 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
......
...@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.utils.DateUtils; import com.liquidnet.client.admin.common.utils.DateUtils;
import com.liquidnet.client.admin.common.utils.ShiroUtils; import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.commons.lang.util.BeanUtil; import com.liquidnet.commons.lang.util.BeanUtil;
...@@ -113,6 +114,9 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -113,6 +114,9 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
if (thisOrderStatus != KylinTableStatusConst.ORDER_STATUS1 && thisOrderStatus != KylinTableStatusConst.ORDER_STATUS3 && thisOrderStatus != KylinTableStatusConst.ORDER_STATUS6) { if (thisOrderStatus != KylinTableStatusConst.ORDER_STATUS1 && thisOrderStatus != KylinTableStatusConst.ORDER_STATUS3 && thisOrderStatus != KylinTableStatusConst.ORDER_STATUS6) {
return ResponseDto.failure("当前订单状态不支持退款申请"); return ResponseDto.failure("当前订单状态不支持退款申请");
} }
if (!(orderStatus.getTransferStatus() == 0 || orderStatus.getTransferStatus() == 5)) {
return ResponseDto.failure("当前转增状态不可退款");
}
// 订单支付状态需为已支付 // 订单支付状态需为已支付
if (thisPayStatus != KylinTableStatusConst.ORDER_PAY_STATUS1) { if (thisPayStatus != KylinTableStatusConst.ORDER_PAY_STATUS1) {
return ResponseDto.failure("订单支付状态需为已支付"); return ResponseDto.failure("订单支付状态需为已支付");
...@@ -409,75 +413,85 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -409,75 +413,85 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
return pageInfoTmp; return pageInfoTmp;
} }
public RefundOrderDetailsVo orderDetails(String orderCode) { public AjaxResult orderDetails(String orderCode) {
// 订单 try {
KylinOrderTickets kylinOrderTickets = kylinOrderTicketsMapper.selectOne( // 订单
new QueryWrapper<KylinOrderTickets>().eq("order_code", orderCode) KylinOrderTickets kylinOrderTickets = kylinOrderTicketsMapper.selectOne(
); new QueryWrapper<KylinOrderTickets>().eq("order_code", orderCode)
BigDecimal oldPriceExpress = kylinOrderTickets.getPriceExpress(); );
// 传的快递费不能大于实际的快递费=(支付的快递费-已退的快递费) KylinOrderTicketStatus kylinOrderTicketStatus = kylinOrderTicketStatusMapper.selectOne(
BigDecimal refundPriceExpressSum = kylinOrderRefundsMapper.RefundPriceExpressSum(// 已退快递费 Wrappers.lambdaQuery(KylinOrderTicketStatus.class).eq(KylinOrderTicketStatus::getOrderId, kylinOrderTickets.getOrderTicketsId())
kylinOrderTickets.getOrderTicketsId(), );
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL if (!(kylinOrderTicketStatus.getTransferStatus() == 0 || kylinOrderTicketStatus.getTransferStatus() == 5)) {
); return AjaxResult.error("当前转增状态不可退款");
if (null == refundPriceExpressSum) { }
refundPriceExpressSum = new BigDecimal(0); BigDecimal oldPriceExpress = kylinOrderTickets.getPriceExpress();
} // 传的快递费不能大于实际的快递费=(支付的快递费-已退的快递费)
BigDecimal RefundPriceExpress = kylinOrderTickets.getPriceExpress().subtract(refundPriceExpressSum); BigDecimal refundPriceExpressSum = kylinOrderRefundsMapper.RefundPriceExpressSum(// 已退快递费
kylinOrderTickets.setPriceExpress(RefundPriceExpress); kylinOrderTickets.getOrderTicketsId(),
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL
// 订单关联 获取演出id );
KylinOrderTicketRelations kylinOrderTicketRelations = kylinOrderTicketRelationsMapper.selectOne( if (null == refundPriceExpressSum) {
new QueryWrapper<KylinOrderTicketRelations>().eq("order_id", kylinOrderTickets.getOrderTicketsId()) refundPriceExpressSum = new BigDecimal(0);
); }
BigDecimal RefundPriceExpress = kylinOrderTickets.getPriceExpress().subtract(refundPriceExpressSum);
kylinOrderTickets.setPriceExpress(RefundPriceExpress);
// 演出 // 订单关联 获取演出id
KylinPerformances kylinPerformances = kylinPerformancesMapper.selectOne( KylinOrderTicketRelations kylinOrderTicketRelations = kylinOrderTicketRelationsMapper.selectOne(
new QueryWrapper<KylinPerformances>().eq("performances_id", kylinOrderTicketRelations.getPerformanceId()) new QueryWrapper<KylinOrderTicketRelations>().eq("order_id", kylinOrderTickets.getOrderTicketsId())
); );
List<KylinOrderTicketEntitiesDao> entitiesListTemp = kylinOrderTicketEntitiesMapper.getRefundEntitiesList(kylinOrderTickets.getOrderTicketsId()); // 演出
List<KylinOrderTicketEntitiesDao> entitiesList = new ArrayList<>(); KylinPerformances kylinPerformances = kylinPerformancesMapper.selectOne(
if (entitiesListTemp.size() > 0) { new QueryWrapper<KylinPerformances>().eq("performances_id", kylinOrderTicketRelations.getPerformanceId())
BigDecimal priceActual = kylinOrderTickets.getPriceActual();
BigDecimal priceExpress = kylinOrderTickets.getPriceExpress();
int allEntitiesCount = kylinOrderTicketEntitiesMapper.selectCount(// 总入场人数量 排出未付款的 用来计算单入场人的价格
new QueryWrapper<KylinOrderTicketEntities>()
.eq("order_id", kylinOrderTickets.getOrderTicketsId())
.ne("is_payment", KylinTableStatusConst.ENTITIES_IS_PAYMENT0)
); );
BigDecimal onePrice = (priceActual.subtract(oldPriceExpress)).divide(BigDecimal.valueOf(allEntitiesCount));//单价
for (KylinOrderTicketEntitiesDao entities : entitiesListTemp) { List<KylinOrderTicketEntitiesDao> entitiesListTemp = kylinOrderTicketEntitiesMapper.getRefundEntitiesList(kylinOrderTickets.getOrderTicketsId());
BigDecimal refundedPrice = kylinOrderTicketEntitiesMapper.getRefundEntitiesPrice(//已退 包含退款中 List<KylinOrderTicketEntitiesDao> entitiesList = new ArrayList<>();
kylinOrderTickets.getOrderTicketsId(), if (entitiesListTemp.size() > 0) {
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL, BigDecimal priceActual = kylinOrderTickets.getPriceActual();
entities.getOrderTicketEntitiesId() BigDecimal priceExpress = kylinOrderTickets.getPriceExpress();
int allEntitiesCount = kylinOrderTicketEntitiesMapper.selectCount(// 总入场人数量 排出未付款的 用来计算单入场人的价格
new QueryWrapper<KylinOrderTicketEntities>()
.eq("order_id", kylinOrderTickets.getOrderTicketsId())
.ne("is_payment", KylinTableStatusConst.ENTITIES_IS_PAYMENT0)
); );
BigDecimal canRefundedPrice; BigDecimal onePrice = (priceActual.subtract(oldPriceExpress)).divide(BigDecimal.valueOf(allEntitiesCount));//单价
if (null != refundedPrice) { for (KylinOrderTicketEntitiesDao entities : entitiesListTemp) {
canRefundedPrice = onePrice.subtract(refundedPrice); BigDecimal refundedPrice = kylinOrderTicketEntitiesMapper.getRefundEntitiesPrice(//已退 包含退款中
} else { kylinOrderTickets.getOrderTicketsId(),
canRefundedPrice = onePrice; KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL,
} entities.getOrderTicketEntitiesId()
entities.setCanRefundedPrice(canRefundedPrice); );
if (canRefundedPrice.compareTo(BigDecimal.ZERO) > 0) { // 退款中但是可退款金额为0不展示 BigDecimal canRefundedPrice;
entitiesList.add(entities); if (null != refundedPrice) {
canRefundedPrice = onePrice.subtract(refundedPrice);
} else {
canRefundedPrice = onePrice;
}
entities.setCanRefundedPrice(canRefundedPrice);
if (canRefundedPrice.compareTo(BigDecimal.ZERO) > 0) { // 退款中但是可退款金额为0不展示
entitiesList.add(entities);
}
} }
} }
}
KylinOrderTicketVo kylinOrderTicketVo = new KylinOrderTicketVo(); KylinOrderTicketVo kylinOrderTicketVo = new KylinOrderTicketVo();
BeanUtil.copy(kylinOrderTickets, kylinOrderTicketVo); BeanUtil.copy(kylinOrderTickets, kylinOrderTicketVo);
KylinPerformanceVo performanceVo = new KylinPerformanceVo(); KylinPerformanceVo performanceVo = new KylinPerformanceVo();
BeanUtil.copy(kylinPerformances, performanceVo); BeanUtil.copy(kylinPerformances, performanceVo);
RefundOrderDetailsVo refundOrderDetailsVo = new RefundOrderDetailsVo(); RefundOrderDetailsVo refundOrderDetailsVo = new RefundOrderDetailsVo();
refundOrderDetailsVo.setOrderTicketVo(kylinOrderTicketVo); refundOrderDetailsVo.setOrderTicketVo(kylinOrderTicketVo);
refundOrderDetailsVo.setKylinPerformanceVo(performanceVo); refundOrderDetailsVo.setKylinPerformanceVo(performanceVo);
refundOrderDetailsVo.setKylinOrderTicketEntitiesDao(entitiesList); refundOrderDetailsVo.setKylinOrderTicketEntitiesDao(entitiesList);
return refundOrderDetailsVo; return AjaxResult.success(refundOrderDetailsVo);
} catch (Exception e) {
return AjaxResult.error("未找到该订单信息");
}
} }
@Override @Override
...@@ -499,7 +513,7 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -499,7 +513,7 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
orderCode = data.getOrderCode(); orderCode = data.getOrderCode();
} }
} }
}catch (Exception e){ } catch (Exception e) {
} }
return orderCode; return orderCode;
......
...@@ -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;
} }
} }
......
...@@ -587,18 +587,64 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -587,18 +587,64 @@ 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,
Integer isRefundPoundage, Integer isRefundPoundage,
Integer isRefundVoucher, Integer isRefundVoucher,
Integer isRefundExpress) { Integer isRefundExpress) {
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));
kylinPerformanceStatus.setRefundCloseTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundCloseTime)); kylinPerformanceStatus.setRefundCloseTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundCloseTime));
kylinPerformanceStatus.setIsRefundPoundage(isRefundPoundage); kylinPerformanceStatus.setIsRefundPoundage(isRefundPoundage);
kylinPerformanceStatus.setIsRefundVoucher(isRefundVoucher); kylinPerformanceStatus.setIsRefundVoucher(isRefundVoucher);
kylinPerformanceStatus.setIsRefundExpress(isRefundExpress); kylinPerformanceStatus.setIsRefundExpress(isRefundExpress);
...@@ -606,10 +652,10 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -606,10 +652,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 "修改失败";
} }
} }
...@@ -668,7 +714,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -668,7 +714,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<>();
......
...@@ -21,6 +21,7 @@ import com.liquidnet.service.kylin.mapper.KylinOrderRefundBatchesMapper; ...@@ -21,6 +21,7 @@ import com.liquidnet.service.kylin.mapper.KylinOrderRefundBatchesMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderRefundsMapper; import com.liquidnet.service.kylin.mapper.KylinOrderRefundsMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper; import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.mapper.KylinPerformancesMapper; import com.liquidnet.service.kylin.mapper.KylinPerformancesMapper;
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.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
...@@ -42,6 +43,7 @@ import java.util.List; ...@@ -42,6 +43,7 @@ import java.util.List;
* @since 2021-05-25 11:26 上午 * @since 2021-05-25 11:26 上午
*/ */
@Service @Service
@Slf4j
public class KylinRefundPerformancesAdminServiceImpl { public class KylinRefundPerformancesAdminServiceImpl {
@Autowired @Autowired
...@@ -69,7 +71,7 @@ public class KylinRefundPerformancesAdminServiceImpl { ...@@ -69,7 +71,7 @@ public class KylinRefundPerformancesAdminServiceImpl {
HashMap<String, Object> orderStatisAlipay = kylinOrderTicketsMapper.getPerformanceRefundOrderStatis(targetId, paymentTypeAlipay); HashMap<String, Object> orderStatisAlipay = kylinOrderTicketsMapper.getPerformanceRefundOrderStatis(targetId, paymentTypeAlipay);
String[] paymentTypeWepay = {"APPWEPAY", "APPLETWEPAY", "WAPWEPAY", "JSWEPAY", "wepay"}; String[] paymentTypeWepay = {"APPWEPAY", "APPLETWEPAY", "WAPWEPAY", "JSWEPAY", "wepay"};
HashMap<String, Object> orderStatisWepay = kylinOrderTicketsMapper.getPerformanceRefundOrderStatis(targetId, paymentTypeWepay); HashMap<String, Object> orderStatisWepay = kylinOrderTicketsMapper.getPerformanceRefundOrderStatis(targetId, paymentTypeWepay);
BigDecimal totalPriceRefundAlipay = new BigDecimal(0); BigDecimal totalPriceRefundAlipay = new BigDecimal(0.0);
Integer totalRefundNumberAlipay = 0; Integer totalRefundNumberAlipay = 0;
BigDecimal totalPriceRefundWepay = new BigDecimal(0); BigDecimal totalPriceRefundWepay = new BigDecimal(0);
Integer totalRefundNumberWepay = 0; Integer totalRefundNumberWepay = 0;
...@@ -78,14 +80,19 @@ public class KylinRefundPerformancesAdminServiceImpl { ...@@ -78,14 +80,19 @@ public class KylinRefundPerformancesAdminServiceImpl {
totalPriceRefundAlipay = (BigDecimal) orderStatisAlipay.get("total_price_refund"); totalPriceRefundAlipay = (BigDecimal) orderStatisAlipay.get("total_price_refund");
Long totalRefundNumberAlipayBigDecimal = (Long) orderStatisAlipay.get("total_refund_number"); Long totalRefundNumberAlipayBigDecimal = (Long) orderStatisAlipay.get("total_refund_number");
totalRefundNumberAlipay = totalRefundNumberAlipayBigDecimal.intValue(); totalRefundNumberAlipay = totalRefundNumberAlipayBigDecimal.intValue();
if (null == totalPriceRefundAlipay) {
totalPriceRefundAlipay = new BigDecimal(0);
}
} }
if (null != orderStatisWepay) { if (null != orderStatisWepay) {
totalPriceRefundWepay = (BigDecimal) orderStatisWepay.get("total_price_refund"); totalPriceRefundWepay = (BigDecimal) orderStatisWepay.get("total_price_refund");
Long totalRefundNumberWepayBigDecimal = (Long) orderStatisWepay.get("total_refund_number"); Long totalRefundNumberWepayBigDecimal = (Long) orderStatisWepay.get("total_refund_number");
totalRefundNumberWepay = totalRefundNumberWepayBigDecimal.intValue(); totalRefundNumberWepay = totalRefundNumberWepayBigDecimal.intValue();
if (null == totalPriceRefundWepay) {
totalPriceRefundWepay = new BigDecimal(0);
}
} }
if (totalPriceRefundAlipay.compareTo(BigDecimal.ZERO) <= 0 && totalPriceRefundWepay.compareTo(BigDecimal.ZERO) <= 0) { if (totalPriceRefundAlipay.compareTo(BigDecimal.ZERO) <= 0 && totalPriceRefundWepay.compareTo(BigDecimal.ZERO) <= 0) {
return ResponseDto.failure("演出退款金额为0,无需退款"); return ResponseDto.failure("演出退款金额为0,无需退款");
} }
......
...@@ -119,6 +119,9 @@ public class DataUtils { ...@@ -119,6 +119,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);
......
...@@ -249,6 +249,7 @@ public class PerformanceVoUtils { ...@@ -249,6 +249,7 @@ public class PerformanceVoUtils {
KylinPerformanceRelations performanceRelations = new KylinPerformanceRelations(); KylinPerformanceRelations performanceRelations = new KylinPerformanceRelations();
BeanUtils.copyProperties(performanceUpdateMisVo, performanceRelations); BeanUtils.copyProperties(performanceUpdateMisVo, performanceRelations);
performances.setDetails(performanceUpdateMisVo.getDetails());
performances.setCityName((String) redisUtil.getDB15RedisHGet(KylinRedisConst.FIELDS + ":" + performanceRelations.getFieldId(), "city_name")); performances.setCityName((String) redisUtil.getDB15RedisHGet(KylinRedisConst.FIELDS + ":" + performanceRelations.getFieldId(), "city_name"));
performances.setCityId(Integer.parseInt((String) redisUtil.getDB15RedisHGet(KylinRedisConst.FIELDS + ":" + performanceRelations.getFieldId(), "city_id"))); performances.setCityId(Integer.parseInt((String) redisUtil.getDB15RedisHGet(KylinRedisConst.FIELDS + ":" + performanceRelations.getFieldId(), "city_id")));
performances.setCreatedAt(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(performanceUpdateMisVo.getCreatedAt()))); performances.setCreatedAt(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(performanceUpdateMisVo.getCreatedAt())));
...@@ -417,7 +418,7 @@ public class PerformanceVoUtils { ...@@ -417,7 +418,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;
......
...@@ -63,8 +63,6 @@ liquidnet: ...@@ -63,8 +63,6 @@ liquidnet:
localUrl: http://devkylin.zhengzai.tv/kylin/order/syncOrder localUrl: http://devkylin.zhengzai.tv/kylin/order/syncOrder
url: http://devkylin.zhengzai.tv/kylin url: http://devkylin.zhengzai.tv/kylin
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,6 +25,6 @@ liquidnet: ...@@ -25,6 +25,6 @@ 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}
candy: candy:
url: ${liquidnet.service.candy.url} url: ${liquidnet.service.candy.url}
...@@ -25,6 +25,6 @@ liquidnet: ...@@ -25,6 +25,6 @@ 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}
candy: candy:
url:${liquidnet.service.candy.url} url:${liquidnet.service.candy.url}
\ No newline at end of file
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,21 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{ ...@@ -109,6 +109,21 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{
*/ */
private LocalDateTime refundCloseTime; private LocalDateTime refundCloseTime;
/**
* 是否开启转赠 0否 1是
*/
private Integer isTransfer;
/**
* 转赠开始时间
*/
private LocalDateTime transferStartTime;
/**
* 转赠结束时间
*/
private LocalDateTime transferEndTime;
/** /**
* 是否有手续费 * 是否有手续费
*/ */
......
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>
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,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
...@@ -83,6 +84,7 @@ ...@@ -83,6 +84,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}
......
...@@ -188,7 +188,8 @@ ...@@ -188,7 +188,8 @@
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 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 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!=''">
...@@ -277,7 +278,7 @@ ...@@ -277,7 +278,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>
...@@ -462,7 +463,7 @@ ...@@ -462,7 +463,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(
...@@ -474,7 +475,7 @@ ...@@ -474,7 +475,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(
...@@ -487,7 +488,7 @@ ...@@ -487,7 +488,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);
} }
...@@ -320,6 +320,30 @@ public class AdamUserController { ...@@ -320,6 +320,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);
}
} }
...@@ -2,10 +2,9 @@ package com.liquidnet.service.kylin.service.impl; ...@@ -2,10 +2,9 @@ package com.liquidnet.service.kylin.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
...@@ -19,9 +18,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; ...@@ -19,9 +18,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
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.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.*; import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService; import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.liquidnet.service.kylin.utils.DataUtils; import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.ObjectUtil; import com.liquidnet.service.kylin.utils.ObjectUtil;
...@@ -72,13 +69,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -72,13 +69,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
//TODO 缺快递 //TODO 缺快递
PageInfo<List<KylinOrderListVo>> mPageInfo = null; PageInfo<List<KylinOrderListVo>> mPageInfo = null;
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
// checkOrderTime(uid);
try { try {
List<KylinOrderListVo> voList = dataUtils.getOrderList(uid); List<KylinOrderListVo> voList = dataUtils.getOrderList(uid);
for (int i = 0; i < voList.size(); i++) { for (int i = 0; i < voList.size(); i++) {
KylinOrderListVo item = voList.get(i); KylinOrderListVo item = voList.get(i);
item.setStatus(item.getStatus());
//TODO 顺丰快递
Integer orderExpressStatus = dataUtils.getOrderExpressInfo(item.getOrderTicketsId()); Integer orderExpressStatus = dataUtils.getOrderExpressInfo(item.getOrderTicketsId());
item.setExpressStatus(orderExpressStatus); item.setExpressStatus(orderExpressStatus);
...@@ -94,9 +89,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -94,9 +89,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
log.debug("item.getOverdueAt() = " + item.getOverdueAt());
log.debug("DateUtil.getNowTime() = " + DateUtil.getNowTime());
log.debug("item.getRestTime() = " + item.getRestTime());
} else { } else {
item.setRestTime(0L); item.setRestTime(0L);
} }
...@@ -105,6 +97,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -105,6 +97,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} }
} }
KylinOrderTicketVo orderTicketVo = dataUtils.getTransferOrder(uid);
if (orderTicketVo != null) {
voList.add(0, KylinOrderListVo.getNew().copy(orderTicketVo));
}
mPageInfo = new PageInfo(voList); mPageInfo = new PageInfo(voList);
mPageInfo.setTotal(voList.size()); mPageInfo.setTotal(voList.size());
...@@ -119,12 +116,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -119,12 +116,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
@Override @Override
public OrderDetailsVo orderDetails(String orderId) { public OrderDetailsVo orderDetails(String orderId) {
try { try {
Long currentTime = System.currentTimeMillis();
OrderDetailsVo vo = OrderDetailsVo.getNew(); OrderDetailsVo vo = OrderDetailsVo.getNew();
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
// checkOrderTime(uid);
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId); KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
currentTime = System.currentTimeMillis() - currentTime; if (orderTicketVo == null) {
orderTicketVo = dataUtils.getTransferOrder(uid);
}
if (uid.equals("809406") || uid.equals("773650")) { if (uid.equals("809406") || uid.equals("773650")) {
} else { } else {
if (!orderTicketVo.getUserId().equals(uid)) { if (!orderTicketVo.getUserId().equals(uid)) {
...@@ -133,7 +130,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -133,7 +130,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} }
if (null != orderTicketVo) { if (null != orderTicketVo) {
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId()); KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
currentTime = System.currentTimeMillis() - currentTime;
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = orderTicketVo.getEntitiesVoList(); List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = orderTicketVo.getEntitiesVoList();
KylinTicketVo ticketVo = null; KylinTicketVo ticketVo = null;
...@@ -148,8 +144,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -148,8 +144,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} }
} }
} }
currentTime = System.currentTimeMillis() - currentTime;
orderTicketVo.setIsTrueName(ticketVo.getIsTrueName()); orderTicketVo.setIsTrueName(ticketVo.getIsTrueName());
orderTicketVo.setNoticeImage(performanceVo.getNoticeImage()); orderTicketVo.setNoticeImage(performanceVo.getNoticeImage());
orderTicketVo.setNotice(performanceVo.getNotice()); orderTicketVo.setNotice(performanceVo.getNotice());
...@@ -174,8 +168,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -174,8 +168,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
vo.setIsShowQrCode(0); vo.setIsShowQrCode(0);
vo.setShowQrCodeTime(""); vo.setShowQrCodeTime("");
} }
currentTime = System.currentTimeMillis() - currentTime;
// 数据脱敏 // 数据脱敏
for (KylinOrderTicketEntitiesVo item : kylinOrderTicketEntitiesVoList) { for (KylinOrderTicketEntitiesVo item : kylinOrderTicketEntitiesVoList) {
if (item.getEnterIdCode().length() == 18) { if (item.getEnterIdCode().length() == 18) {
...@@ -185,7 +177,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -185,7 +177,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7)); item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7));
} }
} }
currentTime = System.currentTimeMillis() - currentTime;
//计算 倒计时 //计算 倒计时
Date nowDate = DateUtil.parse(DateUtil.getNowTime(), "yyyy-MM-dd HH:mm:ss"); Date nowDate = DateUtil.parse(DateUtil.getNowTime(), "yyyy-MM-dd HH:mm:ss");
if (orderTicketVo.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) { if (orderTicketVo.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {
...@@ -199,6 +191,19 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -199,6 +191,19 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} else { } else {
vo.setRestTime(0L); vo.setRestTime(0L);
} }
//计算 转赠倒计时
if (orderTicketVo.getTransferTime() != null && (orderTicketVo.getTransferStatus().equals(1) || orderTicketVo.getTransferStatus().equals(4))) {
vo.setRestTransferTime(DateUtil.intervalSeconds(
DateUtil.parse(DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.parse(orderTicketVo.getTransferTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).plusMinutes(120)),
"yyyy-MM-dd HH:mm:ss"),
nowDate
));
if (vo.getRestTransferTime() <= 0L) {
vo.setRestTransferTime(0L);
}
} else {
vo.setRestTransferTime(0L);
}
Integer orderExpressStatus = dataUtils.getOrderExpressInfo(orderTicketVo.getOrderTicketsId()); Integer orderExpressStatus = dataUtils.getOrderExpressInfo(orderTicketVo.getOrderTicketsId());
vo.setExpressStatus(orderExpressStatus); vo.setExpressStatus(orderExpressStatus);
...@@ -223,12 +228,14 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -223,12 +228,14 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
orderRefundListVos.add(data); orderRefundListVos.add(data);
} }
//是否可退
if (null != performanceVo.getIsCanRefund() && performanceVo.getIsCanRefund() == 1) { if (null != performanceVo.getIsCanRefund() && performanceVo.getIsCanRefund() == 1) {
LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime()); LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime());
LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime()); LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime());
if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate) if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate)
&& lockPrice.compareTo(orderTicketVo.getPriceActual()) != 0 && ticketVo.getCounts() == 1 && lockPrice.compareTo(orderTicketVo.getPriceActual()) != 0
&& (orderTicketVo.getStatus().equals(1) || orderTicketVo.getStatus().equals(3) || orderTicketVo.getStatus().equals(6))) { && (orderTicketVo.getStatus().equals(1) || orderTicketVo.getStatus().equals(3) || orderTicketVo.getStatus().equals(6))
&& (orderTicketVo.getTransferStatus().equals(0) || orderTicketVo.getTransferStatus().equals(5))) {
vo.setIsCanRefund(1); vo.setIsCanRefund(1);
} else { } else {
vo.setIsCanRefund(0); vo.setIsCanRefund(0);
...@@ -236,6 +243,33 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -236,6 +243,33 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} else { } else {
vo.setIsCanRefund(0); vo.setIsCanRefund(0);
} }
//是否可转
if (null != performanceVo.getIsTransfer() && performanceVo.getIsTransfer() == 1) {
LocalDateTime transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getTransferStartTime());
LocalDateTime transferEndTime = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getTransferEndTime());
if (LocalDateTime.now().isAfter(transferStartTime) && LocalDateTime.now().isBefore(transferEndTime)
&& orderTicketVo.getExpressAddress().trim().equals("")
&& orderTicketVo.getStatus().equals(1) && orderTicketVo.getTransferStatus().equals(0)) {
vo.setIsCanTransfer(1);
} else {
vo.setIsCanTransfer(0);
}
} else {
vo.setIsCanTransfer(0);
}
//是否可回退
if (null != performanceVo.getIsCanRefund() && performanceVo.getIsCanRefund() == 1) {
LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime());
LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime());
if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate)
&& orderTicketVo.getTransferStatus().equals(3)) {
vo.setIsCanBack(1);
} else {
vo.setIsCanBack(0);
}
} else {
vo.setIsCanBack(0);
}
orderTicketVo.setOrderRefundListVos(orderRefundListVos); orderTicketVo.setOrderRefundListVos(orderRefundListVos);
if (orderTicketVo.getOrderCode().length() > 20) { if (orderTicketVo.getOrderCode().length() > 20) {
...@@ -389,7 +423,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -389,7 +423,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
if (null != performanceVo.getIsCanRefund() && performanceVo.getIsCanRefund() == 1) { if (null != performanceVo.getIsCanRefund() && performanceVo.getIsCanRefund() == 1) {
LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime()); LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime());
LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime()); LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime());
if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate) && orderTicketVo.getExpressAddress().trim().equals("") && ticketVo.getCounts() == 1) { if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate)
&& ticketVo.getCounts() == 1) {
} else { } else {
return "暂不支持退款"; return "暂不支持退款";
...@@ -596,4 +631,532 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -596,4 +631,532 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} }
} }
@Override
public ResponseDto<String> orderTransfer(String orderId, String transferUid, String transferMobile) {
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
LocalDateTime now = LocalDateTime.now();
if (null != orderTicketVo) {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.success("无权查看");
}
if (!orderTicketVo.getTransferStatus().equals(0)) {
return ResponseDto.failure("已转票一次,无法再次转票");
}
Boolean isCanTransfer;
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
//判断是否可转增
if (null != performanceVo.getIsTransfer() && performanceVo.getIsTransfer() == 1) {
LocalDateTime transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getTransferStartTime());
LocalDateTime transferEndTime = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getTransferEndTime());
if (LocalDateTime.now().isAfter(transferStartTime) && LocalDateTime.now().isBefore(transferEndTime)
&& orderTicketVo.getStatus().equals(1) && orderTicketVo.getTransferStatus().equals(0)) {
isCanTransfer = true;
} else {
isCanTransfer = false;
}
} else {
isCanTransfer = false;
}
if (!isCanTransfer) {
return ResponseDto.failure("该订单不支持转赠");
}
//判断对方是否有转赠订单
if (dataUtils.hasTransferOrder(transferUid)) {
return ResponseDto.failure("该用户有待接收的转赠订单,暂不能转赠");
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
//持久化数据
sqls.add(SqlMapping.get("kylin_order_task.insert"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
orderTicketVo.getOrderTicketsId(), 10, now
});
String transferTime = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
//修改被转赠订单 redis
orderTicketVo.setTransferStatus(1);
orderTicketVo.setTransferTime(transferTime);
orderTicketVo.setTransferUid(transferUid);
dataUtils.setOrderTicketVo(orderTicketVo.getOrderTicketsId(), orderTicketVo);
orderUtils.resetOrderListVo(uid, 2, orderTicketVo.getOrderTicketsId(), orderTicketVo);
//修改被转赠订单 mongo
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTicketVo.getOrderTicketsId())).getQueryObject(),
new Document("$set", new Document("transferStatus", orderTicketVo.getTransferStatus())
.append("transferUid", transferUid).append("transferTime", transferTime).append("updatedAt", DateUtil.Formatter.yyyyMMddHHmmss.format(now)))
);
//修改被转赠订单 mysql
sqls.add(SqlMapping.get("kylin_order_ticket_status.transfer.update"));
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqlsDataB.add(new Object[]{
1, now, orderTicketVo.getOrderTicketsId(), now, now
});
sqls.add(SqlMapping.get("kylin_order_ticket_relation.transfer.update"));
LinkedList<Object[]> sqlsDataC = CollectionUtil.linkedListObjectArr();
sqlsDataC.add(new Object[]{
transferUid, orderTicketVo.getOrderTicketsId(), now, orderTicketVo.getOrderTicketsId(), now, now
});
//生成被转赠订单独立redis
orderTicketVo.setOrderTicketsId(IDGenerator.nextSnowId());
orderTicketVo.setQrCode(IDGenerator.ticketQrCode(orderTicketVo.getOrderTicketsId()));
orderTicketVo.setTransferId(orderId);
orderTicketVo.setTransferStatus(4);
orderTicketVo.setUserId(transferUid);
orderTicketVo.setUserMobile(transferMobile);
dataUtils.setTransferOrder(transferUid, orderTicketVo);
//入库
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_TRANSFER.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
} else {
return ResponseDto.failure("转票失败");
}
return ResponseDto.success("转票成功");
}
@Override
public ResponseDto<String> orderTransferWithdraw(String orderId) {
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
LocalDateTime now = LocalDateTime.now();
if (null != orderTicketVo) {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.success("无权查看");
}
if (!orderTicketVo.getTransferStatus().equals(1)) {
return ResponseDto.failure("无法撤回");
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
//删除持久化数据
sqls.add(SqlMapping.get("kylin_order_task.delete"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
orderTicketVo.getOrderTicketsId()
});
//修改被转赠订单 redis
orderTicketVo.setTransferStatus(0);
dataUtils.setOrderTicketVo(orderTicketVo.getOrderTicketsId(), orderTicketVo);
orderUtils.resetOrderListVo(uid, 2, orderTicketVo.getOrderTicketsId(), orderTicketVo);
//修改被转赠订单 mongo
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTicketVo.getOrderTicketsId())).getQueryObject(),
new Document("$set", new Document("transferStatus", orderTicketVo.getTransferStatus()).append("updatedAt", DateUtil.Formatter.yyyyMMddHHmmss.format(now)))
);
//修改被转赠订单 mysql
sqls.add(SqlMapping.get("kylin_order_ticket_status.transfer.update"));
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqlsDataB.add(new Object[]{
0, now, orderTicketVo.getOrderTicketsId(), now, now
});
sqls.add(SqlMapping.get("kylin_order_ticket_relation.transfer.update"));
LinkedList<Object[]> sqlsDataC = CollectionUtil.linkedListObjectArr();
sqlsDataC.add(new Object[]{
"", "", now, orderTicketVo.getOrderTicketsId(), now, now
});
//删除被转赠订单独立redis
dataUtils.delTransferOrder(orderTicketVo.getTransferUid());
//入库
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_TRANSFER.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
} else {
return ResponseDto.failure("撤回失败");
}
return ResponseDto.success("撤回成功");
}
@Override
public ResponseDto<String> orderTransferAccept(String enterIdList) {
String uid = CurrentUtil.getCurrentUid();
Integer enterSize;
if (enterIdList == null || enterIdList.equals("")) {
enterSize = 0;
enterIdList = "";
} else {
enterSize = enterIdList.split(",").length;
}
KylinOrderTicketVo orderTicketVo = dataUtils.getTransferOrder(uid);
if (orderTicketVo == null) {
return ResponseDto.failure("无订单");
}
if (!orderTicketVo.getTransferStatus().equals(4)) {
return ResponseDto.failure("无法接收");
}
LocalDateTime now = LocalDateTime.now();
if (orderTicketVo != null) {
KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
KylinTicketTimesVo ticketTimesData = null;
KylinTicketVo ticketData = null;
for (int x = 0; x < performanceData.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = performanceData.getTicketTimeList().get(x);
if (timeItem.getTimeId().equals(orderTicketVo.getTimeId())) {
ticketTimesData = timeItem;
for (int y = 0; y < ticketTimesData.getTicketList().size(); y++) {
KylinTicketVo ticketItem = ticketTimesData.getTicketList().get(y);
if (ticketItem.getTicketsId().equals(orderTicketVo.getTicketId())) {
ticketData = ticketItem;
break;
}
}
break;
}
}
// 获取限购 实名
int ticketLimit = ticketData.getLimitCount();//普通票种限购
int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购
int performanceLimit = performanceData.getLimitCount();//普通演出限购
int performanceMemberLimit = performanceData.getLimitCountMember();//会员演出限购
int isTrueName = ticketData.getIsTrueName();//是否演出实名
//实名判断
if (isTrueName == 1 && enterSize <= 0) {
return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名
}
if (isTrueName == 1 && enterSize != orderTicketVo.getNumber()) {
return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误
}
//学生票 判断
List<AdamEntersVo> entersVoList = ObjectUtil.cloneArrayListObject();
if (isTrueName == 1) {
List<AdamEntersVo> adamEnters = orderUtils.getEnters(enterIdList, uid);
if (adamEnters == null) {
return ResponseDto.failure("入场人数据异常");//乱七八糟异常
}
for (AdamEntersVo item : adamEnters) {
entersVoList.add(item);
if (ticketData.getIsStudent() == 1) {
if(!item.getType().equals(1)){
return ResponseDto.failure("学生票优惠核验失败,无法转票");
}
int age = IDCard.getAgeByIdCard(item.getIdCard());
if (age > 25) {
return ResponseDto.failure(ErrorMapping.get("20017"));//学生票年龄问题
}
}
}
}
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if (entersVoList.size() > 0) {
for (int i = 0; i < entersVoList.size(); i++) {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), performanceData.getPerformancesId(), ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, 0, isTrueName);
if (!res1.equals("")) {
return ResponseDto.failure(res1);//乱七八糟异常
}
}
} else {
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", performanceData.getPerformancesId(), ticketData.getTicketsId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, orderTicketVo.getNumber(), orderTicketVo.getNumber(), 0, isTrueName);
if (!res1.equals("")) {
return ResponseDto.failure(res1);//乱七八糟异常
}
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
//删除持久化数据
sqls.add(SqlMapping.get("kylin_order_task.delete"));
LinkedList<Object[]> sqlsDataE = CollectionUtil.linkedListObjectArr();
sqlsDataE.add(new Object[]{
orderTicketVo.getTransferId()
});
String source = orderTicketVo.getOrderType();
String version = orderTicketVo.getOrderVersion();
//生成订单 order_ticket
KylinOrderTickets orderTickets = KylinOrderTickets.getNew();
String orderTicketId = orderTicketVo.getOrderTicketsId();
orderTickets.setOrderTicketsId(orderTicketId);
orderTickets.setUserId(uid);
Map token = CurrentUtil.getTokenClaims();
orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
orderTickets.setPerformanceTitle(orderTicketVo.getPerformanceTitle());
orderTickets.setOrderCode(IDGenerator.ticketOrderCode(orderTicketId));
orderTickets.setPayCode(orderTicketVo.getPayCode());
orderTickets.setQrCode(orderTicketVo.getQrCode());
orderTickets.setOrderType(source);
orderTickets.setOrderVersion(version);
orderTickets.setNumber(orderTicketVo.getNumber());
orderTickets.setPrice(orderTicketVo.getPrice());
orderTickets.setPriceMember(orderTicketVo.getPriceMember());
orderTickets.setPriceTotal(orderTicketVo.getPriceTotal());
orderTickets.setPriceActual(orderTickets.getPriceActual() == null ? BigDecimal.ZERO : orderTickets.getPriceActual());
orderTickets.setPriceVoucher(orderTicketVo.getPriceVoucher());
orderTickets.setPriceExpress(orderTicketVo.getPriceExpress());
orderTickets.setPriceRefund(orderTicketVo.getPriceRefund());
orderTickets.setRefundNumber(orderTicketVo.getRefundNumber());
orderTickets.setPayType(orderTicketVo.getPayType());
orderTickets.setPaymentType(orderTicketVo.getPaymentType());
orderTickets.setTimePay(orderTicketVo.getTimePay());
orderTickets.setPaymentId("TRANSFER");
orderTickets.setExpressContacts(orderTicketVo.getExpressContacts());
orderTickets.setExpressAddress(orderTicketVo.getExpressAddress());
orderTickets.setExpressPhone(orderTicketVo.getExpressPhone());
orderTickets.setCity("");// orderTickets.setCity(addressesVo.getCity());
orderTickets.setProvince("");// orderTickets.setProvince(addressesVo.getProvince());
orderTickets.setCounty("");// orderTickets.setCounty(addressesVo.getCounty());
orderTickets.setGetTicketType(orderTicketVo.getGetTicketType());
orderTickets.setCouponType(orderTicketVo.getCouponType());
orderTickets.setGetTicketDescribe(orderTicketVo.getGetTicketDescribe());
orderTickets.setPayCountdownMinute(orderTicketVo.getPayCountdownMinute());
orderTickets.setCreatedAt(now);
orderTickets.setUpdatedAt(null);
//生成订单 order_ticket_status
KylinOrderTicketStatus orderTicketStatus = KylinOrderTicketStatus.getNew();
String orderTicketStatusId = IDGenerator.nextSnowId();
orderTicketStatus.setOrderTicketStatusId(orderTicketStatusId);
orderTicketStatus.setOrderId(orderTicketId);
orderTicketStatus.setExpressType(orderTicketVo.getExpressType());
orderTicketStatus.setTransferStatus(3);
orderTicketStatus.setStatus(orderTicketVo.getStatus());
orderTicketStatus.setIsStudent(orderTicketVo.getIsStudent());
orderTicketStatus.setPayStatus(orderTicketVo.getPayStatus());
orderTicketStatus.setCreatedAt(now);
orderTicketStatus.setUpdatedAt(null);
sqls.add(SqlMapping.get("kylin_order_ticket_status.add"));
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqlsDataB.add(orderTicketStatus.getAddObject());
//生成订单 order_ticket_relation
KylinOrderTicketRelations orderTicketRelations = KylinOrderTicketRelations.getNew();
String orderTicketRelationId = IDGenerator.nextSnowId();
orderTicketRelations.setOrderTicketRelationsId(orderTicketRelationId);
orderTicketRelations.setOrderId(orderTicketId);
orderTicketRelations.setTransferId(orderTicketVo.getTransferId());
orderTicketRelations.setLiveId(orderTicketVo.getLiveId());
orderTicketRelations.setAgentId(orderTicketVo.getAgentId());
orderTicketRelations.setIsMember(orderTicketVo.getIsMember());
orderTicketRelations.setPerformanceId(performanceData.getPerformancesId());
orderTicketRelations.setTimeId(ticketTimesData.getTimeId());
orderTicketRelations.setTicketId(ticketData.getTicketsId());
orderTicketRelations.setCreatedAt(now);
orderTicketRelations.setUpdatedAt(null);
sqls.add(SqlMapping.get("kylin_order_ticket_relation.add"));
LinkedList<Object[]> sqlsDataC = CollectionUtil.linkedListObjectArr();
sqlsDataC.add(orderTicketRelations.getAddObject());
//生成票
KylinOrderTicketEntities orderTicketEntities = KylinOrderTicketEntities.getNew();
LinkedList<Object[]> sqlsDataD = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("kylin_order_ticket_entities.add"));
for (int i = 0; i < orderTicketVo.getEntitiesVoList().size(); i++) {
KylinOrderTicketEntitiesVo entitiesVo = orderTicketVo.getEntitiesVoList().get(i);
String orderTicketEntitiesId = entitiesVo.getOrderTicketEntitiesId();
orderTicketEntities.setOrderTicketEntitiesId(IDGenerator.nextSnowId());
orderTicketEntities.setOrderId(orderTicketId);
orderTicketEntities.setTicketId(ticketData.getTicketsId());
orderTicketEntities.setUserId(uid);
orderTicketEntities.setPerformanceId(performanceData.getPerformancesId());
orderTicketEntities.setTimeId(ticketTimesData.getTicketTimesId());
orderTicketEntities.setEnterType(entitiesVo.getEnterType());
if (entersVoList.size() > 0) {
orderTicketEntities.setEnterName(entersVoList.get(i).getName());
orderTicketEntities.setEnterMobile(entersVoList.get(i).getMobile());
orderTicketEntities.setEnterIdCode(entersVoList.get(i).getIdCard());
} else {
orderTicketEntities.setEnterName(entitiesVo.getEnterName());
orderTicketEntities.setEnterMobile(entitiesVo.getEnterMobile());
orderTicketEntities.setEnterIdCode(entitiesVo.getEnterIdCode());
}
orderTicketEntities.setStatus(entitiesVo.getStatus());
orderTicketEntities.setSysDamai(entitiesVo.getSysDamai());
orderTicketEntities.setCheckClient(entitiesVo.getCheckClient());
orderTicketEntities.setIsPayment(entitiesVo.getIsPayment());
orderTicketEntities.setRefundPrice(entitiesVo.getRefundPrice());
orderTicketEntities.setComment("");
orderTicketEntities.setCreatedAt(now);
orderTicketEntities.setUpdatedAt(null);
sqlsDataD.add(orderTicketEntities.getAddObject());
// 生成vo
KylinOrderTicketEntitiesVo orderTicketEntitiesVo = KylinOrderTicketEntitiesVo.getNew();
BeanUtils.copyProperties(orderTicketEntities, orderTicketEntitiesVo);
orderTicketEntitiesVo.setPerformanceTitle(performanceData.getTitle());
orderTicketEntitiesVo.setTicketTitle(ticketData.getTitle());
orderTicketEntitiesVo.setUseStart(ticketData.getUseStart());
orderTicketEntitiesVo.setUseEnd(ticketData.getUseEnd());
orderTicketEntitiesVo.setCreatedAt(orderTicketEntities.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
orderTicketEntitiesVo.setUpdatedAt(null);
orderTicketEntitiesVo.setChangeDate(orderTicketEntities.getCreatedAt());
mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName());
dataUtils.changeBuyInfo(orderTicketEntitiesVo.getUserId(), orderTicketEntitiesVo.getEnterIdCode(), orderTicketEntitiesVo.getPerformanceId(), orderTicketEntitiesVo.getTicketId(), 1);
}
orderTickets.setPayType(orderTicketVo.getPayType());
orderTickets.setPayCode(orderTicketVo.getPayCode());
sqls.add(SqlMapping.get("kylin_order_ticket.add"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(orderTickets.getAddObject());
//删除被转赠订单独立redis
dataUtils.delTransferOrder(uid);
// 生成vo
orderTicketVo.setTransferStatus(3);
orderTicketVo.setOrderCode(orderTickets.getOrderCode());
orderTicketVo.setCreatedAt(orderTickets.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
orderTicketVo.setChangeDate(orderTickets.getCreatedAt());
orderUtils.resetOrderListVo(uid, 1, orderTicketVo.getOrderTicketsId(), orderTicketVo);
mongoTemplate.insert(orderTicketVo, KylinOrderTicketVo.class.getSimpleName());
//原来vo
KylinOrderTicketVo orderTicketVoTransfer = dataUtils.getOrderTicketVo(orderTicketVo.getTransferId());
orderTicketVoTransfer.setTransferStatus(2);
orderTicketVoTransfer.setChangeDate(now);
orderTicketVoTransfer.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(now));
dataUtils.setOrderTicketVo(orderTicketVoTransfer.getOrderTicketsId(), orderTicketVoTransfer);
orderUtils.resetOrderListVo(orderTicketVoTransfer.getUserId(), 2, orderTicketVoTransfer.getOrderTicketsId(), orderTicketVoTransfer);
//原订单mongo
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTicketVoTransfer.getOrderTicketsId())).getQueryObject(),
new Document("$set", new Document("transferStatus", orderTicketVoTransfer.getTransferStatus()).append("updatedAt", DateUtil.Formatter.yyyyMMddHHmmss.format(now)))
);
//sql
sqls.add(SqlMapping.get("kylin_order_ticket_status.transfer.update"));
LinkedList<Object[]> sqlsDataA2 = CollectionUtil.linkedListObjectArr();
sqlsDataA2.add(new Object[]{
orderTicketVoTransfer.getTransferStatus(), now, orderTicketVoTransfer.getOrderTicketsId(), now, now
});
// 执行sql
String sqlData = SqlMapping.gets(sqls, sqlsDataE, sqlsDataB, sqlsDataC, sqlsDataD, sqlsDataA, sqlsDataA2);
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_TRANSFER_RESULT.getKey(),
sqlData);
log.info(UserPathDto.setData("接收转赠订单", enterIdList, "SUCCESS"));
} else {
return ResponseDto.failure("接收失败");
}
return ResponseDto.success("接收成功");
}
@Override
public ResponseDto<String> orderTransferReject() {
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getTransferOrder(uid);
LocalDateTime now = LocalDateTime.now();
if (null != orderTicketVo) {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.success("无权查看");
}
if (!orderTicketVo.getTransferStatus().equals(4)) {
return ResponseDto.failure("无法拒收");
}
KylinOrderTicketVo orderTicketVoTransfer = dataUtils.getOrderTicketVo(orderTicketVo.getTransferId());
LinkedList<String> sqls = CollectionUtil.linkedListString();
//删除持久化数据
sqls.add(SqlMapping.get("kylin_order_task.delete"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
orderTicketVo.getTransferId()
});
//修改被转赠订单 redis
orderTicketVoTransfer.setTransferStatus(0);
dataUtils.setOrderTicketVo(orderTicketVoTransfer.getOrderTicketsId(), orderTicketVoTransfer);
orderUtils.resetOrderListVo(orderTicketVoTransfer.getUserId(), 2, orderTicketVoTransfer.getOrderTicketsId(), orderTicketVoTransfer);
//修改被转赠订单 mongo
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTicketVoTransfer.getOrderTicketsId())).getQueryObject(),
new Document("$set", new Document("transferStatus", orderTicketVoTransfer.getTransferStatus()).append("updatedAt", DateUtil.Formatter.yyyyMMddHHmmss.format(now)))
);
//修改被转赠订单 mysql
sqls.add(SqlMapping.get("kylin_order_ticket_status.transfer.update"));
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqlsDataB.add(new Object[]{
0, now, orderTicketVoTransfer.getOrderTicketsId(), now, now
});
sqls.add(SqlMapping.get("kylin_order_ticket_relation.transfer.update"));
LinkedList<Object[]> sqlsDataC = CollectionUtil.linkedListObjectArr();
sqlsDataC.add(new Object[]{
"", "", now, orderTicketVoTransfer.getOrderTicketsId(), now, now
});
//删除被转赠订单独立redis
dataUtils.delTransferOrder(orderTicketVo.getUserId());
//入库
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_TRANSFER_RESULT.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
} else {
return ResponseDto.failure("拒收失败");
}
return ResponseDto.success("拒收成功");
}
@Override
public ResponseDto<String> orderTransferBack(String orderId) {
KylinOrderTicketVo vo = dataUtils.getOrderTicketVo(orderId);
KylinOrderTicketVo vo2 = dataUtils.getOrderTicketVo(vo.getTransferId());
LocalDateTime now = LocalDateTime.now();
LinkedList<String> sqls = CollectionUtil.linkedListString();
//必须开启退款
String performanceId = vo.getPerformanceId();
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(performanceId);
LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime());
LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime());
if (!(performanceVo.getIsCanRefund().equals(1) && LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate))) {
return ResponseDto.failure("未开启退款,不支持回退");
}
if (!vo.getTransferStatus().equals(3)) {
return ResponseDto.failure("无法退回");
}
//修改 自己的订单 vo
//redis
vo.setTransferStatus(6);
dataUtils.setOrderTicketVo(orderId, vo);
orderUtils.resetOrderListVo(vo.getUserId(), 2, orderId, vo);
//mongo
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderId)).getQueryObject(),
new Document("$set", new Document("transferStatus", vo.getTransferStatus()).append("updatedAt", DateUtil.Formatter.yyyyMMddHHmmss.format(now)))
);
//mysql
sqls.add(SqlMapping.get("kylin_order_ticket_status.transfer.update"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
vo.getTransferStatus(), now, orderId, now, now
});
sqls.add(SqlMapping.get("kylin_order_ticket_relation.transfer.update"));
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqlsDataB.add(new Object[]{
vo.getTransferUid(), vo.getTransferId(), now, orderId, now, now
});
//修改 回退订单 vo2
//redis
vo2.setTransferStatus(5);
dataUtils.setOrderTicketVo(vo2.getOrderTicketsId(), vo2);
orderUtils.resetOrderListVo(vo2.getUserId(), 2, vo2.getOrderTicketsId(), vo2);
//mongo
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(vo2.getOrderTicketsId())).getQueryObject(),
new Document("$set", new Document("transferStatus", vo2.getTransferStatus()).append("updatedAt", DateUtil.Formatter.yyyyMMddHHmmss.format(now)))
);
//mysql
sqls.add(SqlMapping.get("kylin_order_ticket_status.transfer.update"));
LinkedList<Object[]> sqlsDataA2 = CollectionUtil.linkedListObjectArr();
sqlsDataA2.add(new Object[]{
vo2.getTransferStatus(), now, vo2.getOrderTicketsId(), now, now
});
sqls.add(SqlMapping.get("kylin_order_ticket_relation.transfer.update"));
LinkedList<Object[]> sqlsDataB2 = CollectionUtil.linkedListObjectArr();
sqlsDataB2.add(new Object[]{
vo2.getTransferUid(), vo2.getTransferId(), now, vo2.getOrderTicketsId(), now, now
});
//入库
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_TRANSFER_RESULT.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataA2, sqlsDataB2));
return ResponseDto.success("回退成功");
}
} }
...@@ -35,6 +35,53 @@ public class DataUtils { ...@@ -35,6 +35,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);
}
/** /**
* 获取普通剩余库存 * 获取普通剩余库存
* *
...@@ -75,13 +122,15 @@ public class DataUtils { ...@@ -75,13 +122,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;
} }
...@@ -99,6 +148,9 @@ public class DataUtils { ...@@ -99,6 +148,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);
...@@ -106,6 +158,11 @@ public class DataUtils { ...@@ -106,6 +158,11 @@ public class DataUtils {
} }
} }
public void setOrderTicketVo(String orderId, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER + orderId;
redisUtil.set(redisKey, vo);
}
/** /**
* 删除订单redis * 删除订单redis
* *
...@@ -538,6 +595,81 @@ public class DataUtils { ...@@ -538,6 +595,81 @@ 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;
}
}
// 获取订单券的使用情况 // 获取订单券的使用情况
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId){ public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId){
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId); String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
......
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(adamUrl + "/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)
...@@ -76,6 +76,9 @@ public class DataUtils { ...@@ -76,6 +76,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.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
...@@ -9,9 +10,8 @@ import com.liquidnet.service.base.constant.MQConst; ...@@ -9,9 +10,8 @@ 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;
...@@ -21,6 +21,7 @@ import com.liquidnet.service.platform.utils.DataUtils; ...@@ -21,6 +21,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;
...@@ -59,6 +60,8 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K ...@@ -59,6 +60,8 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
@Autowired @Autowired
private KylinOrderTicketRelationsMapper orderTicketRelationsMapper; private KylinOrderTicketRelationsMapper orderTicketRelationsMapper;
@Autowired @Autowired
private KylinOrderTaskMapper orderTaskMapper;
@Autowired
private PlatformCandyUserCouponService platformCandyUserCouponService; private PlatformCandyUserCouponService platformCandyUserCouponService;
public boolean checkOrderTime(String userId) { public boolean checkOrderTime(String userId) {
...@@ -152,4 +155,57 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K ...@@ -152,4 +155,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));
} }
} }
...@@ -445,6 +448,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -445,6 +448,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));
} }
} }
...@@ -528,7 +532,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -528,7 +532,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));
} }
} }
...@@ -553,7 +557,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -553,7 +557,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));
} }
} }
...@@ -590,6 +594,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -590,6 +594,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;
} }
} }
...@@ -681,6 +686,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -681,6 +686,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;
} }
......
...@@ -221,6 +221,7 @@ public class PerformanceVoTask { ...@@ -221,6 +221,7 @@ public class PerformanceVoTask {
floatList.sort(Comparator.naturalOrder()); floatList.sort(Comparator.naturalOrder());
StringList.sort(Comparator.naturalOrder()); StringList.sort(Comparator.naturalOrder());
kylinPerformanceMisVo.setDetails(performanceData.getDetails());
kylinPerformanceMisVo.setPrice(floatList.get(0) + "起"); kylinPerformanceMisVo.setPrice(floatList.get(0) + "起");
kylinPerformanceMisVo.setStopSellTime(StringList.get(0)); kylinPerformanceMisVo.setStopSellTime(StringList.get(0));
kylinPerformanceMisVo.setTicketTimes(ticketTimesTicketCreatePartnerVoList); kylinPerformanceMisVo.setTicketTimes(ticketTimesTicketCreatePartnerVoList);
...@@ -385,41 +386,41 @@ public class PerformanceVoTask { ...@@ -385,41 +386,41 @@ public class PerformanceVoTask {
KylinPerformanceMisVo misVo = getPerformanceMisVo(performanceId); KylinPerformanceMisVo misVo = getPerformanceMisVo(performanceId);
KylinPerformanceVo mongoVo = mongoVoUtils.combinePerformanceVoData(performanceId); KylinPerformanceVo mongoVo = mongoVoUtils.combinePerformanceVoData(performanceId);
if (!misVo.getTitle().equals(mongoVo.getTitle())) { if (!misVo.getTitle().equals(mongoVo.getTitle())) {
log.debug("NEED CHANGE TITLE"); log.info("performanceId = "+performanceId+" NEED CHANGE TITLE");
return true; return true;
} if (!misVo.getImgPoster().equals(mongoVo.getImgPoster())) { } if (!misVo.getImgPoster().equals(mongoVo.getImgPoster())) {
log.debug("NEED CHANGE IMGPOSTER"); log.info("performanceId = "+performanceId+" NEED CHANGE IMGPOSTER");
return true; return true;
} else if (!misVo.getType().equals(mongoVo.getType())) { } else if (!misVo.getType().equals(mongoVo.getType())) {
log.debug("NEED CHANGE TYPE"); log.info("performanceId = "+performanceId+" NEED CHANGE TYPE");
return true; return true;
} else if (!misVo.getTimeStart().equals(mongoVo.getTimeStart())) { } else if (!misVo.getTimeStart().equals(mongoVo.getTimeStart())) {
log.debug("NEED CHANGE TIMESTART"); log.info("performanceId = "+performanceId+" NEED CHANGE TIMESTART");
return true; return true;
} else if (!misVo.getTimeEnd().equals(mongoVo.getTimeEnd())) { } else if (!misVo.getTimeEnd().equals(mongoVo.getTimeEnd())) {
log.debug("NEED CHANGE TIMEEND"); log.info("performanceId = "+performanceId+" NEED CHANGE TIMEEND");
return true; return true;
} else if (!misVo.getFieldId().equals(mongoVo.getFieldId())) { } else if (!misVo.getFieldId().equals(mongoVo.getFieldId())) {
log.debug("NEED CHANGE FIELDID"); log.info("performanceId = "+performanceId+" NEED CHANGE FIELDID");
return true; return true;
} else if (!misVo.getNotice().equals(mongoVo.getNotice())) { } else if (!misVo.getNotice().equals(mongoVo.getNotice())) {
log.debug("NEED CHANGE NOTICE"); log.info("performanceId = "+performanceId+" NEED CHANGE NOTICE");
return true; return true;
} else if (!misVo.getDetails().equals(mongoVo.getDetails())) { } else if (!misVo.getDetails().replace("'","").equals(mongoVo.getDetails().replace("'",""))) {
log.debug("NEED CHANGE DETAILS"); log.info("performanceId = "+performanceId+" NEED CHANGE DETAILS");
return true; return true;
} else if (!misVo.getApprovalUrl().equals(mongoVo.getApprovalUrl())) { } else if (!misVo.getApprovalUrl().equals(mongoVo.getApprovalUrl())) {
log.debug("NEED CHANGE APPROVALURL"); log.info("performanceId = "+performanceId+" NEED CHANGE APPROVALURL");
return true; return true;
} else if (!misVo.getPayCountdownMinute().equals(mongoVo.getPayCountdownMinute())) { } else if (!misVo.getPayCountdownMinute().equals(mongoVo.getPayCountdownMinute())) {
log.debug("NEED CHANGE PAYCOUTDOWN"); log.info("performanceId = "+performanceId+" NEED CHANGE PAYCOUTDOWN");
return true; return true;
} }
boolean exists = mongoTemplate.exists(Query.query(Criteria.where("status").is(-1).and("performancesId").is(performanceId)), boolean exists = mongoTemplate.exists(Query.query(Criteria.where("status").is(-1).and("performancesId").is(performanceId)),
KylinTicketTimesPartnerVo.class, KylinTicketTimesPartnerVo.class.getSimpleName()); KylinTicketTimesPartnerVo.class, KylinTicketTimesPartnerVo.class.getSimpleName());
if (exists) { if (exists) {
log.debug("NEED CHANGE NEW TIMES"); log.info("performanceId = "+performanceId+" NEED CHANGE NEW TIMES");
return true; return true;
} }
...@@ -428,27 +429,25 @@ public class PerformanceVoTask { ...@@ -428,27 +429,25 @@ public class PerformanceVoTask {
KylinTicketTimesVo timesVo = mongoVo.getTicketTimeList().get(i); KylinTicketTimesVo timesVo = mongoVo.getTicketTimeList().get(i);
if(!times.getUseStart().equals(timesVo.getUseStart())){ if(!times.getUseStart().equals(timesVo.getUseStart())){
log.debug("NEED CHANGE TIMES USE_START"); log.info("performanceId = "+performanceId+" NEED CHANGE TIMES USE_START");
return true; return true;
} }
if(!times.getUseEnd().equals(timesVo.getUseEnd())){ if(!times.getUseEnd().equals(timesVo.getUseEnd())){
log.debug("NEED CHANGE TIMES USE_END"); log.info("performanceId = "+performanceId+" NEED CHANGE TIMES USE_END");
return true; return true;
} }
boolean exists2 = mongoTemplate.exists(Query.query(Criteria.where("status").is(-2).and("timesId").is(times.getTicketTimesId())), KylinTicketPartnerVo.class, KylinTicketPartnerVo.class.getSimpleName()); boolean exists2 = mongoTemplate.exists(Query.query(Criteria.where("status").is(-2).and("timesId").is(times.getTicketTimesId())), KylinTicketPartnerVo.class, KylinTicketPartnerVo.class.getSimpleName());
if (exists2) { if (exists2) {
log.debug("NEED CHANGE NEW TICKET"); log.info("performanceId = "+performanceId+" NEED CHANGE NEW TICKET");
return true; return true;
} }
for (KylinTicketPartnerVo ticketPartnerVo : times.getTicket()) { for (KylinTicketPartnerVo ticketPartnerVo : times.getTicket()) {
for (KylinTicketVo ticketVo : timesVo.getTicketList()) { for (KylinTicketVo ticketVo : timesVo.getTicketList()) {
if (ticketVo.getTicketsId().equals(ticketPartnerVo.getTicketsId())) { if (ticketVo.getTicketsId().equals(ticketPartnerVo.getTicketsId())) {
if (!ticketVo.getTitle().equals(ticketPartnerVo.getTitle())) { if (!ticketVo.getTitle().equals(ticketPartnerVo.getTitle())) {
log.debug("NEED CHANGE TICKET TITLE"); log.info("performanceId = "+performanceId+" ticketId = "+ticketVo.getTicketsId()+" NEED CHANGE TICKET TITLE");
log.debug("ticketVo.getTitle() = " + ticketVo.getTitle());
log.debug("ticketPartnerVo.getTitle() = " + ticketPartnerVo.getTitle());
return true; return true;
} }
// else if (!ticketVo.getQrCodeShowTime().equals(ticketPartnerVo.getQrCodeShowTime())) { // else if (!ticketVo.getQrCodeShowTime().equals(ticketPartnerVo.getQrCodeShowTime())) {
...@@ -456,20 +455,14 @@ public class PerformanceVoTask { ...@@ -456,20 +455,14 @@ public class PerformanceVoTask {
// return true; // return true;
// } // }
else if (!ticketVo.getDescribeElectronic().equals(ticketPartnerVo.getDescribeElectronic())) { else if (!ticketVo.getDescribeElectronic().equals(ticketPartnerVo.getDescribeElectronic())) {
log.debug("NEED CHANGE TICKET DESCRIBEELECTRONIC"); log.info("performanceId = "+performanceId+" ticketId = "+ticketVo.getTicketsId()+" NEED CHANGE TICKET DESCRIBEELECTRONIC");
log.debug("ticketVo.getDescribeElectronic() =" + ticketVo.getDescribeElectronic());
log.debug("ticketPartnerVo.getDescribeElectronic() =" + ticketPartnerVo.getDescribeElectronic());
return true; return true;
} else if (!ticketVo.getDescribeExpress().equals(ticketPartnerVo.getDescribeExpress())) { } else if (!ticketVo.getDescribeExpress().equals(ticketPartnerVo.getDescribeExpress())) {
log.debug("NEED CHANGE TICKET DESCRIBEELEXPRESS"); log.info("performanceId = "+performanceId+" ticketId = "+ticketVo.getTicketsId()+" NEED CHANGE TICKET DESCRIBEELEXPRESS");
log.debug("ticketVo.getDescribeExpress() =" + ticketVo.getDescribeExpress());
log.debug("ticketPartnerVo.getDescribeExpress() =" + ticketPartnerVo.getDescribeExpress());
return true; return true;
} }
if (!ticketVo.getDescribes().equals(ticketPartnerVo.getDescribes())) { if (!ticketVo.getDescribes().equals(ticketPartnerVo.getDescribes())) {
log.debug("NEED CHANGE TICKET DESCRIBES"); log.info("performanceId = "+performanceId+" NEED CHANGE TICKET DESCRIBES");
log.debug("ticketVo.getDescribes() =" + ticketVo.getDescribes());
log.debug("ticketPartnerVo.getDescribes() =" + ticketPartnerVo.getDescribes());
return true; return true;
} }
break; break;
......
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