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.merchant.domain.bo.OrderBo;
import com.pz.merchant.domain.vo.OrderInfoVO;
import com.pz.merchant.service.IEmployeesService;
import com.pz.system.domain.bo.AccompanyAddressBo;
import com.pz.system.domain.vo.AccompanyDemandVo;
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")
@SaIgnore
public class AccompanyEmployeesAccompanyController extends BaseController {
private final ITotalOrderService totalOrderService;
private final IEmployeesService employeesService;
private final IDbmyOrderService dbmyOrderService;
/**
* 需求广场 列表
*
* @param page 分页参数
* @return 未分配陪诊员的业务订单
*/
@GetMapping("/demands")
public TableDataInfo<AccompanyDemandVo> demandSquareList(PageQuery page) {
return totalOrderService.queryUndistributedOrder(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);
}
@PutMapping("/cancel")
public R<Boolean> cancelOrder() {
return null;
}
/**
* 设置代办买药 陪诊员地址
*
* @param bo 地址
* @return 操作结果
*/
@PutMapping("/setAddress")
public R<Boolean> updateAccompanyAddress(@Validated(EditGroup.class) @RequestBody AccompanyAddressBo bo) {
return R.ok(dbmyOrderService.updateAccompanyAddress(bo));
}
}