|
@@ -17,6 +17,7 @@ import com.sqx.modules.app.entity.UserEntity;
|
|
|
import com.sqx.modules.app.service.UserService;
|
|
import com.sqx.modules.app.service.UserService;
|
|
|
import com.sqx.modules.lovers.dao.LoversSetOrderInfoDao;
|
|
import com.sqx.modules.lovers.dao.LoversSetOrderInfoDao;
|
|
|
import com.sqx.modules.lovers.dto.LoversSetMenstrualPeriodSettingDTO;
|
|
import com.sqx.modules.lovers.dto.LoversSetMenstrualPeriodSettingDTO;
|
|
|
|
|
+import com.sqx.modules.lovers.dto.LoversSetOrderDeliveryInfoModifyDTO;
|
|
|
import com.sqx.modules.lovers.dto.LoversSetOrderQueryDTO;
|
|
import com.sqx.modules.lovers.dto.LoversSetOrderQueryDTO;
|
|
|
import com.sqx.modules.lovers.dto.LoversSetOrderSubmitDTO;
|
|
import com.sqx.modules.lovers.dto.LoversSetOrderSubmitDTO;
|
|
|
import com.sqx.modules.lovers.entity.LoversSetOrderDeliveryInfo;
|
|
import com.sqx.modules.lovers.entity.LoversSetOrderDeliveryInfo;
|
|
@@ -48,6 +49,7 @@ import java.time.temporal.ChronoUnit;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.IntStream;
|
|
import java.util.stream.IntStream;
|
|
|
|
|
|
|
@@ -141,6 +143,68 @@ public class LoversSetOrderInfoServiceImpl extends ServiceImpl<LoversSetOrderInf
|
|
|
saveDeliveryInfo(orderInfo);
|
|
saveDeliveryInfo(orderInfo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void userDeleteOrder(Long userId, Long orderId) {
|
|
|
|
|
+ LoversSetOrderInfo orderInfo = getById(orderId);
|
|
|
|
|
+ validateOrderAccess(orderInfo, userId);
|
|
|
|
|
+
|
|
|
|
|
+ String activeStatus = orderInfo.getActiveStatus();
|
|
|
|
|
+ if (!StrUtil.equals(activeStatus, "0")) {
|
|
|
|
|
+ throw new SqxException("当前状态下订单不能被删除!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ removeById(orderId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional
|
|
|
|
|
+ public void updateDeliveryInfo(Long userId, Long orderId, List<LoversSetOrderDeliveryInfoModifyDTO> deliveryInfoModifyList) {
|
|
|
|
|
+ LoversSetOrderInfo orderInfo = getById(orderId);
|
|
|
|
|
+ validateOrderAccess(orderInfo, userId);
|
|
|
|
|
+
|
|
|
|
|
+ List<LoversSetOrderDeliveryInfo> oldInfoList = loversSetOrderDeliveryInfoService.getByOrderId(orderId);
|
|
|
|
|
+ Map<Long, LoversSetOrderDeliveryInfo> oldInfoMap = oldInfoList.stream().collect(Collectors.toMap(LoversSetOrderDeliveryInfo::getId, Function.identity()));
|
|
|
|
|
+
|
|
|
|
|
+ List<LoversSetOrderDeliveryInfo> updateInfoList = deliveryInfoModifyList.stream()
|
|
|
|
|
+ .map(modifyDTO -> processDeliveryInfoModify(oldInfoMap, modifyDTO))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ loversSetOrderDeliveryInfoService.updateBatchById(updateInfoList);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private LoversSetOrderDeliveryInfo processDeliveryInfoModify(
|
|
|
|
|
+ Map<Long, LoversSetOrderDeliveryInfo> oldInfoMap,
|
|
|
|
|
+ LoversSetOrderDeliveryInfoModifyDTO modifyDTO) {
|
|
|
|
|
+
|
|
|
|
|
+ Long deliveryInfoId = modifyDTO.getId();
|
|
|
|
|
+ LoversSetOrderDeliveryInfo deliveryInfo = oldInfoMap.get(deliveryInfoId);
|
|
|
|
|
+
|
|
|
|
|
+ // 验证配送信息有效性
|
|
|
|
|
+ if (ObjectUtil.isNull(deliveryInfo)) {
|
|
|
|
|
+ throw new SqxException("无效的配送信息id:" + deliveryInfoId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!"1".equals(deliveryInfo.getDeliveryStatus())) {
|
|
|
|
|
+ throw new SqxException("配送单状态异常(当前状态:" + deliveryInfo.getDeliveryStatus() + "),id:" + deliveryInfoId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (ChronoUnit.DAYS.between(deliveryInfo.getDeliveryTimeOfExpect(), modifyDTO.getDeliveryTimeOfExpect()) != 0) {
|
|
|
|
|
+ throw new SqxException("只能修改为同一天的配送时间,id:" + deliveryInfoId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ BeanUtil.copyProperties(modifyDTO, deliveryInfo);
|
|
|
|
|
+ return deliveryInfo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void validateOrderAccess(LoversSetOrderInfo orderInfo, Long userId) {
|
|
|
|
|
+ if (ObjectUtil.isNull(orderInfo)) {
|
|
|
|
|
+ throw new SqxException("无效的订单id");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!userId.equals(orderInfo.getUserId())) {
|
|
|
|
|
+ throw new SqxException("权限异常:不能修改非自己的订单");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private void saveDeliveryInfo(LoversSetOrderInfo orderInfo) {
|
|
private void saveDeliveryInfo(LoversSetOrderInfo orderInfo) {
|
|
|
// 生成订单配送信息
|
|
// 生成订单配送信息
|
|
|
List<LoversSetOrderDetail> orderDetails = loversSetOrderDetailService.getByOrderId(orderInfo.getId());
|
|
List<LoversSetOrderDetail> orderDetails = loversSetOrderDetailService.getByOrderId(orderInfo.getId());
|