- <?PHP
- namespace frontend\controllers;
- use Yii;
- use App\models\MmcUsers;
- use App\components\Controller;
- use common\models\MmcDayCount;
- use common\plugins\corwechat\Core;
- /**
- * Site controller
- */
- class UserwxController extends Controller {
- /**
- * 企业微信扫码登录测试
- * @return type
- */
- public function actionAuthlogin() {
- $code = \yii\helpers\htmlPurifier::process(Yii::$App->request->post('code',''));
- // $state = \yii\helpers\HtmlPurifier::process(Yii::$App->request->post('state','MMC'));
- $rep = ['status' => -2000, 'message' => '参数错误', 'data' => []];
- if (empty($code)) {
- return $rep;
- }
- $wechat = new Core();
- $userInfoRet = $wechat->getUserByCode($code);// 企业微信获取用户 UserId
- $userInfo = json_decode($userInfoRet, true);
- if(!isset($userInfo['UserId'])){
- $rep = ['status' => -2001, 'message' => '您尚未注册公司企业微信账号, 请使用账号进行密码登录', 'data' => []];
- return $rep;
- }
- // 查询用户身份存在
- $user = \backend\models\MmcUsers::find()->where(['msn' => $userInfo['UserId'],'is_delete'=>0])->one();
- if(empty($user)){
- $userInfoRet = $wechat->getUserInfoById($userInfo['UserId']);
- if($userInfoRet['errcode']!=0){
- $rep = ['status' => -2001, 'message' => '获取信息出错, 请使用账号密码登录', 'data' => []];
- return $rep;
- }
- $this->_bindUser($userInfoRet);
- $user = \backend\models\MmcUsers::find()->where(['msn' => $userInfo['UserId'],'is_delete'=>0])->one();
- if(empty($user)){
- $rep = ['status' => -2001, 'message' => '获取信息出错, 请使用账号密码登录', 'data' => []];
- return $rep;
- }
- }
- if($user->can_login!=1){
- $rep = ['status' => -2001, 'message' => '该账号已被禁用', 'data' => []];
- return $rep;
- }
- if (!empty($user->user_name)) {
- $model = \App\models\MmcUsers::findByUsername($user->user_name);
- if(empty($model)){
- $model = \App\models\MmcUsers::findByUsername($user->alias);
- }
- if (!empty($model)&&Yii::$App->user->login($model, 0)) {
- $this->_loginDone($model);// 登录活跃
- return ['status' => 0, 'user_id' => $model->user_id,
- 'user_name' => $model->user_name, 'message' => 'success'];
- }
- }
- return ['status' => 1002, 'message' => '请检查用户名和密码是否正确!'];
- }
- /**
- * 绑定为绑定的用户
- * @param type $userInfo
- */
- public function _bindUser($userInfo){
- $model = new \backend\models\MmcUsers();
- $user = [];
- if(isset($userInfo['mobile'])&&!empty($userInfo['mobile'])){
- $user = $model->find()->where(['mobile_phone' => $userInfo['mobile'],'is_delete'=>0])->one();
- }
- if(empty($user)){
- $user = $model->find()->where(['user_name' => $userInfo['userid'],'is_delete'=>0])->one();
- }
- if(empty($user)&&!empty($userInfo['email'])){
- $user = $model->find()->where(['email' => $userInfo['email'],'flag'=>0,'is_delete'=>0])->one();
- }
- if(empty($user)&&!empty($userInfo['name'])){
- $user = $model->find()->where(['real_name' => $userInfo['name'],'flag'=>0,'is_delete'=>0])->one();
- }
- if(!empty($user)){
- $user->flag=1;
- $user->alias=$userInfo['name'];
- $user->msn=$userInfo['userid'];
- $user->update();
- return FALSE;
- }
- $this->_registerUser($userInfo,$model);
- }
- /**
- * 企业微信注册系统账号
- * @param type $userInfo
- * @param type $model
- */
- private function _registerUser($userInfo,$model){
- $pwd = 'mmc'.mt_rand(1, 9).mt_rand(1, 9).mt_rand(1, 9).mt_rand(1, 9).mt_rand(1, 9).mt_rand(1, 9);
- $model->setIsNewRecord(TRUE);
- $model->mobile_phone = $userInfo['mobile'];
- $model->user_name = strtolower($userInfo['userid']);
- $model->real_name = $userInfo['name'];
- $model->email = empty($userInfo['email'])?strtolower($userInfo['userid']).'@mmcuav.cn':$userInfo['email'];
- $model->password = md5($pwd);
- $model->msn = $userInfo['userid'];
- $model->alias = $userInfo['name'];
- $model->flag = 1;
- $model->can_login = 1;
- $model->role = 2;
- $model->save();
- $data['touser'] = $userInfo['userid'].'|LiYang';
- $wechat = new Core();
- $data['msgtype'] = 'text';
- $data['text']['content'] = '恭喜您 ('.$userInfo['name'].') 注册该系统账号成功, 您的账号:'.strtolower($userInfo['userid'])'. 请勿泄露账号密码给他人使用.';
- $wechat->sendMessage($data);
- return false;
- }
- /**
- * 登录活跃
- * @param type $model
- */
- private function _loginDone($model) {
- $loginTime =!empty($model->last_time)?$model->last_time:time();
- $condition = ['user_id' => Yii::$App->user->identity->id];
- $attributes = ['last_time' => time(), 'last_login' => $loginTime, 'login_ip' => Yii::$App->request->userIP];
- MmcUsers::updateAll($attributes, $condition);
- // 日活跃用户统计
- if (date('Ymd') != date('Ymd', $loginTime)) {
- $dayCount = new MmcDayCount();
- $ret = $dayCount->findOne(['type' => 1, 'date' => date('Ymd')]);
- if (!empty($ret)) {
- $ret->count = $ret->count + 1;
- $ret->update();
- } else {
- $dayCount->isNewRecord;
- $dayCount->date = date('Ymd');
- $dayCount->type = 1;
- $dayCount->count = 1;
- $dayCount->save();
- }
- }
- }
- public function actionSendmsg(){
- $wechat = new Core();
- // $data['touser'] = '@all';
- $data['touser'] = 'GuChaoHui|DengWanCheng';
- $data['msgtype'] = 'text';
- $data['text']['content'] = '测试消息推送.\n 出发前可查看 < a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>, 聪明避开排队.';
- $res = $wechat->sendMessage($data);
- var_dump($res);die;
- }
- }
3.Core.PHP
来源: http://www.bubuko.com/infodetail-3339615.html