|
|
@@ -4,6 +4,11 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
+import com.yonge.cooleshow.api.feign.AdminFeignService;
|
|
|
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
|
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
|
|
|
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
|
|
|
+import com.yonge.cooleshow.common.entity.ContractDto;
|
|
|
import com.yonge.cooleshow.common.service.IdGeneratorService;
|
|
|
import com.yonge.cooleshow.mall.common.api.CommonPage;
|
|
|
import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
|
|
|
@@ -34,6 +39,7 @@ import com.yonge.toolset.payment.util.DistributedLock;
|
|
|
import org.redisson.api.RedissonClient;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -41,7 +47,8 @@ import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -91,6 +98,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
private CancelOrderSender cancelOrderSender;
|
|
|
|
|
|
@Autowired
|
|
|
+ private AdminFeignService adminFeignService;
|
|
|
+ @Autowired
|
|
|
private UserOrderPaymentService userOrderPaymentService;
|
|
|
|
|
|
@Autowired(required = true)
|
|
|
@@ -108,6 +117,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
@Autowired
|
|
|
private RedissonClient redissonClient;
|
|
|
|
|
|
+
|
|
|
@Autowired
|
|
|
private PortalProductDao productDao;
|
|
|
|
|
|
@@ -161,6 +171,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
orderItem.setPromotionName(cartPromotionItem.getPromotionMessage());
|
|
|
orderItem.setGiftIntegration(cartPromotionItem.getIntegration());
|
|
|
orderItem.setGiftGrowth(cartPromotionItem.getGrowth());
|
|
|
+ orderItem.setPromoterId(cartPromotionItem.getPromoterId());
|
|
|
orderItemList.add(orderItem);
|
|
|
}
|
|
|
//判断购物车中商品是否都有库存
|
|
|
@@ -320,9 +331,55 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
// 减商品库存
|
|
|
updateProductStock(orderDetail);
|
|
|
|
|
|
+ // 查询订单
|
|
|
+ OmsOrderDetail detail = detail(orderId);
|
|
|
+
|
|
|
+ // 设置平台收入和分润
|
|
|
+ setPromoterRecord(detail,PostStatusEnum.WAIT);
|
|
|
+
|
|
|
+ // 签协议
|
|
|
+ adminFeignService.contractRecord(new ContractDto(orderDetail.getPlatformType(),orderDetail.getMemberId()));
|
|
|
+
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
+ private void setPromoterRecord(OmsOrderDetail detail,PostStatusEnum status) {
|
|
|
+
|
|
|
+ List<OmsOrderItem> orderItemList = detail.getOrderItemList();
|
|
|
+
|
|
|
+ // orderItemList = orderItemList.stream().filter(omsOrderItem -> omsOrderItem.getPromoterId() != null).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(orderItemList) ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<MallOrderItemDto> list = new ArrayList<>();
|
|
|
+ for (OmsOrderItem omsOrderItem : orderItemList) {
|
|
|
+ if (omsOrderItem.getReturnStatus() != -1) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ MallOrderItemDto teacherShareDto = new MallOrderItemDto();
|
|
|
+ BeanUtils.copyProperties(omsOrderItem,teacherShareDto);
|
|
|
+ teacherShareDto.setRealAmount(omsOrderItem.getRealAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())));
|
|
|
+ teacherShareDto.setStatus(status);
|
|
|
+ teacherShareDto.setUserId(detail.getMemberId());
|
|
|
+ list.add(teacherShareDto);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ HttpResponseResult<Boolean> result;
|
|
|
+ if (status.equals(PostStatusEnum.WAIT)) {
|
|
|
+ result = adminFeignService.mallRecord(list);
|
|
|
+ } else {
|
|
|
+ result = adminFeignService.mallRecordState(list);
|
|
|
+ }
|
|
|
+ if (result.getStatus()) {
|
|
|
+ LOG.debug("分润记录写入成功,json: {}",JSON.toJSONString(list));
|
|
|
+ } else {
|
|
|
+ LOG.error("分润记录写入失败,json: {}",JSON.toJSONString(list));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 减商品库存
|
|
|
*/
|
|
|
@@ -439,18 +496,21 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
|
|
|
@Override
|
|
|
public void confirmReceiveOrder(Long orderId) {
|
|
|
- UmsMember member = memberService.getCurrentMember();
|
|
|
+ // UmsMember member = memberService.getCurrentMember();
|
|
|
OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
|
|
|
- if (!member.getId().equals(order.getMemberId())) {
|
|
|
- Asserts.fail("不能确认他人订单!");
|
|
|
- }
|
|
|
+ // if (!member.getId().equals(order.getMemberId())) {
|
|
|
+ // Asserts.fail("不能确认他人订单!");
|
|
|
+ // }
|
|
|
if (order.getStatus() != 2) {
|
|
|
Asserts.fail("该订单还未发货!");
|
|
|
+ }else if (order.getStatus() == 3) {
|
|
|
+ Asserts.fail("已确认收货!");
|
|
|
}
|
|
|
order.setStatus(3);
|
|
|
order.setConfirmStatus(1);
|
|
|
order.setReceiveTime(new Date());
|
|
|
orderMapper.updateByPrimaryKey(order);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -713,6 +773,75 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Integer autoReceive() {
|
|
|
+ OmsOrderSetting omsOrderSetting = orderSettingMapper.selectByPrimaryKey(1L);
|
|
|
+ Integer confirmOvertime = omsOrderSetting.getConfirmOvertime();
|
|
|
+ LocalDateTime localDateTime = LocalDateTime.now().plusDays(-confirmOvertime);
|
|
|
+ OmsOrderExample orderExample = new OmsOrderExample();
|
|
|
+ orderExample.createCriteria().andStatusEqualTo(2).andDeleteStatusEqualTo(0).andConfirmStatusEqualTo(0)
|
|
|
+ .andDeliveryTimeLessThanOrEqualTo(Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
+
|
|
|
+ List<OmsOrder> omsOrders = orderMapper.selectByExample(orderExample);
|
|
|
+ if (CollectionUtils.isEmpty(omsOrders)) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ for (OmsOrder omsOrder : omsOrders) {
|
|
|
+
|
|
|
+ DistributedLock.of(redissonClient)
|
|
|
+ .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(omsOrder.getOrderSn())
|
|
|
+ , () -> {
|
|
|
+ this.confirmReceiveOrder(omsOrder.getId());
|
|
|
+ }, 60L, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
+ return omsOrders.size();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer shareProfit() {
|
|
|
+ OmsOrderSetting omsOrderSetting = orderSettingMapper.selectByPrimaryKey(1L);
|
|
|
+ Integer finishOvertime = omsOrderSetting.getFinishOvertime();
|
|
|
+ LocalDateTime localDateTime = LocalDateTime.now().plusDays(-finishOvertime);
|
|
|
+ OmsOrderExample orderExample = new OmsOrderExample();
|
|
|
+ orderExample.createCriteria().andStatusEqualTo(3).andDeleteStatusEqualTo(0).andConfirmStatusEqualTo(1)
|
|
|
+ .andAfterSaleEqualTo(0)
|
|
|
+ .andReceiverCityIsNotNull()
|
|
|
+ .andReceiveTimeLessThan(Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
+
|
|
|
+ List<OmsOrder> omsOrders = orderMapper.selectByExample(orderExample);
|
|
|
+ if (CollectionUtils.isEmpty(omsOrders)) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ for (OmsOrder omsOrder : omsOrders) {
|
|
|
+
|
|
|
+ DistributedLock.of(redissonClient)
|
|
|
+ .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(omsOrder.getOrderSn())
|
|
|
+ , () -> {
|
|
|
+ this.FinishReceiveOrder(omsOrder.getId());
|
|
|
+ }, 60L, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
+ return omsOrders.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void FinishReceiveOrder(Long orderId) {
|
|
|
+
|
|
|
+ // UmsMember member = memberService.getCurrentMember();
|
|
|
+ OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
|
|
|
+ // if (!member.getId().equals(order.getMemberId())) {
|
|
|
+ // Asserts.fail("不能确认他人订单!");
|
|
|
+ // }
|
|
|
+ if (order.getStatus() != 3) {
|
|
|
+ Asserts.fail("未确认收货!");
|
|
|
+ }
|
|
|
+ order.setAfterSale(1);
|
|
|
+ orderMapper.updateByPrimaryKey(order);
|
|
|
+
|
|
|
+
|
|
|
+ // 设置平台收入和分润 实际收款
|
|
|
+ setPromoterRecord(detail(orderId), PostStatusEnum.RECORDED);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/***
|
|
|
* 处理回调-支付成功
|
|
|
@@ -925,6 +1054,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
}
|
|
|
}
|
|
|
userOrderPaymentService.saveOrUpdate(orderPayment);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|