|
@@ -17,19 +17,18 @@ import com.usky.dxtop.common.utils.spring.GlobalUtils;
|
|
|
import com.usky.dxtop.mapper.OrderMapper;
|
|
|
import com.usky.dxtop.model.CallApiLog;
|
|
|
import com.usky.dxtop.model.Order;
|
|
|
-import com.usky.dxtop.model.TopRadio;
|
|
|
import com.usky.dxtop.service.CallApiLogService;
|
|
|
import com.usky.dxtop.service.OrderService;
|
|
|
import com.usky.dxtop.service.api.TopApi;
|
|
|
-import com.usky.dxtop.service.emun.OrderPayType;
|
|
|
import com.usky.dxtop.service.emun.OrderStatus;
|
|
|
import com.usky.dxtop.service.vo.OrderRequest;
|
|
|
-import org.apache.logging.log4j.core.util.JsonUtils;
|
|
|
+
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.poi.hssf.record.SSTRecord;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.List;
|
|
|
import java.util.TreeMap;
|
|
|
|
|
|
/**
|
|
@@ -40,6 +39,7 @@ import java.util.TreeMap;
|
|
|
* @author yq
|
|
|
* @since 2021-08-26
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
|
|
|
|
|
@@ -59,6 +59,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
return this.save(order);
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public boolean remove(String orderNumber) {
|
|
|
+ LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(Order::getOrderNumber,orderNumber);
|
|
|
+ this.remove(queryWrapper);
|
|
|
+ LambdaQueryWrapper<CallApiLog> callApiQueryWrapper = Wrappers.lambdaQuery();
|
|
|
+ callApiQueryWrapper.eq(CallApiLog::getOrderNumber,orderNumber);
|
|
|
+ return callApiLogService.remove(callApiQueryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Order one(String orderNumber){
|
|
|
+ LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(Order::getOrderNumber,orderNumber);
|
|
|
+ return this.getOne(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public CommonPage<Order> list(OrderRequest orderRequest) {
|
|
|
IPage<Order> page = new Page<>(orderRequest.getCurrent(), orderRequest.getSize());
|
|
@@ -116,23 +134,114 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
return destPath;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询支付订单api
|
|
|
+ * @param orderNumber
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public String callTopFindOrderInfoApi(String orderNumber) {
|
|
|
TreeMap<String, String> param = TopApi.generateDealSelectParam(orderNumber, null, null, null);
|
|
|
String format = String.format("%s&sign=%s", TopApi.joinParam(param),
|
|
|
TopApi.signData(param));
|
|
|
String result = HttpUtils.sendGet(TopApi.DEAL_SELECT_URL, format);
|
|
|
- JSONObject obj= JSON.parseObject(result);
|
|
|
-// obj.get("status")
|
|
|
callApiLogService.add(orderNumber,FIND_ORDER_INFO,TopApi.DEAL_SELECT_URL,JSONObject.toJSONString(param),result);
|
|
|
- //成功调用卡充值api,失败记录状态
|
|
|
- return obj.toJSONString();
|
|
|
+ Order order = one(orderNumber);
|
|
|
+ //处理订单
|
|
|
+ checkOrder(order, result);
|
|
|
+ //再此获取订单的最新状态
|
|
|
+ order = one(orderNumber);
|
|
|
+ return OrderStatus.parse(order.getOrderFlag()).getName();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public String callCardTopApi(Order order) {
|
|
|
- return "SUCCESS";
|
|
|
+ public boolean callCardTopApi(Order order) {
|
|
|
+ //TODO 等待测试接口,url,请求,响应需要替换
|
|
|
+ boolean b = false;
|
|
|
+ try {
|
|
|
+ String param = "";
|
|
|
+ String result = "";
|
|
|
+ callApiLogService.add(order.getOrderNumber(),CARD_TOP,TopApi.DEAL_SELECT_URL,JSONObject.toJSONString(param),result);
|
|
|
+ return false;
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("---order---卡充值api调用异常"+ e.getMessage());
|
|
|
+ }
|
|
|
+ return b;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验是否继续处理订单
|
|
|
+ * @param orderNumber
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isCheckOrder(String orderNumber){
|
|
|
+ Order order = one(orderNumber);
|
|
|
+ //订单是未支付和支付中需要处理
|
|
|
+ return OrderStatus.NO_PAYMENT.getCode().equals(order.getOrderFlag()) || OrderStatus.AWAIT_PAY.getCode().equals(order.getOrderFlag());
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询交易后处理订单
|
|
|
+ * @param order
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void checkOrder(Order order,String result){
|
|
|
+ JSONObject obj= JSON.parseObject(result);
|
|
|
+ if ("成功".equals(obj.get("status"))){
|
|
|
+ paySuccess(order);
|
|
|
+ }else if ("等待中".equals(obj.get("status"))){
|
|
|
+ payWaiting(order);
|
|
|
+ }else if ("交易订单不存在".equals(obj.get("status"))){
|
|
|
+ remove(order.getOrderNumber());
|
|
|
+ }else {
|
|
|
+ payError(order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 充值成功后处理
|
|
|
+ * @param order
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void paySuccess(Order order){
|
|
|
+ try {
|
|
|
+ //是否可以操作
|
|
|
+ boolean b = isCheckOrder(order.getOrderNumber());
|
|
|
+ if (b){
|
|
|
+ //调用卡充值api
|
|
|
+ b = callCardTopApi(order);
|
|
|
+ if (b){
|
|
|
+ //成功修改状态成功
|
|
|
+ order.setOrderFlag(OrderStatus.SUCCESS.getCode());
|
|
|
+ this.updateById(order);
|
|
|
+ }else {
|
|
|
+ //失败修改状态为卡充值失败
|
|
|
+ order.setOrderFlag(OrderStatus.PAYMENT_ERROR_DEBIT.getCode());
|
|
|
+ this.updateById(order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("---order---修改数据库失败"+e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 充值失败后处理
|
|
|
+ * @param order
|
|
|
+ */
|
|
|
+ public void payError(Order order){
|
|
|
+ order.setOrderFlag(OrderStatus.PAYMENT_ERROR_NO_DEBIT.getCode());
|
|
|
+ this.updateById(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理等待中的订单
|
|
|
+ * @param order
|
|
|
+ */
|
|
|
+ public void payWaiting(Order order){
|
|
|
+ order.setOrderFlag(OrderStatus.AWAIT_PAY.getCode());
|
|
|
+ this.updateById(order);
|
|
|
+ }
|
|
|
}
|