Authored by mali

Merge branch 'test6.9.8' into gray

@@ -56,4 +56,6 @@ public interface StorageDepositMapper { @@ -56,4 +56,6 @@ public interface StorageDepositMapper {
56 int getUserDepositCount(@Param("uid") Integer uid); 56 int getUserDepositCount(@Param("uid") Integer uid);
57 57
58 StorageDeposit selectByOrderCode(@Param("orderCode") Long orderCode); 58 StorageDeposit selectByOrderCode(@Param("orderCode") Long orderCode);
  59 +
  60 + int updateStorageStatusEx(@Param("depositCode")String depositCode, @Param("status")int status, @Param("initStatus")int initStatus,@Param("outType")Integer outType);
59 } 61 }
@@ -359,4 +359,13 @@ @@ -359,4 +359,13 @@
359 from storage_deposit 359 from storage_deposit
360 where order_code = #{orderCode} and del_status=0 limit 1 360 where order_code = #{orderCode} and del_status=0 limit 1
361 </select> 361 </select>
  362 +
  363 + <update id="updateStorageStatusEx">
  364 + update storage_deposit
  365 + set status = #{status,jdbcType=INTEGER} ,update_time = unix_timestamp(now())
  366 + <if test="outType != null" >
  367 + , out_type = #{outType}
  368 + </if>
  369 + where deposit_code = #{depositCode,jdbcType=VARCHAR} AND del_status = 0 AND status = #{initStatus,jdbcType=INTEGER}
  370 + </update>
