package com.matrix.system.common.service.impl;
|
|
import cn.hutool.crypto.SecureUtil;
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.constance.SystemErrorCode;
|
import com.matrix.core.exception.GlobleException;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.DateUtil;
|
import com.matrix.core.tools.LogUtil;
|
import com.matrix.core.tools.ModelUtils;
|
import com.matrix.core.tools.WebUtil;
|
import com.matrix.system.common.authority.DefaultAuthorityManager;
|
import com.matrix.system.common.bean.SysUserLoginRecord;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.constance.AppConstance;
|
import com.matrix.system.common.constance.AppMessageCode;
|
import com.matrix.system.common.dao.SysUsersDao;
|
import com.matrix.system.common.init.LocalCache;
|
import com.matrix.system.common.service.SysUsersService;
|
import com.matrix.system.common.tools.PasswordUtil;
|
import com.matrix.system.common.tools.ServiceUtil;
|
import com.matrix.system.hive.bean.AppVersion;
|
import com.matrix.system.hive.bean.SysBeauticianState;
|
import com.matrix.system.hive.bean.SysProjServices;
|
import com.matrix.system.hive.bean.SysShopInfo;
|
import com.matrix.system.hive.dao.SysShopInfoDao;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.io.UnsupportedEncodingException;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 用户管理service
|
*
|
* @author JIANGYOUYAO
|
* @email 935090232@qq.com
|
* @date 2017年12月5日
|
*/
|
@Service
|
public class SysUsersServiceImpl implements SysUsersService {
|
|
private static final String SU_ID = "su_id";
|
|
private static final String SU_ACCOUNT = "su_account";
|
@Autowired
|
private SysUsersDao sysUsersDao;
|
|
@Autowired
|
private ServiceUtil serviceUtil;
|
|
@Autowired
|
private SysShopInfoDao shopInfoDao;
|
|
private final String tableName = "sys_users";
|
|
@Override
|
public int addCompanySuper(SysUsers admin) {
|
admin.setSuUserType(AppConstance.USER_TYPE_ADMIN);
|
SysShopInfo zbShop= shopInfoDao.selectZbShop(admin.getCompanyId());
|
admin.setShopId(zbShop.getId());
|
return add(admin);
|
}
|
|
@Override
|
public int addAdmin(SysUsers sysUsers) {
|
sysUsers.setSuUserType(AppConstance.USER_TYPE_EMPLOYEE);
|
return add(sysUsers);
|
}
|
|
/**
|
* 添加普通管理员
|
* @param sysUsers
|
* @return
|
*/
|
@Override
|
public int add(SysUsers sysUsers) {
|
|
// 判断账号是否重复
|
if (serviceUtil.addCheckRepeat(tableName, SU_ACCOUNT, sysUsers.getSuAccount())) {
|
throw new GlobleException(AppMessageCode.User.ACCOUNT_EXIST, sysUsers.getSuAccount());
|
}
|
|
// 设置一些基本信息
|
SysUsers loginUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
if (loginUser != null) {
|
sysUsers.setCreateBy(loginUser.getSuAccount());
|
sysUsers.setUpdateBy(loginUser.getSuAccount());
|
} else {
|
sysUsers.setCreateBy(AppConstance.SYSTEM_USER);
|
sysUsers.setUpdateBy(AppConstance.SYSTEM_USER);
|
}
|
sysUsers.setSuAccountStatus(AppConstance.ACCOUNT_STATUS_ACTIVATE);
|
sysUsers.setSuValid(AppConstance.RECORD_VALID);
|
if (sysUsers.getCompanyId() == null) {
|
sysUsers.setCompanyId(loginUser.getCompanyId());
|
}
|
try {
|
sysUsers.setSuRegisterTime(new Date());
|
sysUsers.setSuPassword(PasswordUtil.getEncrypUserPwd(sysUsers));
|
} catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
|
LogUtil.error("用户密码加密失败", e);
|
throw new GlobleException(SystemErrorCode.DATA_ADD_FAIL, sysUsers.getSuAccount());
|
}
|
return sysUsersDao.insert(sysUsers);
|
}
|
|
@Override
|
public int modifyByMap(SysUsers oldSysUsers, SysUsers newSysUsers) {
|
// 判断账号是否重复
|
if (serviceUtil.updateCheckRepeat(tableName, SU_ACCOUNT, newSysUsers.getSuAccount(), SU_ID,
|
newSysUsers.getSuId())) {
|
throw new GlobleException(AppMessageCode.User.ACCOUNT_EXIST, newSysUsers.getSuAccount());
|
}
|
SysUsers loginUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
newSysUsers.setUpdateBy(loginUser.getSuName());
|
Map<String, Object> modifyMap = null;
|
try {
|
if (!ModelUtils.isModified(oldSysUsers, newSysUsers)) {
|
return MatrixConstance.DML_SUCCESSS;
|
}
|
modifyMap = ModelUtils.comparePojo2Map(oldSysUsers, newSysUsers);
|
} catch (Exception e) {
|
throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newSysUsers.getSuAccount());
|
}
|
if (modifyMap.size() > 0) {
|
modifyMap.put("suId", oldSysUsers.getSuId());
|
sysUsersDao.updateByMap(modifyMap);
|
}
|
//删除用户权限缓存
|
String redisKey=DefaultAuthorityManager.USER_POWER_REDISKEY+ SecureUtil.md5(oldSysUsers.getSuId()+"");
|
String redisKeyPc=DefaultAuthorityManager.USER_POWER_REDISKEY_PC+ SecureUtil.md5(oldSysUsers.getSuId()+"");
|
LocalCache.remove(redisKey);
|
LocalCache.remove(redisKeyPc);
|
|
return MatrixConstance.DML_SUCCESSS;
|
}
|
|
@Override
|
public int modifyByModel(SysUsers sysUsers) {
|
|
return sysUsersDao.updateByModel(sysUsers);
|
|
}
|
|
@Override
|
public int remove(List<String> list) {
|
|
return sysUsersDao.deleteByIds(list);
|
|
}
|
|
@Override
|
public int removeById(String suId) {
|
|
return sysUsersDao.deleteById(Long.valueOf(suId));
|
|
}
|
|
@Override
|
public int removeByModel(SysUsers sysUsers) {
|
|
return sysUsersDao.deleteByModel(sysUsers);
|
|
}
|
|
@Override
|
public List<SysUsers> findInPage(SysUsers sysUsers, PaginationVO pageVo) {
|
|
return sysUsersDao.selectInPage(sysUsers, pageVo);
|
|
}
|
|
@Override
|
public List<SysUsers> findByModel(SysUsers sysUsers) {
|
|
return sysUsersDao.selectByModel(sysUsers);
|
|
}
|
|
@Override
|
public int findTotal(SysUsers sysUsers) {
|
|
return sysUsersDao.selectTotalRecord(sysUsers);
|
|
}
|
|
@Override
|
public SysUsers findById(Long suId) {
|
|
return sysUsersDao.selectById(suId);
|
|
}
|
|
@Override
|
public void lockUser(String suAccount) {
|
sysUsersDao.changeUserStatus(suAccount, AppConstance.ACCOUNT_STATUS_LOCKED);
|
}
|
|
@Override
|
public void unlockUser(String suAccount) {
|
// 修改登录错误的日志
|
cleanUserTodayErrorLoginTime(suAccount);
|
|
sysUsersDao.changeUserStatus(suAccount, AppConstance.ACCOUNT_STATUS_ACTIVATE);
|
}
|
|
@Override
|
public int countUserTodayErrorLoginTimes(String suAccount) {
|
return sysUsersDao.countUserTodayErrorLoginTimes(suAccount);
|
}
|
|
@Override
|
public void addUserLoginRecord(SysUserLoginRecord loginRecord) {
|
sysUsersDao.insertLoginRecord(loginRecord);
|
}
|
|
@Override
|
public void cleanUserTodayErrorLoginTime(String suAccount) {
|
sysUsersDao.cleanUserTodayErrorLoginTime(suAccount);
|
|
}
|
|
@Override
|
public int updateUserPassword(Long suId, String suPassword) {
|
|
return sysUsersDao.updateUserPassword(suId, suPassword);
|
}
|
|
|
@Override
|
public List<SysUsers> findByRoleName(Boolean limitShopId, String roleName) {
|
SysUsers shopstaffInfo = new SysUsers();
|
SysUsers loginUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
shopstaffInfo.setCompanyId(loginUser.getCompanyId());
|
if (limitShopId) {
|
shopstaffInfo.setShopId(loginUser.getShopId());
|
}
|
if (StringUtils.isNotBlank(roleName)) {
|
shopstaffInfo.setRoleName(roleName);
|
}
|
List<SysUsers> dataList = sysUsersDao.selectByRoleName(shopstaffInfo);
|
return dataList;
|
}
|
|
|
@Override
|
public List<SysUsers> findByCodeBeaStateShop(Long shopId, SysBeauticianState sysBeauticianState,
|
String panBanCodes) {
|
|
|
return sysUsersDao.findByCodeBeaStateShop(shopId, sysBeauticianState, panBanCodes);
|
}
|
|
@Override
|
public int findByCodeBeaStateShopCount(Long shopId, SysProjServices sysProjServices, List<String> panBanCodes) {
|
|
sysProjServices.setStartTime(sysProjServices.getStartTime());
|
sysProjServices
|
.setEndTime(DateUtil.getNextNMinute(sysProjServices.getStartTime(), sysProjServices.getTotalTime()));
|
return sysUsersDao.findByCodeBeaStateShopCount(shopId, sysProjServices, panBanCodes);
|
}
|
|
|
@Override
|
public List<AppVersion> findAppVersion() {
|
return sysUsersDao.selectAppVersion();
|
}
|
|
@Override
|
public SysUsers findByOpenId(String openId, Long companyId) {
|
return sysUsersDao.selectUserByOpenId(openId);
|
}
|
}
|