public function addNewPublic() { $public_db = M('Wxuser'); $uid = session('uid'); $public = $public_db->where(array('uid' => $uid, 'status' => 1))->find(); if ($public != false) { $this->error('您当前已经存在一个活跃的公众号,请先将其删除再尝试添加。', U(MODULE_NAME . '/index')); } $wx_name = $_POST['wxname']; $wx_id = $_POST['weixin']; $wx_ori = $_POST['wxid']; $wx_type = $_POST['type']; $wx_appid = $_POST['appid']; $wx_appsecret = $_POST['appsecret']; $wx_qrcode = $_POST['qrcode_pic']; //已经有token $now = time(); $data['wxname'] = $wx_name; $data['wxid'] = $wx_ori; //目前token跟微信id是同一个 $data['weixin'] = $wx_id; $data['type'] = $wx_type; $data['headerpic'] = C('site_url') . '/themes/a/images/logo.jpg'; $data['qrcode_pic'] = $wx_qrcode; $data['createtime'] = $now; $data['updatetime'] = $now; $data['appid'] = $wx_appid; $data['appsecret'] = $wx_appsecret; $public = $public_db->where(array('uid' => $uid, 'status' => 0))->find(); if ($public != false) { $data['status'] = 1; $ret = $public_db->where(array('id' => $public['id']))->save($data); if ($ret) { // 根据用户功能组权限,自动为公共账号开通功能项 $publicAccountFuncManager = new PublicAccountFuncManager($uid, session('uname'), $public['token']); $publicAccountFuncManager->openFunctions(); $this->success('操作成功', U(MODULE_NAME . '/index')); } else { $this->success('添加失败,请联系客服', U(MODULE_NAME . '/index')); } } else { $newToken = $this->generateToken(); $code = $this->generateCode(); $wx_user = $public_db->where("token = '{$newToken}' or code={$code}")->find(); if ($wx_user) { // 理论上不会到该分支,因为token的生成算法已经保证了全局唯一 $this->error('抱歉,添加公众号失败,请刷新重试。', U(MODULE_NAME . '/add')); } else { $data['uid'] = session('uid'); //目前token跟微信id是同一个 $data['weixin'] = $newToken; $data['token'] = $newToken; //str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT) $data['code'] = $code; $data['status'] = 1; //初始化空微信号 $publicAccountId = $public_db->add($data); if ($publicAccountId) { // 根据用户功能组权限,自动为公共账号开通功能项 $publicAccountFuncManager = new PublicAccountFuncManager($uid, session('uname'), $newToken); $publicAccountFuncManager->openFunctions(); $this->success('操作成功', U(MODULE_NAME . '/index')); } else { $this->success('添加失败,请联系客服', U(MODULE_NAME . '/index')); } } } }