之前的文章可以进入专栏进行查看和学习,后面的文章就不再一一的去粘贴上一篇文章链接了,新的小伙伴直接去专栏就行,如果感兴趣的可以尝试订阅一下专栏,当然也欢迎大神加入专栏来分享。
https://cloud.tencent.com/developer/column/102120
这篇文章是在补前天的文章的后续,因为时间原因所以放在今天了。
1.根据上次的部门接口获取到的数据,然后创建一个部门表,用于存储部门数据。
CREATE TABLE `ims_test_qywx_departments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`weid` int(11) NOT NULL,
`department_id` int(11) NOT NULL,
`parentid` int(11) NOT NULL,
`order` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `department_id` (`department_id`) -- Ensure department_id is unique
) ENGINE=InnoDB AUTO_INCREMENT=3672 DEFAULT CHARSET=utf8;
2.再根据获取部门成员接口,创建成员表。
CREATE TABLE `ims_test_qywx_department_members` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`weid` int(11) NOT NULL,
`userid` varchar(255) NOT NULL UNIQUE,
`name` varchar(255) DEFAULT NULL,
`department_id` int(11) NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
FOREIGN KEY (`department_id`) REFERENCES `ims_test_qywx_departments`(`department_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3.执行完上面的两个sql和升级应用后,就可以开始创建后台和处理代码了。
3.1 执行上面两个sql到数据库。
3.2 编辑 增加一个菜单,然后修改一下版本,去后台点击升级应用。
<entry title="通讯录" do="contact_list" direct="false"/>
4.首先创建部门的的后台页面,contact_list.html。
{template 'common/header'}
<ul class="nav nav-tabs">
<li {if $operation=='display' } class="active" {/if}> <a
href="{php echo $this->createWebUrl('contact_list', array('op' => 'display'))}">部门列表</a>
</li>
</ul>
{if $operation == 'display'}
<div class="main">
<form action="" method="post" class="form-horizontal form" id="form">
<div class="panel panel-default">
<div class="panel-heading">
部门列表
</div>
<div class="panel-body">
<div class="table-responsive panel-body">
<table class="table table-hover" style="min-width: 300px;">
<tbody>
{loop $list $key $item}
<tr>
<td class="text-left">
{$item['department_id']}
</td>
<td class="text-left">
{$item['name']}
</td>
<td class="text-left">
<a class="btn btn-primary" href="{php echo $this->createWebUrl('contact_list', array('op' => 'get_department_members', 'department_id' => $item['department_id']))}">获取部门成员</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
</div>
</form>
</div>
{/if}
{template 'common/footer'}
5.然后根据表的内容,写一下部门列表的后端处理,写完后就如下图所示了,还是在site.php里写一个方法。
public function doWebContact_list() {
global $_W, $_GPC;
$weid = $_W['uniacid'];
$operation = !empty($_GPC['op']) ? $_GPC['op'] : 'display';
if ($operation == 'display') {
$pageindex = max(1, intval($_GPC['page']));
$pagesize = 15;
$list = pdo_getslice('test_qywx_departments', array(), array($pageindex, $pagesize), $total, array(), 'id', 'id desc');
$pager = pagination($total, $pageindex, $pagesize);
}
include $this->template('contact_list');
}
6.再就是根据之前的部门获取接口写法,在后台页面上写一个按钮用来获取部门数据
<a href="{php echo $this->createWebUrl('contact_list', array('op' => ''contact_list_update''))}" class="btn btn-primary">更新部门数据</a>
7.同样后端也需要处理,在contact_list方法增加一个获取部门数据的方法。
elseif ($operation == 'contact_list_update') {
global $_W, $_GPC;
$config = [
'corp_id' => '1',
'agent_id' => 1,
'secret' => '1',
];
$contacts = Factory::work($config);
$departments = $contacts->department->list();
$departments = $departments['department'];
foreach ($departments as $department) {
$data = array('weid' => $_W['uniacid'], 'name' => $department['name'], 'parentid' => $department['parentid'], 'order' => $department['order'],'department_id'=> $department['id']);
pdo_insert('test_qywx_departments', $data);
}
message('更新成功!', $this->createWebUrl('contact_list', array('op' => 'display')),'success');
}
8.完成了后,就可以在前端点击“更新部门数据”这个按钮,就可以拉取企业那边的部门了。
9.拉取成功后,就可以看到部门的id和部门名称了。
10. 然后再继续写一个获取部门成员的方法,用来拉取部门成员的数据。
elseif ($operation == 'get_department_members') {
global $_W, $_GPC;
$department_id = $_GPC['department_id'];
$config = [
'corp_id' => '1',
'agent_id' => 2,
'secret' => '3',
];
$contacts = Factory::work($config);
$departments = $contacts->department->list();
$all_users = $contacts->user->getDepartmentUsers($department_id);
$all_users = $all_users['userlist'];
foreach ($all_users as $user) {
$data = array('weid' => $_W['uniacid'], 'department_id' => $department_id, 'userid' => $user['userid'], 'name' => $user['name']);
pdo_insert('test_qywx_department_members', $data);
}
message('更新成功!', $this->createWebUrl('contact_list', array('op' => 'display')),'success');
}
11.后台页面需要增加一个按钮,用来获取部门的成员。
<td class="text-left">
<a class="btn btn-primary" href="{php echo $this->createWebUrl('contact_list', array('op' => 'get_department_members', 'department_id' => $item['department_id']))}">获取部门成员</a>
</td>
12.刷新一下后台页面就可以看到每个部门后面就多了一个按钮了。
13.先别点击获取,我们给部门成员做一个页面后,再来获取,继续在contact_list.html进行编辑,增加一个部门成员的列表。
<li {if $operation=='department_members' } class="active" {/if}> <a
href="{php echo $this->createWebUrl('contact_list', array('op' => 'department_members'))}">部门成员</a>
</li>
<div class="main">
<form action="" method="post" class="form-horizontal form" id="form">
<div class="panel panel-default">
<div class="panel-heading">
部门成员列表
</div>
<div class="panel-body">
<div class="table-responsive panel-body">
<table class="table table-hover" style="min-width: 300px;">
<tbody>
{loop $list $key $item}
<tr>
<td class="text-left">
{$item['userid']}
</td>
<td class="text-left">
{$item['name']}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
</div>
</form>
</div>
14.创建后,就可以点去部门列表的获取部门成员的按钮了,更新后就会在部门成员这里有显示。
15.成功的获取到部门和成员后,我们就可以在部门成员这里增加一个按钮了,用于消息发送。
<td class="text-left">
<a class="btn btn-primary" href="{php echo $this->createWebUrl('contact_list', array('op' => 'send_notification_announcement', 'userid' => $item['userid']))}">发送通知</a>
</td>
16.再创建一个消息编辑的页面和发送消息的后端处理代码。
<div class="main">
<form action="" method="post" class="form-horizontal form" enctype="multipart/form-data" id="form1">
<div class="panel panel-default">
<div class="panel-heading">发送通知公告</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">内容</label>
<div class="col-sm-10">
<input type="text" name="content" class="form-control" value="">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">用户ID</label>
<div class="col-sm-10">
<input type="text" name="userid" class="form-control" value="{$_GPC['userid']}" readonly>
</div>
</div>
</div>
</div>
<div class="form-group col-sm-12">
<input type="submit" name="submit" value="提交" class="btn btn-primary col-lg-1" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</form>
</div>
if (checksubmit('submit')) {
$userid = $_GPC['userid'];
$content = $_GPC['content'];
$config = [
'corp_id' => '1',
'agent_id' => 1,
'secret' => '1',
];
$app = Factory::work($config);
$messenger = $app->messenger;
$result = $messenger->toUser($userid)->send($content);
if ($result['errcode'] == 0) {
message('发送成功!', $this->createWebUrl('contact_list', array('op' => 'department_members')), 'success');
} else {
message('发送失败!', $this->createWebUrl('contact_list', array('op' => 'department_members')), 'error');
}
}
17.整个做完后,就可以点击按钮发送消息。
18.整个的通讯录加发送消息的开发就完成了,最后整体粘贴一下今天写到的代码。
public function doWebContact_list() {
global $_W, $_GPC;
$weid = $_W['uniacid'];
$operation = !empty($_GPC['op']) ? $_GPC['op'] : 'display';
if ($operation == 'display') {
$pageindex = max(1, intval($_GPC['page']));
$pagesize = 15;
$list = pdo_getslice('test_qywx_departments', array(), array($pageindex, $pagesize), $total, array(), 'id', 'id desc');
$pager = pagination($total, $pageindex, $pagesize);
} elseif ($operation == 'contact_list_update') {
$config = [
'corp_id' => '1',
'agent_id' => 1,
'secret' => '1',
];
$contacts = Factory::work($config);
$departments = $contacts->department->list();
$departments = $departments['department'];
foreach ($departments as $department) {
$data = array('weid' => $_W['uniacid'], 'name' => $department['name'], 'parentid' => $department['parentid'], 'order' => $department['order'],'department_id'=> $department['id']);
pdo_insert('test_qywx_departments', $data);
}
message('更新成功!', $this->createWebUrl('contact_list', array('op' => 'display')),'success');
} elseif ($operation == 'department_members') {
$pageindex = max(1, intval($_GPC['page']));
$pagesize = 15;
$list = pdo_getslice('test_qywx_department_members', array(), array($pageindex, $pagesize), $total, array(), 'id', 'id desc');
$pager = pagination($total, $pageindex, $pagesize);
} elseif ($operation == 'get_department_members') {
global $_W, $_GPC;
$department_id = $_GPC['department_id'];
$config = [
'corp_id' => '1',
'agent_id' => 1,
'secret' => '1',
];
$contacts = Factory::work($config);
$departments = $contacts->department->list();
$all_users = $contacts->user->getDepartmentUsers($department_id);
$all_users = $all_users['userlist'];
foreach ($all_users as $user) {
$data = array('weid' => $_W['uniacid'], 'department_id' => $department_id, 'userid' => $user['userid'], 'name' => $user['name']);
pdo_insert('test_qywx_department_members', $data);
}
message('更新成功!', $this->createWebUrl('contact_list', array('op' => 'display')),'success');
} elseif ($operation == 'send_notification_announcement') {
if (checksubmit('submit')) {
$userid = $_GPC['userid'];
$content = $_GPC['content'];
$config = [
'corp_id' => '1',
'agent_id' => 1,
'secret' => '1',
];
$app = Factory::work($config);
$messenger = $app->messenger;
$result = $messenger->toUser($userid)->send($content);
if ($result['errcode'] == 0) {
message('发送成功!', $this->createWebUrl('contact_list', array('op' => 'department_members')), 'success');
} else {
message('发送失败!', $this->createWebUrl('contact_list', array('op' => 'department_members')), 'error');
}
}
}
include $this->template('contact_list');
}
{template 'common/header'}
<ul class="nav nav-tabs">
<li {if $operation=='display' } class="active" {/if}> <a
href="{php echo $this->createWebUrl('contact_list', array('op' => 'display'))}">部门列表</a>
</li>
<li {if $operation=='department_members' } class="active" {/if}> <a
href="{php echo $this->createWebUrl('contact_list', array('op' => 'department_members'))}">部门成员</a>
</li>
</ul>
{if $operation == 'display'}
<div class="main">
<form action="" method="post" class="form-horizontal form" id="form">
<div class="panel panel-default">
<div class="panel-heading">
部门列表
<a href="{php echo $this->createWebUrl('contact_list', array('op' => 'contact_list_update'))}" class="btn btn-primary">更新部门数据</a>
</div>
<div class="panel-body">
<div class="table-responsive panel-body">
<table class="table table-hover" style="min-width: 300px;">
<tbody>
{loop $list $key $item}
<tr>
<td class="text-left">
{$item['department_id']}
</td>
<td class="text-left">
{$item['name']}
</td>
<!-- 获取部门成员-->
<td class="text-left">
<a class="btn btn-primary" href="{php echo $this->createWebUrl('contact_list', array('op' => 'get_department_members', 'department_id' => $item['department_id']))}">获取部门成员</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
</div>
</form>
</div>
{elseif $operation == 'department_members'}
<div class="main">
<form action="" method="post" class="form-horizontal form" id="form">
<div class="panel panel-default">
<div class="panel-heading">
部门成员列表
</div>
<div class="panel-body">
<div class="table-responsive panel-body">
<table class="table table-hover" style="min-width: 300px;">
<tbody>
{loop $list $key $item}
<tr>
<td class="text-left">
{$item['userid']}
</td>
<td class="text-left">
{$item['name']}
</td>
<td class="text-left">
<a class="btn btn-primary" href="{php echo $this->createWebUrl('contact_list', array('op' => 'send_notification_announcement', 'userid' => $item['userid']))}">发送通知</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
</div>
</form>
</div>
{elseif $operation == 'send_notification_announcement'}
<div class="main">
<form action="" method="post" class="form-horizontal form" enctype="multipart/form-data" id="form1">
<div class="panel panel-default">
<div class="panel-heading">发送通知公告</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">内容</label>
<div class="col-sm-10">
<input type="text" name="content" class="form-control" value="">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">用户ID</label>
<div class="col-sm-10">
<input type="text" name="userid" class="form-control" value="{$_GPC['userid']}" readonly>
</div>
</div>
</div>
</div>
<div class="form-group col-sm-12">
<input type="submit" name="submit" value="提交" class="btn btn-primary col-lg-1" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</form>
</div>
{/if}
{template 'common/footer'}
1.有轮子的开发并不是特别难,写多了,很多地方只需要复制粘贴,修修改改就行了。
2.感谢造轮子的前辈们。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。