| package com.matrix.system.common.service.impl; | 
|   | 
| 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.LogUtil; | 
| import com.matrix.core.tools.ModelUtils; | 
| import com.matrix.core.tools.WebUtil; | 
| 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.service.SysUsersService; | 
| import com.matrix.system.common.tools.PasswordUtil; | 
| import com.matrix.system.common.tools.ServiceUtil; | 
| 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 com.matrix.system.hive.plugin.util.CollectionUtils; | 
| import com.matrix.core.tools.DateUtil; | 
| 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()); | 
|             return sysUsersDao.updateByMap(modifyMap); | 
|         } | 
|         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); | 
|     } | 
|   | 
|   | 
| } |