一、需求及分析过程
痛点:蝉道中单据(如:bug)填写不规范,需要筛选数据后再大量时间与当时人沟通,费时费力,如果设置为必填字段,会对其他业务线造成阻碍,只能单独拉取并通知相关人员。
需求:将特定项目中填写不规范的bug发送钉钉群并@当事人
需求分析:
分析需求所需内容,bug链接,当事人姓名分析蝉道bug链接组成和当事人姓名,固定链接+bugid+固定链接,当事人姓名需维护蝉道中当事人信息的电话号或钉钉id本地部署开源版蝉道,连接数据库(我使用了xampp部署)若判断的【字段a】和【字段b】是已存在的字段则可直接后续查询使用,若是未存在的字段则需在相关页面进行维护(一般情况下新建,编辑,查询页面均要进行维护)数据库中查询在【该项目下】,【字段a】和【字段b】任意一个字段未填写,且未删除的bugID(没有该类型的数据进行造数,方便后期调试使用)判断是否拿到数据,若拿到数据则输出相关数据的bugid及对应的负责人用bugid生成bug链接,用对应负责人相关信息在user表中查询电话号或钉钉id(我使用的是电话号)对应群组下创建自定义钉钉机器人调用钉钉机器人,按预期格式输出相关链接并@对应负责人调试完成后,用定时任务每天定时执行
二、蝉道代码位置了解及本地部署
蝉道官网下载开源版的蝉道代码,安装对应php版本的xampp
蝉道官网 https://www.zentao.net/![](https://img-blog.csdnimg.cn/096927a92bdc47e2bba69263d3b6706e.png)
将蝉道开源代码文件放到htdocs文件下,代码中数据库配置要修改正确(config文件下的my.php)
![](https://img-blog.csdnimg.cn/a90708fa66744af6bc5dec8389c382ab.png)
后将蝉道数据库结构导出,导入到xampp数据库中,启动xampp,若遇启动问题,百度解决(mysql启动不起来,需关闭本地的sql或端口号被占用,更换端口号【代码中对应更改】停止对应端口号)蝉道所使用的zentaoPHP框架可在相关文档中学习了解
关于zentaoPHP框架 ,后续代码我是直接在对应模块的control.php下增加的,不想改动源码也可了解下该框架的扩展机制
扩展 https://devel.easycorp.cn/book/extension-new/intro-52.html![](https://img-blog.csdnimg.cn/eb7d206268b9437a9da72829d3c08675.png)
三、编写查询代码
我本次是要查询bug相关数据,所以在bug模块的control.php中添加代码
function getWarningBugs()
{
$executionList = [0,1];//所要查询的模块id
$bugs = $this->dao->select('id,title,assignedTo')//在bug表中搜索符合条件的bugid、主题、指派人
->from('zt_bug')
->where('execution')->in($executionList)
->andwhere()
->markleft(1)
->where('字段a')->eq('')
->orwhere('字段b')->eq('')
->markright(1)
->andwhere('deleted')->eq('0')
->fetchGroup('assignedTo');//按assignedto分组输出
$keys = array_keys($bugs);
$phone = $this->dao->select('mobile')//根据输出的assignedto在user表中查找电话号码
->from('zt_user')
->where('account')->in($keys)
->fetchAll();
$n = 0;
if ($bugs != '')//判断是否不为空
{
foreach ($bugs as $value)//在第一维数组下循环
{
$ownerphone = $phone[$n]->mobile;//拿去每一个电话号
$n++;//递增
for ($i=0; $iid;
$data =
([
'msgtype' => 'markdown',
'markdown' =>
[
"title"=>$bugid,
"text"=>" @".$ownerphone ." \n 您有线上bug的字段a/字段b未维护,请尽快处理,具体bug链接如下: \n $titlelinks \n "
],
'at' =>
[
'atMobiles' => [$ownerphone],
'isAtAll' => false
]
]);
$data_string = json_encode($data);
echo $data_string;
$result = $this->request_by_curl($webhook, $data_string);
echo $result;
调试查看效果
![](https://img-blog.csdnimg.cn/2b56ba504e004416b20df65010e629f2.png)
加入蝉道定时任务
|