package com.pz.accompany; import cn.dev33.satoken.annotation.SaIgnore; import com.pz.common.core.controller.BaseController; import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.R; import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.validate.EditGroup; import com.pz.common.exception.ServiceException; import com.pz.merchant.domain.bo.OrderBo; import com.pz.merchant.domain.vo.OrderInfoVO; import com.pz.merchant.service.IEmployeesService; import com.pz.merchant.service.ISonOrderService; import com.pz.merchant.service.impl.SonOrderServiceBuilder; import com.pz.system.domain.bo.AccompanyAddressBo; import com.pz.system.domain.bo.OrderCommonBo; import com.pz.system.domain.bo.OrderFinishedBo; import com.pz.system.domain.vo.AccompanyDemandVo; import com.pz.system.domain.vo.OrderCommonVo; import com.pz.system.service.IDbmyOrderService; import com.pz.system.service.ITotalOrderService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; /** * 陪诊员端[小程序] * <p>created in 2023/9/13 16:57 * * @author WangMin * @version 1.0 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("app/accompany") public class AccompanyController extends BaseController { private final ITotalOrderService totalOrderService; private final IEmployeesService employeesService; private final IDbmyOrderService dbmyOrderService; private final SonOrderServiceBuilder sonOrderServiceBuilder; /** * 需求广场 列表 * * @param page 分页参数 * @return 未分配陪诊员的业务订单 */ @GetMapping("/demands") public TableDataInfo<AccompanyDemandVo> demandSquareList(@RequestHeader("city_id") Integer cityCode, PageQuery page) { return totalOrderService.queryUndistributedOrder(cityCode, page); } /** * 订单评价 列表 * * @param page 分页参数 * @return 未分配陪诊员的业务订单 */ @GetMapping("/orderComment") public TableDataInfo<AccompanyDemandVo> orderCommentList(@NotNull(message = "陪诊员ID不能为空") Integer emId, PageQuery page) { return totalOrderService.queryOrderComment(emId, page); } /** * 获取需求广场订单详细信息 * * @param orderId 订单ID * @return 待接单订单详情 */ public R<AccompanyDemandVo> getOrderInfoById(@NotNull(message = "订单ID不能为空") Long orderId) { return R.ok(totalOrderService.queryTotalOrderById(orderId)); } /** * 陪诊员接单 * * @param emId 陪诊员ID * @param orderId 主订单ID * @return 操作结果 */ @PostMapping("/order/receive") public R<Boolean> orderReceiving(@NotNull(message = "陪诊员ID不能为空") Integer emId, @NotNull(message = "订单ID不能为空") Integer orderId) { return R.ok(totalOrderService.orderReceiving(emId, orderId)); } /** * 查询员工所有订单 * * @param bo 筛选条件 * @param pageQuery 分页 * @return 订单列表 */ @GetMapping("/order/list") public TableDataInfo<OrderInfoVO> getAllOrders(OrderBo bo, PageQuery pageQuery) { return employeesService.queryAllOrder(bo, pageQuery); } /** * 陪诊员取消订单 * * @param bo 订单参数 * @return 操作结果 */ @PutMapping("/cancel") public R<Boolean> cancelOrder(@Validated(EditGroup.class) @RequestBody OrderCommonBo bo) { ISonOrderService orderService = sonOrderServiceBuilder.getSonOrderService(bo.getBusinessId()); if (orderService == null) { throw new ServiceException("业务异常"); } return R.ok(orderService.accompanyCancellationOfOrder(bo.getOrderId())); } /** * 陪诊员开始服务 * * @param bo 订单参数 * @return 操作结果 */ @PutMapping("/startService") public R<Boolean> startOrderService(@Validated(EditGroup.class) @RequestBody OrderCommonBo bo) { ISonOrderService orderService = sonOrderServiceBuilder.getSonOrderService(bo.getBusinessId()); if (orderService == null) { throw new ServiceException("业务异常"); } return R.ok(orderService.accompanyStartService(bo.getOrderId())); } /** * 陪诊员 完成服务 * * @param bo 订单参数 * @return 操作结果 */ @PutMapping("/finishedService") public R<Boolean> startOrderService(@Validated(EditGroup.class) @RequestBody OrderFinishedBo bo) { ISonOrderService orderService = sonOrderServiceBuilder.getSonOrderService(bo.getBusinessId()); if (orderService == null) { throw new ServiceException("业务异常"); } return R.ok(orderService.finishedService(bo)); } /** * 设置代办买药 陪诊员地址 * * @param bo 地址 * @return 操作结果 */ @PutMapping("/setAddress") public R<Boolean> updateAccompanyAddress(@Validated(EditGroup.class) @RequestBody AccompanyAddressBo bo) { return R.ok(dbmyOrderService.updateAccompanyAddress(bo)); } }