package com.kidgrow.oprationcenter.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.kidgrow.advisory.model.AdvisoryDoctorSummary; import com.kidgrow.advisory.model.AdvisorySummary; import com.kidgrow.common.annotation.LoginUser; import com.kidgrow.common.controller.BaseController; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.model.SysUser; import com.kidgrow.common.utils.StringUtils; import com.kidgrow.oprationcenter.model.AdvisoryDoctorInfo; import com.kidgrow.oprationcenter.service.IAdvisoryDoctorInfoService; import com.kidgrow.oprationcenter.service.IAppointmentTimeService; import com.kidgrow.user.feign.DoctorAnswerUserRelationService; import com.kidgrow.user.model.DoctorAnswerUserRelation; import com.kidgrow.user.model.UserInfo; import com.kidgrow.usercenter.feign.SysDoctorService; import com.kidgrow.usercenter.feign.SysHospitalService; import com.kidgrow.usercenter.model.SysDoctor; import com.kidgrow.usercenter.model.SysHospital; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description:
* @Project:
* @CreateDate: Created in 2021/3/1 14:44
* @Author: dougang */ @Slf4j @RestController @RequestMapping("/advisorydoctor") @Api(tags = "咨询医生表") public class AdvisoryDoctorInfoController extends BaseController { @Autowired private IAdvisoryDoctorInfoService advisoryDoctorInfoService; @Autowired private SysHospitalService sysHospitalService; @Autowired private IAppointmentTimeService appointmentTimeService; @Autowired private SysDoctorService doctorService; @Autowired private DoctorAnswerUserRelationService doctorAnswerUserRelationService; /** * 列表 */ @ApiOperation(value = "查询列表") @ApiImplicitParams({ @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping public PageResult list(@RequestParam Map params) { if (params.size() == 0) { params.put("page", 1); params.put("limit", 10); } return advisoryDoctorInfoService.findList(params); } /** * 删除 */ @ApiOperation(value = "删除") @DeleteMapping("/delete/{id}") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer") }) public ResultBody delete(@PathVariable Long id) { int v = advisoryDoctorInfoService.removeById(id); if (v > 0) { return ResultBody.ok().msg("删除成功"); } else { return ResultBody.failed().msg("删除失败"); } } /** * 新增or更新 */ @ApiOperation(value = "保存") @PostMapping @Transactional(rollbackFor = Exception.class) public ResultBody save(@RequestBody AdvisoryDoctorInfo advisoryDoctorInfo, BindingResult bindingResult) { List errMsg = new ArrayList<>(); if (bindingResult.hasErrors()) { for (ObjectError error : bindingResult.getAllErrors()) { errMsg.add(error.getDefaultMessage()); } return ResultBody.failed().msg(errMsg.toString()); } else { if (advisoryDoctorInfo.getId() == null) { Map map = new HashMap<>(); map.put("hospitalId", advisoryDoctorInfo.getHospitalId()); map.put("doctorId", advisoryDoctorInfo.getDoctorId()); List byObject = advisoryDoctorInfoService.findByObject(map); if (byObject.size() > 0) { return ResultBody.failed().msg("该医生已添加"); } } //查询医院坐标 Map map = new HashMap<>(16); map.put("id", advisoryDoctorInfo.getHospitalId()); ResultBody allByMap = sysHospitalService.findAllByMap(map); if (allByMap.getCode() == 0 && allByMap.getData() != null) { List list = JSONArray.parseArray(JSONObject.toJSONString(allByMap.getData()), SysHospital.class); if (list.size() > 0) { advisoryDoctorInfo.setLatitude(list.get(0).getLatitude()); advisoryDoctorInfo.setLongitude(list.get(0).getLongitude()); } } //查询医生信息 ResultBody byId = doctorService.findById(advisoryDoctorInfo.getDoctorId()); if (byId.getCode() != 0 || byId.getData() == null) { return ResultBody.failed().msg("未找到医生信息"); } SysDoctor doctor = JSONObject.parseObject(JSONObject.toJSONString(byId.getData()), SysDoctor.class); advisoryDoctorInfo.setTitle(doctor.getDoctorRank()); advisoryDoctorInfo.setIntroduction(doctor.getDoctorAbout()); advisoryDoctorInfo.setHead(doctor.getDoctorLogo()); advisoryDoctorInfo.setPrice(advisoryDoctorInfo.getPrice() * 100); boolean v = advisoryDoctorInfoService.saveOrUpdate(advisoryDoctorInfo); map.clear(); map.put("list", advisoryDoctorInfo.getAppointment()); map.put("id", advisoryDoctorInfo.getId()); boolean save = appointmentTimeService.save(map); if (v && save) { //绑定C段用户 UserInfo userByPhone = advisoryDoctorInfoService.getUserByPhone(advisoryDoctorInfo.getBindPhone()); if (userByPhone != null) { DoctorAnswerUserRelation dar = new DoctorAnswerUserRelation(); dar.setUserId(userByPhone.getUserId()); dar.setDoctorId(String.valueOf(advisoryDoctorInfo.getId())); ResultBody resultBody = doctorAnswerUserRelationService.updateByDoctorId(dar); if (resultBody.getCode() == 0) { return ResultBody.ok().data(advisoryDoctorInfo).msg("保存成功"); } } return ResultBody.ok().data(advisoryDoctorInfo).msg("保存成功,绑定失败"); } else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); ResultBody.failed().msg("保存失败"); } } return null; } /** * 通过ID查询医生信息,C端接口 */ @ApiOperation(value = "查询") @PostMapping("/getDoctorById") public ResultBody getDoctorById(@RequestBody Map map) { return advisoryDoctorInfoService.getDoctorById(map); } /** * 通过ID查询医生信息,C端接口 */ @ApiOperation(value = "查询") @PostMapping("/updateDoctorInfo") public ResultBody updateDoctorInfo(@RequestBody Map map) { return advisoryDoctorInfoService.updateDoctorInfo(map); } /** * 通过ID查询筛查 咨询医生信息,C端接口 */ @ApiOperation(value = "查询") @PostMapping("/getSreeningAdvisoryDoctor") public ResultBody getSreeningAdvisoryDoctor(@RequestParam("hospitalId") String hospitalId) { return advisoryDoctorInfoService.getSreeningAdvisoryDoctorList(Long.parseLong(hospitalId)); } /** * 通过咨询医生信息,C端接口 */ @ApiOperation(value = "查询") @PostMapping("/getAdvisoryDoctorList") public ResultBody getAdvisoryDoctorList(@RequestBody Map map) { return advisoryDoctorInfoService.getAdvisoryDoctorList(map); } /** * 获取咨询列表 */ @ApiOperation(value = "查询") @ApiImplicitParams({ @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping("/findAll") public PageResult findAll(@RequestParam Map map) { return advisoryDoctorInfoService.findAll(map); } /** * 通过咨询医生信息,C端接口 */ @ApiOperation(value = "查询") @GetMapping("/update/{id}") public ResultBody update(@PathVariable String id) { return advisoryDoctorInfoService.updateStatusByService(id); } /** * 通过咨询医生信息,C端接口 */ @ApiOperation(value = "查询") @PostMapping("/querUserByPhone") public ResultBody querUserByPhone(@RequestBody Map map) { String phone = MapUtils.getString(map, "bindPhone"); if (StringUtils.isBlank(phone)) { return ResultBody.failed().msg("参数错误"); } return ResultBody.ok().data(advisoryDoctorInfoService.getUserByPhone(phone)); } /** * 微信退款 */ @ApiOperation(value = "微信退款") @PostMapping("/refund") public ResultBody refund(@RequestBody Map map, @LoginUser SysUser user) { String advisoryId = MapUtils.getString(map, "advisoryId"); if (StringUtils.isBlank(advisoryId)) { return ResultBody.failed().msg("参数错误"); } map.put("userId", user.getId()); return ResultBody.ok().data(advisoryDoctorInfoService.refund(map)); } /** * 咨询统计数据 */ @ApiOperation(value = "咨询统计数据") @PostMapping("/summaryByDate") public PageResult summaryByDate(@RequestParam Map map) { return advisoryDoctorInfoService.summaryBate(map); } /** * 咨询医生统计数据 */ @ApiOperation(value = "咨询统计数据") @PostMapping("/summaryDoctorByDate") public PageResult summaryDoctorByDate(@RequestParam Map map) { return advisoryDoctorInfoService.summaryDoctorByBate(map); } }