package com.lyms.talkonlineweb.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lyms.talkonlineweb.domain.LymsDoctor;
import com.lyms.talkonlineweb.domain.LymsHdepart;
import com.lyms.talkonlineweb.result.BaseResponse;
import com.lyms.talkonlineweb.service.LymsDoctorService;
import com.lyms.talkonlineweb.service.LymsHdepartService;
import com.lyms.talkonlineweb.util.Constant;
import com.lyms.talkonlineweb.util.JwtUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 医生管理
*/
@RestController
@RequestMapping("doctor")
public class DoctorController {
@Autowired
private LymsDoctorService lymsDoctorService;
/**
* 获取医生列表
* @param doctor
* @param current
* @param size
* @return
*/
@GetMapping("sltDoctorLst")
public BaseResponse sltDoctorLst(LymsDoctor doctor, int current, int size){
BaseResponse baseResponse=new BaseResponse();
Page<LymsDoctor> page=new Page<>(current,size);
Page<LymsDoctor> doctorPagePage=lymsDoctorService.page(page, Wrappers.query(doctor).orderByDesc("updated_time","createdtime"));
baseResponse.setObject(doctorPagePage);
return baseResponse;
}
/**
* 保存或更新医生信息
* @param doctor
* @return
*/
@PostMapping("saveDoctor")
public BaseResponse saveDoctor(@Validated LymsDoctor doctor, BindingResult result){
BaseResponse baseResponse=new BaseResponse();
baseResponse.setErrormsg("");
if(doctor.getDid()==null){
doctor.setCreatedtime(new Date());
LymsDoctor depart2=new LymsDoctor();
depart2.setDlogin(doctor.getDlogin());
List<LymsDoctor> dLst=lymsDoctorService.list(Wrappers.query(depart2));
if (dLst.size()>0) {
baseResponse.setErrormsg("不能创建重复账号");
baseResponse.setErrorcode(1);
return baseResponse;
}
}else{
doctor.setUpdatedTime(new Date());
}
if(result.hasErrors()){
baseResponse.setErrorcode(1);
result.getAllErrors().forEach(e->{
baseResponse.setErrormsg(baseResponse.getErrormsg()+e.getDefaultMessage());
});
return baseResponse;
}
boolean f=lymsDoctorService.saveOrUpdate(doctor);
baseResponse.setErrorcode(f==true?0:1);
return baseResponse;
}
/**
* 删除医生
* @param did
* @return
*/
@GetMapping("delDoctor")
public BaseResponse delDoctor(int did){
BaseResponse baseResponse=new BaseResponse();
boolean f=lymsDoctorService.removeById(did);
baseResponse.setErrorcode(f==true?0:1);
return baseResponse;
}
/**
* 医生登录
* @param doctor
* @return
*/
@PostMapping("loginDoctor")
public BaseResponse loginDoctor(@RequestBody LymsDoctor doctor){
BaseResponse baseResponse=new BaseResponse();
List<LymsDoctor> dLst=lymsDoctorService.list(Wrappers.query(doctor));
baseResponse.setErrorcode(1);
if (dLst.size()>0) {
doctor=dLst.get(0);
doctor.setDpasswd(null);
baseResponse.setObject(doctor);
String jwt = JwtUtils.createJWT("1", doctor.getDlogin(), Constant.JWT_TTL);
Map<String,Object> map=new HashMap<>();
map.put("doctor",doctor);
map.put("token",jwt);
baseResponse.setErrorcode(0);
baseResponse.setObject(map);
}
return baseResponse;
}
}