leguwork_public/inc/bll.php
2021-04-02 10:30:40 +08:00

473 lines
12 KiB
PHP

<?php
require_once(ROOT."./inc/common.php");
require_once(ROOT.'./inc/filedb.php');
require_once(ROOT.'./inc/guide.php');
session_start();
// 乐谷work管理看板
$LEGUWORK_BOARDID = 'XNt2hy8Q89tEfmwC7';
// 设置的列表id 【设置】
$LEGUWORK_SETTING_LISTID = '5ce68ddfa5ebb';
$LEGUWORK_SETTING_LIST_NAME = '【设置】';
// 延期分组列表
$LEGUWORK_YANQI_LISTID = '5ce68e49bd298';
$LEGUWORK_YANQI_LIST_NAME = '【设置】延期分组';
$mongo = new MongoClient( $_CONFIG['mongo'] );
$wekan = $mongo->selectDB('wekan');
//获取看板列表
function getboards($userid=null,$archived=false){
global $MYID,$wekan;
if(isn($userid))$userid = $MYID;
$docs = $wekan->boards->find(array('members.userId'=>$MYID,'archived'=>$archived));
$res = iterator_to_array($docs);
return $res;
}
function getboardsByAdmin($admin){
global $MYID,$wekan;
if($admin=='all'){
$docs = $wekan->boards->find(array('archived'=>false));
}else{
$docs = $wekan->boards->find(array('org'=>$admin,'archived'=>false));
}
$res = iterator_to_array($docs);
return $res;
}
function getorgs(){
global $wekan;
$docs = $wekan->users->find(array(),array('org'=>1,'orgname'=>1));
$res = array();
$rss = iterator_to_array($docs);
foreach($rss as $rs){
$res[ $rs['org'] ] = $rs['orgname'];
}
return $res;
}
function getcards($boardid,$lists=null){
global $MYID,$wekan;
if($lists==null){
$docs = $wekan->cards->find(array('boardId'=>$boardid,'archived'=>false)); //'listId'=>$listid,
}else{
$docs = $wekan->cards->find(array('boardId'=>$boardid,'listId'=>array('$in'=>$lists),'archived'=>false));
}
$res = iterator_to_array($docs);
return $res;
}
function getmycards(){
global $MYID,$wekan;
$docs = $wekan->cards->find(array('members'=>$MYID,'archived'=>false)); //'listId'=>array('$in'=>$lists),
$res = iterator_to_array($docs);
return $res;
}
function getUserCards($uid, $st = null, $et = null)
{
global $MYID, $wekan;
$mongostart = new MongoDate(strtotime($st));
// $mongostart = new MongoDate(1546272000);
$mongoend = new MongoDate(strtotime($et));
// $mongoend = new MongoDate(1548950400);
$docs = $wekan->cards->find(array(
'members' => $uid,
// "createdAt" => array('$gte' => $mongostart)
// "createdAt" => array('$gte' => $mongostart, '$lte' => $mongoend)
"mem_time.{$uid}.start" => array('$gte' => strtotime($st)),
"mem_time.{$uid}.end" => array('$lte' => strtotime($et))
)
); //'listId'=>array('$in'=>$lists),
$res = iterator_to_array($docs);
return $res;
}
// 某个用户完成的单子
function getUserCards4Finish($uid, $st = null, $et = null)
{
global $MYID, $wekan;
$mongostart = new MongoDate(strtotime($st));
// $mongostart = new MongoDate(1546272000);
$mongoend = new MongoDate(strtotime($et));
// $mongoend = new MongoDate(1548950400);
$docs = $wekan->cards->find(array(
'members' => $uid,
'$or'=>array(
array(
//'qalabelIds'=>'gongnengyanfa',
"mem_time.{$uid}.start" => array('$gte' => strtotime($st)),
"mem_time.{$uid}.end" => array('$lte' => strtotime($et))
),
array(
//'qalabelIds'=>array('$ne'=>'gongnengyanfa'),
"finishAt" => array('$gte' => strtotime($st),'$lte' => strtotime($et)),
),
),
// "createdAt" => array('$gte' => $mongostart)
// "createdAt" => array('$gte' => $mongostart, '$lte' => $mongoend)
)
); //'listId'=>array('$in'=>$lists),
$res = iterator_to_array($docs);
$arr = array();
foreach($res as $id=>$val){
$qalabelIds = array();
if($val['qalabelIds']){
$qalabelIds = $val['qalabelIds'];
}
if( in_array('gongnengyanfa',$qalabelIds) ){
//功能研发单,则判断标记时间
if( $val['mem_time'][$uid] && $val['mem_time'][$uid]['start']>=strtotime($st) && $val['mem_time'][$uid]['end']<=strtotime($et) ){
}else{
continue;
}
}
$arr[$id] = $val;
}
return $arr;
}
function getUserCards4New($uid, $st = null, $et = null)
{
global $MYID, $wekan;
$mongostart = new MongoDate(strtotime($st));
$mongoend = new MongoDate(strtotime($et));
$docs = $wekan->cards->find(array(
'members' => $uid,
"createdAt" => array('$gte' => ($mongostart),'$lte' => ($mongoend))
));
$res = iterator_to_array($docs);
return $res;
}
function getcard($cardid){
global $MYID,$wekan;
// $docs = $wekan->cards->find(array('_id'=>$cardid,'archived'=>false)); //'listId'=>$listid,
$docs = $wekan->cards->find(array('_id'=>$cardid)); //'listId'=>$listid,
$res = iterator_to_array($docs);
return $res;
}
function getboardsettingcard($boardid,$cardtitle){
global $MYID,$wekan;
$cardtitle = "__setting.".$cardtitle;
$docs = $wekan->cards->find(array('boardId'=>$boardid,'title'=>$cardtitle,'archived'=>false)); //'listId'=>$listid,
$res = iterator_to_array($docs);
return $res;
}
function getlists($boardid){
global $MYID,$wekan;
$docs = $wekan->lists->find(array('boardId'=>$boardid,'archived'=>false));
$res = iterator_to_array($docs);
return $res;
}
function getlist($listid){
global $MYID,$wekan;
$docs = $wekan->lists->find(array('_id'=>$listid));
$res = iterator_to_array($docs);
return $res;
}
function getBoard($boardid){
global $MYID,$wekan;
$docs = $wekan->boards->find(array('_id'=>$boardid));
$res = iterator_to_array($docs);
return $res;
}
function getusers(){
global $MYID,$wekan;
if(isn($userid))$userid = $MYID;
$docs = $wekan->users->find(array(), array(
'username' => true,
'emails' => true,
'org'=>true,
'orgname'=>true,
'dduserid'=>true,
'profile.fullname' => true,
'profile.avatarUrl' => true,
'legulabel'=>true,
'legugroup'=>true,
'lastlogin'=>true,
));
$res = iterator_to_array($docs);
return $res;
}
function getUserInfo($userid){
global $MYID,$wekan;
$docs = $wekan->users->find(array("_id"=>$userid));
$res = iterator_to_array($docs);
return $res[$userid];
}
function getcard_comments($cardid){
global $MYID,$wekan;
$docs = $wekan->card_comments->find(array('cardId'=>$cardid))->sort(array('createdAt'=>-1));
$res = iterator_to_array($docs);
return $res;
}
function initLables(){
$labels = array(
array(
"color" =>"legublue",
"name" =>""
),
array(
"color" =>"legublue",
"name" =>"策配"
),
array(
"color" =>"legublue",
"name" =>"策验"
),
array(
"color" =>"legublue",
"name" =>"审UI"
),
array(
"color" =>"legured",
"name" =>"前程"
),
array(
"color" =>"legured",
"name" =>"后程"
),
array(
"color" =>"legupurple",
"name" =>"UI"
),
array(
"color" =>"legupurple",
"name" =>"UI验"
),
array(
"color" =>"leguyellow",
"name" =>""
),
array(
"color" =>"legugreen",
"name" =>"美验"
),
array(
"color" =>"legublue",
"name" =>"动效"
),
array(
"color" =>"legured",
"name" =>"动验"
),
array(
"color" =>"legupink",
"name" =>"QA"
),
array(
"color" =>"legugray",
"name" =>"运营"
),
array(
"color" =>"legugray",
"name" =>"打包"
)
);
foreach($labels as $idx => $label){
$labels[$idx]['_id'] = uniqid().$idx;
}
//return $labels;
return array();
}
function getAllRiskLabels(){
global $MYID,$wekan;
$docs = $wekan->risktags->find(array(), array(
'_id' => false,
'issueId' => true,
'tagId' => true,
'tag' => true,
'reasonTag' => true,
'color' => true,
'description' => true,
'reason'=>true,
'department'=>true,
'issueColor'=>issueColor
));
$labels = iterator_to_array($docs);
$res = array();
foreach($labels as $val){
$res[ $val['tagId'] ][] = $val;
}
return $res;
}
function getRiskLabels(){
global $MYID,$wekan;
$labels = $wekan->command (
array(
"aggregate" => "risktags",
"pipeline" =>
array(
array( '$group' => array( "_id" => ['_id' =>'$tagId', 'name' => '$tag', 'color' => '$color'])),
array( '$replaceRoot' => array( "newRoot" => '$_id' ))
),
"cursor" => ['batchSize' => 200]
)
);
$res = array();
foreach($labels['cursor']['firstBatch'] as $val){
$res[ $val['_id'] ] = $val;
}
return $res;
}
function initQALables(){
$labels = array(
array(
"_id"=>"bug",
"color" =>"legured",
"name" =>"BUG"
),
array(
"_id"=>"ziyuanqueshi",
"color" =>"leguyellow",
"name" =>"资源缺失"
),
array(
"_id"=>"geleiyouhua",
"color" =>"legublue",
"name" =>"各类优化"
),
array(
"_id"=>"gongnengyanfa",
"color" =>"leguaqua",
"name" =>"功能研发"
),
array(
"_id"=>"xingnengyouhua",
"color" =>"legupurple",
"name" =>"性能问题"
),
array(
"_id"=>"qita",
"color" =>"legugray",
"name" =>"其他"
),
);
// foreach($labels as $idx => $label){
// $labels[$idx]['_id'] = uniqid().$idx;
// }
//return $labels;
return array();
}
function eventData($act,$data){
return json_encode(array(
"_k"=>"EVENT",
"act"=>$act,
"data" => $data,
));
}
// 根据boardId获取看板的标签的名字数组 _id=>name
function getBoardLabelIdNames($boardId){
global $wekan;
$resBoards = $wekan->boards->find(array(
"archived" => false,
"_id" => $boardId,
));
$boardData = iterator_to_array($resBoards);
$board = $boardData[$boardId];
$boardLabels = $board['labels'];
$boardLabelArr = array();
foreach ($boardLabels as $label){
$boardLabelArr[$label['_id']] = $label['name'];
}
return $boardLabelArr;
}
// 获取延期列表数据 部门对应用户
// 5ce68e49bd298
function getYanQiDepartmentUser(){
global $MYID,$wekan,$LEGUWORK_SETTING_LISTID,$LEGUWORK_BOARDID,$LEGUWORK_YANQI_LISTID;
$cardData = $wekan->cards->find(array('archived'=>false,'boardId'=>$LEGUWORK_BOARDID,'listId'=>$LEGUWORK_YANQI_LISTID));
$cardData = iterator_to_array($cardData);
$boardData = $wekan->boards->findOne(array(
"_id" => $LEGUWORK_BOARDID,
));
$boardLabels = $boardData['labels'];
$labelNameIdArr = array();
$labelIdNameArr = array();
foreach ($boardLabels as $k => $v) {
$labelNameIdArr[$v['name']] = $v['_id'];
$labelIdNameArr[$v['_id']] = $v['name'];
}
$labelUserArr = array();
$labelIdUserArr = array();
foreach ($cardData as $k => $v) {
// 延期成员在的部门
$labelIds = $v['labelIds'];
$members = $v['members'];
// var_dump($members);
foreach ($labelIds as $labelID) {
$labelIdUserArr[$labelID] = array(
'name'=>$labelIdNameArr[$labelID],
'user'=>$members
);
}
}
return $labelIdUserArr;
}
$MYID = $_SESSION['leguworkUID']; //;// 'NNCQpGcDX9L2EexLQ';//
$LEGUWORKUSER = $_SESSION['leguworkUser'];
$DTALK_APPID = "";
if($LEGUWORKUSER){
$DTALK_APPID = $LEGUWORKUSER['appid'];
}
?>