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

Commit 05ddebfb authored by jiangxiulong's avatar jiangxiulong

overtime

parent 92f93ca4
......@@ -39,4 +39,11 @@ public class OrderRefundCallbackController {
String result = orderRefundsCallbackServiceImpl.alipayActiveCallback();
return result;
}
@GetMapping("overtimeRefund")
@ApiOperation("超时支付自动退款")
public String overtimeRefund() {
String result = orderRefundsCallbackServiceImpl.overtimeRefund();
return result;
}
}
package com.liquidnet.service.platform.service.refund;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.param.RefundCallbackParam;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
......@@ -15,6 +20,7 @@ import com.liquidnet.service.platform.utils.DataUtils;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -22,11 +28,15 @@ 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.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
/**
......@@ -124,12 +134,12 @@ public class OrderRefundsCallbackServiceImpl extends ServiceImpl<KylinOrderRefun
}
@Override
public String getOrderRefundCode(String orderRefundCode,int type) {
public String getOrderRefundCode(String orderRefundCode, int type) {
return null;
}
public String alipayActiveCallback() {
LocalDateTime startTime = LocalDateTime.now();
LocalDateTime startTime = LocalDateTime.now();
LocalDateTime newTime = startTime.minusHours(2);
List<KylinOrderRefunds> kylinOrderRefunds = kylinOrderRefundsMapper.selectList(
Wrappers.lambdaQuery(KylinOrderRefunds.class)
......@@ -163,4 +173,120 @@ public class OrderRefundsCallbackServiceImpl extends ServiceImpl<KylinOrderRefun
}
return "success";
}
public String overtimeRefund() {
List<KylinOrderRefunds> refundList = kylinOrderRefundsMapper.selectList(
Wrappers.lambdaQuery(KylinOrderRefunds.class)
.eq(KylinOrderRefunds::getType, KylinTableStatusConst.ORDER_REFUND_TYPE_AUTO)
.in(KylinOrderRefunds::getStatus, Arrays.asList(
KylinTableStatusConst.ORDER_REFUND_STATUS_APPLY,
KylinTableStatusConst.ORDER_REFUND_STATUS_APPROVED
))
);
for (KylinOrderRefunds refundInfo : refundList) {
String refundId = refundInfo.getOrderRefundsId();
String orderId = refundInfo.getOrderTicketsId();
LocalDateTime nowTime = LocalDateTime.now();
KylinOrderRefunds kylinOrderRefunds = KylinOrderRefunds.getNew();
// 运营审核
kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_APPROVED);
kylinOrderRefunds.setAuditorId("system");
kylinOrderRefunds.setAuditorName("system");
kylinOrderRefunds.setAuditorAt(nowTime);
kylinOrderRefunds.setReject("系统审核通过");
kylinOrderRefunds.setUpdatedAt(nowTime);
// 财务审核
kylinOrderRefunds.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_UNFILLED);
kylinOrderRefunds.setExecutorId("system");
kylinOrderRefunds.setExecutorName("system");
kylinOrderRefunds.setExecutorAt(nowTime);
kylinOrderRefunds.setRefuse("系统审核通过");
KylinOrderTickets oderInfo = kylinOrderTicketsMapper.selectOne(
Wrappers.lambdaQuery(KylinOrderTickets.class)
.eq(KylinOrderTickets::getOrderTicketsId, orderId)
);
BigDecimal refundPrice = refund.getPrice().add(refund.getPriceExpress());
MultiValueMap<String, String> params = new LinkedMultiValueMap();
params.add("code", oderInfo.getPayCode());
params.add("notifyUrl", notifyUrl);
params.add("orderCode", oderInfo.getOrderCode());
params.add("orderRefundCode", refund.getOrderRefundCode());
params.add("paymentId", oderInfo.getPaymentId());
params.add("paymentType", oderInfo.getPaymentType());
params.add("price", String.valueOf(refundPrice));
params.add("priceTotal", String.valueOf(oderInfo.getPriceActual()));
params.add("reason", "按需退款");
MultiValueMap<String, String> headers = new LinkedMultiValueMap();
// headers.add("Content-Type", "application/json;charset=UTF-8");
headers.add("Accept", "application/json;charset=UTF-8");
log.info("退款参数" + JsonUtils.toJson(params));
// 请求pay
String postResult = null;
try {
postResult = HttpUtil.post(applyUrl, params, headers);
log.info("退款res" + postResult);
HashMap hashMapResult = JsonUtils.fromJson(postResult, HashMap.class);
Boolean success = (Boolean) hashMapResult.get("success");
if (!success) {
String message = (String) hashMapResult.get("message");
log.info("退款pay返回失败" + message);
KylinOrderRefunds kylinOrderRefundsFail = new KylinOrderRefunds();
kylinOrderRefundsFail.setStatus(KylinTableStatusConst.ORDER_REFUND_STATUS_ERROR);
kylinOrderRefundsFail.setRefundError(message);
kylinOrderRefundsFail.setUpdatedAt(LocalDateTime.now());
kylinOrderRefundsMapper.update(
kylinOrderRefundsFail,
new UpdateWrapper<KylinOrderRefunds>().eq("order_refunds_id", refund.getOrderRefundsId())
);
// 修改缓存
KylinOrderRefundsVo kylinOrderRefundsVoFail = new KylinOrderRefundsVo();
BeanUtils.copyProperties(kylinOrderRefundsFail, kylinOrderRefundsVoFail);
BasicDBObject objectFail = new BasicDBObject("$set", mongoConverter.convertToMongoType(kylinOrderRefundsVoFail));
UpdateResult updateFailResult = mongoTemplate.getCollection(KylinOrderRefundsVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderRefundsId").is(refund.getOrderRefundsId())).getQueryObject(),
objectFail
);
// List<String> strings = Arrays.asList(refund.getOrderRefundsId());
// List<String> strings1 = Arrays.asList(refund.getOrderTicketsId());
// dataUtils.delOrderRefundVo(strings);
// dataUtils.delOrderRefundVoByOrderId(strings1);
continue;
}else{
//TODO 秀龙 大麦退款
for (KylinOrderRefunds item : refundList) {
KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId());
taobaoTicketUtils.refundDamaiOrder(orderData,vo);
}
}
} catch (Exception e) {
log.info("退款请求pay失败e" + e.getMessage());
continue;
}
// 数据库
kylinOrderRefundsMapper.update(
kylinOrderRefunds,
Wrappers.lambdaUpdate(KylinOrderRefunds.class).eq(KylinOrderRefunds::getOrderRefundsId, refundId)
);
// 缓存
KylinOrderRefundsVo kylinOrderRefundsVo = KylinOrderRefundsVo.getNew();
BeanUtils.copyProperties(kylinOrderRefunds, kylinOrderRefundsVo);
UpdateResult result = mongoTemplate.updateFirst(
Query.query(Criteria.where("orderRefundsId").is(refundId)),
Update.fromDocument(Document.parse(JsonUtils.toJson(kylinOrderRefundsVo))),
KylinOrderRefundsVo.class, KylinOrderRefundsVo.class.getSimpleName()
);
dataUtils.delOrderRefundVo(refundId);
dataUtils.delOrderRefundVoByOrderId(orderId);
}
return "success";
}
}
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