基于 Java 的疫情防控管理系統(tǒng)
項目介紹:通過對依社區(qū)為單位進(jìn)行人群的管理,以及疫苗的情況,包括小區(qū)狀況,通過RBAC進(jìn)行角色與用戶之間的權(quán)限管理。
項目:環(huán)境IDEA、Mysql數(shù)據(jù)庫,Tomcat服務(wù)器,SpringMVC,SpringBoot,AOP,攔截器,過濾器,全局異常,RBAC權(quán)限控制等。
1、登錄模塊(注冊)
@Service
public?class?UserService extends?BaseService {
@Resource
//引入dao層
private?UserMapper userMapper;
@Resource
private?UserRoleMapper userRoleMapper;
@Resource
private?CommunityMapper communityMapper;
//用戶登錄
public?UserModel userLogin(String?userName,String?userPwd){
//對輸入的賬號密碼進(jìn)行判斷,是否符合格式
????????checkUserLoginParam(userName,userPwd);
//通過對數(shù)據(jù)庫的查詢,查看用戶是否存在
????????User temp = userMapper.queryUserByUserName(userName);
????????AssertUtil.isTrue(temp == null,"用戶不存在");
//判斷用戶的密碼是否正確,拿數(shù)據(jù)庫查詢到的用戶密碼和用戶輸入的用戶密碼進(jìn)行equest比較
????????checkUserPwd(userPwd,temp.getUserPwd());
//返回目標(biāo)對象 對密碼進(jìn)行加密
return?builderUserInfo(temp);
????}
/**
?????* //對輸入的賬號密碼進(jìn)行判斷 是否符合格式
?????* @param userName 賬號
?????* @param userPwd 密碼
?????*/
//對輸入的賬號密碼進(jìn)行判斷,是否符合格式
private?void?checkUserLoginParam(String?userName, String?userPwd) {
//用戶非空
????????AssertUtil.isTrue(StringUtils.isBlank(userName),"用戶名不能為空");
//密碼非空
????????AssertUtil.isTrue(StringUtils.isBlank(userPwd),"密碼不能為空");
????}
/**
?????* //判斷密碼是否正確
?????* @param userPwd 用戶輸入的密碼
?????* @param userPwd1 數(shù)據(jù)庫查出來的密碼
?????*/
//判斷用戶的密碼是否正確,拿數(shù)據(jù)庫查詢到的用戶密碼和用戶輸入的用戶密碼進(jìn)行equest比較
private?void?checkUserPwd(String?userPwd, String?userPwd1) {
//對用戶輸入的密碼進(jìn)行加密
????????userPwd = Md5Util.encode(userPwd);
????????AssertUtil.isTrue(!(userPwd.equals(userPwd1)),"密碼不正確");
????}
/**
?????*
?????* @param temp 當(dāng)前登錄對象
?????* @return
?????*/
//對密碼進(jìn)行加密 返回目標(biāo)對象
private?UserModel builderUserInfo(User temp) {
????????UserModel userModel = new?UserModel();
//為用戶密碼進(jìn)行加密
????????userModel.setUserIdStr(UserIDBase64.encoderUserID(temp.getId()));
????????userModel.setUserName(temp.getUserName());
????????userModel.setTrueName(temp.getTrueName());
return?userModel;
????}
/**
?????*
?????* @param userId 當(dāng)前Cookie存儲的用戶dId
?????* @param oldPassword 舊密碼
?????* @param newPassword 新密碼
?????* @param confirmPassword 確認(rèn)密碼
?????*/
//修改密碼
@Transactional(propagation = Propagation.REQUIRED)
public?void?updateUserPassword(Integer userId, String?oldPassword, String?newPassword, String?confirmPassword) {
//通過Id獲取user對象
????????User user = userMapper.selectByPrimaryKey(userId);
//參數(shù)校驗 (用戶,舊密碼,新密碼,確認(rèn)密碼)
????????checkPasswordParams(user,oldPassword,newPassword,confirmPassword);
//默認(rèn)參數(shù)設(shè)置,把用戶輸入的新密碼 加密 添加進(jìn)去
????????user.setUserPwd(Md5Util.encode(newPassword));
//執(zhí)行更新操作
????????AssertUtil.isTrue(userMapper.updateByPrimaryKeySelective(user)<1,"修改密碼失敗");
????}
//修改密碼的參數(shù)校驗
private?void?checkPasswordParams(User user, String?oldPassword, String?newPassword, String?confirmPwd) {
//用戶不能為空 (不存在)
????????AssertUtil.isTrue(null?== user,"用戶不存在");
//原始密碼 非空
????????System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
????????AssertUtil.isTrue(StringUtils.isBlank(oldPassword),"原始密碼不能為空");
//原始密碼是否和數(shù)據(jù)庫查詢到的密碼一致
????????AssertUtil.isTrue(!(Md5Util.encode(oldPassword).equals(user.getUserPwd())),"原始密碼不正確");
//新密碼不能為空
????????AssertUtil.isTrue(StringUtils.isBlank(newPassword),"新密碼不能為空");
//新密碼和原始密碼不能相同
????????AssertUtil.isTrue(oldPassword.equals(newPassword),"新密碼不能和原始密碼相同");
//確認(rèn)密碼非空
????????AssertUtil.isTrue(StringUtils.isBlank(confirmPwd),"確認(rèn)密碼不能為空");
//確認(rèn)密碼需要和新密碼一致
????????AssertUtil.isTrue(!(newPassword.equals(confirmPwd)),"新密碼和確認(rèn)密碼不一致");
????}
/**
?????* 多條件分頁查詢用戶數(shù)據(jù)
?????* @param query
?????* @return
?????*/
public?Map<String, Object> queryUserByParams (UserQuery query) {
????????Map<String, Object> map = new?HashMap<>();
????????PageHelper.startPage(query.getPage(), query.getLimit());
????????PageInfo pageInfo = new?PageInfo<>(userMapper.selectByParams(query));
????????map.put("code",0);
????????map.put("msg", "");
????????map.put("count", pageInfo.getTotal());
????????map.put("data", pageInfo.getList());
????????System.out.println("執(zhí)行完畢");
return?map;
????}
/**
?????* 添加用戶
?????* @param user
?????*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?saveUser(User user){
//參數(shù)校驗
????????checkParams(user.getUserName(),user.getComId(),user.getVc());
//設(shè)置默認(rèn)參數(shù)
????????user.setCreateDate(new?Date());
????????user.setUpdateDate(new?Date());
????????user.setUserPwd(Md5Util.encode("123456"));
//執(zhí)行添加,判斷結(jié)果
????????AssertUtil.isTrue(userMapper.insertSelective(user)==null,"用戶添加失敗!");
????????relaionUserRole(user.getId(),user.getRoleIds());
????????AssertUtil.isTrue(communityMapper.addNumByComId(user.getComId())<1, "社區(qū)用戶添加失敗");
????}
/**
?????* 用戶更新,修改
?????* @param user
?????*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?updateUser(User user){
//1.參數(shù)校驗
//通過用戶id獲取用戶對象
????????User temp=userMapper.selectByPrimaryKey(user.getId());
//判斷對象是否存在
????????AssertUtil.isTrue(temp==null,"待更新記錄不存在");
//驗證參數(shù)
????????checkParams1(user.getUserName(),user.getComId(),user.getVc());
//2.設(shè)置默認(rèn)參數(shù)
????????user.setUpdateDate(new?Date());
//3.執(zhí)行更新,返回結(jié)果
????????AssertUtil.isTrue(userMapper.updateByPrimaryKeySelective(user)<1,"用戶更新失敗!");
????????relaionUserRole(user.getId(),user.getRoleIds());
????}
private?void?checkParams(String?userName, Integer comId, Integer vc) {
????????AssertUtil.isTrue(StringUtils.isBlank(userName),"用戶名不能為空");
//驗證用戶是否存在
????????User temp=userMapper.queryUserByUserName(userName);
????????AssertUtil.isTrue(temp!=null,"用戶名已存在");
????????AssertUtil.isTrue(comId==null,"請輸入所在社區(qū)");
????????AssertUtil.isTrue(vc==null,"請選擇疫苗接種狀況");
????}
private?void?checkParams1(String?userName, Integer comId, Integer vc) {
????????AssertUtil.isTrue(StringUtils.isBlank(userName),"用戶名不能為空");
//驗證用戶是否存在
????????AssertUtil.isTrue(comId==null,"請輸入所在社區(qū)");
????????AssertUtil.isTrue(vc==null,"請選擇疫苗接種狀況");
????}
@Transactional(propagation = Propagation.REQUIRED)
public?void?deleteUser(Integer[] ids){
????????AssertUtil.isTrue(ids==null||ids.length==0,"請選擇您要刪除的記錄");
for?(int id:ids){
????????????User user=userMapper.selectByPrimaryKey(id);
????????????AssertUtil.isTrue(communityMapper.subNumByComId(user.getComId())!=ids.length, "社區(qū)用戶刪除失敗");
????????}
????????AssertUtil.isTrue(deleteBatch(ids) != ids.length,"用戶角色刪除失敗");
????}
/*SZC*/
/**
?????* 用戶注冊
?????* @param userName
?????* @param password1
?????* @param password2
?????* @param icon
?????*/
public?void?registerUser(String?userName, String?password1, String?password2, String?icon) {
// 參數(shù)校驗
????????checkRegister(userName, password1, password2, icon);
// 實例化user
????????User user = new?User();
//設(shè)置默認(rèn)參數(shù)
????????user.setUserName(userName);
????????user.setUserPwd(Md5Util.encode(password1));
????????user.setUserPhone(icon);
????????user.setCreateDate(new?Date());
????????user.setUpdateDate(new?Date());
// 執(zhí)行方法
????????AssertUtil.isTrue(userMapper.insertSelective(user)<1, "用戶添加失敗");
????}
/**
?????* 用戶注冊的參數(shù)校驗
?????* @param userName
?????* @param password1
?????* @param password2
?????* @param icon
?????*/
private?void?checkRegister(String?userName, String?password1, String?password2, String?icon) {
// 用戶名不為空
????????AssertUtil.isTrue(StringUtils.isBlank(userName), "請輸入用戶名");
// 判斷用戶名是否存在
????????User user1 = userMapper.selectByName(userName);
????????AssertUtil.isTrue(user1!=null, "該用戶已存在");
// 判斷手機(jī)號是否存在
????????User user2 = userMapper.selectByPhone(icon);
????????AssertUtil.isTrue(user2!=null, "該手機(jī)號已注冊過賬號");
// 密碼不為空
????????AssertUtil.isTrue(StringUtils.isBlank(password1), "請輸入密碼");
// 確認(rèn)密碼不為空
????????AssertUtil.isTrue(StringUtils.isBlank(password2), "請輸入確認(rèn)密碼");
// 密碼長度校驗
????????AssertUtil.isTrue(password1.length()<6?|| password1.length()>12, "密碼長度為6-12位");
// 密碼和確認(rèn)密碼相等
????????AssertUtil.isTrue(!password1.equals(password2), "確認(rèn)密碼與密碼不一致");
// 手機(jī)號合法
????????AssertUtil.isTrue(!PhoneUtil.isMobile(icon), "請輸入正確的手機(jī)號");
????}
/**
?????* 刪除用戶原先的角色,并重新賦予新的角色
?????* @param userId
?????* @param roleIds
?????*/
private?void?relaionUserRole(int userId, String?roleIds) {
// 通過id獲取用戶的角色數(shù)量
????????int count = userRoleMapper.countUserRoleByUserId(userId);
// count>0 說明用戶原先有角色 先刪除所有的角色
if?(count>0) {
????????????AssertUtil.isTrue(userRoleMapper.deleteUserRoleByUserId(userId)!=count, "用戶角色刪除失敗");
????????}
// 傳入的角色信息不為空 添加新的角色
if?(StringUtils.isNoneBlank(roleIds)) {
// 將傳入的roleIds轉(zhuǎn)成字符串?dāng)?shù)組
String[] roleStrIds = roleIds.split(",");
// 用來存放用戶的角色信息
????????????List roleList = new?ArrayList<>();
// 遍歷roleIds
for?(String?rid : roleStrIds) {
// 準(zhǔn)備對象
????????????????UserRole userRole = new?UserRole();
????????????????userRole.setUserId(userId);
????????????????userRole.setRoleId(Integer.parseInt(rid));
????????????????userRole.setCreateDate(new?Date());
????????????????userRole.setUpdateDate(new?Date());
????????????????roleList.add(userRole);
????????????}
????????????AssertUtil.isTrue(userRoleMapper.insertBatch(roleList) != roleList.size(), "用戶角色分配失敗");
????????}
????}
} 2、今日疫情模塊
核心代碼Service
@Service
public?class?ConfirmedService extends?BaseService {
@Resource
//引入ConfirmedMapper
private?ConfirmedMapper confirmedMapper;
@Resource
//引入user表
private?UserMapper userMapper;
@Resource
//引入user表
private?CommunityMapper communityMapper;
//角色的條件查詢以及 分頁
public?Map<String,Object> findRoleByParam(ConfirmedQuery confirmedQuery){
//實例化對象
????????Map<String,Object> map = new?HashMap<>();
//實例化分頁單位
????????PageHelper.startPage(confirmedQuery.getPage(), confirmedQuery.getLimit());
//開始分頁
????????PageInfo rlist = new?PageInfo<>(selectByParams(confirmedQuery));
????????map.put("code",0);
????????map.put("msg","success");
????????map.put("count",rlist.getTotal());
????????map.put("data",rlist.getList());
//返回Map
return?map;
????}
@Transactional(propagation = Propagation.REQUIRED) //涉及到事務(wù) 就需要此注解
//用戶模塊的添加
public?void?addUser(Confirmed user) {
//1、參數(shù)校驗
????????checkConfirmed(user.getTrueName(),user.getState());
if?(user.getComId().equals("浦東區(qū)")){
????????????user.setComId(1);
????????}
if?(user.getComId().equals("黃浦區(qū)")){
????????????user.setComId(2);
????????}
if?(user.getComId().equals("松江區(qū)")){
????????????user.setComId(3);
????????}
if?(user.getComId().equals("徐匯區(qū)")){
????????????user.setComId(4);
????????}
if?(user.getComId().equals("虹口區(qū)")){
????????????user.setComId(5);
????????}
//查詢user表中是否存在此人 不存在 添加上去 設(shè)置默認(rèn)值
????????User temp = userMapper.selectByPhone(user.getTcPhone());
// 手機(jī)號查詢用戶
if?(temp != null){
//健康狀態(tài)改成2 如果user表里面已經(jīng)有了的情況下
????????????userMapper.updateUserHealthById(temp.getUserPhone());
//默認(rèn)值 確診表中的userId字段
????????????user.setUserId(temp.getId());
????????}else?{ //表里沒有這個人的時候 添加 這個用戶 新建一個user對象
????????????User u = new?User();
//真實姓名
????????????u.setTrueName(user.getTrueName());
//名字
????????????u.setUserName(user.getTrueName());
//設(shè)置密碼 默認(rèn)值 :123456
????????????u.setUserPwd(Md5Util.encode("123456"));
//設(shè)置社區(qū)ID
????????????u.setComId(user.getComId());
//手機(jī)號 唯一
????????????u.setUserPhone(user.getTcPhone());
????????????u.setEcPhone(user.getTcPhone());
????????????u.setHealth("2");
//創(chuàng)建時間
????????????u.setCreateDate(new?Date());
//修改時間
????????????u.setUpdateDate(new?Date());
//添加用戶是否成功
????????????AssertUtil.isTrue(userMapper.insertSelective(u)<1,"插入用戶失敗");
//給確診人員添加其 userId
????????????Integer userId = userMapper.selectById(user.getTcPhone());
????????????user.setUserId(userId);
????????}
//2、默認(rèn)值設(shè)置
//確診日期
????????user.setCreateDate(new?Date());
//添加是否成功
????????AssertUtil.isTrue(insertSelective(user)<1,"添加失敗");
//relaionUserRole(user.getId(),user.getComId());
????}
@Transactional(propagation = Propagation.REQUIRED) //涉及到事務(wù) 就需要此注解
//用戶模塊的修改
public?void?changeUser(Confirmed user) {
//通過id獲取用戶信息
????????Confirmed temp = confirmedMapper.selectByPrimaryKey(user.getId());
//判斷用戶信息是否存在
????????AssertUtil.isTrue(temp == null,"當(dāng)前用戶不存在");
//校驗參數(shù)
????????changeConfirmed(user.getTrueName(),user.getTcPhone(),user.getState());
//修改是否成功 完整版
//AssertUtil.isTrue(updateByPrimaryKeySelective(user)<1,"修改失敗了");
//修改是否成功 完整版
????????AssertUtil.isTrue(confirmedMapper.uBPKS(user)<1,"修改失敗了");
????}
//修改的參數(shù)校驗
private?void?changeConfirmed(String?trueName, String?tcPhone, Integer state) {
//1、用戶名不能為空
????????AssertUtil.isTrue(StringUtils.isBlank(trueName),"姓名不能為空");
//2、當(dāng)前狀態(tài)不能為空
????????AssertUtil.isTrue(StringUtils.isBlank(tcPhone),"請輸入手機(jī)號");
//3、當(dāng)前狀態(tài)不能為空
????????AssertUtil.isTrue(state<1?|| state>4,"請選擇正確的狀態(tài)碼");
????}
//用戶模塊的添加的參數(shù)校驗
private?void?checkConfirmed(String?trueName, Integer state) {
//1、用戶名不能為空
????????AssertUtil.isTrue(StringUtils.isBlank(trueName),"姓名不能為空");
//2、當(dāng)前狀態(tài)不能為空
????????AssertUtil.isTrue(state<1?|| state>3,"請選擇正確的狀態(tài)碼");
????}
//添加社區(qū)時的校驗
private?void?relaionUserRole(Integer id, Integer comId) {
//準(zhǔn)備集合 存儲對象
????????List urlist = new?ArrayList<>();
//userId,roleId
//判斷是否選擇了角色信息
//只能選擇一個社區(qū)
????????AssertUtil.isTrue(comId>1?|| comId<1,"只能選擇一個社區(qū)");
//通過社區(qū)表的 com_id 查詢到社區(qū)表的對應(yīng)社區(qū)名
????????communityMapper.selectaddresComId(comId);
//添加
????}
@Transactional(propagation = Propagation.REQUIRED) //涉及到事務(wù) 就需要此注解
//確診人員的批量刪除
public?void?deleteUserByIds(Integer[] ids) {
//要刪除記錄不能為空
????????AssertUtil.isTrue(ids == null?|| ids.length==0,"請選擇要刪除的記錄");
//修改user表的狀態(tài)碼
for(Integer id: ids){
????????????Confirmed confirmed = confirmedMapper.selectId(id);
????????????System.out.println(id+ " -----------------"?);
????????????System.out.println(confirmed.getTrueName());
????????????AssertUtil.isTrue(userMapper.updateById(confirmed.getUserId())<1,"修改失敗");
????????}
//刪除確診表的個人信息記錄
????????AssertUtil.isTrue(deleteBatch(ids)!=ids.length,"刪除失敗");
????}
//查詢所有社區(qū)
public?List , Object>> queryComs() {
return?confirmedMapper.selectComs();
????}
}3、防疫管理模塊
核心代碼Service:
@Service
public?class?CommunityService extends?BaseService {
@Resource
private?CommunityMapper communityMapper;
/**
?????* 多條件分頁查詢
?????* @param query
?????* @return
?????*/
public?Map<String,Object> queryComByParams(CommunityQuery query){
????????Map<String,Object> map=new?HashMap<>();
//初始化分頁
????????PageHelper.startPage(query.getPage(), query.getLimit());
//開始分頁
????????PageInfo pageInfo=new?PageInfo<>(communityMapper.selectByParams(query));
//準(zhǔn)備數(shù)據(jù)
????????map.put("code",0);
????????map.put("msg","");
????????map.put("count",pageInfo.getTotal());
????????map.put("data",pageInfo.getList());
return?map;
????}
//查詢所有角色信息
public?List , Object>> findRoles(Integer userId) {
return?communityMapper.selectRoles(userId);
????}
}
//============================================================
@Service
public?class?VaccinationService {
@Resource
????VaccinationMapper vaccinationMapper;
/*多條件查詢*/
public?Map<String,Object> selectAll(VaccinationQuery vaccinationQuery) {
//創(chuàng)建map
????????Map<String,Object> map =new?HashMap<String,Object>();
//查數(shù)據(jù)并分頁
????????PageHelper.startPage(vaccinationQuery.getPage(),vaccinationQuery.getLimit());
????????PageInfo pageInfo=new?PageInfo<>(vaccinationMapper.selectByParams(vaccinationQuery));
????????map.put("code",0);
????????map.put("msg","success");
????????map.put("data",pageInfo.getList());
????????map.put("count",pageInfo.getTotal());
return?map;
????}
/*通過ID獲取對象*/
public?Vaccination selectId(Integer id) {
return?vaccinationMapper.selectById(id);
????}
/*添加*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?insertVaccination(Vaccination vaccination) {
//審核
????????checkOK(vaccination);
????????vaccination.setFirstDate(new?Date());
????????vaccination.setSecondDate(new?Date());
//插入
????????AssertUtil.isTrue(vaccinationMapper.insertSelective(vaccination)<1,"插入失敗");
????}
private?void?checkOK(Vaccination vaccinatio){
????????AssertUtil.isTrue(vaccinatio==null,"請輸入添加的角色");
????????AssertUtil.isTrue(StringUtils.isBlank(vaccinatio.getTrueName()),"用戶名不能為空");
????????AssertUtil.isTrue(StringUtils.isBlank(vaccinatio.getFirst()),"請?zhí)顚?是/否)");
????????AssertUtil.isTrue(StringUtils.isBlank(vaccinatio.getSecond()),"請?zhí)顚?是/否)");
????}
/*刪除*/
public?void?delete(Integer[] ids) {
????????AssertUtil.isTrue(ids==null||ids.length==0,"請選擇要刪除的用戶");
????????AssertUtil.isTrue(vaccinationMapper.deleteVa(ids)!=ids.length,"刪除失敗~~~");
????}
/*編輯*/
public?void?updateVa(Vaccination vaccination) {
????????checkOK(vaccination);
if(vaccination.getFirst()==null||"否".equals(vaccination.getFirst())){
????????????vaccination.setFirstDate(null);
????????}
if(vaccination.getSecond()==null||"否".equals(vaccination.getSecond())){
????????????vaccination.setSecondDate(null);
????????}
if("是".equals(vaccination.getFirst())){
????????????vaccination.setFirstDate(new?Date());
????????}
if("是".equals(vaccination.getSecond())){
????????????vaccination.setSecondDate(new?Date());
????????}
????????AssertUtil.isTrue(vaccinationMapper.updateByPrimaryKeySelective(vaccination)<1,"修改失敗~");
????}
} 4、系統(tǒng)管理模塊
核心代碼:Service:
@Service
public?class?RoleService extends?BaseService {
@Autowired(required = false)
????RoleMapper roleMapper;
@Autowired(required = false)
????RoleQuery roleQuery;
@Resource
private?ModuleMapper moduleMapper;
@Resource
private?PermissionMapper permissionMapper;
/*多條件查詢*/
public?Map<String,Object> selectRole(RoleQuery roleQuery){
//創(chuàng)建map
????????Map<String,Object> map =new?HashMap<String,Object>();
//查數(shù)據(jù)并分頁
????????PageHelper.startPage(roleQuery.getPage(),roleQuery.getLimit());
????????PageInfo pageInfo=new?PageInfo<>(roleMapper.selectByParams(roleQuery));
????????map.put("code",0);
????????map.put("msg","success");
????????map.put("data",pageInfo.getList());
????????map.put("count",pageInfo.getTotal());
return?map;
????}
/*添加角色*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?insertRole(Role role) {
//審核
????????checkRole(role);
//添加
????????role.setCreateDate(new?Date());
????????role.setUpdateDate(new?Date());
????????System.out.println("就差一點!!!!");
????????AssertUtil.isTrue(insertSelective(role)<1,"添加失敗了呢~");
????}
private?void?checkRole(Role role) {
//是否為空
????????AssertUtil.isTrue(role==null,"請輸入角色信息~");
//判斷是否已經(jīng)重復(fù)
????????System.out.println("判斷");
????????Role role1= roleMapper.selectByName(role.getRoleName());
????????System.out.println("判斷結(jié)束");
????????System.out.println(role1!=null);
????????AssertUtil.isTrue(role1!=null,"已添加過啦~");
????????System.out.println("退出@");
????}
/*編輯角色*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?updateRole(Role role) {
????????role.setUpdateDate(new?Date());
????????AssertUtil.isTrue(updateByPrimaryKeySelective(role)<1,"編輯失敗啦~");
????}
/**
?????* 刪除角色信息
?????* @param role
?????*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?deleteRole(Role role) {
// 驗證
????????AssertUtil.isTrue(role.getId()==null?|| selectByPrimaryKey(role.getId())==null, "待刪除角色不存在");
// 設(shè)定默認(rèn)值
????????role.setUpdateDate(new?Date());
// 刪除角色綁定的權(quán)限資源
????????int count = roleMapper.countPermissionByRoleId(role.getId());
if?(count>0) {
????????????int i = roleMapper.deletePermissionsByRoleId(role.getId());
????????????AssertUtil.isTrue(i!=count, "角色綁定的權(quán)限資源刪除失敗");
????????}
// 判斷是否成功
????????AssertUtil.isTrue(roleMapper.updateRoleById(role.getId())<1, "角色刪除失敗");
????}
/**
?????* 查詢所有角色
?????* @return
?????*/
public?List , Object>> seleceAllRole(Integer userId) {
return?roleMapper.seleceAllRole(userId);
????}
/**
?????* 給角色添加權(quán)限
?????* @param mids
?????* @param roleId
?????*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?addGrant(Integer[] mids, Integer roleId) {
// 判斷roleId是否存在
????????AssertUtil.isTrue(roleId==null?|| roleMapper.selectByPrimaryKey(roleId)==null, "待授權(quán)的角色不存在");
// 統(tǒng)計當(dāng)前角色的權(quán)限資源數(shù)量
????????int count = roleMapper.countPermissionByRoleId(roleId);
if?(count>0) {
// 如果角色存在權(quán)限資源,就全部刪除
????????????int num = roleMapper.deletePermissionsByRoleId(roleId);
????????????AssertUtil.isTrue(count!=num, "資源刪除失敗");
????????}
????????List plist = new?ArrayList<>();
if?(mids!=null?&& mids.length!=0) {
// 遍歷mids
for?(Integer mid : mids) {
// 實例化對象
????????????????Permission permission = new?Permission();
// 設(shè)置數(shù)據(jù)
????????????????permission.setRoleId(roleId);
????????????????permission.setModuleId(mid);
// 權(quán)限碼
????????????????permission.setAclValue(moduleMapper.selectByPrimaryKey(mid).getOptValue());
????????????????permission.setCreateDate(new?Date());
????????????????permission.setUpdateDate(new?Date());
// 添加到list
????????????????plist.add(permission);
????????????}
????????}
????????AssertUtil.isTrue(permissionMapper.insertBatch(plist)!=plist.size(), "角色權(quán)限更新失敗");
????}
} 5、用戶模塊

核心代碼Service:
@Service
public?class?RoleService extends?BaseService {
@Autowired(required = false)
????RoleMapper roleMapper;
@Autowired(required = false)
????RoleQuery roleQuery;
@Resource
private?ModuleMapper moduleMapper;
@Resource
private?PermissionMapper permissionMapper;
/*多條件查詢*/
public?Map<String,Object> selectRole(RoleQuery roleQuery){
//創(chuàng)建map
????????Map<String,Object> map =new?HashMap<String,Object>();
//查數(shù)據(jù)并分頁
????????PageHelper.startPage(roleQuery.getPage(),roleQuery.getLimit());
????????PageInfo pageInfo=new?PageInfo<>(roleMapper.selectByParams(roleQuery));
????????map.put("code",0);
????????map.put("msg","success");
????????map.put("data",pageInfo.getList());
????????map.put("count",pageInfo.getTotal());
return?map;
????}
/*添加角色*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?insertRole(Role role) {
//審核
????????checkRole(role);
//添加
????????role.setCreateDate(new?Date());
????????role.setUpdateDate(new?Date());
????????System.out.println("就差一點!!!!");
????????AssertUtil.isTrue(insertSelective(role)<1,"添加失敗了呢~");
????}
private?void?checkRole(Role role) {
//是否為空
????????AssertUtil.isTrue(role==null,"請輸入角色信息~");
//判斷是否已經(jīng)重復(fù)
????????System.out.println("判斷");
????????Role role1= roleMapper.selectByName(role.getRoleName());
????????System.out.println("判斷結(jié)束");
????????System.out.println(role1!=null);
????????AssertUtil.isTrue(role1!=null,"已添加過啦~");
????????System.out.println("退出@");
????}
/*編輯角色*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?updateRole(Role role) {
????????role.setUpdateDate(new?Date());
????????AssertUtil.isTrue(updateByPrimaryKeySelective(role)<1,"編輯失敗啦~");
????}
/**
?????* 刪除角色信息
?????* @param role
?????*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?deleteRole(Role role) {
// 驗證
????????AssertUtil.isTrue(role.getId()==null?|| selectByPrimaryKey(role.getId())==null, "待刪除角色不存在");
// 設(shè)定默認(rèn)值
????????role.setUpdateDate(new?Date());
// 刪除角色綁定的權(quán)限資源
????????int count = roleMapper.countPermissionByRoleId(role.getId());
if?(count>0) {
????????????int i = roleMapper.deletePermissionsByRoleId(role.getId());
????????????AssertUtil.isTrue(i!=count, "角色綁定的權(quán)限資源刪除失敗");
????????}
// 判斷是否成功
????????AssertUtil.isTrue(roleMapper.updateRoleById(role.getId())<1, "角色刪除失敗");
????}
/**
?????* 查詢所有角色
?????* @return
?????*/
public?List , Object>> seleceAllRole(Integer userId) {
return?roleMapper.seleceAllRole(userId);
????}
/**
?????* 給角色添加權(quán)限
?????* @param mids
?????* @param roleId
?????*/
@Transactional(propagation = Propagation.REQUIRED)
public?void?addGrant(Integer[] mids, Integer roleId) {
// 判斷roleId是否存在
????????AssertUtil.isTrue(roleId==null?|| roleMapper.selectByPrimaryKey(roleId)==null, "待授權(quán)的角色不存在");
// 統(tǒng)計當(dāng)前角色的權(quán)限資源數(shù)量
????????int count = roleMapper.countPermissionByRoleId(roleId);
if?(count>0) {
// 如果角色存在權(quán)限資源,就全部刪除
????????????int num = roleMapper.deletePermissionsByRoleId(roleId);
????????????AssertUtil.isTrue(count!=num, "資源刪除失敗");
????????}
????????List plist = new?ArrayList<>();
if?(mids!=null?&& mids.length!=0) {
// 遍歷mids
for?(Integer mid : mids) {
// 實例化對象
????????????????Permission permission = new?Permission();
// 設(shè)置數(shù)據(jù)
????????????????permission.setRoleId(roleId);
????????????????permission.setModuleId(mid);
// 權(quán)限碼
????????????????permission.setAclValue(moduleMapper.selectByPrimaryKey(mid).getOptValue());
????????????????permission.setCreateDate(new?Date());
????????????????permission.setUpdateDate(new?Date());
// 添加到list
????????????????plist.add(permission);
????????????}
????????}
????????AssertUtil.isTrue(permissionMapper.insertBatch(plist)!=plist.size(), "角色權(quán)限更新失敗");
????}
} 鏈接:https://blog.csdn.net/llAl_lAll/article/details/121065156
(完)
?關(guān)注公眾號:Java后端編程,回復(fù)下面關(guān)鍵字?
要Java學(xué)習(xí)完整路線,回復(fù)??路線?
缺Java入門視頻,回復(fù):?視頻?
要Java面試經(jīng)驗,回復(fù)??面試?
缺Java項目,回復(fù):?項目?
進(jìn)Java粉絲群:?加群?
PS:如果覺得我的分享不錯,歡迎大家隨手點贊、在看。
(完) 加我"微信"?獲取一份 最新Java面試題資料 請備注:666,不然不通過~
最近好文
1、再見了,收費的XShell,我改用國產(chǎn)良心工具!
3、SpringBoot快速開發(fā)利器:Spring Boot CLI
最近面試BAT,整理一份面試資料《Java面試BAT通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。 獲取方式:關(guān)注公眾號并回復(fù)?java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。 明天見(??ω??)??
評論
圖片
表情

核心代碼:service層





