| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- <?php
- /**
- * Created by PhpStorm.
- * Name: 芸众商城系统
- * Author: 广州市芸众信息科技有限公司
- * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
- * Date: 2021/9/22
- * Time: 13:37
- */
- namespace business\common\services;
- use Exception;
- use EasyWeChat\Factory;
- use app\common\facades\EasyWeChat;
- class QyWechatRequestService
- {
- public $business_id;
- public $config;
- public $easyWechat;
- public $base_data;
- public $callback_data;
- public $return_data;
- public $return_columns_handle;
- public $return_columns;
- public $unset_columns;
- public $function;
- public $require_data;
- public $function_list = [
- 'getDepartmentList' => ['name' => '获取部门列表'],
- 'createDepartment' => ['name' => '创建部门'],
- 'updateDepartment' => ['name' => '修改部门'],
- 'deleteDepartment' => ['name' => '删除部门'],
- 'getStaffList' => ['name' => '获取部门成员列表'],
- 'getStaffDetailList' => ['name' => '获取部门成员详情列表'],
- 'getStaffDetail' => ['name' => '获取部门成员详情'],
- 'createMember' => ['name' => '创建成员'],
- 'updateMember' => ['name' => '编辑成员'],
- 'deleteMember' => ['name' => '删除成员'],
- 'getMediaId' => ['name' => '上传临时素材'],
- 'getStaffTicket'=>['name'=>'成员个人数据授权'],
- 'getUserDetail'=>['name'=>'成员个人数据详情'],
- 'departmentIds'=>['name'=>'获取企业微信部门ID'],
- 'departmentDetail'=>['name'=>'获取部门详情'],
- ];
- public function __construct($business_id = 0)
- {
- $business_id = intval($business_id) ?: SettingService::getBusinessId();
- $this->config = SettingService::getQyWxSetting($business_id);
- $column_arr = ['corpid', 'contact_secret'];
- foreach ($column_arr as $v) {
- if (!$this->config[$v]) return;
- }
- $this->easyWechat = EasyWeChat::work([
- // $this->easyWechat = Factory::work([
- 'corp_id' => $this->config['corpid'],
- 'agent_id' => $this->config['agentid'],
- // 'secret' => $this->config['agent_secret'],
- 'secret' => $this->config['contact_secret'],
- ]);
- }
- public function request($function, $base_data = [])
- {
- try {
- $this->callback_data = [];
- $this->return_data = [];
- $this->return_columns_handle = 0;
- $this->return_columns = [];
- $this->unset_columns = [];
- if (!$this->easyWechat) {
- throw new Exception('尚未配置企业微信信息');
- }
- $function_arr = [
- 'getDepartmentList', 'departmentIds', 'departmentDetail',
- 'getStaffList', 'getStaffDetailList', 'getStaffDetail',
- 'getStaffTicket', 'getUserDetail',];
- if (in_array($function,$function_arr)){
- $this->easyWechat = EasyWeChat::work([
- 'corp_id' => $this->config['corpid'],
- 'agent_id' => $this->config['agentid'],
- 'secret' => $this->config['agent_secret'],
- ]);
- }
- if (!method_exists($this, $function) || !isset($this->function_list[$function])) {
- throw new Exception('未知请求方法');
- }
- $this->base_data = $base_data;
- $this->function = $function;
- $this->$function();
- $this->handleCallback();
- } catch (Exception $e) {
- return ['result' => 0, 'msg' => $this->function_list[$function]['name'] . '失败,' . $e->getMessage(), 'data' => []];
- }
- return ['result' => 1, 'msg' => $this->function_list[$function]['name'] . '成功', 'data' => $this->return_data];
- }
- private function checkRequestData()
- {
- if ($this->require_data) {
- foreach ($this->require_data as $v) {
- if (!isset($this->base_data[$v])) {
- throw new Exception($v . '为空');
- }
- }
- }
- }
- //返回数据判断处理
- private function handleCallback()
- {
- $err_msg = $this->callback_data['errmsg'] ?: '未知原因';
- if (!$this->callback_data || $this->callback_data['errcode'] !== 0) {
- throw new Exception("请求失败,code:{$this->callback_data['errcode']},msg:{$err_msg}");
- }
- $after_function = 'after' . strtoupper($this->function);
- if (method_exists($this, $after_function)) { //自定义返回数据处理方法
- $this->$after_function();
- } else { //默认返回数据处理方法
- $this->defaultAfter();
- }
- }
- private function defaultAfter($callback_data = [])
- {
- $callback_data = $callback_data ?: $this->callback_data;
- if ($this->return_columns_handle) {
- if ($this->return_columns) {
- foreach ($this->return_columns as $v) {
- $this->return_data[$v] = $callback_data[$v];
- }
- } elseif ($this->unset_columns) {
- $return_data = $callback_data;
- foreach ($this->unset_columns as $v) {
- unset($return_data[$v]);
- }
- $this->return_data = $return_data;
- }
- } else {
- $this->return_data = $callback_data;
- }
- }
- private function getUserDetail()
- {
- $this->require_data = ['user_ticket'];
- $this->checkRequestData();
- $this->callback_data = $this->easyWechat->user->getUserDetail(['user_ticket' => $this->base_data['user_ticket']]);
- }
- private function getStaffTicket()
- {
- $this->require_data = ['code'];
- $this->checkRequestData();
- $this->callback_data = $this->easyWechat->user->getUserInfo(['code' => $this->base_data['code']]);
- }
- private function getMediaId()
- {
- $this->require_data = ['path'];
- $this->callback_data = $this->easyWechat->media->uploadImage($this->base_data['path']);
- }
- private function departmentIds()
- {
- $this->callback_data = $this->easyWechat->department->departmentIds();
- }
- private function departmentDetail(){
- $this->callback_data = $this->easyWechat->department->departmentDetail($this->base_data['id']);
- }
- private function getDepartmentList()
- {
- $this->callback_data = $this->easyWechat->department->list();
- $this->return_columns_handle = 1;
- $this->return_columns = ['department'];
- }
- private function getStaffDetailList()
- {
- $this->require_data = ['department_id'];
- $this->checkRequestData();
- $this->callback_data = $this->easyWechat->user->getDetailedDepartmentUsers($this->base_data['department_id'], true);
- $this->return_columns_handle = 1;
- $this->return_columns = ['userlist'];
- }
- private function getStaffDetail()
- {
- $this->require_data = ['userid'];
- $this->checkRequestData();
- $this->callback_data = $this->easyWechat->user->get($this->base_data['userid']);
- $this->return_columns_handle = 1;
- $this->unset_columns = ['errcode', 'errmsg'];
- }
- private function getStaffList()
- {
- $this->require_data = ['department_id'];
- $this->checkRequestData();
- $this->callback_data = $this->easyWechat->user->getDepartmentUsers($this->base_data['department_id'], true);
- $this->return_columns_handle = 1;
- $this->return_columns = ['userlist'];
- }
- private function createDepartment()
- {
- $this->require_data = ['name', 'parent_id'];
- $this->checkRequestData();
- $request_data = [
- 'name' => trim($this->base_data['name']),
- 'parentid' => $this->base_data['parent_id'],
- 'order' => intval($this->base_data['order']) ?: 10000,
- ];
- $this->callback_data = $this->easyWechat->department->create($request_data);
- $this->return_columns_handle = 1;
- $this->return_columns = ['id'];
- }
- private function updateDepartment()
- {
- $this->require_data = ['name', 'parent_id', 'id'];
- $this->checkRequestData();
- $request_data = [
- 'name' => trim($this->base_data['name']),
- 'order' => intval($this->base_data['order']) ?: 10000,
- ];
- if ($this->base_data['parent_id']) {
- $request_data['parentid'] = $this->base_data['parent_id'];
- }
- $this->callback_data = $this->easyWechat->department->update($this->base_data['id'], $request_data);
- }
- private function deleteDepartment()
- {
- $this->require_data = ['id'];
- $this->checkRequestData();
- $this->callback_data = $this->easyWechat->department->delete($this->base_data['id']);
- }
- private function createMember()
- {
- $this->require_data = ['name', 'userid', 'mobile'];
- $this->checkRequestData();
- $request_data = $this->base_data;
- $this->callback_data = $this->easyWechat->user->create($request_data);
- }
- private function updateMember()
- {
- $this->require_data = ['name', 'userid', 'mobile'];
- $this->checkRequestData();
- $request_data = $this->base_data;
- unset($request_data['userid']);
- $this->callback_data = $this->easyWechat->user->update($this->base_data['userid'], $request_data);
- }
- private function deleteMember()
- {
- $this->require_data = ['userid'];
- $this->checkRequestData();
- $this->callback_data = $this->easyWechat->user->delete($this->base_data['userid']);
- }
- }
|