|
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<Consult> queryAssessHis(@JdbcConn Connection con, String professorId,@DefaultValue("5") int pageSize,@DefaultValue("1") int pageNo) throws SQLException {
PageQueryResult<Consult> queryResult = this.consultDao.queryAssessHis(con, professorId, pageSize, pageNo);
List<Consult> 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<Consult> 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<Consult> queryResult = this.consultDao.queryPageProBase(con, professorId, status, timeType, sortType, pageSize, pageNo);
List<Consult> 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<Consult> 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<Consult> 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<Consult> queryResult = this.consultDao.queryPageConBase(con, consultantId, status, timeType, sortType, pageSize, pageNo);
List<Consult> 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<Consult> 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<Consult> 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<Consult> queryResult = this.consultDao.queryPageBase(con, professorId, consultOrNeed, consultType, status, timeType, pageSize, pageNo);
List<Consult> 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<Consult> query(@JdbcConn Connection con) throws SQLException{
List<Consult> 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> tidings = this.tidingsDao.queryList(con, consultId);
consult.setTidings(tidings);
}
return consult;
}
}
|