Эх сурвалжийг харах

统一拍品订单来源,改为使用 poyee-app 的 lot_order_info

hr~ 3 долоо хоног өмнө
parent
commit
a48891ba03

+ 40 - 0
bid/src/main/java/cn/hobbystocks/auc/app/AppClient.java

@@ -43,6 +43,8 @@ public class AppClient {
     private String timeoutUnpaidOrdersUrl;
     @Value("${hobbystocks.host.paidOrdersLastThreeDaysUrl:}")
     private String paidOrdersLastThreeDaysUrl;
+    @Value("${hobbystocks.host.settlementOrdersUrl:}")
+    private String settlementOrdersUrl;
 
     @Value("${hobbystocks.host.noticeUrl}")
     private String noticeUrl;
@@ -220,6 +222,37 @@ public class AppClient {
         return queryLotOrders(getPaidOrdersLastThreeDaysUrl(), "query paid lot orders last three days");
     }
 
+    public Optional<List<Order>> querySettlementOrders(Long userId, Long lotId, Long auctionId) {
+        Map<String, Object> params = Maps.newHashMap();
+        params.put("userId", userId);
+        if (lotId != null) {
+            params.put("lotId", lotId);
+        }
+        if (auctionId != null) {
+            params.put("auctionId", auctionId);
+        }
+        String url = getSettlementOrdersUrl();
+        ForestResponse<CommonForestClient.Response<Map<String, Object>>> response;
+        try {
+            response = client.sendPost(url, getDefaultHeaderMap(), params);
+        } catch (Exception e) {
+            log.error("query settlement orders fail {}", url, e);
+            return Optional.empty();
+        }
+        if (Objects.isNull(response)
+                || !Objects.equals(response.getStatusCode(), 200)
+                || Objects.isNull(response.getResult())
+                || !isSuccessCode(response.getResult().getCode())) {
+            log.error("query settlement orders fail {}", url);
+            return Optional.empty();
+        }
+        Map<String, Object> data = response.getResult().getData();
+        if (CollectionUtils.isEmpty(data) || Objects.isNull(data.get("lotOrders"))) {
+            return Optional.of(Lists.newArrayList());
+        }
+        return Optional.of(JSON.parseArray(JSON.toJSONString(data.get("lotOrders")), Order.class));
+    }
+
     private List<Order> queryLotOrders(String url, String operation) {
         ForestResponse<CommonForestClient.Response<Map<String, Object>>> response = null;
         try {
@@ -263,6 +296,13 @@ public class AppClient {
         return orderUrl.replaceFirst("/create$", "/queryPaidOrdersLastThreeDays");
     }
 
+    private String getSettlementOrdersUrl() {
+        if (Objects.nonNull(settlementOrdersUrl) && !settlementOrdersUrl.trim().isEmpty()) {
+            return settlementOrdersUrl;
+        }
+        return orderUrl.replaceFirst("/create$", "/querySettlementOrders");
+    }
+
     private boolean isSuccessCode(Integer code) {
         return Objects.equals(code, 0) || Objects.equals(code, 200);
     }

+ 12 - 8
bid/src/main/java/cn/hobbystocks/auc/task/BidTask.java

@@ -16,8 +16,6 @@ import cn.hobbystocks.auc.mapper.LotMapper;
 import cn.hobbystocks.auc.service.DepositOrderService;
 import cn.hobbystocks.auc.service.IAuctionService;
 import cn.hobbystocks.auc.service.ILotService;
-import cn.hobbystocks.auc.service.IOrderService;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.google.common.collect.Lists;
 import io.micrometer.core.instrument.util.NamedThreadFactory;
 import lombok.extern.slf4j.Slf4j;
@@ -60,8 +58,6 @@ public class BidTask implements CacheMap {
 	private IAuctionService auctionService;
 	@Autowired
     private DepositOrderService depositOrderService;
-    @Autowired
-    private IOrderService orderService;
 	@Value("${auction.thread.corePoolSize:50}")
 	private Integer corePoolSize;
 	@Value("${auction.thread.maximumPoolSize:100}")
@@ -460,9 +456,12 @@ public class BidTask implements CacheMap {
         if (!isTerminalLot(lot)) {
             return;
         }
-        LambdaQueryWrapper<Order> query = new LambdaQueryWrapper<>();
-        query.eq(Order::getLotId, deposit.getLotId()).eq(Order::getUserId, deposit.getUserId());
-        Order winningOrder = orderService.getOne(query);
+        Optional<List<Order>> orderLookup = appClient.querySettlementOrders(
+                deposit.getUserId().longValue(), deposit.getLotId(), null);
+        if (!orderLookup.isPresent()) {
+            return;
+        }
+        Order winningOrder = orderLookup.get().stream().findFirst().orElse(null);
         if (Objects.isNull(winningOrder)) {
             if (!isWinningUser(deposit, lot)) {
                 depositOrderService.markRefundPending(deposit.getOrderNo());
@@ -483,7 +482,12 @@ public class BidTask implements CacheMap {
                 || !CollectionUtils.isEmpty(lotMapper.selectNotEndLotList(deposit.getAuctionId()))) {
             return;
         }
-        List<Order> winningOrders = orderService.getOrderListByUserAndAuction(deposit.getAuctionId(), deposit.getUserId());
+        Optional<List<Order>> orderLookup = appClient.querySettlementOrders(
+                deposit.getUserId().longValue(), null, deposit.getAuctionId());
+        if (!orderLookup.isPresent()) {
+            return;
+        }
+        List<Order> winningOrders = orderLookup.get();
         if (hasWinningLotWithoutOrder(deposit, winningOrders)) {
             return;
         }

+ 0 - 17
bid/src/main/java/cn/hobbystocks/auc/web/LocalController.java

@@ -63,23 +63,6 @@ public class LocalController {
             return AjaxResult.success(false);
         }
     }
-
-
-
-    @GetMapping("order/callback/{orderNo}/{status}")
-    @ApiOperation(value = "订单状态回调",notes = "订单状态回调,竞价成功创建订单,用户订单支付后回调该接口")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "orderNo",value = "订单号"),@ApiImplicitParam(name = "status" ,value = "订单状态")
-    })
-    public AjaxResult callback(@PathVariable("orderNo") String orderNo,@PathVariable("status") Integer status){
-        //根据orderId更新order状态
-        Order order = Order.builder().orderNo(orderNo).status(status).build();
-        int num = orderService.modifyOrder(order);
-        if (num>0){
-            return AjaxResult.success("请求成功");
-        }
-        return AjaxResult.error("更新状态失败");
-    }
     @ApiOperation(value = "出价记录查询",notes = "根据出价id查询当前出价是否中标")
     @GetMapping("bid/get/{id}")
     public AjaxResult getBid(@PathVariable("id")@ApiParam("出价记录id")Long id){

+ 1 - 0
bid/src/main/resources/application-dev.yml

@@ -19,6 +19,7 @@ hobbystocks:
     expireOrderUrl: ${EXPIRE_LOT_ORDER_URL:http://poyee-app/api/v5/lot/order/queryExpireOrder}
     timeoutUnpaidOrdersUrl: ${TIMEOUT_UNPAID_ORDERS_URL:http://poyee-app/api/v5/lot/order/batchTimeoutUnpaidOrders}
     paidOrdersLastThreeDaysUrl: ${PAID_ORDERS_LAST_THREE_DAYS_URL:http://poyee-app/api/v5/lot/order/queryPaidOrdersLastThreeDays}
+    settlementOrdersUrl: ${SETTLEMENT_ORDERS_URL:http://poyee-app/api/v5/lot/order/querySettlementOrders}
     noticeUrl: http://app/api/local/v1/notify/mail #站内信通知
     couponUrl: http://app/api/local/v1/coupon/send
     imUrl: http://poyee-im/chat/handler

+ 1 - 0
bid/src/main/resources/application-local.yml

@@ -24,6 +24,7 @@ hobbystocks:
     expireOrderUrl: ${EXPIRE_LOT_ORDER_URL:http://127.0.0.1:8082/api/v5/lot/order/queryExpireOrder}
     timeoutUnpaidOrdersUrl: ${TIMEOUT_UNPAID_ORDERS_URL:http://127.0.0.1:8082/api/v5/lot/order/batchTimeoutUnpaidOrders}
     paidOrdersLastThreeDaysUrl: ${PAID_ORDERS_LAST_THREE_DAYS_URL:http://127.0.0.1:8082/api/v5/lot/order/queryPaidOrdersLastThreeDays}
+    settlementOrdersUrl: ${SETTLEMENT_ORDERS_URL:http://127.0.0.1:8082/api/v5/lot/order/querySettlementOrders}
     noticeUrl: http://poyee-im/chat/handler #IM服务通知
     couponUrl: http://app/api/local/v1/coupon/send
     imUrl: http://poyee-im/chat/handler

+ 1 - 0
bid/src/main/resources/application-prod.yml

@@ -19,6 +19,7 @@ hobbystocks:
     expireOrderUrl: ${EXPIRE_LOT_ORDER_URL:http://poyee-app/api/v5/lot/order/queryExpireOrder}
     timeoutUnpaidOrdersUrl: ${TIMEOUT_UNPAID_ORDERS_URL:http://poyee-app/api/v5/lot/order/batchTimeoutUnpaidOrders}
     paidOrdersLastThreeDaysUrl: ${PAID_ORDERS_LAST_THREE_DAYS_URL:http://poyee-app/api/v5/lot/order/queryPaidOrdersLastThreeDays}
+    settlementOrdersUrl: ${SETTLEMENT_ORDERS_URL:http://poyee-app/api/v5/lot/order/querySettlementOrders}
     noticeUrl: http://app/api/local/v1/notify/mail
     couponUrl: http://app/api/local/v1/coupon/send # 中标兑换优惠券
     imUrl: http://poyee-im/chat/handler

+ 0 - 2
lot/src/main/java/cn/hobbystocks/auc/domain/Order.java

@@ -1,6 +1,5 @@
 package cn.hobbystocks.auc.domain;
 
-import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
 import org.apache.ibatis.type.Alias;
 
@@ -13,7 +12,6 @@ import java.util.Date;
 @AllArgsConstructor
 @NoArgsConstructor
 @Alias("order")
-@TableName("order_info")
 public class Order {
 
     private Long id;

+ 0 - 23
lot/src/main/java/cn/hobbystocks/auc/mapper/OrderMapper.java

@@ -1,23 +0,0 @@
-package cn.hobbystocks.auc.mapper;
-
-import cn.hobbystocks.auc.domain.Order;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-public interface OrderMapper extends BaseMapper<Order> {
-
-    int insertOrderInfo(Order order);
-
-    int updateOrderStatus(Order order);
-
-    List<Order> list();
-
-    List<Order> selectOrderStatusList(Order order);
-
-    List<Order> selectOrderInfoList(Order order);
-
-    //查询用户在指定拍卖会下的未设置单独保证金的未支付拍品订单
-    List<Order> selectOrderByAuctionId(@Param("auctionId")Long auctionId,@Param("userId")Integer userId);
-}

+ 1 - 18
lot/src/main/java/cn/hobbystocks/auc/service/IOrderService.java

@@ -2,27 +2,10 @@ package cn.hobbystocks.auc.service;
 
 import cn.hobbystocks.auc.domain.Order;
 import cn.hobbystocks.auc.vo.OrderVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.util.List;
-
-public interface IOrderService extends IService<Order> {
+public interface IOrderService {
 
 
 
     OrderVO createSkuOrder(Order order);
 
-
-    int modifyOrder(Order order);
-    /**
-     * 查询用户在指定拍卖会下未设置单独保证金的拍品订单
-     * @param auctionId
-     * @param userId
-     * @return
-     */
-    List<Order> getOrderListByUserAndAuction(Long auctionId,Integer userId);
-
-
-
-
 }

+ 2 - 22
lot/src/main/java/cn/hobbystocks/auc/service/impl/OrderServiceImpl.java

@@ -8,26 +8,22 @@ import cn.hobbystocks.auc.domain.Order;
 import cn.hobbystocks.auc.dto.OrderApiResponse;
 import cn.hobbystocks.auc.dto.SkuOrderDTO;
 import cn.hobbystocks.auc.forest.OrderApi;
-import cn.hobbystocks.auc.mapper.OrderMapper;
 import cn.hobbystocks.auc.service.IAuctionService;
 import cn.hobbystocks.auc.service.ILotService;
 import cn.hobbystocks.auc.service.IOrderService;
 import cn.hobbystocks.auc.vo.OrderVO;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.Date;
-import java.util.List;
 import java.util.Objects;
 
 @Service
-public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
+public class OrderServiceImpl implements IOrderService {
 
     @Autowired
     ILotService lotService;
@@ -39,7 +35,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private String orderUrl;
 
     @Override
-    @Transactional
     public OrderVO createSkuOrder(Order order) {
         Lot lot = lotService.selectLotById(order.getLotId());
         Auction auction = auctionService.selectAuctionById(lot.getAuctionId());
@@ -61,15 +56,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         order.setServiceExpense(serviceExpense);
         Date expireTime = DateUtils.addHours(new Date(), payTimeLimit);
         order.setExpireTime(expireTime);
-        save(order);
 
         OrderApiResponse response = orderApi.createSkuOrder(orderUrl, buildSkuOrderDTO(order, lot, auction));
-        OrderVO orderVO = response.toOrderVO();
-        order.setOrderId(orderVO.getOrderId());
-        order.setOrderNo(orderVO.getOrderNo());
-        order.setStatus(orderVO.getStatus());
-        updateById(order);
-        return orderVO;
+        return response.toOrderVO();
     }
 
     SkuOrderDTO buildSkuOrderDTO(Order order, Lot lot, Auction auction) {
@@ -89,13 +78,4 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return skuOrderDTO;
     }
 
-    @Override
-    public int modifyOrder(Order order) {
-        return getBaseMapper().updateOrderStatus(order);
-    }
-
-    @Override
-    public List<Order> getOrderListByUserAndAuction(Long auctionId, Integer userId) {
-        return getBaseMapper().selectOrderByAuctionId(auctionId, userId);
-    }
 }

+ 0 - 58
lot/src/main/resources/mapper/OrderMapper.xml

@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.hobbystocks.auc.mapper.OrderMapper">
-    <resultMap id="orderResultMap" type="cn.hobbystocks.auc.domain.Order">
-        <id column="id" property="id"></id>
-        <result column="lot_id" property="lotId"/>
-        <result column="order_id" property="orderId"/>
-        <result column="order_no" property="orderNo"/>
-        <result column="expire_time" property="expireTime"/>
-        <result column="status" property="status"/>
-        <result column="flag" property="flag"/>
-        <result column="user_id" property="userId"/>
-        <result column="merchant_id" property="merchantId"/>
-    </resultMap>
-    <insert id="insertOrderInfo" parameterType="order">
-    insert into order_info (lot_id,order_id,order_no,expire_time,status,user_id,merchant_id,flag) values
-        (#{lotId},#{orderId},#{orderNo},#{expireTime},#{status},#{userId},#{merchantId},#{flag})
-    </insert>
-    <update id="updateOrderStatus" parameterType="order">
-        update order_info
-        <trim prefix="set " suffixOverrides=",">
-            <if test="status != null and status!='' ">
-                status = #{status},
-            </if>
-            <if test="flag !='' and flag != null">
-                flag = #{flag},
-            </if>
-            <if test="expireTime!=null">
-                expire_time=#{expireTime},
-            </if>
-        </trim>
-        where order_no = #{orderNo}
-    </update>
-
-    <select id="selectOrderInfoList" resultMap="orderResultMap">
-        select lot_id,status from order_info
-        <where>
-            <if test="flag!='' and flag!= null">
-                flag = #{flag}
-            </if>
-            <if test="merchantId !='' and merchantId != null">
-                and merchant_id=#{merchantId}
-            </if>
-            <if test="userId !='' and userId != null">
-                and user_id=#{userId}
-            </if>
-            <if test="status !='' and status != null">
-                and status= #{status}
-            </if>
-        </where>
-    </select>
-    <select id="selectOrderByAuctionId" resultMap="orderResultMap">
-        select o.* from order_info o left JOIN lot l on o.lot_id=l."id"
-        where l.auction_id=#{auctionId} and l.deposit is null and o.user_id=#{userId}
-    </select>
-</mapper>