Authored by wujiexiang

解决问题:卖家变现后,不卖,查询订单详情

... ... @@ -8,4 +8,11 @@ public interface SellerGoodsStatusFlowMapper {
SellerGoodsStatusFlow selectByPrimaryKey(Integer id);
/**
* 通过orderCode查询skup
* 求购订单,卖家不卖了,seller_order中的skup清空了,查询订单详情需要skup
* @param orderCode
* @return
*/
SellerGoodsStatusFlow selectByOrderCode(long orderCode);
}
\ No newline at end of file
... ...
... ... @@ -18,4 +18,6 @@ public class SellerGoodsStatusFlow {
private Integer createTime;
private Long orderCode;
}
\ No newline at end of file
... ...
... ... @@ -6,9 +6,10 @@
<result column="skup" jdbcType="INTEGER" property="skup" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="create_time" jdbcType="INTEGER" property="createTime" />
<result column="order_code" jdbcType="BIGINT" property="orderCode" />
</resultMap>
<sql id="Base_Column_List">
id, skup, status, create_time
id, skup, status, create_time, order_code
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
... ... @@ -17,35 +18,19 @@
where id = #{id,jdbcType=INTEGER}
</select>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.yohoufo.dal.order.model.SellerGoodsStatusFlow" useGeneratedKeys="true">
insert into seller_goods_status_flow (skup, status, create_time
insert into seller_goods_status_flow (skup, status, create_time, order_code
)
values (#{skup,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, #{createTime,jdbcType=INTEGER}
values (#{skup,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, #{createTime,jdbcType=INTEGER}, #{orderCode,jdbcType=BIGINT}
)
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.yohoufo.dal.order.model.SellerGoodsStatusFlow" useGeneratedKeys="true">
insert into seller_goods_status_flow
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="skup != null">
skup,
</if>
<if test="status != null">
status,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="skup != null">
#{skup,jdbcType=INTEGER},
</if>
<if test="status != null">
#{status,jdbcType=INTEGER},
</if>
<if test="createTime != null">
#{createTime,jdbcType=INTEGER},
</if>
</trim>
</insert>
<select id="selectByOrderCode" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from seller_goods_status_flow
where order_code = #{orderCode,jdbcType=BIGINT}
limit 1
</select>
</mapper>
\ No newline at end of file
... ...
... ... @@ -113,7 +113,7 @@ public class SellerBidOrderPaymentService extends AbstractOrderPaymentService {
//async
SkupStatus skupStatus = SkupStatus.CAN_SELL;
sellerGoodsStatusFlowService.pushStatusFlowEvent(sellerOrderGoods.getId(), skupStatus.getCode());
sellerGoodsStatusFlowService.pushStatusFlowEvent(sellerOrderGoods.getId(), sellerOrder.getOrderCode(), skupStatus.getCode());
//卖家bid订单保证金支付完成事件
EventBusPublisher.publishEvent(SellerBidOrderPaySuccessEvent.builder().uid(sellerUid).skup(sellerOrderGoods.getId()).build());
... ...
... ... @@ -132,7 +132,7 @@ public class SellerOrderPaymentService extends AbstractOrderPaymentService {
//async
SkupStatus skupStatus = SkupStatus.CAN_SELL;
sellerGoodsStatusFlowService.pushStatusFlowEvent(sellerOrderGoods.getId(), skupStatus.getCode());
sellerGoodsStatusFlowService.pushStatusFlowEvent(sellerOrderGoods.getId(), sellerOrder.getOrderCode(), skupStatus.getCode());
skupService.syncPrdStatus(sellerOrderGoods);
if (asyncHook!=null){
logger.info("in processAfterPay change price processAfterChangePriceOrderPaid occur error , after syncPrdStatus 2 can-sell, invoke asyncHook, orderInfo {}", orderInfo);
... ...
... ... @@ -261,7 +261,7 @@ public class SellerDownShelfTaskHandler extends AbstractSellerTaskHandler<SkupDo
.createTime(DateUtil.getCurrentTimeSecond()).build();
sellerTaskDetailMapper.insert(detail);
//
sellerGoodsStatusFlowService.pushStatusFlowEvent(sellerOrderGoods.getId(),targetSkupStatus.getCode());
sellerGoodsStatusFlowService.pushStatusFlowEvent(sellerOrderGoods.getId(), skupDto.getSellerOrder().getOrderCode(), targetSkupStatus.getCode());
}
}
}
... ...
... ... @@ -94,6 +94,9 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
@Autowired
private ResourcesProxyService resourcesProxyService;
@Autowired
private SellerGoodsStatusFlowMapper sellerGoodsStatusFlowMapper;
private static List<SkupStatus> noNeedShowOrderCode = Arrays.asList(SkupStatus.CAN_NOT_SELL,SkupStatus.CAN_SELL,
SkupStatus.SELF_CANCEL_PAY, SkupStatus.TIMEOUT_CANCEL,
... ... @@ -132,7 +135,16 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
return null;
}
Integer skup = sellerOrder.getSkup();
SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup);
SellerOrderGoods sellerOrderGoods = null;
if (skup == 0) {
//变现订单,支付金过程中取消,skup = 0,通过seller_goods_status_flow查询skup信息
skup = sellerGoodsStatusFlowMapper.selectByOrderCode(orderCode).getSkup();
sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup);
sellerOrderGoods.setStatus(SellerOrderStatus.SELf_CANCEL_PAY.getSkupStatus().getCode());
sellerOrderGoods.setUid(uid);
} else {
sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup);
}
orderDetailInfo = orderCacheService.getSellerOrderDetailInfo(sellerOrderGoods);
if (Objects.isNull(orderDetailInfo)){
... ...
... ... @@ -30,9 +30,10 @@ public class SellerGoodsStatusFlowService {
return rows;
}
public void pushStatusFlowEvent(int skup, int targetStatus){
public void pushStatusFlowEvent(int skup, long orderCode, int targetStatus) {
SellerGoodsStatusFlow sgsf = SellerGoodsStatusFlow.builder()
.skup(skup).status(targetStatus).createTime(DateUtil.getCurrentTimeSecond())
.orderCode(orderCode)
.build();
SkupStatusFlowAsyncEvent event = new SkupStatusFlowAsyncEvent(this::add);
event.setSellerGoodsStatusFlow(sgsf);
... ...
... ... @@ -433,7 +433,7 @@ public class SellerOrderCancelService {
uid, skup, orderCode, targetStatus);
sellerBidOrderBindService.unbind(uid, orderCode, skup, targetStatus);
SkupStatus targetSkupStatus = targetStatus.getSkupStatus();
sellerGoodsStatusFlowService.pushStatusFlowEvent(skup, targetSkupStatus.getCode());
sellerGoodsStatusFlowService.pushStatusFlowEvent(skup, orderCode, targetSkupStatus.getCode());
//sync skup
SellerOrderGoods tsog = new SellerOrderGoods();
... ... @@ -478,7 +478,7 @@ public class SellerOrderCancelService {
sogCondition.setExceptStatus(exceptStatus.getSkupStatus().getCode());
result += sellerOrderGoodsMapper.updateStatusBySkpu(sogCondition);
if (result > 0) {
sellerGoodsStatusFlowService.pushStatusFlowEvent(skup, targetSkupStatus.getCode());
sellerGoodsStatusFlowService.pushStatusFlowEvent(skup, orderCode, targetSkupStatus.getCode());
//update seller order
SellerOrder target = new SellerOrder();
target.setOrderCode(orderCode);
... ... @@ -872,10 +872,11 @@ public class SellerOrderCancelService {
logger.warn("in {}, update status fail, skup {}, skupStatus {}", caseName, skup, skupStatus);
return cpn;
}
sellerGoodsStatusFlowService.pushStatusFlowEvent(skup, targetSkupStatus.getCode());
SellerOrder sellerOrder = sellerOrderMapper.selectBySkup(skup);
Integer sellerUid = sellerOrder.getUid();
final Long orderCode = sellerOrder.getOrderCode();
sellerGoodsStatusFlowService.pushStatusFlowEvent(skup, orderCode, targetSkupStatus.getCode());
//update
SellerOrder tso = new SellerOrder();
tso.setOrderCode(orderCode);
... ...