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