package com.ruoyi.web.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.TSysOrderDto;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TSysAppUser;
import com.ruoyi.system.model.TSysOrder;
import com.ruoyi.system.model.TSysOrderGoods;
import com.ruoyi.system.query.TSysAppUserQuery;
import com.ruoyi.system.query.TSysOrderQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.TSysOrderDetailVo;
import com.ruoyi.system.vo.TSysOrderPageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import java.util.Objects;
/**
*
* 订单管理 前端控制器
*
*
* @author xiaochen
* @since 2025-08-20
*/
@RestController
@RequestMapping("/sys-order")
@Api(tags = "订单管理")
public class TSysOrderController {
private final TSysOrderService sysOrderService;
private final TokenService tokenService;
private final TCrmClinicService crmClinicService;
private final TSysAppUserService sysAppUserService;
private final TSysOrderGoodsService sysOrderGoodsService;
private final ISysUserService sysUserService;
@Autowired
public TSysOrderController(TokenService tokenService, TSysOrderService sysOrderService, TCrmClinicService crmClinicService, TSysAppUserService sysAppUserService, TSysOrderGoodsService sysOrderGoodsService, ISysUserService sysUserService) {
this.sysOrderService = sysOrderService;
this.tokenService = tokenService;
this.crmClinicService = crmClinicService;
this.sysAppUserService = sysAppUserService;
this.sysOrderGoodsService = sysOrderGoodsService;
this.sysUserService = sysUserService;
}
/**
* 获取诊所患者诊疗 订单列表
*/
@ApiOperation(value = "获取诊所患者诊疗订单列表")
@PostMapping(value = "/pageList")
public R> pageList(@RequestBody TSysOrderQuery query) {
SysUser user = tokenService.getLoginUser().getUser();
Integer roleType = user.getRoleType();
if(roleType == 5){
// 诊所
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
.eq(TCrmClinic::getUserId, user.getUserId())
.last("LIMIT 1"));
// ---
if(Objects.isNull(crmClinic)){
SysUser sysUser = sysUserService.selectUserById(user.getUserId());
crmClinic = crmClinicService.getById(sysUser.getObjectId());
}
query.setClinicId(crmClinic.getId());
}
return R.ok(sysOrderService.pageList(query));
}
@ApiOperation(value = "获取诊所患者诊疗--搜索用户")
@PostMapping(value = "/userList")
public R> pageList(@RequestBody TSysAppUserQuery query) {
LambdaQueryWrapper eq = new LambdaQueryWrapper().eq(TSysAppUser::getStatus, 1);
if(query.getNickName() != null && !query.getNickName().isEmpty()){
eq.and(e->e.like(TSysAppUser::getNickName, query.getNickName()).or().like(TSysAppUser::getPhone, query.getNickName()));
}
// if(query.getPhone() != null && !query.getPhone().isEmpty()){
// eq.like(TSysAppUser::getPhone, query.getPhone());
// }
List list = sysAppUserService.list(eq);
return R.ok(list);
}
@ApiOperation(value = "诊所患者诊疗--确认添加")
@PostMapping(value = "/add")
public R add(@RequestBody @Valid TSysOrderDto dto) {
SysUser user = tokenService.getLoginUser().getUser();
Integer roleType = user.getRoleType();
if(roleType == 5){
// 诊所
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
.eq(TCrmClinic::getUserId, user.getUserId())
.last("LIMIT 1"));
// ---
if(Objects.isNull(crmClinic)){
SysUser sysUser = sysUserService.selectUserById(user.getUserId());
crmClinic = crmClinicService.getById(sysUser.getObjectId());
}
sysOrderService.add(dto,crmClinic,user.getNickName(),user.getUserId().toString());
return R.ok("添加成功");
}
return R.fail("添加失败");
}
@ApiOperation(value = "诊所患者诊疗--详情")
@GetMapping(value = "/detail/{id}")
public R detail(@PathVariable String id) {
TSysOrder tSysOrder = sysOrderService.getById(id);
TSysOrderDetailVo detail = new TSysOrderDetailVo();
detail.setId(tSysOrder.getId());
String appUserId = tSysOrder.getAppUserId();
TSysAppUser appUser = sysAppUserService.getById(appUserId);
detail.setUserName(appUser.getNickName());
detail.setCheckTime(tSysOrder.getCheckTime());
detail.setTotalMoney(tSysOrder.getTotalMoney());
List list = sysOrderGoodsService.list(new LambdaQueryWrapper().eq(TSysOrderGoods::getOrderId, id));
detail.setList(list);
return R.ok(detail);
}
}