From 1442f149019ee0590389abd7a88a79c4d9b59034 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 27 五月 2025 18:23:34 +0800 Subject: [PATCH] bug修改 --- 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