From 03c6572c7918beaa20365e69c9694a11f0d9948a Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期一, 01 七月 2024 10:13:26 +0800
Subject: [PATCH] feat: 代码初始化

---
 ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java |   84 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 75 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..5adde65 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,21 @@
 
 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.user.entity.Order;
+import com.ruoyi.user.entity.RecoveryServe;
+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.RecoveryServeService;
+import com.ruoyi.user.service.UserRecipientService;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Random;
 import java.util.stream.Collectors;
@@ -22,6 +32,11 @@
 @Service
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
 
+    @Resource
+    private UserRecipientService userRecipientService;
+    @Resource
+    private RecoveryServeService recoveryServeService;
+
     @Override
     public Object obtainAllowance(List<Prize> prizeList) {
         // 过滤中奖概率为空的奖品
@@ -29,18 +44,69 @@
         // 转盘逻辑
         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) {
+        String orderNumber = orderRequest.getOrderNumber();
+        Integer serveId = orderRequest.getServeId();
+        String reservationName = orderRequest.getReservationName();
+        String reservationPhone = orderRequest.getReservationPhone();
+        Integer addressId = orderRequest.getAddressId();
+        Date time = orderRequest.getTime();
+        String reservationRemark = orderRequest.getReservationRemark();
+        Double longitude = orderRequest.getLongitude();
+        Double latitude = orderRequest.getLatitude();
+        BigDecimal subsidy = orderRequest.getSubsidy();
+        // 下单相关信息
+        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("下单失败,预约服务信息或收货地址信息异常!");
+        }
+        // 订单信息
+        Order order = new Order();
+        order.setOrderNumber(orderNumber);
+        order.setServeId(serveId);
+        order.setServeName(recoveryServe.getServeName());
+        order.setServePrice(recoveryServe.getDefaultPrice());
+        order.setUserId(userId);
+        order.setReservationName(reservationName);
+        order.setReservationPhone(reservationPhone);
+        order.setReservationAddress(userRecipient.getAddress());
+        order.setTime(time);
+        order.setReservationRemark(reservationRemark);
+        order.setOrderMoney(recoveryServe.getDefaultPrice().add(new BigDecimal(String.valueOf(subsidy))));
+        order.setState(Constants.ZERO);
+        order.setType(Constants.ZERO);
+        order.setLongitude(longitude);
+        order.setLatitude(latitude);
+        order.setIsWithdrawal(Constants.ZERO);
+        order.setSubsidy(subsidy);
+        order.setAddress(userRecipient.getAddressDetail());
+        return this.save(order);
+
+    }
+
 }

--
Gitblit v1.7.1