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

Commit 934b40e1 authored by jiangxiulong's avatar jiangxiulong

kylin用户发起退款拿出来 手续费规则

parent bd6e74fd
......@@ -31,26 +31,6 @@ public interface IKylinOrderTicketsService {
//订单未支付数量
ResponseDto<Integer> orderUnPayCount();
//想要退款详情
ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(String orderId);
//退款详情
ResponseDto<OrderRefundVo> orderRefundDetails(String orderId, String orderRefundId);
/**
* 发起退款
*
* @param orderId 订单id
* @param orderTicketEntitiesId 票单id
* @param reason 退款原因
* @param picList 证据截图
* @return 是否成功
*/
ResponseDto sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList, Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime);
//退款撤回
ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId);
//发起转赠订单
ResponseDto<String> orderTransfer(String orderId, String transferUid, String transferMobile);
......
......@@ -352,36 +352,6 @@ public class DataUtils {
return ret;
}
// 获取手续费
public ArrayList<OrderRefundPoundage> getRefundPoundage(){
Object obj = redisUtil.get(KylinRedisConst.ORDER_REFUND_POUNDAGE);
if(obj==null){
ArrayList<OrderRefundPoundage> voList = new ArrayList();
OrderRefundPoundage vo1 = OrderRefundPoundage.getNew();
vo1.setDay(15);
vo1.setContent("距离演出开始日期>15天");
vo1.setPresent(BigDecimal.valueOf(0.1));
vo1.setIsCanRefund(1);
OrderRefundPoundage vo2 = OrderRefundPoundage.getNew();
vo2.setDay(3);
vo2.setContent("距离演出开始日期>3天-15天(含15天)");
vo2.setPresent(BigDecimal.valueOf(0.5));
vo2.setIsCanRefund(1);
OrderRefundPoundage vo3 = OrderRefundPoundage.getNew();
vo3.setDay(0);
vo3.setContent("距离演出开始日期≤3天(含演出当天)");
vo3.setPresent(BigDecimal.valueOf(0));
vo3.setIsCanRefund(1);
voList.add(vo1);
voList.add(vo2);
voList.add(vo3);
redisUtil.set(KylinRedisConst.ORDER_REFUND_POUNDAGE,voList);
return voList;
}else{
return (ArrayList<OrderRefundPoundage>)obj;
}
}
// 获取 快递地址
public OrderRefundAddress getRefundAddress(){
Object obj = redisUtil.get(KylinRedisConst.ORDER_REFUND_ADDRESS);
......
......@@ -5,20 +5,13 @@ import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.ErrorMapping;
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.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl;
import io.swagger.annotations.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.HashMap;
......@@ -86,67 +79,6 @@ public class KylinOrderTicketsController {
}
}
@GetMapping("toOrderRefundDetails")
@ApiOperation("想要退款订单详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(
@RequestParam(value = "orderId", required = false) @NotNull(message = "订单ID不能为空") String orderId
) {
return orderTicketsService.toOrderRefundDetails(orderId);
}
@PostMapping("sendOrderRefunds")
@ApiOperation("发起退款申请")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "orderId", value = "订单ID", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "orderTicketEntitiesId", value = "订单入场人ID", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "reason", value = "退款申请备注", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "picList", value = "图片"),
@ApiImplicitParam(type = "form", dataType = "Integer", name = "sendExpressType", value = "快递方式 1上门取件 2自主发货"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressNumber", value = "自主发货的顺丰订单号"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressContacts", value = "发货人姓名"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressPhone", value = "发货人联系方式"),
@ApiImplicitParam(type = "form", dataType = "String", name = "sendExpressAddress", value = "取件地址"),
@ApiImplicitParam(type = "form", dataType = "String", name = "appointmentTime", value = "预约取件时间")
})
public ResponseDto sendOrderRefund(
@RequestParam(value = "orderId", required = true) @NotNull(message = "订单ID不能为空") String orderId,
@RequestParam(value = "orderTicketEntitiesId", required = true) @NotNull(message = "票单ID不能为空") String orderTicketEntitiesId,
@RequestParam(value = "reason", required = true) @NotNull(message = "退款原因不能为空") String reason,
@RequestParam(value = "picList", required = false) String picList,
@RequestParam(value = "sendExpressType", required = false) Integer sendExpressType,
@RequestParam(value = "expressNumber", required = false) String expressNumber,
@RequestParam(value = "expressContacts", required = false) String expressContacts,
@RequestParam(value = "expressPhone", required = false) String expressPhone,
@RequestParam(value = "sendExpressAddress", required = false) String sendExpressAddress,
@RequestParam(value = "appointmentTime", required = false) String appointmentTime
) {
// 退款
return orderTicketsService.sendOrderRefund(
orderId, orderTicketEntitiesId, reason, picList,
sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime
);
}
@GetMapping("orderRefundDetails")
@ApiOperation("退款申请详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<OrderRefundVo> orderRefundDetails(@RequestParam(value = "orderId", required = true) @NotNull(message = "订单ID不能为空") String orderId,
@RequestParam(value = "orderRefundId", required = true) @NotNull(message = "退款订单ID不能为空") String orderRefundId) {
return orderTicketsService.orderRefundDetails(orderId, orderRefundId);
}
@PostMapping("orderRefundWithdraw")
@ApiOperation("发起退款撤回")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<Boolean> orderRefundWithdraw(@RequestParam(value = "orderRefundId", required = true) @NotNull(message = "退款订单ID不能为空") String orderRefundId) {
return orderTicketsService.orderRefundWithdraw(orderRefundId);
}
@GetMapping("orderUnPayCount")
@ApiOperation("待支付演出订单数量")
@ApiResponse(code = 200, message = "接口返回对象参数")
......
package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderTicketPreVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderRefundVo;
import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsRefundServiceImpl;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
/**
* <p>
* 订单用户申请退款 前端控制器
* </p>
*
* @author 姜秀龙
* @since 2021-09-16
*/
@Api(tags = "前端-订单相关")
@RestController
@RequestMapping("orderRefund")
@Validated
public class KylinOrderTicketsRefundController {
@Autowired
KylinOrderTicketsRefundServiceImpl kylinOrderTicketsRefundService;
@GetMapping("toOrderRefundDetails")
@ApiOperation("想要退款订单详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(
@RequestParam(value = "orderId", required = false) @NotNull(message = "订单ID不能为空") String orderId
) {
return kylinOrderTicketsRefundService.toOrderRefundDetails(orderId);
}
@PostMapping("sendOrderRefunds")
@ApiOperation("发起退款申请")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "orderId", value = "订单ID", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "orderTicketEntitiesId", value = "订单入场人ID", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "reason", value = "退款申请备注", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "picList", value = "图片"),
@ApiImplicitParam(type = "form", dataType = "Integer", name = "sendExpressType", value = "快递方式 1上门取件 2自主发货"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressNumber", value = "自主发货的顺丰订单号"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressContacts", value = "发货人姓名"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressPhone", value = "发货人联系方式"),
@ApiImplicitParam(type = "form", dataType = "String", name = "sendExpressAddress", value = "取件地址"),
@ApiImplicitParam(type = "form", dataType = "String", name = "appointmentTime", value = "预约取件时间")
})
public ResponseDto sendOrderRefund(
@RequestParam(value = "orderId", required = true) @NotNull(message = "订单ID不能为空") String orderId,
@RequestParam(value = "orderTicketEntitiesId", required = true) @NotNull(message = "票单ID不能为空") String orderTicketEntitiesId,
@RequestParam(value = "reason", required = true) @NotNull(message = "退款原因不能为空") String reason,
@RequestParam(value = "picList", required = false) String picList,
@RequestParam(value = "sendExpressType", required = false) Integer sendExpressType,
@RequestParam(value = "expressNumber", required = false) String expressNumber,
@RequestParam(value = "expressContacts", required = false) String expressContacts,
@RequestParam(value = "expressPhone", required = false) String expressPhone,
@RequestParam(value = "sendExpressAddress", required = false) String sendExpressAddress,
@RequestParam(value = "appointmentTime", required = false) String appointmentTime
) {
// 退款
return kylinOrderTicketsRefundService.sendOrderRefund(
orderId, orderTicketEntitiesId, reason, picList,
sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime
);
}
@GetMapping("orderRefundDetails")
@ApiOperation("退款申请详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<OrderRefundVo> orderRefundDetails(@RequestParam(value = "orderId", required = true) @NotNull(message = "订单ID不能为空") String orderId,
@RequestParam(value = "orderRefundId", required = true) @NotNull(message = "退款订单ID不能为空") String orderRefundId) {
return kylinOrderTicketsRefundService.orderRefundDetails(orderId, orderRefundId);
}
@PostMapping("orderRefundWithdraw")
@ApiOperation("发起退款撤回")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<Boolean> orderRefundWithdraw(@RequestParam(value = "orderRefundId", required = true) @NotNull(message = "退款订单ID不能为空") String orderRefundId) {
return kylinOrderTicketsRefundService.orderRefundWithdraw(orderRefundId);
}
}
package com.liquidnet.service.kylin.service.impl;
import com.alibaba.fastjson.JSON;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.utils.*;
import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.bson.Document;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* <p>
* 订单用户申请退款 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-09-16
*/
@Service
@Slf4j
public class KylinOrderTicketsRefundServiceImpl {
@Autowired
private DataUtils dataUtils;
@Autowired
private OrderUtils orderUtils;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private QueueUtils queueUtils;
@Autowired
private KylinRefundsStatusServiceImpl refundsStatusService;
@Value("${liquidnet.express.shunfeng.custid}")
private String custid;
@Value("${liquidnet.express.shunfeng.expressType}")
private Integer expressType;
@Value("${liquidnet.express.shunfeng.depositumInfo}")
private String depositumInfo;
@Autowired
private ShunfengSignUtils shunfengSignUtils;
public ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(String orderId) {
try {
// 订单 演出 订单退款数据
KylinOrderTicketPreVo vo = KylinOrderTicketPreVo.getNew();
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList = dataUtils.getOrderRefundVoByOrderId(orderTicketVo.getOrderTicketsId());
// 判断是否购买人
if (uid.equals("809406") || uid.equals("773650")) {
} else {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.failure(ErrorMapping.get("20003"));
}
}
// 入场人 数据脱敏/退款
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = orderTicketVo.getEntitiesVoList();
List<KylinOrderTicketEntitiesPreRefundVo> kylinOrderTicketEntitiesPreRefundVos = ObjectUtil.getKylinOrderTicketEntitiesPreRefundVoArrayList();
for (KylinOrderTicketEntitiesVo item : kylinOrderTicketEntitiesVoList) {
KylinOrderTicketEntitiesPreRefundVo refundVo = KylinOrderTicketEntitiesPreRefundVo.getNew();
if (item.getEnterIdCode().length() == 18) {
item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16));
}
if (item.getEnterMobile().length() == 11) {
item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7));
}
item.setPriceActual(orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber())));
item.setPriceCanRefund(dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, item.getOrderTicketEntitiesId()));
BeanUtils.copyProperties(item, refundVo);
kylinOrderTicketEntitiesPreRefundVos.add(refundVo);
}
// FieldName
orderTicketVo.setFieldName(performanceVo.getFieldName());
// 短OrderCode
if (orderTicketVo.getOrderCode().length() > 20) {
orderTicketVo.setOrderCode(orderTicketVo.getOrderCode().substring(orderTicketVo.getOrderCode().length() - 10));
}
// 手续费相关
ArrayList<OrderRefundPoundage> refundPoundage = dataUtils.getRefundPoundage(performanceVo.getIsRefundPoundage());
// 券
ArrayList<KylinOrderCoupons> orderCoupon = dataUtils.getOrderCoupon(orderId);
// 快递地址
OrderRefundAddress refundAddress = dataUtils.getRefundAddress(orderTicketVo.getGetTicketType());
// 整理返回数据
BeanUtils.copyProperties(orderTicketVo, vo);
vo.setIsRefundPoundage(performanceVo.getIsRefundPoundage());
vo.setRefundPoundageList(refundPoundage);
vo.setOrderCouponList(orderCoupon);
vo.setRefundAddress(refundAddress);
vo.setIsTrueName(performanceVo.getIsTrueName());
vo.setEntitiesPreRefundVos(kylinOrderTicketEntitiesPreRefundVos);
return ResponseDto.success(vo);
} catch (Exception e) {
log.error("toOrderRefundDetailsException", e);
return ResponseDto.failure(ErrorMapping.get("20030"));
}
}
public ResponseDto<OrderRefundVo> orderRefundDetails(String orderId, String orderRefundId) {
try {
OrderRefundVo vo = OrderRefundVo.getNew();
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
if (uid.equals("809406") || uid.equals("773650")) {
} else {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.failure(ErrorMapping.get("20003"));
}
}
orderTicketVo.setFieldName(performanceVo.getFieldName());
if (orderTicketVo.getOrderCode().length() > 20) {
orderTicketVo.setOrderCode(orderTicketVo.getOrderCode().substring(orderTicketVo.getOrderCode().length() - 10));
}
KylinOrderRefundsVo kylinOrderRefundsVoBase = dataUtils.getOrderRefundVo(orderRefundId);
if (kylinOrderRefundsVoBase.getOrderRefundCode().length() > 20) {
kylinOrderRefundsVoBase.setOrderRefundCode(kylinOrderRefundsVoBase.getOrderRefundCode().substring(kylinOrderRefundsVoBase.getOrderRefundCode().length() - 10));
}
vo.setKylinOrderRefundsVoBaseList(kylinOrderRefundsVoBase);
vo.setOrderTicketVo(orderTicketVo);
vo.setKylinOrderExpressVo(dataUtils.getOrderRefundExpressInfo(orderId));
return ResponseDto.success(vo);
} catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure(ErrorMapping.get("20030"));
}
}
public ResponseDto sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList, Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime) {
KylinOrderTicketEntitiesVo orderTicketEntitiesVo = null;
try {
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList = dataUtils.getOrderRefundVoByOrderId(orderTicketVo.getOrderTicketsId());
if (uid.equals("809406") || uid.equals("773650")) {
} else {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.failure("无权查看");
}
}
if (!orderTicketVo.getPayStatus().equals(1)) {
return ResponseDto.failure("暂不支持退款");
}
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
KylinTicketVo ticketVo = null;
//获取购票数据
for (int x = 0; x < performanceVo.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = performanceVo.getTicketTimeList().get(x);
for (int y = 0; y < timeItem.getTicketList().size(); y++) {
KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
if (ticketItem.getTicketsId().equals(orderTicketVo.getTicketId())) {
ticketVo = ticketItem;
break;
}
}
}
if (null != performanceVo.getIsCanRefund() && performanceVo.getIsCanRefund() == 1) {
LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime());
LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime());
if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate)
&& ticketVo.getCounts() == 1) {
} else {
return ResponseDto.failure("暂不支持退款");
}
} else {
return ResponseDto.failure("暂不支持退款");
}
List<KylinOrderTicketEntitiesVo> entitiesVos = orderTicketVo.getEntitiesVoList();
for (KylinOrderTicketEntitiesVo item : entitiesVos) {
if (item.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) {
orderTicketEntitiesVo = item;
}
}
if (null == orderTicketEntitiesVo) {
return ResponseDto.failure("订单不存在");
}
BigDecimal refundSinglePrice = dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, orderTicketEntitiesId);
if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) {
return ResponseDto.failure("申请金额不得小于0");
}
// 手续费处理
ArrayList<OrderRefundPoundage> refundPoundage = dataUtils.getRefundPoundage(performanceVo.getIsRefundPoundage());
BigDecimal priceCharges = BigDecimal.valueOf(0);
if (!CollectionUtils.isEmpty(refundPoundage)) {
// 手续费比例
BigDecimal chargesNum = BigDecimal.valueOf(0);
// 票种演出开始时间
String useStart = orderTicketVo.getUseStart();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime useStartD = LocalDateTime.parse(useStart, df);
// 3、15天之前的时间 时间可变
int oneDay = refundPoundage.get(0).getDay();
int twoDay = refundPoundage.get(1).getDay();
LocalDateTime useStartD15Before = useStartD.minusDays(oneDay);
LocalDateTime useStartD3Before = useStartD.minusDays(twoDay);
// 当前时间
LocalDateTime nowTime = LocalDateTime.now();
if (useStartD15Before.isAfter(nowTime)) { // 15天以前的时间大于当前时间 距离演出开始日期>15天
int isCanRefund = refundPoundage.get(0).getIsCanRefund();
if (isCanRefund > 0) {
chargesNum = refundPoundage.get(0).getPresent();
} else {
return ResponseDto.failure("当前日期不支持退票");
}
} else if (useStartD3Before.isAfter(nowTime)) { // 3天以前的时间大于当前时间 距离演出开始日期>3天-15天 含15天
int isCanRefund = refundPoundage.get(1).getIsCanRefund();
if (isCanRefund > 0) {
chargesNum = refundPoundage.get(1).getPresent();
} else {
return ResponseDto.failure("当前日期不支持退票");
}
} else { // 三天以内 <=3
int isCanRefund = refundPoundage.get(2).getIsCanRefund();
if (isCanRefund > 0) {
chargesNum = refundPoundage.get(2).getPresent();
} else {
return ResponseDto.failure("当前日期不支持退票");
}
}
priceCharges = refundSinglePrice.multiply(chargesNum).setScale(2, BigDecimal.ROUND_HALF_UP);
refundSinglePrice = refundSinglePrice.subtract(priceCharges);
if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) {
return ResponseDto.failure("申请金额不得小于0哦~");
}
} else{
log.info("演出id1111 {}", orderTicketVo.getPerformanceId());
}
// 快递费 现在只有到付 不作处理
// 如果后期有这种情况 需要判断是否是最后一张入场人票 然后减去已经退的快递费 计算进来即可
BigDecimal priceExpress = BigDecimal.valueOf(0);
Map token = CurrentUtil.getTokenClaims();
String username = StringUtils.defaultString(((String) token.get("nickname")), "");
String orderRefundId = refundsStatusService.userOrderTicketRefunding(orderTicketVo, refundSinglePrice, priceExpress, priceCharges, orderTicketEntitiesId, reason, picList, uid, username, kylinOrderRefundsVoBaseList.size());
if (!orderRefundId.isEmpty()) {
// 退款申请成功 异步去快递下单
if (orderTicketVo.getGetTicketType().equals("express") && sendExpressType > 0) {// 快递票
expressPlace(sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime, orderTicketVo, performanceVo);
}
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("orderRefundsId", orderRefundId);
return ResponseDto.success(map);
} else {
return ResponseDto.failure("申请失败");
}
} catch (Exception e) {
log.error("sendOrderRefundException e:[{}]", e);
return ResponseDto.failure("申请失败");
}
}
@Async
public void expressPlace(Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime, KylinOrderTicketVo orderTicketVo, KylinPerformanceVo performanceVo) {
if (sendExpressType == 1) { // 上门取件
// 请求下单数据
Map<String, String> hBody = new HashMap<>();
hBody.put("custid", custid);
hBody.put("jContact", expressContacts);
hBody.put("jMobile", expressPhone);
hBody.put("jAddress", sendExpressAddress);
hBody.put("sendStartTime", appointmentTime);
Integer isRefundExpress = performanceVo.getIsRefundExpress();
if (isRefundExpress == 1) { // 1用户承担 0无 公司月结
hBody.put("payMethod", "1");// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
} else {
hBody.put("payMethod", "2");// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
}
hBody.put("expressType", expressType.toString());// 顺丰特快
hBody.put("depositumInfo", depositumInfo);
hBody.put("isDoCall", "1"); // 是否通过手持终端通知顺丰收派员上门收件,支持以下值:1-要求;0-不要求
String orderExpressId = IDGenerator.nextSnowId();
String OrderExpressCode = "NOWUR" + orderExpressId;
hBody.put("orderId", OrderExpressCode);
hBody.put("depositumNo", orderTicketVo.getNumber().toString());
OrderRefundAddress refundAddress = dataUtils.getRefundAddress(orderTicketVo.getGetTicketType());
hBody.put("dContact", refundAddress.getName());
hBody.put("dTel", refundAddress.getPhone());
hBody.put("dAddress", refundAddress.getAddress());
// 生成签名并请求
String result = shunfengSignUtils.generateSignatureAndRequestNew(hBody, "/public/order/v1/placeOrder");
HashMap hashMap = new HashMap();
try {
hashMap = JsonUtils.fromJson(result, HashMap.class);
} catch (Exception e) {
log.info("expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]", sendExpressType, sendExpressAddress, appointmentTime, expressNumber, orderTicketVo);
log.error("expressPlaceExceptionError", e);
}
if (null == hashMap.get("succ") || hashMap.get("succ").equals("fail")) {
String msg = "";
if (null == hashMap.get("succ")) {
msg = result;
} else {
msg = (String) hashMap.get("msg");
}
log.info("expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]", sendExpressType, sendExpressAddress, appointmentTime, expressNumber, orderTicketVo);
log.error("expressPlaceResultError", msg);
} else {
HashMap hashMapResult = (HashMap) hashMap.get("result");
// 生成预快递单 REDIS 队列入数据库
LocalDateTime now = LocalDateTime.now();
LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("kylin_order_refund.refundOrderExpress"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
orderExpressId, orderTicketVo.getPerformanceId(), orderTicketVo.getOrderTicketsId(), OrderExpressCode, hashMapResult.get("mailno"), expressType, hashMapResult.get("filter_result"), hashMapResult.get("remark"), KylinTableStatusConst.ORDER_EXPRESS_STATUS2
, 2, sendExpressType, expressContacts, expressPhone, sendExpressAddress, appointmentTime
, hashMapResult.get("proName"), hashMapResult.get("cargoTypeCode"), hashMapResult.get("limitTypeCode"), hashMapResult.get("expressTypeCode"), hashMapResult.get("goodsValueTotal"), hashMapResult.get("goodsNumber")
, now
});
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_REFUND_EXPRESS.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
KylinOrderExpressVo kylinOrderExpressVo = KylinOrderExpressVo.getNew();
kylinOrderExpressVo.setOrderExpressId(orderExpressId);
kylinOrderExpressVo.setOrderTicketsId(orderTicketVo.getOrderTicketsId());
kylinOrderExpressVo.setOrderExpressCode(OrderExpressCode);
kylinOrderExpressVo.setMailno((String) hashMapResult.get("mailno"));
kylinOrderExpressVo.setExpressStatus(KylinTableStatusConst.ORDER_EXPRESS_STATUS2);
kylinOrderExpressVo.setSendExpressType(sendExpressType);
dataUtils.setOrderRefundExpressInfo(orderTicketVo.getOrderTicketsId(), kylinOrderExpressVo);
}
} else if (sendExpressType == 2) { // 自主发货
// 生成预快递单 REDIS 队列入数据库
String orderExpressId = IDGenerator.nextSnowId();
String OrderExpressCode = "NEWUR" + orderExpressId;
LocalDateTime now = LocalDateTime.now();
LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("kylin_order_refund.refundOrderExpress"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
orderExpressId, orderTicketVo.getPerformanceId(), orderTicketVo.getOrderTicketsId(), OrderExpressCode, expressNumber, expressType, "", "", KylinTableStatusConst.ORDER_EXPRESS_STATUS2
, 2, sendExpressType, expressContacts, expressPhone, sendExpressAddress, appointmentTime
, "", "", "", "", "", ""
, now
});
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_REFUND_EXPRESS.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
KylinOrderExpressVo kylinOrderExpressVo = KylinOrderExpressVo.getNew();
kylinOrderExpressVo.setOrderExpressId(orderExpressId);
kylinOrderExpressVo.setOrderTicketsId(orderTicketVo.getOrderTicketsId());
kylinOrderExpressVo.setOrderExpressCode(OrderExpressCode);
kylinOrderExpressVo.setMailno(expressNumber);
kylinOrderExpressVo.setExpressStatus(KylinTableStatusConst.ORDER_EXPRESS_STATUS2);
kylinOrderExpressVo.setSendExpressType(sendExpressType);
dataUtils.setOrderRefundExpressInfo(orderTicketVo.getOrderTicketsId(), kylinOrderExpressVo);
}
}
public ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsDataC = CollectionUtil.linkedListObjectArr();
LocalDateTime time = LocalDateTime.now();
String strTime = DateUtil.Formatter.yyyyMMddHHmmss.format(time);
try {
KylinOrderRefundsVo orderRefundsVo = dataUtils.getOrderRefundVo(orderRefundsId);
if (!orderRefundsVo.getStatus().equals(0)) {
return ResponseDto.failure(ErrorMapping.get("20020"));
}
List<KylinOrderRefundEntitiesVo> refundEntities = orderRefundsVo.getOrderRefundEntitiesVoList();
String orderTicketsId = orderRefundsVo.getOrderTicketsId();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderTicketsId);
// 更新数据
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int newStatus;
int refundingCount = 0;
List<KylinOrderRefundsVo> orderRefundsVoList = dataUtils.getOrderRefundVoByOrderId(orderTicketsId);
for (KylinOrderRefundsVo item : orderRefundsVoList) {
int status = item.getStatus();
log.info("status = " + status);
if (status != 2 && status != 4 && status != 5 && !item.getOrderRefundsId().equals(orderRefundsId)) {
refundingCount += 1;
}
}
if (refundingCount > 0) { // 存在其他正在退款的订单
newStatus = KylinTableStatusConst.ORDER_STATUS3;
} else {
if (orderTicketVo.getPriceRefund().doubleValue() > 0) { // 已经有退完的 那就是部分退款了
newStatus = KylinTableStatusConst.ORDER_STATUS6;
} else if (orderTicketVo.getStatus() != 2) {
newStatus = KylinTableStatusConst.ORDER_STATUS1;
} else {
newStatus = KylinTableStatusConst.ORDER_STATUS2;
}
}
KylinOrderTicketStatus orderStatusTable = KylinOrderTicketStatus.getNew();
log.info("newStatus = " + newStatus);
orderStatusTable.setStatus(newStatus);
orderStatusTable.setUpdatedAt(time);
LocalDateTime now = LocalDateTime.now();
sqlsDataA.add(new Object[]{
orderStatusTable.getStatus(), orderStatusTable.getUpdatedAt(), orderTicketsId, now, now
});
KylinOrderTicketVo kylinOrderTicketVo = KylinOrderTicketVo.getNew();
kylinOrderTicketVo.setStatus(newStatus);
kylinOrderTicketVo.setUpdatedAt(strTime);
kylinOrderTicketVo.setChangeDate(time);
BasicDBObject orderObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketVo)));
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTicketsId)).getQueryObject(),
orderObject
);
// 入场人
for (KylinOrderRefundEntitiesVo item : refundEntities) {
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int newIsPayment = 0;
int refundingEntitiesCount = 0;
for (KylinOrderRefundsVo item2 : orderRefundsVoList) {
int status = item2.getStatus();
if (!item2.getOrderRefundsId().equals(orderRefundsId) && (status != 2 && status != 4 && status != 5)) {
for (KylinOrderRefundEntitiesVo item3 : item2.getOrderRefundEntitiesVoList()) {
if (item3.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
refundingEntitiesCount += 1;
}
}
}
/*for (KylinOrderRefundEntitiesVo item3 : item2.getOrderRefundEntitiesVoList()) {
if (item3.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
entitiesAllPrice.add(item3.getRefundPrice());
}
}*/
}
KylinOrderTicketEntitiesVo entitiesVo = null;
for (KylinOrderTicketEntitiesVo entitiesVo1 : orderTicketVo.getEntitiesVoList()) {
if (entitiesVo1.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
entitiesVo = entitiesVo1;
break;
}
}
log.info("getRefundPrice =" + item.getRefundPrice());
if (refundingEntitiesCount > 0) { // 存在其他正在退款的该入场人订单
newIsPayment = KylinTableStatusConst.ENTITIES_IS_PAYMENT2;
} else {
if (orderTicketVo.getPriceRefund().compareTo(BigDecimal.ZERO) > 0) { // 已经有退完的 那就是部分退款了
newIsPayment = KylinTableStatusConst.ENTITIES_IS_PAYMENT4;
} else {
newIsPayment = KylinTableStatusConst.ENTITIES_IS_PAYMENT1;
}
}
KylinOrderTicketEntities entitiesTable = KylinOrderTicketEntities.getNew();
entitiesTable.setIsPayment(newIsPayment);
entitiesTable.setUpdatedAt(time);
log.info("sqlsDataB data = " + entitiesTable.getIsPayment());
sqlsDataB.add(new Object[]{
entitiesTable.getIsPayment(), entitiesTable.getUpdatedAt(), item.getOrderTicketEntitiesId(), now, now
});
KylinOrderTicketEntitiesVo kylinOrderTicketEntitiesVo = KylinOrderTicketEntitiesVo.getNew();
kylinOrderTicketEntitiesVo.setIsPayment(newIsPayment);
kylinOrderTicketEntitiesVo.setUpdatedAt(strTime);
kylinOrderTicketEntitiesVo.setChangeDate(time);
// for (KylinOrderRefundEntitiesVo item2:orderRefundsVo.getOrderRefundEntitiesVoList()){
// if(item2.getOrderTicketEntitiesId().equalsIgnoreCase(item.getOrderTicketEntitiesId())){
// log.info("entitiesVo.getRefundPrice() = "+entitiesVo.getRefundPrice());
// log.info("item2.getRefundPrice() = "+item2.getRefundPrice());
kylinOrderTicketEntitiesVo.setRefundPrice(entitiesVo.getRefundPrice());
// }
// }
log.info("entitiesVo.getRefundPrice() = " + entitiesVo.getRefundPrice());
BasicDBObject entitiesObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketEntitiesVo)));
mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketEntitiesId").is(item.getOrderTicketEntitiesId())).getQueryObject(),
entitiesObject
);
dataUtils.delOrderTicketEntitiesRedis(item.getOrderTicketEntitiesId());
}
orderUtils.resetOrderListVo(orderTicketVo.getUserId(), 2, orderTicketsId, null);
// 退款细节取消
KylinOrderRefunds kylinOrderRefunds = KylinOrderRefunds.getNew();
kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL);
kylinOrderRefunds.setUpdatedAt(LocalDateTime.now());
mongoTemplate.getCollection(KylinOrderRefundsVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderRefundsId").is(orderRefundsId)).getQueryObject(),
new Document("$set", new Document("status", KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL).append("updatedAt", time))
);
sqlsDataC.add(new Object[]{
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL, time, orderRefundsId
});
dataUtils.delOrderRefundVo(orderRefundsId);
dataUtils.delOrderRefundVoByOrderId(orderTicketsId);
dataUtils.delOrderTicketRedis(orderTicketsId);
orderUtils.resetOrderListVo(CurrentUtil.getCurrentUid(), 2, orderTicketsId, null);
sqls.add(SqlMapping.get("kylin_order_ticket_status.withDraw"));
sqls.add(SqlMapping.get("kylin_order_ticket_entities.withDraw"));
sqls.add(SqlMapping.get("kylin_order_refund.withDraw"));
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_WITHDRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
return ResponseDto.success(true);
} catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure(ErrorMapping.get("20020"));
}
}
}
package com.liquidnet.service.kylin.service.impl;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
......@@ -11,12 +9,8 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
......@@ -24,7 +18,6 @@ import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.liquidnet.service.kylin.utils.*;
import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.bson.Document;
......@@ -34,9 +27,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -325,503 +316,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
return ResponseDto.success(unPayCount);
}
@Override
public ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(String orderId) {
try {
// 订单 演出 订单退款数据
KylinOrderTicketPreVo vo = KylinOrderTicketPreVo.getNew();
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList = dataUtils.getOrderRefundVoByOrderId(orderTicketVo.getOrderTicketsId());
// 判断是否购买人
if (uid.equals("809406") || uid.equals("773650")) {
} else {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.failure(ErrorMapping.get("20003"));
}
}
// 入场人 数据脱敏/退款
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = orderTicketVo.getEntitiesVoList();
List<KylinOrderTicketEntitiesPreRefundVo> kylinOrderTicketEntitiesPreRefundVos = ObjectUtil.getKylinOrderTicketEntitiesPreRefundVoArrayList();
for (KylinOrderTicketEntitiesVo item : kylinOrderTicketEntitiesVoList) {
KylinOrderTicketEntitiesPreRefundVo refundVo = KylinOrderTicketEntitiesPreRefundVo.getNew();
if (item.getEnterIdCode().length() == 18) {
item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16));
}
if (item.getEnterMobile().length() == 11) {
item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7));
}
item.setPriceActual(orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber())));
item.setPriceCanRefund(dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, item.getOrderTicketEntitiesId()));
BeanUtils.copyProperties(item, refundVo);
kylinOrderTicketEntitiesPreRefundVos.add(refundVo);
}
// FieldName
orderTicketVo.setFieldName(performanceVo.getFieldName());
// 短OrderCode
if (orderTicketVo.getOrderCode().length() > 20) {
orderTicketVo.setOrderCode(orderTicketVo.getOrderCode().substring(orderTicketVo.getOrderCode().length() - 10));
}
// 手续费相关
ArrayList<OrderRefundPoundage> refundPoundage = dataUtils.getRefundPoundage(performanceVo.getIsRefundPoundage());
// 券
ArrayList<KylinOrderCoupons> orderCoupon = dataUtils.getOrderCoupon(orderId);
// 快递地址
OrderRefundAddress refundAddress = dataUtils.getRefundAddress(orderTicketVo.getGetTicketType());
// 整理返回数据
BeanUtils.copyProperties(orderTicketVo, vo);
vo.setIsRefundPoundage(performanceVo.getIsRefundPoundage());
vo.setRefundPoundageList(refundPoundage);
vo.setOrderCouponList(orderCoupon);
vo.setRefundAddress(refundAddress);
vo.setIsTrueName(performanceVo.getIsTrueName());
vo.setEntitiesPreRefundVos(kylinOrderTicketEntitiesPreRefundVos);
return ResponseDto.success(vo);
} catch (Exception e) {
log.error("toOrderRefundDetailsException", e);
return ResponseDto.failure(ErrorMapping.get("20030"));
}
}
@Override
public ResponseDto<OrderRefundVo> orderRefundDetails(String orderId, String orderRefundId) {
try {
OrderRefundVo vo = OrderRefundVo.getNew();
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
if (uid.equals("809406") || uid.equals("773650")) {
} else {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.failure(ErrorMapping.get("20003"));
}
}
orderTicketVo.setFieldName(performanceVo.getFieldName());
if (orderTicketVo.getOrderCode().length() > 20) {
orderTicketVo.setOrderCode(orderTicketVo.getOrderCode().substring(orderTicketVo.getOrderCode().length() - 10));
}
KylinOrderRefundsVo kylinOrderRefundsVoBase = dataUtils.getOrderRefundVo(orderRefundId);
if (kylinOrderRefundsVoBase.getOrderRefundCode().length() > 20) {
kylinOrderRefundsVoBase.setOrderRefundCode(kylinOrderRefundsVoBase.getOrderRefundCode().substring(kylinOrderRefundsVoBase.getOrderRefundCode().length() - 10));
}
vo.setKylinOrderRefundsVoBaseList(kylinOrderRefundsVoBase);
vo.setOrderTicketVo(orderTicketVo);
vo.setKylinOrderExpressVo(dataUtils.getOrderRefundExpressInfo(orderId));
return ResponseDto.success(vo);
} catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure(ErrorMapping.get("20030"));
}
}
@Override
public ResponseDto sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList, Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime) {
KylinOrderTicketEntitiesVo orderTicketEntitiesVo = null;
try {
String uid = CurrentUtil.getCurrentUid();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList = dataUtils.getOrderRefundVoByOrderId(orderTicketVo.getOrderTicketsId());
if (uid.equals("809406") || uid.equals("773650")) {
} else {
if (!orderTicketVo.getUserId().equals(uid)) {
return ResponseDto.failure("无权查看");
}
}
if (!orderTicketVo.getPayStatus().equals(1)) {
return ResponseDto.failure("暂不支持退款");
}
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
KylinTicketVo ticketVo = null;
//获取购票数据
for (int x = 0; x < performanceVo.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = performanceVo.getTicketTimeList().get(x);
for (int y = 0; y < timeItem.getTicketList().size(); y++) {
KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
if (ticketItem.getTicketsId().equals(orderTicketVo.getTicketId())) {
ticketVo = ticketItem;
break;
}
}
}
if (null != performanceVo.getIsCanRefund() && performanceVo.getIsCanRefund() == 1) {
LocalDateTime refundOpenDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundOpenTime());
LocalDateTime refundCloseDate = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getRefundCloseTime());
if (LocalDateTime.now().isAfter(refundOpenDate) && LocalDateTime.now().isBefore(refundCloseDate)
&& ticketVo.getCounts() == 1) {
} else {
return ResponseDto.failure("暂不支持退款");
}
} else {
return ResponseDto.failure("暂不支持退款");
}
List<KylinOrderTicketEntitiesVo> entitiesVos = orderTicketVo.getEntitiesVoList();
for (KylinOrderTicketEntitiesVo item : entitiesVos) {
if (item.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) {
orderTicketEntitiesVo = item;
}
}
if (null == orderTicketEntitiesVo) {
return ResponseDto.failure("订单不存在");
}
BigDecimal refundSinglePrice = dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, orderTicketEntitiesId);
if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) {
return ResponseDto.failure("申请金额不得小于0");
}
// 手续费处理
ArrayList<OrderRefundPoundage> refundPoundage = dataUtils.getRefundPoundage(performanceVo.getIsRefundPoundage());
BigDecimal priceCharges = BigDecimal.valueOf(0);
if (!CollectionUtils.isEmpty(refundPoundage)) {
// 手续费比例
BigDecimal chargesNum = BigDecimal.valueOf(0);
// 票种演出开始时间
String useStart = orderTicketVo.getUseStart();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime useStartD = LocalDateTime.parse(useStart, df);
// 3、15天之前的时间 时间可变
int oneDay = refundPoundage.get(0).getDay();
int twoDay = refundPoundage.get(1).getDay();
LocalDateTime useStartD15Before = useStartD.minusDays(oneDay);
LocalDateTime useStartD3Before = useStartD.minusDays(twoDay);
// 当前时间
LocalDateTime nowTime = LocalDateTime.now();
if (useStartD15Before.isAfter(nowTime)) { // 15天以前的时间大于当前时间 距离演出开始日期>15天
int isCanRefund = refundPoundage.get(0).getIsCanRefund();
if (isCanRefund > 0) {
chargesNum = refundPoundage.get(0).getPresent();
} else {
return ResponseDto.failure("当前日期不支持退票");
}
} else if (useStartD3Before.isAfter(nowTime)) { // 3天以前的时间大于当前时间 距离演出开始日期>3天-15天 含15天
int isCanRefund = refundPoundage.get(1).getIsCanRefund();
if (isCanRefund > 0) {
chargesNum = refundPoundage.get(1).getPresent();
} else {
return ResponseDto.failure("当前日期不支持退票");
}
} else { // 三天以内 <=3
int isCanRefund = refundPoundage.get(2).getIsCanRefund();
if (isCanRefund > 0) {
chargesNum = refundPoundage.get(2).getPresent();
} else {
return ResponseDto.failure("当前日期不支持退票");
}
}
priceCharges = refundSinglePrice.multiply(chargesNum).setScale(2, BigDecimal.ROUND_HALF_UP);
refundSinglePrice = refundSinglePrice.subtract(priceCharges);
if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) {
return ResponseDto.failure("申请金额不得小于0哦~");
}
} else{
log.info("演出id1111 {}", orderTicketVo.getPerformanceId());
}
// 快递费 现在只有到付 不作处理
// 如果后期有这种情况 需要判断是否是最后一张入场人票 然后减去已经退的快递费 计算进来即可
BigDecimal priceExpress = BigDecimal.valueOf(0);
Map token = CurrentUtil.getTokenClaims();
String username = StringUtils.defaultString(((String) token.get("nickname")), "");
String orderRefundId = refundsStatusService.userOrderTicketRefunding(orderTicketVo, refundSinglePrice, priceExpress, priceCharges, orderTicketEntitiesId, reason, picList, uid, username, kylinOrderRefundsVoBaseList.size());
if (!orderRefundId.isEmpty()) {
// 退款申请成功 异步去快递下单
if (orderTicketVo.getGetTicketType().equals("express") && sendExpressType > 0) {// 快递票
expressPlace(sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime, orderTicketVo, performanceVo);
}
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("orderRefundsId", orderRefundId);
return ResponseDto.success(map);
} else {
return ResponseDto.failure("申请失败");
}
} catch (Exception e) {
log.error("sendOrderRefundException e:[{}]", e);
return ResponseDto.failure("申请失败");
}
}
@Async
public void expressPlace(Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime, KylinOrderTicketVo orderTicketVo, KylinPerformanceVo performanceVo) {
if (sendExpressType == 1) { // 上门取件
// 请求下单数据
Map<String, String> hBody = new HashMap<>();
hBody.put("custid", custid);
hBody.put("jContact", expressContacts);
hBody.put("jMobile", expressPhone);
hBody.put("jAddress", sendExpressAddress);
hBody.put("sendStartTime", appointmentTime);
Integer isRefundExpress = performanceVo.getIsRefundExpress();
if (isRefundExpress == 1) { // 1用户承担 0无 公司月结
hBody.put("payMethod", "1");// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
} else {
hBody.put("payMethod", "2");// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
}
hBody.put("expressType", expressType.toString());// 顺丰特快
hBody.put("depositumInfo", depositumInfo);
hBody.put("isDoCall", "1"); // 是否通过手持终端通知顺丰收派员上门收件,支持以下值:1-要求;0-不要求
String orderExpressId = IDGenerator.nextSnowId();
String OrderExpressCode = "NOWUR" + orderExpressId;
hBody.put("orderId", OrderExpressCode);
hBody.put("depositumNo", orderTicketVo.getNumber().toString());
OrderRefundAddress refundAddress = dataUtils.getRefundAddress(orderTicketVo.getGetTicketType());
hBody.put("dContact", refundAddress.getName());
hBody.put("dTel", refundAddress.getPhone());
hBody.put("dAddress", refundAddress.getAddress());
// 生成签名并请求
String result = shunfengSignUtils.generateSignatureAndRequestNew(hBody, "/public/order/v1/placeOrder");
HashMap hashMap = new HashMap();
try {
hashMap = JsonUtils.fromJson(result, HashMap.class);
} catch (Exception e) {
log.info("expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]", sendExpressType, sendExpressAddress, appointmentTime, expressNumber, orderTicketVo);
log.error("expressPlaceExceptionError", e);
}
if (null == hashMap.get("succ") || hashMap.get("succ").equals("fail")) {
String msg = "";
if (null == hashMap.get("succ")) {
msg = result;
} else {
msg = (String) hashMap.get("msg");
}
log.info("expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]", sendExpressType, sendExpressAddress, appointmentTime, expressNumber, orderTicketVo);
log.error("expressPlaceResultError", msg);
} else {
HashMap hashMapResult = (HashMap) hashMap.get("result");
// 生成预快递单 REDIS 队列入数据库
LocalDateTime now = LocalDateTime.now();
LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("kylin_order_refund.refundOrderExpress"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
orderExpressId, orderTicketVo.getPerformanceId(), orderTicketVo.getOrderTicketsId(), OrderExpressCode, hashMapResult.get("mailno"), expressType, hashMapResult.get("filter_result"), hashMapResult.get("remark"), KylinTableStatusConst.ORDER_EXPRESS_STATUS2
, 2, sendExpressType, expressContacts, expressPhone, sendExpressAddress, appointmentTime
, hashMapResult.get("proName"), hashMapResult.get("cargoTypeCode"), hashMapResult.get("limitTypeCode"), hashMapResult.get("expressTypeCode"), hashMapResult.get("goodsValueTotal"), hashMapResult.get("goodsNumber")
, now
});
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_REFUND_EXPRESS.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
KylinOrderExpressVo kylinOrderExpressVo = KylinOrderExpressVo.getNew();
kylinOrderExpressVo.setOrderExpressId(orderExpressId);
kylinOrderExpressVo.setOrderTicketsId(orderTicketVo.getOrderTicketsId());
kylinOrderExpressVo.setOrderExpressCode(OrderExpressCode);
kylinOrderExpressVo.setMailno((String) hashMapResult.get("mailno"));
kylinOrderExpressVo.setExpressStatus(KylinTableStatusConst.ORDER_EXPRESS_STATUS2);
kylinOrderExpressVo.setSendExpressType(sendExpressType);
dataUtils.setOrderRefundExpressInfo(orderTicketVo.getOrderTicketsId(), kylinOrderExpressVo);
}
} else if (sendExpressType == 2) { // 自主发货
// 生成预快递单 REDIS 队列入数据库
String orderExpressId = IDGenerator.nextSnowId();
String OrderExpressCode = "NEWUR" + orderExpressId;
LocalDateTime now = LocalDateTime.now();
LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("kylin_order_refund.refundOrderExpress"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(new Object[]{
orderExpressId, orderTicketVo.getPerformanceId(), orderTicketVo.getOrderTicketsId(), OrderExpressCode, expressNumber, expressType, "", "", KylinTableStatusConst.ORDER_EXPRESS_STATUS2
, 2, sendExpressType, expressContacts, expressPhone, sendExpressAddress, appointmentTime
, "", "", "", "", "", ""
, now
});
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_REFUND_EXPRESS.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
KylinOrderExpressVo kylinOrderExpressVo = KylinOrderExpressVo.getNew();
kylinOrderExpressVo.setOrderExpressId(orderExpressId);
kylinOrderExpressVo.setOrderTicketsId(orderTicketVo.getOrderTicketsId());
kylinOrderExpressVo.setOrderExpressCode(OrderExpressCode);
kylinOrderExpressVo.setMailno(expressNumber);
kylinOrderExpressVo.setExpressStatus(KylinTableStatusConst.ORDER_EXPRESS_STATUS2);
kylinOrderExpressVo.setSendExpressType(sendExpressType);
dataUtils.setOrderRefundExpressInfo(orderTicketVo.getOrderTicketsId(), kylinOrderExpressVo);
}
}
@Override
public ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsDataC = CollectionUtil.linkedListObjectArr();
LocalDateTime time = LocalDateTime.now();
String strTime = DateUtil.Formatter.yyyyMMddHHmmss.format(time);
try {
KylinOrderRefundsVo orderRefundsVo = dataUtils.getOrderRefundVo(orderRefundsId);
if (!orderRefundsVo.getStatus().equals(0)) {
return ResponseDto.failure(ErrorMapping.get("20020"));
}
List<KylinOrderRefundEntitiesVo> refundEntities = orderRefundsVo.getOrderRefundEntitiesVoList();
String orderTicketsId = orderRefundsVo.getOrderTicketsId();
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderTicketsId);
// 更新数据
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int newStatus;
int refundingCount = 0;
List<KylinOrderRefundsVo> orderRefundsVoList = dataUtils.getOrderRefundVoByOrderId(orderTicketsId);
for (KylinOrderRefundsVo item : orderRefundsVoList) {
int status = item.getStatus();
log.info("status = " + status);
if (status != 2 && status != 4 && status != 5 && !item.getOrderRefundsId().equals(orderRefundsId)) {
refundingCount += 1;
}
}
if (refundingCount > 0) { // 存在其他正在退款的订单
newStatus = KylinTableStatusConst.ORDER_STATUS3;
} else {
if (orderTicketVo.getPriceRefund().doubleValue() > 0) { // 已经有退完的 那就是部分退款了
newStatus = KylinTableStatusConst.ORDER_STATUS6;
} else if (orderTicketVo.getStatus() != 2) {
newStatus = KylinTableStatusConst.ORDER_STATUS1;
} else {
newStatus = KylinTableStatusConst.ORDER_STATUS2;
}
}
KylinOrderTicketStatus orderStatusTable = KylinOrderTicketStatus.getNew();
log.info("newStatus = " + newStatus);
orderStatusTable.setStatus(newStatus);
orderStatusTable.setUpdatedAt(time);
LocalDateTime now = LocalDateTime.now();
sqlsDataA.add(new Object[]{
orderStatusTable.getStatus(), orderStatusTable.getUpdatedAt(), orderTicketsId, now, now
});
KylinOrderTicketVo kylinOrderTicketVo = KylinOrderTicketVo.getNew();
kylinOrderTicketVo.setStatus(newStatus);
kylinOrderTicketVo.setUpdatedAt(strTime);
kylinOrderTicketVo.setChangeDate(time);
BasicDBObject orderObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketVo)));
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTicketsId)).getQueryObject(),
orderObject
);
// 入场人
for (KylinOrderRefundEntitiesVo item : refundEntities) {
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int newIsPayment = 0;
int refundingEntitiesCount = 0;
for (KylinOrderRefundsVo item2 : orderRefundsVoList) {
int status = item2.getStatus();
if (!item2.getOrderRefundsId().equals(orderRefundsId) && (status != 2 && status != 4 && status != 5)) {
for (KylinOrderRefundEntitiesVo item3 : item2.getOrderRefundEntitiesVoList()) {
if (item3.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
refundingEntitiesCount += 1;
}
}
}
/*for (KylinOrderRefundEntitiesVo item3 : item2.getOrderRefundEntitiesVoList()) {
if (item3.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
entitiesAllPrice.add(item3.getRefundPrice());
}
}*/
}
KylinOrderTicketEntitiesVo entitiesVo = null;
for (KylinOrderTicketEntitiesVo entitiesVo1 : orderTicketVo.getEntitiesVoList()) {
if (entitiesVo1.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
entitiesVo = entitiesVo1;
break;
}
}
log.info("getRefundPrice =" + item.getRefundPrice());
if (refundingEntitiesCount > 0) { // 存在其他正在退款的该入场人订单
newIsPayment = KylinTableStatusConst.ENTITIES_IS_PAYMENT2;
} else {
if (orderTicketVo.getPriceRefund().compareTo(BigDecimal.ZERO) > 0) { // 已经有退完的 那就是部分退款了
newIsPayment = KylinTableStatusConst.ENTITIES_IS_PAYMENT4;
} else {
newIsPayment = KylinTableStatusConst.ENTITIES_IS_PAYMENT1;
}
}
KylinOrderTicketEntities entitiesTable = KylinOrderTicketEntities.getNew();
entitiesTable.setIsPayment(newIsPayment);
entitiesTable.setUpdatedAt(time);
log.info("sqlsDataB data = " + entitiesTable.getIsPayment());
sqlsDataB.add(new Object[]{
entitiesTable.getIsPayment(), entitiesTable.getUpdatedAt(), item.getOrderTicketEntitiesId(), now, now
});
KylinOrderTicketEntitiesVo kylinOrderTicketEntitiesVo = KylinOrderTicketEntitiesVo.getNew();
kylinOrderTicketEntitiesVo.setIsPayment(newIsPayment);
kylinOrderTicketEntitiesVo.setUpdatedAt(strTime);
kylinOrderTicketEntitiesVo.setChangeDate(time);
// for (KylinOrderRefundEntitiesVo item2:orderRefundsVo.getOrderRefundEntitiesVoList()){
// if(item2.getOrderTicketEntitiesId().equalsIgnoreCase(item.getOrderTicketEntitiesId())){
// log.info("entitiesVo.getRefundPrice() = "+entitiesVo.getRefundPrice());
// log.info("item2.getRefundPrice() = "+item2.getRefundPrice());
kylinOrderTicketEntitiesVo.setRefundPrice(entitiesVo.getRefundPrice());
// }
// }
log.info("entitiesVo.getRefundPrice() = " + entitiesVo.getRefundPrice());
BasicDBObject entitiesObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketEntitiesVo)));
mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketEntitiesId").is(item.getOrderTicketEntitiesId())).getQueryObject(),
entitiesObject
);
dataUtils.delOrderTicketEntitiesRedis(item.getOrderTicketEntitiesId());
}
orderUtils.resetOrderListVo(orderTicketVo.getUserId(), 2, orderTicketsId, null);
// 退款细节取消
KylinOrderRefunds kylinOrderRefunds = KylinOrderRefunds.getNew();
kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL);
kylinOrderRefunds.setUpdatedAt(LocalDateTime.now());
mongoTemplate.getCollection(KylinOrderRefundsVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderRefundsId").is(orderRefundsId)).getQueryObject(),
new Document("$set", new Document("status", KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL).append("updatedAt", time))
);
sqlsDataC.add(new Object[]{
KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL, time, orderRefundsId
});
dataUtils.delOrderRefundVo(orderRefundsId);
dataUtils.delOrderRefundVoByOrderId(orderTicketsId);
dataUtils.delOrderTicketRedis(orderTicketsId);
orderUtils.resetOrderListVo(CurrentUtil.getCurrentUid(), 2, orderTicketsId, null);
sqls.add(SqlMapping.get("kylin_order_ticket_status.withDraw"));
sqls.add(SqlMapping.get("kylin_order_ticket_entities.withDraw"));
sqls.add(SqlMapping.get("kylin_order_refund.withDraw"));
queueUtils.sendMsgByRedis(MQConst.KylinQueue.SQL_ORDER_WITHDRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
return ResponseDto.success(true);
} catch (Exception e) {
e.printStackTrace();
return ResponseDto.failure(ErrorMapping.get("20020"));
}
}
@Override
public ResponseDto<String> orderTransfer(String orderId, String transferUid, String transferMobile) {
String uid = CurrentUtil.getCurrentUid();
......
......@@ -131,7 +131,7 @@ public class DataUtils {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
for (KylinOrderListVo item : voList) {
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
......@@ -151,7 +151,7 @@ public class DataUtils {
return (KylinOrderTicketVo) obj;
} else {
KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if(ticketData==null){
if (ticketData == null) {
return null;
}
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
......@@ -596,11 +596,11 @@ public class DataUtils {
*/
public int getPerformanceIsTrueName(String performanceId) {
Object obj = redisUtil.get(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId);
if (obj!=null) {
return (int)obj;
}else{
if (obj != null) {
return (int) obj;
} else {
int isTrueName = getPerformanceVo(performanceId).getIsTrueName();
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId,isTrueName);
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId, isTrueName);
return isTrueName;
}
}
......@@ -670,8 +670,8 @@ public class DataUtils {
public List<KylinPerformanceVo> myPerformancesList(String userId) {
Query queryNew = new Query();
queryNew.addCriteria(Criteria.where("userId").is(userId));
List<String> performanceIdList = mongoTemplate.findDistinct(queryNew, "performanceId", "KylinOrderTicketVo",KylinOrderTicketVo.class, String.class);
log.info("myPerformancesList performanceIdList.size:{}",performanceIdList.size());
List<String> performanceIdList = mongoTemplate.findDistinct(queryNew, "performanceId", "KylinOrderTicketVo", KylinOrderTicketVo.class, String.class);
log.info("myPerformancesList performanceIdList.size:{}", performanceIdList.size());
// 固定条件
Query query = getCommonWhere();
......@@ -696,6 +696,25 @@ public class DataUtils {
if (isRefundPoundage > 0) { // 开启了演出退票有手续费
Object obj = redisUtil.get(KylinRedisConst.ORDER_REFUND_POUNDAGE);
if (obj == null) {
OrderRefundPoundage vo1 = OrderRefundPoundage.getNew();
vo1.setDay(15);
vo1.setContent("距离演出开始日期>15天");
vo1.setPresent(BigDecimal.valueOf(0.1));
vo1.setIsCanRefund(1);
OrderRefundPoundage vo2 = OrderRefundPoundage.getNew();
vo2.setDay(3);
vo2.setContent("距离演出开始日期>3天-15天(含15天)");
vo2.setPresent(BigDecimal.valueOf(0.5));
vo2.setIsCanRefund(1);
OrderRefundPoundage vo3 = OrderRefundPoundage.getNew();
vo3.setDay(0);
vo3.setContent("距离演出开始日期≤3天(含演出当天)");
vo3.setPresent(BigDecimal.valueOf(0));
vo3.setIsCanRefund(1);
orderRefundPoundageArrayList.add(vo1);
orderRefundPoundageArrayList.add(vo2);
orderRefundPoundageArrayList.add(vo3);
redisUtil.set(KylinRedisConst.ORDER_REFUND_POUNDAGE, orderRefundPoundageArrayList);
return orderRefundPoundageArrayList;
} else {
return (ArrayList<OrderRefundPoundage>) obj;
......@@ -706,7 +725,7 @@ public class DataUtils {
}
// 获取订单券的使用情况
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId){
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId) {
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
......@@ -735,6 +754,7 @@ public class DataUtils {
String redisKey = KylinRedisConst.ORDER_REFUND_EXPRESS_INFO.concat(orderId);
redisUtil.set(redisKey, kylinOrderExpressVo);
}
public KylinOrderExpressVo getOrderRefundExpressInfo(String orderId) {
String redisKey = KylinRedisConst.ORDER_REFUND_EXPRESS_INFO.concat(orderId);
return (KylinOrderExpressVo) redisUtil.get(redisKey);
......
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