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

Commit 92a9889c authored by jiangxiulong's avatar jiangxiulong

Merge branch 'jxl_1214_refund' into dev_merchant

# Conflicts:
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/mongo/KylinPerformanceVo.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/admin/IKylinPerformancesAdminService.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinExpressModuleController.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinPerformancesController.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinPerformancesAdminServiceImpl.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/DataUtils.java
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinExpressModule.java
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/mapper/KylinExpressModuleMapper.java
#	liquidnet-bus-service/liquidnet-service-executor-all/liquidnet-service-executor-main/src/main/java/com/liquidnet/service/executor/main/handler/PlatformTaskHandler.java
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/docu/db_kylin_20211115_express_refund.sql
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinExpressModuleController.java
parents 9b57a921 bae6ea6c
...@@ -44,6 +44,7 @@ public class KylinRedisConst { ...@@ -44,6 +44,7 @@ public class KylinRedisConst {
// 手续费 // 手续费
public static final String ORDER_REFUND_POUNDAGE = "kylin:order:poundage"; public static final String ORDER_REFUND_POUNDAGE = "kylin:order:poundage";
public static final String ORDER_REFUND_POUNDAGE_EXPLAIN = "kylin:order:poundageExplain"; public static final String ORDER_REFUND_POUNDAGE_EXPLAIN = "kylin:order:poundageExplain";
public static final String REDIS_KEY_KYLIN_REFUND_LOCK = "kylin:order:refund:lock:entitiesId:";
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:";
......
...@@ -63,6 +63,9 @@ public class KylinOrderRefundsAdminVo implements Serializable,Cloneable { ...@@ -63,6 +63,9 @@ public class KylinOrderRefundsAdminVo implements Serializable,Cloneable {
@ApiModelProperty(value = "退款扣除的手续费金额") @ApiModelProperty(value = "退款扣除的手续费金额")
private BigDecimal priceCharges; private BigDecimal priceCharges;
@ApiModelProperty(value = "纸质票号")
private String ticketNum;
@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;
......
...@@ -64,6 +64,9 @@ public class KylinOrderRefundsVo implements Serializable,Cloneable { ...@@ -64,6 +64,9 @@ public class KylinOrderRefundsVo implements Serializable,Cloneable {
@ApiModelProperty(value = "退款扣除的手续费金额") @ApiModelProperty(value = "退款扣除的手续费金额")
private BigDecimal priceCharges; private BigDecimal priceCharges;
@ApiModelProperty(value = "纸质票号")
private String ticketNum;
@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;
......
...@@ -82,12 +82,17 @@ public class KylinOrderTicketPreVo implements Serializable, Cloneable { ...@@ -82,12 +82,17 @@ public class KylinOrderTicketPreVo implements Serializable, Cloneable {
private String useStart; private String useStart;
@ApiModelProperty(value = "演出图片") @ApiModelProperty(value = "演出图片")
private String performanceImg; private String performanceImg;
@ApiModelProperty(value = "是否开启退款手续费 0关闭 1开启")
@ApiModelProperty(value = "用户退款是否开启手续费 0关闭不需要手续费 1开启需要手续费")
private Integer isRefundPoundage; private Integer isRefundPoundage;
@ApiModelProperty(value = "是否开启是否退优惠券 0关闭 1开启") @ApiModelProperty(value = "用户退款快递票是否需要自己支付快递费 1用户承担寄付 0公司月结")
private Integer isRefundVoucher;
@ApiModelProperty(value = "isRefundExpress 1用户承担 0无")
private Integer isRefundExpress; private Integer isRefundExpress;
@ApiModelProperty(value = "用户退款快递票是否需要归还纸质演出票 1需要 0不需要")
private Integer isBackPaperTicket;
// 是否退优惠卷(这个是前后台通用的配置 其他都是针对用户自己退款的)
@ApiModelProperty(value = "退款是否退优惠券 0关闭不退 1开启退")
private Integer isRefundVoucher;
@ApiModelProperty(value = "手续费规则列表") @ApiModelProperty(value = "手续费规则列表")
private OrderRefundPoundageAll refundPoundageAll; private OrderRefundPoundageAll refundPoundageAll;
......
...@@ -34,9 +34,6 @@ public class ZhengzaiAppVersionController extends BaseController { ...@@ -34,9 +34,6 @@ public class ZhengzaiAppVersionController extends BaseController {
@Value("${liquidnet.client.admin.platformUrl}") @Value("${liquidnet.client.admin.platformUrl}")
private String platformUrl; private String platformUrl;
@Value("${liquidnet.al-oss.appUrl}")
private String appUrl;
private String prefix = "zhengzai/kylin/zhengzaiAppVersion"; private String prefix = "zhengzai/kylin/zhengzaiAppVersion";
@Autowired @Autowired
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">开启退款:</label> <label class="col-sm-3 control-label is-required">用户申请退款:</label>
<div class="col-sm-8" th:if="*{isCanRefund==1}"> <div class="col-sm-8" th:if="*{isCanRefund==1}">
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="1" name="performance_isCanRefund" checked>开启</label> <input type="radio" value="1" name="performance_isCanRefund" checked>开启</label>
...@@ -38,8 +38,18 @@ ...@@ -38,8 +38,18 @@
</div> </div>
</div> </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>
<div class="form-group" > <div class="form-group" >
<label class="col-sm-3 control-label is-required">手续费:</label> <label class="col-sm-3 control-label is-required">用户退款手续费:</label>
<div class="col-sm-8" th:if="*{isRefundPoundage==1}"> <div class="col-sm-8" th:if="*{isRefundPoundage==1}">
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="1" name="performance_isRefundPoundage" checked>开启</label> <input type="radio" value="1" name="performance_isRefundPoundage" checked>开启</label>
...@@ -58,40 +68,51 @@ ...@@ -58,40 +68,51 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">退优惠券</label> <label class="col-sm-3 control-label is-required">用户退款快递票快递费</label>
<div class="col-sm-8" th:if="*{isRefundVoucher==1}"> <div class="col-sm-8" th:if="*{isRefundExpress==1}">
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="1" name="performance_isRefundVoucher" checked>开启</label> <input type="radio" value="1" name="performance_isRefundExpress" checked>用户承担</label>
</div> </div>
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="0" name="performance_isRefundVoucher">关闭</label> <input type="radio" value="0" name="performance_isRefundExpress">公司月结</label>
</div> </div>
</div> </div>
<div class="col-sm-8" th:if="*{isRefundVoucher==0}"> <div class="col-sm-8" th:if="*{isRefundExpress==0}">
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="1" name="performance_isRefundVoucher">开启</label> <input type="radio" value="1" name="performance_isRefundExpress">用户承担</label>
</div> </div>
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="0" name="performance_isRefundVoucher" checked> 关闭</label> <input type="radio" value="0" name="performance_isRefundExpress" checked>公司月结</label>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">快递费</label> <label class="col-sm-3 control-label is-required">用户退款快递票是否需要退回</label>
<div class="col-sm-8" th:if="*{isRefundExpress==1}"> <div class="col-sm-8">
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="1" name="performance_isRefundExpress" checked>用户承担</label> <input type="radio" value="0" name="isBackPaperTicket" th:checked="*{isBackPaperTicket==0 ? true : false}" checked> 不需要</label>
</div>
<div class="radio check-box">
<input type="radio" value="1" name="isBackPaperTicket" th:checked="*{isBackPaperTicket==1 ? true : false}">需要</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">退款是否退优惠券:</label>
<div class="col-sm-8" th:if="*{isRefundVoucher==1}">
<div class="radio check-box">
<input type="radio" value="1" name="performance_isRefundVoucher" checked>开启</label>
</div> </div>
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="0" name="performance_isRefundExpress"></label> <input type="radio" value="0" name="performance_isRefundVoucher">关闭</label>
</div> </div>
</div> </div>
<div class="col-sm-8" th:if="*{isRefundExpress==0}"> <div class="col-sm-8" th:if="*{isRefundVoucher==0}">
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="1" name="performance_isRefundExpress">用户承担</label> <input type="radio" value="1" name="performance_isRefundVoucher">开启</label>
</div> </div>
<div class="radio check-box"> <div class="radio check-box">
<input type="radio" value="0" name="performance_isRefundExpress" checked></label> <input type="radio" value="0" name="performance_isRefundVoucher" checked> 关闭</label>
</div> </div>
</div> </div>
</div> </div>
...@@ -124,16 +145,6 @@ ...@@ -124,16 +145,6 @@
<input name="title" th:field="*{orderRefundAddress.address}" class="form-control" type="text" readonly> <input name="title" th:field="*{orderRefundAddress.address}" class="form-control" type="text" readonly>
</div> </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 type="button" class="btn btn-w-m btn-success" onclick="submitHandler()">
修改 修改
......
...@@ -119,6 +119,8 @@ ...@@ -119,6 +119,8 @@
<div class="form-control-static" th:text="*{@dict.getLabel('zhengzai_pay_type',KylinOrderRefundsAdminVo.payType)}"/> <div class="form-control-static" th:text="*{@dict.getLabel('zhengzai_pay_type',KylinOrderRefundsAdminVo.payType)}"/>
<label class="col-sm-2 control-label">取票方式:</label> <label class="col-sm-2 control-label">取票方式:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsAdminVo.getTicketType}"></div> <div class="form-control-static" th:text="${KylinOrderRefundsAdminVo.getTicketType}"></div>
<label class="col-sm-2 control-label">纸质票号:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsAdminVo.ticketNum}"></div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label">申请退款类型:</label> <label class="col-sm-2 control-label">申请退款类型:</label>
......
...@@ -66,9 +66,9 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -66,9 +66,9 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
@Autowired @Autowired
private RedisDataSourceUtil redisDataSourceUtil; private RedisDataSourceUtil redisDataSourceUtil;
@Value("${liquidnet.url-refund.apply}") @Value("${liquidnet.service.dragon.urls.refundApply}")
private String applyUrl; private String applyUrl;
@Value("${liquidnet.url-refund.notify-member}") @Value("${liquidnet.service.platform.urls.memberRefundNotify}")
private String notifyUrl; private String notifyUrl;
@Override @Override
......
...@@ -41,7 +41,7 @@ import java.util.*; ...@@ -41,7 +41,7 @@ import java.util.*;
@Service @Service
public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUpush> implements IAdminUpushService { public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUpush> implements IAdminUpushService {
@Value("${liquidnet.al-oss.imgUrl}") @Value("${liquidnet.aliyun.oss.imgUrl}")
private String imgUrl; private String imgUrl;
@Value("${liquidnet.umeng.ios.appkey}") @Value("${liquidnet.umeng.ios.appkey}")
...@@ -111,20 +111,20 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp ...@@ -111,20 +111,20 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
if (upushParam.getPushRange() == 1) { if (upushParam.getPushRange() == 1) {
if (!CollectionUtil.isEmpty(pushList)) { if (!CollectionUtil.isEmpty(pushList)) {
if (pushList.size() >= 20) { if (pushList.size() >= 20) {
pushList.remove(0); pushList.remove(pushList.size()-1);
} }
} }
pushList.addFirst(adminUpushVo); pushList.addFirst(adminUpushVo);
if (!CollectionUtil.isEmpty(pushList2)) { if (!CollectionUtil.isEmpty(pushList2)) {
if (pushList2.size() >= 20) { if (pushList2.size() >= 20) {
pushList2.remove(0); pushList2.remove(pushList.size()-1);
} }
} }
pushList2.addFirst(adminUpushVo); pushList2.addFirst(adminUpushVo);
} else { } else {
if (!CollectionUtil.isEmpty(pushList)) { if (!CollectionUtil.isEmpty(pushList)) {
if (pushList.size() >= 20) { if (pushList.size() >= 20) {
pushList.remove(0); pushList.remove(pushList.size()-1);
} }
} }
pushList.addFirst(adminUpushVo); pushList.addFirst(adminUpushVo);
......
...@@ -43,7 +43,7 @@ import java.util.stream.Collectors; ...@@ -43,7 +43,7 @@ import java.util.stream.Collectors;
@Service @Service
public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, KylinBanners> implements IKylinBannersService { public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, KylinBanners> implements IKylinBannersService {
@Value("${liquidnet.al-oss.imgUrl}") @Value("${liquidnet.aliyun.oss.imgUrl}")
private String imgUrl; private String imgUrl;
@Autowired @Autowired
......
...@@ -141,7 +141,6 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM ...@@ -141,7 +141,6 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
RefundPriceExpress = priceExpress.subtract(refundPriceExpressSum); RefundPriceExpress = priceExpress.subtract(refundPriceExpressSum);
} }
// todo 出票未出票
// 选择退款的入场人是否正确 // 选择退款的入场人是否正确
Integer[] entitiesStatus = new Integer[]{KylinTableStatusConst.ENTITIES_IS_PAYMENT1, KylinTableStatusConst.ENTITIES_IS_PAYMENT2, KylinTableStatusConst.ENTITIES_IS_PAYMENT4}; Integer[] entitiesStatus = new Integer[]{KylinTableStatusConst.ENTITIES_IS_PAYMENT1, KylinTableStatusConst.ENTITIES_IS_PAYMENT2, KylinTableStatusConst.ENTITIES_IS_PAYMENT4};
int choiceCount = kylinOrderTicketEntitiesMapper.selectCount( int choiceCount = kylinOrderTicketEntitiesMapper.selectCount(
......
...@@ -3,13 +3,11 @@ package com.liquidnet.client.admin.zhengzai.kylin.service.impl; ...@@ -3,13 +3,11 @@ package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.common.utils.StringUtils; import com.liquidnet.client.admin.common.utils.StringUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils; import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.MongoVoUtils; import com.liquidnet.client.admin.zhengzai.kylin.utils.MongoVoUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.TaobaoTicketUtils; import com.liquidnet.client.admin.zhengzai.kylin.utils.TaobaoTicketUtils;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.param.RefundApplyParam; import com.liquidnet.service.kylin.dto.param.RefundApplyParam;
import com.liquidnet.service.kylin.dto.param.RefundCallbackParam; import com.liquidnet.service.kylin.dto.param.RefundCallbackParam;
...@@ -41,7 +39,6 @@ import org.springframework.util.MultiValueMap; ...@@ -41,7 +39,6 @@ import org.springframework.util.MultiValueMap;
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.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -58,10 +55,10 @@ import java.util.stream.Collectors; ...@@ -58,10 +55,10 @@ import java.util.stream.Collectors;
@Service @Service
public class KylinRefundsStatusServiceImpl { public class KylinRefundsStatusServiceImpl {
@Value("${liquidnet.url-refund.apply}") @Value("${liquidnet.service.dragon.urls.refundApply}")
private String applyUrl; private String refundApply;
@Value("${liquidnet.url-refund.notify}") @Value("${liquidnet.service.platform.urls.ticketRefundNotify}")
private String notifyUrl; private String refundNotify;
@Autowired @Autowired
private KylinOrderTicketsMapper kylinOrderTicketsMapper; private KylinOrderTicketsMapper kylinOrderTicketsMapper;
...@@ -111,7 +108,6 @@ public class KylinRefundsStatusServiceImpl { ...@@ -111,7 +108,6 @@ public class KylinRefundsStatusServiceImpl {
// 本次退款票总金额 // 本次退款票总金额
BigDecimal entitiesPriceSum = entitiesPrice.stream().reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal entitiesPriceSum = entitiesPrice.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
// TODO: 2021/5/27 事物 and 部分退款
// 更新数据 // 更新数据
// 订单状态表 和 缓存 // 订单状态表 和 缓存
KylinOrderTicketStatus orderStatusTable = new KylinOrderTicketStatus(); KylinOrderTicketStatus orderStatusTable = new KylinOrderTicketStatus();
...@@ -430,7 +426,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -430,7 +426,7 @@ public class KylinRefundsStatusServiceImpl {
BigDecimal refundPrice = refund.getPrice().add(refund.getPriceExpress()); BigDecimal refundPrice = refund.getPrice().add(refund.getPriceExpress());
MultiValueMap<String, String> params = new LinkedMultiValueMap(); MultiValueMap<String, String> params = new LinkedMultiValueMap();
params.add("code", oderInfo.getPayCode()); params.add("code", oderInfo.getPayCode());
params.add("notifyUrl", notifyUrl); params.add("notifyUrl", refundNotify);
params.add("orderCode", oderInfo.getOrderCode()); params.add("orderCode", oderInfo.getOrderCode());
params.add("orderRefundCode", refund.getOrderRefundCode()); params.add("orderRefundCode", refund.getOrderRefundCode());
params.add("paymentId", oderInfo.getPaymentId()); params.add("paymentId", oderInfo.getPaymentId());
...@@ -446,7 +442,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -446,7 +442,7 @@ public class KylinRefundsStatusServiceImpl {
// 请求pay // 请求pay
String postResult = null; String postResult = null;
try { try {
postResult = HttpUtil.post(applyUrl, params, headers); postResult = HttpUtil.post(refundApply, params, headers);
log.info("退款res" + postResult); log.info("退款res" + postResult);
HashMap hashMapResult = JsonUtils.fromJson(postResult, HashMap.class); HashMap hashMapResult = JsonUtils.fromJson(postResult, HashMap.class);
Boolean success = (Boolean) hashMapResult.get("success"); Boolean success = (Boolean) hashMapResult.get("success");
...@@ -476,13 +472,12 @@ public class KylinRefundsStatusServiceImpl { ...@@ -476,13 +472,12 @@ public class KylinRefundsStatusServiceImpl {
// dataUtils.delOrderRefundVoByOrderId(strings1); // dataUtils.delOrderRefundVoByOrderId(strings1);
continue; continue;
}else{ } else {
//TODO 秀龙 大麦退款 // 同步大麦退款
for (KylinOrderRefunds item : refundList) { KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(refund.getOrderTicketsId());
KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId()); KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId());
taobaoTicketUtils.refundDamaiOrder(orderData,vo); taobaoTicketUtils.refundDamaiOrder(orderData, vo);
} // TODO: 2021/12/21 jxl 同步票务平台
} }
} catch (Exception e) { } catch (Exception e) {
log.info("退款请求pay失败e" + e.getMessage()); log.info("退款请求pay失败e" + e.getMessage());
...@@ -515,8 +510,8 @@ public class KylinRefundsStatusServiceImpl { ...@@ -515,8 +510,8 @@ public class KylinRefundsStatusServiceImpl {
headers.add("Accept", "application/json;charset=UTF-8"); headers.add("Accept", "application/json;charset=UTF-8");
log.info("订单主动完成退款orderTicketRefunded:[refundCallbackParam={}, [orderRefundCode={}, notifyUrl={}]", log.info("订单主动完成退款orderTicketRefunded:[refundCallbackParam={}, [orderRefundCode={}, notifyUrl={}]",
refundCallbackParam, refundInfo.getOrderRefundCode(), notifyUrl); refundCallbackParam, refundInfo.getOrderRefundCode(), refundNotify);
String returnData = HttpUtil.post(notifyUrl, params, headers); String returnData = HttpUtil.post(refundNotify, params, headers);
log.info("订单主动完成退款orderTicketRefunded-platform结果:{}", returnData); log.info("订单主动完成退款orderTicketRefunded-platform结果:{}", returnData);
return true; return true;
......
...@@ -37,7 +37,7 @@ import java.util.List; ...@@ -37,7 +37,7 @@ import java.util.List;
@Service @Service
public class KylinZhengzaiAppVersionsServiceImpl extends ServiceImpl<KylinBannersMapper, KylinBanners> implements IKylinBannersService { public class KylinZhengzaiAppVersionsServiceImpl extends ServiceImpl<KylinBannersMapper, KylinBanners> implements IKylinBannersService {
@Value("${liquidnet.al-oss.appUrl}") @Value("${liquidnet.aliyun.oss.appUrl}")
private String appUrl; private String appUrl;
@Autowired @Autowired
......
...@@ -222,8 +222,14 @@ public class PerformancesExpressServiceImpl extends ServiceImpl<KylinOrderExpres ...@@ -222,8 +222,14 @@ public class PerformancesExpressServiceImpl extends ServiceImpl<KylinOrderExpres
hBody.put("jCity", jCity); hBody.put("jCity", jCity);
hBody.put("jAddress", jAddress); hBody.put("jAddress", jAddress);
// TODO: 2021/6/30 前端选择 // 1寄付|2到付|3包邮
hBody.put("payMethod", "2");// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付; // 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
if (orderStatus.getExpressType() == 1 || orderStatus.getExpressType() == 3) {
hBody.put("payMethod", "0");
} else {
hBody.put("payMethod", "2");
}
hBody.put("expressType", expressType.toString());// 顺丰特快 hBody.put("expressType", expressType.toString());// 顺丰特快
hBody.put("depositumInfo", depositumInfo); hBody.put("depositumInfo", depositumInfo);
......
package com.liquidnet.client.admin.zhengzai.kylin.utils; package com.liquidnet.client.admin.zhengzai.kylin.utils;
import com.liquidnet.service.kylin.dto.vo.KylinExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderOutLineVo; import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderOutLineVo;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil; import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.KylinExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo; import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo;
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;
...@@ -442,6 +442,7 @@ public class DataUtils { ...@@ -442,6 +442,7 @@ public class DataUtils {
return (PageInfo<OrderOutLineVo>) obj; return (PageInfo<OrderOutLineVo>) obj;
} }
} }
//订单信息存redis //订单信息存redis
public void orderSetRedis(String orderCode){ public void orderSetRedis(String orderCode){
KylinOrderTicketVo orderTicketVo = mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(orderCode)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName()); KylinOrderTicketVo orderTicketVo = mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(orderCode)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
......
...@@ -96,7 +96,13 @@ liquidnet: ...@@ -96,7 +96,13 @@ liquidnet:
url: http://devstone.zhengzai.tv/stone url: http://devstone.zhengzai.tv/stone
dragon: dragon:
notifyUrl: https://devdragon.zhengzai.tv/dragon notifyUrl: https://devdragon.zhengzai.tv/dragon
urls:
refundApply: https://devdragon.zhengzai.tv/dragon/refund/refundSingle
refundResult: https://devdragon.zhengzai.tv/dragon/refund/refund/alipay/result
platform: platform:
urls:
ticketRefundNotify: https://devplatform.zhengzai.tv/platform/refund/callback
memberRefundNotify: https://devplatform.zhengzai.tv/platform/amorder/callack/refund
url: http://devplatform.zhengzai.tv url: http://devplatform.zhengzai.tv
sweet: sweet:
url: http://devsweet.zhengzai.tv url: http://devsweet.zhengzai.tv
...@@ -112,7 +118,6 @@ liquidnet: ...@@ -112,7 +118,6 @@ liquidnet:
addresses: 39.107.71.112:8090 addresses: 39.107.71.112:8090
client: client:
admin: admin:
phpPayUrl: http://devdragon.zhengzai.tv
phpMallUrl: https://devmall.zhengzai.tv phpMallUrl: https://devmall.zhengzai.tv
platformUrl: https://devplatform.zhengzai.tv platformUrl: https://devplatform.zhengzai.tv
h5Url: https://devm.zhengzai.tv h5Url: https://devm.zhengzai.tv
......
...@@ -98,7 +98,13 @@ liquidnet: ...@@ -98,7 +98,13 @@ liquidnet:
localUrl: http://testorder.zhengzai.tv/order/order/syncOrder localUrl: http://testorder.zhengzai.tv/order/order/syncOrder
dragon: dragon:
notifyUrl: https://testdragon.zhengzai.tv/dragon notifyUrl: https://testdragon.zhengzai.tv/dragon
urls:
refundApply: https://testdragon.zhengzai.tv/dragon/refund/refundSingle
refundResult: https://testdragon.zhengzai.tv/dragon/refund/refund/alipay/result
platform: platform:
urls:
ticketRefundNotify: https://testplatform.zhengzai.tv/platform/refund/callback
memberRefundNotify: https://testplatform.zhengzai.tv/platform/amorder/callack/refund
url: http://testplatform.zhengzai.tv url: http://testplatform.zhengzai.tv
sweet: sweet:
url: http://testsweet.zhengzai.tv url: http://testsweet.zhengzai.tv
...@@ -115,7 +121,6 @@ liquidnet: ...@@ -115,7 +121,6 @@ liquidnet:
addresses: 192.168.96.147:8090 addresses: 192.168.96.147:8090
client: client:
admin: admin:
phpPayUrl: http://testdragon.zhengzai.tv
phpMallUrl: https://testmall.zhengzai.tv phpMallUrl: https://testmall.zhengzai.tv
platformUrl: https://testplatform.zhengzai.tv platformUrl: https://testplatform.zhengzai.tv
h5Url: https://testm.zhengzai.tv h5Url: https://testm.zhengzai.tv
......
...@@ -15,17 +15,10 @@ ruoyi: ...@@ -15,17 +15,10 @@ ruoyi:
#系统自定义配置 #系统自定义配置
liquidnet: liquidnet:
url-refund:
apply: "${liquidnet.client.admin.phpPayUrl}/dragon/refund/refundSingle"
notify: "${liquidnet.client.admin.platformUrl}/platform/refund/callback"
notify-member: ${liquidnet.client.admin.platformUrl}/platform/amorder/callack/refund
url-banner: url-banner:
url6: "/kylin/performances/recommend/performance/status?pageNum=1&pageSize=50&status=(3,6,7,8,9,10)" #票务 url6: "/kylin/performances/recommend/performance/status?pageNum=1&pageSize=50&status=(3,6,7,8,9,10)" #票务
url7: "${liquidnet.client.admin.phpMallUrl}/admin/goodListForQuick?page=1&per_page=50" #商品 url7: "${liquidnet.client.admin.phpMallUrl}/admin/goodListForQuick?page=1&per_page=50" #商品
url14: "${liquidnet.client.admin.phpMallUrl}/admin/good/collective/quick?page=1&per_page=50" #商品集合 url14: "${liquidnet.client.admin.phpMallUrl}/admin/good/collective/quick?page=1&per_page=50" #商品集合
al-oss:
imgUrl: "https://img.zhengzai.tv/"
appUrl: "https://app.zhengzai.tv/"
# 开发环境配置 # 开发环境配置
server: server:
......
...@@ -166,7 +166,3 @@ global-auth: ...@@ -166,7 +166,3 @@ global-auth:
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
liquidnet:
al-oss:
imgUrl: "https://img.zhengzai.tv/"
# -----------------------------------------------------------
\ No newline at end of file
...@@ -19,11 +19,5 @@ liquidnet: ...@@ -19,11 +19,5 @@ liquidnet:
mongodb: mongodb:
sslEnabled: false sslEnabled: false
database: dev_ln_scene database: dev_ln_scene
al-oss:
imgUrl: "https://img.zhengzai.tv/"
appUrl: "https://app.zhengzai.tv/"
endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
#以下为spring各环境个性配置 #以下为spring各环境个性配置
...@@ -19,11 +19,5 @@ liquidnet: ...@@ -19,11 +19,5 @@ liquidnet:
mongodb: mongodb:
sslEnabled: false sslEnabled: false
database: test_ln_scene database: test_ln_scene
al-oss:
imgUrl: "https://img.zhengzai.tv/"
appUrl: "https://app.zhengzai.tv/"
endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
#以下为spring各环境个性配置 #以下为spring各环境个性配置
package com.liquidnet.service.kylin.entity; package com.liquidnet.service.kylin.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 快递模板表 * 快递模板表
......
...@@ -72,6 +72,11 @@ public class KylinOrderRefunds implements Serializable, Cloneable{ ...@@ -72,6 +72,11 @@ public class KylinOrderRefunds implements Serializable, Cloneable{
private BigDecimal priceExpress; private BigDecimal priceExpress;
private BigDecimal priceCharges; private BigDecimal priceCharges;
/**
* 纸质票号
*/
private String ticketNum;
/** /**
* 退款状态: 0请求退款 2取消退款 1审核通过 5驳回退款 7等待退款 3正在退款 4完成退款 6退款失败 * 退款状态: 0请求退款 2取消退款 1审核通过 5驳回退款 7等待退款 3正在退款 4完成退款 6退款失败
*/ */
......
...@@ -90,14 +90,14 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{ ...@@ -90,14 +90,14 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{
private Integer isRecommend; private Integer isRecommend;
/** /**
* 是否支持退款 0否 1是 * 是否开启退款比例 0否 1是
*/ */
private Integer isCanRefund; private Integer isOpenRefundPresent;
/** /**
* 是否开启退款比例 0否 1是 * 是否支持退款 0否 1是
*/ */
private Integer isOpenRefundPresent; private Integer isCanRefund;
/** /**
* 退款开始时间 * 退款开始时间
...@@ -110,34 +110,40 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{ ...@@ -110,34 +110,40 @@ public class KylinPerformanceStatus implements Serializable ,Cloneable{
private LocalDateTime refundCloseTime; private LocalDateTime refundCloseTime;
/** /**
* 是否开启转赠 0否 1是 * 是否有手续费
*/ */
private Integer isTransfer; private Integer isRefundPoundage;
/** /**
* 转赠开始时间 * 用户退款快递票是否需要自己支付快递费 1用户承担寄付 0公司月结
*/ */
private LocalDateTime transferStartTime; private Integer isRefundExpress;
/** /**
* 转赠结束时间 * 快递票是否需要退回
*/ */
private LocalDateTime transferEndTime; private Integer isBackPaperTicket;
/** /**
* 是否有手续费 * 是否退优惠券
* 这个是前后台通用的配置 其他都是针对用户自己退款的
*/ */
private Integer isRefundPoundage; private Integer isRefundVoucher;
/** /**
* 是否退优惠券 * 是否开启转赠 0否 1是
*/ */
private Integer isRefundVoucher; private Integer isTransfer;
/** /**
* 是否退快递费 * 转赠开始时间
*/ */
private Integer isRefundExpress; private LocalDateTime transferStartTime;
/**
* 转赠结束时间
*/
private LocalDateTime transferEndTime;
/** /**
* 是否需要场地审核 * 是否需要场地审核
......
package com.liquidnet.service.kylin.mapper; package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.KylinExpressModule;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.entity.KylinExpressModule;
/** /**
* <p> * <p>
......
package com.liquidnet.service.feign.platform.api;
import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
@Component
@FeignClient(
name = "liquidnet-service-platform",
contextId = "FeignPlatformApiClient",
path = "platform",
url = "${liquidnet.service.platform.url}",
fallback = FallbackFactory.Default.class
)
public interface FeignPlatformApiClient {
@GetMapping("refund/overtimeRefund")
ResponseDto<String> overtimeRefund();
}
...@@ -3,6 +3,7 @@ package com.liquidnet.service.executor.main.handler; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.executor.main.handler;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.feign.kylin.task.FeignPlatformAlipayBackClient; import com.liquidnet.service.feign.kylin.task.FeignPlatformAlipayBackClient;
import com.liquidnet.service.feign.platform.api.FeignPlatformApiClient;
import com.liquidnet.service.feign.platform.kylin.FeignPlatformFreightClient; import com.liquidnet.service.feign.platform.kylin.FeignPlatformFreightClient;
import com.liquidnet.service.feign.platform.task.FeignPlatformCandyTaskClient; import com.liquidnet.service.feign.platform.task.FeignPlatformCandyTaskClient;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
...@@ -26,6 +27,24 @@ public class PlatformTaskHandler { ...@@ -26,6 +27,24 @@ public class PlatformTaskHandler {
@Autowired @Autowired
private FeignPlatformFreightClient feignPlatformFreightClient; private FeignPlatformFreightClient feignPlatformFreightClient;
@Autowired
FeignPlatformApiClient feignPlatformApiClient;
@XxlJob(value = "sev-platform:overtimeRefund")
public ReturnT<String> overtimeRefund() {
try {
String result = feignPlatformApiClient.overtimeRefund().getData();
log.info("overtimeRefund:结果:"+result);
ReturnT<String> success = ReturnT.SUCCESS;
success.setMsg(result);
return success;
} catch (Exception e) {
log.error("exception of handler:{}", e.getMessage(), e);
ReturnT<String> fail = ReturnT.FAIL;
fail.setMsg(e.getLocalizedMessage());
return fail;
}
}
@XxlJob(value = "sev-platform:alipayActiveCallbackHandler") @XxlJob(value = "sev-platform:alipayActiveCallbackHandler")
public ReturnT<String> alipayActiveCallbackHandler() { public ReturnT<String> alipayActiveCallbackHandler() {
......
...@@ -20,3 +20,5 @@ CREATE TABLE `kylin_express_module` ...@@ -20,3 +20,5 @@ CREATE TABLE `kylin_express_module`
ROW_FORMAT = DYNAMIC COMMENT '快递模板表'; ROW_FORMAT = DYNAMIC COMMENT '快递模板表';
alter table kylin_performance_status add is_back_paper_ticket tinyint NOT NULL DEFAULT 0 COMMENT '快递票是否需要退回 0不需要 1需要' after is_refund_express; alter table kylin_performance_status add is_back_paper_ticket tinyint NOT NULL DEFAULT 0 COMMENT '快递票是否需要退回 0不需要 1需要' after is_refund_express;
alter table kylin_order_refunds add ticket_num varchar(255) NOT NULL DEFAULT '' COMMENT '纸质票号' after price_express;
\ No newline at end of file
...@@ -160,7 +160,7 @@ public class KylinOrderTicketsController { ...@@ -160,7 +160,7 @@ public class KylinOrderTicketsController {
return orderTicketsService.orderTransferBack(orderId); return orderTicketsService.orderTransferBack(orderId);
} }
@GetMapping("toOrderRefundDetails") /*@GetMapping("toOrderRefundDetails")
@ApiOperation("想要退款订单详情") @ApiOperation("想要退款订单详情")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(@RequestParam(value = "orderId", required = false) @NotNull(message = "订单ID不能为空") String orderId) { public ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(@RequestParam(value = "orderId", required = false) @NotNull(message = "订单ID不能为空") String orderId) {
...@@ -197,5 +197,5 @@ public class KylinOrderTicketsController { ...@@ -197,5 +197,5 @@ public class KylinOrderTicketsController {
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<Boolean> orderRefundWithdraw(@RequestParam(value = "orderRefundId", required = true) @NotNull(message = "退款订单ID不能为空") String orderRefundId) { public ResponseDto<Boolean> orderRefundWithdraw(@RequestParam(value = "orderRefundId", required = true) @NotNull(message = "退款订单ID不能为空") String orderRefundId) {
return orderTicketsService.orderRefundWithdraw(orderRefundId); return orderTicketsService.orderRefundWithdraw(orderRefundId);
} }*/
} }
...@@ -46,6 +46,7 @@ public class KylinOrderTicketsRefundController { ...@@ -46,6 +46,7 @@ public class KylinOrderTicketsRefundController {
@ApiImplicitParam(type = "form", dataType = "String", name = "orderTicketEntitiesId", 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 = "reason", value = "退款申请备注", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "picList", value = "图片"), @ApiImplicitParam(type = "form", dataType = "String", name = "picList", value = "图片"),
@ApiImplicitParam(type = "form", dataType = "String", name = "ticketNum", value = "纸质票号"),
@ApiImplicitParam(type = "form", dataType = "Integer", name = "sendExpressType", value = "快递方式 1上门取件 2自主发货"), @ApiImplicitParam(type = "form", dataType = "Integer", name = "sendExpressType", value = "快递方式 1上门取件 2自主发货"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressNumber", value = "自主发货的顺丰订单号"), @ApiImplicitParam(type = "form", dataType = "String", name = "expressNumber", value = "自主发货的顺丰订单号"),
@ApiImplicitParam(type = "form", dataType = "String", name = "expressContacts", value = "发货人姓名"), @ApiImplicitParam(type = "form", dataType = "String", name = "expressContacts", value = "发货人姓名"),
...@@ -58,6 +59,7 @@ public class KylinOrderTicketsRefundController { ...@@ -58,6 +59,7 @@ public class KylinOrderTicketsRefundController {
@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,
@RequestParam(value = "picList", required = false) String picList, @RequestParam(value = "picList", required = false) String picList,
@RequestParam(value = "ticketNum", required = false) String ticketNum,
@RequestParam(value = "sendExpressType", required = false) Integer sendExpressType, @RequestParam(value = "sendExpressType", required = false) Integer sendExpressType,
@RequestParam(value = "expressNumber", required = false) String expressNumber, @RequestParam(value = "expressNumber", required = false) String expressNumber,
...@@ -69,7 +71,7 @@ public class KylinOrderTicketsRefundController { ...@@ -69,7 +71,7 @@ public class KylinOrderTicketsRefundController {
) { ) {
// 退款 // 退款
return kylinOrderTicketsRefundService.sendOrderRefund( return kylinOrderTicketsRefundService.sendOrderRefund(
orderId, orderTicketEntitiesId, reason, picList, orderId, orderTicketEntitiesId, reason, picList, ticketNum,
sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime sendExpressType, expressNumber, expressContacts, expressPhone, sendExpressAddress, appointmentTime
); );
} }
......
...@@ -27,7 +27,7 @@ import java.util.List; ...@@ -27,7 +27,7 @@ import java.util.List;
@Service @Service
public class BannersServiceImpl implements IKylinBannersService { public class BannersServiceImpl implements IKylinBannersService {
@Value("${liquidnet.al-oss.imgUrl}") @Value("${liquidnet.aliyun.oss.imgUrl}")
private String imgUrl; private String imgUrl;
@Autowired @Autowired
......
...@@ -107,7 +107,6 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -107,7 +107,6 @@ public class KylinOrderTicketsRefundServiceImpl {
item.setChargesRatio(chargesRatio); item.setChargesRatio(chargesRatio);
item.setChargesPrice(chargesPrice); item.setChargesPrice(chargesPrice);
// 手续费处理
BeanUtils.copyProperties(item, refundVo); BeanUtils.copyProperties(item, refundVo);
kylinOrderTicketEntitiesPreRefundVos.add(refundVo); kylinOrderTicketEntitiesPreRefundVos.add(refundVo);
} }
...@@ -130,6 +129,7 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -130,6 +129,7 @@ public class KylinOrderTicketsRefundServiceImpl {
BeanUtils.copyProperties(orderTicketVo, vo); BeanUtils.copyProperties(orderTicketVo, vo);
vo.setIsRefundPoundage(performanceVo.getIsRefundPoundage()); vo.setIsRefundPoundage(performanceVo.getIsRefundPoundage());
vo.setIsRefundVoucher(performanceVo.getIsRefundVoucher()); vo.setIsRefundVoucher(performanceVo.getIsRefundVoucher());
vo.setIsBackPaperTicket(performanceVo.getIsBackPaperTicket());
vo.setRefundPoundageAll(refundPoundageAll); vo.setRefundPoundageAll(refundPoundageAll);
vo.setOrderCouponList(orderCoupon); vo.setOrderCouponList(orderCoupon);
vo.setRefundAddress(refundAddress); vo.setRefundAddress(refundAddress);
...@@ -143,38 +143,12 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -143,38 +143,12 @@ public class KylinOrderTicketsRefundServiceImpl {
} }
} }
public ResponseDto<OrderRefundVo> orderRefundDetails(String orderId, String orderRefundId) { public ResponseDto sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList, String ticketNum, Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime) {
try { boolean isLock = dataUtils.setRefundLock(orderTicketEntitiesId);
OrderRefundVo vo = OrderRefundVo.getNew(); if (!isLock) {
String uid = CurrentUtil.getCurrentUid(); return ResponseDto.failure("正在处理,请勿重复操作~");
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; KylinOrderTicketEntitiesVo orderTicketEntitiesVo = null;
try { try {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
...@@ -241,13 +215,15 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -241,13 +215,15 @@ public class KylinOrderTicketsRefundServiceImpl {
return ResponseDto.failure("申请金额不得小于0哦~"); return ResponseDto.failure("申请金额不得小于0哦~");
} }
// 快递费 现在只有到付 不作处理 // 快递费 判断是否是最后一张入场人票 减去已经退的快递费
// 如果后期有这种情况 需要判断是否是最后一张入场人票 然后减去已经退的快递费 计算进来即可
BigDecimal priceExpress = BigDecimal.valueOf(0); BigDecimal priceExpress = BigDecimal.valueOf(0);
if (orderTicketVo.getRefundNumber() + 1 == orderTicketVo.getNumber()) {
priceExpress = orderTicketVo.getPriceExpress().subtract(dataUtils.getCanRefundPriceExpress(kylinOrderRefundsVoBaseList));
}
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 orderRefundId = refundsStatusService.userOrderTicketRefunding(orderTicketVo, refundSinglePrice, priceExpress, priceCharges, orderTicketEntitiesId, reason, picList, uid, username, kylinOrderRefundsVoBaseList.size(), sendExpressType); String orderRefundId = refundsStatusService.userOrderTicketRefunding(orderTicketVo, refundSinglePrice, priceExpress, priceCharges, orderTicketEntitiesId, reason, picList, ticketNum, uid, username, kylinOrderRefundsVoBaseList.size(), sendExpressType);
if (!orderRefundId.isEmpty()) { if (!orderRefundId.isEmpty()) {
// 退款申请成功 异步去快递下单 // 退款申请成功 异步去快递下单
if (orderTicketVo.getGetTicketType().equals("express") && sendExpressType > 0) {// 快递票 if (orderTicketVo.getGetTicketType().equals("express") && sendExpressType > 0) {// 快递票
...@@ -263,6 +239,40 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -263,6 +239,40 @@ public class KylinOrderTicketsRefundServiceImpl {
} catch (Exception e) { } catch (Exception e) {
log.error("sendOrderRefundException e:[{}]", e); log.error("sendOrderRefundException e:[{}]", e);
return ResponseDto.failure("申请失败"); return ResponseDto.failure("申请失败");
} finally {
// 执行完毕。释放锁
dataUtils.delRefundLock(orderTicketEntitiesId);
}
}
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"));
} }
} }
...@@ -307,13 +317,14 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -307,13 +317,14 @@ public class KylinOrderTicketsRefundServiceImpl {
} }
} }
return chargesRatio; return chargesRatio;
} else{ // 无手续费 } else { // 无手续费
return chargesRatio; return chargesRatio;
} }
} }
@Async @Async
public void expressPlace(Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime, KylinOrderTicketVo orderTicketVo, KylinPerformanceVo performanceVo, String orderRefundId) { public void expressPlace(Integer sendExpressType, String expressNumber, String expressContacts, String expressPhone, String sendExpressAddress, String appointmentTime, KylinOrderTicketVo orderTicketVo, KylinPerformanceVo performanceVo, String orderRefundId) {
try {
expressContacts = (null == expressContacts) ? "" : expressContacts; expressContacts = (null == expressContacts) ? "" : expressContacts;
expressPhone = (null == expressPhone) ? "" : expressPhone; expressPhone = (null == expressPhone) ? "" : expressPhone;
sendExpressAddress = (null == sendExpressAddress) ? "" : sendExpressAddress; sendExpressAddress = (null == sendExpressAddress) ? "" : sendExpressAddress;
...@@ -427,6 +438,9 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -427,6 +438,9 @@ public class KylinOrderTicketsRefundServiceImpl {
kylinOrderExpressVo.setSendExpressType(sendExpressType); kylinOrderExpressVo.setSendExpressType(sendExpressType);
dataUtils.setOrderRefundExpressInfo(orderTicketVo.getOrderTicketsId(), kylinOrderExpressVo); dataUtils.setOrderRefundExpressInfo(orderTicketVo.getOrderTicketsId(), kylinOrderExpressVo);
} }
} catch (Exception e) {
log.error("expressPlaceError e:{}", e);
}
} }
public ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId) { public ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId) {
......
...@@ -12,7 +12,6 @@ import com.liquidnet.service.kylin.utils.DataUtils; ...@@ -12,7 +12,6 @@ import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.OrderUtils; import com.liquidnet.service.kylin.utils.OrderUtils;
import com.liquidnet.service.kylin.utils.QueueUtils; import com.liquidnet.service.kylin.utils.QueueUtils;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -25,7 +24,6 @@ import org.springframework.stereotype.Service; ...@@ -25,7 +24,6 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List;
/** /**
* <p> * <p>
...@@ -58,6 +56,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -58,6 +56,7 @@ public class KylinRefundsStatusServiceImpl {
String orderEntitiesId, String orderEntitiesId,
String reason, String reason,
String picList, String picList,
String ticketNum,
String uid, String uid,
String username, String username,
int refundCount, int refundCount,
...@@ -110,6 +109,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -110,6 +109,7 @@ public class KylinRefundsStatusServiceImpl {
kylinOrderRefunds.setPrice(refundPrice); kylinOrderRefunds.setPrice(refundPrice);
kylinOrderRefunds.setPriceExpress(priceExpress); kylinOrderRefunds.setPriceExpress(priceExpress);
kylinOrderRefunds.setPriceCharges(priceCharges); kylinOrderRefunds.setPriceCharges(priceCharges);
kylinOrderRefunds.setTicketNum(ticketNum);
kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_APPLY); kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_APPLY);
if (orderInfo.getGetTicketType().equals("express") && sendExpressType > 0) {// 快递票 if (orderInfo.getGetTicketType().equals("express") && sendExpressType > 0) {// 快递票
kylinOrderRefunds.setType(KylinTableStatusConst.ORDER_REFUND_TYPE_APPLY3); kylinOrderRefunds.setType(KylinTableStatusConst.ORDER_REFUND_TYPE_APPLY3);
...@@ -180,7 +180,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -180,7 +180,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.getPriceCharges(), kylinOrderRefunds.getStatus(), kylinOrderRefunds.getPrice(), kylinOrderRefunds.getPriceExpress(), kylinOrderRefunds.getPriceCharges(), ticketNum, kylinOrderRefunds.getStatus(),
kylinOrderRefunds.getType(), kylinOrderRefunds.getApplicantId(), kylinOrderRefunds.getApplicantName(), kylinOrderRefunds.getType(), kylinOrderRefunds.getApplicantId(), kylinOrderRefunds.getApplicantName(),
kylinOrderRefunds.getApplicantAt(), kylinOrderRefunds.getReason(), kylinOrderRefunds.getCreatedAt() kylinOrderRefunds.getApplicantAt(), kylinOrderRefunds.getReason(), kylinOrderRefunds.getCreatedAt()
}); });
......
...@@ -24,7 +24,7 @@ import java.util.LinkedList; ...@@ -24,7 +24,7 @@ import java.util.LinkedList;
@Service @Service
public class KylinUpushServiceImpl { public class KylinUpushServiceImpl {
@Value("${liquidnet.al-oss.imgUrl}") @Value("${liquidnet.aliyun.oss.imgUrl}")
private String imgUrl; private String imgUrl;
@Autowired @Autowired
......
...@@ -26,6 +26,7 @@ import org.springframework.data.mongodb.core.MongoTemplate; ...@@ -26,6 +26,7 @@ import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -816,4 +817,31 @@ public class DataUtils { ...@@ -816,4 +817,31 @@ public class DataUtils {
// return data.get(0); // return data.get(0);
// } // }
} }
/**
* 获取已经退了的快递费
* @return
*/
public BigDecimal getCanRefundPriceExpress(List<KylinOrderRefundsVo> kylinOrderRefundsVoBaseList) {
BigDecimal priceExpress = BigDecimal.valueOf(0);
if (!CollectionUtils.isEmpty(kylinOrderRefundsVoBaseList)) {
kylinOrderRefundsVoBaseList.forEach(r -> {
priceExpress.add(r.getPriceExpress());
});
}
return priceExpress;
}
public boolean setRefundLock(String orderTicketEntitiesId) {
String redisKey = KylinRedisConst.REDIS_KEY_KYLIN_REFUND_LOCK
.concat(orderTicketEntitiesId);
return redisUtil.lock(redisKey, 1, 60);
}
public void delRefundLock(String orderTicketEntitiesId) {
String redisKey = KylinRedisConst.REDIS_KEY_KYLIN_REFUND_LOCK
.concat(orderTicketEntitiesId);
redisUtil.uLock(redisKey);
}
} }
...@@ -16,7 +16,7 @@ kylin_order_ticket_entities.synPay=UPDATE kylin_order_ticket_entities SET is_pay ...@@ -16,7 +16,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,price_charges,status,type,applicant_id,applicant_name,applicant_at,reason,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,ticket_num,status,type,applicant_id,applicant_name,applicant_at,reason,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_refunds_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_refunds_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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
......
...@@ -5,9 +5,11 @@ import com.liquidnet.commons.lang.util.CollectionUtil; ...@@ -5,9 +5,11 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.HttpUtil; import com.liquidnet.commons.lang.util.HttpUtil;
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.entity.KylinOrderCoupons; import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import com.liquidnet.service.kylin.service.IKylinOrderRefundsService; import com.liquidnet.service.kylin.service.IKylinOrderRefundsService;
import com.liquidnet.service.order.utils.DataUtils; import com.liquidnet.service.order.utils.DataUtils;
import com.liquidnet.service.order.utils.TaobaoTicketUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -40,15 +42,14 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService ...@@ -40,15 +42,14 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService
@Autowired @Autowired
private DataUtils dataUtils; private DataUtils dataUtils;
@Value("${liquidnet.service.candy.url}") @Autowired
private String candyUrl; private TaobaoTicketUtils taobaoTicketUtils;
public Boolean refundApply(String orderTicketsId, String paymentId, String paymentType) { public Boolean refundApply(String orderTicketsId, String paymentId, String paymentType) {
log.info("订单超时支付refundApply-Start:[orderTicketsId={}, [paymentId={}, paymentType={}]", log.info("订单超时支付refundApply-Start:[orderTicketsId={}, [paymentId={}, paymentType={}]",
orderTicketsId, paymentId, paymentType); orderTicketsId, paymentId, paymentType);
KylinOrderTicketVo orderInfo = dataUtils.getOrderTicketVo(orderTicketsId); KylinOrderTicketVo orderInfo = dataUtils.getOrderTicketVo(orderTicketsId);
// 快递费 未进行判断 // 金额
BigDecimal RefundPriceExpress = orderInfo.getPriceExpress();
BigDecimal priceActual = orderInfo.getPriceActual(); BigDecimal priceActual = orderInfo.getPriceActual();
BigDecimal priceExpress = orderInfo.getPriceExpress(); BigDecimal priceExpress = orderInfo.getPriceExpress();
...@@ -61,39 +62,21 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService ...@@ -61,39 +62,21 @@ public class OrderRefundOvertimeServiceImpl implements IKylinOrderRefundsService
entities.setCanRefundedPrice(onePrice); entities.setCanRefundedPrice(onePrice);
} }
} }
List<String> ticketEntityIds = entitiesList.stream().map(KylinOrderTicketEntities -> KylinOrderTicketEntities.getOrderTicketEntitiesId()).collect(Collectors.toList()); List<String> ticketEntityIds = entitiesList.stream().map(KylinOrderTicketEntities -> KylinOrderTicketEntities.getOrderTicketEntitiesId()).collect(Collectors.toList());
List<BigDecimal> entitiesPrice = entitiesList.stream().map(KylinOrderTicketEntities -> KylinOrderTicketEntities.getCanRefundedPrice()).collect(Collectors.toList()); List<BigDecimal> entitiesPrice = entitiesList.stream().map(KylinOrderTicketEntities -> KylinOrderTicketEntities.getCanRefundedPrice()).collect(Collectors.toList());
boolean res = kylinRefundsStatusServiceImpl.orderTicketRefunding( boolean res = kylinRefundsStatusServiceImpl.orderTicketRefunding(
orderInfo, orderTicketsId, orderInfo, orderTicketsId,
RefundPriceExpress, priceExpress,
ticketEntityIds, entitiesPrice, paymentId, paymentType ticketEntityIds, entitiesPrice, paymentId, paymentType
); );
if (res) { if (res) {
// 超时直接退还库存 // 优惠券 库存 积分 大美已自己处理
// for (KylinOrderTicketEntitiesVo entitiesInfo : entitiesList) { // 同步大麦退款
// // 因固定状态为未支付 所以无需判断 entitiesInfo.getIsPayment() == KylinTableStatusConst.ENTITIES_IS_PAYMENT3 KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(orderTicketsId);
// dataUtils.changeSurplusGeneral(entitiesInfo.getTicketId(), 1); KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId());
// dataUtils.changeBuyInfo(orderInfo.getUserId(), entitiesInfo.getEnterIdCode(), orderInfo.getPerformanceId(), entitiesInfo.getTicketId(), -1); taobaoTicketUtils.refundDamaiOrder(orderData, vo);
// } // TODO: 2021/12/21 jxl 同步票务平台
// 退所有优惠券
/*ArrayList<KylinOrderCoupons> orderCoupon = dataUtils.getOrderCoupon(orderTicketsId);
if (!CollectionUtil.isEmpty(orderCoupon)) {
List<String> uCouponIds = orderCoupon.stream().map(KylinOrderCoupons -> KylinOrderCoupons.getCouponCode()).collect(Collectors.toList());
String uCouponIdsStr = Joiner.on(",").join(uCouponIds);
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("uCouponIds", uCouponIdsStr);
params.add("uid", orderInfo.getUserId());
MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString();
headers.add("Accept", "application/json;charset=UTF-8");
log.info("订单超时支付refundApply-退所有优惠券:[orderTicketsId={}, [params={}, candyUrl={}]",
orderTicketsId, params, candyUrl);
String returnData = HttpUtil.post(candyUrl + "/candy-coupon/useBack", params, headers);
log.info("订单超时支付refundApply-退券结果:[returnData={}]", returnData);
}*/
return true; return true;
} else { } else {
return false; return false;
......
package com.liquidnet.service.order.utils; package com.liquidnet.service.order.utils;
import com.liquidnet.commons.lang.util.IDGenerator;
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.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.taobao.api.DefaultTaobaoClient; import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient; import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenWithdrawticketRequest; import com.taobao.api.request.AlibabaDamaiMevOpenWithdrawticketRequest;
import com.taobao.api.response.AlibabaDamaiMevOpenWithdrawticketResponse; import com.taobao.api.response.AlibabaDamaiMevOpenWithdrawticketResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service @Service
public class TaobaoTicketUtils { public class TaobaoTicketUtils {
...@@ -47,4 +57,52 @@ public class TaobaoTicketUtils { ...@@ -47,4 +57,52 @@ public class TaobaoTicketUtils {
return false; return false;
} }
} }
public boolean refundDamaiOrder(KylinOrderTicketVo orderData, KylinPerformanceVo vo) {
try {
int isSysDamai = 0;
for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
for (int y = 0; y < timeItem.getTicketList().size(); y++) {
KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
if (ticketItem.getTicketsId().equals(orderData.getTicketId())) {
isSysDamai = ticketItem.getSysDamai();
break;
}
}
}
if (isSysDamai == 1) {
List<KylinOrderTicketEntitiesVo> listData = orderData.getEntitiesVoList();
for (int i = 0; i < listData.size(); i++) {
KylinOrderTicketEntitiesVo item = listData.get(i);
long ticketTimesKey;
if (item.getTicketId().length() > 13) {
ticketTimesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getTimeId()));
} else {
ticketTimesKey = Long.parseLong(item.getTimeId());
}
long orderTicketEntitiesKey;
// if (item.getOrderTicketEntitiesId().length() > 13) {
// orderTicketEntitiesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()));
// } else {
// orderTicketEntitiesKey = Long.valueOf(item.getOrderTicketEntitiesId());//票单号 入场人id
// }
if (orderData.getIsMember() == 1) {
orderTicketEntitiesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("010"));
} else {
orderTicketEntitiesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("020"));
}
withdrawDamaiOrder(ticketTimesKey, orderTicketEntitiesKey);
}
return true;
}
return true;
}catch (Exception e){
log.info("REFUND DAMAI ERROR = {}",e);
return false;
}
}
} }
...@@ -45,11 +45,11 @@ import java.util.UUID; ...@@ -45,11 +45,11 @@ import java.util.UUID;
@RequestMapping("basicServices/alOss") @RequestMapping("basicServices/alOss")
public class AlOssController { public class AlOssController {
@Value("${liquidnet.al-oss.endpoint}") @Value("${liquidnet.aliyun.oss.endpoint}")
private String endpoint; private String endpoint;
@Value("${liquidnet.al-oss.accessKeyId}") @Value("${liquidnet.aliyun.oss.accessKeyId}")
private String accessKeyId; private String accessKeyId;
@Value("${liquidnet.al-oss.accessKeySecret}") @Value("${liquidnet.aliyun.oss.accessKeySecret}")
private String accessKeySecret; private String accessKeySecret;
@Autowired @Autowired
......
...@@ -39,4 +39,11 @@ public class OrderRefundCallbackController { ...@@ -39,4 +39,11 @@ public class OrderRefundCallbackController {
String result = orderRefundsCallbackServiceImpl.alipayActiveCallback(); String result = orderRefundsCallbackServiceImpl.alipayActiveCallback();
return result; return result;
} }
@GetMapping("overtimeRefund")
@ApiOperation("超时支付自动退款")
public String overtimeRefund() {
String result = orderRefundsCallbackServiceImpl.overtimeRefund();
return result;
}
} }
...@@ -28,7 +28,7 @@ import java.util.LinkedList; ...@@ -28,7 +28,7 @@ import java.util.LinkedList;
@Service @Service
public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUpush> implements IAdminUpushService { public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUpush> implements IAdminUpushService {
@Value("${liquidnet.al-oss.imgUrl}") @Value("${liquidnet.aliyun.oss.imgUrl}")
private String imgUrl; private String imgUrl;
@Autowired @Autowired
......
...@@ -12,3 +12,5 @@ CREATE TABLE `sweet_wechat_maodeng` ( ...@@ -12,3 +12,5 @@ CREATE TABLE `sweet_wechat_maodeng` (
) ENGINE = InnoDB AUTO_INCREMENT = 38 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB AUTO_INCREMENT = 38 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;
ALTER TABLE `sweet_wechat_maodeng` ADD INDEX idx_maodeng_open_id (`user_id`);
\ No newline at end of file
...@@ -439,6 +439,8 @@ CREATE TABLE `sweet_wechat_users` ...@@ -439,6 +439,8 @@ CREATE TABLE `sweet_wechat_users`
DEFAULT CHARSET utf8mb4 DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表'; ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表';
ALTER TABLE `sweet_wechat_users` ADD INDEX idx_wechat_open_id (`open_id`);
ALTER TABLE `sweet_wechat_users` ADD INDEX idx_wechat_union_id (`union_id`);
-- 小程序登录记录用户解密后信息表 -- 小程序登录记录用户解密后信息表
drop TABLE if exists `sweet_applet_users`; drop TABLE if exists `sweet_applet_users`;
...@@ -461,6 +463,7 @@ CREATE TABLE `sweet_applet_users` ...@@ -461,6 +463,7 @@ CREATE TABLE `sweet_applet_users`
DEFAULT CHARSET utf8mb4 DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '小程序登录记录用户解密后信息表'; ROW_FORMAT = DYNAMIC COMMENT '小程序登录记录用户解密后信息表';
ALTER TABLE `sweet_applet_users` ADD INDEX idx_applet_union_id (`union_id`);
-- 答题表 -- 答题表
drop TABLE if exists `sweet_answer`; drop TABLE if exists `sweet_answer`;
......
-- use prod_ln_scene;
-- 创建集合
-- db.createCollection("IntegralActivityDrawVo");
-- 创建分片
-- sh.enableSharding("prod_ln_scene");
-- sh.shardCollection("prod_ln_scene.IntegralActivityDrawVo",{"drawId":"hashed"});
-- 创建索引
db.IntegralActivityDrawVo.createIndex({drawId:"hashed"});
db.IntegralActivityDrawVo.createIndex({userId:"hashed"});
-- 删除集合内数据
-- db.IntegralActivityDrawVo.deleteMany({});
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