|
|
|
|
using BP.En;
|
|
|
|
|
using BP.Port;
|
|
|
|
|
using BP.GPM.DTalk;
|
|
|
|
|
using BP.GPM.WeiXin;
|
|
|
|
|
using BP.Sys;
|
|
|
|
|
using BP.Tools;
|
|
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace BP.GPM.WeiXin
|
|
|
|
|
{
|
|
|
|
|
public class DTSOrganization : Method
|
|
|
|
|
{
|
|
|
|
|
public DTSOrganization()
|
|
|
|
|
{
|
|
|
|
|
this.Title = "同步微信企业号的通讯录 ";
|
|
|
|
|
this.Help = "将微信企业号中的通讯录同步到本地的组织结构";
|
|
|
|
|
this.Help = "同步完成之后,需要配置人员的角色信息和主部门的信息。";
|
|
|
|
|
|
|
|
|
|
this.GroupName = "执行";
|
|
|
|
|
}
|
|
|
|
|
public override void Init()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public override bool IsCanDo
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (BP.Web.WebUser.IsAdmin == true)
|
|
|
|
|
return true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public override object Do()
|
|
|
|
|
{
|
|
|
|
|
#region 读取数据.
|
|
|
|
|
//判断是否配置了企业号
|
|
|
|
|
if (string.IsNullOrWhiteSpace(BP.Difference.SystemConfig.WX_CorpID))
|
|
|
|
|
return "err@没有配置企业号相关信息";
|
|
|
|
|
//获取部门列表
|
|
|
|
|
DeptList DeptMentList = new DeptList();
|
|
|
|
|
DeptMentList.RetrieveAll();
|
|
|
|
|
if (DeptMentList.errcode == 0)
|
|
|
|
|
return "err@获得数据期间出现错误.";
|
|
|
|
|
#endregion 读取数据.
|
|
|
|
|
|
|
|
|
|
#region 清楚现有的数据.
|
|
|
|
|
//先删除所有部门
|
|
|
|
|
Depts depts = new BP.Port.Depts();
|
|
|
|
|
depts.ClearTable();
|
|
|
|
|
|
|
|
|
|
//删除所有人员
|
|
|
|
|
Emps emps = new BP.Port.Emps();
|
|
|
|
|
emps.ClearTable();
|
|
|
|
|
|
|
|
|
|
//删除部门人员表
|
|
|
|
|
DeptEmps deptEmps = new BP.Port.DeptEmps();
|
|
|
|
|
deptEmps.ClearTable();
|
|
|
|
|
|
|
|
|
|
//删除部门人员角色表
|
|
|
|
|
DeptEmpStations deptEmpStations = new BP.Port.DeptEmpStations();
|
|
|
|
|
deptEmpStations.ClearTable();
|
|
|
|
|
#endregion 清楚现有的数据.
|
|
|
|
|
|
|
|
|
|
#region 写入数据.
|
|
|
|
|
DeptEmp deptEmp = new BP.Port.DeptEmp();
|
|
|
|
|
Emp emp = new BP.Port.Emp();
|
|
|
|
|
foreach (DeptEntity deptMent in DeptMentList.department)
|
|
|
|
|
{
|
|
|
|
|
//先插入部门表
|
|
|
|
|
Dept dept = new BP.Port.Dept();
|
|
|
|
|
dept.No = deptMent.id;
|
|
|
|
|
dept.Name = deptMent.name;
|
|
|
|
|
dept.ParentNo = deptMent.parentid;
|
|
|
|
|
dept.Insert();
|
|
|
|
|
|
|
|
|
|
//获取部门下的人员
|
|
|
|
|
UserList users = new UserList(deptMent.id);
|
|
|
|
|
if (users.errcode == 0)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
foreach (UserEntity userInfo in users.userlist)
|
|
|
|
|
{
|
|
|
|
|
//此处不能同步admin帐号的用户
|
|
|
|
|
if (userInfo.userid == "admin")
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
//如果有,放入部门人员表
|
|
|
|
|
if (emps.Retrieve(EmpAttr.No, userInfo.userid) > 0)
|
|
|
|
|
{
|
|
|
|
|
//插入部门人员表
|
|
|
|
|
deptEmp = new BP.Port.DeptEmp();
|
|
|
|
|
deptEmp.setMyPK(deptMent.id + "_" + userInfo.userid);
|
|
|
|
|
deptEmp.FK_Emp = userInfo.userid;
|
|
|
|
|
deptEmp.FK_Dept = deptMent.id;
|
|
|
|
|
deptEmp.Insert();
|
|
|
|
|
}
|
|
|
|
|
//如果没有,默认主部门是当前第一个
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//插入人员表
|
|
|
|
|
emp = new BP.Port.Emp();
|
|
|
|
|
emp.No = userInfo.userid;
|
|
|
|
|
emp.Name = userInfo.name;
|
|
|
|
|
emp.FK_Dept = deptMent.id;
|
|
|
|
|
emp.Email = userInfo.email;
|
|
|
|
|
emp.Tel = userInfo.mobile;
|
|
|
|
|
emp.Insert();
|
|
|
|
|
|
|
|
|
|
//插入部门人员表
|
|
|
|
|
deptEmp = new BP.Port.DeptEmp();
|
|
|
|
|
deptEmp.setMyPK(deptMent.id + "_" + userInfo.userid);
|
|
|
|
|
deptEmp.FK_Emp = userInfo.userid;
|
|
|
|
|
deptEmp.FK_Dept = deptMent.id;
|
|
|
|
|
deptEmp.Insert();
|
|
|
|
|
|
|
|
|
|
//没有角色,不同步,手动分配角色吧
|
|
|
|
|
//GPM.DeptEmpStation deptEmpStation = new BP.Port.DeptEmpStation();
|
|
|
|
|
//deptEmpStation.setMyPK(deptMent.id + "_" + userInfo.userid + "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion 写入数据.
|
|
|
|
|
|
|
|
|
|
#region 增加 admin.
|
|
|
|
|
//不管以上有无人员,都添加admin帐号的信息
|
|
|
|
|
//插入admin帐号
|
|
|
|
|
emp = new BP.Port.Emp();
|
|
|
|
|
emp.No = "admin";
|
|
|
|
|
emp.Name = "admin";
|
|
|
|
|
emp.FK_Dept = "1";//默认跟部门为1
|
|
|
|
|
emp.Email = "";
|
|
|
|
|
emp.Tel = "";
|
|
|
|
|
emp.Insert();
|
|
|
|
|
|
|
|
|
|
//部门人员表加入admin
|
|
|
|
|
deptEmp = new BP.Port.DeptEmp();
|
|
|
|
|
deptEmp.setMyPK("1_admin");
|
|
|
|
|
deptEmp.FK_Emp = "admin";
|
|
|
|
|
deptEmp.FK_Dept = "1";
|
|
|
|
|
deptEmp.Insert();
|
|
|
|
|
#endregion 增加admin.
|
|
|
|
|
|
|
|
|
|
return "同步完成..";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|