362 </mapper> 371 </mapper>
@@ -8,4 +8,6 @@ public interface SellerConfig { @@ -8,4 +8,6 @@ public interface SellerConfig {
8 int ENTER_TYPE_DEFAULT_LEVEL = 0; 8 int ENTER_TYPE_DEFAULT_LEVEL = 0;
9 9
10 String ENTER_TYPE_DEFAULT_FUNCS="[]"; 10 String ENTER_TYPE_DEFAULT_FUNCS="[]";
  11 +
  12 + String DELIVER2DEPOTTIPS4DEPOSITGOODS = "此商品买家选择寄存在UFO仓库,所以需要您将该商品发送至UFO南京鉴定中心";
11 } 13 }
@@ -92,11 +92,11 @@ public class ExpressInfoController { @@ -92,11 +92,11 @@ public class ExpressInfoController {
92 * @return 92 * @return
93 */ 93 */
94 @RequestMapping(params = "method=ufo.order.noticeAppraiseAddressChanged") 94 @RequestMapping(params = "method=ufo.order.noticeAppraiseAddressChanged")
95 - public ApiResponse noticeAppraiseAddressChanged(@RequestParam("uid") Integer uid, 95 + public ApiResponse forceNoticeAppraiseAddress(@RequestParam("uid") Integer uid,
96 @RequestParam(value="orderCode")Long orderCode) { 96 @RequestParam(value="orderCode")Long orderCode) {
97 LOG.info("method=ufo.order.noticeAppraiseAddressChanged in, uid {}, orderCode {}", uid, orderCode); 97 LOG.info("method=ufo.order.noticeAppraiseAddressChanged in, uid {}, orderCode {}", uid, orderCode);
98 98
99 - AppraiseAddressResp appraiseAddressResp = null;//expressInfoService.noticeAppraiseAddressChanged(uid, orderCode); 99 + AppraiseAddressResp appraiseAddressResp = expressInfoService.forceNoticeAppraiseAddress(uid, orderCode);
100 return new ApiResponse.ApiResponseBuilder().code(200).data(appraiseAddressResp).build(); 100 return new ApiResponse.ApiResponseBuilder().code(200).data(appraiseAddressResp).build();
101 } 101 }
102 } 102 }
@@ -36,6 +36,15 @@ public class AppraiseAddressResp { @@ -36,6 +36,15 @@ public class AppraiseAddressResp {
36 @JSONField(name="isChanged") 36 @JSONField(name="isChanged")
37 private boolean isChanged; 37 private boolean isChanged;
38 38
  39 + @Getter
  40 + @Setter
  41 + @JSONField(name="isForceShow")
  42 + private boolean isForceShow;
  43 +
  44 + @Getter
  45 + @Setter
  46 + private String tips;
  47 +
39 public Integer getType() { 48 public Integer getType() {
40 return type; 49 return type;
41 } 50 }
@@ -44,7 +44,7 @@ public class DepositFinishDeliveryDelayMsgConsumer implements YhConsumer { @@ -44,7 +44,7 @@ public class DepositFinishDeliveryDelayMsgConsumer implements YhConsumer {
44 } 44 }
45 45
46 //更新寄存状态为已完成 46 //更新寄存状态为已完成
47 - storageDepositMapper.updateStorageStatus(deposit.getDepositCode(), StorageDepositStatusEnum.HAS_END.getCode(), OrderStatus.WAITING_PAY.getCode(), null); 47 + storageDepositMapper.updateStorageStatusEx(deposit.getDepositCode(), StorageDepositStatusEnum.HAS_END.getCode(), StorageDepositStatusEnum.HAS_OUT.getCode(), null);
48 48
49 } 49 }
50 } 50 }
@@ -97,7 +97,7 @@ public interface IExpressInfoService { @@ -97,7 +97,7 @@ public interface IExpressInfoService {
97 AppraiseAddressResp queryAppraiseAddress(Integer uid, Long orderCode, Integer skup); 97 AppraiseAddressResp queryAppraiseAddress(Integer uid, Long orderCode, Integer skup);
98 98
99 99
100 - AppraiseAddressResp noticeAppraiseAddressChanged(Integer uid, Long orderCode); 100 + AppraiseAddressResp forceNoticeAppraiseAddress(Integer uid, Long orderCode);
101 101
102 102
103 103
@@ -264,15 +264,16 @@ public class AppraiseService { @@ -264,15 +264,16 @@ public class AppraiseService {
264 LOGGER.warn("deliveryGoodsToBuyer getOrderInfo order not exist, orderCode is {}", orderCode); 264 LOGGER.warn("deliveryGoodsToBuyer getOrderInfo order not exist, orderCode is {}", orderCode);
265 throw new ServiceException(ServiceError.ORDER_NULL); 265 throw new ServiceException(ServiceError.ORDER_NULL);
266 } 266 }
267 - // 寄存订单 267 + // 寄存订单 或者闪购的库存
268 if(BuyerOrderUtils.isDeposit(buyerOrder)){ 268 if(BuyerOrderUtils.isDeposit(buyerOrder)){
269 deliveryDepositGoodsToBuyer(appraiseExpressInfoBo, buyerOrder); 269 deliveryDepositGoodsToBuyer(appraiseExpressInfoBo, buyerOrder);
270 - //设置寄存状态为已发货  
271 - setDepositStatus(orderCode);  
272 } else { 270 } else {
273 deliveryNonDepositGoodsToBuyer(appraiseExpressInfoBo, buyerOrder); 271 deliveryNonDepositGoodsToBuyer(appraiseExpressInfoBo, buyerOrder);
274 } 272 }
275 273
  274 + //设置寄存状态为已发货 寄存订单 或者闪购的库存 需要修改仓库记录的发货状态
  275 + setDepositStatus(orderCode);
  276 +
276 } 277 }
277 278
278 279
@@ -281,9 +282,13 @@ public class AppraiseService { @@ -281,9 +282,13 @@ public class AppraiseService {
281 if(null == deposit) { 282 if(null == deposit) {
282 return; 283 return;
283 } 284 }
284 -  
285 - int num = storageDepositMapper.updateStorageStatus(deposit.getDepositCode(), StorageDepositStatusEnum.HAS_OUT.getCode(), OrderStatus.WAITING_PAY.getCode(), null); 285 +
  286 + LOGGER.info("method setDepositStatus execute, orderCode is {}", orderCode);
  287 +
  288 + int num = storageDepositMapper.updateStorageStatusEx(deposit.getDepositCode(), StorageDepositStatusEnum.HAS_OUT.getCode(), StorageDepositStatusEnum.WAITING_OUT.getCode(), null);
286 if(num > 0) { 289 if(num > 0) {
  290 + LOGGER.info("method setDepositStatus end, orderCode is {}", orderCode);
  291 +
287 //清缓存 292 //清缓存
288 ufoServiceCaller.call("ufo.deposit.clearOrderCache", deposit.getOwnerUid(), deposit.getDepositCode()); // 清理库存详情缓存 293 ufoServiceCaller.call("ufo.deposit.clearOrderCache", deposit.getOwnerUid(), deposit.getDepositCode()); // 清理库存详情缓存
289 294
@@ -24,6 +24,7 @@ import com.yohoufo.dal.order.model.StorageDepositCount; @@ -24,6 +24,7 @@ import com.yohoufo.dal.order.model.StorageDepositCount;
24 import com.yohoufo.order.controller.DepositController; 24 import com.yohoufo.order.controller.DepositController;
25 import com.yohoufo.order.model.response.AppraiseAddressResp; 25 import com.yohoufo.order.model.response.AppraiseAddressResp;
26 import com.yohoufo.order.service.DepositService; 26 import com.yohoufo.order.service.DepositService;
  27 +import com.yohoufo.order.service.proxy.InBoxFacade;
27 import com.yohoufo.order.service.proxy.ProductProxyService; 28 import com.yohoufo.order.service.proxy.ProductProxyService;
28 import com.yohoufo.order.service.proxy.SellerNoticeFacade; 29 import com.yohoufo.order.service.proxy.SellerNoticeFacade;
29 import com.yohoufo.order.service.seller.SkupService; 30 import com.yohoufo.order.service.seller.SkupService;
@@ -73,6 +74,9 @@ public class DepositServiceImpl implements DepositService { @@ -73,6 +74,9 @@ public class DepositServiceImpl implements DepositService {
73 @Autowired 74 @Autowired
74 private SellerNoticeFacade sellerNoticeFacade; 75 private SellerNoticeFacade sellerNoticeFacade;
75 76
  77 + @Autowired
  78 + private InBoxFacade inBoxFacade;
  79 +
76 private static final int DEPOSIT_MAX_TIME = 45 * 24 * 60 * 60; 80 private static final int DEPOSIT_MAX_TIME = 45 * 24 * 60 * 60;
77 81
78 82
@@ -318,7 +322,7 @@ public class DepositServiceImpl implements DepositService { @@ -318,7 +322,7 @@ public class DepositServiceImpl implements DepositService {
318 322
319 clearCache(uid, sd.getProductId(), sd.getStorageId()); 323 clearCache(uid, sd.getProductId(), sd.getStorageId());
320 SellerOrderGoods psog = sellerOrderGoodsMapper.selectByPrimaryKey(sd.getNewSkup()); 324 SellerOrderGoods psog = sellerOrderGoodsMapper.selectByPrimaryKey(sd.getNewSkup());
321 - sellerNoticeFacade.depositGoodsSaleUnShelf(uid, psog.getProductName(), psog.getSizeName(), psog.getProductId()); 325 + inBoxFacade.sellerPlaySelf(uid, psog);
322 } 326 }
323 327
324 /** 328 /**
@@ -27,6 +27,7 @@ import com.yohoufo.dal.order.*; @@ -27,6 +27,7 @@ import com.yohoufo.dal.order.*;
27 import com.yohoufo.dal.order.model.*; 27 import com.yohoufo.dal.order.model.*;
28 import com.yohoufo.order.common.ExpressForMqSend; 28 import com.yohoufo.order.common.ExpressForMqSend;
29 import com.yohoufo.order.constants.MetaKey; 29 import com.yohoufo.order.constants.MetaKey;
  30 +import com.yohoufo.order.constants.SellerConfig;
30 import com.yohoufo.order.event.BuyerOrderSellerDeliveryCheckEvent; 31 import com.yohoufo.order.event.BuyerOrderSellerDeliveryCheckEvent;
31 import com.yohoufo.order.event.ErpBuyerOrderEvent; 32 import com.yohoufo.order.event.ErpBuyerOrderEvent;
32 import com.yohoufo.order.model.OperateTransferExpressInfo; 33 import com.yohoufo.order.model.OperateTransferExpressInfo;
@@ -1127,12 +1128,34 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { @@ -1127,12 +1128,34 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
1127 * @return 1128 * @return
1128 */ 1129 */
1129 @Override 1130 @Override
1130 - public AppraiseAddressResp noticeAppraiseAddressChanged(Integer uid, Long orderCode) { 1131 + public AppraiseAddressResp forceNoticeAppraiseAddress(Integer uid, Long orderCode) {
1131 1132
1132 if (null == uid || orderCode == null) { 1133 if (null == uid || orderCode == null) {
1133 - LOGGER.warn("in noticeAppraiseAddressChanged check in-param fail, uid {}, orderCode {}", uid, orderCode); 1134 + LOGGER.warn("in forceNoticeAppraiseAddress check in-param fail, uid {}, orderCode {}", uid, orderCode);
1134 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY); 1135 throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
1135 } 1136 }
  1137 + AppraiseAddressResp resp = null;
  1138 + BuyerOrder buyerOrder = buyerOrderMapper.selectOnlyByOrderCode(orderCode);
  1139 + if (Objects.isNull(buyerOrder)){
  1140 + LOGGER.warn("in forceNoticeAppraiseAddress buyerOrder not exist,uid {}, orderCode {}", uid, orderCode);
  1141 + return resp;
  1142 + }
  1143 + if(BuyerOrderUtils.isDeposit(buyerOrder)){
  1144 + resp = getAppraiseAddressResp4Deposit(uid, orderCode);
  1145 + }
  1146 + return resp;
  1147 + }
  1148 +
  1149 + private AppraiseAddressResp getAppraiseAddressResp4Deposit(Integer uid, Long orderCode){
  1150 + LOGGER.info("in getAppraiseAddressResp4Deposit uid {}, orderCode {}", uid, orderCode);
  1151 + AppraiseAddressResp resp = appraiseAddressService.findByDepotType(DepotType.NJ.getCode());
  1152 + final String tips = SellerConfig.DELIVER2DEPOTTIPS4DEPOSITGOODS;
  1153 + resp.setForceShow(true);
  1154 + resp.setTips(tips);
  1155 + return resp;
  1156 + }
  1157 +
  1158 + private AppraiseAddressResp getAppraiseAddressResp4AddrressChange(int uid, long orderCode){
1136 BuyerOrderGoods pbog = buyerOrderGoodsMapper.selectOnlyByOrderCode(orderCode); 1159 BuyerOrderGoods pbog = buyerOrderGoodsMapper.selectOnlyByOrderCode(orderCode);
1137 if (Objects.isNull(pbog)){ 1160 if (Objects.isNull(pbog)){
1138 LOGGER.warn("in noticeAppraiseAddressChanged BuyerOrderGoods not exist, uid {}, order code {}", uid, orderCode); 1161 LOGGER.warn("in noticeAppraiseAddressChanged BuyerOrderGoods not exist, uid {}, order code {}", uid, orderCode);
@@ -100,7 +100,13 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I @@ -100,7 +100,13 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
100 100
101 private static final List<Long> SELLER_TYPES = Arrays.asList(OrderCodeType.SELLER_TYPE.getType()); 101 private static final List<Long> SELLER_TYPES = Arrays.asList(OrderCodeType.SELLER_TYPE.getType());
102 102
103 - 103 + private static final List<Integer> quickDeliverFinishStatus ;
  104 + static {
  105 + quickDeliverFinishStatus = new ArrayList<>(8);
  106 + quickDeliverFinishStatus.add(OrderStatus.JUDGE_PASS.getCode());
  107 + quickDeliverFinishStatus.add(OrderStatus.WAITING_RECEIVE.getCode());
  108 + quickDeliverFinishStatus.add(OrderStatus.DONE.getCode());
  109 + }
104 @Override 110 @Override
105 public OrderDetailInfo getOrderDetail(OrderRequest orderRequest) { 111 public OrderDetailInfo getOrderDetail(OrderRequest orderRequest) {
106 int uid; 112 int uid;
@@ -493,12 +499,16 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I @@ -493,12 +499,16 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
493 buyerOrder.getOrderCode(), detailDesc, orderOverTime); 499 buyerOrder.getOrderCode(), detailDesc, orderOverTime);
494 } 500 }
495 } 501 }
496 - if (BuyerOrderUtils.isQuickDeliverDeposit(skupType, buyerOrder)) {  
497 - detailDesc = OrderDetailDesc.Seller.TRADE_DONE_QUICK_DELIVER; 502 + //急速发货商品,且已完成(区分寄存 发货)
  503 + if (SellerGoodsHelper.isQuickDeliver(skupType)) {
  504 + if (quickDeliverFinishStatus.contains(orderStatus.getCode())){
  505 + detailDesc = OrderDetailDesc.Seller.TRADE_DONE_QUICK_DELIVER;
  506 + }
498 } 507 }
499 return detailDesc; 508 return detailDesc;
500 } 509 }
501 510
  511 +
502 @Override 512 @Override
503 protected void resetDynamicProporties(OrderDetailInfo orderDetailInfo,String appVersion) { 513 protected void resetDynamicProporties(OrderDetailInfo orderDetailInfo,String appVersion) {
504 Long orderCode = orderDetailInfo.getOrderCode(); 514 Long orderCode = orderDetailInfo.getOrderCode();
@@ -73,9 +73,9 @@ public class SellerNoticeFacade extends BaseNoticeFacade { @@ -73,9 +73,9 @@ public class SellerNoticeFacade extends BaseNoticeFacade {
73 String productCode = Optional.ofNullable(product).map(Product::getProductCode).orElse(""); 73 String productCode = Optional.ofNullable(product).map(Product::getProductCode).orElse("");
74 String sizeName = psog.getSizeName(); 74 String sizeName = psog.getSizeName();
75 String goodsTypeType = buildGoodsTypeTagForSeller(psog); 75 String goodsTypeType = buildGoodsTypeTagForSeller(psog);
76 - String earnMoneyPlacehold = ""; 76 + String earnMoneyPlacehold = "";
77 if (withEarnMoney){ 77 if (withEarnMoney){
78 - earnMoneyPlacehold = "保证金已退还,"; 78 + earnMoneyPlacehold = "保证金已退还,";
79 } 79 }
80 return buildInboxContent(InboxBusinessTypeEnum.NOTICE_SELLER_WHEN_APPRAISE_PASS, goodsTypeType, prdName, sizeName, productCode,earnMoneyPlacehold); 80 return buildInboxContent(InboxBusinessTypeEnum.NOTICE_SELLER_WHEN_APPRAISE_PASS, goodsTypeType, prdName, sizeName, productCode,earnMoneyPlacehold);
81 }) 81 })
@@ -126,47 +126,8 @@ public class SellerNoticeFacade extends BaseNoticeFacade { @@ -126,47 +126,8 @@ public class SellerNoticeFacade extends BaseNoticeFacade {
126 } 126 }
127 } 127 }
128 128
129 - /**  
130 - * 寄存商品上架出售  
131 - *  
132 - * @param sellerUid  
133 - * @param prdName  
134 - */  
135 - public void depositGoodsSaleShelf(int sellerUid, String prdName, String sizeName, Integer productId) {  
136 - try {  
137 - newNotice(sellerUid)  
138 - .withLogPrefix("notice seller deposit goods sale shelf")  
139 - .withInBox(() -> {  
140 - Product product = productMapper.selectByPrimaryKey(productId);  
141 - String productCode = product.getProductCode();  
142 - return buildInboxContent(InboxBusinessTypeEnum.DEPOSIT_GOODS_SALE_SHELF, prdName, sizeName, productCode);  
143 - })  
144 - .send();  
145 - } catch (Exception e) {  
146 - log.warn("notice seller deposit goods sale shelf fail, sellerUid {}, prdName {} ,sizeName {} ", sellerUid, prdName, sizeName, e);  
147 - }  
148 - }  
149 129
150 - /**  
151 - * 寄存商品下架  
152 - *  
153 - * @param sellerUid  
154 - * @param prdName  
155 - */  
156 - public void depositGoodsSaleUnShelf(int sellerUid, String prdName, String sizeName, Integer productId) {  
157 - try {  
158 - newNotice(sellerUid)  
159 - .withLogPrefix("notice seller deposit goods sale shelf")  
160 - .withInBox(() -> {  
161 - Product product = productMapper.selectByPrimaryKey(productId);  
162 - String productCode = product.getProductCode();  
163 - return buildInboxContent(InboxBusinessTypeEnum.DEPOSIT_GOODS_SALE_UN_SHELF, prdName, sizeName, productCode);  
164 - })  
165 - .send();  
166 - } catch (Exception e) {  
167 - log.warn("notice seller deposit goods sale shelf fail, sellerUid {}, prdName {} ,sizeName {} ", sellerUid, prdName, sizeName, e);  
168 - }  
169 - } 130 +
170 131
171 public void buyerCancelBeforeDepotReceive(@NonNull BuyerOrder buyerOrder, SellerOrderGoods sog) { 132 public void buyerCancelBeforeDepotReceive(@NonNull BuyerOrder buyerOrder, SellerOrderGoods sog) {
172 Integer buyerUid = buyerOrder.getUid(); 133 Integer buyerUid = buyerOrder.getUid();
@@ -8,6 +8,7 @@ import com.yohobuy.ufo.model.order.common.OrderCodeType; @@ -8,6 +8,7 @@ import com.yohobuy.ufo.model.order.common.OrderCodeType;
8 import com.yohobuy.ufo.model.order.common.SellerOrderListType; 8 import com.yohobuy.ufo.model.order.common.SellerOrderListType;
9 import com.yohobuy.ufo.model.order.common.SkupListType; 9 import com.yohobuy.ufo.model.order.common.SkupListType;
10 import com.yohobuy.ufo.model.order.common.SkupStatus; 10 import com.yohobuy.ufo.model.order.common.SkupStatus;
  11 +import com.yohobuy.ufo.model.order.constants.SkupType;
11 import com.yohobuy.ufo.model.order.req.QuickDeliverOrderSubmitReq; 12 import com.yohobuy.ufo.model.order.req.QuickDeliverOrderSubmitReq;
12 import com.yohobuy.ufo.model.order.resp.OrderListInfo; 13 import com.yohobuy.ufo.model.order.resp.OrderListInfo;
13 import com.yohobuy.ufo.model.order.resp.PageResp; 14 import com.yohobuy.ufo.model.order.resp.PageResp;
@@ -127,7 +128,8 @@ public class QuickDeliverGoodsService { @@ -127,7 +128,8 @@ public class QuickDeliverGoodsService {
127 } 128 }
128 //在for循环中被用作值传递,部分数据会有变化,使用时需要注意动态变化的属性 129 //在for循环中被用作值传递,部分数据会有变化,使用时需要注意动态变化的属性
129 GoodsInfo goodsInfo = context.getSoldProduct(); 130 GoodsInfo goodsInfo = context.getSoldProduct();
130 - sellerNoticeFacade.depositGoodsSaleShelf(uid, goodsInfo.getProductName(), goodsInfo.getSizeName(), goodsInfo.getProductId()); 131 + SkupType skupType = goodsInfo.getSkupType();
  132 + sellerNoticeFacade.saleShelf(uid, goodsInfo.getProductName(), goodsInfo.getSizeName(), goodsInfo.getProductId(), skupType.getCode());
131 DepositPublishResp resp = DepositPublishResp.builder().successNum(successNum) 133 DepositPublishResp resp = DepositPublishResp.builder().successNum(successNum)
132 .build(); 134 .build();
133 return resp; 135 return resp;