package com.qxueyou.scc.admin.teacher.service.impl;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.qxueyou.scc.admin.classes.model.QClsClass;
|
import com.qxueyou.scc.admin.classes.model.QClsClassReSubject;
|
import com.qxueyou.scc.admin.teacher.dao.TeacherDAO;
|
import com.qxueyou.scc.admin.teacher.service.ITeacherService;
|
import com.qxueyou.scc.base.model.Pager;
|
import com.qxueyou.scc.base.model.Result;
|
import com.qxueyou.scc.base.service.impl.CommonAppService;
|
import com.qxueyou.scc.base.util.ClientUtils;
|
import com.qxueyou.scc.base.util.CollectionUtils;
|
import com.qxueyou.scc.base.util.TraceUtils;
|
import com.qxueyou.scc.teach.student.model.QStuStudent;
|
import com.qxueyou.scc.teach.student.model.StuStudent;
|
import com.qxueyou.scc.teach.subject.model.QSubject;
|
import com.qxueyou.scc.teach.subject.model.Subject;
|
import com.qxueyou.scc.user.model.User;
|
import com.qxueyou.scc.user.model.UserRole;
|
import com.qxueyou.scc.user.model.UserTeacher;
|
import com.qxueyou.scc.user.service.IUserService;
|
|
@Service
|
public class TeacherService extends CommonAppService implements ITeacherService {
|
|
@Autowired
|
IUserService userService;
|
|
@Autowired
|
TeacherDAO dao;
|
|
/**
|
// * 教师管理新增
|
*后台用户初始化
|
*/
|
@Override
|
public Result add(String teacherName, String password, String mobilePhone, String teacherNo) {
|
|
if (dao.exists(teacherNo) || userService.exists(teacherNo)) {
|
// return new Result(false, "老师编号已存在或被其他用户占用");
|
return new Result(false, "用户编号已存在或被其他用户占用");
|
}
|
|
User user = userService.insertUser(null,teacherName, teacherNo, mobilePhone, password, Boolean.FALSE, ClientUtils.getOrgId());
|
// userService.insertUser(teacherName, teacherNo, mobilePhone, password, Boolean.FALSE, ClientUtils.getOrgId());
|
|
userService.addRole(user.getUserId(), UserRole.ROLE_TEACHER_ID);
|
|
UserTeacher teacher = new UserTeacher();
|
TraceUtils.setCreateTrace(teacher);
|
teacher.setOrganizationId(ClientUtils.getOrgId());
|
teacher.setName(teacherName);
|
teacher.setMobilePhone(mobilePhone);
|
teacher.setUserId(user.getUserId());
|
teacher.setTeacherNo(teacherNo);
|
save(teacher);
|
|
return new Result(true, "success");
|
|
}
|
|
/**
|
* 更新
|
*/
|
@Override
|
public Result update(String teacherId, String teacherName, String account, String password, String mobilePhone,
|
String teacherNo) {
|
if (StringUtils.isNotEmpty(mobilePhone) && dao.exists(mobilePhone, teacherId)) {
|
return new Result(false, "手机号已存在");
|
}
|
|
UserTeacher teacher = read(UserTeacher.class, teacherId);
|
|
TraceUtils.setUpdateTrace(teacher);
|
teacher.setName(teacherName);
|
teacher.setMobilePhone(mobilePhone);
|
teacher.setTeacherNo(teacherNo);
|
save(teacher);
|
|
User user = read(User.class, teacher.getUserId());
|
user.setMobilePhone(mobilePhone);
|
user.setName(teacherName);
|
user.setAccount(teacherNo);
|
TraceUtils.setCreateTrace(user);
|
save(user);
|
|
if(StringUtils.isNotEmpty(password)){
|
userService.updatePassword(teacher.getUserId(), password);
|
}
|
|
return new Result(true, "success");
|
}
|
|
/**
|
* 教师管理显示列表
|
*/
|
@Override
|
public List<UserTeacher> lstTeacher(String keyword, Integer pageSize, Integer pageNum) {
|
|
String keyword_ = StringUtils.isEmpty(keyword) ? "" : keyword;
|
|
String hql = "from UserTeacher where name like ? and deleteFlag is false and organizationId = ? order by createTime desc";
|
|
return findList(hql, new Pager(pageSize, pageNum), CollectionUtils.newList(keyword_.concat("%"), ClientUtils.getOrgId()),
|
UserTeacher.class);
|
}
|
|
/**
|
* 获取教师总条数
|
*/
|
@Override
|
public int findTeacherCount(String keyword) {
|
|
String hql = "from UserTeacher where name like :keyword and deleteFlag is false and organizationId = :organizationId";
|
|
return findCountByComplexHql(hql, CollectionUtils.newObjectMap("keyword", keyword + "%","organizationId",ClientUtils.getOrgId()));
|
}
|
|
@Override
|
public List<Map<String, Object>> findLstToRole(String keyword, Integer pageSize, Integer pageNum, String roleId) {
|
String hql = "select u.userId as userId ,u.name as teacherName ,u.teacherNo as teacherNo ,u.mobilePhone as mobilePhone ,u.teacherId as teacherId "
|
+ " from UserTeacher u where u.deleteFlag is false and u.name like :keyword and not Exists(select userId from UserReRoleUser re where re.roleId "
|
+ "=:roleId and re.deleteFlag is false and re.userId = u.userId) ";
|
|
return findListWithMapByHql(hql, CollectionUtils.newObjectMap("roleId", roleId, "keyword", "%" + keyword + "%"),
|
new Pager(pageSize, pageNum));
|
|
}
|
|
@Override
|
public int findLstCountToRole(String roleId, String keyword) {
|
String hql = " from UserTeacher u where u.deleteFlag is false and u.name like :keyword and not Exists(select userId from UserReRoleUser re where re.roleId "
|
+ "=:roleId and re.deleteFlag is false and re.userId = u.userId) ";
|
|
return findCountByComplexHql(hql,
|
CollectionUtils.newObjectMap("roleId", roleId, "keyword", "%" + keyword + "%"));
|
}
|
|
/**
|
* 教师管理 删除教师
|
*/
|
@Override
|
public Result deleteTeacher(String[] teacherIds) {
|
|
for (String teacherId : teacherIds) {
|
deleteTeacherInner(teacherId);
|
}
|
|
return new Result(true, "success");
|
}
|
|
public Result deleteTeacherInner(String teacherId) {
|
|
UserTeacher teacher = read(UserTeacher.class, teacherId);
|
|
TraceUtils.setUpdateTrace(teacher);
|
teacher.setDeleteFlag(true);
|
|
save(teacher);
|
|
User user = read(User.class, teacher.getUserId());
|
if (user != null) {
|
deleteAll(CollectionUtils.newList(user));
|
}
|
|
return new Result(true, "success");
|
}
|
|
@Override
|
public List<UserTeacher> LstTeacher4Cls() {
|
String hql = "from UserTeacher where deleteFlag is false and organizationId=? ";
|
return find(hql, CollectionUtils.newList(ClientUtils.getOrgId()), UserTeacher.class);
|
}
|
|
@Override
|
public String getTeacherIdByUserId(String userId) {
|
String hql = "from UserTeacher where userId = ? and deleteFlag is false";
|
UserTeacher userTeacher = findUnique(hql, CollectionUtils.newList(userId), UserTeacher.class);
|
|
if(userTeacher == null) {
|
return StringUtils.EMPTY;
|
}
|
|
return userTeacher.getTeacherId();
|
}
|
|
@Override
|
public UserTeacher getTeacherByUserId(String userId) {
|
String hql = "from UserTeacher where userId = ? and deleteFlag is false";
|
UserTeacher userTeacher = findUnique(hql, CollectionUtils.newList(userId), UserTeacher.class);
|
|
return userTeacher;
|
}
|
|
|
@Override
|
public Result getTeacherInfo() {
|
QSubject subject = QSubject.subject;
|
QClsClass clsClass = QClsClass.clsClass;
|
QClsClassReSubject re = QClsClassReSubject.clsClassReSubject;
|
QStuStudent student = QStuStudent.stuStudent;
|
|
User u = this.read(User.class, ClientUtils.getUserId());
|
String teacherId = this.getTeacherIdByUserId(u.getUserId());
|
if(StringUtils.isEmpty(teacherId)) {
|
return new Result(false, "当前用户无教师角色信息");
|
}
|
|
long subjectCount = this.getQueryFactory().selectDistinct(subject.subjectId).from(subject)
|
.where(subject.deleteFlag.isFalse().and(subject.createId.eq(u.getUserId())).and(subject.status.eq(Subject.STATUS_ISSUED)).
|
and(subject.type.in(new Integer[] {Subject.TYPE_ORG_SUBJECT, Subject.TYPE_PUBLIC_SUBJECT}))).fetchCount();
|
|
long classCount = this.getQueryFactory().selectDistinct(clsClass.classId).from(subject, clsClass, re)
|
.where(subject.deleteFlag.isFalse().and(subject.teacherId.eq(teacherId))
|
.and(clsClass.deleteFlag.isFalse()).and(re.deleteFlag.isFalse())
|
.and(re.subjectId.eq(subject.subjectId)).and(clsClass.classId.eq(re.classId))
|
.and(clsClass.endTime.after(new Date())))
|
.fetchCount();
|
|
long studentCount = this.getQueryFactory().selectDistinct(student.studentId)
|
.from(subject, clsClass, re, student)
|
.where(subject.deleteFlag.isFalse().and(subject.teacherId.eq(teacherId))
|
.and(clsClass.deleteFlag.isFalse()).and(re.deleteFlag.isFalse())
|
.and(clsClass.endTime.after(new Date())).and(re.subjectId.eq(subject.subjectId))
|
.and(clsClass.classId.eq(re.classId)).and(student.classId.eq(clsClass.classId))
|
.and(student.deleteFlag.isFalse()).and(student.status.eq(StuStudent.STATUS_ACTIVE)))
|
.fetchCount();
|
|
return new Result(true, "success",
|
CollectionUtils.newObjectMap("name", u.getName(), "account", u.getAccount(), "mobilePhone",
|
u.getMobilePhone(), "imgPath", u.getImgPath(), "sex", u.getSex(), "subjectCount", subjectCount,
|
"classCount", classCount, "studentCount", studentCount, "teacherNo", this.read(UserTeacher.class, teacherId).getTeacherNo()));
|
}
|
|
}
|