Browse Source

权限管理 后台代码

wangdy 8 years ago
parent
commit
51a9091d6e

+ 85 - 0
src/main/java/com/uas/platform/b2c/common/account/controller/RoleController.java

@@ -0,0 +1,85 @@
+package com.uas.platform.b2c.common.account.controller;
+
+import com.uas.platform.b2c.common.account.model.Role;
+import com.uas.platform.b2c.common.account.service.RoleService;
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 账户管理--角色
+ *
+ * @author yingp
+ *
+ */
+@Controller
+@RequestMapping(value = "/account/role")
+public class RoleController {
+
+    @Autowired
+    private RoleService roleService;
+
+    private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    /**
+     * 取系统资源
+     *
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.GET)
+    @ResponseBody
+    public List<Role> getRoles() {
+        return roleService.findAll();
+    }
+
+    /**
+     * 添加自定义角色
+     *
+     * @param json
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.POST)
+    public ResponseEntity<String> save(@RequestBody String json) {
+        Role role = FlexJsonUtils.fromJson(json, Role.class);
+        role = roleService.save(role);
+        logger.log("角色", "添加角色", role.getDuty(), role.getDesc(), role.getId());
+        return new ResponseEntity<String>(HttpStatus.OK);
+    }
+
+    /**
+     * 删除角色
+     *
+     * @param roleId ID
+     * @return
+     */
+    @RequestMapping(value = "/{roleId}", method = RequestMethod.DELETE)
+    public ResponseEntity<String> delete(@PathVariable("roleId") Long roleId) {
+        Role role = roleService.findById(roleId);
+        roleService.delete(role);
+        logger.log("角色", "删除角色", role.getDuty(), role.getDesc(), role.getId());
+        return new ResponseEntity<String>(HttpStatus.OK);
+    }
+
+    /**
+     * 查询当前用户在当前企业的角色是否是管理员或者销售经理
+     *
+     * @return
+     */
+    @RequestMapping(value = "/currentRole", method =  RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getCurrentRoles(){
+        return roleService.getCurrentRoles();
+    }
+
+    @RequestMapping(value = "/isManager", method =  RequestMethod.GET)
+    @ResponseBody
+    public ModelMap isManager(){return  roleService.isManager(); }
+}

+ 69 - 0
src/main/java/com/uas/platform/b2c/common/account/dao/RoleDao.java

@@ -0,0 +1,69 @@
+package com.uas.platform.b2c.common.account.dao;
+
+import com.uas.platform.b2c.common.account.model.Role;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+
+@Repository
+public interface RoleDao extends JpaRepository<Role, Long> {
+
+    @Query("from Role r where r.enUU = :enUU order by id")
+    public List<Role> findByEnUU(@Param("enUU") long enUU);
+
+    /**
+     * 按角色描述查找角色
+     *
+     * @param enUU
+     * @param desc
+     * @return
+     */
+    public List<Role> findByEnUUAndDesc(long enUU, String desc);
+
+    /**
+     * 角色个数
+     *
+     * @param enUU
+     * @return
+     */
+    @Query("select count(r) from Role r where r.enUU = :enUU")
+    public int getCountByEnUU(@Param("enUU") long enUU);
+
+    /**
+     * 按角色描述查找角色个数
+     *
+     * @param enUU
+     * @param desc
+     * @return
+     */
+    @Query("select count(r) from Role r where r.enUU = :enUU and r.desc = :desc")
+    public int getCountByEnUUAndDesc(@Param("enUU") long enUU, @Param("desc") String desc);
+
+    List<Role> findByEnUUAndIssys(Long vendUU, short yes);
+
+    /**
+     * 查询当前用户在当前企业的角色是否是管理员或者销售经理<br>
+     *
+     * 分配客户需要
+     *
+     * @param enuu
+     * @param useruu
+     * @return
+     */
+    @Query(value = "select count(1) from sec$roles r left join sec$userrole u on r.role_id = u.role_id where r.role_enuu = :enuu and u.user_uu = :useruu and (r.role_name = 'ROLE_ADMIN' or r.role_name = 'ROLE_SALEMANAGER')",nativeQuery = true)
+    Double findByEnuuAndUseruu(@Param("enuu") Long enuu, @Param("useruu") Long useruu);
+
+    /**
+     * 是否是当前企业的管理员(只有管理员才能设置权限)
+     *
+     * @param enuu
+     * @param useruu
+     * @return
+     */
+    @Query(value = "select count(1) from sec$roles r left join sec$userrole u on r.role_id = u.role_id where r.role_enuu = :enuu and u.user_uu = :useruu and r.role_name = 'ROLE_ADMIN'",nativeQuery = true)
+    Double findByEnuuAndUserUU(@Param("enuu") Long enuu, @Param("useruu") Long useruu);
+}

+ 68 - 0
src/main/java/com/uas/platform/b2c/common/account/service/RoleService.java

@@ -0,0 +1,68 @@
+package com.uas.platform.b2c.common.account.service;
+
+import com.uas.platform.b2c.common.account.model.Role;
+import org.springframework.ui.ModelMap;
+
+import java.util.List;
+
+
+public interface RoleService {
+
+    /**
+     * 查找当前企业下所有角色
+     *
+     * @return
+     */
+    public List<Role> findAll();
+
+    /**
+     * 查找指定企业下所有角色
+     *
+     * @return
+     */
+    public List<Role> findByEnterprise(long enUU);
+
+    /**
+     * 保存角色信息
+     *
+     * @param role
+     * @return
+     */
+    public Role save(Role role);
+
+    /**
+     * 查找角色
+     *
+     * @param id
+     * @return
+     */
+    public Role findById(long id);
+
+    /**
+     * 删除角色
+     *
+     * @param role
+     */
+    public void delete(Role role);
+
+    /**
+     * 删除角色
+     *
+     * @param id
+     */
+    public void delete(long id);
+
+    /**
+     * 查询当前用户在当前企业的角色是否是管理员或者销售经理
+     *
+     * @return
+     */
+    public ModelMap getCurrentRoles();
+
+    /**
+     * 判断是否是当前企业的管理员
+     *
+     * @return
+     */
+    ModelMap isManager();
+}

+ 101 - 0
src/main/java/com/uas/platform/b2c/common/account/service/impl/RoleServiceImpl.java

@@ -0,0 +1,101 @@
+package com.uas.platform.b2c.common.account.service.impl;
+
+import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
+import com.uas.platform.b2c.common.account.dao.RoleDao;
+import com.uas.platform.b2c.common.account.dao.UserDao;
+import com.uas.platform.b2c.common.account.model.Role;
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.common.account.service.RoleService;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.model.Constant;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+
+@Service
+public class RoleServiceImpl implements RoleService {
+
+    @Autowired
+    private RoleDao roleDao;
+
+    @Autowired
+    private EnterpriseDao enterpriseDao;
+
+    @Autowired
+    private UserDao userDao;
+
+    @Override
+    public List<Role> findAll() {
+        return findByEnterprise(SystemSession.getUser().getEnterprise().getUu());
+    }
+
+    @Override
+    public List<Role> findByEnterprise(long enUU) {
+        List<Role> roles = roleDao.findByEnUU(enUU);
+        if (CollectionUtils.isEmpty(roles)) {
+            // 角色为空,说明资料未初始化或初始化失败,需重新init
+            enterpriseDao.callInitProcedure(enUU);
+            roles = roleDao.findByEnUU(enUU);
+        }
+        return roles;
+    }
+
+    @Override
+    public Role save(Role role) {
+        Assert.notNull(role.getDesc());
+        long enUU = SystemSession.getUser().getEnterprise().getUu();
+        // 角色描述不能重复
+        List<Role> roles = roleDao.findByEnUUAndDesc(enUU, role.getDesc());
+        if (roles.size() > 0 && !roles.get(0).equals(role))
+            throw new IllegalOperatorException("角色描述不能重复");
+        if (role.getName() == null) {
+            // 自定义角色
+            role.setName("ROLE_" + System.currentTimeMillis());
+            role.setEnUU(enUU);
+            role.setIsdefault(Constant.NO);
+            role.setIssys(Constant.NO);
+        }
+        return roleDao.save(role);
+    }
+
+    @Override
+    public Role findById(long id) {
+        return roleDao.findOne(id);
+    }
+
+    @Override
+    public void delete(Role role) {
+        if (role != null && role.getId() != null) {
+            List<User> users = userDao.findByRole(role.getId());
+            if (!CollectionUtils.isEmpty(users)) {
+                for (User user : users) {
+                    user.getRoles().remove(role);
+                }
+                userDao.save(users);
+            }
+            roleDao.delete(role);
+        }
+    }
+
+    @Override
+    public void delete(long id) {
+        delete(findById(id));
+    }
+
+    @Override
+    public ModelMap getCurrentRoles() {
+        return new ModelMap("count", roleDao.findByEnuuAndUseruu(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU()));
+    }
+
+    @Override
+    public ModelMap isManager() {
+        return new ModelMap("isManager", roleDao.findByEnuuAndUserUU(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU()) > 0 ? true : false);
+    }
+
+}