From 94ae02e6f73b7011f0fcf6acff8636341d35351d Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 15 一月 2025 17:24:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java | 147 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 132 insertions(+), 15 deletions(-)
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java
index 4214a41..4fc037f 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java
@@ -1,25 +1,42 @@
package com.ruoyi.user.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.admin.api.entity.Prize;
import com.ruoyi.admin.api.feignClient.AdminClient;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
-import com.ruoyi.user.entity.Order;
-import com.ruoyi.user.entity.ServeRecord;
+import com.ruoyi.common.core.utils.GaoDeMapUtil;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.vo.CityInfoVO;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.entity.Order;
+import com.ruoyi.order.api.entity.ServeRecord;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.feignClient.ServeRecordClient;
+import com.ruoyi.system.api.model.LoginUserInfo;
+import com.ruoyi.user.entity.RecoveryServe;
+import com.ruoyi.user.entity.RecoveryServePrice;
import com.ruoyi.user.request.OrderRequest;
import com.ruoyi.user.service.OrderService;
-import com.ruoyi.user.service.ServeRecordService;
+import com.ruoyi.user.service.RecoveryServePriceService;
+import com.ruoyi.user.service.RecoveryServeService;
+import com.ruoyi.user.service.UserService;
import com.ruoyi.user.vo.OrderDetailVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
/**
* <p>
@@ -35,31 +52,94 @@
public class OrderController {
@Resource
- private OrderService orderService;
+ private RecoveryServeService recoveryServeService;
@Resource
- private ServeRecordService serveRecordService;
+ private RecoveryServePriceService recoveryServePriceService;
@Resource
private AdminClient adminClient;
+ @Resource
+ private TokenService tokenService;
+ @Resource
+ private OrderClient orderClient;
+ @Resource
+ private OrderService orderService;
+ @Resource
+ private ServeRecordClient serveRecordClient;
+
+ @GetMapping("/orderList")
+ @ApiOperation(value = "订单列表", tags = {"用户端-订单"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "状态(-1:全部;0:派单中;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)", name = "state", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<IPage<Order>> orderList(@RequestParam Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ IPage<Order> data = orderClient.orderListByUser(loginUser.getUserid(), state, pageNum, pageSize).getData();
+ List<Integer> ids = data.getRecords().stream().map(Order::getServeId).collect(Collectors.toList());
+ if (!ids.isEmpty()) {
+ List<RecoveryServe> serveList = recoveryServeService.lambdaQuery()
+ .in(RecoveryServe::getId, ids).eq(RecoveryServe::getIsDelete, 0).list();
+ Map<Integer, String> map = serveList.stream().collect(Collectors.toMap(RecoveryServe::getId,
+ mw -> Optional.ofNullable(mw.getCover()).orElse("")));
+ for (Order order : data.getRecords()) {
+
+ Integer serveId = order.getServeId();
+ order.setCover(map.get(serveId));
+ }
+ }
+ return R.ok(data);
+ }
+
+ @GetMapping("/estimate")
+ @ApiOperation(value = "在线评估", tags = {"用户端-订单"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "回收服务id", name = "orderId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "所在城市code", name = "city", dataType = "String")
+ })
+ public R<BigDecimal> estimate(@RequestParam String orderId, String city) {
+ Order order = orderClient.detail(orderId).getData();
+// RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
+// .eq(RecoveryServe::getId, order.getServeId())
+// .eq(RecoveryServe::getIsDelete, 0).one();
+// BigDecimal money = recoveryServe.getDefaultPrice();
+// if (StringUtils.isNotBlank(city)) {
+// CityInfoVO info = GaoDeMapUtil.getAddressInfo(city).getDatas();
+// RecoveryServePrice price = recoveryServePriceService.lambdaQuery()
+// .eq(RecoveryServePrice::getRecoveryServeId, recoveryServe.getId())
+// .eq(RecoveryServePrice::getCity, info.getCode())
+// .eq(RecoveryServePrice::getIsDelete, Constants.ZERO).one();
+// if (null != price) {
+// money = price.getRecoveryPrice();
+// }
+// }
+ return R.ok(order.getServePrice());
+ }
@GetMapping("/detail")
@ApiOperation(value = "订单详情", tags = {"用户端-订单"})
@ApiImplicitParams({
@ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true)
})
- public R<OrderDetailVO> detail(@RequestParam Integer orderId) {
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
+ public R<OrderDetailVO> detail(@RequestParam String orderId) {
+ Order order = orderClient.detail(orderId).getData();
if (null == order) {
- throw new GlobalException("订单状态异常!");
+ throw new GlobalException("订单不存在或已删除!");
}
OrderDetailVO orderDetail = new OrderDetailVO(order);
if (Constants.THREE.equals(order.getState())) {
- ServeRecord record = serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, orderId)
- .eq(ServeRecord::getIsDelete, 0).one();
- if (null == record) {
- throw new GlobalException("暂未上传家电照片!");
+ ServeRecord serveRecord = serveRecordClient.serveRecordByOrderId(orderId).getData();
+ if (null != serveRecord) {
+ orderDetail.setPhoto(serveRecord.getPhoto());
}
- orderDetail.setPhoto(record.getPhoto());
}
+ R<String> workPic = adminClient.getWorkPic(order.getServerId());
+ orderDetail.setWorkPic(workPic.getMsg());
return R.ok(orderDetail);
}
@@ -85,10 +165,47 @@
return R.ok(orderService.obtainAllowance(adminClient.prizeList().getData()));
}
+ /**
+ * 抽奖获取津贴
+ *
+ * @return 奖品列表
+ */
+ @GetMapping("/allowanceMoney")
+ @ApiOperation(value = "补充订单津贴金额", tags = {"用户端-订单"})
+ public R<Object> allowanceMoney(@RequestParam("orderId") String orderId, @RequestParam("prizeId") String prizeId) {
+ Prize data = adminClient.prizeDetail(prizeId).getData();
+ if (null == data) {
+ return R.fail(adminClient.prizeDetail(prizeId).getMsg());
+ }
+ String prizeMoney;
+ if (data.getPrizeName().contains(Constants.SUBSIDY_MONEY)) {
+ prizeMoney = data.getPrizeName().substring(Constants.ONE);
+ } else {
+ prizeMoney = "0";
+ }
+ return R.ok(orderClient.supplementAllowance(orderId, prizeMoney).getData());
+ }
+
+ @PostMapping("/orderEstimate")
+ @ApiOperation(value = "下单评估,生成预订单信息", tags = {"用户端-订单"})
+ public R<String> orderEstimate(@RequestBody OrderRequest orderRequest) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ String result = orderService.orderEstimate(orderRequest, loginUser.getUserid());
+ return R.ok(result, "");
+ }
+
@PostMapping("/placeOrder")
- @ApiOperation(value = "下单", tags = {"用户端-订单"})
+ @ApiOperation(value = "用户下单", tags = {"用户端-订单"})
public R<String> placeOrder(@RequestBody OrderRequest orderRequest) {
- return R.ok();
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ Boolean result = orderService.placeOrder(orderRequest, loginUser.getUserid());
+ return result ? R.ok() : R.fail();
}
}
--
Gitblit v1.7.1