From d6ef18f23c4b298cb9b977ab3a5d65e2f4a39fe2 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 06 十一月 2024 18:02:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java | 133 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 124 insertions(+), 9 deletions(-)
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java
index ccc18a1..61b34c1 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java
@@ -2,11 +2,24 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.api.entity.Prize;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.utils.SnowflakeIdWorker;
+import com.ruoyi.order.api.entity.UserOrderRequest;
+import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.user.entity.Order;
+import com.ruoyi.user.entity.RecoveryServe;
+import com.ruoyi.user.entity.RecoveryServePrice;
+import com.ruoyi.user.entity.UserRecipient;
import com.ruoyi.user.mapper.OrderMapper;
+import com.ruoyi.user.request.OrderRequest;
import com.ruoyi.user.service.OrderService;
+import com.ruoyi.user.service.RecoveryServePriceService;
+import com.ruoyi.user.service.RecoveryServeService;
+import com.ruoyi.user.service.UserRecipientService;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
@@ -22,6 +35,20 @@
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
+ @Resource
+ private UserRecipientService userRecipientService;
+ @Resource
+ private RecoveryServeService recoveryServeService;
+ @Resource
+ private OrderClient orderClient;
+ @Resource
+ private RecoveryServePriceService servePriceService;
+
+ /**
+ * 雪花算法类
+ */
+ private static final SnowflakeIdWorker SNOW_FLAKE_ID_WORKER = new SnowflakeIdWorker(5, 5);
+
@Override
public Object obtainAllowance(List<Prize> prizeList) {
// 过滤中奖概率为空的奖品
@@ -29,18 +56,106 @@
// 转盘逻辑
double sum = prizes.stream().map(Prize::getProbability).mapToDouble(Double::doubleValue).sum();
Prize result = null;
- for (Prize prize : prizes) {
- double item = prize.getProbability() / sum;
- // 随机数对象
- Random random = new Random();
- // 生成一个介于0到1之间的随机小数
- double randomDouble = random.nextDouble();
- if (item <= randomDouble) {
- result = prize;
- break;
+ boolean v = true;
+ while (v) {
+ for (Prize prize : prizes) {
+ double item = prize.getProbability() / sum;
+ // 随机数对象
+ Random random = new Random();
+ // 生成一个介于0到1之间的随机小数
+ double randomDouble = random.nextDouble();
+ if (item >= randomDouble) {
+ result = prize;
+ break;
+ }
+ }
+ if (null != result) {
+ v = false;
}
}
// 抽中的商品
return result;
}
+
+ @Override
+ public Boolean placeOrder(OrderRequest orderRequest, Integer userId) {
+ Integer serveId = orderRequest.getServeId();
+ Integer addressId = orderRequest.getAddressId();
+ // 下单相关信息
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
+ .eq(RecoveryServe::getIsDelete, 0).one();
+ UserRecipient userRecipient = userRecipientService.lambdaQuery().eq(UserRecipient::getId, addressId)
+ .eq(UserRecipient::getIsDelete, 0).one();
+ if (null == recoveryServe || null == userRecipient) {
+ throw new GlobalException("下单失败,预约服务信息或收货地址信息异常!");
+ }
+ String address = userRecipient.getAddress();
+ if (address.contains(Constants.PROVINCE) && address.contains(Constants.MARKET)) {
+
+ }
+ UserOrderRequest userOrderRequest = new UserOrderRequest();
+ userOrderRequest.setOrderNumber(orderRequest.getOrderNumber());
+ userOrderRequest.setServeId(orderRequest.getServeId());
+ userOrderRequest.setReservationName(orderRequest.getReservationName());
+ userOrderRequest.setReservationPhone(orderRequest.getReservationPhone());
+ userOrderRequest.setAddressId(orderRequest.getAddressId());
+ userOrderRequest.setTime(orderRequest.getTime());
+ userOrderRequest.setReservationRemark(orderRequest.getReservationRemark());
+ userOrderRequest.setLongitude(orderRequest.getLongitude());
+ userOrderRequest.setLatitude(orderRequest.getLatitude());
+ userOrderRequest.setSubsidy(orderRequest.getSubsidy());
+ userOrderRequest.setDefaultPrice(recoveryServe.getDefaultPrice());
+ userOrderRequest.setServeName(recoveryServe.getServeName());
+ userOrderRequest.setAddress(userRecipient.getAddress());
+ userOrderRequest.setAddressDetail(userRecipient.getAddressDetail());
+ userOrderRequest.setUserId(userId);
+ return orderClient.placeOrder(userOrderRequest).getData();
+
+ }
+
+ @Override
+ public String orderEstimate(OrderRequest orderRequest, Integer userid) {
+ Integer serveId = orderRequest.getServeId();
+ orderRequest.setOrderNumber(String.valueOf(SNOW_FLAKE_ID_WORKER.nextId()));
+ Integer addressId = orderRequest.getAddressId();
+ // 下单相关信息
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
+ .eq(RecoveryServe::getIsDelete, 0).one();
+ RecoveryServePrice price = servePriceService.lambdaQuery()
+ .eq(RecoveryServePrice::getRecoveryServeId, serveId)
+ .eq(RecoveryServePrice::getCity, orderRequest.getCity())
+ .eq(RecoveryServePrice::getIsDelete, 0).one();
+ if (null == recoveryServe) {
+ throw new GlobalException("下单失败,预约服务信息或收货地址信息异常!");
+ }
+ UserOrderRequest userOrderRequest = new UserOrderRequest();
+ if (null != orderRequest.getAddressId()) {
+ UserRecipient userRecipient = userRecipientService.lambdaQuery().eq(UserRecipient::getId, addressId)
+ .eq(UserRecipient::getIsDelete, 0).one();
+ userOrderRequest.setAddress(userRecipient.getAddress());
+ userOrderRequest.setAddressDetail(userRecipient.getAddressDetail());
+ } else {
+ userOrderRequest.setAddressDetail(orderRequest.getFillAddress());
+ }
+ userOrderRequest.setOrderNumber(orderRequest.getOrderNumber());
+ userOrderRequest.setServeId(orderRequest.getServeId());
+ userOrderRequest.setReservationName(orderRequest.getReservationName());
+ userOrderRequest.setReservationPhone(orderRequest.getReservationPhone());
+ userOrderRequest.setAddressId(orderRequest.getAddressId());
+ userOrderRequest.setTime(orderRequest.getTime());
+ userOrderRequest.setReservationRemark(orderRequest.getReservationRemark());
+ userOrderRequest.setLongitude(orderRequest.getLongitude());
+ userOrderRequest.setLatitude(orderRequest.getLatitude());
+ userOrderRequest.setSubsidy(orderRequest.getSubsidy());
+ // 城市回收价
+ if (null == price) {
+ userOrderRequest.setDefaultPrice(recoveryServe.getDefaultPrice());
+ } else {
+ userOrderRequest.setDefaultPrice(price.getRecoveryPrice());
+ }
+ userOrderRequest.setServeName(recoveryServe.getServeName());
+ userOrderRequest.setUserId(userid);
+ return orderClient.orderEstimate(userOrderRequest).getData();
+ }
+
}
--
Gitblit v1.7.1