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

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

Merge branch 'dev_transfer' into pre

# Conflicts:
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
parents be8681e5 9b2d2f09
-- 退款转赠添加 --
ALTER TABLE kylin_performance_status ADD is_transfer tinyint DEFAULT 0 COMMENT '是否支持转赠';
ALTER TABLE kylin_performance_status ADD transfer_start_time datetime NULL DEFAULT NULL COMMENT '转赠开启时间';
ALTER TABLE kylin_performance_status ADD transfer_end_time datetime NULL DEFAULT NULL COMMENT '转赠结束时间';
ALTER TABLE kylin_order_ticket_relations ADD transfer_uid varchar(255) DEFAULT "" COMMENT '转赠用户id';
drop table if exists kylin_order_task;
create table kylin_order_task
(
mid bigint unsigned auto_increment primary key,
order_id varchar(64) default '',
status int(3) comment '状态 [10-转赠订单可失效]',
created_at datetime ,
updated_at datetime ,
comment text
) engine = InnoDB comment '订单定时任务表';
\ No newline at end of file
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel(value = "AdamUserInfoVo", description = "用户详情")
@Data
public class AdamUserInfoSimpleVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 8479869354894030303L;
@ApiModelProperty(position = 10, value = "用户ID[64]")
private String uid;
@ApiModelProperty(position = 11, value = "手机号[20]")
private String mobile;
@ApiModelProperty(position = 14, value = "昵称[32]")
private String nickname;
private static final AdamUserInfoSimpleVo obj = new AdamUserInfoSimpleVo();
public static AdamUserInfoSimpleVo getNew() {
try {
return (AdamUserInfoSimpleVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamUserInfoSimpleVo();
}
}
......@@ -26,6 +26,8 @@ public class KylinRedisConst {
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_TRANSFER = "kylin:order:transfer:uid:";
public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
public static final String PERFORMANCE_ID = "performanceId";
......
package com.liquidnet.service.kylin.dto.vo.admin;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ApiModel
@Data
public class PerformanceTransferConfigVo {
private String performancesId;
private String title;
private Integer isCanTransfer;
private String transferStartTime;
private String transferEndTime;
}
......@@ -16,7 +16,7 @@ import java.util.List;
@ApiModel(value = "KylinOrderTicketVo", description = "订单数据")
@Data
public class KylinOrderTicketVo implements Serializable,Cloneable {
public class KylinOrderTicketVo implements Serializable, Cloneable {
private Integer mid;
private static final long serialVersionUID = 5325511589667456213L;
@ApiModelProperty(position = 10, value = "ID")
......@@ -29,9 +29,13 @@ public class KylinOrderTicketVo implements Serializable,Cloneable {
private String userMobile;
@ApiModelProperty(position = 14, value = "演出名称")
private String performanceTitle;
@ApiModelProperty(position = 15, value = "票种名称")
private String ticketTitle;
@ApiModelProperty(position = 15, value = "开始时间")
private String timeStart;
@ApiModelProperty(position = 15, value = "适用时间")
private String useStart;
@ApiModelProperty(position = 15, value = "演出图片")
private String performanceImg;
@ApiModelProperty(position = 15, value = "订单号")
private String orderCode;
......@@ -81,51 +85,81 @@ public class KylinOrderTicketVo implements Serializable,Cloneable {
private String getTicketDescribe;
@ApiModelProperty(position = 38, value = "订单过期时间(分钟)")
private Integer payCountdownMinute;
@ApiModelProperty(position = 15, value = "快递方式")
private Integer expressType;
@ApiModelProperty(position = 15, value = "是否学生票")
private Integer isStudent;
@ApiModelProperty(position = 15, value = "转赠状态[0可转赠,1转赠中,2已转赠,3转赠订单,4待接收,5被退回,6已退回]")
private Integer transferStatus;
@ApiModelProperty(position = 15, value = "订单状态[订单状态:0待付款,1已付款,2已关闭,3正在退款,4已退款, 5待关闭 6部分退款]")
private Integer status;
@ApiModelProperty(position = 15, value = "支付状态[支付状态:0未支付 1已支付 2支付失败]")
private Integer payStatus;
@ApiModelProperty(position = 15, value = "转赠订单id")
private String transferId;
@ApiModelProperty(position = 15, value = "转赠用户id")
private String transferUid;
@ApiModelProperty(position = 15, value = "直播id")
private String liveId;
@ApiModelProperty(position = 15, value = "演出id")
private String performanceId;
@ApiModelProperty(position = 15, value = "场次id")
private String timeId;
@ApiModelProperty(position = 15, value = "票种id")
private String ticketId;
@ApiModelProperty(position = 15, value = "代理id")
private String agentId;
@ApiModelProperty(position = 15, value = "是否会员")
private Integer isMember;
@ApiModelProperty(position = 15, value = "订单过期日期")
private String overdueAt;
@ApiModelProperty(position = 15, value = "创建时间")
private String createdAt;
@ApiModelProperty(position = 15, value = "更新时间")
private String updatedAt;
// private Integer isCanRefund;
// private Integer isCanRefund;
@ApiModelProperty(position = 15, value = "退款相关列表")
private List<OrderRefundListVo> orderRefundListVos;
private LocalDateTime changeDate;
@ApiModelProperty(position = 15, value = "是否实名")
private Integer isTrueName;
@ApiModelProperty(position = 15, value = "购票须知")
private String noticeImage;
private String notice;
@ApiModelProperty(position = 15, value = "票种类型")
private Integer ticketType;
@ApiModelProperty(position = 15, value = "演出名称")
private String fieldName;
@ApiModelProperty(position = 20, value = "转赠时间")
private String transferTime;
@ApiModelProperty(position = 15, value = "票单列表")
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) {
BeanUtils.copyProperties(orderTicket,this);
BeanUtils.copyProperties(orderTicket, this);
}
public void setOrderTicketStatus(KylinOrderTicketStatus orderTicketStatus) {
BeanUtils.copyProperties(orderTicketStatus,this);
BeanUtils.copyProperties(orderTicketStatus, this);
}
public void setOrderTicketRelation(KylinOrderTicketRelations orderTicketRelation) {
BeanUtils.copyProperties(orderTicketRelation,this);
BeanUtils.copyProperties(orderTicketRelation, this);
}
private static final KylinOrderTicketVo obj = new KylinOrderTicketVo();
public static KylinOrderTicketVo getNew() {
try {
return (KylinOrderTicketVo) obj.clone();
......
......@@ -112,6 +112,14 @@ public class KylinPerformanceVo {
private String refundOpenTime;
private String refundCloseTime;
private Integer isTransfer;
private String transferStartTime;
private String transferEndTime;
// private Integer isRefundPoundage;
// private Integer isRefundVoucher;
// private Integer isRefundExpress;
public void setPerformance(KylinPerformances performance) {
this.mid = performance.getMid();
this.performancesId = performance.getPerformancesId();
......@@ -120,13 +128,13 @@ public class KylinPerformanceVo {
this.timeStart = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeStart());
this.timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeEnd());
this.type = performance.getType();
this.details =performance.getDetails();
this.details = performance.getDetails();
this.noticeImage = performance.getNoticeImage();
this.notice=performance.getNotice();
this.approvalUrl=performance.getApprovalUrl();
this.notice = performance.getNotice();
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.isMember = isMember;
this.isExclusive = isExclusive;
......@@ -141,7 +149,7 @@ public class KylinPerformanceVo {
this.payCountdownMinute = payCountdownMinute;
}
public void setFieldsData(KylinFields fields,String cityName){
public void setFieldsData(KylinFields fields, String cityName) {
this.longitude = fields.getLongitude();
this.latitude = fields.getLatitude();
this.cityName = cityName;
......@@ -156,11 +164,14 @@ public class KylinPerformanceVo {
this.limitCount = performanceStatus.getLimitCount();
this.limitCountMember = performanceStatus.getLimitCountMember();
this.sysDamai = performanceStatus.getSyncDamai();
this.isShow=performanceStatus.getIsShow();
this.isShow = performanceStatus.getIsShow();
this.isCanRefund = performanceStatus.getIsCanRefund();
this.isOpenRefundPresent = performanceStatus.getIsOpenRefundPresent();
this.refundOpenTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundOpenTime());
this.refundCloseTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundCloseTime());
this.isTransfer = performanceStatus.getIsTransfer();
this.transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferStartTime());
this.transferEndTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferEndTime());
}
public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) {
......
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 java.io.Serializable;
import java.math.BigDecimal;
@Data
public class KylinOrderListVo implements Serializable,Cloneable {
@ApiModel
public class KylinOrderListVo implements Serializable, Cloneable {
private static final long serialVersionUID = 6554829077875538374L;
@ApiModelProperty(value = "订单id", example = "")
private String orderTicketsId;
@ApiModelProperty(value = "演出id", example = "")
private String performanceId;
@ApiModelProperty(value = "票种id", example = "")
private String ticketId;
@ApiModelProperty(value = "演出标题", example = "")
private String performanceTitle;
@ApiModelProperty(value = "演出图片", example = "")
private String performanceImg;
@ApiModelProperty(value = "订单号", example = "")
private String orderCode;
@ApiModelProperty(value = "开售时间", example = "")
private String timeStart;
@ApiModelProperty(value = "票种名称", example = "")
private String ticketTitle;
@ApiModelProperty(value = "适用开始时间", example = "")
private String useStart;
@ApiModelProperty(value = "订单过期时间", example = "")
private String overdueAt;
@ApiModelProperty(value = "过期倒计时", example = "")
private Long restTime;
@ApiModelProperty(value = "实际支付价格", example = "")
private BigDecimal priceActual;
@ApiModelProperty(value = "数量", example = "")
private Integer number;
@ApiModelProperty(value = "订单状态(订单状态:0待付款,1已付款,2已关闭,3正在退款,4已退款, 5待关闭,6部分退款," +
"11转赠中,12已转赠,13转赠订单,14待接收,15被退回,16已退回)", example = "")
private Integer status;
@ApiModelProperty(value = "快递状态", example = "")
private Integer expressStatus;
@ApiModelProperty(value = "取票方式", example = "")
private String getTicketType;
@ApiModelProperty(value = "转赠状态")
private Integer transferStatus;
@ApiModelProperty(value = "创建时间", example = "")
private String createdAt;
private static final KylinOrderListVo obj = new KylinOrderListVo();
public static KylinOrderListVo getNew() {
try {
return (KylinOrderListVo) obj.clone();
......@@ -34,4 +59,63 @@ public class KylinOrderListVo implements Serializable,Cloneable {
return new KylinOrderListVo();
}
}
public void setStatus(Integer status) {
if(status.equals(1) && transferStatus!=null) {
if (this.transferStatus.equals(1)) {
this.status = 11;
} else if (this.transferStatus.equals(2)) {
this.status = 12;
} else if (this.transferStatus.equals(3)) {
this.status = 13;
} else if (this.transferStatus.equals(4)) {
this.status = 14;
} else if (this.transferStatus.equals(5)) {
this.status = 15;
} else if (this.transferStatus.equals(6)) {
this.status = 16;
} else {
this.status = status;
}
}else{
this.status = status;
}
}
public KylinOrderListVo copy(KylinOrderTicketVo vo) {
if (null == vo) return this;
this.orderTicketsId = vo.getOrderTicketsId();
this.performanceId = vo.getPerformanceId();
this.ticketId = vo.getTicketId();
this.performanceTitle = vo.getPerformanceTitle();
this.performanceImg = vo.getPerformanceImg();
this.orderCode = vo.getOrderCode();
this.timeStart = vo.getTimeStart();
this.ticketTitle = vo.getTicketTitle();
this.useStart = vo.getUseStart();
this.overdueAt = vo.getOverdueAt();
this.priceActual = vo.getPriceActual();
this.number = vo.getNumber();
this.expressStatus = 0;
this.getTicketType = vo.getGetTicketType();
this.createdAt = vo.getCreatedAt();
this.restTime = 0L;
if (vo.getTransferStatus().equals(1)) {
this.status = 11;
} else if (vo.getTransferStatus().equals(2)) {
this.status = 12;
} else if (vo.getTransferStatus().equals(3)) {
this.status = 13;
} else if (vo.getTransferStatus().equals(4)) {
this.status = 14;
} else if (vo.getTransferStatus().equals(5)) {
this.status = 15;
} else if (vo.getTransferStatus().equals(6)) {
this.status = 16;
} else {
this.status = vo.getStatus();
}
return this;
}
}
......@@ -2,21 +2,36 @@ package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinFields;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "OrderDetailsVo", description = "订单详情外层数据")
public class OrderDetailsVo implements Cloneable {
@ApiModelProperty(position = 10, value = "订单详情vo")
private KylinOrderTicketVo orderTicketVo;
@ApiModelProperty(position = 10, value = "入场须知")
private String enterDescribe;
@ApiModelProperty(position = 10, value = "快递状态")
private Integer expressStatus;
@ApiModelProperty(position = 10, value = "订单失效时间")
private Long restTime;
@ApiModelProperty(position = 10, value = "订单转赠失效时间")
private Long restTransferTime;
@ApiModelProperty(position = 10, value = "是否可退款")
private Integer isCanRefund;
@ApiModelProperty(position = 10, value = "是否展示二维码")
private Integer isShowQrCode;
@ApiModelProperty(position = 10, value = "二维码显示时间")
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 static final OrderDetailsVo obj = new OrderDetailsVo();
......
......@@ -20,7 +20,7 @@ import java.util.List;
* @author liquidnet
* @since 2021-05-20
*/
public interface IKylinOrderTicketsService {
public interface IKylinOrderTicketsService {
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderList();
......@@ -35,18 +35,34 @@ public interface IKylinOrderTicketsService {
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 reason 退款原因
* @param picList 证据截图
* @return 是否成功
*
* @param orderId 订单id
* @param orderTicketEntitiesId 票单id
* @param reason 退款原因
* @param picList 证据截图
* @return 是否成功
*/
String sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList);
//退款撤回
ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId);
//发起转赠订单
ResponseDto<String> orderTransfer(String orderId, String transferUid, String transferMobile);
//撤回转赠订单
ResponseDto<String> orderTransferWithdraw(String orderId);
//接受转赠订单
ResponseDto<String> orderTransferAccept(String enterIdList);
//拒绝转赠订单
ResponseDto<String> orderTransferReject();
//拒绝转赠订单
ResponseDto<String> orderTransferBack(String orderId);
}
......@@ -9,6 +9,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
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.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceTransferConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.entity.KylinPerformances;
......@@ -182,7 +183,23 @@ public interface IKylinPerformancesAdminService {
* 修改 演出退款配置
* @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,
String refundOpenTime,
String refundCloseTime);
......
......@@ -81,9 +81,8 @@ public class KylinOrderRefundAdminController extends BaseController {
@Log(title = "订单退款列表", businessType = BusinessType.DETAIL)
@PostMapping("applyOrder")
@ResponseBody
public RefundOrderDetailsVo applyOrder(RefundApplyParam refundApplyParam) {
RefundOrderDetailsVo orderInfo = kylinOrderRefundsServiceImpl.orderDetails(refundApplyParam.getOrderCode());
return orderInfo;
public AjaxResult applyOrder(RefundApplyParam refundApplyParam) {
return kylinOrderRefundsServiceImpl.orderDetails(refundApplyParam.getOrderCode());
}
@Log(title = "订单退款列表", businessType = BusinessType.INSERT)
......
......@@ -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.KylinPerformanceDamaiVo;
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.service.admin.IKylinPerformancesAdminService;
import com.liquidnet.service.kylin.service.other.DamaiService;
......@@ -198,7 +199,25 @@ public class KylinPerformancesController extends BaseController {
@RequestParam("isCanRefund") Integer isCanRefund,
@RequestParam("refundOpenTime") String refundOpenTime,
@RequestParam("refundCloseTime") String refundCloseTime) {
boolean result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime);
return toAjax(result);
String result = kylinPerformancesService.changeRefundConfig(performancesId, isCanRefund, refundOpenTime, refundCloseTime);
return this.success(result);
}
@GetMapping(value = "/transferConfig/{performancesId}")
public String getTransferConfig(@PathVariable("performancesId") String performancesId, ModelMap mmap) {
PerformanceTransferConfigVo result = kylinPerformancesService.getTransferConfig(performancesId);
mmap.put("performanceTransferConfigVo", result);
return prefix + "/transferConfig";
}
//@RequiresPermissions("kylin:performances:view")
@PostMapping(value = "/transferConfig/change")
@ResponseBody
public AjaxResult changeTransferConfig(@RequestParam("performancesId") String performancesId,
@RequestParam("isCanTransfer") Integer isCanTransfer,
@RequestParam("transferStartTime") String transferStartTime,
@RequestParam("transferEndTime") String transferEndTime) {
String result = kylinPerformancesService.changeTransferConfig(performancesId, isCanTransfer, transferStartTime, transferEndTime);
return this.success(result);
}
}
......@@ -21,14 +21,14 @@
<!-- </li>-->
<li id="li-tab-6"><a data-toggle="tab" href="#tab-6" aria-expanded="false" onclick="refundConfigInfo()">退款管理</a>
</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>
<li id="li-tab-4"><a data-toggle="tab" href="#tab-4" aria-expanded="false" onclick="agentInfo()">代理配置</a>
</li>
<li id="li-tab-5"><a data-toggle="tab" href="#tab-5" aria-expanded="false" onclick="damaiInfo()">大麦配置</a>
</li>
<li id="li-tab-7"><a data-toggle="tab" href="#tab-7" aria-expanded="false" onclick="transferInfo()">转赠配置</a>
</li>
</ul>
<div class="tab-content">
<div id="tab-1" class="tab-pane">
......@@ -366,9 +366,9 @@
document.getElementById("refundConfig_iframe").src = "../refundConfig/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "");
}
//转配置
//转配置
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 () {
......
......@@ -87,6 +87,7 @@
$.operate.post(prefix + "/refundConfig/change",
param,
function (res) {
alert(res.msg);
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 @@
$.modal.loading("正在查询订单,请稍后...");
},
success: function (result) {
if (result.msg) {
if (result.status > 0) {
$.modal.closeLoading();
layer.msg("未找到该订单信息");
layer.msg(result.msg);
return false;
} else {
$("#orderTicketsId").val(result.orderTicketVo.orderTicketsId);
$('input[name="RefundPriceExpress"]').val(result.orderTicketVo.priceExpress);
$('input[name="RefundPriceExpress"]').attr("max", result.orderTicketVo.priceExpress);
$("#performanceTitle").text(result.kylinPerformanceVo.title);
$("#orderTicketsId").val(result.data.orderTicketVo.orderTicketsId);
$('input[name="RefundPriceExpress"]').val(result.data.orderTicketVo.priceExpress);
$('input[name="RefundPriceExpress"]').attr("max", result.data.orderTicketVo.priceExpress);
$("#performanceTitle").text(result.data.kylinPerformanceVo.title);
var options = {
data: result.kylinOrderTicketEntitiesDao,
data: result.data.kylinOrderTicketEntitiesDao,
pagination: false,
columns: [{
checkbox: true
......
......@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.type.TypeReference;
import com.github.pagehelper.PageHelper;
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.ShiroUtils;
import com.liquidnet.commons.lang.util.BeanUtil;
......@@ -113,6 +114,9 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
if (thisOrderStatus != KylinTableStatusConst.ORDER_STATUS1 && thisOrderStatus != KylinTableStatusConst.ORDER_STATUS3 && thisOrderStatus != KylinTableStatusConst.ORDER_STATUS6) {
return ResponseDto.failure("当前订单状态不支持退款申请");
}
if (orderStatus.getTransferStatus() != 0 || orderStatus.getTransferStatus() != 5) {
return ResponseDto.failure("当前转增状态不可退款");
}
// 订单支付状态需为已支付
if (thisPayStatus != KylinTableStatusConst.ORDER_PAY_STATUS1) {
return ResponseDto.failure("订单支付状态需为已支付");
......@@ -409,75 +413,85 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
return pageInfoTmp;
}
public RefundOrderDetailsVo orderDetails(String orderCode) {
// 订单
KylinOrderTickets kylinOrderTickets = kylinOrderTicketsMapper.selectOne(
new QueryWrapper<KylinOrderTickets>().eq("order_code", orderCode)
);
BigDecimal oldPriceExpress = kylinOrderTickets.getPriceExpress();
// 传的快递费不能大于实际的快递费=(支付的快递费-已退的快递费)
BigDecimal refundPriceExpressSum = kylinOrderRefundsMapper.RefundPriceExpressSum(// 已退快递费
kylinOrderTickets.getOrderTicketsId(),
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL
);
if (null == refundPriceExpressSum) {
refundPriceExpressSum = new BigDecimal(0);
}
BigDecimal RefundPriceExpress = kylinOrderTickets.getPriceExpress().subtract(refundPriceExpressSum);
kylinOrderTickets.setPriceExpress(RefundPriceExpress);
// 订单关联 获取演出id
KylinOrderTicketRelations kylinOrderTicketRelations = kylinOrderTicketRelationsMapper.selectOne(
new QueryWrapper<KylinOrderTicketRelations>().eq("order_id", kylinOrderTickets.getOrderTicketsId())
);
public AjaxResult orderDetails(String orderCode) {
try {
// 订单
KylinOrderTickets kylinOrderTickets = kylinOrderTicketsMapper.selectOne(
new QueryWrapper<KylinOrderTickets>().eq("order_code", orderCode)
);
KylinOrderTicketStatus kylinOrderTicketStatus = kylinOrderTicketStatusMapper.selectOne(
Wrappers.lambdaQuery(KylinOrderTicketStatus.class).eq(KylinOrderTicketStatus::getOrderId, kylinOrderTickets.getOrderTicketsId())
);
if (kylinOrderTicketStatus.getTransferStatus() != 0 || kylinOrderTicketStatus.getTransferStatus() != 5) {
return AjaxResult.error("当前转增状态不可退款");
}
BigDecimal oldPriceExpress = kylinOrderTickets.getPriceExpress();
// 传的快递费不能大于实际的快递费=(支付的快递费-已退的快递费)
BigDecimal refundPriceExpressSum = kylinOrderRefundsMapper.RefundPriceExpressSum(// 已退快递费
kylinOrderTickets.getOrderTicketsId(),
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL
);
if (null == refundPriceExpressSum) {
refundPriceExpressSum = new BigDecimal(0);
}
BigDecimal RefundPriceExpress = kylinOrderTickets.getPriceExpress().subtract(refundPriceExpressSum);
kylinOrderTickets.setPriceExpress(RefundPriceExpress);
// 演出
KylinPerformances kylinPerformances = kylinPerformancesMapper.selectOne(
new QueryWrapper<KylinPerformances>().eq("performances_id", kylinOrderTicketRelations.getPerformanceId())
);
// 订单关联 获取演出id
KylinOrderTicketRelations kylinOrderTicketRelations = kylinOrderTicketRelationsMapper.selectOne(
new QueryWrapper<KylinOrderTicketRelations>().eq("order_id", kylinOrderTickets.getOrderTicketsId())
);
List<KylinOrderTicketEntitiesDao> entitiesListTemp = kylinOrderTicketEntitiesMapper.getRefundEntitiesList(kylinOrderTickets.getOrderTicketsId());
List<KylinOrderTicketEntitiesDao> entitiesList = new ArrayList<>();
if (entitiesListTemp.size() > 0) {
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)
// 演出
KylinPerformances kylinPerformances = kylinPerformancesMapper.selectOne(
new QueryWrapper<KylinPerformances>().eq("performances_id", kylinOrderTicketRelations.getPerformanceId())
);
BigDecimal onePrice = (priceActual.subtract(oldPriceExpress)).divide(BigDecimal.valueOf(allEntitiesCount));//单价
for (KylinOrderTicketEntitiesDao entities : entitiesListTemp) {
BigDecimal refundedPrice = kylinOrderTicketEntitiesMapper.getRefundEntitiesPrice(//已退 包含退款中
kylinOrderTickets.getOrderTicketsId(),
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL,
entities.getOrderTicketEntitiesId()
List<KylinOrderTicketEntitiesDao> entitiesListTemp = kylinOrderTicketEntitiesMapper.getRefundEntitiesList(kylinOrderTickets.getOrderTicketsId());
List<KylinOrderTicketEntitiesDao> entitiesList = new ArrayList<>();
if (entitiesListTemp.size() > 0) {
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 canRefundedPrice;
if (null != refundedPrice) {
canRefundedPrice = onePrice.subtract(refundedPrice);
} else {
canRefundedPrice = onePrice;
}
entities.setCanRefundedPrice(canRefundedPrice);
if (canRefundedPrice.compareTo(BigDecimal.ZERO) > 0) { // 退款中但是可退款金额为0不展示
entitiesList.add(entities);
BigDecimal onePrice = (priceActual.subtract(oldPriceExpress)).divide(BigDecimal.valueOf(allEntitiesCount));//单价
for (KylinOrderTicketEntitiesDao entities : entitiesListTemp) {
BigDecimal refundedPrice = kylinOrderTicketEntitiesMapper.getRefundEntitiesPrice(//已退 包含退款中
kylinOrderTickets.getOrderTicketsId(),
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL,
entities.getOrderTicketEntitiesId()
);
BigDecimal canRefundedPrice;
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();
BeanUtil.copy(kylinOrderTickets, kylinOrderTicketVo);
KylinOrderTicketVo kylinOrderTicketVo = new KylinOrderTicketVo();
BeanUtil.copy(kylinOrderTickets, kylinOrderTicketVo);
KylinPerformanceVo performanceVo = new KylinPerformanceVo();
BeanUtil.copy(kylinPerformances, performanceVo);
KylinPerformanceVo performanceVo = new KylinPerformanceVo();
BeanUtil.copy(kylinPerformances, performanceVo);
RefundOrderDetailsVo refundOrderDetailsVo = new RefundOrderDetailsVo();
refundOrderDetailsVo.setOrderTicketVo(kylinOrderTicketVo);
refundOrderDetailsVo.setKylinPerformanceVo(performanceVo);
refundOrderDetailsVo.setKylinOrderTicketEntitiesDao(entitiesList);
RefundOrderDetailsVo refundOrderDetailsVo = new RefundOrderDetailsVo();
refundOrderDetailsVo.setOrderTicketVo(kylinOrderTicketVo);
refundOrderDetailsVo.setKylinPerformanceVo(performanceVo);
refundOrderDetailsVo.setKylinOrderTicketEntitiesDao(entitiesList);
return refundOrderDetailsVo;
return AjaxResult.success(refundOrderDetailsVo);
} catch (Exception e) {
return AjaxResult.error("未找到该订单信息");
}
}
@Override
......@@ -499,7 +513,7 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
orderCode = data.getOrderCode();
}
}
}catch (Exception e){
} catch (Exception e) {
}
return orderCode;
......
......@@ -182,6 +182,7 @@ public class KylinOrderTicketsAdminServiceImpl extends ServiceImpl<KylinOrderTic
}
return vo;
} catch (Exception e) {
e.printStackTrace();
return vo;
}
}
......
......@@ -13,10 +13,7 @@ import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.*;
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.KylinPerformanceMemberHistoryVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.*;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
......@@ -581,10 +578,57 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
}
@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,
String refundOpenTime,
String refundCloseTime) {
KylinPerformanceStatus kylinPerformanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if(kylinPerformanceStatusData.getIsTransfer().equals(1) && isCanRefund.equals(1)){
return "修改失败,演出已开启转赠";
}
KylinPerformanceStatus kylinPerformanceStatus = new KylinPerformanceStatus();
kylinPerformanceStatus.setIsCanRefund(isCanRefund);
kylinPerformanceStatus.setRefundOpenTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundOpenTime));
......@@ -592,10 +636,10 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
try {
performanceStatusMapper.update(kylinPerformanceStatus, new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
performanceVoUtils.performanceVoStatus(performancesId);
return true;
return "修改成功";
} catch (Exception e) {
e.printStackTrace();
return false;
return "修改失败";
}
}
......@@ -654,7 +698,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
//找到所有ticketId
List<TicketTimesTicketCreatePartnerVo> timesVoList = vo.getTicketTimes();
for (TicketTimesTicketCreatePartnerVo timesVo : timesVoList) {
for (KylinTicketPartnerVo ticketVo : timesVo.getTicket()){
for (KylinTicketPartnerVo ticketVo : timesVo.getTicket()) {
List<String> orderTicketRedisIdList = new ArrayList<>();
List<String> userRedisIdList = new ArrayList<>();
List<String> orderTicketIdList = new ArrayList<>();
......
......@@ -120,6 +120,9 @@ public class DataUtils {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
}
return (List<KylinOrderListVo>) redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
......
......@@ -417,7 +417,7 @@ public class PerformanceVoUtils {
ticketRelationsMapper.update(ticketRelations, new UpdateWrapper<KylinTicketRelations>().eq("ticket_id", tickets.getTicketsId()));
BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
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);
}
}
......
......@@ -45,6 +45,9 @@ public class MQConst {
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_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 group;
......
......@@ -62,8 +62,6 @@ liquidnet:
check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://devkylin.zhengzai.tv/kylin/order/syncOrder
order:
adam:
url: http://devadam.zhengzai.tv/adam
url-pay:
pay: http://devdragon.zhengzai.tv/dragon/pay/dragonPay
check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder
......
......@@ -24,3 +24,5 @@ liquidnet:
pay: ${liquidnet.service.kylin.url-pay.pay}
check: ${liquidnet.service.kylin.url-pay.check}
localUrl: ${liquidnet.service.kylin.url-pay.localUrl}
adam:
url: ${liquidnet.service.adam.url}
......@@ -24,3 +24,5 @@ liquidnet:
pay: ${liquidnet.service.kylin.url-pay.pay}
check: ${liquidnet.service.kylin.url-pay.check}
localUrl: ${liquidnet.service.kylin.url-pay.localUrl}
adam:
url: ${liquidnet.service.adam.url}
\ No newline at end of file
......@@ -25,4 +25,4 @@ liquidnet:
check: ${liquidnet.service.order.url-pay.check}
localUrl: ${liquidnet.service.order.url-pay.localUrl}
adam:
url:${liquidnet.service.order.adam.url}
url:${liquidnet.service.adam.url}
......@@ -25,4 +25,4 @@ liquidnet:
check: ${liquidnet.service.order.url-pay.check}
localUrl: ${liquidnet.service.order.url-pay.localUrl}
adam:
url:${liquidnet.service.order.adam.url}
url:${liquidnet.service.adam.url}
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class KylinOrderTask implements Serializable {
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* order_id
*/
private String orderId;
/**
* status
*/
private Integer status;
/**
* created_at
*/
private LocalDateTime createdAt;
/**
* updated_at
*/
private LocalDateTime updatedAt;
/**
* comment
*/
private String comment;
}
......@@ -41,6 +41,11 @@ public class KylinOrderTicketRelations implements Serializable ,Cloneable{
*/
private String transferId;
/**
* 转增用户id
*/
private String transferUid;
/**
* 关联直播id
*/
......
......@@ -47,7 +47,7 @@ public class KylinOrderTicketStatus implements Serializable,Cloneable {
private Integer isStudent;
/**
* 转移状态,0未转移,1收到他人转赠,2已转赠给他人
*
*/
private Integer transferStatus;
......
......@@ -109,6 +109,36 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{
*/
private LocalDateTime refundCloseTime;
/**
* 是否开启转赠 0否 1是
*/
private Integer isTransfer;
/**
* 转赠开始时间
*/
private LocalDateTime transferStartTime;
/**
* 转赠结束时间
*/
private LocalDateTime transferEndTime;
// /**
// * 是否有手续费
// */
// private Integer isRefundPoundage;
//
// /**
// * 是否退优惠券
// */
// private Integer isRefundVoucher;
//
// /**
// * 是否退快递费
// */
// private Integer isRefundExpress;
/**
* 创建时间
*/
......
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.BannerDetailsDao;
import com.liquidnet.service.kylin.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.entity.KylinBanners;
import com.liquidnet.service.kylin.entity.KylinOrderTask;
import java.util.List;
import java.util.Map;
/**
* <p>
* 轮播图 Mapper 接口 处理数据库
* </p>
*
* @author jiangxiulong
* @since 2021-05-01
*/
public interface KylinOrderTaskMapper extends BaseMapper<KylinOrderTask> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinOrderTaskMapper">
</mapper>
......@@ -64,6 +64,7 @@
<where>
r.performance_id=#{targetId}
AND s.status IN (1, 3, 6)
AND s.transfer_status IN (0, 5)
AND s.pay_status=1
AND o.coupon_type='no'
AND o.payment_type IN
......@@ -82,6 +83,7 @@
<where>
r.performance_id=${targetId}
AND s.status IN (1, 3, 6)
AND s.transfer_status IN (0, 5)
AND s.pay_status=1
AND o.coupon_type='no'
AND o.mid>${mid}
......
......@@ -176,7 +176,10 @@
) AS 'total_sale_price' ,
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 =
ot.order_tickets_id WHERE (ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) AND coupon_type = 'no' GROUP BY otr.performance_id
ot.order_tickets_id
WHERE (ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) AND coupon_type = 'no'
and ots.transfer_status in (0,1,2,5)
GROUP BY otr.performance_id
) AS ot ON ot.performance_id = p.performances_id
<where>
<if test="title!=''">
......@@ -265,7 +268,7 @@
LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = ot.order_tickets_id
LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id
WHERE
(ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) and coupon_type ='no'
(ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) and coupon_type ='no' and ots.transfer_status in (0,1,2,5)
GROUP BY otr.performance_id
) AS ot ON ot.performance_id = p.performances_id
<where>
......@@ -423,7 +426,7 @@
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
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
) AS ot ON (ot.performance_id = kp.performances_id and ot.ticket_id = kp.ticket_id)
left JOIN(
......@@ -435,7 +438,7 @@
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
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
) AS otp ON (otp.performance_id = kp.performances_id and otp.ticket_id = kp.ticket_id)
left JOIN(
......@@ -448,7 +451,7 @@
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
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
) 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
......
......@@ -5,6 +5,7 @@ import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Component
@FeignClient(name = "liquidnet-service-platform",
......@@ -19,4 +20,7 @@ public interface FeignPlatformTaskClient {
@PostMapping("platform/performance/checkPerformanceTime")
ResponseDto<String> checkPerformanceTime();
@PostMapping("platform/order/checkTransferOrder")
ResponseDto<Boolean> checkTransferOrder(@RequestParam("minute") Integer minute);
}
......@@ -319,6 +319,30 @@ public class AdamUserController {
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 ---------------------------- */
private static final String PHP_API_SMS_CODE_VALID = "/smsValidation";
......
......@@ -35,9 +35,8 @@ public class KylinUtils {
public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) {
List<KylinOrderListVo> vo = new ArrayList<>();
List<KylinOrderListVo> redisVo = new ArrayList();
KylinOrderListVo voItem = new KylinOrderListVo();
KylinOrderTicketVo data = dataSingle;
BeanUtils.copyProperties(data, voItem);
KylinOrderListVo voItem = KylinOrderListVo.getNew().copy(data);
List<KylinOrderListVo> redisData = (List<KylinOrderListVo>) redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
if(redisData==null){
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;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.service.feign.kylin.task.FeignPlatformTaskClient;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;
/**
* XxlJob开发示例(Bean模式)
......@@ -28,7 +30,7 @@ public class KylinTaskHandler {
public ReturnT<String> checkOrderTimeHandler() {
try {
boolean result = feignPlatformTaskClient.checkOrderTime().getData();
log.info("checkOrderTimeHandler:结果:"+result);
log.info("checkOrderTimeHandler:结果:" + result);
return ReturnT.SUCCESS;
} catch (Exception e) {
return ReturnT.FAIL;
......@@ -39,13 +41,27 @@ public class KylinTaskHandler {
public ReturnT<String> checkPerformanceTimeHandler() {
try {
String result = feignPlatformTaskClient.checkPerformanceTime().getData();
log.info("checkPerformanceTimeHandler:结果:"+result);
log.info("checkPerformanceTimeHandler:结果:" + result);
return ReturnT.SUCCESS;
} catch (Exception e) {
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
// private FeignSequenceClient feignSequenceClient;
//
......
......@@ -25,7 +25,14 @@ XGROUP CREATE kylin:stream:rk.order.overtime.refund group.order.overtime.refund
XADD kylin:stream:rk.station * 0 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
......@@ -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.service.IKylinOrderTicketsService;
import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.List;
......@@ -135,4 +135,53 @@ public class KylinOrderTicketsController {
map.put("unPayCount", unPayCount);
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;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
......@@ -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.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.ObjectUtil;
......@@ -72,13 +69,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
//TODO 缺快递
PageInfo<List<KylinOrderListVo>> mPageInfo = null;
String uid = CurrentUtil.getCurrentUid();
// checkOrderTime(uid);
try {
List<KylinOrderListVo> voList = dataUtils.getOrderList(uid);
for (int i = 0; i < voList.size(); i++) {
KylinOrderListVo item = voList.get(i);
//TODO 顺丰快递
item.setStatus(item.getStatus());
Integer orderExpressStatus = dataUtils.getOrderExpressInfo(item.getOrderTicketsId());
item.setExpressStatus(orderExpressStatus);
......@@ -94,9 +89,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} catch (Exception e) {
e.printStackTrace();
}
log.debug("item.getOverdueAt() = " + item.getOverdueAt());
log.debug("DateUtil.getNowTime() = " + DateUtil.getNowTime());
log.debug("item.getRestTime() = " + item.getRestTime());
} else {
item.setRestTime(0L);
}
......@@ -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.setTotal(voList.size());
......@@ -119,12 +116,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
@Override
public OrderDetailsVo orderDetails(String orderId) {
try {
Long currentTime = System.currentTimeMillis();
OrderDetailsVo vo = OrderDetailsVo.getNew();
String uid = CurrentUtil.getCurrentUid();
// checkOrderTime(uid);
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
currentTime = System.currentTimeMillis() - currentTime;
if (orderTicketVo == null) {
orderTicketVo = dataUtils.getTransferOrder(uid);
}
if (uid.equals("809406") || uid.equals("773650")) {
} else {
if (!orderTicketVo.getUserId().equals(uid)) {
......@@ -133,7 +130,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
if (null != orderTicketVo) {
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
currentTime = System.currentTimeMillis() - currentTime;
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = orderTicketVo.getEntitiesVoList();
KylinTicketVo ticketVo = null;
......@@ -148,8 +144,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
}
}
currentTime = System.currentTimeMillis() - currentTime;
orderTicketVo.setIsTrueName(ticketVo.getIsTrueName());
orderTicketVo.setNoticeImage(performanceVo.getNoticeImage());
orderTicketVo.setNotice(performanceVo.getNotice());
......@@ -174,8 +168,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
vo.setIsShowQrCode(0);
vo.setShowQrCodeTime("");
}
currentTime = System.currentTimeMillis() - currentTime;
// 数据脱敏
for (KylinOrderTicketEntitiesVo item : kylinOrderTicketEntitiesVoList) {
if (item.getEnterIdCode().length() == 18) {
......@@ -185,7 +177,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
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");
if (orderTicketVo.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {
......@@ -199,7 +191,19 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} else {
vo.setRestTime(0L);
}
currentTime = System.currentTimeMillis() - currentTime;
//计算 转正倒计时
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());
vo.setExpressStatus(orderExpressStatus);
......@@ -224,12 +228,14 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
orderRefundListVos.add(data);
}
//是否可退
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.getExpressAddress().trim().equals("")
&& 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);
} else {
vo.setIsCanRefund(0);
......@@ -237,6 +243,33 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} else {
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);
if (orderTicketVo.getOrderCode().length() > 20) {
......@@ -388,7 +421,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
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.getExpressAddress().trim().equals("") && ticketVo.getCounts() == 1) {
if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate)
&& orderTicketVo.getExpressAddress().trim().equals("") && ticketVo.getCounts() == 1) {
} else {
return "暂不支持退款";
......@@ -595,4 +629,533 @@ 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.getExpressAddress().trim().equals("")
&& 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(orderTicketEntitiesId);
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("回退成功");
}
}
......@@ -34,6 +34,53 @@ public class DataUtils {
@Autowired
private RedisUtil redisUtil;
/**
* 转赠订单
*
* @param uid
* @param vo
*/
public void setTransferOrder(String uid, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
redisUtil.set(redisKey, vo);
}
/**
* 转赠订单
*
* @param uid
*/
public KylinOrderTicketVo getTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
Object obj = redisUtil.get(redisKey);
if (obj != null) {
return (KylinOrderTicketVo) obj;
} else {
return null;
}
}
/**
* 转赠订单
*
* @param uid
*/
public void delTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
redisUtil.del(redisKey);
}
/**
* 转赠订单
*
* @param uid
*/
public boolean hasTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
return redisUtil.hasKey(redisKey);
}
/**
* 获取普通剩余库存
*
......@@ -64,13 +111,15 @@ public class DataUtils {
public List<KylinOrderListVo> getOrderList(String userId) {
Object obj = redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
;
if (obj != null) {
return (List<KylinOrderListVo>) obj;
} else {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
return voList;
}
......@@ -88,6 +137,9 @@ public class DataUtils {
return (KylinOrderTicketVo) obj;
} else {
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());
ticketData.setEntitiesVoList(kylinOrderTicketEntitiesVoList);
redisUtil.set(KylinRedisConst.ORDER + orderId, ticketData);
......@@ -95,6 +147,11 @@ public class DataUtils {
}
}
public void setOrderTicketVo(String orderId, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER + orderId;
redisUtil.set(redisKey, vo);
}
/**
* 删除订单redis
*
......@@ -527,4 +584,78 @@ public class DataUtils {
return (KylinOrderExpressVo) redisUtil.get(redisKey);
}
/**
* 演出是否实名
*
* @param performanceId
*/
public int getPerformanceIsTrueName(String performanceId) {
Object obj = redisUtil.get(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId);
if (obj!=null) {
return (int)obj;
}else{
int isTrueName = getPerformanceVo(performanceId).getIsTrueName();
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId,isTrueName);
return isTrueName;
}
}
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
int isTrueName = getPerformanceIsTrueName(performanceId);
if (0 == isTrueName) {
redisKey = KylinRedisConst.USERID_BUY_INFO + userId;
} else {
redisKey = KylinRedisConst.IDCARD_BUY_INFO + idCard;
}
String performanceIdKey = redisKey + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId;
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
redisUtil.incr(performanceIdKey, buyCount);
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
}
}
// 获取 用户维度 演出购买数量
public int getUserPBuyCount(String userId, String performanceId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + userId + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId);
} catch (Exception e) {
return 0;
}
}
// 获取 用户维度 票种购买数量
public int getUserTBuyCount(String userId, String ticketId) {
try {
return (int) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + userId + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId);
} catch (Exception e) {
return 0;
}
}
// 获取 证件维度 演出购买数量
public int getIdCardPBuyCount(String idCard, String performanceId) {
try {
return (int) redisUtil.get(KylinRedisConst.IDCARD_BUY_INFO + idCard + ":" + KylinRedisConst.PERFORMANCE_ID + ":" + performanceId);
} catch (Exception e) {
return 0;
}
}
// 获取 证件维度 票种购买数量
public int getIdCardTBuyCount(String idCard, String ticketId) {
try {
return (int) redisUtil.get(KylinRedisConst.IDCARD_BUY_INFO + idCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId);
} catch (Exception e) {
return 0;
}
}
}
package com.liquidnet.service.kylin.utils;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
......@@ -24,6 +25,8 @@ public class ObjectUtil {
private static final ArrayList<KylinOrderListVo> kylinOrderListVoArrayList = new ArrayList<>();
private static final ArrayList<KylinBanners> kylinBannerListArrayList = new ArrayList<>();
private static final PagedResult<KylinStationPerformanceVo> kylinStationPerformanceVoPagedResult = new PagedResult<>();
private static final ArrayList<AdamEntersVo> arrayListObject = new ArrayList<>();
public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() {
return (ArrayList<KylinStationPerformanceVo>) kylinStationPerformanceVoArrayList.clone();
......@@ -72,4 +75,8 @@ public class ObjectUtil {
public static PagedResult<KylinStationPerformanceVo> getKylinStationPerformanceVoPagedResult() {
return kylinStationPerformanceVoPagedResult.clone();
}
public static ArrayList<AdamEntersVo> cloneArrayListObject() {
return (ArrayList<AdamEntersVo>) arrayListObject.clone();
}
}
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.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayInnerResultVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
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.util.MultiValueMap;
import javax.xml.ws.Response;
import java.util.List;
@Component
......@@ -15,6 +26,97 @@ public class OrderUtils {
@Autowired
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
......@@ -24,14 +126,14 @@ public class OrderUtils {
public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) {
List<KylinOrderListVo> vo = ObjectUtil.getKylinOrderListVoArrayList();
List<KylinOrderListVo> redisVo = ObjectUtil.getKylinOrderListVoArrayList();
KylinOrderListVo voItem = KylinOrderListVo.getNew();
KylinOrderTicketVo data;
if (dataSingle == null) {
data = dataUtils.getOrderTicketVo(orderId);
} else {
data = dataSingle;
}
BeanUtils.copyProperties(data, voItem);
KylinOrderListVo voItem = KylinOrderListVo.getNew().copy(data);
List<KylinOrderListVo> redisData = dataUtils.getOrderList(userId);
if (type == 1) {
redisVo.add(voItem);
......@@ -77,4 +179,14 @@ public class OrderUtils {
return false;
}
}
public List<AdamEntersVo> getEnters(String entersIds, String uid) {
MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString();
headers.add("Accept", "application/json;charset=UTF-8");
String returnVo = HttpUtil.get("https://testadam.zhengzai.tv" + "/adam/rsc/inquire/enters?entersIds=" + entersIds + "&uid=" + uid, null, headers);
ResponseDto<List<AdamEntersVo>> ResponseVo = JsonUtils.fromJson(returnVo, new TypeReference<ResponseDto<List<AdamEntersVo>>>() {
});
return ResponseVo.getData();
}
}
......@@ -44,4 +44,9 @@ kylin_order_refund.overtimeRefund=INSERT INTO kylin_order_refunds (order_refunds
kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?)
# ------------------------用户转赠相关接口----------------------------
kylin_order_task.insert = INSERT INTO `kylin_order_task`(`order_id` , `status` , `created_at`) VALUES (? ,? ,?);
kylin_order_task.delete = DELETE FROM kylin_order_task WHERE order_id = ?;
kylin_order_ticket_status.transfer.update = UPDATE kylin_order_ticket_status SET transfer_status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.transfer.update = UPDATE kylin_order_ticket_relations SET transfer_uid = ?, transfer_id = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
......@@ -60,6 +60,9 @@ public class DataUtils {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
return voList;
}
......
......@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
......@@ -35,4 +36,11 @@ public class KylinOrderTicketsController {
public ResponseDto<Boolean> 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;
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.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.OrderCloseMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dao.OrderScriptDto;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketRelations;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.KylinOrderTaskMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketRelationsMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
......@@ -18,6 +19,7 @@ import com.liquidnet.service.platform.utils.DataUtils;
import com.liquidnet.service.platform.utils.QueueUtils;
import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
......@@ -55,6 +57,8 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
private KylinOrderTicketStatusMapper orderTicketStatusMapper;
@Autowired
private KylinOrderTicketRelationsMapper orderTicketRelationsMapper;
@Autowired
private KylinOrderTaskMapper orderTaskMapper;
public boolean checkOrderTime(String userId) {
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
......@@ -141,4 +145,57 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
}
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
return performanceId;
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData(step1Param.getMerchantId(), "createStep1", step1Param, e));
return null;
}
}
......@@ -203,6 +204,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return performanceId;
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData(step1Param.getMerchantId(), "updateStep1", step1Param, e));
return null;
}
}
......@@ -314,6 +316,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
}
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "createStep2", step2Param, e));
return ResponseDto.failure(ErrorMapping.get(20115));
}
}
......@@ -444,6 +447,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
}
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "updateStep2", step2Param, e));
return ResponseDto.failure(ErrorMapping.get(20115));
}
}
......@@ -527,7 +531,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
log.info(UserPathDto.setPartnerData("0", "onLinePerformance", "performancesId=" + performancesId, "上线成功"));
return ResponseDto.success("上线成功");
} catch (Exception e) {
log.debug("上线失败", e);
log.info(UserPathDto.setPartnerData("0", "onLinePerformance", "performancesId=" + performancesId, e));
return ResponseDto.failure(ErrorMapping.get(20108));
}
}
......@@ -552,7 +556,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return ResponseDto.failure(ErrorMapping.get(20111));
}
} catch (Exception e) {
log.debug("下线失败", e);
log.info(UserPathDto.setPartnerData("0", "outLinePerformance", "outLinePerformance=" + performancesId, e));
return ResponseDto.failure(ErrorMapping.get(20109));
}
}
......@@ -589,6 +593,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
return performancePartnerVo.getPerformancesId();
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "copyPerformance", "performancesId=" + performancesId, e));
return null;
}
}
......@@ -680,6 +685,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
}
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0", "withdraw", performancesId, e));
return ResponseDto.failure(ErrorMapping.get(20117));
}
}
......
......@@ -123,6 +123,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
return ResponseDto.success(kylinTicketTimesPartnerVo);
} catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","createTimes", createTicketTimesParam,e));
return ResponseDto.failure(ErrorMapping.get(20105));
}
}
......@@ -162,6 +163,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
);
return ResponseDto.success(kylinTicketTimesPartnerVo);
} catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","addNewTimes", createTicketTimesParam,e));
return ResponseDto.failure(ErrorMapping.get(20101));
}
}
......@@ -204,6 +206,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
return ResponseDto.success();
}
} catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","deleteTimes", "ticketTimesId="+ticketTimesId,e));
return ResponseDto.failure(ErrorMapping.get(20102));
}
}
......@@ -249,6 +252,7 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
return ResponseDto.success(JsonUtils.fromJson(doc.toJson(), KylinTicketTimesPartnerVo.class));
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","changeTimes", createTicketTimesParam,e));
return ResponseDto.failure(ErrorMapping.get(20103));
}
}
......
......@@ -144,6 +144,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","createTicket", ticketCreateParam,e));
return ResponseDto.failure(ErrorMapping.get(20105));
}
}
......@@ -197,6 +198,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) {
log.info(UserPathDto.setPartnerData("0","addNewTicket", ticketCreateParam,e));
return ResponseDto.failure(ErrorMapping.get(20101));
}
}
......@@ -250,6 +252,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVoData);
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","updateTicket", ticketCreateParam,e));
return ResponseDto.failure(ErrorMapping.get(20103));
}
}
......@@ -295,6 +298,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
}
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","deleteTicket", "ticketsId="+ticketsId,e));
return ResponseDto.failure(ErrorMapping.get(20102));
}
}
......@@ -321,6 +325,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","deleteTicket", "performanceId="+performanceId+",ticketsId="+ticketsId,e));
return ResponseDto.failure(ErrorMapping.get(20107));
}
}
......@@ -389,6 +394,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
}
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","onLine", "performancesId="+performancesId+",ticketsId="+ticketsId,"上线失败"));
return ResponseDto.failure(ErrorMapping.get(20108));
}
}
......@@ -421,6 +427,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
}
} catch (Exception e) {
e.printStackTrace();
log.info(UserPathDto.setPartnerData("0","outLine", "performancesId="+performancesId+",ticketsId="+ticketsId,"下线失败"));
return ResponseDto.failure(ErrorMapping.get(20109));
}
}
......
......@@ -149,6 +149,9 @@ public class DataUtils {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
return voList;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment