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

Commit 87e2ac67 authored by 胡佳晨's avatar 胡佳晨

admin 增加转赠相关配置

adam 增加接口 根据手机号获取用户信息
kylin 增加转赠接口、撤回接口
consumer-kylin 消费
parent c08f2a62
-- 退款转赠添加 --
ALTER TABLE kylin_performance_status ADD is_transfer tinyint DEFAULT 0 COMMENT '是否支持转赠';
ALTER TABLE kylin_performance_status ADD transfer_start_time datetime NULL DEFAULT NULL COMMENT '转赠开启时间';
ALTER TABLE kylin_performance_status ADD transfer_end_time datetime NULL DEFAULT NULL COMMENT '转赠结束时间';
ALTER TABLE kylin_order_ticket_relations ADD transfer_uid varchar(255) DEFAULT "" COMMENT '转赠用户id';
drop table if exists kylin_order_task;
create table kylin_order_task
(
mid bigint unsigned auto_increment primary key,
order_id varchar(64) default '',
status int(3) comment '状态 [10-转赠订单可失效]',
created_at datetime ,
updated_at datetime ,
comment text
) engine = InnoDB comment '订单定时任务表';
\ No newline at end of file
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel(value = "AdamUserInfoVo", description = "用户详情")
@Data
public class AdamUserInfoSimpleVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 8479869354894030303L;
@ApiModelProperty(position = 10, value = "用户ID[64]")
private String uid;
@ApiModelProperty(position = 11, value = "手机号[20]")
private String mobile;
@ApiModelProperty(position = 14, value = "昵称[32]")
private String nickname;
private static final AdamUserInfoSimpleVo obj = new AdamUserInfoSimpleVo();
public static AdamUserInfoSimpleVo getNew() {
try {
return (AdamUserInfoSimpleVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamUserInfoSimpleVo();
}
}
......@@ -26,6 +26,8 @@ public class KylinRedisConst {
public static final String ORDER_REFUND_BY_ORDER_ID = "kylin:order:refund:orderId:";
public static final String ORDER_REFUND = "kylin:order:refund:orderRefundsId:";
public static final String ORDER_TRANSFER = "kylin:order:transfer:uid:";
public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
public static final String PERFORMANCE_ID = "performanceId";
......
package com.liquidnet.service.kylin.dto.vo.admin;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ApiModel
@Data
public class PerformanceTransferConfigVo {
private String performancesId;
private String title;
private Integer isCanTransfer;
private String transferStartTime;
private String transferEndTime;
}
......@@ -89,6 +89,7 @@ public class KylinOrderTicketVo implements Serializable,Cloneable {
private Integer payStatus;
private String transferId;
private String transferUid;
private String liveId;
private String performanceId;
private String timeId;
......
......@@ -112,6 +112,10 @@ public class KylinPerformanceVo {
private String refundOpenTime;
private String refundCloseTime;
private Integer isTransfer;
private String transferStartTime;
private String transferEndTime;
public void setPerformance(KylinPerformances performance) {
this.mid = performance.getMid();
this.performancesId = performance.getPerformancesId();
......@@ -120,13 +124,13 @@ public class KylinPerformanceVo {
this.timeStart = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeStart());
this.timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.format(performance.getTimeEnd());
this.type = performance.getType();
this.details =performance.getDetails();
this.details = performance.getDetails();
this.noticeImage = performance.getNoticeImage();
this.notice=performance.getNotice();
this.approvalUrl=performance.getApprovalUrl();
this.notice = performance.getNotice();
this.approvalUrl = performance.getApprovalUrl();
}
public void setTimePriceVipAndLack(int isLackRegister, int isMember, int isExclusive, BigDecimal price, LocalDateTime stopSellTime, LocalDateTime sellMemberTime,LocalDateTime sellTime,int isAdvance,int isDiscount,int payCountdownMinute) {
public void setTimePriceVipAndLack(int isLackRegister, int isMember, int isExclusive, BigDecimal price, LocalDateTime stopSellTime, LocalDateTime sellMemberTime, LocalDateTime sellTime, int isAdvance, int isDiscount, int payCountdownMinute) {
this.isLackRegister = isLackRegister;
this.isMember = isMember;
this.isExclusive = isExclusive;
......@@ -141,7 +145,7 @@ public class KylinPerformanceVo {
this.payCountdownMinute = payCountdownMinute;
}
public void setFieldsData(KylinFields fields,String cityName){
public void setFieldsData(KylinFields fields, String cityName) {
this.longitude = fields.getLongitude();
this.latitude = fields.getLatitude();
this.cityName = cityName;
......@@ -156,11 +160,14 @@ public class KylinPerformanceVo {
this.limitCount = performanceStatus.getLimitCount();
this.limitCountMember = performanceStatus.getLimitCountMember();
this.sysDamai = performanceStatus.getSyncDamai();
this.isShow=performanceStatus.getIsShow();
this.isShow = performanceStatus.getIsShow();
this.isCanRefund = performanceStatus.getIsCanRefund();
this.isOpenRefundPresent = performanceStatus.getIsOpenRefundPresent();
this.refundOpenTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundOpenTime());
this.refundCloseTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundCloseTime());
this.isTransfer = performanceStatus.getIsTransfer();
this.transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferStartTime());
this.transferEndTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferEndTime());
}
public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) {
......
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@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转赠中 14被赠中)",example = "")
private Integer status;
@ApiModelProperty(value = "快递状态",example = "")
private Integer expressStatus;
@ApiModelProperty(value = "取票方式",example = "")
private String getTicketType;
@ApiModelProperty(value = "创建时间",example = "")
private String createdAt;
private static final KylinOrderListVo obj = new KylinOrderListVo();
......@@ -34,4 +55,33 @@ public class KylinOrderListVo implements Serializable,Cloneable {
return new KylinOrderListVo();
}
}
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(4)){
this.status = 14;
}else{
this.status = vo.getStatus();
}
return this;
}
}
......@@ -16,6 +16,7 @@ public class OrderDetailsVo implements Cloneable {
private Integer isShowQrCode;
private String showQrCodeTime;
private Integer isCanTransfer;
private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList;
......
......@@ -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,25 @@ 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);
}
......@@ -9,6 +9,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceTransferConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.entity.KylinPerformances;
......@@ -187,6 +188,22 @@ public interface IKylinPerformancesAdminService {
String refundOpenTime,
String refundCloseTime);
/**
* 获取 演出转赠配置
* @param performanceId
* @return
*/
PerformanceTransferConfigVo getTransferConfig(String performanceId);
/**
* 修改 演出转赠配置
* @return
*/
boolean changeTransferConfig(String performancesId,
Integer isCanRefund,
String refundOpenTime,
String refundCloseTime);
KylinPerformanceAgentVo getPerformanceAgent(String performancesId);
KylinPerformanceDamaiVo getPerformanceDamai(String performancesId);
......
......@@ -18,6 +18,7 @@ import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceTransferConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import com.liquidnet.service.kylin.service.other.DamaiService;
......@@ -198,7 +199,25 @@ public class KylinPerformancesController extends BaseController {
@RequestParam("isCanRefund") Integer isCanRefund,
@RequestParam("refundOpenTime") String refundOpenTime,
@RequestParam("refundCloseTime") String refundCloseTime) {
boolean result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime);
boolean result = kylinPerformancesService.changeRefundConfig(performancesId, isCanRefund, refundOpenTime, refundCloseTime);
return toAjax(result);
}
@GetMapping(value = "/transferConfig/{performancesId}")
public String getTransferConfig(@PathVariable("performancesId") String performancesId, ModelMap mmap) {
PerformanceTransferConfigVo result = kylinPerformancesService.getTransferConfig(performancesId);
mmap.put("performanceTransferConfigVo", result);
return prefix + "/transferConfig";
}
//@RequiresPermissions("kylin:performances:view")
@PostMapping(value = "/transferConfig/change")
@ResponseBody
public AjaxResult changeTransferConfig(@RequestParam("performancesId") String performancesId,
@RequestParam("isCanTransfer") Integer isCanTransfer,
@RequestParam("transferStartTime") String transferStartTime,
@RequestParam("transferEndTime") String transferEndTime) {
boolean result = kylinPerformancesService.changeTransferConfig(performancesId, isCanTransfer, transferStartTime, transferEndTime);
return toAjax(result);
}
}
......@@ -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 () {
......
<!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^='transferCloseTime']").val() == "" || $("input[name^='transferOpenTime']").val() == "") {
alert("定时时间不能为空");
} else {
$.operate.post(prefix + "/transferConfig/change",
param,
function (res) {
location.reload();
});
}
}
</script>
</body>
</html>
......@@ -13,10 +13,7 @@ import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceMemberHistoryVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.*;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
......@@ -580,6 +577,38 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
return vo;
}
@Override
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 boolean changeTransferConfig(String performancesId,
Integer isCanTransfer,
String transferStartTime,
String transferEndTime) {
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 true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public boolean changeRefundConfig(String performancesId,
Integer isCanRefund,
......@@ -654,7 +683,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<>();
......
......@@ -45,6 +45,7 @@ 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", "订单转赠"),
;
private final String key;
private final String group;
......
......@@ -41,6 +41,11 @@ public class KylinOrderTicketRelations implements Serializable ,Cloneable{
*/
private String transferId;
/**
* 转增用户id
*/
private String transferUid;
/**
* 关联直播id
*/
......
......@@ -47,7 +47,7 @@ public class KylinOrderTicketStatus implements Serializable,Cloneable {
private Integer isStudent;
/**
* 转移状态,0未转移,1收到他人转赠,2已转赠给他人
*
*/
private Integer transferStatus;
......
......@@ -109,6 +109,36 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{
*/
private LocalDateTime refundCloseTime;
/**
* 是否开启转赠 0否 1是
*/
private Integer isTransfer;
/**
* 转赠开始时间
*/
private LocalDateTime transferStartTime;
/**
* 转赠结束时间
*/
private LocalDateTime transferEndTime;
/**
* 是否有手续费
*/
private Integer isRefundPoundage;
/**
* 是否退优惠券
*/
private Integer isRefundVoucher;
/**
* 是否退快递费
*/
private Integer isRefundExpress;
/**
* 创建时间
*/
......
......@@ -315,6 +315,27 @@ 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);
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";
......
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.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();
}
}
......@@ -25,7 +25,8 @@ 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
# ==================================================
# 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,29 @@ 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);
}
}
......@@ -34,6 +34,53 @@ public class DataUtils {
@Autowired
private RedisUtil redisUtil;
/**
* 转赠订单
*
* @param uid
* @param vo
*/
public void setTransferOrder(String uid, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
redisUtil.set(redisKey, vo);
}
/**
* 转赠订单
*
* @param uid
*/
public KylinOrderTicketVo getTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
Object obj = redisUtil.get(redisKey);
if (obj != null) {
return (KylinOrderTicketVo) obj;
} else {
return null;
}
}
/**
* 转赠订单
*
* @param uid
*/
public void delTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
redisUtil.del(redisKey);
}
/**
* 转赠订单
*
* @param uid
*/
public boolean hasTransferOrder(String uid) {
String redisKey = KylinRedisConst.ORDER_TRANSFER.concat(uid);
return redisUtil.hasKey(redisKey);
}
/**
* 获取普通剩余库存
*
......@@ -95,6 +142,11 @@ public class DataUtils {
}
}
public void setOrderTicketVo(String orderId, KylinOrderTicketVo vo) {
String redisKey = KylinRedisConst.ORDER + orderId;
redisUtil.set(redisKey, vo);
}
/**
* 删除订单redis
*
......
......@@ -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_tickets 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_tickets SET transfer_uid = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
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