|
|
<?php
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Description: 任务标签
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Author: yykun
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
|
namespace app\work\model;
|
|
|
|
|
|
use think\Db;
|
|
|
use app\admin\model\Common;
|
|
|
use com\verify\HonrayVerify;
|
|
|
use think\Cache;
|
|
|
|
|
|
class WorkLable extends Common
|
|
|
{
|
|
|
/**
|
|
|
* 为了数据库的整洁,同时又不影响Model和Controller的名称
|
|
|
* 我们约定每个模块的数据表都加上相同的前缀,比如微信模块用weixin作为数据表前缀
|
|
|
*/
|
|
|
protected $name = 'work_task_lable';
|
|
|
protected $createTime = 'create_time';
|
|
|
protected $updateTime = false;
|
|
|
protected $autoWriteTimestamp = true;
|
|
|
protected $insert = [
|
|
|
'status' => 1,
|
|
|
];
|
|
|
|
|
|
/**
|
|
|
* [getDataList 标签列表]
|
|
|
* @AuthorHTL
|
|
|
* @param [string] $map [查询条件]
|
|
|
* @param [number] $page [当前页数]
|
|
|
* @param [number] $limit [每页数量]
|
|
|
* @return [array] [description]
|
|
|
*/
|
|
|
public function getDataList($userId)
|
|
|
{
|
|
|
$map['l.status'] = 1;
|
|
|
$count = db('work_task_lable')->alias('l')->where($map)->count();
|
|
|
|
|
|
if (db('work_lable_order')->where('user_id', $userId)->count() > 0) {
|
|
|
$map['o.user_id'] = $userId;
|
|
|
$list = db('work_task_lable')->alias('l')
|
|
|
->join('__WORK_LABLE_ORDER__ o', 'o.lable_id = l.lable_id', 'LEFT')
|
|
|
->where($map)->order('o.order', 'asc')->select();
|
|
|
} else {
|
|
|
$list = db('work_task_lable')->alias('l')->where($map)->select();
|
|
|
}
|
|
|
|
|
|
$data['list'] = !empty($list) ? $list : [];
|
|
|
$data['dataCount'] = $count;
|
|
|
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 创建标签
|
|
|
* @author yykun
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
public function createData($param)
|
|
|
{
|
|
|
$this->startTrans();
|
|
|
try {
|
|
|
$data['create_time'] = time();
|
|
|
$data['create_user_id'] = $param['create_user_id'];
|
|
|
$data['name'] = $param['name'];
|
|
|
$data['color'] = $param['color'];
|
|
|
$data['status'] = 1;
|
|
|
$this->insert($data);
|
|
|
$lableId = $this->getLastInsID();
|
|
|
# 更新排序
|
|
|
$this->updateLableOrder($lableId, $param['create_user_id']);
|
|
|
$this->commit();
|
|
|
return true;
|
|
|
} catch(\Exception $e) {
|
|
|
$this->rollback();
|
|
|
$this->error = '添加失败';
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新标签排序
|
|
|
*
|
|
|
* @param int $lableId 标签ID
|
|
|
* @param int $userId 用户ID
|
|
|
* @author fanqi
|
|
|
* @since 2021-03-27
|
|
|
*/
|
|
|
private function updateLableOrder($lableId, $userId)
|
|
|
{
|
|
|
$order = 0;
|
|
|
|
|
|
$orderList = db('work_lable_order')->where('user_id', $userId)->select();
|
|
|
|
|
|
foreach ($orderList AS $key => $value) {
|
|
|
if (!empty($value['order']) && $value['order'] > $order) $order = $value['order'];
|
|
|
}
|
|
|
|
|
|
if (!empty($order)) db('work_lable_order')->insert([
|
|
|
'lable_id' => $lableId,
|
|
|
'user_id' => $userId,
|
|
|
'order' => $order + 1
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 编辑标签
|
|
|
* @author yykun
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
public function updateDataById($param)
|
|
|
{
|
|
|
$map['lable_id'] = $param['lable_id'];
|
|
|
unset($param['lable_id']);
|
|
|
$flag = $this->where($map)->update($param);
|
|
|
if ($flag) {
|
|
|
return true;
|
|
|
} else {
|
|
|
$this->error = '操作失败';
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除标签
|
|
|
* @author yykun
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
public function delDataById($param)
|
|
|
{
|
|
|
$map['lable_id'] = $param['lable_id'];
|
|
|
if (db('task')->where(['lable_id' => ['like','%,'.$param['lable_id'].',%']])->find()) {
|
|
|
$this->error = '标签已被使用,无法删除!';
|
|
|
return false;
|
|
|
}
|
|
|
$this->startTrans();
|
|
|
try {
|
|
|
$ret = $this->where($map)->setField('status',0);
|
|
|
if ($ret) {
|
|
|
$this->commit();
|
|
|
return true;
|
|
|
} else {
|
|
|
$this->rollback();
|
|
|
$this->error = '删除失败';
|
|
|
return false;
|
|
|
}
|
|
|
} catch (\Exception $e){
|
|
|
$this->rollback();
|
|
|
$this->error = '删除失败';
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 任务标签
|
|
|
*
|
|
|
* @param $idstr
|
|
|
* @return array|bool|\PDOStatement|string|\think\Collection
|
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
|
* @throws \think\exception\DbException
|
|
|
*/
|
|
|
public function getDataByStr($idstr)
|
|
|
{
|
|
|
$idstr = stringToArray($idstr);
|
|
|
$list = Db::name('WorkTaskLable')->field('lable_id,name,color')->where(['lable_id' => ['in',$idstr],'status'=>1])->select();
|
|
|
return $list ? : [];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 任务标签名称
|
|
|
* @author yykun
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
public function getNameByIds($ids)
|
|
|
{
|
|
|
$list = Db::name('WorkTaskLable')->where(['lable_id' => ['in',$ids]])->column('name');
|
|
|
return $list ? : [];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 标签排序
|
|
|
*
|
|
|
* @param array $param user_id 用户ID; labelIds 标签ID
|
|
|
* @author fanqi
|
|
|
* @since 2021-03-27
|
|
|
*/
|
|
|
public function updateOrder($param)
|
|
|
{
|
|
|
if (!empty($param['labelIds'])) {
|
|
|
$data = [];
|
|
|
|
|
|
foreach ($param['labelIds'] AS $key => $value) {
|
|
|
$data[] = [
|
|
|
'lable_id' => $value,
|
|
|
'user_id' => $param['user_id'],
|
|
|
'order' => $key + 1
|
|
|
];
|
|
|
}
|
|
|
|
|
|
# 先删除在添加
|
|
|
db('work_lable_order')->where('user_id', $param['user_id'])->delete();
|
|
|
db('work_lable_order')->insertAll($data);
|
|
|
}
|
|
|
}
|
|
|
}
|