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

Commit 49050729 authored by 胡佳晨's avatar 胡佳晨

提交 app 退款接口

parent cca0fb73
...@@ -22,6 +22,8 @@ public class KylinRedisConst { ...@@ -22,6 +22,8 @@ public class KylinRedisConst {
public static final String TIMES = "kylin:times:id:"; public static final String TIMES = "kylin:times:id:";
public static final String AGENT = "kylin:agent:info"; public static final String AGENT = "kylin:agent:info";
public static final String ORDER_LIST = "kylin:order:list:userId:"; public static final String ORDER_LIST = "kylin:order:list:userId:";
public static final String ORDER_REFUND_BY_ORDER_ID = "kylin:order:refund:orderId:";
public static final String ORDER_REFUND = "kylin:order:refund:orderRefundsId:";
public static final String USERID_BUY_INFO = "kylin:buy:userId:"; public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:"; public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
......
package com.liquidnet.service.kylin.dto.vo.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel
@Data
public class PerformanceRefundConfigVo {
private String performancesId;
private String title;
private Integer isCanRefund;
private String refundOpenTime;
private String refundCloseTime;
}
...@@ -13,7 +13,7 @@ public class KylinOrderRefundsVoBase { ...@@ -13,7 +13,7 @@ public class KylinOrderRefundsVoBase {
private String orderRefundsId; private String orderRefundsId;
private String orderTicketsId; private String orderTicketsId;
private String orderRefundCode; private String orderRefundCode;
private String orderRefund_batchesId; private String orderRefundBatchesId;
private String refundCode; private String refundCode;
private String refundAt; private String refundAt;
private String refundId; private String refundId;
......
...@@ -43,6 +43,9 @@ public class KylinOrderTicketEntitiesVo implements Serializable, Cloneable { ...@@ -43,6 +43,9 @@ public class KylinOrderTicketEntitiesVo implements Serializable, Cloneable {
private String checkedAt; private String checkedAt;
private String checkUserId; private String checkUserId;
private BigDecimal priceActual;
private BigDecimal priceCanRefund;
private LocalDateTime changeDate; private LocalDateTime changeDate;
private static final KylinOrderTicketEntitiesVo obj = new KylinOrderTicketEntitiesVo(); private static final KylinOrderTicketEntitiesVo obj = new KylinOrderTicketEntitiesVo();
......
...@@ -99,6 +99,9 @@ public class KylinOrderTicketVo implements Serializable { ...@@ -99,6 +99,9 @@ public class KylinOrderTicketVo implements Serializable {
private String createdAt; private String createdAt;
private String updatedAt; private String updatedAt;
// private Integer isCanRefund;
private Integer isHaveRefundDetails;
private LocalDateTime changeDate; private LocalDateTime changeDate;
private Integer isTrueName; private Integer isTrueName;
......
...@@ -107,6 +107,11 @@ public class KylinPerformanceVo { ...@@ -107,6 +107,11 @@ public class KylinPerformanceVo {
@ApiModelProperty(value = "分销人名称") @ApiModelProperty(value = "分销人名称")
private String agentName; private String agentName;
private Integer isCanRefund;
private Integer isOpenRefundPresent;
private String refundOpenTime;
private String refundCloseTime;
public void setPerformance(KylinPerformances performance) { public void setPerformance(KylinPerformances performance) {
this.mid = performance.getMid(); this.mid = performance.getMid();
this.performancesId = performance.getPerformancesId(); this.performancesId = performance.getPerformancesId();
...@@ -152,6 +157,10 @@ public class KylinPerformanceVo { ...@@ -152,6 +157,10 @@ public class KylinPerformanceVo {
this.limitCountMember = performanceStatus.getLimitCountMember(); this.limitCountMember = performanceStatus.getLimitCountMember();
this.sysDamai = performanceStatus.getSyncDamai(); this.sysDamai = performanceStatus.getSyncDamai();
this.isShow=performanceStatus.getIsShow(); this.isShow=performanceStatus.getIsShow();
this.isCanRefund = performanceStatus.getIsCanRefund();
this.isOpenRefundPresent = performanceStatus.getIsOpenRefundPresent();
this.refundOpenTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundOpenTime());
this.refundCloseTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getRefundCloseTime());
} }
public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) { public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) {
......
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundPicVo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class KylinOrderRefundsOrderCodeVo {
private Integer mid;
private String orderRefundsId;
private String orderRefundCode;
private Integer status;
}
package com.liquidnet.service.kylin.dto.vo.returns; package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundsVoBase;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; 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.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
...@@ -16,4 +17,6 @@ public class OrderDetailsVo { ...@@ -16,4 +17,6 @@ public class OrderDetailsVo {
private String express_company; private String express_company;
private Integer kuaidi_status; private Integer kuaidi_status;
private Long restTime; private Long restTime;
private Integer isCanRefund;
private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList;
} }
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundsVoBase;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import lombok.Data;
import java.util.List;
@Data
public class OrderRefundVo {
private KylinOrderTicketVo orderTicketVo;
private KylinOrderRefundsVoBase kylinOrderRefundsVoBaseList;
}
package com.liquidnet.service.kylin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.kylin.entity.KylinOrderRefundPic;
/**
* <p>
* 订单退款图片 服务类
* </p>
*
* @author liquidnet
* @since 2021-05-06
*/
public interface IKylinOrderRefundPicService extends IService<KylinOrderRefundPic> {
}
...@@ -8,9 +8,11 @@ import com.liquidnet.service.kylin.dto.param.PayOrderParam; ...@@ -8,9 +8,11 @@ import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam; import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo; import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderRefundVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo; import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo;
import com.liquidnet.service.kylin.entity.KylinOrderTickets; import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -43,12 +45,34 @@ public interface IKylinOrderTicketsService extends IService<KylinOrderTickets> { ...@@ -43,12 +45,34 @@ public interface IKylinOrderTicketsService extends IService<KylinOrderTickets> {
//TASK 倒计时 //TASK 倒计时
boolean checkOrderTime(String userId); boolean checkOrderTime(String userId);
//TASK 订单状态 //去 PHP pay检查 订单状态
ResponseDto<Integer> checkOrderResult(String orderId); ResponseDto<Integer> checkOrderResult(String orderId);
//TASK 订单状态 //订单未支付数量
ResponseDto<Integer> orderUnPayCount(); ResponseDto<Integer> orderUnPayCount();
//想要退款详情
OrderDetailsVo toOrderRefundDetails(String orderId);
//退款详情
OrderRefundVo orderRefundDetails(String orderId,String orderRefundId);
/**
* 发起退款
* @param orderId 订单id
* @param orderTicketEntitiesId 票单id
* @param reason 退款原因
* @param picList 证据截图
* @return 是否成功
*/
ResponseDto<Boolean> sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList);
//退款撤回
Boolean orderRefundWithdraw(String orderRefundsId);
//退款再次申请
Boolean orderRefundAgain(String orderRefundsId);
// 下单接口(无订单->待支付->可支付) // 下单接口(无订单->待支付->可支付)
// 删除订单 // 删除订单
......
...@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam; ...@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam;
import com.liquidnet.service.kylin.dto.param.SysDamaiParam; import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.entity.KylinPerformances; import com.liquidnet.service.kylin.entity.KylinPerformances;
...@@ -170,6 +171,22 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc ...@@ -170,6 +171,22 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
*/ */
boolean changeSysDamai(List<SysDamaiParam> params); boolean changeSysDamai(List<SysDamaiParam> params);
/**
* 获取 演出退款配置
* @param performanceId
* @return
*/
PerformanceRefundConfigVo getRefundConfig(String performanceId);
/**
* 修改 演出退款配置
* @return
*/
boolean changeRefundConfig(String performancesId,
Integer isCanRefund,
String refundOpenTime,
String refundCloseTime);
KylinPerformanceAgentVo getPerformanceAgent(String performancesId); KylinPerformanceAgentVo getPerformanceAgent(String performancesId);
KylinPerformanceDamaiVo getPerformanceDamai(String performancesId); KylinPerformanceDamaiVo getPerformanceDamai(String performancesId);
......
...@@ -17,6 +17,7 @@ import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam; ...@@ -17,6 +17,7 @@ import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam;
import com.liquidnet.service.kylin.dto.param.SysDamaiParam; import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService; import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import com.liquidnet.service.kylin.service.other.DamaiService; import com.liquidnet.service.kylin.service.other.DamaiService;
...@@ -176,4 +177,23 @@ public class KylinPerformancesController extends BaseController { ...@@ -176,4 +177,23 @@ public class KylinPerformancesController extends BaseController {
boolean result = damaiService.sycPerformance(performancesId); boolean result = damaiService.sycPerformance(performancesId);
return toAjax(result); return toAjax(result);
} }
@RequiresPermissions("kylin:performances:refundConfig")
@GetMapping(value = "/refundConfig/{performancesId}")
public String getRefundConfig(@PathVariable("performancesId") String performancesId, ModelMap mmap) {
PerformanceRefundConfigVo result = kylinPerformancesService.getRefundConfig(performancesId);
mmap.put("performanceRefundConfigVo", result);
return prefix + "/refundConfig";
}
@RequiresPermissions("kylin:performances:refundConfig")
@PostMapping(value = "/refundConfig/change")
@ResponseBody
public AjaxResult changeRefundConfig(@RequestParam("performancesId") String performancesId,
@RequestParam("isCanRefund") Integer isCanRefund,
@RequestParam("refundOpenTime") String refundOpenTime,
@RequestParam("refundCloseTime") String refundCloseTime) {
boolean result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime);
return toAjax(result);
}
} }
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<input type="text" class="form-control" id="datetimepicker-demo-1" placeholder="yyyy-MM-dd HH:mm"> <input type="text" class="form-control" id="datetimepicker-demo-1" placeholder="yyyy-MM-dd HH:mm">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">显示年月日</label> <label class="font-noraml">显示年月日</label>
<div class="input-group date"> <div class="input-group date">
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<input type="text" class="form-control" id="datetimepicker-demo-2" placeholder="yyyy-MM-dd"> <input type="text" class="form-control" id="datetimepicker-demo-2" placeholder="yyyy-MM-dd">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">显示年月日时分秒</label> <label class="font-noraml">显示年月日时分秒</label>
<div class="input-group date"> <div class="input-group date">
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<input type="text" class="form-control" id="datetimepicker-demo-3" placeholder="yyyy-MM-dd HH:mm:ss"> <input type="text" class="form-control" id="datetimepicker-demo-3" placeholder="yyyy-MM-dd HH:mm:ss">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">带清空的按钮</label> <label class="font-noraml">带清空的按钮</label>
<div class="input-group date form_date"> <div class="input-group date form_date">
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span> <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">日期范围选择</label> <label class="font-noraml">日期范围选择</label>
<div class="input-daterange input-group"> <div class="input-daterange input-group">
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<input type="text" class="form-control" id="laydate-demo-1" placeholder="yyyy-MM-dd"> <input type="text" class="form-control" id="laydate-demo-1" placeholder="yyyy-MM-dd">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">显示年月日</label> <label class="font-noraml">显示年月日</label>
<div class="input-group date"> <div class="input-group date">
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
<input type="text" class="form-control" id="laydate-demo-2" placeholder="yyyy-MM-dd"> <input type="text" class="form-control" id="laydate-demo-2" placeholder="yyyy-MM-dd">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">显示年月日时分秒</label> <label class="font-noraml">显示年月日时分秒</label>
<div class="input-group date"> <div class="input-group date">
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<input type="text" class="form-control" id="laydate-demo-3" placeholder="yyyy-MM-dd HH:mm:ss"> <input type="text" class="form-control" id="laydate-demo-3" placeholder="yyyy-MM-dd HH:mm:ss">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">单框范围选择</label> <label class="font-noraml">单框范围选择</label>
<div class="input-group date"> <div class="input-group date">
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
<input type="text" class="form-control" id="laydate-demo-4" placeholder="yyyy-MM-dd - yyyy-MM-dd"> <input type="text" class="form-control" id="laydate-demo-4" placeholder="yyyy-MM-dd - yyyy-MM-dd">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="font-noraml">日期范围选择</label> <label class="font-noraml">日期范围选择</label>
<div class="input-daterange input-group"> <div class="input-daterange input-group">
...@@ -124,24 +124,24 @@ ...@@ -124,24 +124,24 @@
$(function(){ $(function(){
<!-- datetimepicker示例 --> <!-- datetimepicker示例 -->
$("#datetimepicker-demo-1").datetimepicker(); $("#datetimepicker-demo-1").datetimepicker();
$("#datetimepicker-demo-2").datetimepicker({ $("#datetimepicker-demo-2").datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
autoclose: true autoclose: true
}); });
$("#datetimepicker-demo-3").datetimepicker({ $("#datetimepicker-demo-3").datetimepicker({
format: "yyyy-mm-dd hh:ii:ss", format: "yyyy-mm-dd hh:ii:ss",
autoclose: true autoclose: true
}); });
$('.form_date').datetimepicker({ $('.form_date').datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
autoclose: true autoclose: true
}); });
$("#datetimepicker-startTime").datetimepicker({ $("#datetimepicker-startTime").datetimepicker({
format: 'yyyy-mm-dd', format: 'yyyy-mm-dd',
minView: "month", minView: "month",
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
var startTime = event.date; var startTime = event.date;
$('#datetimepicker-endTime').datetimepicker('setStartDate', startTime); $('#datetimepicker-endTime').datetimepicker('setStartDate', startTime);
}); });
$("#datetimepicker-endTime").datetimepicker({ $("#datetimepicker-endTime").datetimepicker({
format: 'yyyy-mm-dd', format: 'yyyy-mm-dd',
minView: "month", minView: "month",
...@@ -167,31 +167,31 @@ ...@@ -167,31 +167,31 @@
var endTime = event.date; var endTime = event.date;
$("#datetimepicker-startTime").datetimepicker('setEndDate', endTime); $("#datetimepicker-startTime").datetimepicker('setEndDate', endTime);
}); });
<!-- laydate示例 --> <!-- laydate示例 -->
layui.use('laydate', function(){ layui.use('laydate', function(){
var laydate = layui.laydate; var laydate = layui.laydate;
laydate.render({ laydate.render({
elem: '#laydate-demo-1' elem: '#laydate-demo-1'
}); });
laydate.render({ laydate.render({
elem: '#laydate-demo-2', elem: '#laydate-demo-2',
type: 'date' type: 'date'
}); });
laydate.render({ laydate.render({
elem: '#laydate-demo-3', elem: '#laydate-demo-3',
type: 'datetime', type: 'datetime',
trigger: 'click' trigger: 'click'
}); });
laydate.render({ laydate.render({
elem: '#laydate-demo-4', elem: '#laydate-demo-4',
range: true range: true
}); });
var startDate = laydate.render({ var startDate = laydate.render({
elem: '#laydate-startTime', elem: '#laydate-startTime',
max: $('#laydate-endTime').val(), max: $('#laydate-endTime').val(),
...@@ -210,7 +210,7 @@ ...@@ -210,7 +210,7 @@
} }
} }
}); });
var endDate = laydate.render({ var endDate = laydate.render({
elem: '#laydate-endTime', elem: '#laydate-endTime',
min: $('#laydate-startTime').val(), min: $('#laydate-startTime').val(),
......
...@@ -107,4 +107,4 @@ ...@@ -107,4 +107,4 @@
} }
</script> </script>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -19,10 +19,9 @@ ...@@ -19,10 +19,9 @@
</li> </li>
<li class=""><a data-toggle="tab" href="#tab-2" aria-expanded="false">状态管理</a> <li class=""><a data-toggle="tab" href="#tab-2" aria-expanded="false">状态管理</a>
</li> </li>
<li class=""><a data-toggle="tab" href="#tab-2" aria-expanded="false">库存预警</a> <li class=""><a data-toggle="tab" href="#tab-6" aria-expanded="false" onclick="refundConfigInfo()">退款管理</a>
</li> </li>
<li class=""><a data-toggle="tab" href="#tab-3" aria-expanded="false" <li class=""><a data-toggle="tab" href="#tab-3" aria-expanded="false" onclick="memberInfo()">会员信息配置</a>
onclick="memberInfo()">会员信息配置</a>
</li> </li>
<li class=""><a data-toggle="tab" href="#tab-4" aria-expanded="false" onclick="agentInfo()">代理配置</a> <li class=""><a data-toggle="tab" href="#tab-4" aria-expanded="false" onclick="agentInfo()">代理配置</a>
</li> </li>
...@@ -236,6 +235,12 @@ ...@@ -236,6 +235,12 @@
height=800px frameborder=0></iframe> height=800px frameborder=0></iframe>
</div> </div>
</div> </div>
<div id="tab-6" class="tab-pane">
<div class="panel-body">
<iframe id="refundConfig_iframe" name="refundConfig_iframe" marginwidth=0 marginheight=0 width=100%
height=800px frameborder=0></iframe>
</div>
</div>
</div> </div>
...@@ -312,6 +317,11 @@ ...@@ -312,6 +317,11 @@
document.getElementById("damai_iframe").src = "../damai/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", ""); document.getElementById("damai_iframe").src = "../damai/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "");
} }
//退款管理
function refundConfigInfo() {
document.getElementById("refundConfig_iframe").src = "../refundConfig/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "");
}
$("#tab-nav-1").bind("click", function () { $("#tab-nav-1").bind("click", function () {
$("#tab_iframe_1").attr("src", prefix + "/performanceStatic/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "")); $("#tab_iframe_1").attr("src", prefix + "/performanceStatic/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", ""));
}); });
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('退款管理')"/>
<th:block th:include="include :: datetimepicker-css"/>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-refund-edit" th:object="${performanceRefundConfigVo}">
<div class="form-group">
<label class="col-sm-3 control-label is-required">performances_id:</label>
<div class="col-sm-8">
<input name="performancesId" th:field="*{performancesId}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">演出名称:</label>
<div class="col-sm-8">
<input name="title" th:field="*{title}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">开启退款:</label>
<div class="col-sm-8" th:if="*{isCanRefund==1}">
<div class="radio check-box">
<input type="radio" value="1" name="performance_isCanRefund" checked>开启</label>
</div>
<div class="radio check-box">
<input type="radio" value="0" name="performance_isCanRefund">关闭</label>
</div>
</div>
<div class="col-sm-8" th:if="*{isCanRefund==0}">
<div class="radio check-box">
<input type="radio" value="1" name="performance_isCanRefund">开启</label>
</div>
<div class="radio check-box">
<input type="radio" value="0" name="performance_isCanRefund" checked> 关闭</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">定时: </label>
<input th:field="${performanceRefundConfigVo.refundOpenTime}" type="text" style="width: 200px;float: left"
class="form-control" id="startTime" placeholder="开始时间选择" name="refundOpenTime"
required/>
<span class="control-label" style="float: left;margin-left: 10px;margin-right: 10px"></span>
<input th:field="${performanceRefundConfigVo.refundCloseTime}" type="text" style="width: 200px;float: left"
class="form-control" id="endTime" placeholder="结束时间选择" name="refundCloseTime"
required/>
</div>
<button type="button" class="btn btn-w-m btn-success" onclick="submitHandler()">
修改
</button>
</form>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: datetimepicker-js"/>
<script th:inline="javascript">
var prefix = ctx + "kylin/performances";
$("#form-refund-edit").validate({
focusCleanup: true
});
$("#startTime").datetimepicker({
format: "yyyy-mm-dd hh:ii:ss",
autoclose: true
});
$("#endTime").datetimepicker({
format: "yyyy-mm-dd hh:ii:ss",
autoclose: true
});
function submitHandler() {
var param = {
performancesId: '[[${performanceRefundConfigVo.performancesId}]]'.replaceAll("\"", ""),
isCanRefund: parseInt($("input[name^='performance_isCanRefund']:checked").val()),
refundOpenTime: $("input[name^='refundOpenTime']").val(),
refundCloseTime: $("input[name^='refundCloseTime']").val()
}
$.operate.post(prefix + "/refundConfig/change",
param,
function (res) {
location.reload();
});
}
</script>
</body>
</html>
...@@ -23,15 +23,20 @@ import com.liquidnet.service.kylin.dto.vo.returns.RefundOrderDetailsVo; ...@@ -23,15 +23,20 @@ import com.liquidnet.service.kylin.dto.vo.returns.RefundOrderDetailsVo;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*; import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.kylin.service.IKylinOrderRefundsService; import com.liquidnet.service.kylin.service.IKylinOrderRefundsService;
import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -72,6 +77,8 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -72,6 +77,8 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
@Autowired @Autowired
MongoTemplate mongoTemplate; MongoTemplate mongoTemplate;
@Autowired
private MongoConverter mongoConverter;
public ResponseDto refundApply(RefundApplyParam refundApplyParam) { public ResponseDto refundApply(RefundApplyParam refundApplyParam) {
String orderTicketsId = refundApplyParam.getOrderTicketsId(); String orderTicketsId = refundApplyParam.getOrderTicketsId();
...@@ -141,7 +148,7 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -141,7 +148,7 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
double onePrice = (priceActual - priceExpress) / allEntitiesCount;//单价 double onePrice = (priceActual - priceExpress) / allEntitiesCount;//单价
List<Double> realRefundPriceList = new ArrayList<>(); List<Double> realRefundPriceList = new ArrayList<>();
if (null == refundApplyParam.getOrderRefundBatchesId() || refundApplyParam.getOrderRefundBatchesId().isEmpty()) { // 不是批量退款 if (null == refundApplyParam.getOrderRefundBatchesId() || refundApplyParam.getOrderRefundBatchesId().isEmpty()) { // 不是批量退款
for (int i = 0; i <= ticketEntityIds.size() -1; i++) { for (int i = 0; i <= ticketEntityIds.size() - 1; i++) {
Double price = entitiesPrice.get(i); Double price = entitiesPrice.get(i);
if (price < 0) { if (price < 0) {
return ResponseDto.failure("退款金额不能为0"); return ResponseDto.failure("退款金额不能为0");
...@@ -186,6 +193,15 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -186,6 +193,15 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
RefundPriceExpress, RefundPriceExpress,
ticketEntityIds, realRefundPriceList ticketEntityIds, realRefundPriceList
); );
// KylinOrderTicketVo vo = new KylinOrderTicketVo();
HashMap<String,Object> map = new HashMap<>();
map.put("isHaveRefundDetails",1);
BasicDBObject obj = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTicketsId)).getQueryObject(),
obj);
if (res) { if (res) {
return ResponseDto.success(); return ResponseDto.success();
} else { } else {
...@@ -387,7 +403,7 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -387,7 +403,7 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
List<KylinOrderTicketEntitiesDao> entitiesListTemp = kylinOrderTicketEntitiesMapper.getRefundEntitiesList(kylinOrderTickets.getOrderTicketsId()); List<KylinOrderTicketEntitiesDao> entitiesListTemp = kylinOrderTicketEntitiesMapper.getRefundEntitiesList(kylinOrderTickets.getOrderTicketsId());
List<KylinOrderTicketEntitiesDao> entitiesList = new ArrayList<>(); List<KylinOrderTicketEntitiesDao> entitiesList = new ArrayList<>();
if(entitiesListTemp.size() > 0) { if (entitiesListTemp.size() > 0) {
double priceActual = kylinOrderTickets.getPriceActual().doubleValue(); double priceActual = kylinOrderTickets.getPriceActual().doubleValue();
double priceExpress = kylinOrderTickets.getPriceExpress().doubleValue(); double priceExpress = kylinOrderTickets.getPriceExpress().doubleValue();
int allEntitiesCount = kylinOrderTicketEntitiesMapper.selectCount(// 总入场人数量 排出未付款的 用来计算单入场人的价格 int allEntitiesCount = kylinOrderTicketEntitiesMapper.selectCount(// 总入场人数量 排出未付款的 用来计算单入场人的价格
......
...@@ -13,6 +13,7 @@ import com.liquidnet.service.kylin.dto.param.*; ...@@ -13,6 +13,7 @@ import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceMemberHistoryVo; import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceMemberHistoryVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketTimesPartnerVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketTimesPartnerVo;
...@@ -209,12 +210,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -209,12 +210,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
List<PerformanceAdminListDao> voList = performancesMapper.misPerformanceList(map); List<PerformanceAdminListDao> voList = performancesMapper.misPerformanceList(map);
for (PerformanceAdminListDao item : voList) { for (PerformanceAdminListDao item : voList) {
item.setStatus(item.getStatus()); item.setStatus(item.getStatus());
if(item.getStatus() >=6 && item.getStatus()!=7){ if (item.getStatus() >= 6 && item.getStatus() != 7) {
if (DateUtil.compareStrDay(item.getTimeSell(), DateUtil.getNowTime()) > 0) {//未开始 if (DateUtil.compareStrDay(item.getTimeSell(), DateUtil.getNowTime()) > 0) {//未开始
item.setStatus(9); item.setStatus(9);
} else if (DateUtil.compareStrDay(item.getTimeStop(), DateUtil.getNowTime()) < 0) {//已结束 } else if (DateUtil.compareStrDay(item.getTimeStop(), DateUtil.getNowTime()) < 0) {//已结束
item.setStatus(10); item.setStatus(10);
}else{ } else {
item.setStatus(6); item.setStatus(6);
} }
} }
...@@ -346,7 +347,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -346,7 +347,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
} }
boolean isExists = mongoTemplate.exists(Query.query(Criteria.where("status").is(1).and("performancesId").is(performanceId)), PerformanceMemberAuditParam.class, PerformanceMemberAuditParam.class.getSimpleName()); boolean isExists = mongoTemplate.exists(Query.query(Criteria.where("status").is(1).and("performancesId").is(performanceId)), PerformanceMemberAuditParam.class, PerformanceMemberAuditParam.class.getSimpleName());
if (isExists) { if (isExists) {
performanceMemberAuditDao.setIsSubmit(1); performanceMemberAuditDao.setIsSubmit(1);
} else { } else {
performanceMemberAuditDao.setIsSubmit(0); performanceMemberAuditDao.setIsSubmit(0);
} }
...@@ -565,6 +566,37 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -565,6 +566,37 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
} }
} }
@Override
public PerformanceRefundConfigVo getRefundConfig(String performanceId) {
KylinPerformances kylinPerformances = performancesMapper.selectOne(new UpdateWrapper<KylinPerformances>().eq("performances_id", performanceId));
KylinPerformanceStatus kylinPerformanceStatus = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performanceId));
PerformanceRefundConfigVo vo = new PerformanceRefundConfigVo();
vo.setPerformancesId(kylinPerformances.getPerformancesId());
vo.setTitle(kylinPerformances.getTitle());
vo.setIsCanRefund(kylinPerformanceStatus.getIsCanRefund());
vo.setRefundCloseTime(kylinPerformanceStatus.getRefundCloseTime()==null?"":DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getRefundCloseTime()));
vo.setRefundOpenTime(kylinPerformanceStatus.getRefundOpenTime()==null?"":DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getRefundOpenTime()));
return vo;
}
@Override
public boolean changeRefundConfig(String performancesId,
Integer isCanRefund,
String refundOpenTime,
String refundCloseTime) {
KylinPerformanceStatus kylinPerformanceStatus = new KylinPerformanceStatus();
kylinPerformanceStatus.setIsCanRefund(isCanRefund);
kylinPerformanceStatus.setRefundOpenTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundOpenTime));
kylinPerformanceStatus.setRefundCloseTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(refundCloseTime));
try {
performanceStatusMapper.update(kylinPerformanceStatus, new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override @Override
public KylinPerformanceAgentVo getPerformanceAgent(String performancesId) { public KylinPerformanceAgentVo getPerformanceAgent(String performancesId) {
KylinPerformances performanceData = performancesMapper.selectOne(new UpdateWrapper<KylinPerformances>().eq("performances_id", performancesId)); KylinPerformances performanceData = performancesMapper.selectOne(new UpdateWrapper<KylinPerformances>().eq("performances_id", performancesId));
......
...@@ -227,7 +227,6 @@ public class DataUtils { ...@@ -227,7 +227,6 @@ public class DataUtils {
KylinPerformanceVo vo = getPerformanceVo(performanceId); KylinPerformanceVo vo = getPerformanceVo(performanceId);
int isTrueName = vo.getIsTrueName(); int isTrueName = vo.getIsTrueName();
int ticketType = 0;
String useTime = ""; String useTime = "";
HashMap<String, ArrayList<String>> allTicketId = new HashMap<>(); HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
for (int x = 0; x < vo.getTicketTimeList().size(); x++) { for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
...@@ -240,7 +239,6 @@ public class DataUtils { ...@@ -240,7 +239,6 @@ public class DataUtils {
} }
if (ticketItem.getTicketsId().equals(ticketId)) { if (ticketItem.getTicketsId().equals(ticketId)) {
useTime = ticketItem.getUseStart(); useTime = ticketItem.getUseStart();
ticketType = ticketItem.getType();
} }
} }
allTicketId.put(timeItem.getUseStart(), ticketList); allTicketId.put(timeItem.getUseStart(), ticketList);
......
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 退款图片
* </p>
*
* @author liquidnet
* @since 2021-05-11
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinOrderRefundPic implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* refund_pic_id
*/
private String refundPicId;
/**
* 订单退款表id
*/
private String orderRefundsId;
/**
* 图片地址
*/
private String picUrl;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 修改时间
*/
private LocalDateTime updatedAt;
}
...@@ -89,6 +89,26 @@ public class KylinPerformanceStatus implements Serializable { ...@@ -89,6 +89,26 @@ public class KylinPerformanceStatus implements Serializable {
*/ */
private Integer isRecommend; private Integer isRecommend;
/**
* 是否支持退款 0否 1是
*/
private Integer isCanRefund;
/**
* 是否开启退款比例 0否 1是
*/
private Integer isOpenRefundPresent;
/**
* 退款开始时间
*/
private LocalDateTime refundOpenTime;
/**
* 退款结束时间
*/
private LocalDateTime refundCloseTime;
/** /**
* 创建时间 * 创建时间
*/ */
......
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.entity.KylinOrderRefundPic;
import com.liquidnet.service.kylin.entity.KylinTicketTimes;
/**
* <p>
* 场次 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-05-06
*/
public interface KylinOrderRefundPicMapper extends BaseMapper<KylinOrderRefundPic> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinOrderRefundPicMapper">
</mapper>
...@@ -88,7 +88,6 @@ public class KylinUtils { ...@@ -88,7 +88,6 @@ public class KylinUtils {
String redisKey; String redisKey;
KylinPerformanceVo vo = (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId); KylinPerformanceVo vo = (KylinPerformanceVo) redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
int isTrueName = vo.getIsTrueName(); int isTrueName = vo.getIsTrueName();
int ticketType = 0;
String useTime = ""; String useTime = "";
HashMap<String, ArrayList<String>> allTicketId = new HashMap<>(); HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
for (int x = 0; x < vo.getTicketTimeList().size(); x++) { for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
...@@ -101,7 +100,6 @@ public class KylinUtils { ...@@ -101,7 +100,6 @@ public class KylinUtils {
} }
if (ticketItem.getTicketsId().equals(ticketId)) { if (ticketItem.getTicketsId().equals(ticketId)) {
useTime = ticketItem.getUseStart(); useTime = ticketItem.getUseStart();
ticketType = ticketItem.getType();
} }
} }
allTicketId.put(timeItem.getUseStart(), ticketList); allTicketId.put(timeItem.getUseStart(), ticketList);
......
...@@ -765,8 +765,8 @@ CREATE TABLE `kylin_order_express` ...@@ -765,8 +765,8 @@ CREATE TABLE `kylin_order_express`
PRIMARY KEY (`mid`) PRIMARY KEY (`mid`)
) ENGINE = InnoDB COMMENT '订单快递表'; ) ENGINE = InnoDB COMMENT '订单快递表';
drop TABLE if exists `kylin_order_express`; drop TABLE if exists `kylin_order_refund_pic`;
CREATE TABLE `kylin_refund_pic` CREATE TABLE `kylin_order_refund_pic`
( (
`mid` int unsigned NOT NULL AUTO_INCREMENT, `mid` int unsigned NOT NULL AUTO_INCREMENT,
`refund_pic_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'refund_pic_id', `refund_pic_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'refund_pic_id',
...@@ -774,6 +774,7 @@ CREATE TABLE `kylin_refund_pic` ...@@ -774,6 +774,7 @@ CREATE TABLE `kylin_refund_pic`
`pic_url` tinyint NOT NULL DEFAULT '0' COMMENT '图片地址', `pic_url` tinyint NOT NULL DEFAULT '0' COMMENT '图片地址',
`created_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL,
KEY `kylin_order_express_order_express_id_index` (`refund_pic_id`), KEY `kylin_refund_pic_refund_pic_id_index` (`refund_pic_id`),
KEY `kylin_refund_pic_order_refunds_id_index` (`order_refunds_id`),
PRIMARY KEY (`mid`) PRIMARY KEY (`mid`)
) ENGINE = InnoDB COMMENT '订单快递表'; ) ENGINE = InnoDB COMMENT '订单退款图片表';
...@@ -9,6 +9,7 @@ import com.liquidnet.service.kylin.dto.param.PayOrderParam; ...@@ -9,6 +9,7 @@ import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam; import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo; import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderRefundVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo; import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService; import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl; import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl;
...@@ -87,6 +88,37 @@ public class KylinOrderTicketsController { ...@@ -87,6 +88,37 @@ public class KylinOrderTicketsController {
} }
} }
@GetMapping("toOrderRefundDetails")
@ApiOperation("想要退款订单详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<OrderDetailsVo> toOrderRefundDetails(@RequestParam(value = "orderId", required = false) @NotNull(message = "订单id不能为空") String orderId) {
OrderDetailsVo vo = orderTicketsService.toOrderRefundDetails(orderId);
if (null == vo) {
return ResponseDto.failure(ErrorMapping.get("20003"));
} else {
return ResponseDto.success(vo);
}
}
@PostMapping("sendOrderRefund")
@ApiOperation("发起退款申请")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<Boolean> 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) {
return orderTicketsService.sendOrderRefund(orderId, orderTicketEntitiesId, reason, picList);
}
@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 ResponseDto.success(orderTicketsService.orderRefundDetails(orderId,orderRefundId));
}
@GetMapping("checkPayment") @GetMapping("checkPayment")
@ApiOperation("订单状态") @ApiOperation("订单状态")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
......
package com.liquidnet.service.kylin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.entity.KylinOrderRefundPic;
import com.liquidnet.service.kylin.mapper.KylinOrderRefundPicMapper;
import com.liquidnet.service.kylin.service.IKylinOrderRefundPicService;
import org.springframework.stereotype.Service;
@Service
public class KylinOrderRefundPicServiceImpl extends ServiceImpl<KylinOrderRefundPicMapper, KylinOrderRefundPic> implements IKylinOrderRefundPicService {
}
...@@ -2,11 +2,8 @@ package com.liquidnet.service.kylin.service.impl; ...@@ -2,11 +2,8 @@ package com.liquidnet.service.kylin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus; import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.KylinTickets;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper; import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper;
import com.liquidnet.service.kylin.mapper.KylinTicketsMapper;
import com.liquidnet.service.kylin.service.IKylinOrderTicketStatusService; import com.liquidnet.service.kylin.service.IKylinOrderTicketStatusService;
import com.liquidnet.service.kylin.service.IKylinTicketsService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
......
...@@ -404,6 +404,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -404,6 +404,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
inventory.setIsElectronic(ticketItem.getIsElectronic()); inventory.setIsElectronic(ticketItem.getIsElectronic());
inventory.setCounts(ticketItem.getCounts()); inventory.setCounts(ticketItem.getCounts());
inventory.setIsShowCode(ticketItem.getIsShowCode()); inventory.setIsShowCode(ticketItem.getIsShowCode());
inventory.setQrCodeShowTime(DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketItem.getQrCodeShowTime()));
//修改 mysql 售卖时间 //修改 mysql 售卖时间
KylinTickets ticketSellTime = new KylinTickets(); KylinTickets ticketSellTime = new KylinTickets();
......
...@@ -379,6 +379,7 @@ public class PerformanceVoTask { ...@@ -379,6 +379,7 @@ public class PerformanceVoTask {
} }
// 判断是否需要审核
public boolean judgeIsAudit(String performanceId) { public boolean judgeIsAudit(String performanceId) {
KylinPerformanceMisVo misVo = getPerformanceMisVo(performanceId); KylinPerformanceMisVo misVo = getPerformanceMisVo(performanceId);
KylinPerformanceVo mongoVo = mongoVoUtils.combinePerformanceVoData(performanceId); KylinPerformanceVo mongoVo = mongoVoUtils.combinePerformanceVoData(performanceId);
...@@ -432,10 +433,12 @@ public class PerformanceVoTask { ...@@ -432,10 +433,12 @@ public class PerformanceVoTask {
if (!ticketVo.getTitle().equals(ticketPartnerVo.getTitle())) { if (!ticketVo.getTitle().equals(ticketPartnerVo.getTitle())) {
log.debug("NEED CHANGE TICKET TITLE"); log.debug("NEED CHANGE TICKET TITLE");
return true; return true;
} else if (!ticketVo.getQrCodeShowTime().equals(ticketPartnerVo.getQrCodeShowTime())) { }
log.debug("NEED CHANGE TICKET QRCODESHOWTIME"); // else if (!ticketVo.getQrCodeShowTime().equals(ticketPartnerVo.getQrCodeShowTime())) {
return true; // log.debug("NEED CHANGE TICKET QRCODESHOWTIME");
} else if (!ticketVo.getDescribeElectronic().equals(ticketPartnerVo.getDescribeElectronic())) { // return true;
// }
else if (!ticketVo.getDescribeElectronic().equals(ticketPartnerVo.getDescribeElectronic())) {
log.debug("NEED CHANGE TICKET DESCRIBEELECTRONIC"); log.debug("NEED CHANGE TICKET DESCRIBEELECTRONIC");
return true; return true;
} else if (!ticketVo.getDescribeExpress().equals(ticketPartnerVo.getDescribeExpress())) { } else if (!ticketVo.getDescribeExpress().equals(ticketPartnerVo.getDescribeExpress())) {
......
...@@ -21,6 +21,7 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -21,6 +21,7 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
...@@ -38,8 +39,6 @@ public class DataUtils { ...@@ -38,8 +39,6 @@ public class DataUtils {
@Autowired @Autowired
private MongoVoUtils mongoVoUtils; private MongoVoUtils mongoVoUtils;
@Autowired @Autowired
private DataUtils dataUtils;
@Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
/** /**
...@@ -290,7 +289,6 @@ public class DataUtils { ...@@ -290,7 +289,6 @@ public class DataUtils {
KylinPerformanceVo vo = getPerformanceVo(performanceId); KylinPerformanceVo vo = getPerformanceVo(performanceId);
int isTrueName = vo.getIsTrueName(); int isTrueName = vo.getIsTrueName();
int ticketType = 0;
String useTime = ""; String useTime = "";
HashMap<String, ArrayList<String>> allTicketId = new HashMap<>(); HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
for (int x = 0; x < vo.getTicketTimeList().size(); x++) { for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
...@@ -303,7 +301,6 @@ public class DataUtils { ...@@ -303,7 +301,6 @@ public class DataUtils {
} }
if (ticketItem.getTicketsId().equals(ticketId)) { if (ticketItem.getTicketsId().equals(ticketId)) {
useTime = ticketItem.getUseStart(); useTime = ticketItem.getUseStart();
ticketType = ticketItem.getType();
} }
} }
allTicketId.put(timeItem.getUseStart(), ticketList); allTicketId.put(timeItem.getUseStart(), ticketList);
...@@ -339,61 +336,6 @@ public class DataUtils { ...@@ -339,61 +336,6 @@ public class DataUtils {
} catch (Exception e) { } catch (Exception e) {
return 0; return 0;
} }
// if (buyCount > 0) {
// redisUtil.incr(ticketIdKey, buyCount);
// if (1 == ticketType) {
// int count = 0;
// for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
// String item = allTicketId.get(useTime).get(i);
// if (allTicketId.get(useTime).size() == 1) {
// redisUtil.incr(performanceIdKey, buyCount);
// break;
// }
// if (null == redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)) {
// redisUtil.set(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item, 0);
// }
// if (i == 0) {
// count = (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item);
// } else {
// if (count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)) {
// redisUtil.incr(performanceIdKey, buyCount);
// break;
// }
// }
// }
// } else {
// System.out.println("BUY_COUNT = "+buyCount);
// redisUtil.incr(performanceIdKey, buyCount);
// for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
// String item = allTicketId.get(useTime).get(i);
// redisUtil.set(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item, 0);
// }
// }
// } else {
// redisUtil.decr(ticketIdKey, Math.abs(buyCount));
// if (1 == ticketType) {
// int count = 0;
// for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
// String item = allTicketId.get(useTime).get(i);
// if (allTicketId.get(useTime).size() == 1) {
// redisUtil.decr(performanceIdKey, Math.abs(buyCount));
// break;
// }
// if (null == redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)) {
// redisUtil.set(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item, 0);
// }
// if (i == 0) {
// count = (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item);
// } else {
// if (count != (int) redisUtil.get(redisKey + ":" + KylinRedisConst.TICKET_ID + ":" + item)) {
// redisUtil.decr(performanceIdKey, Math.abs(buyCount));
// break;
// }
// }
// }
// } else {
// redisUtil.decr(performanceIdKey, Math.abs(buyCount));
// }
} }
// 获取 用户维度 票种购买数量 // 获取 用户维度 票种购买数量
...@@ -423,15 +365,6 @@ public class DataUtils { ...@@ -423,15 +365,6 @@ public class DataUtils {
} }
} }
// 获取 证件维度 票种适用时间
public String getIdCardTUseTime(String idCard, String ticketId) {
try {
return (String) redisUtil.get(KylinRedisConst.USERID_BUY_INFO + idCard + ":" + KylinRedisConst.TICKET_ID + ":" + ticketId + ":" + KylinRedisConst.USE_TIME);
} catch (Exception e) {
return "";
}
}
/** /**
* 删除订单redis * 删除订单redis
* *
...@@ -653,4 +586,74 @@ public class DataUtils { ...@@ -653,4 +586,74 @@ public class DataUtils {
return query; return query;
} }
public KylinOrderRefundsVoBase getOrderRefundVo(String orderRefundsId){
if (redisUtil.hasKey(KylinRedisConst.ORDER_REFUND + orderRefundsId)) {
} else {
KylinOrderRefundsVoBase orderRefundsVo = mongoTemplate.findOne(Query.query(Criteria.where("orderRefundsId").is(orderRefundsId)), KylinOrderRefundsVoBase.class, KylinOrderRefundsVoBase.class.getSimpleName());
List<KylinOrderRefundEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderRefundsId").is(orderRefundsId)), KylinOrderRefundEntitiesVo.class, KylinOrderRefundEntitiesVo.class.getSimpleName());
List<KylinOrderRefundPicVo> picVos = mongoTemplate.find(Query.query(Criteria.where("orderRefundsId").is(orderRefundsId)),KylinOrderRefundPicVo.class,KylinOrderRefundPicVo.class.getSimpleName());
orderRefundsVo.setOrderRefundEntitiesVoList(kylinOrderTicketEntitiesVoList);
orderRefundsVo.setOrderRefundPicVos(picVos);
redisUtil.set(KylinRedisConst.ORDER_REFUND + orderRefundsId, orderRefundsVo);
}
return (KylinOrderRefundsVoBase) redisUtil.get(KylinRedisConst.ORDER_REFUND + orderRefundsId);
}
public List<KylinOrderRefundsVoBase> getOrderRefundVoByOrderId(String orderId){
if (redisUtil.hasKey(KylinRedisConst.ORDER_REFUND_BY_ORDER_ID + orderId)) {
} else {
List<KylinOrderRefundsVoBase> orderRefundsVoList = new ArrayList<>();
List<KylinOrderRefundsVoBase> data = mongoTemplate.find(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderRefundsVoBase.class, KylinOrderRefundsVoBase.class.getSimpleName());
for (KylinOrderRefundsVoBase item : data) {
List<KylinOrderRefundEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderRefundsId").is(item.getOrderRefundsId())), KylinOrderRefundEntitiesVo.class, KylinOrderRefundEntitiesVo.class.getSimpleName());
if(kylinOrderTicketEntitiesVoList.size()>1){
continue;
}
item.setOrderRefundEntitiesVoList(kylinOrderTicketEntitiesVoList);
List<KylinOrderRefundPicVo> picVos = mongoTemplate.find(Query.query(Criteria.where("orderRefundsId").is(item.getOrderRefundsId())),KylinOrderRefundPicVo.class,KylinOrderRefundPicVo.class.getSimpleName());
item.setOrderRefundPicVos(picVos);
orderRefundsVoList.add(item);
}
redisUtil.set(KylinRedisConst.ORDER_REFUND_BY_ORDER_ID + orderId, orderRefundsVoList);
}
return (List<KylinOrderRefundsVoBase>) redisUtil.get(KylinRedisConst.ORDER_REFUND_BY_ORDER_ID + orderId);
}
/**
* 获取可退款票单价格
* @param orderTicketVo 订单vo数据
* @param orderTicketEntitiesId 票单id
* @return
*/
public BigDecimal getCanRefundOrderEntitiesPrice(KylinOrderTicketVo orderTicketVo, List<KylinOrderRefundsVoBase> kylinOrderRefundsVoBaseList, String orderTicketEntitiesId){
//单票实付价格
BigDecimal singlePrice = orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber()));
//单票剩余未退款金额
BigDecimal canRefundSinglePrice = new BigDecimal("0.00");
for (KylinOrderTicketEntitiesVo item : orderTicketVo.getEntitiesVoList()) {
if (item.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) {
canRefundSinglePrice = singlePrice.subtract(item.getRefundPrice());
}
}
//订单锁定金额
BigDecimal orderLockPrice = new BigDecimal("0.00");
for (KylinOrderRefundsVoBase refundVo : kylinOrderRefundsVoBaseList) {
int status = refundVo.getStatus();
if (status == 0 || status == 3 || status == 5 || status == 7) { //退款流程未完成 金额锁定
List<KylinOrderRefundEntitiesVo> refundEntitiesVos = refundVo.getOrderRefundEntitiesVoList();
for (KylinOrderRefundEntitiesVo refundEntitiesVo : refundEntitiesVos) {
if (refundEntitiesVo.getOrderTicketEntitiesId().equals(orderTicketEntitiesId)) {
orderLockPrice = orderLockPrice.add(refundEntitiesVo.getRefundPrice());
}
}
}
}
//订单可退金额
BigDecimal refundSinglePrice = canRefundSinglePrice.subtract(orderLockPrice);
//是否包含快递费
if (orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).subtract(orderTicketVo.getPriceRefund()).compareTo(canRefundSinglePrice) == 0) {
refundSinglePrice = refundSinglePrice.add(orderTicketVo.getPriceExpress());
}
return refundSinglePrice;
}
} }
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
20016=库存不足 20016=库存不足
20017=年龄不符合 20017=年龄不符合
20018=下单失败 20018=下单失败
20019=申请失败
#APP PARTNER #APP PARTNER
20101=添加失败 20101=添加失败
......
...@@ -31,3 +31,11 @@ kylin_order_ticket_status.close=UPDATE kylin_order_ticket_status SET `status` = ...@@ -31,3 +31,11 @@ kylin_order_ticket_status.close=UPDATE kylin_order_ticket_status SET `status` =
kylin_order_ticket_relation.close=UPDATE kylin_order_ticket_relations SET updated_at = ? WHERE order_id = ? kylin_order_ticket_relation.close=UPDATE kylin_order_ticket_relations SET updated_at = ? WHERE order_id = ?
# ------------------------用户发起订单退款----------------------------
kylin_order_ticket_status.refund=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ?)
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 = ?)
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_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 (?,?,?,?)
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