| | |
| | | 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.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.system.api.model.LoginUser; |
| | | 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.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.Objects; |
| | | 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 = "所在城市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); |
| | | } |
| | | |
| | |
| | | */ |
| | | @GetMapping("/prizeList") |
| | | @ApiOperation(value = "获取奖品列表", tags = {"用户端-订单"}) |
| | | public R<List<Prize>> prizeList() { |
| | | return R.ok(adminClient.prizeList().getData()); |
| | | public R<List<Prize>> prizeList(@RequestParam("serveId") String serveId) { |
| | | return R.ok(adminClient.prizeList(Integer.valueOf(serveId)).getData()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @GetMapping("/allowance") |
| | | @ApiOperation(value = "抽奖获取津贴", tags = {"用户端-订单"}) |
| | | public R<Object> obtainAllowance() { |
| | | return R.ok(orderService.obtainAllowance(adminClient.prizeList().getData())); |
| | | public R<Object> obtainAllowance(@RequestParam("serveId") String serveId) { |
| | | return R.ok(orderService.obtainAllowance(adminClient.prizeList(Integer.valueOf(serveId)).getData())); |
| | | } |
| | | |
| | | /** |
| | | * 抽奖获取津贴 |
| | | * |
| | | * @return 奖品列表 |
| | | */ |
| | | @GetMapping("/allowanceMoney") |
| | | @ApiOperation(value = "补充订单津贴金额", tags = {"用户端-订单"}) |
| | | public R<Object> allowanceMoney(@RequestParam("orderId") String orderId, |
| | | @RequestParam("prizeId") String prizeId, |
| | | @RequestParam("serveId") String serveId) { |
| | | Prize data = adminClient.prizeDetail(prizeId).getData(); |
| | | if (null == data) { |
| | | return R.fail(adminClient.prizeDetail(prizeId).getMsg()); |
| | | } |
| | | String prizeMoney; |
| | | if (data.getPrizeType() == 1) { |
| | | // 查询服务回收补贴金 |
| | | RecoveryServe recoveryServe = recoveryServeService.getById(serveId); |
| | | prizeMoney = recoveryServe.getRecycleSubsidy().toString(); |
| | | } 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") |
| | |
| | | return result ? R.ok() : R.fail(); |
| | | } |
| | | |
| | | /** |
| | | * 领取补贴金 |
| | | * |
| | | */ |
| | | @GetMapping("/receivingSubsidies") |
| | | @ApiOperation(value = "领取补贴金", tags = {"用户端-订单-领取补贴金[2.0]"}) |
| | | public R<Object> receivingSubsidies(@RequestParam("serveId") String serveId,@RequestParam("orderId") String orderId) { |
| | | // 查询补贴金 |
| | | RecoveryServe recoveryServe = recoveryServeService.getById(serveId); |
| | | if (Objects.isNull(recoveryServe)) { |
| | | return R.fail("该服务不存在!"); |
| | | } |
| | | orderClient.receiving(orderId,recoveryServe.getRecycleSubsidy()); |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |