同步企业微信通讯录:新员工入职、员工离职、更新部门信息

1、从企微拉去通讯录后,通过array_diff与数据库的数据进行比对,计算出新员工或离职员工;

2、在遍历中对数据库读写,速度有点慢,因为tp5的批量更新只能根据id批量更新,但是实际是根据userid更新,所以没有进一步优化程序;

    // 获取部门员工
    public function getStaff($departmentId = 1){
        $staff = new \app\admin\model\wecom\Staff;
        $contacts = Wecom::EasyWeChatApp('ffep');
        // $res = $contacts->department->list();
        $res = $contacts->user->getDetailedDepartmentUsers($departmentId, true);
        // print_r(json_encode($res));exit;
        // $userarr = [];
        if($res['errmsg'] == 'ok'){
            $userlist = $res['userlist'];
            // dump($userlist);exit;
            // 请求回来的员工 id
            $userid1 = array_column($userlist, 'userid');
            // print_r(count($getuserid));exit;
            $row = $staff->select();
            // 现在库里面的员工 id
            $userid2 = array_column($row, 'userid');
            // 新入职的staffid
            $diff = array_diff($userid1, $userid2);
            // 离职的staffid
            $diff2 = array_diff($userid2, $userid1);
            // print_r($diff2);exit;
            if(empty($diff) && empty($diff2)){
                // 更新员工的部门
                // dump($userlist);exit;
                $jls = 0;
                foreach($userlist as $val){
                    $department = implode(',',$val['department']);
                    $user = new \app\admin\model\wecom\Staff;
                    $update = $user->where('userid', $val['userid'])
                        ->update(['department' => $department]);
                    if($update) $jls ++;
                }
                if($jls>0){
                    $this->success("更新了".$jls."个部门信息",'wecom/staff','3');
                }
                $this->error('员工信息没有变化!');
            }else{
                // 入职、离职计数器
                $ruzhi = $lizhi = 0;
                if(!empty($diff)){
                    // 入职处理逻辑
                    foreach ($diff as $uid=>$id){
                        $val = $userlist[$uid];
                        $new = new \app\admin\model\wecom\Staff;
                        $new->name = $val['name'];
                        $new->department = implode(',',$val['department']);
                        $new->userid = $val['userid'];
                        $new->position = $val['position'];
                        $new->save();
                        $ruzhi ++;
                    }
                }
                if(!empty($diff2)){
                    // 离职处理逻辑
                    foreach ($diff2 as $uid=>$id){
                        $u = $staff->where('userid',$id)->find();
                        // 从员工信息表删除
                        $u->delete();
                        // 从会员信息表删除(所有平台都不能登录了)
                        User::where('mobile',$u->phone)->delete();
                        $lizhi ++;
                    }   
                } 
            }
            $msg = "新入职人数:".$ruzhi.",离职人数:".$lizhi;
            $this->success($msg,'wecom/staff','3');  
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值