退单
This commit is contained in:
@@ -35,6 +35,7 @@ import com.peanut.modules.common.entity.*;
|
||||
import com.peanut.modules.common.service.*;
|
||||
import com.peanut.modules.master.service.CourseCatalogueService;
|
||||
import com.peanut.modules.pay.alipay.service.AliPayService;
|
||||
import com.peanut.modules.pay.weChatPay.dto.WeChatRefundInfo;
|
||||
import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo;
|
||||
import com.peanut.modules.pay.weChatPay.service.WxpayService;
|
||||
import com.peanut.modules.sys.entity.SysConfigEntity;
|
||||
@@ -603,24 +604,28 @@ public class BuyOrderController {
|
||||
return R.error("退款信息不存在");
|
||||
}
|
||||
QueryWrapper<BuyOrderRefundLog> wapper2 = new QueryWrapper<>();
|
||||
wapper2.eq("refund_id",refundInfo.getId()).orderByDesc("create_time");
|
||||
wapper2.eq("refund_id",refundInfo.getId()).orderByDesc("id");
|
||||
List<BuyOrderRefundLog> list = buyOrderRefundLogService.list(wapper2);
|
||||
for (BuyOrderRefundLog log : list){
|
||||
if(log.getType()==1){
|
||||
if(log.getType()==4){
|
||||
log.setTitle("天医币已退还");
|
||||
log.setContent("天医币已退还到账户,可在我的->天医币中查看明细");
|
||||
}else if(log.getType()==2){
|
||||
}else if(log.getType()==5){
|
||||
log.setTitle("积分已退还");
|
||||
log.setContent("积分已退还到账户,可在我的->积分中查看明细");
|
||||
}else if(log.getType()==3){
|
||||
}else if(log.getType()==2){
|
||||
log.setTitle(log.getStatus()==1?"到账成功":"已退款,支付宝处理中");
|
||||
log.setContent(log.getStatus()==1?"已退到您的支付宝,到账时间以支付宝处理时间为准,可前往「支付宝-账单」查看":"已将退款资金提交给支付宝处理,通常情况下,退款会原路退回您的支付账户,预计会在1-7天内到账");
|
||||
}else if(log.getType()==4){
|
||||
}else if(log.getType()==1){
|
||||
log.setTitle(log.getStatus()==1?"到账成功":"已退款,微信处理中");
|
||||
log.setContent(log.getStatus()==1?"已退到您的微信,到账时间以微信处理时间为准,可前往「微信-账单」查看":"已将退款资金提交给微信处理,通常情况下,退款会原路退回您的支付账户,预计会在1-7天内到账");
|
||||
}else if(log.getType()==0){
|
||||
log.setTitle(log.getStatus()==3?"重新申请退款":"发起退款");
|
||||
log.setContent("系统会在1-2天内提交处理");
|
||||
}
|
||||
|
||||
}
|
||||
BuyOrderRefundLog log = new BuyOrderRefundLog();
|
||||
/* BuyOrderRefundLog log = new BuyOrderRefundLog();
|
||||
log.setId(0);
|
||||
log.setRefundId(refundInfo.getId());
|
||||
log.setType(0);
|
||||
@@ -628,7 +633,7 @@ public class BuyOrderController {
|
||||
log.setCreateTime(refundInfo.getCreateTime());
|
||||
log.setTitle("发起退款");
|
||||
log.setContent("系统会在1-2天内提交处理");
|
||||
list.add(log);
|
||||
list.add(log);*/
|
||||
|
||||
Map<String,Object> result = new HashMap<>();
|
||||
BigDecimal shippingMoney = refundInfo.getDeductShipping()==1?refundInfo.getShippingMoney():BigDecimal.ZERO;
|
||||
@@ -658,19 +663,19 @@ public class BuyOrderController {
|
||||
if (user == null) {
|
||||
return R.error("订单对应用户不存在");
|
||||
}
|
||||
|
||||
BuyOrderRefund buyOrderRefund = buyOrderRefundService.getOne(new QueryWrapper<BuyOrderRefund>().eq("order_id",buyOrder.getOrderId()));
|
||||
if(buyOrderRefund!=null){
|
||||
return R.error("请勿重复申请退款");
|
||||
}else{
|
||||
buyOrderRefund = new BuyOrderRefund();
|
||||
}
|
||||
if (Constants.ORDER_STATUS_TO_BE_PAID.equals(buyOrder.getOrderStatus())
|
||||
if(Constants.ORDER_STATUS_REFUND.equals(buyOrder.getOrderStatus())
|
||||
|| Constants.ORDER_STATUS_REFUNDING.equals(buyOrder.getOrderStatus())){
|
||||
return R.error("请勿重复提交退款");
|
||||
}else if (Constants.ORDER_STATUS_TO_BE_PAID.equals(buyOrder.getOrderStatus())
|
||||
|| Constants.ORDER_STATUS_FAIL.equals(buyOrder.getOrderStatus())
|
||||
|| Constants.ORDER_STATUS_REFUND.equals(buyOrder.getOrderStatus())
|
||||
|| Constants.ORDER_STATUS_OUT_OF_TIME.equals(buyOrder.getOrderStatus())) {
|
||||
return R.error("当前订单状态不支持退单");
|
||||
}
|
||||
if(Constants.PAYMENT_METHOD_ALI_PAY.equals(buyOrder.getPaymentMethod())){
|
||||
return R.error("当前订单支付方式暂不支持退单");
|
||||
}
|
||||
//设置状态为已退款
|
||||
buyOrder.setOrderStatus(Constants.ORDER_STATUS_REFUNDING);
|
||||
|
||||
BigDecimal refundFee = buyOrder.getRealMoney();
|
||||
BigDecimal shippingMoney = buyOrder.getShippingMoney()==null?BigDecimal.ZERO:buyOrder.getShippingMoney();
|
||||
@@ -681,12 +686,13 @@ public class BuyOrderController {
|
||||
}
|
||||
String remark = params.containsKey("remark") && params.get("remark").toString()!=null?params.get("remark").toString():"";
|
||||
|
||||
BuyOrderRefund buyOrderRefund = new BuyOrderRefund();
|
||||
String refundNo = buyOrderRefundService.genRefundNo();
|
||||
buyOrderRefund.setRefundNo(refundNo);
|
||||
buyOrderRefund.setOrderId(buyOrder.getOrderId());
|
||||
buyOrderRefund.setOrderSn(buyOrder.getOrderSn());
|
||||
buyOrderRefund.setUserId(buyOrder.getUserId());
|
||||
buyOrderRefund.setType("线上"); //id
|
||||
buyOrderRefund.setType(params.containsKey("deductShipping")?"后台":"线上"); //id
|
||||
buyOrderRefund.setPayType(buyOrder.getPaymentMethod());
|
||||
buyOrderRefund.setFee(refundFee);
|
||||
buyOrderRefund.setJfDeduction(buyOrder.getJfDeduction());
|
||||
@@ -695,54 +701,68 @@ public class BuyOrderController {
|
||||
buyOrderRefund.setRemark(remark);
|
||||
buyOrderRefundService.save(buyOrderRefund);
|
||||
|
||||
int refundId = buyOrderRefund.getId();
|
||||
buyOrderRefundLogService.insertRefundLog(buyOrderRefund.getId(),0,1);
|
||||
|
||||
int refundId = buyOrderRefund.getId();
|
||||
if (Constants.PAYMENT_METHOD_VIRTUAL.equals(buyOrder.getPaymentMethod())) {
|
||||
if(refundFee.compareTo(BigDecimal.ZERO)>0){
|
||||
//退还虚拟币
|
||||
transactionDetailsService.refundRecord(buyOrder,user,refundFee);
|
||||
user.setPeanutCoin(user.getPeanutCoin().add(refundFee));
|
||||
myUserService.updateById(user);
|
||||
buyOrderRefundLogService.insertRefundLog(refundId,1,1);
|
||||
//记录退款进度
|
||||
buyOrderRefundLogService.insertRefundLog(refundId,4,1);
|
||||
//积分、其他权益退回
|
||||
buyOrderService.refundOrder(buyOrder,user,refundId);
|
||||
//更改订单状态为已付款
|
||||
//更改订单状态为已退款
|
||||
buyOrder.setOrderStatus(Constants.ORDER_STATUS_REFUND);
|
||||
buyOrderService.updateById(buyOrder);
|
||||
|
||||
return R.ok("ok");
|
||||
}
|
||||
} else if (Constants.PAYMENT_METHOD_WECHAT_PAY.equals(buyOrder.getPaymentMethod())) {
|
||||
buyOrderRefundLogService.insertRefundLog(refundId,4,0);
|
||||
buyOrderRefundLogService.insertRefundLog(refundId,1,0);
|
||||
if (refundFee.compareTo(BigDecimal.ZERO) > 0) {
|
||||
Map<String, Object> refundParams = new HashMap<>();
|
||||
refundParams.put("orderSn", buyOrder.getOrderSn());
|
||||
refundParams.put("refundFee", refundFee);
|
||||
refundParams.put("reason", StringUtils.isBlank(remark) ? "后台申请退款" : remark);
|
||||
String refundResult = wxpayService.refund(refundParams);
|
||||
JSONObject resultJson = JSONObject.parseObject(refundResult);
|
||||
if (!"SUCCESS".equals(resultJson.getString("status"))) {
|
||||
return R.error("微信退款申请失败");
|
||||
}else{
|
||||
buyOrderRefundLogService.insertRefundLog(refundId,4,2);
|
||||
}
|
||||
|
||||
}
|
||||
} else if (Constants.PAYMENT_METHOD_ALI_PAY.equals(buyOrder.getPaymentMethod())) {
|
||||
buyOrderRefundLogService.insertRefundLog(refundId,3,0);
|
||||
if (refundFee.compareTo(BigDecimal.ZERO) > 0) {
|
||||
Map<String, Object> refundParams = new HashMap<>();
|
||||
refundParams.put("orderSn", buyOrder.getOrderSn());
|
||||
refundParams.put("refundFee", refundFee);
|
||||
String refundResult = aliPayService.refund(refundParams);
|
||||
JSONObject resultJson = JSONObject.parseObject(refundResult);
|
||||
JSONObject responseJson = resultJson.getJSONObject("alipay_trade_refund_response");
|
||||
if (responseJson == null
|
||||
|| !"10000".equals(responseJson.getString("code"))
|
||||
|| !"Y".equals(responseJson.getString("fund_change"))) {
|
||||
return R.error("支付宝退款申请失败");
|
||||
}else{
|
||||
buyOrderRefundLogService.insertRefundLog(refundId,3,2);
|
||||
WeChatRefundInfo weChatRefundInfo = new WeChatRefundInfo();
|
||||
weChatRefundInfo.setOrderSn(buyOrder.getOrderSn());
|
||||
weChatRefundInfo.setOrderId(buyOrder.getOrderId());
|
||||
weChatRefundInfo.setOrderType(buyOrder.getOrderType());
|
||||
weChatRefundInfo.setRefundNo(buyOrderRefund.getRefundNo());
|
||||
weChatRefundInfo.setTotalAmount(buyOrder.getRealMoney());
|
||||
weChatRefundInfo.setRefundAmount(buyOrderRefund.getFee());
|
||||
weChatRefundInfo.setRemark("用户申请退款");
|
||||
weChatRefundInfo.setRefundId(buyOrderRefund.getId());
|
||||
if(buyOrder.getCome()==null||buyOrder.getCome()==0){
|
||||
weChatRefundInfo.setAppName(buyOrder.getAppName());
|
||||
} else if (buyOrder.getCome()==2){
|
||||
weChatRefundInfo.setAppName("wumen");
|
||||
} else if (buyOrder.getCome()==1) {
|
||||
weChatRefundInfo.setAppName("zmzm");
|
||||
} else if (buyOrder.getCome()==3) {
|
||||
weChatRefundInfo.setAppName("xlkj");
|
||||
} else if (buyOrder.getCome()==4) {
|
||||
weChatRefundInfo.setAppName("thyy");
|
||||
}
|
||||
wxpayService.refund(weChatRefundInfo);
|
||||
}
|
||||
}
|
||||
// else if (Constants.PAYMENT_METHOD_ALI_PAY.equals(buyOrder.getPaymentMethod())) {
|
||||
// buyOrderRefundLogService.insertRefundLog(refundId,2,0);
|
||||
// if (refundFee.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// Map<String, Object> refundParams = new HashMap<>();
|
||||
// refundParams.put("orderSn", buyOrder.getOrderSn());
|
||||
// refundParams.put("refundFee", refundFee);
|
||||
// String refundResult = aliPayService.refund(refundParams);
|
||||
// JSONObject resultJson = JSONObject.parseObject(refundResult);
|
||||
// JSONObject responseJson = resultJson.getJSONObject("alipay_trade_refund_response");
|
||||
// if (responseJson == null
|
||||
// || !"10000".equals(responseJson.getString("code"))
|
||||
// || !"Y".equals(responseJson.getString("fund_change"))) {
|
||||
// return R.error("支付宝退款申请失败");
|
||||
// }else{
|
||||
// buyOrderRefundLogService.insertRefundLog(refundId,3,2);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
return R.ok("ok");
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user