Examination_system/Examination_system-1/.svn/pristine/cb/cbcda6bb42dfafc2fdd201ab71a...

647 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.bonus.sys.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.bonus.core.exception.ZeroAffectRowsException;
import com.bonus.sys.AjaxRes;
import com.bonus.sys.BaseServiceImp;
import com.bonus.sys.CipherHelper;
import com.bonus.sys.Page;
import com.bonus.sys.UserShiroHelper;
import com.bonus.sys.beans.NewRoleBean;
import com.bonus.sys.beans.UserBean;
import com.bonus.sys.beans.ZNode;
import com.bonus.sys.dao.NewRoleDao;
import com.bonus.sys.dao.UserDao;
@Service("UserService")
public class UserServiceImp extends BaseServiceImp<UserBean> implements UserService {
protected Logger logger = LoggerFactory.getLogger(UserServiceImp.class);
@Autowired
private UserDao userDao;
@Autowired
private NewRoleDao newRoleDao;
@Override
public UserBean findUserBeanByLoginName(String loginName) {
try {
UserBean u = userDao.findUserBeanByLoginName(loginName);
return u;
} catch (Exception e) {
logger.error("根据登录名查找用户信息时,发生异常", e);
}
return null;
}
@Override
public void setPerData(UserBean o) {
UserBean cu = UserShiroHelper.getRealCurrentUser();
o.setId(cu.getId());
o.setUpdateTime((new Date()));
userDao.updateByPrimaryKeySelective(o);
cu.setName(o.getName());
cu.setMail(o.getMail());
cu.setTelphone(o.getTelphone());
}
@Override
public void setSetting(String skin) {
UserBean cu = UserShiroHelper.getCurrentUser();
cu.setSkin(skin);
userDao.setSetting(cu);
UserShiroHelper.getRealCurrentUser().setSkin(skin);
}
@Override
public int preResetPwd(String opwd, String npwd, String qpwd) {
int res = 0;
int accountId = UserShiroHelper.getRealCurrentUser().getId();
String loginName = UserShiroHelper.getRealCurrentUser().getLoginName();
if (StringUtils.isNotBlank(opwd) && StringUtils.isNotBlank(npwd)) {
if (StringUtils.equals(npwd, qpwd)) {
UserBean o = new UserBean();
o.setId(accountId);
UserBean odata = userDao.findUserBeanByLoginName(loginName);
String oPwdEncrypt = CipherHelper.createPwdEncrypt(loginName, opwd.toUpperCase(), odata.getSalt());
String odataPwdEncrypt = odata.getPasswd();
if (StringUtils.equals(oPwdEncrypt, odataPwdEncrypt)) {
String salt = CipherHelper.createSalt();
String pwrsMD5 = npwd.toUpperCase();
o.setPasswd(CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt));
o.setSalt(salt);
userDao.resetPwd(o);
res = 1;
} else {
res = 2;// 密码不正确
}
} else {
res = 3;// 两次密码不一致
}
}
return res;
}
@Override
public UserBean findByidcard(String idCard) {
return userDao.findByidcard(idCard);
}
@Override
public int sysResetPwd(UserBean o) {
int res = 0;
String pwd = o.getPasswd();
o.setUpdateTime(new Date());
int userId = o.getId();
if (userId >= 0) {
UserBean odata = userDao.selectByPrimaryKey(userId);
String loginName = odata.getLoginName();
// 随机密码,以后发邮箱
String salt = CipherHelper.createSalt();
String pwrsMD5 = CipherHelper.generatePassword(pwd);
String newPwd = CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt);
o.setPasswd(newPwd);
o.setSalt(salt);
userDao.resetPwd(o);
res = 1;
} else {
res = 2;
}
return res;
}
@Override
public List<ZNode> getOrgBeans() {
return userDao.getOrgBeans();
}
@Override
public List<ZNode> getOrgBeansList() {
return userDao.getOrgBeans();
}
@Override
public int insertUser(UserBean o) {
int res = 0;
String loginName = o.getLoginName();
// 查询数据库是否已经存在用户名
if (StringUtils.isNotBlank(loginName) && (userDao.findCountByLoginName(loginName) == 0)) {
String pwrs = "12345678";// 随机密码,以后发邮箱
String pwrsMD5 = CipherHelper.generatePassword(pwrs);// 第一次加密md5
String salt = CipherHelper.createSalt();
o.setPasswd(CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt));
o.setSalt(salt);
o.setCreateTime(new Date());
userDao.insertSelective(o);
res = o.getId();
}
/*
* Connection conn = null; CallableStatement cs = null; try { conn =
* DBUtils.getConn(); String sql = "{CALL update_app_menu(?,?)}"; cs =
* conn.prepareCall(sql); cs.setInt(1,o.getPostId()); cs.setInt(2,res);
* cs.execute(); } catch (SQLException e) { e.printStackTrace();
* }finally { DBUtils.close(conn, cs, null); }
*/
return res;
}
@Override
public void deleteBatch(String chks) {
// 事务删除
if (StringUtils.isNotBlank(chks)) {
String[] chk = chks.split(",");
List<UserBean> list = new ArrayList<UserBean>();
for (String s : chk) {
try {
int id = Integer.parseInt(s);
UserBean sd = new UserBean();
sd.setId(id);
list.add(sd);
} catch (Exception e) {
}
}
userDao.deleteBatch(list);
}
}
@Override
public List<UserBean> findAllByRole(UserBean o) {
return userDao.findAllByRole(o);
}
@Override
public List<UserBean> findAllByNewRole(UserBean o) {
return userDao.findAllByNewRole(o);
}
@Override
public void updateUsers(int roleId, String chks) {
// 事务删除
userDao.deleteUserRole(roleId);
if (StringUtils.isNotBlank(chks)) {
String[] chk = chks.split(",");
for (String s : chk) {
try {
UserBean ub = new UserBean();
int id = Integer.parseInt(s);
ub.setId(id);
ub.setRoleId(roleId);
userDao.insertUserRole(ub);
} catch (Exception e) {
logger.error("插入用户角色表失败!", e);
return;
}
}
}
}
@Override
public UserBean findAll(UserBean o) {
UserBean userList = userDao.findAll(o);
return userList;
}
@Override
public List<UserBean> findAllUser() {
return userDao.findAllUser();
}
@Override
public List<UserBean> findByOrg(UserBean o) {
List<UserBean> list = userDao.findByOrg(o);
return list;
}
@Override
public List<UserBean> findByRepair() {
return userDao.findByRepair();
}
@Override
public String findCompanyName(UserBean o) {
return userDao.findCompanyName(o);
}
@Override
public List<UserBean> getUnit(UserBean o) {
return userDao.getUnit(o);
}
@Override
public List<ZNode> findPerson(UserBean o) {
return userDao.findPerson(o);
}
@Override
public UserBean findByUserId(String userId, int flag) {
return userDao.findByUserId(userId, flag);
}
@Override
public UserBean findUserBeanById(String userId) {
return userDao.findUserBeanById(userId);
}
@Override
public List<UserBean> findPersonByOrgId(String orgId) {
return userDao.findPersonByOrgId(orgId);
}
@Override
public List<UserBean> findCIdByOrgId(String orgId, String postId) {
return userDao.findCIdByOrgId(orgId, postId);
}
@Override
public List<UserBean> findAllPerson() {
return userDao.findAllPerson();
}
@Override
public void insertUserRole(UserBean o) {
userDao.insertUserRole(o);
}
@Override
public Integer insertBean(UserBean o) {
Date time = new Date(System.currentTimeMillis());
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
o.setCreateTime(time);
// o.setPostId(13);
String loginName = o.getLoginName();
// o.setName(loginName);
// 查询数据库是否已经存在用户名
if (StringUtils.isNotBlank(loginName) && (userDao.findCountByLoginName(loginName) == 0)) {
String pwrs = o.getPasswd();
String pwrsMD5 = CipherHelper.generatePassword(pwrs);// 第一次加密md5;
String salt = CipherHelper.createSalt();
o.setPasswd(CipherHelper.createPwd(pwrsMD5, salt));
o.setSalt(salt);
}
return userDao.insertBean(o);
}
@Override
public UserBean selectUser(String loginName) {
// TODO Auto-generated method stub
return userDao.selectUser(loginName);
}
@Override
public UserBean getnum(String phonenum) {
UserBean user = null;
try {
user = userDao.getnum(phonenum);
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
@Override
public List<ZNode> findAllInternalEmp() {
return userDao.findAllInternalEmp();
}
@Override
public List<UserBean> getUserList() {
// TODO Auto-generated method stub
return userDao.getUserList();
}
@Override
public List<UserBean> getDeptEmpByDeptId(UserBean o) {
return userDao.getDeptEmpByDeptId(o);
}
@Override
public Page<UserBean> findByPageOfWebUser(UserBean o, Page<UserBean> page) {
try {
page.setResults(userDao.findByPageOfWebUser(o, page));
} catch (Exception e) {
e.printStackTrace();
}
return page;
}
@Override
public Integer webInsertBean(UserBean o) {
Integer result = 0;
try {
Date time = new Date(System.currentTimeMillis());
o.setCreateTime(time);
String salt = CipherHelper.createSalt();
o.setPasswd(CipherHelper.createPwdEncrypt(o.getLoginName(), o.getPasswd().toUpperCase(), salt));
o.setSalt(salt);
result = userDao.insertBean(o);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override
public int findCountByLoginName(String loginName) {
int result = 0;
try {
result = userDao.findCountByLoginName(loginName);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override
public List<UserBean> findListByPhone(String phone) {
List<UserBean> users = null;
try {
users = userDao.findListByPhone(phone);
} catch (Exception e) {
e.printStackTrace();
}
return users;
}
@Override
public int webResetPwd(UserBean o) {
int res = 0;
try {
String pwd = o.getPasswd();
o.setUpdateTime(new Date());
String loginName = o.getLoginName();
// 随机密码,以后发邮箱
String salt = CipherHelper.createSalt();
// String pwrsMD5 = CipherHelper.generatePassword(pwd);
String newPwd = CipherHelper.createPwdEncrypt(loginName, pwd.toUpperCase(), salt);
o.setPasswd(newPwd);
o.setSalt(salt);
userDao.resetPwd(o);
res = 1;
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
@Override
public List<ZNode> clientUnitTree(UserBean o) {
return userDao.clientUnitTree(o);
}
@Override
public List<ZNode> findNewRole(UserBean o) {
return userDao.findNewRole(o);
}
@Override
public List<UserBean> findAllClient(UserBean o) {
return userDao.findAllClient(o);
}
@Override
public Page<UserBean> findByPageOfBrotherUser(UserBean o, Page<UserBean> page) {
try {
page.setResults(userDao.findByPageOfBrotherUser(o, page));
} catch (Exception e) {
e.printStackTrace();
}
return page;
}
@Override
public List<ZNode> getRepairEmpList(Integer id) {
return userDao.getRepairEmpList(id);
}
@Override
public List<ZNode> getTecEmp(Integer id) {
return userDao.getTecEmp(id);
}
@Override
public List<UserBean> findAllKeeper() {
return userDao.findAllKeeper();
}
@Override
public List<UserBean> getRepairOrg() {
return userDao.getRepairOrg();
}
@Override
public List<ZNode> findRepairTeam(UserBean o) {
return userDao.findRepairTeam(o);
}
@Override
public Page<UserBean> findByPageOfNew(UserBean o, Page<UserBean> page) {
page.setResults(userDao.findByPageOfNew(o, page));
return page;
}
@Override
public List<UserBean> findBuyersList() {
return userDao.findBuyersList();
}
@Override
public List<UserBean> findCompanyList() {
return userDao.findCompanyList(null);
}
int charuTrue = 0;
@Override
@Transactional
public AjaxRes addUser(UserBean o) {
AjaxRes ar = getAjaxRes();
Integer result = 0;
try {
NewRoleBean[] roles = o.getRoleArr();
boolean flag = false;
for (int i = 0; i < roles.length; i++) {
if (roles[i].getId() == 1 || roles[i].getId() == 2) { // 具有管理员角色
flag = true;
break;
}
}
if (flag) {
o.setIfPermiss("1");
} else {
o.setIfPermiss("0");
}
String loginName = o.getLoginName();
// 查询数据库是否已经存在用户名
if (StringUtils.isNotBlank(loginName) && (userDao.findCountByLoginName(loginName) == 0)) {
charuTrue++;
String pwrs = "12345678";// 随机密码,以后发邮箱
String pwrsMD5 = CipherHelper.generatePassword(pwrs);// 第一次加密md5
String salt = CipherHelper.createSalt();
o.setPasswd(CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt));
o.setSalt(salt);
o.setCreateTime(new Date());
result = userDao.insertSelective(o);
if (result == 0) {
ar.setFailMsg("新增人员失败,用户表插入操作错误!");
return ar;
}
for (NewRoleBean bean : roles) {
bean.setUserId(o.getId());
result = newRoleDao.insertRole(bean);
if (result == 0) {
ar.setFailMsg("新增员工失败,用户与角色关联表插入操作错误!");
return ar;
}
}
} else {
ar.setFailMsg("新增人员失败,用户" + loginName + "已存在!");
System.out.println(charuTrue);
return ar;
}
ar.setSucceedMsg("员工账号新增成功!");
} catch (Exception e) {
e.printStackTrace();
ar.setFailMsg(e.getMessage());
throw e;
}
return ar;
}
@Override
public UserBean findOrgId(Integer orgId) {
return userDao.findOrgId(orgId);
}
@Override
public UserBean findUserInfoById(UserBean o) {
return userDao.findUserInfoById(o);
}
@Override
@Transactional
public AjaxRes updateUser(UserBean o) {
AjaxRes ar = getAjaxRes();
Integer result = 0;
try {
NewRoleBean[] roles = o.getRoleArr();
o.setUpdateTime(new Date());
if (roles != null && roles.length > 0) {
for (NewRoleBean bean : roles) {
if ("delete".equals(bean.getOpt())) {
result = newRoleDao.deleteRole(bean);
if (result == 0) {
throw new ZeroAffectRowsException("员工信息更细失败,用户与角色关联表删除操作错误!");
}
} else if ("insert".equals(bean.getOpt())) {
result = newRoleDao.insertRole(bean);
if (result == 0) {
throw new ZeroAffectRowsException("员工信息更细失败,用户与角色关联表插入操作错误!");
}
}
}
}
NewRoleBean nrbean = new NewRoleBean();
nrbean.setUserId(o.getId());
List<NewRoleBean> list = newRoleDao.findRoleByUserId(nrbean);
boolean flag = false;
if (list != null && list.size() != 0) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId() == 1 || list.get(i).getId() == 2) {
flag = true;
break;
}
}
}
if (flag) {
o.setIfPermiss("1");
} else {
o.setIfPermiss("0");
}
result = userDao.updateByPrimaryKeySelective(o);
if (result == 0) {
throw new ZeroAffectRowsException("员工信息更新失败,用户表更新操作错误!");
}
ar.setSucceedMsg("员工账号更新成功!");
} catch (Exception e) {
e.printStackTrace();
ar.setFailMsg(e.getMessage());
throw e;
}
return ar;
}
@Override
public List<UserBean> findInternalEmp() {
return userDao.findInternalEmp();
}
@Override
public List<UserBean> findAllBuyer(int postId) {
UserBean o = new UserBean();
o.setPostId(postId);
return userDao.findAllBuyer(o);
}
@Override
public List<UserBean> getUserByEmp() {
return userDao.getUserByEmp();
}
@Override
public List<UserBean> findAllKeeperForOrgId(int orgId) {
UserBean o = new UserBean();
o.setOrgId(orgId);
return userDao.findAllKeeperForOrgId(o);
}
@Override
public List<UserBean> getListByPost() {
return userDao.getListByPost();
}
@Override
public UserBean getUserInfo(UserBean user) {
return userDao.getUserInfo(user);
}
@Override
public List<UserBean> findUserBySelect(UserBean o) {
return userDao.findUserBySelect(o);
}
@Override
public List<ZNode> getOrgTreeList(UserBean o) {
return userDao.getOrgTreeList(o);
}
}