精华内容
下载资源
问答
  • 部门管理
    千次阅读
    2020-04-20 17:45:37

    部门管理界面 /system/dept

    在这里插入图片描述

    SysDeptController控制部门CRUD

    /**
     * 部门信息
     * 
     * @author ruoyi
     */
    @Controller
    @RequestMapping("/system/dept")
    public class SysDeptController extends BaseController
    {
        private String prefix = "system/dept";
    
        @Autowired
        private ISysDeptService deptService;
    
        // 跳转到dept.html
        @RequiresPermissions("system:dept:view")
        @GetMapping()
        public String dept()
        {
            return prefix + "/dept";
        }
    
        // 各种Controller方法...
    

    pojo - sys_dept部门表

    /**
     * 部门表 sys_dept
     * 
     * @author ruoyi
     */
    public class SysDept extends BaseEntity
    {
        private static final long serialVersionUID = 1L;
    
        /** 部门ID */
        private Long deptId;
    
        /** 父部门ID */
        private Long parentId;
    
        /** 祖级列表 */
        private String ancestors;
    
        /** 部门名称 */
        private String deptName;
    
        /** 显示顺序 */
        private String orderNum;
    
        /** 负责人 */
        private String leader;
    
        /** 联系电话 */
        private String phone;
    
        /** 邮箱 */
        private String email;
    
        /** 部门状态:0正常,1停用 */
        private String status;
    
        /** 删除标志(0代表存在 2代表删除) */
        private String delFlag;
    
        /** 父部门名称 */
        private String parentName;
    
        public Long getDeptId()
        {
            return deptId;
        }
    
        public void setDeptId(Long deptId)
        {
            this.deptId = deptId;
        }
    
        public Long getParentId()
        {
            return parentId;
        }
    
        public void setParentId(Long parentId)
        {
            this.parentId = parentId;
        }
    
        public String getAncestors()
        {
            return ancestors;
        }
    
        public void setAncestors(String ancestors)
        {
            this.ancestors = ancestors;
        }
    
        @NotBlank(message = "部门名称不能为空")
        @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
        public String getDeptName()
        {
            return deptName;
        }
    
        public void setDeptName(String deptName)
        {
            this.deptName = deptName;
        }
    
        @NotBlank(message = "显示顺序不能为空")
        public String getOrderNum()
        {
            return orderNum;
        }
    
        public void setOrderNum(String orderNum)
        {
            this.orderNum = orderNum;
        }
    
        public String getLeader()
        {
            return leader;
        }
    
        public void setLeader(String leader)
        {
            this.leader = leader;
        }
    
        @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
        public String getPhone()
        {
            return phone;
        }
    
        public void setPhone(String phone)
        {
            this.phone = phone;
        }
    
        @Email(message = "邮箱格式不正确")
        @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
        public String getEmail()
        {
            return email;
        }
    
        public void setEmail(String email)
        {
            this.email = email;
        }
    
        public String getStatus()
        {
            return status;
        }
    
        public void setStatus(String status)
        {
            this.status = status;
        }
    
        public String getDelFlag()
        {
            return delFlag;
        }
    
        public void setDelFlag(String delFlag)
        {
            this.delFlag = delFlag;
        }
    
        public String getParentName()
        {
            return parentName;
        }
    
        public void setParentName(String parentName)
        {
            this.parentName = parentName;
        }
    
        @Override
        public String toString() {
            return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("deptId", getDeptId())
                .append("parentId", getParentId())
                .append("ancestors", getAncestors())
                .append("deptName", getDeptName())
                .append("orderNum", getOrderNum())
                .append("leader", getLeader())
                .append("phone", getPhone())
                .append("email", getEmail())
                .append("status", getStatus())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
        }
    }
    
    

    查询部门列表 /system/dept/list

        /**
         * 查询部门列表
         * @param dept
         * @return
         */
        @RequiresPermissions("system:dept:list")
        @PostMapping("/list")
        @ResponseBody
        public List<SysDept> list(SysDept dept)
        {
            // 查询部门列表
            List<SysDept> deptList = deptService.selectDeptList(dept);
            // 返回@ResponseBody显示
            return deptList;
        }
    

    service层

        /**
         * 查询部门管理数据
         * 
         * @param dept 部门信息
         * @return 部门信息集合
         */
        @Override
        @DataScope(deptAlias = "d")
        public List<SysDept> selectDeptList(SysDept dept)
        {
            return deptMapper.selectDeptList(dept);
        }
    
    

    dao层

    	<select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
            <include refid="selectDeptVo"/>
            where d.del_flag = '0'
            <if test="parentId != null and parentId != 0">
    			AND parent_id = #{parentId}
    		</if>
    		<if test="deptName != null and deptName != ''">
    			AND dept_name like concat('%', #{deptName}, '%')
    		</if>
    		<if test="status != null and status != ''">
    			AND status = #{status}
    		</if>
    		<!-- 数据范围过滤 -->
    		${params.dataScope}
    		order by d.parent_id, d.order_num
        </select>
    

    新增部门 /system/dept/add/{parentId}

    父部门信息回显

        /**
         * 新增部门
         */
        @GetMapping("/add/{parentId}")
        public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
        {
            // 获取到当前父部门的相关信息
            // 放入视图解析器中
            mmap.put("dept", deptService.selectDeptById(parentId));
            // 跳转到添加部门的html页面
            return prefix + "/add";
        }
    

    部门选择 /system/dept/selectDeptTree/{deptId}

    部门树信息回显

    在这里插入图片描述

        /**
         * 选择部门树
         */
        @GetMapping("/selectDeptTree/{deptId}")
        public String selectDeptTree(@PathVariable("deptId") Long deptId, ModelMap mmap)
        {
            // 根据部门id查询到当前部门信息
            mmap.put("dept", deptService.selectDeptById(deptId));
            // 跳转到tree.html
            return prefix + "/tree";
        }
    

    html提交到 /system/menu/menuTreeData

        /**
         * 加载所有菜单列表树
         */
        @GetMapping("/menuTreeData")
        @ResponseBody
        public List<Ztree> menuTreeData()
        {
            Long userId = ShiroUtils.getUserId();
            // 查询当前用户的所有菜单树信息
            List<Ztree> ztrees = menuService.menuTreeData(userId);
            // 返回显示@ResponseBody
            return ztrees;
        }
    
    

    pojo - Ztree树结构实体类

    /**
     * Ztree树结构实体类
     * 
     * @author ruoyi
     */
    public class Ztree implements Serializable
    {
        private static final long serialVersionUID = 1L;
    
        /** 节点ID */
        private Long id;
    
        /** 节点父ID */
        private Long pId;
    
        /** 节点名称 */
        private String name;
    
        /** 节点标题 */
        private String title;
    
        /** 是否勾选 */
        private boolean checked = false;
    
        /** 是否展开 */
        private boolean open = false;
    
        /** 是否能勾选 */
        private boolean nocheck = false;
    
        public Long getId()
        {
            return id;
        }
    
        public void setId(Long id)
        {
            this.id = id;
        }
    
        public Long getpId()
        {
            return pId;
        }
    
        public void setpId(Long pId)
        {
            this.pId = pId;
        }
    
        public String getName()
        {
            return name;
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public String getTitle()
        {
            return title;
        }
    
        public void setTitle(String title)
        {
            this.title = title;
        }
    
        public boolean isChecked()
        {
            return checked;
        }
    
        public void setChecked(boolean checked)
        {
            this.checked = checked;
        }
    
        public boolean isOpen()
        {
            return open;
        }
    
        public void setOpen(boolean open)
        {
            this.open = open;
        }
    
        public boolean isNocheck()
        {
            return nocheck;
        }
    
        public void setNocheck(boolean nocheck)
        {
            this.nocheck = nocheck;
        }
    }
    
    

    Ztree表示各个部门之间的关系

    在这里插入图片描述

    检验部门名是否唯一 /system/dept/checkDeptNameUnique

        /**
         * 校验部门名称
         */
        @PostMapping("/checkDeptNameUnique")
        @ResponseBody
        public String checkDeptNameUnique(SysDept dept)
        {
            return deptService.checkDeptNameUnique(dept);
        }
    

    service 层

        /**
         * 校验部门名称是否唯一
         * 
         * @param dept 部门信息
         * @return 结果
         */
        @Override
        public String checkDeptNameUnique(SysDept dept)
        {
            Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
            SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId());
            if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue())
            {
                return UserConstants.DEPT_NAME_NOT_UNIQUE;
            }
            return UserConstants.DEPT_NAME_UNIQUE;
        }
    

    dao层

    	<select id="checkDeptNameUnique" resultMap="SysDeptResult">
    	    <include refid="selectDeptVo"/>
    		where dept_name=#{deptName} and parent_id = #{parentId}
    	</select>
    

    pojo - UserConstants 用户常量信息类

    在这里插入图片描述

    package com.ruoyi.common.constant;
    
    /**
     * 用户常量信息
     * 
     * @author ruoyi
     */
    public class UserConstants
    {
        /**
         * 平台内系统用户的唯一标志
         */
        public static final String SYS_USER = "SYS_USER";
    
        /** 正常状态 */
        public static final String NORMAL = "0";
    
        /** 异常状态 */
        public static final String EXCEPTION = "1";
    
        /** 用户封禁状态 */
        public static final String USER_BLOCKED = "1";
    
        /** 角色封禁状态 */
        public static final String ROLE_BLOCKED = "1";
    
        /** 部门正常状态 */
        public static final String DEPT_NORMAL = "0";
    
        /** 字典正常状态 */
        public static final String DICT_NORMAL = "0";
    
        /** 是否为系统默认(是) */
        public static final String YES = "Y";
    
        /**
         * 用户名长度限制
         */
        public static final int USERNAME_MIN_LENGTH = 2;
        public static final int USERNAME_MAX_LENGTH = 20;
    
        /** 登录名称是否唯一的返回结果码 */
        public final static String USER_NAME_UNIQUE = "0";
        public final static String USER_NAME_NOT_UNIQUE = "1";
    
        /** 手机号码是否唯一的返回结果 */
        public final static String USER_PHONE_UNIQUE = "0";
        public final static String USER_PHONE_NOT_UNIQUE = "1";
    
        /** e-mail 是否唯一的返回结果 */
        public final static String USER_EMAIL_UNIQUE = "0";
        public final static String USER_EMAIL_NOT_UNIQUE = "1";
    
        /** 部门名称是否唯一的返回结果码 */
        public final static String DEPT_NAME_UNIQUE = "0";
        public final static String DEPT_NAME_NOT_UNIQUE = "1";
    
        /** 角色名称是否唯一的返回结果码 */
        public final static String ROLE_NAME_UNIQUE = "0";
        public final static String ROLE_NAME_NOT_UNIQUE = "1";
    
        /** 岗位名称是否唯一的返回结果码 */
        public final static String POST_NAME_UNIQUE = "0";
        public final static String POST_NAME_NOT_UNIQUE = "1";
    
        /** 角色权限是否唯一的返回结果码 */
        public final static String ROLE_KEY_UNIQUE = "0";
        public final static String ROLE_KEY_NOT_UNIQUE = "1";
    
        /** 岗位编码是否唯一的返回结果码 */
        public final static String POST_CODE_UNIQUE = "0";
        public final static String POST_CODE_NOT_UNIQUE = "1";
    
        /** 菜单名称是否唯一的返回结果码 */
        public final static String MENU_NAME_UNIQUE = "0";
        public final static String MENU_NAME_NOT_UNIQUE = "1";
    
        /** 字典类型是否唯一的返回结果码 */
        public final static String DICT_TYPE_UNIQUE = "0";
        public final static String DICT_TYPE_NOT_UNIQUE = "1";
    
        /** 参数键名是否唯一的返回结果码 */
        public final static String CONFIG_KEY_UNIQUE = "0";
        public final static String CONFIG_KEY_NOT_UNIQUE = "1";
    
        /**
         * 密码长度限制
         */
        public static final int PASSWORD_MIN_LENGTH = 5;
        public static final int PASSWORD_MAX_LENGTH = 20;
    
        /**
         * 用户类型
         */
        public static final String SYSTEM_USER_TYPE = "00";
        public static final String REGISTER_USER_TYPE = "01";
    
        /**
         * 手机号码格式限制
         */
        public static final String MOBILE_PHONE_NUMBER_PATTERN = "^0{0,1}(13[0-9]|15[0-9]|14[0-9]|18[0-9])[0-9]{8}$";
    
        /**
         * 邮箱格式限制
         */
        public static final String EMAIL_PATTERN = "^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?";
    }
    
    

    保存提交 /system/dept/add

        /**
         * 新增保存部门
         */
        @Log(title = "部门管理", businessType = BusinessType.INSERT)
        @RequiresPermissions("system:dept:add")
        @PostMapping("/add")
        @ResponseBody
        public AjaxResult addSave(@Validated SysDept dept)
        {
            if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
            {
                return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
            }
            dept.setCreateBy(ShiroUtils.getLoginName());
            // 插入信息,提示是否成功
            return toAjax(deptService.insertDept(dept));
        }
    

    service层

        /**
         * 新增保存部门信息
         * 
         * @param dept 部门信息
         * @return 结果
         */
        @Override
        public int insertDept(SysDept dept)
        {
            SysDept info = deptMapper.selectDeptById(dept.getParentId());
            // 如果父节点不为"正常"状态,则不允许新增子节点
            if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
            {
                throw new BusinessException("部门停用,不允许新增");
            }
            // 更新祖先信息
            // 层层嵌套,用逗号分隔
            dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
            // 插入部门信息
            return deptMapper.insertDept(dept);
        }
    

    dao层

    	<insert id="insertDept" parameterType="SysDept">
     		insert into sys_dept(
     			<if test="deptId != null and deptId != 0">dept_id,</if>
     			<if test="parentId != null and parentId != 0">parent_id,</if>
     			<if test="deptName != null and deptName != ''">dept_name,</if>
     			<if test="ancestors != null and ancestors != ''">ancestors,</if>
     			<if test="orderNum != null and orderNum != ''">order_num,</if>
     			<if test="leader != null and leader != ''">leader,</if>
     			<if test="phone != null and phone != ''">phone,</if>
     			<if test="email != null and email != ''">email,</if>
     			<if test="status != null">status,</if>
     			<if test="createBy != null and createBy != ''">create_by,</if>
     			create_time
     		)values(
     			<if test="deptId != null and deptId != 0">#{deptId},</if>
     			<if test="parentId != null and parentId != 0">#{parentId},</if>
     			<if test="deptName != null and deptName != ''">#{deptName},</if>
     			<if test="ancestors != null and ancestors != ''">#{ancestors},</if>
     			<if test="orderNum != null and orderNum != ''">#{orderNum},</if>
     			<if test="leader != null and leader != ''">#{leader},</if>
     			<if test="phone != null and phone != ''">#{phone},</if>
     			<if test="email != null and email != ''">#{email},</if>
     			<if test="status != null">#{status},</if>
     			<if test="createBy != null and createBy != ''">#{createBy},</if>
     			sysdate()
     		)
    	</insert>
    

    在这里插入图片描述

    编辑部门 /system/dept/edit/{deptId}

    信息回显

        /**
         * 修改
         */
        @GetMapping("/edit/{deptId}")
        public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap)
        {
            SysDept dept = deptService.selectDeptById(deptId);
            if (StringUtils.isNotNull(dept) && 100L == deptId)
            {
                dept.setParentName("无");
            }
            // 将查询到的部门信息放入视图解析器,便于回显
            mmap.put("dept", dept);
            // 跳转到编辑界面
            return prefix + "/edit";
        }
    

    信息保存 /system/dept/edit

        /**
         * 保存
         */
        @Log(title = "部门管理", businessType = BusinessType.UPDATE)
        @RequiresPermissions("system:dept:edit")
        @PostMapping("/edit")
        @ResponseBody
        public AjaxResult editSave(@Validated SysDept dept)
        {
            if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
            {
                return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
            }
            else if (dept.getParentId().equals(dept.getDeptId()))
            {
                return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
            }
            dept.setUpdateBy(ShiroUtils.getLoginName());
            return toAjax(deptService.updateDept(dept));
        }
    

    删除部门 /system/dept/remove/{deptId}

        /**
         * 删除
         */
        @Log(title = "部门管理", businessType = BusinessType.DELETE)
        @RequiresPermissions("system:dept:remove")
        @GetMapping("/remove/{deptId}")
        @ResponseBody
        public AjaxResult remove(@PathVariable("deptId") Long deptId)
        {
            if (deptService.selectDeptCount(deptId) > 0)
            {
                return AjaxResult.warn("存在下级部门,不允许删除");
            }
            if (deptService.checkDeptExistUser(deptId))
            {
                return AjaxResult.warn("部门存在用户,不允许删除");
            }
            // 提示消息
            return toAjax(deptService.deleteDeptById(deptId));
        }
    
    更多相关内容
  • 部门管理项目2

    2020-12-13 17:50:44
    在这里,整理发布了各部门管理项目2,只为方便大家用于学习、参考,喜欢各部门管理项目2的朋友...该文档为各部门管理项目2,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • IT部门管理系统V4.0 破解版
  • 微信企业号部门管理

    2016-02-02 17:41:41
    微信企业号部门管理,带增删改查,不需要回调接口,修改参数即可测试使用
  • IT部门管理系统7.0,6.0管理软件信息化管理系统
  • 你还在为物业管理各部门管理标准而忧愁?你还在为不知道物业管理各部门管理标准而懵圈?在这里,管理资源...该文档为物业管理各部门管理标准,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 生产制造企业各部门管理流程结构图.pdf生产制造企业各部门管理流程结构图.pdf生产制造企业各部门管理流程结构图.pdf生产制造企业各部门管理流程结构图.pdf生产制造企业各部门管理流程结构图.pdf生产制造企业各部门...
  • IT部门管理制度

    2013-03-05 16:13:13
    针对IT公司设定的部门管理规范和制度,精简设定了规范和细则,可操作性强。
  • 公司部门管理系统源码
  • 公司部门管理办法实用版
  • 公司部门管理办法.doc

    2022-06-29 09:25:47
    公司部门管理办法
  • 物资采购部门管理模式
  • 酒店各部门管理办法
  • 网约车运维部门管理系统体系.pdf网约车运维部门管理系统体系.pdf网约车运维部门管理系统体系.pdf网约车运维部门管理系统体系.pdf网约车运维部门管理系统体系.pdf
  • MyOffice OA系统,包含部门信息,部门管理,机构管理等。
  • 电子商务部门管理制度
  • 研发部门管理制度.docx
  • IT部门管理制度.docx

    2021-11-17 09:46:27
    IT部门管理制度.docx
  • 研发部门管理制度.pdf

    2022-07-13 00:51:02
    研发部门管理制度.pdf研发部门管理制度.pdf研发部门管理制度.pdf研发部门管理制度.pdf研发部门管理制度.pdf研发部门管理制度.pdf研发部门管理制度.pdf研发部门管理制度.pdf
  • 企业微信-通讯录管理-成员管理以及部门管理 官方文档 通讯录管理的相关接口可以对企业微信里面部门、成员、标签等通讯录信息进行查询、添加、修改、删除等操作。 一、开启企业微信通讯录相关权限 我们使用通讯录管理...

    企业微信-通讯录管理-成员管理以及部门管理

    官方文档
    通讯录管理的相关接口可以对企业微信里面部门、成员、标签等通讯录信息进行查询、添加、修改、删除等操作。

    一、开启企业微信通讯录相关权限

    我们使用通讯录管理的相关接口,原则上需要使用 通讯录管理的 secret,但实际上我们也可以使用企业内应用 secret
    但是使用应用 secret 只能进行“查询”、“邀请”等非写操作,而且只能操作应用可见范围内的通讯录。

    获取通讯录管理 secret 的流程:

    1. 进入企业微信管理后台,在“管理工具” — “通讯录同步”开启“API 接口同步”
    1. 默认是只读通讯录,在改状态下我们只能调用读取类型的 API 接口,我们将接口设置为“API 编辑通讯录”。设置为 API 接口通讯录后我们就可以调用编辑类型的 API 接口了。
    2. 我们在开启“API 编辑通讯录”时还可以设置“开启手动编辑”,但是我们需要设置接收事件的 URL 才可以同步更新数据源。
    1. 点击“查看 Secret”来获取 Secret 以供后面我们使用接口使用。

    二、成员管理

    1.创建成员

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/create
    • 请求方式:POST
    • Token:通过 Secret 获取(所有请求都需要 Token,后面将不再强调)
    • 请求体:
    {
      "userid": "zhangsan",//用户id,任意编写,不可重复,必填项
      "name": "张三",//用户名,必填项
      "alias": "jackzhang",//用户别名,非必填项
      "department": [2],//部门列表,默认第一个部门id为1其他顺延,可在通讯录内查看,必填项
      "mobile": "+86 15355392295"//手机号,非必填项
    }
    
    • 返回结果:
    	{ "errcode": 0, "errmsg": "created" }
    //errcode	返回码,为 0 则请求成功
    //errmsg	对返回码的文本描述内容,created是添加
    //其他请求返回结果大体相同,下面我们主要对不同的地方进行解释
    
    • 请求结果
    • 请求体参数:
    • 注意:
      a.手机号码企业内唯一,手机号和邮箱两者不可都为空
      b.该接口仅通讯录同步助手或第三方通讯录应用可调用。
      c.每个部门下的部门、成员总数不能超过 3 万个。

    2.读取成员

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USERID
    • 请求方式:GET
    • URL 参数说明:
      access_token:必填,调用接口凭证
      userid:必填,成员 UserID。对应管理端的帐号,企业内必须唯一。不区分大小写,长度为 1~64 个字节
    • 返回结果:
    	{"errcode":0,
        "errmsg":"ok",
        "userid":"zhangsan",
        "name":"张三",
        "department":[2],
        "position":"",
        "mobile":"15355392295",
        "gender":"0",
        "email":"",
        "avatar":"",
        "status":4,
        "isleader":0,
        "extattr":{"attrs":[]},
        "telephone":"",
        "enable":1,
        "hide_mobile":0,
        "order":[0],
        "main_department":2,
        "qr_code":"https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vcf173435ef4ab2387",
        "alias":"jackzhang",
        "is_leader_in_dept":[0],
        "thumb_avatar":""}
        //在返回结果里面暂时添加成员时可设置的所有参数,参数未设置则默认为空,参数代表函数与添加成员时参数含义相同
        //userid就是成员的账号
    

    3.更新成员

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=ACCESS_TOKEN
    • 请求方式:POST
    • 请求体:
    {
      "userid": "zhangsan",
      "name": "李四"
    }
    //将 张三 用户名修改为 李四
    
    • 返回结果:
    	{ "errcode": 0, "errmsg": "updated" }
    
    • 请求体参数:与创建成员相同

    • 注意:
      a.若该成员已经激活了企业微信,则不可以通过该接口修改其手机号和邮箱了,如若修改则会被系统直接忽略,也不会报错。

    4.删除成员

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=ACCESS_TOKEN&userid=USERID
    • 请求方式:GET
    • URL 参数说明:
      access_token:必填,调用接口凭证
      userid:必填,成员 UserID。对应管理端的帐号,企业内必须唯一。不区分大小写,长度为 1~64 个字节
    • 返回结果:
    {
        //与读取成员用法基本相同
        //下面的返回结果若与前面描述的类似,则不再一一展示
       "errcode": 0,
       "errmsg": "deleted"
    }
    
    • 注意:
      a.若是绑定了腾讯企业邮,则会同时删除邮箱帐号。

    5.批量删除成员

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/batchdelete?access_token=ACCESS_TOKEN
    • 请求方式:POST
    • 请求体:
    {
       "useridlist": ["zhangsan", "lisi"]
    }
    //useridlist是成员UserID列表。对应管理端的帐号。最多支持200个。若存在无效UserID,直接返回错误
    //这里删除了id是 zhangsan 和 lisi 的成员
    

    6.获取部门成员

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=ACCESS_TOKEN&department_id=DEPARTMENT_ID&fetch_child=FETCH_CHILD
    • 请求方式:GET
    • URL 参数说明:
      access_token:必填,调用接口凭证
      department_id:必填,获取的部门 id
      fetch_child:非必填,是否递归获取子部门下面的成员:1-递归获取,0-只获取本部门
    • 返回结果:
    //测试时部门id使用的是 1,奇异果平台企业
    //由于奇异果部门成员过多,这里只展示了一部分作为例子
    	{
        "errcode":0,
        "errmsg":"ok",
        "userlist":[//用户列表
        {"userid":"MaoYingYong",//成员UserID。对应管理端的帐号
        "name":"毛英勇",//成员名称
        "department":[1]//成员所属部门列表,列表项为部门ID
        },
        {"userid":"d41d8cd98f00b204e9800998ecf8427e",
        "name":"āáǎà",
        "department":[1]},
        {"userid":"MoDaoBuXiaoHun",
        "name":"莫道不消魂",
        "department":[1]},
        {"userid":"peach.z",
        "name":"PEACH.Z",
        "department":[1]},
        {"userid":"Guang",
        "name":"程光远",
        "department":[1]}
        ]
        }
    

    7.获取部门成员详情

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=ACCESS_TOKEN&department_id=DEPARTMENT_ID&fetch_child=FETCH_CHILD
    • 请求方式:GET
    • URL 参数说明:
      access_token:必填,调用接口凭证
      department_id:必填,获取的部门 id
      fetch_child:非必填,是否递归获取子部门下面的成员:1-递归获取,0-只获取本部门
    • 返回结果:与获取部门成员相似,只不过是返回的结果里面展示了每个成员的详细信息,详细信息的参数与创建成员参数相同

    8.二次验证

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/authsucc?access_token=ACCESS_TOKEN&userid=USERID

    • 请求方式:GET

    • 接口介绍:
      此接口可以满足安全性要求高的企业进行成员验证。开启二次验证后,当且仅当成员登录时,需跳转至企业自定义的页面进行验证。验证频率可在设置页面选择。
      企业在开启二次验证时,必须在管理端填写企业二次验证页面的 url。

    9.邀请成员

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/batch/invite?access_token=ACCESS_TOKEN
    • 请求方式:POST
    • 请求体:
    {
      "user": ["zhangsan"],
      "party" : [PartyID1, PartyID2],
      "tag" : [TagID1, TagID2]
    }
    
    • 请求体参数说明:
      user:非必填, 成员 ID 列表, 最多支持 1000 个。
      party:非必填, 部门 ID 列表,最多支持 100 个。
      tag:非必填, 标签 ID 列表,最多支持 100 个。

    • 请求结果

    • 注意:
      a.user, party, tag 三者不能同时为空;
      b.如果部分接收人无权限或不存在,邀请仍然执行,但会返回无效的部分(即 invaliduser 或 invalidparty 或 invalidtag);
      c.同一用户只须邀请一次,被邀请的用户如果未安装企业微信,在 3 天内每天会收到一次通知,最多持续 3 天。

    10.手机号获取 userid

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/getuserid?access_token=ACCESS_TOKEN
    • 请求方式:POST
    • 请求体:
    {
           "mobile": "13731319326"
    }
    
    • 请求体参数说明:
      mobile:必填,手机号码。长度为 5~32 个字节

    • 返回参数:

    {
        "errcode": 0,
        "errmsg": "ok",
        "userid": "WoShiZhuangZhuangXiaoKeAi"
    }
    
    • 注意:
      a.请确保手机号的正确性,若出错的次数较多,会导致 1 天不可调用。

    三、部门管理

    1.创建部门

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=ACCESS_TOKEN
    • 请求方式:POST
    • 请求体:
    {
      "name": "龙宝宝测试添加创建部门",
      "name_en": "RDGZ",
      "parentid": 1,
      "order": 300,
      "id": 20
    }
    
    • 请求体参数说明:
      name:必填,部门名称。同一个层级的部门名称不能重复。长度限制为 1~32 个字符,字符不能包括:?”<>|
      name_en:英文名称。同一个层级的部门名称不能重复。需要在管理后台开启多语言支持才能生效。长度限制为 1~32 个字符,字符不能包括:
      ?”<>|
      parentid:必填,父部门 id,32 位整型
      order:在父部门中的次序值。order 值大的排序靠前。有效的值范围是[0, 2^32)
      id:部门 id,32 位整型,指定时必须大于 1。若不填该参数,将自动生成 id

    • 返回参数:

    {
       "errcode": 0,
       "errmsg": "created",
       "id": 2 //创建部门的id
    }
    
    • 请求结果
    • 注意:
      a.部门的最大层级为 15 层;部门总数不能超过 3 万个;每个部门下的节点不能超过 3 万个。

    2.更新部门

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/department/update?access_token=ACCESS_TOKEN

    • 请求方式:POST

    • 请求体:
      与创建部门相同,可以在里面对部门层级,名字等进行修改

    • 请求体参数说明:与创建部门相同

    3.删除部门

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/department/delete?access_token=ACCESS_TOKEN&id=ID

    • 请求方式:GET

    • 参数说明:
      id:部门的 id

    • 返回参数

    {
       "errcode": 0,
       "errmsg": "deleted"
    }
    
    • 注意:
      a.不能删除根部门;不能删除含有子部门、成员的部门
      b.第三方仅通讯录应用可以调用。

    4.获取部门列表

    • 请求地址:https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=ACCESS_TOKEN&id=ID

    • 请求方式:GET

    • 参数说明:
      id:部门的 id,如果不填,默认获取全量组织架构

    • 返回结果

    {
       "errcode": 0,
       "errmsg": "ok",
       "department": [
           {
               "id": 2,
               "name": "广州研发中心",
               "name_en": "RDGZ",
               "parentid": 1,
               "order": 10
           }
       ]
    }
    
    • 返回结果参数说明:与创建部门参数相仿
    展开全文
  • 餐具管理规定部门管理规定.doc
  • 公司部门管理手册

    2020-12-09 12:03:53
    公司部门管理手册具有很重要的作用,一份合理的制度能够提供团队的凝聚力与向上力,需要公司部门管理手册...该文档为公司部门管理手册,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • (完整版)研发部门管理制度.docx(完整版)研发部门管理制度.docx(完整版)研发部门管理制度.docx(完整版)研发部门管理制度.docx(完整版)研发部门管理制度.docx(完整版)研发部门管理制度.docx(完整版)研发部门管理制度....
  • (完整版)研发部门管理制度.pdf(完整版)研发部门管理制度.pdf(完整版)研发部门管理制度.pdf(完整版)研发部门管理制度.pdf(完整版)研发部门管理制度.pdf(完整版)研发部门管理制度.pdf(完整版)研发部门管理制度.pdf...
  • 销售部门管理制度.doc

    2022-02-27 19:46:13
    销售部门管理制度.doc
  • 公司部门管理手册.doc

    2022-02-10 03:31:06
    公司部门管理手册.doc
  • IT部门管理制度.doc

    2021-11-11 02:15:57
    IT部门管理制度.doc

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 477,633
精华内容 191,053
关键字:

部门管理

友情链接: Curve.zip