注册存储过程 proc_register

发布时间:2018-02-28 17:49:28

create  PROCEDURE proc_register(in userId varchar(200),in userName varchar(100),in trueName varchar(200),in userPwd varchar(100),in userMobile varchar(20))

BEGIN

        DECLARE defDept varchar(40); 

        DECLARE defRole varchar(40); 

        DECLARE starttime varchar(40);

        DECLARE endtime varchar(40);

        DECLARE deptsort int;

        DECLARE deptId VARCHAR(40);

        DECLARE companyRoleName VARCHAR(40);

        DECLARE companyRoleId VARCHAR(40);

DECLARE finalPwd VARCHAR(100);-- 存放加密后的密码

DECLARE toRoleName varchar(40); -- 用于存储需要复制的角色名

DECLARE toRoleId VARCHAR(40); -- 用于存储原有的角色名

DECLARE recordIndex INT DEFAULT 0; -- 

DECLARE targetRoleId varchar(40); -- 用于添加新的角色编号

DECLARE toMenuId varchar(40); -- 

DECLARE rolemenuIndex INT DEFAULT 0; -- 

DECLARE toDataScope int DEFAULT 0; -- 用于存储原有的角色名

DECLARE toMenuRoleId VARCHAR(40);-- 存储角色菜单的角色id

DECLARE toOpRoleId VARCHAR(40);-- 存放操作权限的角色编号

DECLARE toOpMenuId VARCHAR(40);-- 存放操作权限的菜单编号

DECLARE toOpId VARCHAR(40);-- 存放操作权限的操作编号

DECLARE done INT DEFAULT 0;  

DECLARE cursor_role CURSOR FOR select id,roleName from main_role where isCopy=1;-- 查询需要复制的角色

DECLARE cursor_menurole CURSOR FOR select roleId,menuId,dataScope from main_rolemenu where roleId in (select id from main_role where isCopy=1);-- 查询需要复制的角色

DECLARE cursor_oprole CURSOR FOR select roleId,menuId,operateId  from main_roleoperate  where roleId in (select id from main_role where isCopy=1);-- 查询复制的角色

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; 



        select bdValue INTO endtime from main_bd where typeId='ced8a9c861ff4d189da7bdc63dc67d81' and id='53af510f16674189a0997e86e5d0c8d7';

        select bdValue INTO starttime from main_bd where typeId='ced8a9c861ff4d189da7bdc63dc67d81' and id='1361d82667a44818984ad3727680d89f';

        select bdValue INTO defDept from main_bd where typeId='ced8a9c861ff4d189da7bdc63dc67d81' and id='9f6bfdd9f4304410b159305f3788f570';

        select bdValue INTO defRole from main_bd where typeId='ced8a9c861ff4d189da7bdc63dc67d81' and id='fc8d695471ae4cb4a41bbb61c7124d33';

        select bdValue INTO companyRoleName from main_bd where typeId='ced8a9c861ff4d189da7bdc63dc67d81' and id='2a2ebbc9746840c2a8dfa810a6b667e3';

select MD5(userPwd) into finalPwd;

        select max(sortNum)+1 into deptsort from main_dept where pid=defDept;

        select concat(defDept,'_',(select count(*) deptsort from main_dept where pid=defDept)) INTO deptId;

        insert into main_user(id,userName,trueName,userPwd,createtime,createId,createName,createDeptId,companyId,userMobile) values(userId,userName,trueName,finalPwd,NOW(),userId,trueName,deptId,deptId,userMobile);

        -- 添加公司 同时也是部门

        insert into main_dept(id,deptName,sortNum,pid,createTime,createId,createDeptId) values(deptId,trueName,deptsort,defDept,NOW(),userId,deptId);

        -- 添加用户与部门的关联

        insert into main_deptUser values(replace(UUID(),'-',''),deptId,userId,NOW(),userId,deptId);-- 填加默认角色

        -- select starttime,endtime,defDept,defRole,deptsort,deptId,finalPwd;

        

        -- insert into main_roleUser values(UUID(),defRole,userId,NOW(),trueName,userId,deptId);-- 填加默认的角色

-- 先插入菜单的数据 再变更角色编号 根据用户编号

OPEN  cursor_menurole; /*接着使用OPEN打开游标*/

menurole_loop: LOOP

FETCH  cursor_menurole INTO toMenuRoleId,toMenuId,toDataScope; /*把第一行数据写入变量中,游标也随之指向了记录的第一行*/

insert into main_rolemenu(id,roleId,menuId,createId,createTime,createDeptId,dataScope) values(concat(replace(UUID(),'-',''),recordIndex),toMenuRoleId,toMenuId,userId,NOW(),deptId,toDataScope);

set recordIndex=recordIndex+1;

IF done=1 THEN  

LEAVE menurole_loop;  

END IF;  

END LOOP menurole_loop;

CLOSE cursor_menurole;

set done=0;

-- 先插入操作的数据 再变更角色编号 根据用户编号

OPEN  cursor_oprole; /*接着使用OPEN打开游标*/

oprole_loop: LOOP

FETCH  cursor_oprole INTO toOpRoleId,toOpMenuId,toOpId; /*把第一行数据写入变量中,游标也随之指向了记录的第一行*/

insert into main_roleoperate(id,roleId,menuId,operateId,createId,createTime,createDeptId ) values(concat(replace(UUID(),'-',''),recordIndex),toOpRoleId,toOpMenuId,toOpId,userId,NOW(),deptId);

set recordIndex=recordIndex+1;

IF done=1 THEN  

LEAVE oprole_loop;  

END IF;  

END LOOP oprole_loop;

CLOSE cursor_oprole;

set done=0;

        -- 轮循添加角色

OPEN  cursor_role; /*接着使用OPEN打开游标*/

role_loop: LOOP

FETCH  cursor_role INTO toRoleId,toRoleName; /*把第一行数据写入变量中,游标也随之指向了记录的第一行*/

set targetRoleId=concat(replace(UUID(),'-',''),recordIndex);

insert into main_role(id,roleName,remarkf,createTime,createId,createDeptId,companyId,sortNum)

values(targetRoleId,toRoleName,'',NOW(),userId,deptId,deptId,recordIndex);

update main_rolemenu set roleId=targetRoleId where roleId=toRoleId and createId=userId;

update main_roleoperate set roleId=targetRoleId where roleId=toRoleId and createId=userId;

set recordIndex=recordIndex+1;

if companyRoleName=toRoleName then 

    set companyRoleId=targetRoleId;

end if; 

IF done=1 THEN  

LEAVE role_loop;  

END IF;  

END LOOP role_loop;

CLOSE cursor_role;

select replace(UUID(),'-',''),companyRoleId,userId,deptId,length(userId);

-- 添加默认角色 添加当前用户是公司管理员角色

insert into main_roleUser values(replace(UUID(),'-',''),companyRoleId,userId,NOW(),userId,deptId);

-- 添加用户与公司的关联

insert into pro_company(id,relateCompanyId,startTime,relateUserId,endTime,createTime,createId,createDeptId) values(

        replace(UUID(),'-',''),deptId,now(),userId,'',now(),userId,deptId);

end;



Card image cap
APP STORE
Card image cap
应用宝
Card image cap
小米
Card image cap
华为