|
@@ -6,6 +6,8 @@ use app\common\constant\CommonConstant;
|
|
|
use app\common\model\Department;
|
|
|
use app\common\model\User;
|
|
|
use app\extend\Dingtalk\Sample;
|
|
|
+use think\Db;
|
|
|
+use think\Exception;
|
|
|
|
|
|
/**
|
|
|
* 钉钉服务类
|
|
@@ -160,14 +162,12 @@ class DingtalkService
|
|
|
$add_user_data = [];
|
|
|
$del_user_data = [];
|
|
|
|
|
|
- // 更新部门
|
|
|
$department_data = self::get_tree(1);
|
|
|
$department_data_key = array_column($department_data, null, 'dept_id');
|
|
|
$department_list = Department::field('is_deleted', true)
|
|
|
->where('is_deleted', CommonConstant::IS_DELETED_0)
|
|
|
->select();
|
|
|
$department_key = array_column($department_list->toArray(), null, 'dept_id');
|
|
|
-
|
|
|
foreach ($department_data as $value) {
|
|
|
if (array_key_exists($value['dept_id'], $department_key)) {
|
|
|
$save_department_data[] = $value;
|
|
@@ -176,12 +176,12 @@ class DingtalkService
|
|
|
}
|
|
|
|
|
|
$user_list = self::user_list($value['dept_id']);
|
|
|
- if($user_list->list){
|
|
|
+ if ($user_list->list) {
|
|
|
$department_user_data[$value['dept_id']] = $user_list->list;
|
|
|
}
|
|
|
}
|
|
|
foreach ($department_user_data as $value) {
|
|
|
- foreach ($value as $val){
|
|
|
+ foreach ($value as $val) {
|
|
|
$user_data[] = (array)$val;
|
|
|
}
|
|
|
}
|
|
@@ -191,63 +191,70 @@ class DingtalkService
|
|
|
->select();
|
|
|
$user_key = array_column($user_list->toArray(), null, 'userid');
|
|
|
|
|
|
- if ($save_department_data) {
|
|
|
- foreach ($department_list as $val) {
|
|
|
- if (array_key_exists($val['dept_id'], $department_data_key)) {
|
|
|
- $department_data_info = $department_data_key[$val['dept_id']];
|
|
|
- $val->save($department_data_info);
|
|
|
- } else {
|
|
|
- $del_department_data[] = $val['id'];
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+ // 更新部门
|
|
|
+ if ($save_department_data) {
|
|
|
+ foreach ($department_list as $val) {
|
|
|
+ if (array_key_exists($val['dept_id'], $department_data_key)) {
|
|
|
+ $department_data_info = $department_data_key[$val['dept_id']];
|
|
|
+ $val->save($department_data_info);
|
|
|
+ } else {
|
|
|
+ $del_department_data[] = $val['id'];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- if ($add_department_data) {
|
|
|
- Department::insertAll($add_department_data);
|
|
|
- }
|
|
|
- if ($del_department_data) {
|
|
|
- Department::where('id', 'in', $del_department_data)->delete();
|
|
|
- }
|
|
|
-
|
|
|
- // 更新员工
|
|
|
- foreach ($user_data as $value) {
|
|
|
- if (array_key_exists($value['userid'], $user_key)) {
|
|
|
- $data = [
|
|
|
- 'userid'=>$value['userid'],
|
|
|
- 'unionid'=>$value['unionid'],
|
|
|
- 'department' => implode(',', $value['dept_id_list']),
|
|
|
- ];
|
|
|
- $save_user_data[] = $data;
|
|
|
- } else {
|
|
|
- $data = [
|
|
|
- 'userid' => $value['userid'],
|
|
|
- 'unionid' => $value['unionid'],
|
|
|
- 'name' => $value['name'],
|
|
|
- 'avatar' => $value['avatar'],
|
|
|
- 'mobile' => isset($value['mobile']) ? $value['mobile'] : '',
|
|
|
- 'title' => isset($value['title']) ? $value['title'] : '',
|
|
|
- 'manager_userid' => isset($value['manager_userid']) ? $value['manager_userid'] : '',
|
|
|
- 'department' => implode(',', $value['dept_id_list']),
|
|
|
- ];
|
|
|
- $add_user_data[] = $data;
|
|
|
+ if ($add_department_data) {
|
|
|
+ Department::insertAll($add_department_data);
|
|
|
}
|
|
|
- }
|
|
|
- if ($save_user_data) {
|
|
|
- foreach ($user_list as $val) {
|
|
|
- if (array_key_exists($val['userid'], $user_data_key)) {
|
|
|
- $user_data_info = $user_data_key[$val['userid']];
|
|
|
- $val->save($user_data_info);
|
|
|
+ if ($del_department_data) {
|
|
|
+ Department::where('id', 'in', $del_department_data)->delete();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新员工
|
|
|
+ foreach ($user_data as $value) {
|
|
|
+ if (array_key_exists($value['userid'], $user_key)) {
|
|
|
+ $data = [
|
|
|
+ 'userid' => $value['userid'],
|
|
|
+ 'unionid' => $value['unionid'],
|
|
|
+ 'department' => implode(',', $value['dept_id_list']),
|
|
|
+ ];
|
|
|
+ $save_user_data[] = $data;
|
|
|
} else {
|
|
|
- $del_user_data[] = $val['id'];
|
|
|
+ $data = [
|
|
|
+ 'userid' => $value['userid'],
|
|
|
+ 'unionid' => $value['unionid'],
|
|
|
+ 'name' => $value['name'],
|
|
|
+ 'avatar' => $value['avatar'],
|
|
|
+ 'mobile' => isset($value['mobile']) ? $value['mobile'] : '',
|
|
|
+ 'title' => isset($value['title']) ? $value['title'] : '',
|
|
|
+ 'manager_userid' => isset($value['manager_userid']) ? $value['manager_userid'] : '',
|
|
|
+ 'department' => implode(',', $value['dept_id_list']),
|
|
|
+ ];
|
|
|
+ $add_user_data[] = $data;
|
|
|
}
|
|
|
}
|
|
|
+ if ($save_user_data) {
|
|
|
+ foreach ($user_list as $val) {
|
|
|
+ if (array_key_exists($val['userid'], $user_data_key)) {
|
|
|
+ $user_data_info = $user_data_key[$val['userid']];
|
|
|
+ $val->save($user_data_info);
|
|
|
+ } else {
|
|
|
+ $del_user_data[] = $val['id'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($add_user_data) {
|
|
|
+ User::insertAll($add_user_data);
|
|
|
+ }
|
|
|
+ if ($del_user_data) {
|
|
|
+ User::where('id', 'in', $del_user_data)->delete();
|
|
|
+ }
|
|
|
+ } catch (Exception $e) {
|
|
|
+ Db::rollback();
|
|
|
+ except('出现错误:' . $e->getMessage());
|
|
|
}
|
|
|
- if ($add_user_data) {
|
|
|
- User::insertAll($add_user_data);
|
|
|
- }
|
|
|
- if ($del_user_data) {
|
|
|
- User::where('id', 'in', $del_user_data)->delete();
|
|
|
- }
|
|
|
-
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -266,4 +273,5 @@ class DingtalkService
|
|
|
}
|
|
|
return $tree;
|
|
|
}
|
|
|
+
|
|
|
}
|