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

647 lines
16 KiB
Plaintext
Raw Normal View History

2023-10-30 13:10:40 +08:00
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);
}
}