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

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

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

# Conflicts:
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/mongo/KylinPerformanceVo.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/OrderDetailsVo.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinPerformancesController.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinPerformancesAdminServiceImpl.java
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-dev.yml
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-test.yml
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinPerformanceStatus.java
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinPerformancesMapper.xml
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
#	liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/service/impl/kylin/DMCheckOrderTimeImpl.java
parents d5501151 f388a9f8
-- 退款转赠添加 --
ALTER TABLE kylin_performance_status ADD is_transfer tinyint DEFAULT 0 COMMENT '是否支持转赠';
ALTER TABLE kylin_performance_status ADD transfer_start_time datetime NULL DEFAULT NULL COMMENT '转赠开启时间';
ALTER TABLE kylin_performance_status ADD transfer_end_time datetime NULL DEFAULT NULL COMMENT '转赠结束时间';
ALTER TABLE kylin_order_ticket_relations ADD transfer_uid varchar(255) DEFAULT "" COMMENT '转赠用户id';
drop table if exists kylin_order_task;
create table kylin_order_task
(
mid bigint unsigned auto_increment primary key,
order_id varchar(64) default '',
status int(3) comment '状态 [10-转赠订单可失效]',
created_at datetime ,
updated_at datetime ,
comment text
) engine = InnoDB comment '订单定时任务表';
\ No newline at end of file
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel(value = "AdamUserInfoVo", description = "用户详情")
@Data
public class AdamUserInfoSimpleVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 8479869354894030303L;
@ApiModelProperty(position = 10, value = "用户ID[64]")
private String uid;
@ApiModelProperty(position = 11, value = "手机号[20]")
private String mobile;
@ApiModelProperty(position = 14, value = "昵称[32]")
private String nickname;
private static final AdamUserInfoSimpleVo obj = new AdamUserInfoSimpleVo();
public static AdamUserInfoSimpleVo getNew() {
try {
return (AdamUserInfoSimpleVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamUserInfoSimpleVo();
}
}
......@@ -26,6 +26,8 @@ public class KylinRedisConst {
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 ORDER_COUPON = "kylin:order:coupon:id:";
// 收货地址
......
package com.liquidnet.service.kylin.dto.vo.admin;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ApiModel
@Data
public class PerformanceTransferConfigVo {
private String performancesId;
private String title;
private Integer isCanTransfer;
private String transferStartTime;
private String transferEndTime;
}
......@@ -16,7 +16,7 @@ import java.util.List;
@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,14 +112,14 @@ public class KylinPerformanceVo {
private String refundOpenTime;
private String refundCloseTime;
private Integer isRefundPoundage;
private Integer isRefundVoucher;
private Integer isRefundExpress;
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();
......@@ -128,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;
......@@ -149,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;
......@@ -164,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());
this.isRefundPoundage = performanceStatus.getIsRefundPoundage();
this.isRefundVoucher = performanceStatus.getIsRefundVoucher();
this.isRefundExpress = performanceStatus.getIsRefundExpress();
......
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,22 +2,37 @@ package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinFields;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
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 List<KylinOrderCoupons> orderCouponsList;
......
......@@ -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);
}
......@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.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 java.util.List;
......@@ -189,7 +190,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)
......
......@@ -105,6 +105,7 @@ public class KylinOrderRefundBatchAdminController extends BaseController {
return error(res.getMessage());
}
} catch (Exception e) {
logger.info("refundBatchApplyException", e);
return error(e.getMessage());
}
}
......
......@@ -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;
......@@ -201,7 +202,24 @@ public class KylinPerformancesController extends BaseController {
@RequestParam("isRefundPoundage") Integer isRefundPoundage,
@RequestParam("isRefundVoucher") Integer isRefundVoucher,
@RequestParam("isRefundExpress") Integer isRefundExpress) {
boolean result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime,isRefundPoundage,isRefundVoucher,isRefundExpress);
return toAjax(result);
String result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime,isRefundPoundage,isRefundVoucher,isRefundExpress); 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 () {
......
......@@ -166,6 +166,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.code > 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
......
......@@ -182,6 +182,7 @@ public class KylinOrderTicketsAdminServiceImpl extends ServiceImpl<KylinOrderTic
}
return vo;
} catch (Exception e) {
e.printStackTrace();
return vo;
}
}
......
......@@ -587,18 +587,64 @@ 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,
Integer isRefundPoundage,
Integer isRefundVoucher,
Integer isRefundExpress) {
KylinPerformanceStatus kylinPerformanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if(kylinPerformanceStatusData.getIsTransfer().equals(1) && isCanRefund.equals(1)){
return "修改失败,演出已开启转赠";
}
KylinPerformanceStatus kylinPerformanceStatus = new KylinPerformanceStatus();
kylinPerformanceStatus.setIsCanRefund(isCanRefund);
kylinPerformanceStatus.setRefundOpenTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundOpenTime));
kylinPerformanceStatus.setRefundCloseTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundCloseTime));
kylinPerformanceStatus.setIsRefundPoundage(isRefundPoundage);
kylinPerformanceStatus.setIsRefundVoucher(isRefundVoucher);
kylinPerformanceStatus.setIsRefundExpress(isRefundExpress);
......@@ -606,10 +652,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 "修改失败";
}
}
......@@ -668,7 +714,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<>();
......
......@@ -21,6 +21,7 @@ import com.liquidnet.service.kylin.mapper.KylinOrderRefundBatchesMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderRefundsMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.mapper.KylinPerformancesMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
......@@ -42,6 +43,7 @@ import java.util.List;
* @since 2021-05-25 11:26 上午
*/
@Service
@Slf4j
public class KylinRefundPerformancesAdminServiceImpl {
@Autowired
......@@ -69,7 +71,7 @@ public class KylinRefundPerformancesAdminServiceImpl {
HashMap<String, Object> orderStatisAlipay = kylinOrderTicketsMapper.getPerformanceRefundOrderStatis(targetId, paymentTypeAlipay);
String[] paymentTypeWepay = {"APPWEPAY", "APPLETWEPAY", "WAPWEPAY", "JSWEPAY", "wepay"};
HashMap<String, Object> orderStatisWepay = kylinOrderTicketsMapper.getPerformanceRefundOrderStatis(targetId, paymentTypeWepay);
BigDecimal totalPriceRefundAlipay = new BigDecimal(0);
BigDecimal totalPriceRefundAlipay = new BigDecimal(0.0);
Integer totalRefundNumberAlipay = 0;
BigDecimal totalPriceRefundWepay = new BigDecimal(0);
Integer totalRefundNumberWepay = 0;
......@@ -78,14 +80,19 @@ public class KylinRefundPerformancesAdminServiceImpl {
totalPriceRefundAlipay = (BigDecimal) orderStatisAlipay.get("total_price_refund");
Long totalRefundNumberAlipayBigDecimal = (Long) orderStatisAlipay.get("total_refund_number");
totalRefundNumberAlipay = totalRefundNumberAlipayBigDecimal.intValue();
if (null == totalPriceRefundAlipay) {
totalPriceRefundAlipay = new BigDecimal(0);
}
}
if (null != orderStatisWepay) {
totalPriceRefundWepay = (BigDecimal) orderStatisWepay.get("total_price_refund");
Long totalRefundNumberWepayBigDecimal = (Long) orderStatisWepay.get("total_refund_number");
totalRefundNumberWepay = totalRefundNumberWepayBigDecimal.intValue();
if (null == totalPriceRefundWepay) {
totalPriceRefundWepay = new BigDecimal(0);
}
}
if (totalPriceRefundAlipay.compareTo(BigDecimal.ZERO) <= 0 && totalPriceRefundWepay.compareTo(BigDecimal.ZERO) <= 0) {
return ResponseDto.failure("演出退款金额为0,无需退款");
}
......
......@@ -119,6 +119,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);
......
......@@ -249,6 +249,7 @@ public class PerformanceVoUtils {
KylinPerformanceRelations performanceRelations = new KylinPerformanceRelations();
BeanUtils.copyProperties(performanceUpdateMisVo, performanceRelations);
performances.setDetails(performanceUpdateMisVo.getDetails());
performances.setCityName((String) redisUtil.getDB15RedisHGet(KylinRedisConst.FIELDS + ":" + performanceRelations.getFieldId(), "city_name"));
performances.setCityId(Integer.parseInt((String) redisUtil.getDB15RedisHGet(KylinRedisConst.FIELDS + ":" + performanceRelations.getFieldId(), "city_id")));
performances.setCreatedAt(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(performanceUpdateMisVo.getCreatedAt())));
......@@ -417,7 +418,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;
......
......@@ -63,8 +63,6 @@ liquidnet:
localUrl: http://devkylin.zhengzai.tv/kylin/order/syncOrder
url: http://devkylin.zhengzai.tv/kylin
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,6 +25,6 @@ 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}
candy:
url: ${liquidnet.service.candy.url}
......@@ -25,6 +25,6 @@ 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}
candy:
url:${liquidnet.service.candy.url}
\ No newline at end of file
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class KylinOrderTask implements Serializable {
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* order_id
*/
private String orderId;
/**
* status
*/
private Integer status;
/**
* created_at
*/
private LocalDateTime createdAt;
/**
* updated_at
*/
private LocalDateTime updatedAt;
/**
* comment
*/
private String comment;
}
......@@ -41,6 +41,11 @@ public class KylinOrderTicketRelations implements Serializable ,Cloneable{
*/
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,21 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{
*/
private LocalDateTime refundCloseTime;
/**
* 是否开启转赠 0否 1是
*/
private Integer isTransfer;
/**
* 转赠开始时间
*/
private LocalDateTime transferStartTime;
/**
* 转赠结束时间
*/
private LocalDateTime transferEndTime;
/**
* 是否有手续费
*/
......
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.BannerDetailsDao;
import com.liquidnet.service.kylin.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.entity.KylinBanners;
import com.liquidnet.service.kylin.entity.KylinOrderTask;
import java.util.List;
import java.util.Map;
/**
* <p>
* 轮播图 Mapper 接口 处理数据库
* </p>
*
* @author jiangxiulong
* @since 2021-05-01
*/
public interface KylinOrderTaskMapper extends BaseMapper<KylinOrderTask> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinOrderTaskMapper">
</mapper>
......@@ -65,6 +65,7 @@
<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
......@@ -83,6 +84,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}
......
......@@ -188,7 +188,8 @@
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
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!=''">
......@@ -277,7 +278,7 @@
LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = ot.order_tickets_id
LEFT JOIN kylin_order_ticket_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>
......@@ -462,7 +463,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(
......@@ -474,7 +475,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(
......@@ -487,7 +488,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);
}
......@@ -320,6 +320,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);
}
}
......@@ -35,6 +35,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);
}
/**
* 获取普通剩余库存
*
......@@ -75,13 +122,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;
}
......@@ -99,6 +148,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);
......@@ -106,6 +158,11 @@ public class DataUtils {
}
}
public void setOrderTicketVo(String orderId, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER + orderId;
redisUtil.set(redisKey, vo);
}
/**
* 删除订单redis
*
......@@ -538,6 +595,81 @@ 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;
}
}
// 获取订单券的使用情况
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId){
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
......
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(adamUrl + "/adam/rsc/inquire/enters?entersIds=" + entersIds + "&uid=" + uid, null, headers);
ResponseDto<List<AdamEntersVo>> ResponseVo = JsonUtils.fromJson(returnVo, new TypeReference<ResponseDto<List<AdamEntersVo>>>() {
});
return ResponseVo.getData();
}
}
......@@ -44,4 +44,9 @@ kylin_order_refund.overtimeRefund=INSERT INTO kylin_order_refunds (order_refunds
kylin_order_refund_entities.overtimeRefund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?)
# ------------------------用户转赠相关接口----------------------------
kylin_order_task.insert = INSERT INTO `kylin_order_task`(`order_id` , `status` , `created_at`) VALUES (? ,? ,?);
kylin_order_task.delete = DELETE FROM kylin_order_task WHERE order_id = ?;
kylin_order_ticket_status.transfer.update = UPDATE kylin_order_ticket_status SET transfer_status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.transfer.update = UPDATE kylin_order_ticket_relations SET transfer_uid = ?, transfer_id = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
......@@ -76,6 +76,9 @@ public class DataUtils {
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;
......@@ -9,9 +10,8 @@ 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;
......@@ -21,6 +21,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;
......@@ -59,6 +60,8 @@ public class DMCheckOrderTimeImpl extends ServiceImpl<KylinOrderTicketsMapper, K
@Autowired
private KylinOrderTicketRelationsMapper orderTicketRelationsMapper;
@Autowired
private KylinOrderTaskMapper orderTaskMapper;
@Autowired
private PlatformCandyUserCouponService platformCandyUserCouponService;
public boolean checkOrderTime(String userId) {
......@@ -152,4 +155,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));
}
}
......@@ -445,6 +448,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));
}
}
......@@ -528,7 +532,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));
}
}
......@@ -553,7 +557,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));
}
}
......@@ -590,6 +594,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;
}
}
......@@ -681,6 +686,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;
}
......
......@@ -221,6 +221,7 @@ public class PerformanceVoTask {
floatList.sort(Comparator.naturalOrder());
StringList.sort(Comparator.naturalOrder());
kylinPerformanceMisVo.setDetails(performanceData.getDetails());
kylinPerformanceMisVo.setPrice(floatList.get(0) + "起");
kylinPerformanceMisVo.setStopSellTime(StringList.get(0));
kylinPerformanceMisVo.setTicketTimes(ticketTimesTicketCreatePartnerVoList);
......@@ -385,41 +386,41 @@ public class PerformanceVoTask {
KylinPerformanceMisVo misVo = getPerformanceMisVo(performanceId);
KylinPerformanceVo mongoVo = mongoVoUtils.combinePerformanceVoData(performanceId);
if (!misVo.getTitle().equals(mongoVo.getTitle())) {
log.debug("NEED CHANGE TITLE");
log.info("performanceId = "+performanceId+" NEED CHANGE TITLE");
return true;
} if (!misVo.getImgPoster().equals(mongoVo.getImgPoster())) {
log.debug("NEED CHANGE IMGPOSTER");
log.info("performanceId = "+performanceId+" NEED CHANGE IMGPOSTER");
return true;
} else if (!misVo.getType().equals(mongoVo.getType())) {
log.debug("NEED CHANGE TYPE");
log.info("performanceId = "+performanceId+" NEED CHANGE TYPE");
return true;
} else if (!misVo.getTimeStart().equals(mongoVo.getTimeStart())) {
log.debug("NEED CHANGE TIMESTART");
log.info("performanceId = "+performanceId+" NEED CHANGE TIMESTART");
return true;
} else if (!misVo.getTimeEnd().equals(mongoVo.getTimeEnd())) {
log.debug("NEED CHANGE TIMEEND");
log.info("performanceId = "+performanceId+" NEED CHANGE TIMEEND");
return true;
} else if (!misVo.getFieldId().equals(mongoVo.getFieldId())) {
log.debug("NEED CHANGE FIELDID");
log.info("performanceId = "+performanceId+" NEED CHANGE FIELDID");
return true;
} else if (!misVo.getNotice().equals(mongoVo.getNotice())) {
log.debug("NEED CHANGE NOTICE");
log.info("performanceId = "+performanceId+" NEED CHANGE NOTICE");
return true;
} else if (!misVo.getDetails().equals(mongoVo.getDetails())) {
log.debug("NEED CHANGE DETAILS");
} else if (!misVo.getDetails().replace("'","").equals(mongoVo.getDetails().replace("'",""))) {
log.info("performanceId = "+performanceId+" NEED CHANGE DETAILS");
return true;
} else if (!misVo.getApprovalUrl().equals(mongoVo.getApprovalUrl())) {
log.debug("NEED CHANGE APPROVALURL");
log.info("performanceId = "+performanceId+" NEED CHANGE APPROVALURL");
return true;
} else if (!misVo.getPayCountdownMinute().equals(mongoVo.getPayCountdownMinute())) {
log.debug("NEED CHANGE PAYCOUTDOWN");
log.info("performanceId = "+performanceId+" NEED CHANGE PAYCOUTDOWN");
return true;
}
boolean exists = mongoTemplate.exists(Query.query(Criteria.where("status").is(-1).and("performancesId").is(performanceId)),
KylinTicketTimesPartnerVo.class, KylinTicketTimesPartnerVo.class.getSimpleName());
if (exists) {
log.debug("NEED CHANGE NEW TIMES");
log.info("performanceId = "+performanceId+" NEED CHANGE NEW TIMES");
return true;
}
......@@ -428,27 +429,25 @@ public class PerformanceVoTask {
KylinTicketTimesVo timesVo = mongoVo.getTicketTimeList().get(i);
if(!times.getUseStart().equals(timesVo.getUseStart())){
log.debug("NEED CHANGE TIMES USE_START");
log.info("performanceId = "+performanceId+" NEED CHANGE TIMES USE_START");
return true;
}
if(!times.getUseEnd().equals(timesVo.getUseEnd())){
log.debug("NEED CHANGE TIMES USE_END");
log.info("performanceId = "+performanceId+" NEED CHANGE TIMES USE_END");
return true;
}
boolean exists2 = mongoTemplate.exists(Query.query(Criteria.where("status").is(-2).and("timesId").is(times.getTicketTimesId())), KylinTicketPartnerVo.class, KylinTicketPartnerVo.class.getSimpleName());
if (exists2) {
log.debug("NEED CHANGE NEW TICKET");
log.info("performanceId = "+performanceId+" NEED CHANGE NEW TICKET");
return true;
}
for (KylinTicketPartnerVo ticketPartnerVo : times.getTicket()) {
for (KylinTicketVo ticketVo : timesVo.getTicketList()) {
if (ticketVo.getTicketsId().equals(ticketPartnerVo.getTicketsId())) {
if (!ticketVo.getTitle().equals(ticketPartnerVo.getTitle())) {
log.debug("NEED CHANGE TICKET TITLE");
log.debug("ticketVo.getTitle() = " + ticketVo.getTitle());
log.debug("ticketPartnerVo.getTitle() = " + ticketPartnerVo.getTitle());
log.info("performanceId = "+performanceId+" ticketId = "+ticketVo.getTicketsId()+" NEED CHANGE TICKET TITLE");
return true;
}
// else if (!ticketVo.getQrCodeShowTime().equals(ticketPartnerVo.getQrCodeShowTime())) {
......@@ -456,20 +455,14 @@ public class PerformanceVoTask {
// return true;
// }
else if (!ticketVo.getDescribeElectronic().equals(ticketPartnerVo.getDescribeElectronic())) {
log.debug("NEED CHANGE TICKET DESCRIBEELECTRONIC");
log.debug("ticketVo.getDescribeElectronic() =" + ticketVo.getDescribeElectronic());
log.debug("ticketPartnerVo.getDescribeElectronic() =" + ticketPartnerVo.getDescribeElectronic());
log.info("performanceId = "+performanceId+" ticketId = "+ticketVo.getTicketsId()+" NEED CHANGE TICKET DESCRIBEELECTRONIC");
return true;
} else if (!ticketVo.getDescribeExpress().equals(ticketPartnerVo.getDescribeExpress())) {
log.debug("NEED CHANGE TICKET DESCRIBEELEXPRESS");
log.debug("ticketVo.getDescribeExpress() =" + ticketVo.getDescribeExpress());
log.debug("ticketPartnerVo.getDescribeExpress() =" + ticketPartnerVo.getDescribeExpress());
log.info("performanceId = "+performanceId+" ticketId = "+ticketVo.getTicketsId()+" NEED CHANGE TICKET DESCRIBEELEXPRESS");
return true;
}
if (!ticketVo.getDescribes().equals(ticketPartnerVo.getDescribes())) {
log.debug("NEED CHANGE TICKET DESCRIBES");
log.debug("ticketVo.getDescribes() =" + ticketVo.getDescribes());
log.debug("ticketPartnerVo.getDescribes() =" + ticketPartnerVo.getDescribes());
log.info("performanceId = "+performanceId+" NEED CHANGE TICKET DESCRIBES");
return true;
}
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment