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

Commit 93d853b7 authored by anjiabin's avatar anjiabin
parents 11fd30ee 3644e5ee
...@@ -2,6 +2,7 @@ package com.liquidnet.commons.lang.util; ...@@ -2,6 +2,7 @@ package com.liquidnet.commons.lang.util;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.net.SocketException; import java.net.SocketException;
import java.util.Arrays;
import java.util.Enumeration; import java.util.Enumeration;
public class IDGenerator { public class IDGenerator {
...@@ -65,18 +66,35 @@ public class IDGenerator { ...@@ -65,18 +66,35 @@ public class IDGenerator {
return ((timestamp - twepoch) << timestampLeftShift) | (dataCenterId << dataCenterIdShift) | (workerId << workerIdShift) | sequence; return ((timestamp - twepoch) << timestampLeftShift) | (dataCenterId << dataCenterIdShift) | (workerId << workerIdShift) | sequence;
} }
/**
* 根据订单id生成订单号
*
* @param orderTicketId
* @return
*/
public static String ticketOrderCode(String orderTicketId) { public static String ticketOrderCode(String orderTicketId) {
String number = orderTicketId; String number = orderTicketId;
int len = orderTicketId.length(); int len = orderTicketId.length();
String time = System.currentTimeMillis() / 1000 + ""; String time = System.currentTimeMillis() / 1000 + "";
String orderCode = "T" + number.substring(0, len - 4); String orderCode = "T" + number.substring(0, len - 4);
orderCode+=time.substring(7, 8); orderCode += time.substring(7, 8);
orderCode+=number.substring(len - 2); orderCode += number.substring(len - 2);
orderCode+=time.substring(8, 9); orderCode += time.substring(8, 9);
orderCode+=number.substring(len - 4, len-2); orderCode += number.substring(len - 4, len - 2);
return orderCode; return orderCode;
} }
/**
* 根据 订单号生成qrCode
*
* @param orderTicketId
* @return String
*/
public static String ticketQrCode(String orderTicketId) {
String qrCode = MD5Utils.md5(orderTicketId).toLowerCase();
return "QR" + qrCode.substring(5) + "" + qrCode.substring(0, 4);
}
private static long genTime() { private static long genTime() {
return useSystemClock ? SystemClock.now() : System.currentTimeMillis(); return useSystemClock ? SystemClock.now() : System.currentTimeMillis();
} }
......
...@@ -17,6 +17,9 @@ liquidnet: ...@@ -17,6 +17,9 @@ liquidnet:
level-root: info level-root: info
mysql: mysql:
database-name: dev_ln_scene database-name: dev_ln_scene
url-pay:
pay: "http://testpay.zhengzai.tv/"
check: "http://testpay.zhengzai.tv/order/verify"
#以下为spring各环境个性配置 #以下为spring各环境个性配置
spring: spring:
......
...@@ -10,11 +10,11 @@ import java.io.Serializable; ...@@ -10,11 +10,11 @@ import java.io.Serializable;
@Data @Data
public class AdamMemberCodeParam implements Serializable { public class AdamMemberCodeParam implements Serializable {
private static final long serialVersionUID = -7273522103593077617L; private static final long serialVersionUID = -7273522103593077617L;
@ApiModelProperty(position = 1, required = false, value = "会员类型ID") @ApiModelProperty(position = 1, required = true, value = "会员类型ID", example = "67647671736885249")
private String memberId; private String memberId;
@ApiModelProperty(position = 2, required = false, value = "会员价格ID") @ApiModelProperty(position = 2, required = true, value = "会员价格ID", example = "69153548142796800")
private String memberPriceId; private String memberPriceId;
@ApiModelProperty(position = 3, required = true, value = "类型:0-用户购买兑换码,1-后台生成兑换码", example = "0") @ApiModelProperty(position = 3, required = true, value = "类型:0-用户购买兑换码,1-后台生成兑换码", example = "1")
private Integer type; private Integer type;
@ApiModelProperty(position = 4, required = false, value = "用户ID", example = "1") @ApiModelProperty(position = 4, required = false, value = "用户ID", example = "1")
private String buyUid; private String buyUid;
......
...@@ -5,18 +5,17 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,18 +5,17 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel(value = "AdamMemberOrderCodeParam", description = "使用兑换码") @ApiModel(value = "AdamMemberOrderCodeParam", description = "使用兑换码")
@Data @Data
public class AdamMemberOrderCodeParam implements Serializable { public class AdamMemberOrderCodeParam implements Serializable {
private static final long serialVersionUID = 1298109732452201034L; private static final long serialVersionUID = 1298109732452201034L;
@ApiModelProperty(position = 10, required = true, value = "类型:2-会员码,3-礼包码", example = "2") @ApiModelProperty(position = 10, required = true, value = "类型:2-会员码,3-礼包码", example = "3")
private Integer type; private Integer type;
@ApiModelProperty(position = 11, required = true, value = "兑换码", example = "0") @ApiModelProperty(position = 11, required = true, value = "兑换码", example = "0")
private String memberCode; private String memberCode;
@ApiModelProperty(position = 12, required = true, value = "生日", example = "0") @ApiModelProperty(position = 12, required = true, value = "生日", example = "2021-05-27")
private LocalDateTime birthday; private String birthday;
@ApiModelProperty(position = 13, required = false, value = "姓名") @ApiModelProperty(position = 13, required = false, value = "姓名")
private String name; private String name;
@ApiModelProperty(position = 14, required = false, value = "身份证件号") @ApiModelProperty(position = 14, required = false, value = "身份证件号")
......
...@@ -14,7 +14,7 @@ public class AdamMemberOrderParam implements Serializable { ...@@ -14,7 +14,7 @@ public class AdamMemberOrderParam implements Serializable {
private static final long serialVersionUID = 3219448286221952517L; private static final long serialVersionUID = 3219448286221952517L;
@ApiModelProperty(position = 10, required = true, value = "会员ID[50]", example = "62960077673504768") @ApiModelProperty(position = 10, required = true, value = "会员ID[50]", example = "62960077673504768")
private String memberId; private String memberId;
@ApiModelProperty(position = 11, required = true, value = "购买方式:0-购买会员,1-购买会员码,2-使用会员码", example = "0") @ApiModelProperty(position = 11, required = true, value = "购买方式:0-购买会员,1-购买会员码", example = "0")
private Integer mode; private Integer mode;
@ApiModelProperty(position = 12, required = true, value = "应付金额", example = "0") @ApiModelProperty(position = 12, required = true, value = "应付金额", example = "0")
private BigDecimal price; private BigDecimal price;
...@@ -23,7 +23,7 @@ public class AdamMemberOrderParam implements Serializable { ...@@ -23,7 +23,7 @@ public class AdamMemberOrderParam implements Serializable {
@ApiModelProperty(position = 14, required = true, value = "会员价格ID", example = "0") @ApiModelProperty(position = 14, required = true, value = "会员价格ID", example = "0")
private String memberPriceId; private String memberPriceId;
@ApiModelProperty(position = 15, required = true, value = "用户生日", example = "0") @ApiModelProperty(position = 15, required = true, value = "用户生日", example = "0")
private LocalDateTime birthday; private String birthday;
@ApiModelProperty(position = 16, required = true, value = "支付方式:ALIPAY,WEPAY,WAPALIPAY,WAPWEPAY,JSWEPAY,APPLETWEPAY,APPIAP") @ApiModelProperty(position = 16, required = true, value = "支付方式:ALIPAY,WEPAY,WAPALIPAY,WAPWEPAY,JSWEPAY,APPLETWEPAY,APPIAP")
private String payChannel; private String payChannel;
@ApiModelProperty(position = 17, required = true, value = "支付用的AuthCode") @ApiModelProperty(position = 17, required = true, value = "支付用的AuthCode")
......
...@@ -14,58 +14,30 @@ import java.io.Serializable; ...@@ -14,58 +14,30 @@ import java.io.Serializable;
@Data @Data
public class AdamMemberCodeVo implements Serializable, Cloneable { public class AdamMemberCodeVo implements Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L; private static final long serialVersionUID = 5258094625450569125L;
@ApiModelProperty(position = 0, value = "会员码") @ApiModelProperty(position = 0, value = "会员码")
private String code; private String code;
@ApiModelProperty(position = 1, value = "会员类型id") @ApiModelProperty(position = 1, value = "会员类型id")
private String memberId; private String memberId;
@ApiModelProperty(position = 2, value = "会员价格id") @ApiModelProperty(position = 2, value = "会员价格id")
private String memberPriceId; private String memberPriceId;
@ApiModelProperty(position = 3, value = "会员码类型0购买1后台生成") @ApiModelProperty(position = 3, value = "会员码类型0购买1后台生成")
private String type; private String type;
@ApiModelProperty(position = 4, value = "会员编号") @ApiModelProperty(position = 4, value = "会员编号")
private String memberNo; private String memberNo;
@ApiModelProperty(position = 5, value = "会员状态0-未使用 1-已使用 2-不可用") @ApiModelProperty(position = 5, value = "会员状态0-未使用 1-已使用 2-不可用")
private Integer state; private Integer state;
/**
* 购买会员码订单号
*/
@ApiModelProperty(position = 6, value = "购买会员码的订单编号") @ApiModelProperty(position = 6, value = "购买会员码的订单编号")
private String buyOrderNo; private String buyOrderNo;
/**
* 购买会员码的用户id
*/
@ApiModelProperty(position = 7, value = "购买会员码的用户id") @ApiModelProperty(position = 7, value = "购买会员码的用户id")
private String buyUid; private String buyUid;
/**
* 购买时间
*/
@ApiModelProperty(position = 8, value = "购买时间") @ApiModelProperty(position = 8, value = "购买时间")
private String buyAt; private String buyAt;
/**
* 使用会员码的订单号
*/
@ApiModelProperty(position = 9, value = "使用会员码的订单编号") @ApiModelProperty(position = 9, value = "使用会员码的订单编号")
private String useOrderNo; private String useOrderNo;
/**
* 使用会员码的用户ID
*/
@ApiModelProperty(position = 10, value = "使用会员码的用户id") @ApiModelProperty(position = 10, value = "使用会员码的用户id")
private String useUid; private String useUid;
/**
* 使用时间
*/
@ApiModelProperty(position = 11, value = "使用时间") @ApiModelProperty(position = 11, value = "使用时间")
private String useAt; private String useAt;
/**
* 会员码id
*/
@ApiModelProperty(position = 12, value = "会员码id") @ApiModelProperty(position = 12, value = "会员码id")
private String memberCodeId; private String memberCodeId;
...@@ -82,26 +54,4 @@ public class AdamMemberCodeVo implements Serializable, Cloneable { ...@@ -82,26 +54,4 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
} }
return new AdamMemberCodeVo(); return new AdamMemberCodeVo();
} }
/**
* 整合数据,适合插入数据库的数据(购买码)
* @param param
* @param state 0-购买 1-生成
* @return
*/
@JsonIgnore
public AdamMemberCode setCodeParam(AdamMemberCodeParam param, int state) {
int type = 0;
String memberNo = "";
String code = MemberUtil.getMemberCode(type);
AdamMemberCode adamMemberCode = new AdamMemberCode();
adamMemberCode.setType(type);
adamMemberCode.setCode(code);
adamMemberCode.setMemberId(param.getMemberId());
adamMemberCode.setMemberPriceId(param.getMemberPriceId());
adamMemberCode.setState(state);
adamMemberCode.setMemberNo(memberNo);
return adamMemberCode;
}
} }
...@@ -17,7 +17,9 @@ public class AdamMemberOrderPreviewVo implements Serializable { ...@@ -17,7 +17,9 @@ public class AdamMemberOrderPreviewVo implements Serializable {
@ApiModelProperty(position = 12, value = "价格详情") @ApiModelProperty(position = 12, value = "价格详情")
private AdamMemberPriceVo priceVo; private AdamMemberPriceVo priceVo;
@ApiModelProperty(position = 13, value = "是否实名[true-是]") @ApiModelProperty(position = 13, value = "是否实名[true-是]")
private Boolean realNamed; private AdamRealInfoVo realInfoVo;
@ApiModelProperty(position = 14, value = "生日")
private String birthday;
private static final AdamMemberOrderPreviewVo obj = new AdamMemberOrderPreviewVo(); private static final AdamMemberOrderPreviewVo obj = new AdamMemberOrderPreviewVo();
......
...@@ -13,5 +13,5 @@ public interface IAdamMemberCodeAdminService extends IService<AdamMemberCode> { ...@@ -13,5 +13,5 @@ public interface IAdamMemberCodeAdminService extends IService<AdamMemberCode> {
* 创建礼包码 * 创建礼包码
* @param param * @param param
*/ */
void createGiftCode(AdamMemberCodeParam param); String createGiftCode(AdamMemberCodeParam param);
} }
...@@ -19,7 +19,15 @@ public class MemberUtil { ...@@ -19,7 +19,15 @@ public class MemberUtil {
return false; return false;
} }
public static String getMemberCode(Integer type) { public static String buyCode() {
return genMemberCode(0);
}
public static String freeCode() {
return genMemberCode(1);
}
public static String genMemberCode(Integer type) {
String code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random rand = new Random(); Random rand = new Random();
String word = String.valueOf(code.charAt(rand.nextInt(code.length()))); String word = String.valueOf(code.charAt(rand.nextInt(code.length())));
......
...@@ -17,19 +17,12 @@ public class AdamRedisConst { ...@@ -17,19 +17,12 @@ public class AdamRedisConst {
public static final String INFO_ADDRESSES = ADAM.concat(":list:addresses:"); public static final String INFO_ADDRESSES = ADAM.concat(":list:addresses:");
public static final String INFO_MEMBERS = ADAM.concat(":list:members"); public static final String INFO_MEMBERS = ADAM.concat(":list:members");
public static final String INFO_MEMBERS_INFO = ADAM.concat(":list:members:info:"); public static final String INFO_MEMBERS_INFO = ADAM.concat(":list:members:info:");
public static final String INFO_MEMBERS_PRICE_INFO = ADAM.concat(":list:members:price:info:"); public static final String INFO_MEMBERS_PRICE_INFO = ADAM.concat(":list:members:price:info:");
public static final String INFO_MEMBERS_CODE_INFO = ADAM.concat(":list:members:code:info:"); public static final String INFO_MEMBERS_CODE_INFO = ADAM.concat(":list:members:code:info:");
public static final String MEMBER_MEMBER_NO_MAX_KEY = ADAM.concat(":members:member_no_max:"); public static final String MEMBER_MEMBER_NO_MAX_KEY = ADAM.concat(":members:member_no_max:");
public static final String INFO_MEMBERS_USER = ADAM.concat(":list:members:user"); public static final String INFO_MEMBERS_USER = ADAM.concat(":list:members:user");
public static final String INFO_MEMBERS_REPERTORY_INFO = ADAM.concat(":list:members:repertory:"); public static final String INFO_MEMBERS_REPERTORY_INFO = ADAM.concat(":list:members:repertory:");
public static final String INFO_MEMBERS_ORDER_INFO = ADAM.concat(":list:members:order:"); public static final String INFO_MEMBERS_ORDER_INFO = ADAM.concat(":list:members:order:");
// public static final String USER_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:"; // public static final String USER_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:";
......
...@@ -11,6 +11,7 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderResult; ...@@ -11,6 +11,7 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderPreviewVo; import com.liquidnet.service.adam.dto.vo.AdamMemberOrderPreviewVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo; import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo; import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamMemberOrder; import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.service.IAdamMemberOrderService; import com.liquidnet.service.adam.service.IAdamMemberOrderService;
import com.liquidnet.service.adam.service.IAdamRealNameService; import com.liquidnet.service.adam.service.IAdamRealNameService;
...@@ -50,8 +51,12 @@ public class AdamMemberOrderController { ...@@ -50,8 +51,12 @@ public class AdamMemberOrderController {
AdamMemberOrderPreviewVo previewVo = AdamMemberOrderPreviewVo.getNew(); AdamMemberOrderPreviewVo previewVo = AdamMemberOrderPreviewVo.getNew();
previewVo.setMemberId(mno); previewVo.setMemberId(mno);
previewVo.setMemberTitle("摩登天空会员"); previewVo.setMemberTitle("摩登天空会员");
previewVo.setRealNamed(null != adamRealNameService.queryByUid(CurrentUtil.getCurrentUid())); AdamRealInfoVo realInfoVo = adamRealNameService.queryByUid(CurrentUtil.getCurrentUid());
previewVo.setRealInfoVo(realInfoVo);
previewVo.setPriceVo(adamMemberPriceService.query(mno, id)); previewVo.setPriceVo(adamMemberPriceService.query(mno, id));
AdamUserInfoVo userInfoVo = adamUserService.queryByUid(CurrentUtil.getCurrentUid());
previewVo.setBirthday(null == userInfoVo ? null : userInfoVo.getBirthday());
return ResponseDto.success(previewVo); return ResponseDto.success(previewVo);
} }
......
...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.controller.admin; ...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.controller.admin;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.service.admin.IAdamMemberCodeAdminService;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamMemberParam; import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.entity.AdamMember; import com.liquidnet.service.adam.entity.AdamMember;
...@@ -10,7 +12,6 @@ import com.liquidnet.service.adam.service.admin.IAdamMemberAdminService; ...@@ -10,7 +12,6 @@ import com.liquidnet.service.adam.service.admin.IAdamMemberAdminService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -21,12 +22,10 @@ import org.springframework.web.bind.annotation.*; ...@@ -21,12 +22,10 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@RequestMapping("/admin/member") @RequestMapping("/admin/member")
public class AdamMemberAdminController { public class AdamMemberAdminController {
@Autowired @Autowired
IAdamMemberAdminService adamMemberService; IAdamMemberAdminService adamMemberService;
@Autowired @Autowired
AmqpTemplate amqpTemplate; IAdamMemberCodeAdminService adamMemberCodeAdminService;
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@ApiOperation(value = "添加会员") @ApiOperation(value = "添加会员")
...@@ -43,4 +42,11 @@ public class AdamMemberAdminController { ...@@ -43,4 +42,11 @@ public class AdamMemberAdminController {
return ResponseDto.success(); return ResponseDto.success();
} }
@ApiOperationSupport(order = 1)
@ApiOperation(value = "生成兑换码")
@PostMapping("gen_code")
public ResponseDto<Object> genMemberCode(@RequestBody AdamMemberCodeParam parameter) {
return ResponseDto.success(adamMemberCodeAdminService.createGiftCode(parameter));
}
} }
...@@ -9,6 +9,7 @@ import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo; ...@@ -9,6 +9,7 @@ import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo;
import com.liquidnet.service.adam.entity.AdamMemberCode; import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper; import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper;
import com.liquidnet.service.adam.service.IAdamMemberCodeService; import com.liquidnet.service.adam.service.IAdamMemberCodeService;
import com.liquidnet.service.adam.util.MemberUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -38,7 +39,15 @@ public class AdamMemberCodeServiceImpl extends ServiceImpl<AdamMemberCodeMapper, ...@@ -38,7 +39,15 @@ public class AdamMemberCodeServiceImpl extends ServiceImpl<AdamMemberCodeMapper,
@Override @Override
public void add(AdamMemberCodeParam param) { public void add(AdamMemberCodeParam param) {
AdamMemberCode adamMemberCode = (new AdamMemberCodeVo()).setCodeParam(param, 1);
AdamMemberCode adamMemberCode = new AdamMemberCode();
adamMemberCode.setType(param.getType());
adamMemberCode.setCode(MemberUtil.buyCode());
adamMemberCode.setMemberId(param.getMemberId());
adamMemberCode.setMemberPriceId(param.getMemberPriceId());
adamMemberCode.setState(1);// 1-生成
// mysql // mysql
adamMemberCodeMapper.insert(adamMemberCode); adamMemberCodeMapper.insert(adamMemberCode);
......
...@@ -136,7 +136,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -136,7 +136,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
String orderNo = IDGenerator.nextSnowId().toString().concat("V"); String orderNo = IDGenerator.nextSnowId().toString().concat("V");
orderVo.setOrderNo(orderNo); orderVo.setOrderNo(orderNo);
orderVo.setMemberId(memberId); orderVo.setMemberId(memberId);
orderVo.setBirthday(DateUtil.format(param.getBirthday(), DateUtil.Formatter.yyyyMMddHHmmss)); orderVo.setBirthday(param.getBirthday());
orderVo.setDays(memberPrice.getDays()); orderVo.setDays(memberPrice.getDays());
orderVo.setMemberPriceId(memberPriceId); orderVo.setMemberPriceId(memberPriceId);
orderVo.setCreatedAt(createdAt); orderVo.setCreatedAt(createdAt);
...@@ -212,8 +212,8 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -212,8 +212,8 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
if (null != userMemberVo) { if (null != userMemberVo) {
return false; return false;
} }
AdamMemberCodeVo memberCodeVo = mongoTemplate.findOne(Query.query(Criteria.where("memberCode").is(code)), AdamMemberCodeVo.class, AdamMemberCodeVo.class.getSimpleName()); AdamMemberCodeVo memberCodeVo = mongoTemplate.findOne(Query.query(Criteria.where("code").is(code)), AdamMemberCodeVo.class, AdamMemberCodeVo.class.getSimpleName());
if (memberCodeVo.getState() != AdamMemberConst.STATUS_UNPAID) { if (!memberCodeVo.getState().equals(AdamMemberConst.STATUS_UNPAID)) {
return false; return false;
} }
...@@ -239,7 +239,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -239,7 +239,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo.setState(AdamMemberConst.STATUS_UNPAID); orderVo.setState(AdamMemberConst.STATUS_UNPAID);
orderVo.setCreatedAt(currentDateTime); orderVo.setCreatedAt(currentDateTime);
orderVo.setDays(priceVo.getDays()); orderVo.setDays(priceVo.getDays());
orderVo.setBirthday(DateUtil.format(param.getBirthday(), DateUtil.Formatter.yyyyMMddHHmmss)); orderVo.setBirthday(param.getBirthday());
orderVo.setPayNo(memberCodeVo.getCode()); orderVo.setPayNo(memberCodeVo.getCode());
orderVo.setPrice(BigDecimal.valueOf(0)); orderVo.setPrice(BigDecimal.valueOf(0));
...@@ -370,7 +370,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -370,7 +370,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
createMemberUser.setExpiryAt(expiryAtStr); createMemberUser.setExpiryAt(expiryAtStr);
// todo vip card code 记录 自动创建并使用 // todo vip card code 记录 自动创建并使用
codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), 0, currentDateTime); codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), currentDateTime);
codeVo.setState(1); codeVo.setState(1);
codeVo.setUseUid(orderVo.getUid()); codeVo.setUseUid(orderVo.getUid());
codeVo.setUseOrderNo(orderVo.getMemberCode()); codeVo.setUseOrderNo(orderVo.getMemberCode());
...@@ -410,7 +410,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -410,7 +410,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
} }
if (AdamMemberConst.SUB_TYPE_BUY_VIP_CODE.equals(orderVo.getMode())) { // 购买会员码 if (AdamMemberConst.SUB_TYPE_BUY_VIP_CODE.equals(orderVo.getMode())) { // 购买会员码
cardNumber = adamUserMemberService.getMaxMemberNo(orderVo.getMemberId()); cardNumber = adamUserMemberService.getMaxMemberNo(orderVo.getMemberId());
codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), 0, currentDateTime); codeVo = this.getAdamMemberCodeVo(orderVo, result.getCode(), currentDateTime);
codeVo.setState(0); codeVo.setState(0);
codeVo.setMemberNo(cardNumber); codeVo.setMemberNo(cardNumber);
...@@ -458,11 +458,10 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -458,11 +458,10 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
* *
* @param orderVo 会员订单 * @param orderVo 会员订单
* @param orderCode 订单号 * @param orderCode 订单号
* @param type 会员码类型
* @param currentDateTime 创建时间 * @param currentDateTime 创建时间
* @return AdamMemberCodeVo * @return AdamMemberCodeVo
*/ */
private AdamMemberCodeVo getAdamMemberCodeVo(AdamMemberOrderVo orderVo, String orderCode, int type, String currentDateTime) { private AdamMemberCodeVo getAdamMemberCodeVo(AdamMemberOrderVo orderVo, String orderCode, String currentDateTime) {
AdamMemberCodeVo codeVo = new AdamMemberCodeVo(); AdamMemberCodeVo codeVo = new AdamMemberCodeVo();
codeVo.setMemberId(orderVo.getMemberId()); codeVo.setMemberId(orderVo.getMemberId());
codeVo.setMemberPriceId(orderVo.getMemberPriceId()); codeVo.setMemberPriceId(orderVo.getMemberPriceId());
...@@ -470,7 +469,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -470,7 +469,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
codeVo.setBuyOrderNo(orderCode); codeVo.setBuyOrderNo(orderCode);
codeVo.setType(AdamMemberConst.TYPE_BUY); codeVo.setType(AdamMemberConst.TYPE_BUY);
codeVo.setMemberNo(orderVo.getMemberNo()); codeVo.setMemberNo(orderVo.getMemberNo());
codeVo.setCode(MemberUtil.getMemberCode(type)); codeVo.setCode(MemberUtil.buyCode());
codeVo.setCreatedAt(currentDateTime); codeVo.setCreatedAt(currentDateTime);
codeVo.setUpdatedAt(currentDateTime); codeVo.setUpdatedAt(currentDateTime);
return codeVo; return codeVo;
......
...@@ -3,12 +3,12 @@ package com.liquidnet.service.adam.service.impl.admin; ...@@ -3,12 +3,12 @@ package com.liquidnet.service.adam.service.impl.admin;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam; import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo; import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo;
import com.liquidnet.service.adam.entity.AdamMemberCode; import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper; import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper;
import com.liquidnet.service.adam.service.admin.IAdamMemberCodeAdminService; import com.liquidnet.service.adam.service.admin.IAdamMemberCodeAdminService;
import com.liquidnet.service.adam.util.MemberUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -17,10 +17,6 @@ import org.springframework.data.mongodb.core.MongoTemplate; ...@@ -17,10 +17,6 @@ import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@Slf4j @Slf4j
@Service @Service
public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService { public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService {
...@@ -37,9 +33,15 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -37,9 +33,15 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
RedisUtil redisUtil; RedisUtil redisUtil;
@Override @Override
public void createGiftCode(AdamMemberCodeParam param) { public String createGiftCode(AdamMemberCodeParam param) {
// 需要主动生成会员编号 // 需要主动生成会员编号
AdamMemberCode adamMemberCode = (new AdamMemberCodeVo()).setCodeParam(param, 0); AdamMemberCode adamMemberCode = new AdamMemberCode();
adamMemberCode.setType(param.getType());
adamMemberCode.setCode(MemberUtil.buyCode());
adamMemberCode.setMemberId(param.getMemberId());
adamMemberCode.setMemberPriceId(param.getMemberPriceId());
adamMemberCode.setState(0);
adamMemberCodeMapper.insert(adamMemberCode); adamMemberCodeMapper.insert(adamMemberCode);
// mongo // mongo
...@@ -48,5 +50,7 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -48,5 +50,7 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
vo.setCreatedAt(DateUtil.format(adamMemberCode.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss)); vo.setCreatedAt(DateUtil.format(adamMemberCode.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
vo.setUpdatedAt(DateUtil.format(adamMemberCode.getUpdatedAt(), DateUtil.Formatter.yyyyMMddHHmmss)); vo.setUpdatedAt(DateUtil.format(adamMemberCode.getUpdatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
mongoTemplate.insert(vo, AdamMemberCodeVo.class.getSimpleName()); mongoTemplate.insert(vo, AdamMemberCodeVo.class.getSimpleName());
return adamMemberCode.getCode();
} }
} }
package com.liquidnet.service.kylin.constant; package com.liquidnet.service.kylin.constant;
public class KylinRedisConst { public class KylinRedisConst {
public static final String FIELDS = "kylin:fields:id"; public static final String FIELDS = "kylin:fields:id:";
public static final String PERFORMANCES = "kylin:performances:info"; public static final String PERFORMANCES = "kylin:performances:id:";
public static final String PERFORMANCES_RECOMMEND = "kylin:performances:recommend"; public static final String PERFORMANCES_RECOMMEND = "kylin:performances:recommend:id:";
public static final String PERFORMANCES_INVENTORY = "kylin:performances_inventory:ticket:"; public static final String PERFORMANCES_INVENTORY = "kylin:performances_inventory:ticket:id:";
public static final String SURPLUS_GENERAL = "surplusGeneral"; public static final String SURPLUS_GENERAL = "surplusGeneral";
public static final String SURPLUS_EXCHANGE = "surplusExchange"; public static final String SURPLUS_EXCHANGE = "surplusExchange";
public static final String TICKET = "kylin:ticket:info"; public static final String TICKET = "kylin:ticket:id:";
public static final String TIMES = "kylin:times:id"; public static final String ORDER = "kylin:order:id:";
public static final String BANNERS = "kylin:banners"; public static final String ORDER_ENTITIES = "kylin:order_entities:id:";
public static final String TIMES = "kylin:times:id:";
public static final String BANNERS = "kylin:banners:id:";
public static final String AGENT = "kylin:agent:info";
public static final String CHECK_USER = "kylin:checkUser"; public static final String CHECK_USER = "kylin:checkUser:id:";
public static final String CHECK_USER_RELATION = "kylin:checkUser:relation"; public static final String CHECK_USER_RELATION = "kylin:checkUser:relation:id:";
} }
...@@ -32,4 +32,19 @@ public class KylinTableStatusConst { ...@@ -32,4 +32,19 @@ public class KylinTableStatusConst {
public static final Integer ORDER_REFUND_TYPE_APPLY = 0; // 人工申请类型的退款,可以取消退款,退款完成需返还库存 public static final Integer ORDER_REFUND_TYPE_APPLY = 0; // 人工申请类型的退款,可以取消退款,退款完成需返还库存
public static final Integer ORDER_REFUND_TYPE_AUTO = 1; // 自动申请类型的退款,无法取消退款,退款完成不返还库存 public static final Integer ORDER_REFUND_TYPE_AUTO = 1; // 自动申请类型的退款,无法取消退款,退款完成不返还库存
// 订单状态
public static final Integer STATUS_UNPAID = 0; // 待付款
public static final Integer STATUS_PAID = 1; // 已付款
public static final Integer STATUS_CLOSE = 2; // 已关闭
public static final Integer STATUS_DELETE = -1; // 关闭后用户主动删除
public static final Integer STATUS_REFUND = 3; // 正在退款
public static final Integer STATUS_REFUNDED = 4; // 已退款
public static final Integer STATUS_WAIT_CLOSE = 5; // 待关闭
// 订单转赠状态
public static final Integer TRANSFER_STATUS_NONE = 0; // 无
public static final Integer TRANSFER_STATUS_ACCEPT = 1; // 接受
public static final Integer TRANSFER_STATUS_GRANT = 2; // 赠予
} }
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class PayAgainParam {
@ApiModelProperty(value = "订单id")
@NotNull(message = "必传")
private String orderId;
@ApiModelProperty(value = "支付类型")
@NotNull(message = "必传")
private String payType;
@ApiModelProperty(value = "支付来源")
@NotNull(message = "必传")
private String deviceFrom;
@ApiModelProperty(value = "openId")
private String openId;
}
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
public class SyncOrderParam {
@ApiModelProperty(value = "status")
private Integer status;
@ApiModelProperty(value = "type")
private String type;
@ApiModelProperty(value = "code")
private String code;
@ApiModelProperty(value = "payment_id")
private String payment_id;
@ApiModelProperty(value = "order_code")
private String order_code;
@ApiModelProperty(value = "price")
private BigDecimal price;
@ApiModelProperty(value = "payment_type")
private String payment_type;
}
package com.liquidnet.service.kylin.dto.vo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class KylinOrderListVo implements Serializable {
private static final long serialVersionUID = 6554829077875538374L;
private String orderTicketsId;
private String performanceTitle;
private String performanceImg;
private String timeStart;
private String ticketTitle;
private String useStart;
private String overdueAt;
private int canBuyTime;
private BigDecimal priceActual;
private Integer number;
private Integer status;
private String createdAt;
}
...@@ -22,4 +22,9 @@ public class KylinOrderTicketEntitiesVo implements Serializable { ...@@ -22,4 +22,9 @@ public class KylinOrderTicketEntitiesVo implements Serializable {
private Integer sysDamai; private Integer sysDamai;
private String checkClient; private String checkClient;
private Integer isPayment; private Integer isPayment;
private String performanceTitle;
private String ticketTitle;
private String useStart;
private String useEnd;
} }
...@@ -25,6 +25,10 @@ public class KylinOrderTicketVo implements Serializable { ...@@ -25,6 +25,10 @@ public class KylinOrderTicketVo implements Serializable {
private String userMobile; private String userMobile;
@ApiModelProperty(position = 14, value = "演出名称") @ApiModelProperty(position = 14, value = "演出名称")
private String performanceTitle; private String performanceTitle;
private String ticketTitle;
private String timeStart;
private String useStart;
private String performanceImg;
@ApiModelProperty(position = 15, value = "订单号") @ApiModelProperty(position = 15, value = "订单号")
private String orderCode; private String orderCode;
@ApiModelProperty(position = 16, value = "支付单号") @ApiModelProperty(position = 16, value = "支付单号")
...@@ -88,6 +92,10 @@ public class KylinOrderTicketVo implements Serializable { ...@@ -88,6 +92,10 @@ public class KylinOrderTicketVo implements Serializable {
private String agentId; private String agentId;
private Integer isMember; private Integer isMember;
private String overdueAt;
private String createdAt;
private String updatedAt;
public void setOrderTicket(KylinOrderTickets orderTicket) { public void setOrderTicket(KylinOrderTickets orderTicket) {
BeanUtils.copyProperties(orderTicket,this); BeanUtils.copyProperties(orderTicket,this);
} }
......
...@@ -14,6 +14,8 @@ public class PayResultVo implements Serializable { ...@@ -14,6 +14,8 @@ public class PayResultVo implements Serializable {
private String order_code; private String order_code;
private Integer status;
private String order_id; private String order_id;
private BigDecimal price; private BigDecimal price;
......
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.entity.ExpressBatches;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface IExpressBatchesService extends IService<ExpressBatches> {
}
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.entity.ExpressLogs;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface IExpressLogsService extends IService<ExpressLogs> {
}
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.entity.ExpressTimelines;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 快递时间线表 服务类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface IExpressTimelinesService extends IService<ExpressTimelines> {
}
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.entity.Expresses;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 快递表 服务类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface IExpressesService extends IService<Expresses> {
// void courierList();
// void observer();
// void observerResult();
// void addExpress();
// void editExpress();
// void getExpressCompany();
// void getExpressCompanyEn();
// void innerAddExpress();
// void expressObserveUnSuccess();
// void expressBatchImport();
// void expressImport();
// void expressEdit();
// void expressEditLog();
}
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 订单退款表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-05-26
*/
public interface IKylinOrderRefundsService extends IService<KylinOrderRefunds> {
}
package com.liquidnet.service.kylin.service; package com.liquidnet.service.kylin.service;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.PayAgainParam;
import com.liquidnet.service.kylin.dto.param.PayOrderParam; import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.PayResultVo; import com.liquidnet.service.kylin.dto.vo.PayResultVo;
...@@ -21,24 +25,28 @@ import java.util.List; ...@@ -21,24 +25,28 @@ import java.util.List;
public interface IKylinOrderTicketsService extends IService<KylinOrderTickets> { public interface IKylinOrderTicketsService extends IService<KylinOrderTickets> {
// 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付) // 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付)
ResponseDto<PayResultVo>checkCanOrder(PayOrderParam payOrderParam); ResponseDto<PayResultVo> checkCanOrder(PayOrderParam payOrderParam);
// 下单接口(无订单->待支付->可支付)
ResponseDto<PayResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData);
// 再次支付(待支付->可支付->倒计时结束释放库存) // 再次支付(待支付->可支付->倒计时结束释放库存)
ResponseDto<PayResultVo> payAgain(PayAgainParam payAgainParam);
// 取消支付(待支付->订单失效->释放库存->中断倒计时)
// 支付回调(待支付->已支付->中断倒计时) // 支付回调(待支付->已支付->中断倒计时)
String syncOrder(SyncOrderParam syncOrderParam);
// 同步大麦数据接口 // 同步大麦数据接口
// 代理票务 可买状态判断
//订单列表(状态 待支付 已支付 倒计时 已失效) //订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderList(int page,int size);
//订单详情 //订单详情
//TASK 倒计时 //TASK 倒计时
boolean checkOrderTime(String userId);
// 下单接口(无订单->待支付->可支付)
// 删除订单
// 代理票务 可买状态判断
// 取消支付(待支付->订单失效->释放库存->中断倒计时)
// ResponseDto<PayResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData,Object adamEntersList);
} }
...@@ -101,7 +101,8 @@ public class MybatisPlusCodeGenerator { ...@@ -101,7 +101,8 @@ public class MybatisPlusCodeGenerator {
// String[] dbTableArray = new String[]{"kylin_road_shows"}; // String[] dbTableArray = new String[]{"kylin_road_shows"};
// String[] dbTableArray = new String[]{"kylin_buy_notice"}; // String[] dbTableArray = new String[]{"kylin_buy_notice"};
// String[] dbTableArray = new String[]{"kylin_order_tickets","kylin_order_ticket_relations","kylin_order_ticket_status","kylin_order_ticket_entities"}; // String[] dbTableArray = new String[]{"kylin_order_tickets","kylin_order_ticket_relations","kylin_order_ticket_status","kylin_order_ticket_entities"};
String[] dbTableArray = new String[]{"kylin_check_user","kylin_check_user_performances"}; // String[] dbTableArray = new String[]{"kylin_check_user","kylin_check_user_performances"};
String[] dbTableArray = new String[]{"express_batches","express_logs","express_timelines","expresses"};
doGenerator(resourcePath, dsc, directory, dbTableArray); doGenerator(resourcePath, dsc, directory, dbTableArray);
} }
......
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class ExpressBatches implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 管理员
*/
private Integer adminId;
/**
* 订单Id,订阅前查询
*/
private Integer orderId;
/**
* 订单类型 order_product 商品订单 , order_ticket 票务订单, order_integration 积分订单
*/
private String orderType;
/**
* 订单编号
*/
private String orderCode;
/**
* 快递公司名称
*/
private String name;
/**
* 快递公司编号
*/
private String company;
/**
* 快递单号
*/
private String number;
/**
* 状态 0新导入 1订阅成功 2订阅失败
*/
private Integer status;
/**
* 导入时间
*/
private LocalDateTime importTime;
/**
* 导入批次
*/
private Integer batch;
/**
* 失败原因
*/
private String reason;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class ExpressLogs implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 订单id
*/
private Integer orderId;
/**
* 订单类型 order_product 商品订单 , order_ticket 票务订单
*/
private String orderType;
/**
* 修改人id
*/
private Integer adminId;
/**
* 修改人名称
*/
private String adminName;
/**
* 快递联系人
*/
private String name;
/**
* 快递联系电话
*/
private String mobile;
/**
* 快递收货地址
*/
private String address;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 快递时间线表
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class ExpressTimelines implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 快递
*/
private Integer expressId;
/**
* 快递消息
*/
private String context;
/**
* 时间,原始格式
*/
private String time;
/**
* 格式化后时间
*/
private LocalDateTime ftime;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 快递表
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class Expresses implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 管理员
*/
private Integer adminId;
/**
* 订单Id
*/
private Integer orderId;
/**
* 订单编号
*/
private String orderCode;
/**
* 订单类型 order_product 商品订单 , order_ticket 票务订单, order_integration 积分订单
*/
private String orderType;
/**
* 状态 -1待揽收、0在途中、1已揽收、2疑难、3已签收
*/
private Integer status;
/**
* 快递单号
*/
private String number;
/**
* 快递公司名称
*/
private String name;
/**
* 快递公司编号
*/
private String company;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
package com.liquidnet.service.kylin.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 订单退款表
* </p>
*
* @author jiangxiulong
* @since 2021-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinOrderRefunds implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* order_refunds_id
*/
private String orderRefundsId;
/**
* 演出 id
*/
private String performanceId;
/**
* 商户id
*/
private String merchantId;
/**
* 票务订单id
*/
private String orderId;
/**
* 商品订单id
*/
private String matterId;
/**
* 管理员id
*/
private String adminId;
/**
* 管理员名称
*/
private String adminName;
/**
* 退款原因
*/
private String reason;
/**
* 批次从1开始
*/
private Integer batch;
/**
* 下单方式
*/
private String orderType;
/**
* 选择支付方式
*/
private String payType;
/**
* 实际支付方式
*/
private String paymentType;
/**
* 订单入场人/搭售款式表
*/
private String refundTable;
/**
* 票务/商品/快递费
*/
private String refundType;
/**
* 订单入场人/搭售款式表 id
*/
private String refundTableId;
/**
* 演出/商品 id
*/
private String refundTypeParentId;
/**
* 票种/款式 id
*/
private String refundTypeId;
/**
* 2关闭或者取消退款3正在退款,4已退款
*/
private Integer refundStatus;
/**
* 数量
*/
private Integer refundNumber;
/**
* 退款金额 快递费有可能为负,意思是补差价
*/
private BigDecimal refundPrice;
/**
* 使用了兑换券/优惠券/无使用
*/
private String couponType;
/**
* 优惠券id
*/
private String couponId;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
/**
* 退款备注
*/
private String refundRemark;
/**
* 退款单号
*/
private String refundCode;
/**
* 退款表refunds的id
*/
private String refundId;
}
...@@ -123,4 +123,14 @@ public class KylinOrderTicketEntities implements Serializable { ...@@ -123,4 +123,14 @@ public class KylinOrderTicketEntities implements Serializable {
createdAt, updatedAt createdAt, updatedAt
}; };
} }
/**
* 获取 支付回调 数据库参数
* @return
*/
public Object[] getSynOrderObject() {
return new Object[]{
orderId, isPayment, updatedAt
};
}
} }
...@@ -79,4 +79,14 @@ public class KylinOrderTicketStatus implements Serializable { ...@@ -79,4 +79,14 @@ public class KylinOrderTicketStatus implements Serializable {
}; };
} }
/**
* 获取 支付回调 数据库参数
* @return
*/
public Object[] getSynOrderObject() {
return new Object[]{
orderId, status,payStatus, updatedAt
};
}
} }
...@@ -190,6 +190,7 @@ public class KylinOrderTickets implements Serializable { ...@@ -190,6 +190,7 @@ public class KylinOrderTickets implements Serializable {
/** /**
* 获取 添加 数据库参数 * 获取 添加 数据库参数
*
* @return * @return
*/ */
public Object[] getAddObject() { public Object[] getAddObject() {
...@@ -201,4 +202,26 @@ public class KylinOrderTickets implements Serializable { ...@@ -201,4 +202,26 @@ public class KylinOrderTickets implements Serializable {
}; };
} }
/**
* 获取 再次支付 数据库参数
*
* @return
*/
public Object[] getPayAgainObject() {
return new Object[]{
orderTicketsId, orderType, updatedAt, orderCode
};
}
/**
* 获取 支付回调 数据库参数
*
* @return
*/
public Object[] getSynOrderObject() {
return new Object[]{
orderTicketsId, paymentType, payCode, timePay, qrCode, updatedAt
};
}
} }
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.ExpressBatches;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface ExpressBatchesMapper extends BaseMapper<ExpressBatches> {
}
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.ExpressLogs;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface ExpressLogsMapper extends BaseMapper<ExpressLogs> {
}
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.ExpressTimelines;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 快递时间线表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface ExpressTimelinesMapper extends BaseMapper<ExpressTimelines> {
}
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.Expresses;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 快递表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
public interface ExpressesMapper extends BaseMapper<Expresses> {
}
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 订单退款表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-05-26
*/
public interface KylinOrderRefundsMapper extends BaseMapper<KylinOrderRefunds> {
}
<?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.ExpressBatchesMapper">
</mapper>
<?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.ExpressLogsMapper">
</mapper>
<?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.ExpressTimelinesMapper">
</mapper>
<?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.ExpressesMapper">
</mapper>
<?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.KylinOrderRefundsMapper">
</mapper>
...@@ -511,9 +511,6 @@ CREATE TABLE `kylin_order_ticket_entities` ...@@ -511,9 +511,6 @@ CREATE TABLE `kylin_order_ticket_entities`
) ENGINE = InnoDB ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT '订单详情'; DEFAULT CHARSET = utf8mb4 COMMENT '订单详情';
-- 大麦同步记录 TODO 待定
-- 验票相关 TODO 待定
-- 会员权益修改表 TODO 待定
-- 订单退款 <初步> -- 订单退款 <初步>
drop TABLE if exists `kylin_order_tickets_refund`; drop TABLE if exists `kylin_order_tickets_refund`;
CREATE TABLE `kylin_order_tickets_refund` CREATE TABLE `kylin_order_tickets_refund`
...@@ -589,6 +586,77 @@ CREATE TABLE `kylin_check_user_performances` ...@@ -589,6 +586,77 @@ CREATE TABLE `kylin_check_user_performances`
) ENGINE = InnoDB ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT '验票用户可看演出表'; DEFAULT CHARSET = utf8mb4 COMMENT '验票用户可看演出表';
-- 快递相关临时
drop TABLE if exists `express_batches`;
CREATE TABLE `express_batches` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`admin_id` int NOT NULL DEFAULT '0' COMMENT '管理员',
`order_id` int NOT NULL DEFAULT '0' COMMENT '订单Id,订阅前查询',
`order_type` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '订单类型 order_product 商品订单 , order_ticket 票务订单, order_integration 积分订单',
`order_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '订单编号',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递公司名称',
`company` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递公司编号',
`number` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递单号',
`status` tinyint NOT NULL DEFAULT '0' COMMENT '状态 0新导入 1订阅成功 2订阅失败',
`import_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '导入时间',
`batch` int NOT NULL DEFAULT '0' COMMENT '导入批次',
`reason` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '失败原因',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `express_batches_batch_index` (`batch`),
KEY `express_batches_company_index` (`company`),
KEY `express_batches_number_index` (`number`),
KEY `express_batches_order_code_index` (`order_code`),
KEY `express_batches_order_type_index` (`order_type`)
) ENGINE=InnoDB AUTO_INCREMENT=34781 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC;
drop TABLE if exists `express_logs`;
CREATE TABLE `express_logs` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`order_id` int NOT NULL COMMENT '订单id',
`order_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '订单类型 order_product 商品订单 , order_ticket 票务订单',
`admin_id` int NOT NULL DEFAULT '0' COMMENT '修改人id',
`admin_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '修改人名称',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递联系人',
`mobile` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递联系电话',
`address` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递收货地址',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=487 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC;
drop TABLE if exists `express_timelines`;
CREATE TABLE `express_timelines` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`express_id` int NOT NULL DEFAULT '0' COMMENT '快递',
`context` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '快递消息',
`time` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '时间,原始格式',
`ftime` datetime NOT NULL COMMENT '格式化后时间',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2039805 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='快递时间线表';
drop TABLE if exists `expresses`;
CREATE TABLE `expresses` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`admin_id` int NOT NULL DEFAULT '0' COMMENT '管理员',
`order_id` int NOT NULL DEFAULT '0' COMMENT '订单Id',
`order_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '订单编号',
`order_type` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '订单类型 order_product 商品订单 , order_ticket 票务订单, order_integration 积分订单',
`status` tinyint NOT NULL DEFAULT '-1' COMMENT '状态 -1待揽收、0在途中、1已揽收、2疑难、3已签收',
`number` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT '' COMMENT '快递单号',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递公司名称',
`company` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '快递公司编号',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `expresses_number_index` (`number`),
KEY `expresses_order_code_index` (`order_code`),
KEY `expresses_order_id_index` (`order_id`),
KEY `expresses_order_type_index` (`order_type`)
) ENGINE=InnoDB AUTO_INCREMENT=56762 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='快递表';
insert into `kylin_buy_notice` (`buy_notice_id`, `img_url`, `message`, `status`, `sort`, `created_at`, insert into `kylin_buy_notice` (`buy_notice_id`, `img_url`, `message`, `status`, `sort`, `created_at`,
`updated_at`, `title`) `updated_at`, `title`)
values ('1', 'http://img-zhengzai-tv.oss-cn-hangzhou.aliyuncs.com/partner/2019/01/21/5c45722882a13.png', values ('1', 'http://img-zhengzai-tv.oss-cn-hangzhou.aliyuncs.com/partner/2019/01/21/5c45722882a13.png',
...@@ -667,13 +735,13 @@ CREATE TABLE `kylin_refund_batches` ...@@ -667,13 +735,13 @@ CREATE TABLE `kylin_refund_batches`
`remark` varchar(200) NOT NULL DEFAULT '' COMMENT '批量退款备注', `remark` varchar(200) NOT NULL DEFAULT '' COMMENT '批量退款备注',
`reject` varchar(200) NOT NULL DEFAULT '' COMMENT '驳回原因', `reject` varchar(200) NOT NULL DEFAULT '' COMMENT '驳回原因',
`refuse` varchar(200) NOT NULL DEFAULT '' COMMENT '回绝原因', `refuse` varchar(200) NOT NULL DEFAULT '' COMMENT '回绝原因',
`applicant_id` int NOT NULL DEFAULT '0' COMMENT '批量申请人id', `applicant_id` varchar(255) NOT NULL DEFAULT '' COMMENT '批量申请人id',
`applicant_name` varchar(100) NOT NULL DEFAULT '' COMMENT '批量申请人名称', `applicant_name` varchar(100) NOT NULL DEFAULT '' COMMENT '批量申请人名称',
`applicant_at` timestamp NULL DEFAULT NULL COMMENT '批量申请时间', `applicant_at` timestamp NULL DEFAULT NULL COMMENT '批量申请时间',
`auditor_id` int NOT NULL DEFAULT '0' COMMENT '批量审核人id', `auditor_id` varchar(255) NOT NULL DEFAULT '' COMMENT '批量审核人id',
`auditor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '批量审核人名称', `auditor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '批量审核人名称',
`auditor_at` timestamp NULL DEFAULT NULL COMMENT '批量审核时间', `auditor_at` timestamp NULL DEFAULT NULL COMMENT '批量审核时间',
`executor_id` int NOT NULL DEFAULT '0' COMMENT '批量执行人id', `executor_id` varchar(255) NOT NULL DEFAULT '' COMMENT '批量执行人id',
`executor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '批量执行人名称', `executor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '批量执行人名称',
`executor_at` timestamp NULL DEFAULT NULL COMMENT '批量执行时间', `executor_at` timestamp NULL DEFAULT NULL COMMENT '批量执行时间',
`created_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL,
...@@ -710,13 +778,13 @@ CREATE TABLE `kylin_refunds` ...@@ -710,13 +778,13 @@ CREATE TABLE `kylin_refunds`
`refund_at` timestamp NULL DEFAULT NULL COMMENT '成功退款时间', `refund_at` timestamp NULL DEFAULT NULL COMMENT '成功退款时间',
`refund_id` varchar(50) DEFAULT NULL COMMENT '第三方退款编号', `refund_id` varchar(50) DEFAULT NULL COMMENT '第三方退款编号',
`refund_error` varchar(100) DEFAULT NULL COMMENT '退款失败原因', `refund_error` varchar(100) DEFAULT NULL COMMENT '退款失败原因',
`applicant_id` int NOT NULL DEFAULT '0' COMMENT '申请人id', `applicant_id` varchar(255) NOT NULL DEFAULT '' COMMENT '申请人id',
`applicant_name` varchar(100) NOT NULL DEFAULT '' COMMENT '申请人名称', `applicant_name` varchar(100) NOT NULL DEFAULT '' COMMENT '申请人名称',
`applicant_at` timestamp NULL DEFAULT NULL COMMENT '申请时间', `applicant_at` timestamp NULL DEFAULT NULL COMMENT '申请时间',
`auditor_id` int NOT NULL DEFAULT '0' COMMENT '审核人id', `auditor_id` varchar(255) NOT NULL DEFAULT '' COMMENT '审核人id',
`auditor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '审核人名称', `auditor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '审核人名称',
`auditor_at` timestamp NULL DEFAULT NULL COMMENT '审核时间', `auditor_at` timestamp NULL DEFAULT NULL COMMENT '审核时间',
`executor_id` int NOT NULL DEFAULT '0' COMMENT '执行人id', `executor_id` varchar(255) NOT NULL DEFAULT '' COMMENT '执行人id',
`executor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '执行人名称', `executor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '执行人名称',
`executor_at` timestamp NULL DEFAULT NULL COMMENT '执行时间', `executor_at` timestamp NULL DEFAULT NULL COMMENT '执行时间',
`batch_id` varchar(255) NOT NULL DEFAULT '' COMMENT '批量退款id', `batch_id` varchar(255) NOT NULL DEFAULT '' COMMENT '批量退款id',
...@@ -729,4 +797,45 @@ CREATE TABLE `kylin_refunds` ...@@ -729,4 +797,45 @@ CREATE TABLE `kylin_refunds`
KEY `kylin_refunds_order_id_index` (`order_id`) KEY `kylin_refunds_order_id_index` (`order_id`)
) ENGINE = InnoDB ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='退款表' COLLATE = utf8mb4_unicode_ci COMMENT ='退款表';
\ No newline at end of file
# 订单退款表
drop TABLE if exists `kylin_order_refunds`;
CREATE TABLE `kylin_order_refunds`
(
`mid` int unsigned NOT NULL AUTO_INCREMENT,
`order_refunds_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'order_refunds_id',
`performance_id` varchar(255) NOT NULL DEFAULT '' COMMENT '演出 id',
`merchant_id` varchar(255) NOT NULL DEFAULT '' COMMENT '商户id',
`order_id` varchar(255) NOT NULL DEFAULT '' COMMENT '票务订单id',
`matter_id` varchar(255) NOT NULL DEFAULT '' COMMENT '商品订单id',
`admin_id` varchar(255) NOT NULL DEFAULT '' COMMENT '管理员id',
`admin_name` varchar(100) NOT NULL DEFAULT '' COMMENT '管理员名称',
`reason` varchar(200) NOT NULL DEFAULT '' COMMENT '退款原因',
`batch` int NOT NULL DEFAULT '1' COMMENT '批次从1开始',
`order_type` varchar(50) NOT NULL DEFAULT '' COMMENT '下单方式',
`pay_type` enum ('wepay','alipay','no') NOT NULL DEFAULT 'no' COMMENT '选择支付方式',
`payment_type` varchar(50) NOT NULL DEFAULT '' COMMENT '实际支付方式',
`refund_table` enum ('order_ticket_entities','matter_items') NOT NULL DEFAULT 'order_ticket_entities' COMMENT '订单入场人/搭售款式表',
`refund_type` enum ('ticket','product','express') NOT NULL DEFAULT 'ticket' COMMENT '票务/商品/快递费',
`refund_table_id` varchar(255) NOT NULL DEFAULT '' COMMENT '订单入场人/搭售款式表 id',
`refund_type_parent_id` varchar(255) NOT NULL DEFAULT '' COMMENT '演出/商品 id',
`refund_type_id` varchar(255) NOT NULL DEFAULT '' COMMENT '票种/款式 id',
`refund_status` int unsigned NOT NULL DEFAULT '0' COMMENT '2关闭或者取消退款3正在退款,4已退款',
`refund_number` int NOT NULL DEFAULT '0' COMMENT '数量',
`refund_price` decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '退款金额 快递费有可能为负,意思是补差价',
`coupon_type` enum ('exchange','voucher','no') NOT NULL DEFAULT 'no' COMMENT '使用了兑换券/优惠券/无使用',
`coupon_id` varchar(255) NOT NULL DEFAULT '' COMMENT '优惠券id',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`refund_remark` varchar(200) NOT NULL DEFAULT '' COMMENT '退款备注',
`refund_code` varchar(100) NOT NULL DEFAULT '' COMMENT '退款单号',
`refund_id` varchar(255) NOT NULL DEFAULT '' COMMENT '退款表refunds的id',
PRIMARY KEY (`mid`),
KEY `kylin_order_refunds_order_id_index` (`order_id`),
KEY `kylin_order_refunds_refund_type_index` (`refund_type`),
KEY `kylin_order_refunds_refund_status_index` (`refund_status`),
KEY `kylin_order_refunds_id_index` (`order_refunds_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='订单退款表';
\ No newline at end of file
package com.liquidnet.service.kylin.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 快递表 前端控制器
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@RestController
@RequestMapping("/expresses")
public class ExpressesController {
}
package com.liquidnet.service.kylin.controller; package com.liquidnet.service.kylin.controller;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.PayAgainParam;
import com.liquidnet.service.kylin.dto.param.PayOrderParam; import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.PayResultVo; import com.liquidnet.service.kylin.dto.vo.PayResultVo;
import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl; import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -11,6 +15,8 @@ import io.swagger.annotations.ApiResponse; ...@@ -11,6 +15,8 @@ import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* <p> * <p>
* 订单 前端控制器 * 订单 前端控制器
...@@ -34,4 +40,32 @@ public class KylinOrderTicketsController { ...@@ -34,4 +40,32 @@ public class KylinOrderTicketsController {
return orderTicketsService.checkCanOrder(payOrderParam); return orderTicketsService.checkCanOrder(payOrderParam);
} }
@PostMapping("payAgain")
@ApiOperation("再次支付")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PayResultVo> payAgain(@RequestBody PayAgainParam payAgainParam) {
return orderTicketsService.payAgain(payAgainParam);
}
@PostMapping("syncOrder")
@ApiOperation("支付回调")
@ApiResponse(code = 200, message = "接口返回对象参数")
public String payAgain(@RequestBody SyncOrderParam syncOrderParam) {
return orderTicketsService.syncOrder(syncOrderParam);
}
@GetMapping("list")
@ApiOperation("订单列表")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<List<KylinOrderListVo>>> payAgain(@RequestParam("page") int page,
@RequestParam("size") int size) {
return ResponseDto.success(orderTicketsService.orderList(page,size));
}
@GetMapping("checkOrderTime")
@ApiOperation("订单过期脚本")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<Boolean> checkOrderTime() {
return ResponseDto.success(orderTicketsService.checkOrderTime(null));
}
} }
...@@ -171,11 +171,11 @@ public class KylinPerformancesController { ...@@ -171,11 +171,11 @@ public class KylinPerformancesController {
@ApiImplicitParam(type = "path", dataType = "String", name = "performancesId", value = "演出id", required = true), @ApiImplicitParam(type = "path", dataType = "String", name = "performancesId", value = "演出id", required = true),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isAgent", value = "是否分销 1是 0不是 空/不传/0") @ApiImplicitParam(type = "query", dataType = "Integer", name = "isAgent", value = "是否分销 1是 0不是 空/不传/0")
}) })
public ResponseDto<List<KylinTicketTimesVo>> ticketTimesPartner( public ResponseDto<HashMap<String, Object>> ticketTimesPartner(
@PathVariable("performancesId") String performancesId, @PathVariable("performancesId") String performancesId,
@RequestParam(defaultValue = "0") Integer isAgent @RequestParam(defaultValue = "0") Integer isAgent
) { ) {
List<KylinTicketTimesVo> result = kylinPerformancesService.ticketTimesPartner(performancesId, isAgent); HashMap<String, Object> result = kylinPerformancesService.ticketTimesPartner(performancesId, isAgent);
if (result.size() > 0) { if (result.size() > 0) {
return ResponseDto.success(result); return ResponseDto.success(result);
} else { } else {
......
package com.liquidnet.service.kylin.controller.admin; package com.liquidnet.service.kylin.controller.admin;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.BannersParam; import com.liquidnet.service.kylin.service.impl.admin.KylinRefundsServiceImpl;
import com.liquidnet.service.kylin.service.impl.admin.KylinRefundPerformancesAdminServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; 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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -28,18 +28,32 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -28,18 +28,32 @@ import org.springframework.web.bind.annotation.RestController;
public class KylinRefundAdminController { public class KylinRefundAdminController {
@Autowired @Autowired
private KylinRefundPerformancesAdminServiceImpl kylinRefundPerformancesAdminServiceImpl; private KylinRefundsServiceImpl kylinRefundsServiceImpl;
@PostMapping("") @PostMapping("apply")
@ApiOperation("创建banner") @ApiOperation("申请退款")
public ResponseDto<Object> create(@RequestBody @Validated BannersParam bannersParam) { @ApiImplicitParams({
return ResponseDto.success(); @ApiImplicitParam(type = "body", dataType = "String", name = "orderTicketsId", value = "订单id", required = true),
/*Boolean res = kylinRefundAdminServiceImpl.create(bannersParam); @ApiImplicitParam(type = "body", dataType = "String", name = "orderType", value = "订单order_ticket 商品order_product", required = true),
@ApiImplicitParam(type = "body", dataType = "String", name = "reason", value = "备注", required = true),
@ApiImplicitParam(type = "body", dataType = "String", name = "remark", value = "备注"),
@ApiImplicitParam(type = "body", dataType = "Integer", name = "batch_id", value = "批量id"),
@ApiImplicitParam(type = "body", dataType = "String", name = "refundData", value = "退款数据")
})
public ResponseDto<Object> refundApply(
@RequestBody String orderTicketsId,
@RequestBody String orderType,
@RequestBody String reason,
@RequestBody String remark,
@RequestBody Integer batch_id,
@RequestBody String refundData
) throws Exception {
Boolean res = kylinRefundsServiceImpl.refundApply(orderTicketsId, orderType, reason, remark, batch_id, refundData);
if (res) { if (res) {
return ResponseDto.success(); return ResponseDto.success();
} else { } else {
return ResponseDto.failure("添加banner失败"); return ResponseDto.failure("申请退款失败");
}*/ }
} }
} }
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.service.kylin.entity.ExpressBatches;
import com.liquidnet.service.kylin.mapper.ExpressBatchesMapper;
import com.liquidnet.service.kylin.service.IExpressBatchesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Service
public class ExpressBatchesServiceImpl extends ServiceImpl<ExpressBatchesMapper, ExpressBatches> implements IExpressBatchesService {
}
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.service.kylin.entity.ExpressLogs;
import com.liquidnet.service.kylin.mapper.ExpressLogsMapper;
import com.liquidnet.service.kylin.service.IExpressLogsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Service
public class ExpressLogsServiceImpl extends ServiceImpl<ExpressLogsMapper, ExpressLogs> implements IExpressLogsService {
}
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.service.kylin.entity.ExpressTimelines;
import com.liquidnet.service.kylin.mapper.ExpressTimelinesMapper;
import com.liquidnet.service.kylin.service.IExpressTimelinesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 快递时间线表 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Service
public class ExpressTimelinesServiceImpl extends ServiceImpl<ExpressTimelinesMapper, ExpressTimelines> implements IExpressTimelinesService {
}
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.service.kylin.entity.Expresses;
import com.liquidnet.service.kylin.mapper.ExpressesMapper;
import com.liquidnet.service.kylin.service.IExpressesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 快递表 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-05-26
*/
@Service
public class ExpressesServiceImpl extends ServiceImpl<ExpressesMapper, Expresses> implements IExpressesService {
}
package com.liquidnet.service.kylin.service.impl; package com.liquidnet.service.kylin.service.impl;
import com.github.pagehelper.PageInfo;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient; import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.param.PayAgainParam;
import com.liquidnet.service.kylin.dto.param.PayOrderParam; import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.*; import com.liquidnet.service.kylin.dto.vo.*;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper; import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService; import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils; import com.liquidnet.service.kylin.utils.DataUtils;
import com.mongodb.BasicDBObject;
import org.redisson.api.RLock;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
...@@ -38,11 +52,21 @@ import java.util.Map; ...@@ -38,11 +52,21 @@ import java.util.Map;
@Service @Service
public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsMapper, KylinOrderTickets> implements IKylinOrderTicketsService { public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsMapper, KylinOrderTickets> implements IKylinOrderTicketsService {
@Value("${liquidnet.url-pay.pay}")
private String payUrl;
@Value("${liquidnet.url-pay.check}")
private String checkUrl;
@Autowired @Autowired
private DataUtils dataUtils; private DataUtils dataUtils;
@Autowired @Autowired
private RedisUtil redisUtil;
@Autowired
private RedisLockUtil redisLockUtil;
@Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
@Autowired @Autowired
private MongoConverter mongoConverter;
@Autowired
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Autowired @Autowired
private FeignAdamBaseClient feignAdamBaseClient; private FeignAdamBaseClient feignAdamBaseClient;
...@@ -50,29 +74,40 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -50,29 +74,40 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Override @Override
public ResponseDto<PayResultVo> checkCanOrder(PayOrderParam payOrderParam) { public ResponseDto<PayResultVo> checkCanOrder(PayOrderParam payOrderParam) {
boolean isDownGeneral = false; boolean isDownGeneral = false;
try {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
RLock lock = RedisLockUtil.lock("userId:" + uid, 2);
try {
if (lock.isLocked()) {
return ResponseDto.failure("请求频繁");//参数错误
}
KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId()); KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId());
KylinTicketTimesVo ticketTimesData = dataUtils.getTicketTimesVo(payOrderParam.getTimeId()); KylinTicketTimesVo ticketTimesData = dataUtils.getTicketTimesVo(payOrderParam.getTimeId());
KylinTicketVo ticketData = dataUtils.getTicketVo(payOrderParam.getTicketId()); KylinTicketVo ticketData = dataUtils.getTicketVo(payOrderParam.getTicketId());
if (performanceData == null || ticketTimesData == null || ticketData == null) { if (performanceData == null || ticketTimesData == null || ticketData == null) {
lock.unlock();
return ResponseDto.failure("参数错误");//参数错误 return ResponseDto.failure("参数错误");//参数错误
} }
if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) { if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) {
lock.unlock();
return ResponseDto.failure("参数错误");//参数错误List<AdamEntersVo> entersVoList return ResponseDto.failure("参数错误");//参数错误List<AdamEntersVo> entersVoList
} }
//判断代理
if (!checkAgent(payOrderParam.getAgentId(), ticketData)) {
lock.unlock();
return ResponseDto.failure("无权购买");
}
//会员时间获取 //会员时间获取
String memberTimeStart = ticketData.getMemberTimeStart(); // 会员开售时间 String memberTimeStart = ticketData.getMemberTimeStart(); // 会员开售时间
String timeStart = ticketData.getTimeStart(); // 普通开售时间 String timeStart = ticketData.getTimeStart(); // 普通开售时间
String timeEnd = ticketData.getTimeEnd(); // 购票停售时间 String timeEnd = ticketData.getTimeEnd(); // 购票停售时间
String timeExpressEnd = ticketData.getTimeEndExpress(); // 快递停售时间 String timeExpressEnd = ticketData.getTimeEndExpress(); // 快递停售时间
int performanceBuyCount; //演出下所有票种购买数量
int ticketBuyCount;// 单一票种购买数量
boolean isMember = feignAdamBaseClient.isMember(uid).getData();//获取是否是会员 boolean isMember = feignAdamBaseClient.isMember(uid).getData();//获取是否是会员
int memberType; //会员状态 不需要判断会员 1判断会员逻辑 2会员专属 int memberType; //会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if (ticketData.getIsExclusive() == 1) { if (ticketData.getIsExclusive() == 1) {
memberType = 2; memberType = 2;
if (!isMember) { if (!isMember) {
lock.unlock();
return ResponseDto.failure("非会员用户暂不可购买");//没有会员权限 return ResponseDto.failure("非会员用户暂不可购买");//没有会员权限
} }
} else { } else {
...@@ -80,6 +115,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -80,6 +115,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 会员购买逻辑 // 会员购买逻辑
memberType = 1; memberType = 1;
if (!isMember) { if (!isMember) {
lock.unlock();
return ResponseDto.failure("非会员用户暂不可购买");//没有会员权限 return ResponseDto.failure("非会员用户暂不可购买");//没有会员权限
} }
} else { } else {
...@@ -98,29 +134,36 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -98,29 +134,36 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//通用判断时间 //通用判断时间
if (isMember) { if (isMember) {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) { if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) {
lock.unlock();
return ResponseDto.failure("未开始售卖");//未开始 return ResponseDto.failure("未开始售卖");//未开始
} }
} else { } else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) { if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) {
lock.unlock();
return ResponseDto.failure("未开始售卖");//未开始 return ResponseDto.failure("未开始售卖");//未开始
} }
} }
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) { if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) {
lock.unlock();
return ResponseDto.failure("售卖已结束");//已结束 return ResponseDto.failure("售卖已结束");//已结束
} }
//快递票判断 //快递票判断
if (payOrderParam.getIsExpress() == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeExpressEnd) == 1) { if (payOrderParam.getIsExpress() == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeExpressEnd) == 1) {
lock.unlock();
return ResponseDto.failure("已超过快递票截止时间");//快递票不卖 return ResponseDto.failure("已超过快递票截止时间");//快递票不卖
} }
if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) { if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) {
lock.unlock();
return ResponseDto.failure("快递票未填写收货地址");//快递票未填写收货地址 return ResponseDto.failure("快递票未填写收货地址");//快递票未填写收货地址
} }
//实名判断 //实名判断
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) { if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) {
lock.unlock();
return ResponseDto.failure("入场人数量错误");//需要实名 未实名 return ResponseDto.failure("入场人数量错误");//需要实名 未实名
} }
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) { if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) {
lock.unlock();
return ResponseDto.failure("入场人数量错误");//入场人数量错误 return ResponseDto.failure("入场人数量错误");//入场人数量错误
} }
...@@ -128,65 +171,120 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -128,65 +171,120 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
int surplusGeneral = dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), -payOrderParam.getNumber()); int surplusGeneral = dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), -payOrderParam.getNumber());
if (surplusGeneral < 0) {//库存回滚 if (surplusGeneral < 0) {//库存回滚
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber()); dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
lock.unlock();
return ResponseDto.failure("该票种已售罄");//没抢到 return ResponseDto.failure("该票种已售罄");//没抢到
} else { } else {
isDownGeneral = true; isDownGeneral = true;
//学生票 判断
List<AdamEntersVo> entersVoList = new ArrayList<>();
if (null != payOrderParam.getIsStudent() && payOrderParam.getIsStudent() == 1) {
for (String enterId : payOrderParam.getEnterIdList()) {
AdamEntersVo adamEnters = feignAdamBaseClient.queryEnters(enterId, uid).getData();
entersVoList.add(adamEnters);
int age = IDCard.getAgeByIdCard(adamEnters.getIdCard());
if (age > 25) {
lock.unlock();
return ResponseDto.failure("年龄不符合");//年龄超了
}
}
}
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购 //限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
Query queryPerformance = new Query();
Query queryTicket = new Query();
queryPerformance.addCriteria(Criteria.where("performanceId").is(payOrderParam.getPerformanceId()).and("status").in(0, 1));
queryTicket.addCriteria(Criteria.where("ticketId").is(payOrderParam.getTicketId()).and("status").in(0, 1));
int performanceBuyCount = 0; //演出下所有票种购买数量
int ticketBuyCount = 0;// 单一票种购买数量
if (isTrueName == 1) { if (isTrueName == 1) {
//已购买数量 身份证 //已购买数量 身份证
performanceBuyCount = 0 + payOrderParam.getNumber(); //演出下所有票种购买数量 TODO queryPerformance.fields().include("orderTicketsId");
ticketBuyCount = 0 + payOrderParam.getNumber(); // 单一票种购买数量 TODO queryTicket.fields().include("orderTicketsId");
KylinOrderTicketVo performanceOrderId = mongoTemplate.findOne(queryPerformance, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
KylinOrderTicketVo ticketOrderId = mongoTemplate.findOne(queryTicket, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if (performanceOrderId != null && ticketOrderId != null) {
for (AdamEntersVo item : entersVoList) {
performanceBuyCount += mongoTemplate.count(Query.query(Criteria.where("enterIdCode").is(item.getIdCard()).and("performanceId").is(payOrderParam.getPerformanceId()).and("orderTicketsId").is(performanceOrderId.getOrderTicketsId())), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName())
+ payOrderParam.getNumber();
ticketBuyCount += mongoTemplate.count(Query.query(Criteria.where("enterIdCode").is(item.getIdCard()).and("ticketId").is(payOrderParam.getPerformanceId()).and("orderTicketsId").is(ticketOrderId.getOrderTicketsId())), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName())
+ payOrderParam.getNumber();
//会员区间
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount >= performanceMemberLimit && performanceMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceMemberLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketMemberLimit && ticketMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketMemberLimit + "张");//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount >= performanceLimit && performanceLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketLimit && ticketLimit != 0) {
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketLimit + "张");//超过票维度购买量
}
}
}
}
} else { } else {
//已购买数量 数量 //已购买数量 数量
performanceBuyCount = 0 + payOrderParam.getNumber(); //演出下所有票种购买数量 TODO queryPerformance.fields().include("number");
ticketBuyCount = 0 + payOrderParam.getNumber(); // 单一票种购买数量 TODO queryTicket.fields().include("number");
List<KylinOrderTicketVo> performanceList = mongoTemplate.find(queryPerformance, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
List<KylinOrderTicketVo> ticketList = mongoTemplate.find(queryTicket, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo number : performanceList) {
performanceBuyCount += number.getNumber();
} }
for (KylinOrderTicketVo number : ticketList) {
ticketBuyCount += number.getNumber();
}
performanceBuyCount += payOrderParam.getNumber(); //演出下所有票种购买数量
ticketBuyCount += payOrderParam.getNumber(); // 单一票种购买数量
//会员区间 //会员区间
if (memberType == 1 || memberType == 2) { if (memberType == 1 || memberType == 2) {
if (performanceBuyCount >= performanceMemberLimit && performanceMemberLimit != 0) { if (performanceBuyCount >= performanceMemberLimit && performanceMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceMemberLimit + "张");//超过演出维度购买量 return ResponseDto.failure("该演出只能购买" + performanceMemberLimit + "张");//超过演出维度购买量
} }
if (ticketBuyCount >= ticketMemberLimit && ticketMemberLimit != 0) { if (ticketBuyCount >= ticketMemberLimit && ticketMemberLimit != 0) {
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketMemberLimit + "张");//超过票维度购买量 return ResponseDto.failure("该票种只能购买" + ticketMemberLimit + "张");//超过票维度购买量
} }
} else {//非会员区间 } else {//非会员区间
if (performanceBuyCount >= performanceLimit && performanceLimit != 0) { if (performanceBuyCount >= performanceLimit && performanceLimit != 0) {
lock.unlock();
return ResponseDto.failure("该演出只能购买" + performanceLimit + "张");//超过演出维度购买量 return ResponseDto.failure("该演出只能购买" + performanceLimit + "张");//超过演出维度购买量
} }
if (ticketBuyCount >= ticketLimit && ticketLimit != 0) { if (ticketBuyCount >= ticketLimit && ticketLimit != 0) {
lock.unlock();
return ResponseDto.failure("该票种只能购买" + ticketLimit + "张");//超过票维度购买量 return ResponseDto.failure("该票种只能购买" + ticketLimit + "张");//超过票维度购买量
} }
} }
return order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData); }
lock.unlock();
return order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList);
} }
} catch (Exception e) { } catch (Exception e) {
if (isDownGeneral) { if (isDownGeneral) {
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber()); dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
} }
e.printStackTrace(); e.printStackTrace();
lock.unlock();
return ResponseDto.failure("下单失败");//乱七八糟异常 return ResponseDto.failure("下单失败");//乱七八糟异常
} }
} }
@Override private ResponseDto<PayResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData, List<AdamEntersVo> entersVoList) {
public ResponseDto<PayResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData) {
LinkedList<String> sqls = new LinkedList<>(); LinkedList<String> sqls = new LinkedList<>();
LinkedList<Object[]> paramsList = new LinkedList<>(); LinkedList<Object[]> paramsList = new LinkedList<>();
String source = CurrentUtil.getCliSource(); String source = CurrentUtil.getCliSource();
String version = CurrentUtil.getCliVersion(); String version = CurrentUtil.getCliVersion();
List<AdamEntersVo> entersVoList = new ArrayList();
//学生票 判断
if (null != payOrderParam.getIsStudent() && payOrderParam.getIsStudent() == 1) {
for (String enterId : payOrderParam.getEnterIdList()) {
AdamEntersVo adamEnters = feignAdamBaseClient.queryEnters(enterId, uid).getData();
entersVoList.add(adamEnters);
int age = IDCard.getAgeByIdCard(adamEnters.getIdCard());
if (age > 25) {
return ResponseDto.failure("年龄不符合");//年龄超了
}
}
}
//生成订单 order_ticket //生成订单 order_ticket
KylinOrderTickets orderTickets = new KylinOrderTickets(); KylinOrderTickets orderTickets = new KylinOrderTickets();
String orderTicketId = IDGenerator.nextSnowId().toString(); String orderTicketId = IDGenerator.nextSnowId().toString();
...@@ -299,6 +397,10 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -299,6 +397,10 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 生成vo // 生成vo
KylinOrderTicketEntitiesVo orderTicketEntitiesVo = new KylinOrderTicketEntitiesVo(); KylinOrderTicketEntitiesVo orderTicketEntitiesVo = new KylinOrderTicketEntitiesVo();
BeanUtils.copyProperties(orderTicketEntities, orderTicketEntitiesVo); BeanUtils.copyProperties(orderTicketEntities, orderTicketEntitiesVo);
orderTicketEntitiesVo.setPerformanceTitle(performanceData.getTitle());
orderTicketEntitiesVo.setTicketTitle(ticketData.getTitle());
orderTicketEntitiesVo.setUseStart(ticketData.getUseStart());
orderTicketEntitiesVo.setUseEnd(ticketData.getUseEnd());
mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName()); mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName());
} }
} else { } else {
...@@ -325,45 +427,324 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -325,45 +427,324 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 生成vo // 生成vo
KylinOrderTicketEntitiesVo orderTicketEntitiesVo = new KylinOrderTicketEntitiesVo(); KylinOrderTicketEntitiesVo orderTicketEntitiesVo = new KylinOrderTicketEntitiesVo();
BeanUtils.copyProperties(orderTicketEntities, orderTicketEntitiesVo); BeanUtils.copyProperties(orderTicketEntities, orderTicketEntitiesVo);
orderTicketEntitiesVo.setPerformanceTitle(performanceData.getTitle());
orderTicketEntitiesVo.setTicketTitle(ticketData.getTitle());
orderTicketEntitiesVo.setUseStart(ticketData.getUseStart());
orderTicketEntitiesVo.setUseEnd(ticketData.getUseEnd());
mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName()); mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName());
} }
} }
// 调用支付 别忘记生成支付单号 // 调用支付
// $pay_result = zhengzai::getPayParam($pay_params, $device_from, $pay_type);
LinkedMultiValueMap<String, String> httpData = new LinkedMultiValueMap<String, String>(); LinkedMultiValueMap<String, String> httpData = new LinkedMultiValueMap<String, String>();
httpData.add("type","TICKET"); httpData.add("type", "TICKET");
httpData.add("price","0.01"); httpData.add("price", "0.01");
httpData.add("name",ticketData.getUseStart()+""+ticketData.getTitle()); httpData.add("name", ticketData.getUseStart() + "" + ticketData.getTitle());
httpData.add("detail",performanceData.getTitle()+"-"+ticketData.getTitle()+"-"+ticketData.getUseStart()); httpData.add("detail", performanceData.getTitle() + "-" + ticketData.getTitle() + "-" + ticketData.getUseStart());
httpData.add("order_code",orderTickets.getOrderCode()); httpData.add("order_code", orderTickets.getOrderCode());
httpData.add("client_ip","127.0.0.1"); httpData.add("client_ip", "127.0.0.1");
httpData.add("notify_url","http://www.baidu.com"); httpData.add("notify_url", "http://www.baidu.com");
httpData.add("create_date",orderTickets.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); httpData.add("create_date", orderTickets.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
httpData.add("expire_time",orderTickets.getPayCountdownMinute().toString()); httpData.add("expire_time", orderTickets.getPayCountdownMinute().toString());
if (payOrderParam.getDeviceFrom().equals("js") || payOrderParam.getDeviceFrom().equals("applet")) { if (payOrderParam.getDeviceFrom().equals("js") || payOrderParam.getDeviceFrom().equals("applet")) {
httpData.add("open_id",payOrderParam.getOpenId()); httpData.add("open_id", payOrderParam.getOpenId());
} }
if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) { if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) {
httpData.add("show_url",payOrderParam.getOpenId()); httpData.add("show_url", payOrderParam.getShowUrl());
httpData.add("return_url",payOrderParam.getOpenId()); httpData.add("return_url", payOrderParam.getReturnUrl());
} }
String returnData = HttpUtil.post("http://testpay.zhengzai.tv/"+payOrderParam.getDeviceFrom()+"/"+payOrderParam.getPayType(), httpData); String returnData = HttpUtil.post(payUrl + payOrderParam.getDeviceFrom() + "/" + payOrderParam.getPayType(), httpData);
PayResultVo payResultVo = JsonUtils.fromJson(returnData,PayResultVo.class); PayResultVo payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class);
payResultVo.setOrder_id(orderTicketId); payResultVo.setOrder_id(orderTicketId);
payResultVo.setPrice(orderTickets.getPriceActual()); payResultVo.setPrice(orderTickets.getPriceActual());
orderTickets.setPayCode(payResultVo.getOrder_code()); orderTickets.setPayCode(payResultVo.getCode());
// 生成vo // 生成vo
KylinOrderTicketVo orderTicketVo = new KylinOrderTicketVo(); KylinOrderTicketVo orderTicketVo = new KylinOrderTicketVo();
orderTicketVo.setOrderTicket(orderTickets); orderTicketVo.setOrderTicket(orderTickets);
orderTicketVo.setOrderTicketStatus(orderTicketStatus); orderTicketVo.setOrderTicketStatus(orderTicketStatus);
orderTicketVo.setOrderTicketRelation(orderTicketRelations); orderTicketVo.setOrderTicketRelation(orderTicketRelations);
orderTicketVo.setPerformanceImg(performanceData.getImgPoster());
orderTicketVo.setTicketTitle(ticketData.getTitle());
orderTicketVo.setUseStart(ticketData.getUseStart());
orderTicketVo.setTimeStart(performanceData.getTimeStart());
orderTicketVo.setOverdueAt(orderTickets.getCreatedAt().plusMinutes(performanceData.getPayCountdownMinute()).plusSeconds(15).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
orderTicketVo.setCreatedAt(orderTickets.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mongoTemplate.insert(orderTicketVo, KylinOrderTicketVo.class.getSimpleName()); mongoTemplate.insert(orderTicketVo, KylinOrderTicketVo.class.getSimpleName());
// 执行sql // 执行sql
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL, // rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get(sqls, paramsList)); // SqlMapping.get(sqls, paramsList));
return ResponseDto.success(payResultVo); return ResponseDto.success(payResultVo);
} }
@Override
public ResponseDto<PayResultVo> payAgain(PayAgainParam payAgainParam) {
try {
String uid = CurrentUtil.getCurrentUid();
checkOrderTime(uid);
//检查订单时间 是否关闭
KylinOrderTicketVo orderTicketData = dataUtils.getOrderTicketVo(payAgainParam.getOrderId());
if (orderTicketData == null) {
return ResponseDto.failure("订单不存在");
}
if (orderTicketData.getStatus() == 1) {
return ResponseDto.failure("订单已支付");
} else {
if (orderTicketData.getStatus() != 0) {
return ResponseDto.failure("订单已关闭");
}
}
String returnCheckData = HttpUtil.get(checkUrl + "?code=" + orderTicketData.getPayCode(), null);
PayResultVo checkVo = JsonUtils.fromJson(returnCheckData, PayResultVo.class);
if (checkVo.getStatus() == 1) {
return ResponseDto.failure("'您已支付请刷新再试'");
}
if (!orderTicketData.getPayType().equals("no")) {
KylinOrderTicketEntitiesVo entitiesDataOne = mongoTemplate.findOne(Query.query(Criteria.where("orderId").is(payAgainParam.getOrderId())), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
if (entitiesDataOne == null) {
return ResponseDto.failure("参数错误");
}
KylinOrderTicketEntitiesVo entitiesData = dataUtils.getOrderTicketEntitiesVo(entitiesDataOne.getOrderTicketEntitiesId());
LinkedMultiValueMap<String, String> httpData = new LinkedMultiValueMap<String, String>();
httpData.add("type", "TICKET");
httpData.add("price", "0.01");
httpData.add("name", entitiesData.getUseStart() + "" + entitiesData.getPerformanceTitle());
httpData.add("detail", entitiesData.getPerformanceTitle() + "-" + entitiesData.getTicketTitle() + "-" + entitiesData.getUseStart());
httpData.add("order_code", orderTicketData.getOrderCode());
httpData.add("client_ip", "127.0.0.1");
httpData.add("notify_url", "http://www.baidu.com");
httpData.add("create_date", orderTicketData.getCreatedAt());
httpData.add("expire_time", orderTicketData.getPayCountdownMinute().toString());
httpData.add("open_id", payAgainParam.getOpenId());
httpData.add("show_url", payAgainParam.getOpenId());
httpData.add("return_url", payAgainParam.getOpenId());
String returnData = HttpUtil.post(payUrl + payAgainParam.getDeviceFrom() + "/" + payAgainParam.getPayType(), httpData);
PayResultVo payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class);
payResultVo.setOrder_id(orderTicketData.getOrderTicketsId());
payResultVo.setPrice(orderTicketData.getPriceActual());
KylinOrderTickets orderTickets = new KylinOrderTickets();
orderTickets.setOrderTicketsId(payAgainParam.getOrderId());
orderTickets.setUpdatedAt(LocalDateTime.now());
orderTickets.setPayCode(payResultVo.getCode());
orderTickets.setPayType(payAgainParam.getPayType());
//改vo
HashMap<String, String> map = new HashMap<>();
map.put("payType", payAgainParam.getPayType());
map.put("payCode", payResultVo.getCode());
map.put("updatedAt", orderTickets.getUpdatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(payAgainParam.getOrderId())).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(map))
);
dataUtils.delOrderTicketRedis(orderTickets.getOrderTicketsId());
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("kylin_order_ticket.payAgain", orderTickets.getPayAgainObject()));
return ResponseDto.success(payResultVo);
}
return ResponseDto.failure("未选择支付方式");
} catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure("订单已失效");
}
}
@Override
public String syncOrder(SyncOrderParam syncOrderParam) {
//支付时间
LocalDateTime now = LocalDateTime.now();
RLock lock = RedisLockUtil.lock("order_lock:" + syncOrderParam.getOrder_code(), 240);
if (lock.isLocked()) {
return "fail";
}
String timePay = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
KylinOrderTicketVo orderTicketData = mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(syncOrderParam.getOrder_code())), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if (orderTicketData == null) {
lock.unlock();
return "fail";//订单不存在
}
if (orderTicketData.getStatus() != 0) {
if (orderTicketData.getPayCode().equals(syncOrderParam.getCode()) && orderTicketData.getStatus() == 1) {
lock.unlock();
return "success";//已经支付
}
if (!orderTicketData.getPayCode().equals(syncOrderParam.getCode())) {
lock.unlock();
return "fail";//重复支付
}
}
if (orderTicketData.getPriceActual().compareTo(syncOrderParam.getPrice()) != 0) {
lock.unlock();
return "fail";//价格不符
}
LinkedList<String> sqls = new LinkedList<>();
LinkedList<Object[]> paramsList = new LinkedList<>();
//sql
KylinOrderTickets orderTickets = new KylinOrderTickets();
orderTickets.setOrderTicketsId(orderTicketData.getOrderTicketsId());
orderTickets.setPaymentType(syncOrderParam.getPayment_type());
orderTickets.setPayCode(syncOrderParam.getCode());
orderTickets.setTimePay(timePay);
orderTickets.setQrCode(IDGenerator.ticketQrCode(orderTicketData.getOrderTicketsId()));
orderTickets.setUpdatedAt(now);
sqls.add("kylin_order_ticket.synPay");
paramsList.add(orderTickets.getSynOrderObject());
KylinOrderTicketStatus orderTicketStatus = new KylinOrderTicketStatus();
orderTicketStatus.setOrderId(orderTicketData.getOrderTicketsId());
orderTicketStatus.setStatus(1);
orderTicketStatus.setPayStatus(syncOrderParam.getStatus());
orderTicketStatus.setUpdatedAt(orderTickets.getUpdatedAt());
sqls.add("kylin_order_ticket_status.synPay");
paramsList.add(orderTicketStatus.getSynOrderObject());
KylinOrderTicketEntities orderTicketEntities = new KylinOrderTicketEntities();
orderTicketEntities.setOrderId(orderTicketData.getOrderTicketsId());
orderTicketEntities.setIsPayment(1);
orderTicketEntities.setUpdatedAt(orderTickets.getUpdatedAt());
sqls.add("kylin_order_ticket_entities.synPay");
paramsList.add(orderTicketEntities.getSynOrderObject());
//vo
HashMap<String, Object> orderTicketVo = new HashMap<>();
orderTicketVo.put("paymentType", orderTickets.getPaymentType());
orderTicketVo.put("payCode", orderTickets.getPayCode());
orderTicketVo.put("timePay", orderTickets.getTimePay());
orderTicketVo.put("qrCode", orderTickets.getQrCode());
orderTicketVo.put("status", 1);
orderTicketVo.put("payStatus", orderTicketStatus.getStatus());
orderTicketVo.put("updatedAt", timePay);
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTickets.getOrderTicketsId())).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(orderTicketVo))
);
dataUtils.delOrderTicketRedis(orderTickets.getOrderTicketsId());
HashMap<String, Object> orderTicketEntitiesVo = new HashMap<>();
orderTicketEntitiesVo.put("isPayment", 1);
orderTicketEntitiesVo.put("updatedAt", timePay);
mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("orderId").is(orderTickets.getOrderTicketsId())).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(orderTicketEntitiesVo))
);
List<KylinOrderTicketEntitiesVo> delList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderTickets.getOrderTicketsId())), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
for (KylinOrderTicketEntitiesVo item : delList) {
dataUtils.delOrderTicketEntitiesRedis(item.getOrderTicketEntitiesId());
}
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get(sqls, paramsList));
// 发短信
return "success";
}
@Override
public PageInfo<List<KylinOrderListVo>> orderList(int page, int size) {
//TODO 缺快递
PageInfo<List<KylinOrderListVo>> mPageInfo = null;
String uid = CurrentUtil.getCurrentUid();
try {
// 排序 分页
Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "createdAt"));
//条件
Query query = new Query();
query.addCriteria(
Criteria.where("userId").is(uid).and("status").ne(-1)
);
// 查询总数
long count = mongoTemplate.count(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
query.with(pageable);
List<KylinOrderListVo> voList = mongoTemplate.find(query, KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
mPageInfo = new PageInfo(voList);
mPageInfo.setTotal(count);
return mPageInfo;
} catch (Exception e) {
return mPageInfo;
}
}
@Override
public boolean checkOrderTime(String userId) {
Query query = new Query();
query.addCriteria(Criteria.where("status").is(0).and("overdueAt").lte(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
if (null != userId) {
query.addCriteria(Criteria.where("userId").is(userId));
}
List<KylinOrderTicketVo> orderTicketVo = mongoTemplate.find(query,
KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo item : orderTicketVo) {
RLock lock = redisLockUtil.lock("order_lock:" + item.getOrderCode());
if (lock.isLocked()) {
continue;
}
KylinOrderTicketVo itemData = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
if (itemData.getStatus() == 0) {
LocalDateTime now = LocalDateTime.now();
try {
//mysql
KylinOrderTickets orderTickets = new KylinOrderTickets();
orderTickets.setOrderTicketsId(item.getOrderTicketsId());
orderTickets.setUpdatedAt(now);
KylinOrderTicketStatus orderTicketStatus = new KylinOrderTicketStatus();
orderTicketStatus.setOrderId(item.getOrderTicketsId());
orderTicketStatus.setStatus(2);
orderTicketStatus.setUpdatedAt(now);
//vo
HashMap<String, Object> map = new HashMap<>();
map.put("status", 2);
map.put("updatedAt", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTickets.getOrderTicketsId())).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(map))
);
dataUtils.delOrderTicketRedis(orderTickets.getOrderTicketsId());
dataUtils.changeSurplusGeneral(itemData.getTicketId(), itemData.getNumber());
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("kylin_order_ticket.close", itemData.getPayAgainObject()));
} catch (Exception e) {
lock.unlock();
e.printStackTrace();
return false;
}
} else {
lock.unlock();
}
}
return true;
}
public boolean checkAgent(String agentId, KylinTicketVo ticketData) {
boolean isAgent = ticketData.getIsAgent() == 1;
if (isAgent) {
return redisUtil.sHasKey(KylinRedisConst.AGENT, agentId);
} else {
return true;
}
}
} }
...@@ -213,7 +213,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM ...@@ -213,7 +213,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
public KylinPerformanceVo detail(String performancesId, double latitudeFrom, double longitudeFrom) { public KylinPerformanceVo detail(String performancesId, double latitudeFrom, double longitudeFrom) {
KylinPerformanceVo performancesInfo = (KylinPerformanceVo) redisUtil.hget(KylinRedisConst.PERFORMANCES, performancesId); KylinPerformanceVo performancesInfo = (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES.concat(performancesId));
String roadShowId = ""; String roadShowId = "";
if (null == performancesInfo) { if (null == performancesInfo) {
performancesInfo = mongoTemplate.findOne( performancesInfo = mongoTemplate.findOne(
...@@ -226,7 +226,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM ...@@ -226,7 +226,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
} else { } else {
roadShowId = performancesInfo.getRoadShowId(); roadShowId = performancesInfo.getRoadShowId();
redisUtil.hset(KylinRedisConst.PERFORMANCES, performancesId, performancesInfo); redisUtil.set(KylinRedisConst.PERFORMANCES.concat(performancesId), performancesInfo);
} }
} else { } else {
roadShowId = performancesInfo.getRoadShowId(); roadShowId = performancesInfo.getRoadShowId();
...@@ -274,7 +274,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM ...@@ -274,7 +274,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
return performancesInfo; return performancesInfo;
} }
public List<KylinTicketTimesVo> ticketTimesPartner(String performancesId, Integer isAgent) { public HashMap<String, Object> ticketTimesPartner(String performancesId, Integer isAgent) {
List<KylinTicketTimesVo> ticketTimesList = mongoTemplate.find( List<KylinTicketTimesVo> ticketTimesList = mongoTemplate.find(
Query.query(Criteria.where("performanceId").is(performancesId)), Query.query(Criteria.where("performanceId").is(performancesId)),
KylinTicketTimesVo.class, KylinTicketTimesVo.class,
...@@ -329,7 +329,17 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM ...@@ -329,7 +329,17 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
partner.setTicketList(ticketList); partner.setTicketList(ticketList);
} }
return ticketTimesList; KylinPerformanceVo performancesInfo = (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES.concat(performancesId));
HashMap<String, Object> info = new HashMap();
info.put("city_name", performancesInfo.getCityName());
info.put("field_name", performancesInfo.getFieldName());
info.put("title", performancesInfo.getTitle());
HashMap result = new HashMap();
result.put("performancesInfo", info);
result.put("ticketTimesList", ticketTimesList);
return result;
} }
public List<KylinPerformanceVo> performanceList(String... performancesIds) { public List<KylinPerformanceVo> performanceList(String... performancesIds) {
......
...@@ -121,7 +121,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl ...@@ -121,7 +121,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
// 入缓存 // 入缓存
mongoTemplate.insert(kylinBannersVo, KylinBannersVo.class.getSimpleName()); mongoTemplate.insert(kylinBannersVo, KylinBannersVo.class.getSimpleName());
redisUtil.hset(KylinRedisConst.BANNERS, bannersId, kylinBannersVo); redisUtil.set(KylinRedisConst.BANNERS.concat(bannersId), kylinBannersVo);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
...@@ -185,7 +185,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl ...@@ -185,7 +185,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); );
redisUtil.hset(KylinRedisConst.BANNERS, bannersId, JsonUtils.fromJson(doc.toJson(), KylinBannersVo.class)); redisUtil.set(KylinRedisConst.BANNERS.concat(bannersId), JsonUtils.fromJson(doc.toJson(), KylinBannersVo.class));
return true; return true;
} catch (Exception e) { } catch (Exception e) {
...@@ -255,8 +255,8 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl ...@@ -255,8 +255,8 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); );
// redis 操作 // redis 操作 后期考虑删除掉 前端取redis不取mongo
redisUtil.hset(KylinRedisConst.BANNERS, bannersId, JsonUtils.fromJson(doc.toJson(), KylinBannersVo.class)); redisUtil.set(KylinRedisConst.BANNERS.concat(bannersId), JsonUtils.fromJson(doc.toJson(), KylinBannersVo.class));
return true; return true;
} catch (Exception e) { } catch (Exception e) {
......
package com.liquidnet.service.kylin.service.impl.admin;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds;
import com.liquidnet.service.kylin.mapper.KylinOrderRefundsMapper;
import com.liquidnet.service.kylin.service.IKylinOrderRefundsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 订单退款表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-05-26
*/
@Service
public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsMapper, KylinOrderRefunds> implements IKylinOrderRefundsService {
}
...@@ -19,9 +19,11 @@ import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService; ...@@ -19,9 +19,11 @@ import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import com.liquidnet.service.kylin.service.impl.partner.KylinTicketTimesPartnerServiceImpl; import com.liquidnet.service.kylin.service.impl.partner.KylinTicketTimesPartnerServiceImpl;
import com.liquidnet.service.kylin.service.impl.partner.KylinTicketsPartnerServiceImpl; import com.liquidnet.service.kylin.service.impl.partner.KylinTicketsPartnerServiceImpl;
import com.liquidnet.service.kylin.timerTask.PerformanceVoTask; import com.liquidnet.service.kylin.timerTask.PerformanceVoTask;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions; import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument; import com.mongodb.client.model.ReturnDocument;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.Document; import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -61,7 +63,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -61,7 +63,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
private PerformanceVoTask performanceVoTask; private PerformanceVoTask performanceVoTask;
@Autowired @Autowired
private RedisUtil redisUtil; private DataUtils dataUtils;
@Autowired @Autowired
private KylinPerformancesMapper performancesMapper; private KylinPerformancesMapper performancesMapper;
...@@ -164,7 +166,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -164,7 +166,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
performanceVoTask.performanceVoStatus(performancesId); performanceVoTask.performanceVoStatus(performancesId);
} }
} }
redisUtil.hdel(KylinRedisConst.PERFORMANCES, performancesId); dataUtils.delPerformanceRedis(performancesId);
} else if (status == 4) { } else if (status == 4) {
log.info(" PERFORMANCE 演出审核 拒绝"); log.info(" PERFORMANCE 演出审核 拒绝");
auditStatus = 2; auditStatus = 2;
...@@ -239,11 +241,6 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -239,11 +241,6 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
performanceRelations.setRoadShowId(roadShowId); performanceRelations.setRoadShowId(roadShowId);
performanceRelationsMapper.update(performanceRelations, new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id", performancesId)); performanceRelationsMapper.update(performanceRelations, new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id", performancesId));
//redis TODO 演出缓存
// if(redisUtil.hHasKey(KylinRedisConst.PERFORMANCES,performancesId)){
// redisUtil.hset()
// }
//mongodb //mongodb
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("roadShowId", roadShowId); map.put("roadShowId", roadShowId);
...@@ -252,7 +249,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -252,7 +249,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(), Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(),
object object
); );
redisUtil.hdel(KylinRedisConst.PERFORMANCES, performancesId); dataUtils.delPerformanceRedis(performancesId);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
return false; return false;
...@@ -287,7 +284,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -287,7 +284,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
object2 object2
); );
} }
redisUtil.del(KylinRedisConst.PERFORMANCES_RECOMMEND); // dataUtils.delPerformanceRecommendRedis(item.getPerformanceId());
return true; return true;
} catch (Exception e) { } catch (Exception e) {
return false; return false;
...@@ -486,7 +483,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -486,7 +483,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
object); object);
performanceVoTask.performanceVoStatus(performanceId); performanceVoTask.performanceVoStatus(performanceId);
redisUtil.hdel(KylinRedisConst.PERFORMANCES, performanceId); dataUtils.delPerformanceRedis(performanceId);
} else { } else {
HashMap<String, Object> map2 = new HashMap<>(); HashMap<String, Object> map2 = new HashMap<>();
map2.put("status", 2); map2.put("status", 2);
...@@ -553,7 +550,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -553,7 +550,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
Query.query(Criteria.where("ticketsId").is(ticketId)).getQueryObject(), Query.query(Criteria.where("ticketsId").is(ticketId)).getQueryObject(),
object); object);
redisUtil.hdel(KylinRedisConst.TICKET, ticketId); dataUtils.delTicketRedis(ticketId);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
return false; return false;
...@@ -569,12 +566,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -569,12 +566,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
return false; return false;
} }
//修改 mysql //修改 mysql
if(item.getType().equals("ticket")) { if (item.getType().equals("ticket")) {
KylinTicketStatus ticketStatus = new KylinTicketStatus(); KylinTicketStatus ticketStatus = new KylinTicketStatus();
ticketStatus.setUpdatedAt(updatedAt); ticketStatus.setUpdatedAt(updatedAt);
ticketStatus.setSyncDamai(item.getStatus()); ticketStatus.setSyncDamai(item.getStatus());
ticketStatusMapper.update(ticketStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", item.getId())); ticketStatusMapper.update(ticketStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", item.getId()));
}else if(item.getType().equals("performance")){ } else if (item.getType().equals("performance")) {
KylinPerformanceStatus performanceStatus = new KylinPerformanceStatus(); KylinPerformanceStatus performanceStatus = new KylinPerformanceStatus();
performanceStatus.setUpdatedAt(updatedAt); performanceStatus.setUpdatedAt(updatedAt);
performanceStatus.setSyncDamai(item.getStatus()); performanceStatus.setSyncDamai(item.getStatus());
......
package com.liquidnet.service.kylin.service.impl.admin; package com.liquidnet.service.kylin.service.impl.admin;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.liquidnet.service.kylin.entity.KylinRefundBatches;
import com.liquidnet.service.kylin.entity.KylinRefunds; import com.liquidnet.service.kylin.entity.KylinRefunds;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.mapper.KylinRefundsMapper; import com.liquidnet.service.kylin.mapper.KylinRefundsMapper;
import com.liquidnet.service.kylin.service.IKylinRefundsService; import com.liquidnet.service.kylin.service.IKylinRefundsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -17,4 +24,32 @@ import org.springframework.stereotype.Service; ...@@ -17,4 +24,32 @@ import org.springframework.stereotype.Service;
@Service @Service
public class KylinRefundsServiceImpl extends ServiceImpl<KylinRefundsMapper, KylinRefunds> implements IKylinRefundsService { public class KylinRefundsServiceImpl extends ServiceImpl<KylinRefundsMapper, KylinRefunds> implements IKylinRefundsService {
@Autowired
private KylinOrderTicketsMapper kylinOrderTicketsMapper;
@Autowired
private KylinRefundsStatusServiceImpl kylinRefundsStatusServiceImpl;
public Boolean refundApply(String orderTicketsId, String orderType, String reason, String remark, Integer batch_id, String refundData) throws Exception {
int count = 0;
if(orderType == "order_ticket"){
count = kylinOrderTicketsMapper.selectCount(
new UpdateWrapper<KylinOrderTickets>().eq("order_tickets_id", orderTicketsId).eq("coupon_type2", "full")
);
}
if(count > 0){
throw new Exception("使用满减券 暂不能退款");
}
if (orderType == "order_ticket") { // 票务退款
JsonNode refundDataJson = JsonUtils.fromJson(refundData, JsonNode.class);
JsonNode ticketEntityIds = refundDataJson.get("ticketEntityIds");
int authId = 0;
String authName = "sss";
kylinRefundsStatusServiceImpl.orderTicketRefunding(authId, authName, orderTicketsId, ticketEntityIds, reason, remark, batch_id);
}
return true;
}
} }
package com.liquidnet.service.kylin.service.impl.admin;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.liquidnet.service.kylin.entity.KylinRefunds;
import com.liquidnet.service.kylin.mapper.KylinOrderRefundsMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.mapper.KylinRefundsMapper;
import com.liquidnet.service.kylin.service.IKylinRefundsService;
import org.apache.http.HttpException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* <p>
* 退款表 服务实现类
* </p>
*
* @author jiaangxiulong
* @since 2021-05-26
*/
@Service
public class KylinRefundsStatusServiceImpl extends ServiceImpl<KylinRefundsMapper, KylinRefunds> implements IKylinRefundsService {
@Autowired
private KylinOrderTicketsMapper kylinOrderTicketsMapper;
@Autowired
private KylinOrderTicketStatusMapper kylinOrderTicketStatusMapper;
@Autowired
private KylinOrderRefundsMapper kylinOrderRefundsMapper;
public void orderTicketRefunding(int authId, String authName, String orderTicketsId, JsonNode ticketEntityIds, String reason, String remark, Integer batch_id) throws HttpException {
/*KylinOrderTickets orderInfo = kylinOrderTicketsMapper.selectOne(
new UpdateWrapper<KylinOrderTickets>().eq("order_tickets_id", orderTicketsId)
);
KylinOrderTicketStatus orderStatus = kylinOrderTicketStatusMapper.selectOne(
new UpdateWrapper<KylinOrderTicketStatus>().eq("order_id", orderTicketsId)
);
// 订单状态,已支付(其它情况)、已关闭(超时支付、已支付但出票失败等情况)
Integer[] statusArr = {KylinTableStatusConst.STATUS_PAID, KylinTableStatusConst.STATUS_CLOSE, KylinTableStatusConst.STATUS_DELETE};
Set<String> set = new HashSet(Arrays.asList(statusArr));
if (!set.contains(orderStatus.getStatus())) {
throw new HttpException("订单状态信息有误");
}
// 订单支付状态需为已支付
if (orderStatus.getPayStatus() != 1) {
throw new HttpException("订单支付信息有误");
}
// 该订单正在退款或已有退款
int refundingCount = kylinOrderRefundsMapper.selectCount(
new UpdateWrapper<KylinOrderRefunds>().eq("order_id", orderTicketsId)
.eq("order_type", "order_ticket")
.ne("status", KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL)
);
if (refundingCount > 0) {
throw new HttpException("该订单正在退款或已有退款");
}*/
// 本次退款批次
/*int maxRefundBatch = kylinOrderRefundsMapper.selectCount(
new UpdateWrapper<KylinOrderRefunds>().eq("order_id", orderTicketsId)
.setSql(max)
.ne("status", KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL)
);
$max_refund_batch = OrderRefund::onWriteConnection()->where('order_id', $order_id)->max('batch');
$batch = $max_refund_batch ? $max_refund_batch + 1 : 1;
# 本次退款总金额
$refund_total_price = 0;*/
}
}
...@@ -15,6 +15,7 @@ import com.liquidnet.service.kylin.entity.KylinCheckUser; ...@@ -15,6 +15,7 @@ import com.liquidnet.service.kylin.entity.KylinCheckUser;
import com.liquidnet.service.kylin.mapper.KylinCheckUserMapper; import com.liquidnet.service.kylin.mapper.KylinCheckUserMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.service.partner.IKylinCheckUserPartnerService; import com.liquidnet.service.kylin.service.partner.IKylinCheckUserPartnerService;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -45,7 +46,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser ...@@ -45,7 +46,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
@Autowired @Autowired
private MongoConverter mongoConverter; private MongoConverter mongoConverter;
@Autowired @Autowired
private RedisUtil redisUtil; private DataUtils dataUtils;
@Autowired @Autowired
private KylinCheckUserMapper checkUserMapper; private KylinCheckUserMapper checkUserMapper;
...@@ -69,7 +70,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser ...@@ -69,7 +70,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
checkUser.setUpdatedAt(LocalDateTime.now()); checkUser.setUpdatedAt(LocalDateTime.now());
checkUser.setStatus(0); checkUser.setStatus(0);
checkUserMapper.update(checkUser, new UpdateWrapper<KylinCheckUser>().eq("check_user_id", checkUserId)); checkUserMapper.update(checkUser, new UpdateWrapper<KylinCheckUser>().eq("check_user_id", checkUserId));
redisUtil.hdel(KylinRedisConst.CHECK_USER, checkUserId); dataUtils.delCheckUserRedis(checkUserId);
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("status", 0); map.put("status", 0);
...@@ -123,7 +124,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser ...@@ -123,7 +124,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
Query.query(Criteria.where("checkUserId").is(checkUserId)).getQueryObject(), Query.query(Criteria.where("checkUserId").is(checkUserId)).getQueryObject(),
obj obj
); );
redisUtil.hdel(KylinRedisConst.CHECK_USER, checkUserId); dataUtils.delCheckUserRedis(checkUserId);
return ResponseDto.success("修改成功"); return ResponseDto.success("修改成功");
} catch (Exception e) { } catch (Exception e) {
return ResponseDto.failure(ErrorMapping.get(20103)); return ResponseDto.failure(ErrorMapping.get(20103));
......
...@@ -16,6 +16,7 @@ import com.liquidnet.service.kylin.entity.KylinCheckUserPerformances; ...@@ -16,6 +16,7 @@ import com.liquidnet.service.kylin.entity.KylinCheckUserPerformances;
import com.liquidnet.service.kylin.mapper.KylinCheckUserPerformancesMapper; import com.liquidnet.service.kylin.mapper.KylinCheckUserPerformancesMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.service.partner.IKylinCheckUserPerformancesPartnerService; import com.liquidnet.service.kylin.service.partner.IKylinCheckUserPerformancesPartnerService;
import com.liquidnet.service.kylin.utils.DataUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter;
...@@ -44,16 +45,16 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky ...@@ -44,16 +45,16 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky
@Autowired @Autowired
private MongoConverter mongoConverter; private MongoConverter mongoConverter;
@Autowired @Autowired
private RedisUtil redisUtil; private DataUtils dataUtils;
@Autowired @Autowired
private KylinCheckUserPerformancesMapper checkUserPerformancesMapper; private KylinCheckUserPerformancesMapper checkUserPerformancesMapper;
@Override @Override
public ResponseDto<PageInfo<ChildPerformanceDao>> childPerformanceList(String merchantId, String checkUserId, int page, int size,String name) { public ResponseDto<PageInfo<ChildPerformanceDao>> childPerformanceList(String merchantId, String checkUserId, int page, int size, String name) {
PageInfo<ChildPerformanceDao> pageInfo = null; PageInfo<ChildPerformanceDao> pageInfo = null;
try { try {
PageHelper.startPage(page, size); PageHelper.startPage(page, size);
List<ChildPerformanceDao> data = checkUserPerformancesMapper.childPerformanceList(merchantId, checkUserId,name); List<ChildPerformanceDao> data = checkUserPerformancesMapper.childPerformanceList(merchantId, checkUserId, name);
pageInfo = new PageInfo(data); pageInfo = new PageInfo(data);
return ResponseDto.success(pageInfo); return ResponseDto.success(pageInfo);
} catch (Exception e) { } catch (Exception e) {
...@@ -62,11 +63,11 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky ...@@ -62,11 +63,11 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky
} }
@Override @Override
public ResponseDto<PageInfo<ChildPerformanceDao>> unChildPerformanceList(String merchantId, String checkUserId, int page, int size,String name) { public ResponseDto<PageInfo<ChildPerformanceDao>> unChildPerformanceList(String merchantId, String checkUserId, int page, int size, String name) {
PageInfo<ChildPerformanceDao> pageInfo = null; PageInfo<ChildPerformanceDao> pageInfo = null;
try { try {
PageHelper.startPage(page, size); PageHelper.startPage(page, size);
List<ChildPerformanceDao> data = checkUserPerformancesMapper.unChildPerformanceList(merchantId, checkUserId,name); List<ChildPerformanceDao> data = checkUserPerformancesMapper.unChildPerformanceList(merchantId, checkUserId, name);
pageInfo = new PageInfo(data); pageInfo = new PageInfo(data);
return ResponseDto.success(pageInfo); return ResponseDto.success(pageInfo);
} catch (Exception e) { } catch (Exception e) {
...@@ -95,7 +96,7 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky ...@@ -95,7 +96,7 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky
mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(param.getCheckUserId())), KylinCheckUserPerformanceVo.class, KylinCheckUserPerformanceVo.class.getSimpleName()); mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(param.getCheckUserId())), KylinCheckUserPerformanceVo.class, KylinCheckUserPerformanceVo.class.getSimpleName());
mongoTemplate.insert(userPerformanceVo, KylinCheckUserPerformanceVo.class.getSimpleName()); mongoTemplate.insert(userPerformanceVo, KylinCheckUserPerformanceVo.class.getSimpleName());
redisUtil.hdel(KylinRedisConst.CHECK_USER_RELATION, param.getCheckUserId()); dataUtils.delCheckUserRelationRedis(param.getCheckUserId());
return ResponseDto.success("添加成功"); return ResponseDto.success("添加成功");
} catch (Exception e) { } catch (Exception e) {
return ResponseDto.failure(ErrorMapping.get(20101)); return ResponseDto.failure(ErrorMapping.get(20101));
...@@ -122,7 +123,7 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky ...@@ -122,7 +123,7 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky
userPerformanceVo.setCheckUserId(checkUserId); userPerformanceVo.setCheckUserId(checkUserId);
userPerformanceVo.setRelationParams(performanceRelationParamsList); userPerformanceVo.setRelationParams(performanceRelationParamsList);
mongoTemplate.insert(userPerformanceVo, KylinCheckUserPerformanceVo.class.getSimpleName()); mongoTemplate.insert(userPerformanceVo, KylinCheckUserPerformanceVo.class.getSimpleName());
redisUtil.hdel(KylinRedisConst.CHECK_USER_RELATION, checkUserId); dataUtils.delCheckUserRelationRedis(checkUserId);
return ResponseDto.success("删除成功"); return ResponseDto.success("删除成功");
} catch (Exception e) { } catch (Exception e) {
return ResponseDto.failure(ErrorMapping.get(20102)); return ResponseDto.failure(ErrorMapping.get(20102));
......
...@@ -4,11 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; ...@@ -4,11 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.*;
import com.liquidnet.service.kylin.dto.vo.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.KylinTicketVo;
import com.liquidnet.service.kylin.entity.KylinBuyNotice; import com.liquidnet.service.kylin.entity.KylinBuyNotice;
import com.liquidnet.service.kylin.entity.KylinTicketTimes;
import com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper; import com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
...@@ -25,7 +22,6 @@ public class DataUtils { ...@@ -25,7 +22,6 @@ public class DataUtils {
private KylinBuyNoticeMapper buyNoticeMapper; private KylinBuyNoticeMapper buyNoticeMapper;
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
...@@ -47,7 +43,7 @@ public class DataUtils { ...@@ -47,7 +43,7 @@ public class DataUtils {
* @param totalGeneral 普通库存 * @param totalGeneral 普通库存
*/ */
public void setSurplusGeneral(String ticketId, int totalGeneral) { public void setSurplusGeneral(String ticketId, int totalGeneral) {
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL, totalGeneral); redisUtil.set(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_GENERAL, totalGeneral);
} }
/** /**
...@@ -57,7 +53,7 @@ public class DataUtils { ...@@ -57,7 +53,7 @@ public class DataUtils {
* @return 普通剩余库存 * @return 普通剩余库存
*/ */
public int getSurplusGeneral(String ticketId) { public int getSurplusGeneral(String ticketId) {
return (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL); return (int) redisUtil.get(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_GENERAL);
} }
/** /**
...@@ -68,7 +64,7 @@ public class DataUtils { ...@@ -68,7 +64,7 @@ public class DataUtils {
* @return 普通剩余库存 * @return 普通剩余库存
*/ */
public int changeSurplusGeneral(String ticketId, int surplusGeneral) { public int changeSurplusGeneral(String ticketId, int surplusGeneral) {
return (int) redisUtil.hincr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL, surplusGeneral); return (int) redisUtil.incr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_GENERAL, surplusGeneral);
} }
/** /**
...@@ -78,7 +74,7 @@ public class DataUtils { ...@@ -78,7 +74,7 @@ public class DataUtils {
* @param totalExchange 兑换库存 * @param totalExchange 兑换库存
*/ */
public void setSurplusExchange(String ticketId, int totalExchange) { public void setSurplusExchange(String ticketId, int totalExchange) {
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_EXCHANGE, totalExchange); redisUtil.set(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_EXCHANGE, totalExchange);
} }
/** /**
...@@ -88,7 +84,7 @@ public class DataUtils { ...@@ -88,7 +84,7 @@ public class DataUtils {
* @return 兑换剩余库存 * @return 兑换剩余库存
*/ */
public int getSurplusExchange(String ticketId) { public int getSurplusExchange(String ticketId) {
return (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_EXCHANGE); return (int) redisUtil.get(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_EXCHANGE);
} }
/** /**
...@@ -99,48 +95,214 @@ public class DataUtils { ...@@ -99,48 +95,214 @@ public class DataUtils {
* @return 兑换剩余库存 * @return 兑换剩余库存
*/ */
public int changeSurplusExchange(String ticketId, int surplusExchange) { public int changeSurplusExchange(String ticketId, int surplusExchange) {
return (int) redisUtil.hincr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId, KylinRedisConst.SURPLUS_GENERAL, surplusExchange); return (int) redisUtil.incr(KylinRedisConst.PERFORMANCES_INVENTORY + ticketId + ":" + KylinRedisConst.SURPLUS_GENERAL, surplusExchange);
} }
/** /**
* 根据演出id 获取 演出vo 详情 * 根据演出id 获取 演出vo 详情
*
* @param performanceId * @param performanceId
* @return * @return
*/ */
public KylinPerformanceVo getPerformanceVo(String performanceId){ public KylinPerformanceVo getPerformanceVo(String performanceId) {
if(redisUtil.hHasKey(KylinRedisConst.PERFORMANCES,performanceId)){ if (redisUtil.hasKey(KylinRedisConst.PERFORMANCES + performanceId)) {
}else{ } else {
KylinPerformanceVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName()); KylinPerformanceVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
redisUtil.hset(KylinRedisConst.PERFORMANCES,performanceId,performanceData); redisUtil.set(KylinRedisConst.PERFORMANCES + performanceId, performanceData);
} }
return (KylinPerformanceVo) redisUtil.hget(KylinRedisConst.PERFORMANCES,performanceId); return (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
}
/**
* 删除演出redis
*
* @param performanceId
*/
public void delPerformanceRedis(String performanceId) {
redisUtil.del(KylinRedisConst.PERFORMANCES + performanceId);
} }
/** /**
* 根据场次id 获取 场次vo 详情 * 根据场次id 获取 场次vo 详情
*
* @param ticketTimeId * @param ticketTimeId
* @return * @return
*/ */
public KylinTicketTimesVo getTicketTimesVo(String ticketTimeId){ public KylinTicketTimesVo getTicketTimesVo(String ticketTimeId) {
if(redisUtil.hHasKey(KylinRedisConst.TIMES,ticketTimeId)){ if (redisUtil.hasKey(KylinRedisConst.TIMES + ticketTimeId)) {
}else{ } else {
KylinTicketTimesVo ticketTimesData = mongoTemplate.findOne(Query.query(Criteria.where("ticketTimesId").is(ticketTimeId)), KylinTicketTimesVo.class, KylinTicketTimesVo.class.getSimpleName()); KylinTicketTimesVo ticketTimesData = mongoTemplate.findOne(Query.query(Criteria.where("ticketTimesId").is(ticketTimeId)), KylinTicketTimesVo.class, KylinTicketTimesVo.class.getSimpleName());
redisUtil.hset(KylinRedisConst.TIMES,ticketTimeId,ticketTimesData); redisUtil.set(KylinRedisConst.TIMES, ticketTimeId + ticketTimesData);
} }
return (KylinTicketTimesVo) redisUtil.hget(KylinRedisConst.TIMES,ticketTimeId); return (KylinTicketTimesVo) redisUtil.get(KylinRedisConst.TIMES + ticketTimeId);
}
/**
* 删除场次redis
*
* @param ticketTimeId
*/
public void delTicketTimesRedis(String ticketTimeId) {
redisUtil.del(KylinRedisConst.TIMES + ticketTimeId);
} }
/** /**
* 根据票种id 获取 票种vo 详情 * 根据票种id 获取 票种vo 详情
*
* @param ticketId * @param ticketId
* @return * @return
*/ */
public KylinTicketVo getTicketVo(String ticketId){ public KylinTicketVo getTicketVo(String ticketId) {
if(redisUtil.hHasKey(KylinRedisConst.TICKET,ticketId)){ if (redisUtil.hasKey(KylinRedisConst.TICKET + ticketId)) {
}else{ } else {
KylinTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("ticketsId").is(ticketId)), KylinTicketVo.class, KylinTicketVo.class.getSimpleName()); KylinTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("ticketsId").is(ticketId)), KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
redisUtil.hset(KylinRedisConst.TICKET,ticketId,ticketData); redisUtil.set(KylinRedisConst.TICKET + ticketId, ticketData);
}
return (KylinTicketVo) redisUtil.get(KylinRedisConst.TICKET + ticketId);
} }
return (KylinTicketVo) redisUtil.hget(KylinRedisConst.TICKET,ticketId);
/**
* 删除票种redis
*
* @param ticketId
*/
public void delTicketRedis(String ticketId) {
redisUtil.del(KylinRedisConst.TICKET + ticketId);
}
/**
* 根据订单id 获取 订单vo 详情
*
* @param orderId
* @return
*/
public KylinOrderTicketVo getOrderTicketVo(String orderId) {
if (redisUtil.hasKey(KylinRedisConst.ORDER + orderId)) {
} else {
KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.ORDER + orderId, ticketData);
}
return (KylinOrderTicketVo) redisUtil.get(KylinRedisConst.ORDER + orderId);
}
/**
* 删除订单redis
*
* @param orderId
*/
public void delOrderTicketRedis(String orderId) {
redisUtil.del(KylinRedisConst.ORDER + orderId);
}
/**
* 根据订单入场人id 获取 订单入场人vo 详情
*
* @param orderEntitiesId
* @return list
*/
public KylinOrderTicketEntitiesVo getOrderTicketEntitiesVo(String orderEntitiesId) {
if (redisUtil.hasKey(KylinRedisConst.ORDER_ENTITIES + orderEntitiesId)) {
} else {
KylinOrderTicketEntitiesVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketEntitiesId").is(orderEntitiesId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.ORDER_ENTITIES + orderEntitiesId, ticketData);
}
return (KylinOrderTicketEntitiesVo) redisUtil.get(KylinRedisConst.ORDER_ENTITIES + orderEntitiesId);
}
/**
* 删除订单redis
*
* @param orderEntitiesId
*/
public void delOrderTicketEntitiesRedis(String orderEntitiesId) {
redisUtil.del(KylinRedisConst.ORDER_ENTITIES + orderEntitiesId);
}
/**
* 获取bannerVo
* @param bannerId
* @return
*/
public KylinBannersVo getBannersVo(String bannerId){
if (redisUtil.hasKey(KylinRedisConst.BANNERS + bannerId)) {
} else {
KylinBannersVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("bannersId").is(bannerId)), KylinBannersVo.class, KylinBannersVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.BANNERS + bannerId, ticketData);
}
return (KylinBannersVo) redisUtil.get(KylinRedisConst.BANNERS + bannerId);
}
/**
* 删除 banner redis
* @param bannerId
*/
public void delBannersRedis(String bannerId) {
redisUtil.del(KylinRedisConst.BANNERS + bannerId);
}
/**
* 获取 推荐演出vo
* @param recommendId
* @return
*/
public KylinPerformanceVo getPerformanceRecommendVo(String recommendId){
if (redisUtil.hasKey(KylinRedisConst.PERFORMANCES_RECOMMEND + recommendId)) {
} else {
KylinPerformanceVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(recommendId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.PERFORMANCES_RECOMMEND + recommendId, ticketData);
}
return (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES_RECOMMEND + recommendId);
}
/**
* 删除 推荐演出 redis
* @param recommendId
*/
public void delPerformanceRecommendRedis(String recommendId) {
redisUtil.del(KylinRedisConst.PERFORMANCES_RECOMMEND + recommendId);
}
/**
* 获取 验票账号 vo
* @param checkUserId
* @return
*/
public KylinCheckUserVo getCheckUserVo(String checkUserId){
if (redisUtil.hasKey(KylinRedisConst.CHECK_USER + checkUserId)) {
} else {
KylinCheckUserVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("checkUserId").is(checkUserId)), KylinCheckUserVo.class, KylinCheckUserVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.CHECK_USER + checkUserId, ticketData);
}
return (KylinCheckUserVo) redisUtil.get(KylinRedisConst.CHECK_USER + checkUserId);
}
/**
* 删除 验票账号 redis
* @param checkUserId
*/
public void delCheckUserRedis(String checkUserId) {
redisUtil.del(KylinRedisConst.CHECK_USER + checkUserId);
}
/**
* 获取 验票账号关系 vo
* @param checkUserId
* @return
*/
public KylinCheckUserPerformanceVo getCheckUserRelationVo(String checkUserId){
if (redisUtil.hasKey(KylinRedisConst.CHECK_USER_RELATION + checkUserId)) {
} else {
KylinCheckUserPerformanceVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("checkUserId").is(checkUserId)), KylinCheckUserPerformanceVo.class, KylinCheckUserPerformanceVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.CHECK_USER_RELATION + checkUserId, ticketData);
}
return (KylinCheckUserPerformanceVo) redisUtil.get(KylinRedisConst.CHECK_USER_RELATION + checkUserId);
}
/**
* 删除 验票账号关系 vo
* @param checkUserId
*/
public void delCheckUserRelationRedis(String checkUserId) {
redisUtil.del(KylinRedisConst.CHECK_USER_RELATION + checkUserId);
} }
} }
kylin_order_ticket_entities.add=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=? kylin_order_ticket_entities.add=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_entities.synPay=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
kylin_order_ticket_status.add=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=? kylin_order_ticket_status.add=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_status.synPay=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_status.close=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
kylin_order_ticket.add=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=? kylin_order_ticket.add=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket.payAgain=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket.synPay=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket.close=UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
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