package com.ekexiu.portal.service; import java.math.BigDecimal; import java.sql.Connection; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.jfw.apt.annotation.Autowrie; import org.jfw.apt.annotation.DefaultValue; import org.jfw.apt.annotation.Nullable; import org.jfw.apt.web.annotation.Path; import org.jfw.apt.web.annotation.operate.Get; import org.jfw.apt.web.annotation.operate.Post; import org.jfw.apt.web.annotation.param.JdbcConn; import org.jfw.util.PageQueryResult; import org.jfw.util.StringUtil; import org.jfw.util.exception.JfwBaseException; import com.ekexiu.portal.dao.ConsultDao; import com.ekexiu.portal.dao.ConsultRejectDao; import com.ekexiu.portal.dao.ProfessorDao; import com.ekexiu.portal.dao.TidingsDao; import com.ekexiu.portal.dao.UserDao; import com.ekexiu.portal.po.Consult; import com.ekexiu.portal.po.ConsultReject; import com.ekexiu.portal.po.Professor; import com.ekexiu.portal.po.Tidings; import com.ekexiu.portal.po.User; import com.ekexiu.portal.pojo.EditProfessor; @Path("/consult") public class ConsultService { @Autowrie private ConsultDao consultDao; @Autowrie private ProfessorDao professorDao; @Autowrie private UserDao userDao; @Autowrie private ImageService imageService; @Autowrie private TidingsDao tidingsDao; @Autowrie private ConsultRejectDao consultRejectDao; @Autowrie private GrowthLogService growthLogService; @Autowrie private SysService sysService; public ConsultDao getConsultDao() { return consultDao; } public void setConsultDao(ConsultDao consultDao) { this.consultDao = consultDao; } public ProfessorDao getProfessorDao() { return professorDao; } public void setProfessorDao(ProfessorDao professorDao) { this.professorDao = professorDao; } public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public ImageService getImageService() { return imageService; } public void setImageService(ImageService imageService) { this.imageService = imageService; } public TidingsDao getTidingsDao() { return tidingsDao; } public void setTidingsDao(TidingsDao tidingsDao) { this.tidingsDao = tidingsDao; } public ConsultRejectDao getConsultRejectDao() { return consultRejectDao; } public void setConsultRejectDao(ConsultRejectDao consultRejectDao) { this.consultRejectDao = consultRejectDao; } public GrowthLogService getGrowthLogService() { return growthLogService; } public void setGrowthLogService(GrowthLogService growthLogService) { this.growthLogService = growthLogService; } public SysService getSysService() { return sysService; } public void setSysService(SysService sysService) { this.sysService = sysService; } @Post @Path public String insert(@JdbcConn(true) Connection con, Consult consult) throws SQLException, JfwBaseException { String consultId = StringUtil.buildUUID(); consult.setConsultId(consultId); consult.setAssessStatus(0); consult.setThanksStatus(0); if(consult.getDemandId() == null){ consult.setConsultStatus(2); consult.setReadStatus(0); }else{ consult.setConsultStatus(0); consult.setReadStatus(1); } this.consultDao.insert(con, consult); Tidings tidings = new Tidings(); tidings.setTidingsId(StringUtil.buildUUID()); tidings.setConsultId(consultId); tidings.setSenderId(consult.getConsultantId()); tidings.setTidingsContant(consult.getConsultContant()); tidings.setReadStatus(1); this.tidingsDao.insert(con, tidings); //需求确认给专家增加积分 // if(consult.getDemandId() != null){ // this.growthLogService.demandConfirm(con, consult.getProfessorId()); // } // Professor professor = this.professorDao.queryOne(con, consult.getProfessorId()); // User user = this.userDao.query(con, consult.getProfessorId()); // String email = null; // String mobile = null; // if((professor.getEmail() != null) && (!"".equals(professor.getEmail()))){ // email = professor.getEmail(); // }else if((user.getEmail() != null) && (!"".equals(user.getEmail()))){ // email = user.getEmail(); // } // if((user.getMobilePhone() != null) && (user.getMobilePhone().trim().length() == 11)){ // mobile = user.getMobilePhone(); // }else if((professor.getPhone() != null) && (professor.getPhone().trim().length() == 11)){ // mobile = professor.getPhone(); // } // if(email != null){ // this.sysService.sendConsultMail(email); // } // if(mobile != null){ // this.sysService.sendConsultSMS(mobile); // } return consultId; } @Post @Path("/readStatus") public void updateReadStatus(@JdbcConn(true) Connection con, String consultId) throws SQLException { this.consultDao.updateReadStatus(con, consultId); } @Post @Path("/agree") public void agreeConsult(@JdbcConn(true) Connection con,String consultId)throws SQLException{ //点击确认接受咨询,更新咨询状态为进行中 this.consultDao.updateConsultStatus(con, consultId, 0); //Consult consult = this.consultDao.query(con, consultId); //接受咨询给专家增加积分 //this.growthLogService.consultReceive(con, consult.getProfessorId()); } @Post @Path("/reject") public void rejectConsult(@JdbcConn(true) Connection con,String consultId,String professorId,String[] reasons)throws SQLException{ //点击谢绝咨询,更新咨询状态为已谢绝 this.consultDao.updateConsultStatus(con, consultId, 3); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String finishTime = sdf.format(new Date()); //谢绝咨询同时更新完成时间,表示咨询已结束,此时完成时间即谢绝时间 this.consultDao.updateFinishTime(con, consultId, finishTime); for (int i = 0; i < reasons.length; i++) { ConsultReject reject = new ConsultReject(); reject.setRejectId(StringUtil.buildUUID()); reject.setConsultId(consultId); reject.setRejector(professorId); reject.setSort(i+1); reject.setRejectReason(reasons[i]); this.consultRejectDao.insert(con, reject); } } @Post @Path("/finishTime") public boolean updateFinishTime(@JdbcConn(true) Connection con, String consultId, int consultStatus) throws SQLException { Consult consult = this.consultDao.query(con, consultId); if(null == consult.getFinishTime()){ this.consultDao.updateFinishTime(con, consultId,consultStatus); int finishConsult = this.consultDao.queryReceiveConsult(con, consult.getProfessorId()); this.professorDao.updateConsultCount(con, consult.getProfessorId(), finishConsult); //咨询完成给咨询者增加积分 //this.growthLogService.consultFinish(con, consult.getConsultantId()); return true; } return false; } @Post @Path("/assess") public boolean updateAssess(@JdbcConn(true) Connection con, String consultId, int assessStatus, int assessStar, @Nullable String assessContant) throws SQLException { Consult consult = this.consultDao.query(con, consultId); if(0 == consult.getAssessStatus()){ this.consultDao.updateAssess(con, consultId, assessStatus, assessStar, assessContant); BigDecimal avgStar = this.consultDao.queryStarLevel(con, consult.getProfessorId()); this.professorDao.updateStarLevel(con, consult.getProfessorId(), avgStar); //评价一次咨询给咨询者增加积分 //this.growthLogService.consultAssess(con, consult.getConsultantId()); //获得4星及以上评价给专家增加积分 // if(assessStar > 3){ // this.growthLogService.receiveFourStar(con, consult.getProfessorId()); // } return true; } return false; } @Post @Path("/thanks") public boolean updateThanks(@JdbcConn(true) Connection con, String consultId, int thanksStatus, BigDecimal thanksMoney) throws SQLException { Consult consult = this.consultDao.query(con, consultId); if(0 == consult.getThanksStatus()){ this.consultDao.updateThanks(con, consultId, thanksStatus, thanksMoney); return true; } return false; } @Get @Path("/byDemand") public String queryDemand(@JdbcConn Connection con, String professorId, String demandId) throws SQLException{ return this.consultDao.queryDemand(con, professorId, demandId); } @Get @Path("/pqAssessHis") public PageQueryResult queryAssessHis(@JdbcConn Connection con, String professorId,@DefaultValue("5") int pageSize,@DefaultValue("1") int pageNo) throws SQLException { PageQueryResult queryResult = this.consultDao.queryAssessHis(con, professorId, pageSize, pageNo); List consults = queryResult.getData(); if(!consults.isEmpty()){ for (Consult consult : consults) { EditProfessor professor = this.professorDao.queryBaseInfo(con, consult.getConsultantId()); if(professor != null){ professor.setHasHeadImage(this.imageService.hasProfessorImage(consult.getConsultantId())); } consult.setProfessor(professor); } queryResult.setData(consults); } return queryResult; } @Get @Path("/qaReadStatus") public int queryReadStatus(@JdbcConn Connection con, String professorId) throws SQLException { int notReadConsult = this.consultDao.queryReadStatus(con, professorId); int notReadReply = this.consultDao.queryNotReadReply(con, professorId); return notReadConsult+notReadReply; } @Get @Path("/qaReceiveConsult") public int queryReceiveConsult(@JdbcConn Connection con, String professorId) throws SQLException { return this.consultDao.queryReceiveConsult(con, professorId); } @Get @Path("/qaNewConsult") public Consult queryNewConsult(@JdbcConn Connection con, String professorId) throws SQLException { Consult consult = this.consultDao.queryNewConsult(con, professorId); if(consult != null){ EditProfessor professor = this.professorDao.queryBaseInfo(con, consult.getConsultantId()); if(professor != null){ professor.setHasHeadImage(this.imageService.hasProfessorImage(consult.getConsultantId())); } consult.setProfessor(professor); } return consult; } @Get @Path("/qapro") public Consult queryPro(@JdbcConn(true) Connection con, String consultId) throws SQLException { Consult consult = this.consultDao.queryPro(con, consultId); this.tidingsDao.updateReadStatus(con, consult.getProfessorId(), consultId); return consult; } @Get @Path("/qacon") public Consult queryCon(@JdbcConn(true) Connection con, String consultId) throws SQLException { Consult consult = this.consultDao.queryCon(con, consultId); this.tidingsDao.updateReadStatus(con, consult.getConsultantId(), consultId); return consult; } @Get @Path("/pqPro") public PageQueryResult queryPageProBase(@JdbcConn Connection con, String professorId, @DefaultValue("0") int status, @DefaultValue("0") int timeType, @DefaultValue("0") int sortType, @DefaultValue("5") int pageSize, @DefaultValue("1") int pageNo) throws SQLException { PageQueryResult queryResult = this.consultDao.queryPageProBase(con, professorId, status, timeType, sortType, pageSize, pageNo); List consults = queryResult.getData(); if(!consults.isEmpty()){ for (Consult consult : consults) { EditProfessor professor = this.professorDao.queryBaseInfo(con, consult.getConsultantId()); if(professor!=null){ professor.setHasHeadImage(this.imageService.hasProfessorImage(consult.getConsultantId())); } consult.setProfessor(professor); } queryResult.setData(consults); } return queryResult; } @Get @Path("/pqpro") public PageQueryResult queryPagePro(@JdbcConn Connection con, String professorId, @DefaultValue("0") int status, @DefaultValue("0") int timeType, @DefaultValue("0") int sortType, @DefaultValue("5") int pageSize, @DefaultValue("1") int pageNo) throws SQLException { return this.consultDao.queryPagePro(con, professorId, status, timeType, sortType, pageSize, pageNo); } @Get @Path("/pqCon") public PageQueryResult queryPageConBase(@JdbcConn Connection con, String consultantId, @DefaultValue("0") int status, @DefaultValue("0") int timeType, @DefaultValue("0") int sortType, @DefaultValue("5") int pageSize, @DefaultValue("1") int pageNo) throws SQLException { PageQueryResult queryResult = this.consultDao.queryPageConBase(con, consultantId, status, timeType, sortType, pageSize, pageNo); List consults = queryResult.getData(); if(!consults.isEmpty()){ for (Consult consult : consults) { EditProfessor professor = this.professorDao.queryBaseInfo(con, consult.getProfessorId()); if(professor!=null){ professor.setHasHeadImage(this.imageService.hasProfessorImage(consult.getProfessorId())); } consult.setProfessor(professor); } queryResult.setData(consults); } return queryResult; } @Get @Path("/pqcon") public PageQueryResult queryPageCon(@JdbcConn Connection con, String consultantId, @DefaultValue("0") int status, @DefaultValue("0") int timeType, @DefaultValue("0") int sortType, @DefaultValue("5") int pageSize, @DefaultValue("1") int pageNo) throws SQLException { return this.consultDao.queryPageCon(con, consultantId, status, timeType, sortType, pageSize, pageNo); } @Get @Path("/pq") public PageQueryResult queryPageBase(@JdbcConn Connection con, String professorId, @DefaultValue("1") int consultOrNeed, @Nullable String consultType, @DefaultValue("0") int status, @DefaultValue("1") int timeType, @DefaultValue("10") int pageSize, @DefaultValue("1") int pageNo) throws SQLException { PageQueryResult queryResult = this.consultDao.queryPageBase(con, professorId, consultOrNeed, consultType, status, timeType, pageSize, pageNo); List consults = queryResult.getData(); if(!consults.isEmpty()){ for (Consult consult : consults) { EditProfessor professor = new EditProfessor(); if(0 == consultOrNeed){ if(professorId.equals(consult.getProfessorId())){ professor = this.professorDao.queryBaseInfo(con, consult.getConsultantId()); }else if(professorId.equals(consult.getConsultantId())){ professor = this.professorDao.queryBaseInfo(con, consult.getProfessorId()); } }else if(1 == consultOrNeed){ professor = this.professorDao.queryBaseInfo(con, consult.getConsultantId()); }else if(2 == consultOrNeed){ professor = this.professorDao.queryBaseInfo(con, consult.getProfessorId()); } if(professor!=null){ professor.setHasHeadImage(this.imageService.hasProfessorImage(professor.getId())); } consult.setProfessor(professor); } queryResult.setData(consults); } return queryResult; } @Get @Path("/qa") public List query(@JdbcConn Connection con) throws SQLException{ List consults = this.consultDao.query(con); return consults; } @Get @Path("/queryOne") public Consult queryOne(@JdbcConn Connection con, String consultId) throws SQLException{ Consult consult = this.consultDao.query(con, consultId); if(consult != null){ List tidings = this.tidingsDao.queryList(con, consultId); consult.setTidings(tidings); } return consult; } }