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

Commit a860cd73 authored by jiangxiulong's avatar jiangxiulong

提交退款 手续费处理 快递下单判断 快递费不处理

parent 9be51f70
...@@ -32,7 +32,7 @@ public class KylinTableStatusConst { ...@@ -32,7 +32,7 @@ public class KylinTableStatusConst {
public static final Integer ORDER_REFUND_STATUS_CANCEL = 2; // 取消退款 public static final Integer ORDER_REFUND_STATUS_CANCEL = 2; // 取消退款
public static final Integer ORDER_REFUND_STATUS_REFUNDING = 3; // 正在退款 public static final Integer ORDER_REFUND_STATUS_REFUNDING = 3; // 正在退款
public static final Integer ORDER_REFUND_STATUS_REFUNDED = 4; // 完成退款 public static final Integer ORDER_REFUND_STATUS_REFUNDED = 4; // 完成退款
public static final Integer ORDER_REFUND_STATUS_REJECT = 5; // 一审驳回退款 public static final Integer ORDER_REFUND_STATUS_REJECT = 5; // 一审驳回退款 等同取消
public static final Integer ORDER_REFUND_STATUS_ERROR = 6; // 退款失败 public static final Integer ORDER_REFUND_STATUS_ERROR = 6; // 退款失败
public static final Integer ORDER_REFUND_STATUS_UNFILLED = 7; // 二审同意 等待退款 public static final Integer ORDER_REFUND_STATUS_UNFILLED = 7; // 二审同意 等待退款
public static final Integer ORDER_REFUND_STATUS_REFUSE = 8; // 二审拒绝 public static final Integer ORDER_REFUND_STATUS_REFUSE = 8; // 二审拒绝
......
...@@ -3,15 +3,27 @@ package com.liquidnet.service.kylin.dto.vo.mongo; ...@@ -3,15 +3,27 @@ package com.liquidnet.service.kylin.dto.vo.mongo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
@ApiModel @ApiModel
@Data @Data
public class KylinOrderRefundPicVo { public class KylinOrderRefundPicVo implements Serializable, Cloneable {
private static final long serialVersionUID = -8439335893689659109L;
private Integer mid; private Integer mid;
private String refundPicId; private String refundPicId;
private String orderRefundsId; private String orderRefundsId;
private String picUrl; private String picUrl;
private String createdAt; private String createdAt;
private String updatedAt; private String updatedAt;
private static final KylinOrderRefundPicVo obj = new KylinOrderRefundPicVo();
public static KylinOrderRefundPicVo getNew() {
try {
return (KylinOrderRefundPicVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinOrderRefundPicVo();
}
}
} }
...@@ -59,6 +59,9 @@ public class KylinOrderRefundsVo implements Serializable,Cloneable { ...@@ -59,6 +59,9 @@ public class KylinOrderRefundsVo implements Serializable,Cloneable {
@ApiModelProperty(value = "退款快递总金额") @ApiModelProperty(value = "退款快递总金额")
private BigDecimal priceExpress; private BigDecimal priceExpress;
@ApiModelProperty(value = "退款扣除的手续费金额")
private BigDecimal priceCharges;
@ApiModelProperty(value = "退款状态: 0请求退款 2取消退款 1审核通过 5驳回退款 7等待退款 3正在退款 4完成退款 6退款失败") @ApiModelProperty(value = "退款状态: 0请求退款 2取消退款 1审核通过 5驳回退款 7等待退款 3正在退款 4完成退款 6退款失败")
private Integer status; private Integer status;
......
...@@ -46,7 +46,7 @@ public interface IKylinOrderTicketsService { ...@@ -46,7 +46,7 @@ public interface IKylinOrderTicketsService {
* @param picList 证据截图 * @param picList 证据截图
* @return 是否成功 * @return 是否成功
*/ */
String sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList, Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime); 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<Boolean> orderRefundWithdraw(String orderRefundsId);
......
...@@ -371,7 +371,7 @@ public class DataUtils { ...@@ -371,7 +371,7 @@ public class DataUtils {
vo3.setDay(0); vo3.setDay(0);
vo3.setContent("距离演出开始日期≤3天(含演出当天)"); vo3.setContent("距离演出开始日期≤3天(含演出当天)");
vo3.setPresent(BigDecimal.valueOf(0)); vo3.setPresent(BigDecimal.valueOf(0));
vo3.setIsCanRefund(0); vo3.setIsCanRefund(1);
voList.add(vo1); voList.add(vo1);
voList.add(vo2); voList.add(vo2);
voList.add(vo3); voList.add(vo3);
......
...@@ -70,6 +70,7 @@ public class KylinOrderRefunds implements Serializable { ...@@ -70,6 +70,7 @@ public class KylinOrderRefunds implements Serializable {
*/ */
private BigDecimal price; private BigDecimal price;
private BigDecimal priceExpress; private BigDecimal priceExpress;
private BigDecimal priceCharges;
/** /**
* 退款状态: 0请求退款 2取消退款 1审核通过 5驳回退款 7等待退款 3正在退款 4完成退款 6退款失败 * 退款状态: 0请求退款 2取消退款 1审核通过 5驳回退款 7等待退款 3正在退款 4完成退款 6退款失败
......
...@@ -781,6 +781,8 @@ CREATE TABLE `kylin_order_refunds` ...@@ -781,6 +781,8 @@ CREATE TABLE `kylin_order_refunds`
DEFAULT CHARSET utf8mb4 DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT ='订单退款表'; COLLATE utf8mb4_unicode_ci COMMENT ='订单退款表';
alter table kylin_order_refunds add price_charges decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '退款扣除的手续费金额' after price_express;
drop TABLE if exists `kylin_order_refund_entities`; drop TABLE if exists `kylin_order_refund_entities`;
CREATE TABLE `kylin_order_refund_entities` CREATE TABLE `kylin_order_refund_entities`
( (
......
...@@ -110,7 +110,7 @@ public class KylinOrderTicketsController { ...@@ -110,7 +110,7 @@ public class KylinOrderTicketsController {
@ApiImplicitParam(type = "form", dataType = "String", name = "sendExpressAddress", value = "取件地址"), @ApiImplicitParam(type = "form", dataType = "String", name = "sendExpressAddress", value = "取件地址"),
@ApiImplicitParam(type = "form", dataType = "String", name = "appointmentTime", value = "预约取件时间") @ApiImplicitParam(type = "form", dataType = "String", name = "appointmentTime", value = "预约取件时间")
}) })
public ResponseDto<HashMap<String, String>> sendOrderRefund( public ResponseDto sendOrderRefund(
@RequestParam(value = "orderId", required = true) @NotNull(message = "订单ID不能为空") String orderId, @RequestParam(value = "orderId", required = true) @NotNull(message = "订单ID不能为空") String orderId,
@RequestParam(value = "orderTicketEntitiesId", required = true) @NotNull(message = "票单ID不能为空") String orderTicketEntitiesId, @RequestParam(value = "orderTicketEntitiesId", required = true) @NotNull(message = "票单ID不能为空") String orderTicketEntitiesId,
@RequestParam(value = "reason", required = true) @NotNull(message = "退款原因不能为空") String reason, @RequestParam(value = "reason", required = true) @NotNull(message = "退款原因不能为空") String reason,
...@@ -125,17 +125,10 @@ public class KylinOrderTicketsController { ...@@ -125,17 +125,10 @@ public class KylinOrderTicketsController {
@RequestParam(value = "appointmentTime", required = false) String appointmentTime @RequestParam(value = "appointmentTime", required = false) String appointmentTime
) { ) {
// 退款 // 退款
String orderRefundId = orderTicketsService.sendOrderRefund( return orderTicketsService.sendOrderRefund(
orderId, orderTicketEntitiesId, reason, picList, orderId, orderTicketEntitiesId, reason, picList,
sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime
); );
if (orderRefundId.length() > 10) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("orderRefundsId", orderRefundId);
return ResponseDto.success(map);
} else {
return ResponseDto.failure(orderRefundId);
}
} }
@GetMapping("orderRefundDetails") @GetMapping("orderRefundDetails")
......
...@@ -417,7 +417,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -417,7 +417,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} }
@Override @Override
public String sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList, Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime) { 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; KylinOrderTicketEntitiesVo orderTicketEntitiesVo = null;
try { try {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
...@@ -426,12 +426,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -426,12 +426,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
if (uid.equals("809406") || uid.equals("773650")) { if (uid.equals("809406") || uid.equals("773650")) {
} else { } else {
if (!orderTicketVo.getUserId().equals(uid)) { if (!orderTicketVo.getUserId().equals(uid)) {
return "无权查看"; return ResponseDto.failure("无权查看");
} }
} }
if (!orderTicketVo.getPayStatus().equals(1)) { if (!orderTicketVo.getPayStatus().equals(1)) {
return "暂不支持退款"; return ResponseDto.failure("暂不支持退款");
} }
KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId()); KylinPerformanceVo performanceVo = dataUtils.getPerformanceVo(orderTicketVo.getPerformanceId());
...@@ -455,10 +455,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -455,10 +455,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
&& ticketVo.getCounts() == 1) { && ticketVo.getCounts() == 1) {
} else { } else {
return "暂不支持退款"; return ResponseDto.failure("暂不支持退款");
} }
} else { } else {
return "暂不支持退款"; return ResponseDto.failure("暂不支持退款");
} }
List<KylinOrderTicketEntitiesVo> entitiesVos = orderTicketVo.getEntitiesVoList(); List<KylinOrderTicketEntitiesVo> entitiesVos = orderTicketVo.getEntitiesVoList();
...@@ -468,16 +468,17 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -468,16 +468,17 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} }
} }
if (null == orderTicketEntitiesVo) { if (null == orderTicketEntitiesVo) {
return "订单不存在"; return ResponseDto.failure("订单不存在");
} }
BigDecimal refundSinglePrice = dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, orderTicketEntitiesId); BigDecimal refundSinglePrice = dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, orderTicketEntitiesId);
if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) { if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) {
return "申请金额不得小于0"; return ResponseDto.failure("申请金额不得小于0");
} }
// 手续费处理 // 手续费处理
ArrayList<OrderRefundPoundage> refundPoundage = dataUtils.getRefundPoundage(performanceVo.getIsRefundPoundage()); ArrayList<OrderRefundPoundage> refundPoundage = dataUtils.getRefundPoundage(performanceVo.getIsRefundPoundage());
BigDecimal priceCharges = BigDecimal.valueOf(0);
if (!CollectionUtils.isEmpty(refundPoundage)) { if (!CollectionUtils.isEmpty(refundPoundage)) {
// 手续费比例 // 手续费比例
BigDecimal chargesNum = BigDecimal.valueOf(0); BigDecimal chargesNum = BigDecimal.valueOf(0);
...@@ -494,71 +495,58 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -494,71 +495,58 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
if (useStartD15Before.isAfter(nowTime)) { // 15天以前的时间大于当前时间 距离演出开始日期>15天 if (useStartD15Before.isAfter(nowTime)) { // 15天以前的时间大于当前时间 距离演出开始日期>15天
log.info("距离演出开始日期>15天");
log.info("票种演出开始时间 {}", useStartD);
log.info("15天之前的时间 {}", useStartD15Before);
log.info("3天之前的时间 {}", useStartD3Before);
log.info("当前时间 {}", nowTime);
log.info("手续费比例 {}", chargesNum);
int isCanRefund = refundPoundage.get(0).getIsCanRefund(); int isCanRefund = refundPoundage.get(0).getIsCanRefund();
if (isCanRefund > 0) { if (isCanRefund > 0) {
chargesNum = refundPoundage.get(0).getPresent(); chargesNum = refundPoundage.get(0).getPresent();
} else { } else {
return "当前日期不支持退票"; return ResponseDto.failure("当前日期不支持退票");
} }
} else if (useStartD3Before.isAfter(nowTime)) { // 3天以前的时间大于当前时间 距离演出开始日期>3天-15天 含15天 } else if (useStartD3Before.isAfter(nowTime)) { // 3天以前的时间大于当前时间 距离演出开始日期>3天-15天 含15天
log.info("距离演出开始日期3-15天");
log.info("票种演出开始时间 {}", useStartD);
log.info("15天之前的时间 {}", useStartD15Before);
log.info("3天之前的时间 {}", useStartD3Before);
log.info("当前时间 {}", nowTime);
log.info("手续费比例 {}", chargesNum);
int isCanRefund = refundPoundage.get(1).getIsCanRefund(); int isCanRefund = refundPoundage.get(1).getIsCanRefund();
if (isCanRefund > 0) { if (isCanRefund > 0) {
chargesNum = refundPoundage.get(1).getPresent(); chargesNum = refundPoundage.get(1).getPresent();
} else { } else {
return "当前日期不支持退票"; return ResponseDto.failure("当前日期不支持退票");
} }
} else { // 三天以内 <=3 } else { // 三天以内 <=3
log.info("距离演出开始日期<=3");
log.info("票种演出开始时间 {}", useStartD);
log.info("15天之前的时间 {}", useStartD15Before);
log.info("3天之前的时间 {}", useStartD3Before);
log.info("当前时间 {}", nowTime);
log.info("手续费比例 {}", chargesNum);
int isCanRefund = refundPoundage.get(2).getIsCanRefund(); int isCanRefund = refundPoundage.get(2).getIsCanRefund();
if (isCanRefund > 0) { if (isCanRefund > 0) {
chargesNum = refundPoundage.get(2).getPresent(); chargesNum = refundPoundage.get(2).getPresent();
} else { } else {
return "当前日期不支持退票"; return ResponseDto.failure("当前日期不支持退票");
} }
} }
BigDecimal multiply = refundSinglePrice.multiply(chargesNum); priceCharges = refundSinglePrice.multiply(chargesNum).setScale(2, BigDecimal.ROUND_HALF_UP);
log.info("multiply {}", multiply); refundSinglePrice = refundSinglePrice.subtract(priceCharges);
refundSinglePrice = refundSinglePrice.subtract(multiply);
log.info("去除手续费申请金额 {}", refundSinglePrice);
if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) { if (refundSinglePrice.compareTo(BigDecimal.ZERO) <= 0) {
return "申请金额不得小于0"; return ResponseDto.failure("申请金额不得小于0哦~");
// return "去除手续费申请金额不得小于0";
} }
} else{ } else{
log.info("演出id1111 {}", orderTicketVo.getPerformanceId()); log.info("演出id1111 {}", orderTicketVo.getPerformanceId());
} }
// 临时手续费 end
// 快递费 现在只有到付 不作处理
// 如果后期有这种情况 需要判断是否是最后一张入场人票 然后减去已经退的快递费 计算进来即可
BigDecimal priceExpress = BigDecimal.valueOf(0);
Map token = CurrentUtil.getTokenClaims(); Map token = CurrentUtil.getTokenClaims();
String username = StringUtils.defaultString(((String) token.get("nickname")), ""); String username = StringUtils.defaultString(((String) token.get("nickname")), "");
String result = refundsStatusService.userOrderTicketRefunding(orderTicketVo, refundSinglePrice.doubleValue(), orderTicketEntitiesId, reason, picList, uid, username, kylinOrderRefundsVoBaseList.size()); String orderRefundId = refundsStatusService.userOrderTicketRefunding(orderTicketVo, refundSinglePrice, priceExpress, priceCharges, orderTicketEntitiesId, reason, picList, uid, username, kylinOrderRefundsVoBaseList.size());
if (result != "") { if (!orderRefundId.isEmpty()) {
// 退款申请成功 异步去快递下单 // 退款申请成功 异步去快递下单
if (orderTicketVo.getGetTicketType().equals("express") && sendExpressType > 0) {// 快递票
expressPlace(sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime, orderTicketVo, performanceVo); expressPlace(sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime, orderTicketVo, performanceVo);
return result; }
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("orderRefundsId", orderRefundId);
return ResponseDto.success(map);
} else { } else {
return "申请失败"; return ResponseDto.failure("申请失败");
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("sendOrderRefundException e:[{}]", e);
return "申请失败"; return ResponseDto.failure("申请失败");
} }
} }
......
...@@ -52,7 +52,9 @@ public class KylinRefundsStatusServiceImpl { ...@@ -52,7 +52,9 @@ public class KylinRefundsStatusServiceImpl {
public String userOrderTicketRefunding( public String userOrderTicketRefunding(
KylinOrderTicketVo orderInfo, KylinOrderTicketVo orderInfo,
double refundPrice, BigDecimal refundPrice,
BigDecimal priceExpress,
BigDecimal priceCharges,
String orderEntitiesId, String orderEntitiesId,
String reason, String reason,
String picList, String picList,
...@@ -62,41 +64,30 @@ public class KylinRefundsStatusServiceImpl { ...@@ -62,41 +64,30 @@ public class KylinRefundsStatusServiceImpl {
) { ) {
try { try {
LocalDateTime time = LocalDateTime.now(); LocalDateTime time = LocalDateTime.now();
String strTime = DateUtil.Formatter.yyyyMMddHHmmss.format(time); String strTime = DateUtil.getNowTime();
// 订单状态表 缓存 // 订单状态表 缓存
KylinOrderTicketStatus orderStatusTable = new KylinOrderTicketStatus(); KylinOrderTicketStatus orderStatusTable = KylinOrderTicketStatus.getNew();
orderStatusTable.setStatus(KylinTableStatusConst.ORDER_STATUS3); orderStatusTable.setStatus(KylinTableStatusConst.ORDER_STATUS3);
orderStatusTable.setUpdatedAt(time); orderStatusTable.setUpdatedAt(time);
KylinOrderTicketVo kylinOrderTicketVo = KylinOrderTicketVo.getNew(); KylinOrderTicketVo kylinOrderTicketVo = KylinOrderTicketVo.getNew();
kylinOrderTicketVo.setStatus(KylinTableStatusConst.ORDER_STATUS3); kylinOrderTicketVo.setStatus(KylinTableStatusConst.ORDER_STATUS3);
kylinOrderTicketVo.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(time)); kylinOrderTicketVo.setUpdatedAt(strTime);
BasicDBObject orderObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketVo))); BasicDBObject orderObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketVo)));
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne( mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderInfo.getOrderTicketsId())).getQueryObject(), Query.query(Criteria.where("orderTicketsId").is(orderInfo.getOrderTicketsId())).getQueryObject(),
orderObject orderObject
); );
dataUtils.delOrderTicketRedis(orderInfo.getOrderTicketsId()); dataUtils.delOrderTicketRedis(orderInfo.getOrderTicketsId());
log.info("orderInfo.getUserId() = "+ orderInfo.getUserId());
// 订单入场人表 和 缓存 // 订单入场人表 和 缓存
KylinOrderTicketEntities entitiesTable = new KylinOrderTicketEntities(); KylinOrderTicketEntities entitiesTable = new KylinOrderTicketEntities();
entitiesTable.setIsPayment(KylinTableStatusConst.ENTITIES_IS_PAYMENT2); entitiesTable.setIsPayment(KylinTableStatusConst.ENTITIES_IS_PAYMENT2);
entitiesTable.setUpdatedAt(time); entitiesTable.setUpdatedAt(time);
// BigDecimal oldRefundPrice = BigDecimal.valueOf(0);
// for (KylinOrderTicketEntitiesVo item :orderInfo.getEntitiesVoList()) {
// if(item.getOrderTicketEntitiesId().equalsIgnoreCase(orderEntitiesId)){
// oldRefundPrice = item.getRefundPrice();
// break;
// }
// }
KylinOrderTicketEntitiesVo kylinOrderTicketEntitiesVo = KylinOrderTicketEntitiesVo.getNew(); KylinOrderTicketEntitiesVo kylinOrderTicketEntitiesVo = KylinOrderTicketEntitiesVo.getNew();
kylinOrderTicketEntitiesVo.setIsPayment(KylinTableStatusConst.ENTITIES_IS_PAYMENT2); kylinOrderTicketEntitiesVo.setIsPayment(KylinTableStatusConst.ENTITIES_IS_PAYMENT2);
// kylinOrderTicketEntitiesVo.setRefundPrice(oldRefundPrice.add(BigDecimal.valueOf(refundPrice)));
kylinOrderTicketEntitiesVo.setUpdatedAt(strTime); kylinOrderTicketEntitiesVo.setUpdatedAt(strTime);
BasicDBObject entitiesObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketEntitiesVo))); BasicDBObject entitiesObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketEntitiesVo)));
mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).updateOne( mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).updateOne(
...@@ -115,21 +106,16 @@ public class KylinRefundsStatusServiceImpl { ...@@ -115,21 +106,16 @@ public class KylinRefundsStatusServiceImpl {
String orderRefundCode = orderInfo.getOrderCode(); String orderRefundCode = orderInfo.getOrderCode();
String codeNum = StringUtils.leftPad(String.valueOf(refundCount), 3, "0"); String codeNum = StringUtils.leftPad(String.valueOf(refundCount), 3, "0");
kylinOrderRefunds.setOrderRefundCode(orderRefundCode.concat(codeNum)); kylinOrderRefunds.setOrderRefundCode(orderRefundCode.concat(codeNum));
kylinOrderRefunds.setPrice(BigDecimal.valueOf(refundPrice)); kylinOrderRefunds.setPrice(refundPrice);
kylinOrderRefunds.setPriceExpress(orderInfo.getPriceExpress()); kylinOrderRefunds.setPriceExpress(priceExpress);
kylinOrderRefunds.setPriceCharges(priceCharges);
kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_APPLY); kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_APPLY);
kylinOrderRefunds.setType(KylinTableStatusConst.ORDER_REFUND_TYPE_APPLY); kylinOrderRefunds.setType(KylinTableStatusConst.ORDER_REFUND_TYPE_APPLY);
kylinOrderRefunds.setApplicantId(uid); kylinOrderRefunds.setApplicantId(uid);
kylinOrderRefunds.setApplicantName(username); kylinOrderRefunds.setApplicantName(username);
kylinOrderRefunds.setApplicantAt(time); kylinOrderRefunds.setApplicantAt(time);
kylinOrderRefunds.setReason(reason); kylinOrderRefunds.setReason(reason);
if (orderInfo.getPriceExpress().doubleValue() > 0 && refundPrice > 0) {
kylinOrderRefunds.setRefundCate(KylinTableStatusConst.ORDER_REFUND_CATE3);
} else if (orderInfo.getPriceExpress().doubleValue() > 0) {
kylinOrderRefunds.setRefundCate(KylinTableStatusConst.ORDER_REFUND_CATE2);
} else if (refundPrice > 0) {
kylinOrderRefunds.setRefundCate(KylinTableStatusConst.ORDER_REFUND_CATE1); kylinOrderRefunds.setRefundCate(KylinTableStatusConst.ORDER_REFUND_CATE1);
}
kylinOrderRefunds.setCreatedAt(time); kylinOrderRefunds.setCreatedAt(time);
KylinOrderRefundsVo orderRefundsVo = KylinOrderRefundsVo.getNew(); KylinOrderRefundsVo orderRefundsVo = KylinOrderRefundsVo.getNew();
...@@ -140,11 +126,11 @@ public class KylinRefundsStatusServiceImpl { ...@@ -140,11 +126,11 @@ public class KylinRefundsStatusServiceImpl {
// 退款入场人表 // 退款入场人表
KylinOrderRefundEntities kylinOrderRefundEntities = new KylinOrderRefundEntities(); KylinOrderRefundEntities kylinOrderRefundEntities = KylinOrderRefundEntities.getNew();
String orderRefundsEntitiesId = IDGenerator.nextSnowId(); String orderRefundsEntitiesId = IDGenerator.nextSnowId();
kylinOrderRefundEntities.setOrderRefundsEntitiesId(orderRefundsEntitiesId); kylinOrderRefundEntities.setOrderRefundsEntitiesId(orderRefundsEntitiesId);
kylinOrderRefundEntities.setOrderRefundsId(orderRefundsId); kylinOrderRefundEntities.setOrderRefundsId(orderRefundsId);
kylinOrderRefundEntities.setRefundPrice(BigDecimal.valueOf(refundPrice)); kylinOrderRefundEntities.setRefundPrice(refundPrice);
kylinOrderRefundEntities.setOrderTicketEntitiesId(orderEntitiesId); kylinOrderRefundEntities.setOrderTicketEntitiesId(orderEntitiesId);
kylinOrderRefundEntities.setCreatedAt(time); kylinOrderRefundEntities.setCreatedAt(time);
...@@ -154,18 +140,19 @@ public class KylinRefundsStatusServiceImpl { ...@@ -154,18 +140,19 @@ public class KylinRefundsStatusServiceImpl {
mongoTemplate.insert(orderRefundEntitiesVo, KylinOrderRefundEntitiesVo.class.getSimpleName()); mongoTemplate.insert(orderRefundEntitiesVo, KylinOrderRefundEntitiesVo.class.getSimpleName());
//退款图片 //退款图片
KylinOrderRefundPic orderRefundPic = new KylinOrderRefundPic(); KylinOrderRefundPic orderRefundPic = KylinOrderRefundPic.getNew();
orderRefundPic.setRefundPicId(IDGenerator.nextSnowId()); orderRefundPic.setRefundPicId(IDGenerator.nextSnowId());
orderRefundPic.setOrderRefundsId(kylinOrderRefunds.getOrderRefundsId()); orderRefundPic.setOrderRefundsId(kylinOrderRefunds.getOrderRefundsId());
orderRefundPic.setPicUrl(picList); orderRefundPic.setPicUrl(picList);
orderRefundPic.setCreatedAt(time); orderRefundPic.setCreatedAt(time);
KylinOrderRefundPicVo orderRefundPicVo = new KylinOrderRefundPicVo(); KylinOrderRefundPicVo orderRefundPicVo = KylinOrderRefundPicVo.getNew();
BeanUtils.copyProperties(orderRefundPic, orderRefundPicVo); BeanUtils.copyProperties(orderRefundPic, orderRefundPicVo);
orderRefundPicVo.setCreatedAt(strTime); orderRefundPicVo.setCreatedAt(strTime);
mongoTemplate.insert(orderRefundPicVo, KylinOrderRefundPicVo.class.getSimpleName()); mongoTemplate.insert(orderRefundPicVo, KylinOrderRefundPicVo.class.getSimpleName());
dataUtils.delOrderRefundVoByOrderId(orderInfo.getOrderTicketsId()); dataUtils.delOrderRefundVoByOrderId(orderInfo.getOrderTicketsId());
//MQ //MQ
LinkedList<String> sqls = CollectionUtil.linkedListString(); LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
...@@ -189,7 +176,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -189,7 +176,7 @@ public class KylinRefundsStatusServiceImpl {
}); });
sqlsDataC.add(new Object[]{ sqlsDataC.add(new Object[]{
kylinOrderRefunds.getOrderRefundsId(), kylinOrderRefunds.getOrderTicketsId(), kylinOrderRefunds.getOrderRefundCode(), kylinOrderRefunds.getOrderRefundsId(), kylinOrderRefunds.getOrderTicketsId(), kylinOrderRefunds.getOrderRefundCode(),
kylinOrderRefunds.getPrice(), kylinOrderRefunds.getPriceExpress(), kylinOrderRefunds.getStatus(), kylinOrderRefunds.getPrice(), kylinOrderRefunds.getPriceExpress(), kylinOrderRefunds.getPriceCharges(), kylinOrderRefunds.getStatus(),
kylinOrderRefunds.getType(), kylinOrderRefunds.getApplicantId(), kylinOrderRefunds.getApplicantName(), kylinOrderRefunds.getType(), kylinOrderRefunds.getApplicantId(), kylinOrderRefunds.getApplicantName(),
kylinOrderRefunds.getApplicantAt(), kylinOrderRefunds.getReason(), kylinOrderRefunds.getApplicantAt(), kylinOrderRefunds.getReason(),
kylinOrderRefunds.getRefundCate(), kylinOrderRefunds.getCreatedAt() kylinOrderRefunds.getRefundCate(), kylinOrderRefunds.getCreatedAt()
...@@ -207,7 +194,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -207,7 +194,7 @@ public class KylinRefundsStatusServiceImpl {
return kylinOrderRefunds.getOrderRefundsId(); return kylinOrderRefunds.getOrderRefundsId();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("userOrderTicketRefundingException e:[{}]", e);
return ""; return "";
} }
} }
......
...@@ -5,6 +5,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil; ...@@ -5,6 +5,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
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.constant.AdamRedisConst;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress; 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.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo; import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo;
...@@ -525,24 +526,20 @@ public class DataUtils { ...@@ -525,24 +526,20 @@ public class DataUtils {
* @return * @return
*/ */
public BigDecimal getCanRefundOrderEntitiesPrice(KylinOrderTicketVo orderTicketVo, List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList, String orderTicketEntitiesId) { public BigDecimal getCanRefundOrderEntitiesPrice(KylinOrderTicketVo orderTicketVo, List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList, String orderTicketEntitiesId) {
log.info("orderTicketEntitiesId = " + orderTicketEntitiesId); // 单票实付价格
//单票实付价格
BigDecimal singlePrice = orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber())); BigDecimal singlePrice = orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber()));
log.info("singlePrice = " + singlePrice); // 单票剩余未退款金额
//单票剩余未退款金额 BigDecimal canRefundSinglePrice = BigDecimal.valueOf(0);
BigDecimal canRefundSinglePrice = new BigDecimal("0.00");
for (KylinOrderTicketEntitiesVo item : orderTicketVo.getEntitiesVoList()) { for (KylinOrderTicketEntitiesVo item : orderTicketVo.getEntitiesVoList()) {
if (item.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) { if (item.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) {
log.info("item = " + item); canRefundSinglePrice = singlePrice.subtract(item.getRefundPrice() == null ? BigDecimal.valueOf(0) : item.getRefundPrice());
canRefundSinglePrice = singlePrice.subtract(item.getRefundPrice() == null ? BigDecimal.valueOf(0.00) : item.getRefundPrice());
} }
} }
log.info("canRefundSinglePrice = " + canRefundSinglePrice); // 订单锁定金额
//订单锁定金额 BigDecimal orderLockPrice = BigDecimal.valueOf(0);
BigDecimal orderLockPrice = new BigDecimal("0.00");
for (KylinOrderRefundsVo refundVo : kylinOrderRefundsVoBaseList) { for (KylinOrderRefundsVo refundVo : kylinOrderRefundsVoBaseList) {
int status = refundVo.getStatus(); int status = refundVo.getStatus();
if (status == 0 || status == 1 || status == 3 || status == 6 || status == 7 || status == 8) { //退款流程未完成 金额锁定 if (status != KylinTableStatusConst.ORDER_REFUND_STATUS_CANCEL && status != KylinTableStatusConst.ORDER_REFUND_STATUS_REJECT) { //退款流程未完成 金额锁定
List<KylinOrderRefundEntitiesVo> refundEntitiesVos = refundVo.getOrderRefundEntitiesVoList(); List<KylinOrderRefundEntitiesVo> refundEntitiesVos = refundVo.getOrderRefundEntitiesVoList();
for (KylinOrderRefundEntitiesVo refundEntitiesVo : refundEntitiesVos) { for (KylinOrderRefundEntitiesVo refundEntitiesVo : refundEntitiesVos) {
if (refundEntitiesVo.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) { if (refundEntitiesVo.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) {
...@@ -551,13 +548,8 @@ public class DataUtils { ...@@ -551,13 +548,8 @@ public class DataUtils {
} }
} }
} }
log.info("orderLockPrice = " + orderLockPrice); // 订单可退金额
//订单可退金额
BigDecimal refundSinglePrice = canRefundSinglePrice.subtract(orderLockPrice); BigDecimal refundSinglePrice = canRefundSinglePrice.subtract(orderLockPrice);
//是否包含快递费
if (orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).subtract(orderTicketVo.getPriceRefund()).compareTo(canRefundSinglePrice) == 0) {
refundSinglePrice = refundSinglePrice.add(orderTicketVo.getPriceExpress());
}
return refundSinglePrice; return refundSinglePrice;
} }
......
...@@ -28,7 +28,7 @@ kylin_order_ticket_entities.synPay=UPDATE kylin_order_ticket_entities SET is_pay ...@@ -28,7 +28,7 @@ kylin_order_ticket_entities.synPay=UPDATE kylin_order_ticket_entities SET is_pay
# ------------------------用户发起订单退款---------------------------- # ------------------------用户发起订单退款----------------------------
kylin_order_ticket_status.refund=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) kylin_order_ticket_status.refund=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_entities.refund=UPDATE kylin_order_ticket_entities SET is_payment = ? ,updated_at = ? WHERE order_ticket_entities_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) kylin_order_ticket_entities.refund=UPDATE kylin_order_ticket_entities SET is_payment = ? ,updated_at = ? WHERE order_ticket_entities_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_refund.refund=INSERT INTO kylin_order_refunds (order_refunds_id,order_tickets_id,order_refund_code,price,price_express,status,type,applicant_id,applicant_name,applicant_at,reason,refund_cate,created_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) kylin_order_refund.refund=INSERT INTO kylin_order_refunds (order_refunds_id,order_tickets_id,order_refund_code,price,price_express,price_charges,status,type,applicant_id,applicant_name,applicant_at,reason,refund_cate,created_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_order_refund_entities.refund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?) kylin_order_refund_entities.refund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?)
kylin_order_refund_pic.refund=INSERT INTO kylin_order_refund_pic (refund_pic_id,order_refunds_id,pic_url,created_at) VALUES (?,?,?,?) kylin_order_refund_pic.refund=INSERT INTO kylin_order_refund_pic (refund_pic_id,order_refunds_id,pic_url,created_at) VALUES (?,?,?,?)
kylin_order_refund.refundOrderExpress=INSERT INTO kylin_order_express (order_express_id,performances_id,order_tickets_id,order_express_code,mailno,express_type,filter_result,remark,express_status,send_type,send_express_type,express_contacts,express_phone,send_express_address,appointment_time,pro_name,cargo_type_code,limit_type_code,express_type_code,goods_value_total,goods_number,created_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) kylin_order_refund.refundOrderExpress=INSERT INTO kylin_order_express (order_express_id,performances_id,order_tickets_id,order_express_code,mailno,express_type,filter_result,remark,express_status,send_type,send_express_type,express_contacts,express_phone,send_express_address,appointment_time,pro_name,cargo_type_code,limit_type_code,express_type_code,goods_value_total,goods_number,created_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
......
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