| | |
| | | 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.common.core.utils.StringUtils; |
| | | 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.Order; |
| | | import com.ruoyi.user.entity.ServeRecord; |
| | | 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.vo.OrderDetailVO; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | |
| | | 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> |
| | |
| | | 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 = "所在城市", 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)) { |
| | | RecoveryServePrice price = recoveryServePriceService.lambdaQuery() |
| | | .eq(RecoveryServePrice::getRecoveryServeId, recoveryServe.getId()) |
| | | .eq(RecoveryServePrice::getCity, city).one(); |
| | | if (null != price) { |
| | | money = price.getRecoveryPrice(); |
| | | } |
| | | } |
| | | return R.ok(money); |
| | | } |
| | | |
| | | @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()); |
| | | } |
| | | return R.ok(orderDetail); |
| | | } |
| | |
| | | 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("奖品信息获取失败!"); |
| | | } |
| | | return R.ok(orderClient.supplementAllowance(orderId, data.getPrizeName()).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 = {"用户端-订单"}) |
| | | public R<String> placeOrder(@RequestBody OrderRequest orderRequest) { |
| | |
| | | Boolean result = orderService.placeOrder(orderRequest, loginUser.getUserid()); |
| | | return result ? R.ok() : R.fail(); |
| | | } |
| | | |
| | | |
| | | } |