package com.qxueyou.scc.user.service.impl;
|
|
import java.util.List;
|
|
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.ClsClass;
|
import com.qxueyou.scc.base.model.Result;
|
import com.qxueyou.scc.base.model.UserInfoWrapper;
|
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.org.model.Organization;
|
import com.qxueyou.scc.org.service.IOrganizationService;
|
import com.qxueyou.scc.sys.model.CacheParamters;
|
import com.qxueyou.scc.teach.student.model.StuStudent;
|
import com.qxueyou.scc.user.model.User;
|
import com.qxueyou.scc.user.model.UserReRoleUser;
|
import com.qxueyou.scc.user.service.IUserService;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpSession;
|
|
/**
|
* Óû§¹ÜÀí·þÎñ
|
*
|
* @author µÂ»¢
|
*/
|
@Service
|
public class UserService extends CommonAppService implements IUserService {
|
|
@Autowired
|
IOrganizationService organizationService;
|
|
/**
|
* ³õʼ»¯Óû§wrapper
|
*/
|
@Override
|
public UserInfoWrapper initUserInfoWrapper(CacheParamters param, boolean needMenus) {
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
HttpSession session = request.getSession();
|
UserInfoWrapper wrapper = new UserInfoWrapper();
|
User user = read(User.class, param.getUserId());
|
// System.out.println("Óû§ÐÅÏ¢"+user);
|
// TODO:ÕâÀïÐèÒª¶ÔÓ¦µÄ»ñÈ¡×éÖ¯ÐÅÏ¢
|
Organization org = read(Organization.class, user.getOrganizationId());
|
// System.out.println("×éÖ¯ÐÅÏ¢"+user.getOrganizationId());
|
|
//TODO ÉèÖÃuser£¬Ìí¼ÓUUNUMBER
|
user.setEmail(param.getCustomRoleValue());
|
user.setAge(1);
|
//TODO ÉèÖÃuser£¬Ìí¼ÓUURENUMBER
|
user.setImei(param.getCustomOrgId());
|
//²éѯ°à¼¶ÐÅÏ¢
|
// System.out.println(user.getUserId());
|
// System.out.println(user.getOrganizationId());
|
// System.out.println(StuStudent.STATUS_ACTIVE);
|
ClsClass objClsClass = this.findUnique("select c from StuStudent t,"
|
+ " ClsClass c where c.classId = t.classId "
|
+ " and c.orgId = ? and t.userId = ? and t.status = ? order by t.createTime desc", CollectionUtils.newList(user.getOrganizationId(), user.getUserId(), StuStudent.STATUS_ACTIVE), ClsClass.class);
|
wrapper.setUser(user);
|
wrapper.setOrg(org);
|
wrapper.setClass(objClsClass);
|
wrapper.setLoginInfo(param.getCacheIpFlag(), param.getIp(), param.getPlatForm());
|
System.out.println("aaa"+user.getUserId());
|
session.setAttribute(UserInfoWrapper.INF_USER_ID,user.getUserId());
|
session.setAttribute(UserInfoWrapper.INF_USER_NAME,user.getName());
|
if(objClsClass!=null){
|
session.setAttribute(UserInfoWrapper.INF_CLASS_ID,objClsClass.getClassId());
|
session.setAttribute(UserInfoWrapper.INF_CLASS_NAME,objClsClass.getName());
|
}
|
return wrapper;
|
}
|
|
@Override
|
public User insertUser(String name, String account, String mobilePhone, String password, Boolean sex, String orgId) {
|
return newUser(name, account, mobilePhone, password, sex, orgId);
|
}
|
|
private User newUser(String name, String account, String mobilePhone, String password, Boolean sex, String orgId) {
|
|
User user = new User();
|
TraceUtils.setCreateTrace(user);
|
user.setAccount(account);
|
user.setName(name);
|
user.setMobilePhone(mobilePhone);
|
user.setPassword(password);
|
user.setSex(sex);
|
user.setOrganizationId(orgId);
|
save(user);
|
|
return user;
|
}
|
|
@Override
|
public User getUserByAccount(String account, String orgId) {
|
String hql = "from User where account=? and deleteFlag is false and organizationId = ?";
|
return findUnique(hql, CollectionUtils.newList(account, orgId), User.class);
|
}
|
|
@Override
|
public Result addRole(String userId, String roleId) {
|
|
String hql = "from UserReRoleUser where userId=? and roleId=? and deleteFlag is false";
|
UserReRoleUser re = findUnique(hql, CollectionUtils.newList(userId, roleId), UserReRoleUser.class);
|
|
if (re == null) {
|
re = new UserReRoleUser();
|
re.setDeleteFlag(false);
|
re.setRoleId(roleId);
|
re.setUserId(userId);
|
save(re);
|
}
|
|
return new Result(true);
|
}
|
|
@Override
|
public Result updatePassword(String userId, String usedPass, String pass) {
|
User user = read(User.class, userId);
|
if (StringUtils.isNotBlank(usedPass) && StringUtils.isNotBlank(pass)) {
|
if (!user.getPassword().equals(usedPass)) {
|
return new Result(false, "ÊäÈëµÄ¾ÉÃÜÂë´íÎó");
|
}
|
user.setPassword(pass);
|
}
|
TraceUtils.setUpdateTrace(user);
|
save(user);
|
|
return new Result(true);
|
}
|
|
/**
|
* Óû§ÉèÖÃÍ·Ïñ
|
*
|
* @param headPath
|
* @return
|
*/
|
public Result updateUserHead(String userId, String headPath) {
|
if(StringUtils.isEmpty(headPath)) {
|
return new Result(false, "Í·ÏñµØÖ·Îª¿Õ");
|
}
|
User user = read(User.class, userId);
|
|
user.setImgPath(headPath);
|
TraceUtils.setUpdateTrace(user);
|
save(user);
|
|
return new Result(true);
|
}
|
|
/**
|
* Óû§ÉèÖÃÊÖ»úºÅ
|
*
|
* @param headPath
|
* @return
|
*/
|
public Result updateUserInfo(String userId, String mobilePhone) {
|
|
User user = read(User.class, userId);
|
|
user.setMobilePhone(mobilePhone);
|
TraceUtils.setUpdateTrace(user);
|
save(user);
|
|
return new Result(true);
|
}
|
|
@Override
|
public Result updatePassword(String userId, String password) {
|
User user = read(User.class, userId);
|
|
TraceUtils.setUpdateTrace(user);
|
user.setPassword(password);
|
|
save(user);
|
|
return new Result(true);
|
}
|
|
@Override
|
public boolean isAdmin() {
|
String hqlRole = "select min(u.type) from UserRole u , UserReRoleUser r where u.deleteFlag is false and r.deleteFlag is false and r.userId =:userId and u.roleId =r.roleId";
|
String maxRoleTypeStr = findUniqueByHql(hqlRole,
|
CollectionUtils.newObjectMap("userId", ClientUtils.getUserId()));
|
Integer type = Integer.valueOf(StringUtils.isNotBlank(maxRoleTypeStr) ? maxRoleTypeStr : "0");
|
if (type == 1) {
|
return true;
|
}
|
return false;
|
}
|
|
@Override
|
public boolean isTeacher() {
|
String hqlRole = "select min(u.type) from UserRole u , UserReRoleUser r where u.deleteFlag is false and r.deleteFlag is false and r.userId =:userId and u.roleId =r.roleId";
|
String maxRoleTypeStr = findUniqueByHql(hqlRole,
|
CollectionUtils.newObjectMap("userId", ClientUtils.getUserId()));
|
Integer type = Integer.valueOf(StringUtils.isNotBlank(maxRoleTypeStr) ? maxRoleTypeStr : "0");
|
if (type == 2) {
|
return true;
|
}
|
return false;
|
}
|
|
@Override
|
public boolean doBatchUpdateUser(List<User> lstUser) {
|
return this.saveOrUpdateAll(lstUser).isSuccess();
|
}
|
|
@Override
|
public Result updateUser(String userId, String name, String account, String mobilePhone, String password,
|
Boolean sex) {
|
|
User dbUser = read(User.class, userId);
|
|
if (dbUser.getAccount().equals(account)) {
|
dbUser.setName(name);
|
dbUser.setMobilePhone(mobilePhone);
|
dbUser.setPassword(password);
|
TraceUtils.setCreateTrace(dbUser);
|
save(dbUser);
|
return new Result(true, "success");
|
}
|
|
User user = getUserByAccount(account, ClientUtils.getOrgId());
|
if (null != user) {
|
return new Result(false, "Óû§Õ˺ÅÒѾ´æÔÚ");
|
}
|
dbUser.setAccount(account);
|
dbUser.setName(name);
|
dbUser.setMobilePhone(mobilePhone);
|
dbUser.setPassword(password);
|
TraceUtils.setCreateTrace(dbUser);
|
save(dbUser);
|
return new Result(true, "success");
|
}
|
|
@Override
|
public boolean exists(String account) {
|
return findCount("from User where account = ?", CollectionUtils.newList(account)) > 0;
|
}
|
|
}
|