|  |  |  | 
|---|
|  |  |  | package com.ruoyi.order.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson2.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 
|---|
|  |  |  | import com.ruoyi.account.api.feignClient.UserAddressClient; | 
|---|
|  |  |  | import com.ruoyi.account.api.model.UserAddress; | 
|---|
|  |  |  | import com.ruoyi.common.core.domain.R; | 
|---|
|  |  |  | import com.ruoyi.common.core.web.controller.BaseController; | 
|---|
|  |  |  | import com.ruoyi.common.core.web.page.TableDataInfo; | 
|---|
|  |  |  | import com.ruoyi.common.security.service.TokenService; | 
|---|
|  |  |  | import com.ruoyi.order.enums.OrderStatus; | 
|---|
|  |  |  | import com.ruoyi.order.model.Order; | 
|---|
|  |  |  | import com.ruoyi.order.service.CommissionService; | 
|---|
|  |  |  | import com.ruoyi.order.service.OrderService; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | import vo.OrderDetailVO; | 
|---|
|  |  |  | import com.ruoyi.order.vo.OrderDetailVO; | 
|---|
|  |  |  | import com.ruoyi.order.vo.OrderVO; | 
|---|
|  |  |  | import com.ruoyi.other.api.domain.BaseSetting; | 
|---|
|  |  |  | import com.ruoyi.other.api.feignClient.BaseSettingClient; | 
|---|
|  |  |  | import com.ruoyi.system.api.model.LoginUser; | 
|---|
|  |  |  | import io.swagger.annotations.Api; | 
|---|
|  |  |  | import io.swagger.annotations.ApiImplicitParam; | 
|---|
|  |  |  | import io.swagger.annotations.ApiImplicitParams; | 
|---|
|  |  |  | import io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import model.Order; | 
|---|
|  |  |  | import io.swagger.annotations.*; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | @Api(tags = "订单") | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping("/order") | 
|---|
|  |  |  | public class OrderController { | 
|---|
|  |  |  | public class OrderController extends BaseController { | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | TokenService tokenService; | 
|---|
|  |  |  | private TokenService tokenService; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private UserAddressClient addressClient; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private CommissionService commissionService; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private BaseSettingClient baseSettingClient; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | @ApiImplicitParams({ | 
|---|
|  |  |  | @ApiImplicitParam(value = "订单状态", name = "status", required = true, dataType = "int"), | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @GetMapping("/getMyOrderList/{status}") | 
|---|
|  |  |  | public R<List<OrderVO>> getMyOrderList(@PathVariable("status") Integer status){ | 
|---|
|  |  |  | @GetMapping("/getMyOrderList") | 
|---|
|  |  |  | public TableDataInfo<OrderVO> getMyOrderList(@ApiParam("订单状态") Integer status){ | 
|---|
|  |  |  | startPage(); | 
|---|
|  |  |  | LoginUser loginUserApplet = tokenService.getLoginUserApplet(); | 
|---|
|  |  |  | return R.ok(orderService.selectOrderListByUserId(status, loginUserApplet.getUserid())); | 
|---|
|  |  |  | return getDataTable(orderService.selectOrderListByUserId(status, loginUserApplet.getUserid())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | @ApiImplicitParams({ | 
|---|
|  |  |  | @ApiImplicitParam(value = "订单号", name = "code", required = true, dataType = "String"), | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @GetMapping("/writeOff/{code}") | 
|---|
|  |  |  | public R<Void> writeOff(@PathVariable("code") String code){ | 
|---|
|  |  |  | @GetMapping("/writeOff/{code}/{shopId}") | 
|---|
|  |  |  | public R<Void> writeOff(@PathVariable("code") String code, @PathVariable("shopId") Integer shopId){ | 
|---|
|  |  |  | orderService.writeOff(code, shopId); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @GetMapping("/cancel/{orderId}") | 
|---|
|  |  |  | public R<Void> cancel(@PathVariable("orderId") Long orderId){ | 
|---|
|  |  |  | orderService.update(new LambdaUpdateWrapper<Order>() | 
|---|
|  |  |  | .eq(Order::getId, orderId) | 
|---|
|  |  |  | .set(Order::getOrderStatus, OrderStatus.CANCELLED.getCode())); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 确认收货 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "确认收货", tags = {"小程序-个人中心-我的订单-确认收货"}) | 
|---|
|  |  |  | @ApiImplicitParams({ | 
|---|
|  |  |  | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @GetMapping("/confirm/{orderId}") | 
|---|
|  |  |  | public R<Void> confirm(@PathVariable("orderId") Long orderId){ | 
|---|
|  |  |  | boolean update = orderService.update(new LambdaUpdateWrapper<Order>() | 
|---|
|  |  |  | .eq(Order::getId, orderId) | 
|---|
|  |  |  | .eq(Order::getOrderStatus, OrderStatus.PENDING_RECEIPT.getCode()) | 
|---|
|  |  |  | .set(Order::getOrderStatus, OrderStatus.COMPLETED.getCode())); | 
|---|
|  |  |  | if(!update){ | 
|---|
|  |  |  | return R.fail("订单状态异常"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(5); | 
|---|
|  |  |  | if (R.isError(baseSettingR)) { | 
|---|
|  |  |  | return R.fail("售后设置获取失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | BaseSetting baseSetting = baseSettingR.getData(); | 
|---|
|  |  |  | if (baseSetting == null) { | 
|---|
|  |  |  | return R.fail("售后设置获取失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String content = baseSetting.getContent(); | 
|---|
|  |  |  | JSONObject jsonObject = JSONObject.parseObject(content); | 
|---|
|  |  |  | Long days = jsonObject.getLong("days"); | 
|---|
|  |  |  | commissionService.addToCommissionDelayQueue(orderId, LocalDateTime.now().plusDays(days)); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 更换收货地址 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "更换收货地址", tags = {"小程序-个人中心-我的订单-更换收货地址"}) | 
|---|
|  |  |  | @ApiImplicitParams({ | 
|---|
|  |  |  | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @GetMapping("/changeAddress") | 
|---|
|  |  |  | public R<Void> changeAddress(@RequestParam("orderId") Long orderId, @RequestParam("addressId") Long addressId){ | 
|---|
|  |  |  | R<UserAddress> userAddressR = addressClient.getUserAddressById(addressId); | 
|---|
|  |  |  | if(R.isError(userAddressR)){ | 
|---|
|  |  |  | return R.fail("收货地址不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | UserAddress userAddress = userAddressR.getData(); | 
|---|
|  |  |  | String addressJson = JSONObject.toJSONString(userAddress); | 
|---|
|  |  |  | orderService.update(new LambdaUpdateWrapper<Order>() | 
|---|
|  |  |  | .eq(Order::getId, orderId) | 
|---|
|  |  |  | .set(Order::getAddressJson, addressJson)); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 更新订单状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "更新订单状态", tags = {"后台-订单管理-更新订单状态"}) | 
|---|
|  |  |  | @ApiImplicitParams({ | 
|---|
|  |  |  | @ApiImplicitParam(value = "订单对象", name = "order", required = true, dataType = "Order"), | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @PostMapping("/updateOrderStatus") | 
|---|
|  |  |  | public R<Void> updateOrderStatus(@RequestBody Order order){ | 
|---|
|  |  |  | Order order1 = orderService.getById(order.getId()); | 
|---|
|  |  |  | order1.setOrderStatus(order.getOrderStatus()); | 
|---|
|  |  |  | orderService.updateById(order1); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 预约技师 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping("/subscribe") | 
|---|
|  |  |  | public R<Void> subscribe(@RequestParam(value = "id", required = false) Long id ,@RequestParam(value = "technicianId", required = false) Integer technicianId){ | 
|---|
|  |  |  | Order order = orderService.getById(id); | 
|---|
|  |  |  | order.setTechnicianId(technicianId); | 
|---|
|  |  |  | orderService.updateById(order); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|