package com.ks.app.service.impl.admin; import com.ks.app.dao.admin.AdminRoleRuleDao; import com.ks.app.entity.admin.AdminRole; import com.ks.app.entity.admin.AdminRoleRule; import com.ks.app.service.inter.admin.AdminRoleRuleService; import com.ks.app.service.inter.admin.AdminUserRolesService; import com.ks.app.service.query.admin.AdminRoleRuleQuery; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @Service public class AdminRoleRuleServiceImpl implements AdminRoleRuleService { @Resource private AdminRoleRuleDao adminRoleRuleDao; @Resource private AdminUserRolesService adminUserRolesService; @Override public List list(AdminRoleRuleQuery adminRoleRuleQuery, int page, int pageSize) { AdminRoleRuleDao.DaoQuery daoQuery = new AdminRoleRuleDao.DaoQuery(); daoQuery.role = adminRoleRuleQuery.getRole(); daoQuery.path = adminRoleRuleQuery.getPath(); daoQuery.navPage = adminRoleRuleQuery.getNavPage(); daoQuery.roles = adminRoleRuleQuery.getRoles(); daoQuery.sortList = Arrays.asList(new Sort.Order[]{Sort.Order.desc("createTime")}); daoQuery.start = (page - 1) * pageSize; daoQuery.count = pageSize; return adminRoleRuleDao.list(daoQuery); } @Override public long count(AdminRoleRuleQuery adminRoleRuleQuery) { AdminRoleRuleDao.DaoQuery daoQuery = new AdminRoleRuleDao.DaoQuery(); daoQuery.role = adminRoleRuleQuery.getRole(); daoQuery.path = adminRoleRuleQuery.getPath(); daoQuery.navPage = adminRoleRuleQuery.getNavPage(); daoQuery.roles = adminRoleRuleQuery.getRoles(); return adminRoleRuleDao.count(daoQuery); } @Override public AdminRoleRule get(String id) { Query query = new Query(); query.addCriteria(Criteria.where("_id").is(id)); return adminRoleRuleDao.findOne(query); } @Override public void add(AdminRoleRule adminRoleRule) throws Exception { if (adminRoleRule.getId() == null) { adminRoleRule.setId(adminRoleRule.toId()); } if (adminRoleRule.getNavPage() == null) { adminRoleRule.setNavPage(false); } //查询主键ID是否存在 if (adminRoleRuleDao.get(adminRoleRule.getId()) != null) { throw new Exception("已存在"); } if (adminRoleRule.getCreateTime() == null) { adminRoleRule.setCreateTime(new Date()); } //保存 adminRoleRuleDao.save(adminRoleRule); } @Override public void update(AdminRoleRule adminRoleRule) { if (adminRoleRule.getUpdateTime() == null) { adminRoleRule.setUpdateTime(new Date()); } //更新 adminRoleRuleDao.updateSelective(adminRoleRule); } @Override public void delete(List idList) { for (String id : idList) { adminRoleRuleDao.delete(id); } } @Override public List listPaths(String adminId) { List list = adminUserRolesService.listRoleByAdminId(adminId); if (list == null) { return new ArrayList<>(); } AdminRoleRuleQuery query = new AdminRoleRuleQuery(); query.setRoles(list); query.setNavPage(false); long count = count(query); List ruleList = list(query, 1, (int) count); List paths = new ArrayList<>(); for (AdminRoleRule roleRule : ruleList) { paths.add(roleRule.getPath()); } return paths; } }