feat:代码块类目模块审核接口完善、各文件查询范围使用不生效Bug修复

This commit is contained in:
xjh 2023-07-05 11:06:18 +08:00
parent 97c5d18eae
commit b741270bfa
7 changed files with 211 additions and 56 deletions

View File

@ -14,7 +14,8 @@ use app\common\arw\adjfut\src\UploadFile;
use app\common\exception\Tool;
use think\facade\Db;
use think\facade\Env;
use app\admin\logic\Code\CodeModuleCategory as LogicCodeModuleCategory;
use app\admin\logic\Code\CodeModuleCategoryAudit as LogicCodeModuleCategoryAudit;
class CodeModuleCategory extends BaseController
{
@ -42,55 +43,12 @@ class CodeModuleCategory extends BaseController
$con[] = ['cmc.code_module_category_global_mode', 'REGEXP', implode('|', $params['code_module_category_global_mode'])];
}
$tree_data = [];
//只针对主级类目进行的分页处理
$query = ModelCodeModuleCategory::alias('cmc')->leftjoin('customer cust', 'cmc.customer_guid = cust.customer_guid')
->scope('master')->where($con);
//主级类目分页处理
$query = ModelCodeModuleCategory::alias('cmc')->leftjoin('customer cust', 'cmc.customer_guid = cust.customer_guid')->scope('master')->where($con);
$module_category_guids = self::pageWrapper($query)->column('code_module_category_guid');
//分页后的主级类目开始构建树形结构(此时才会获取到各个父级类目所包含的子级类目)
if ($module_category_guids) {
$data = ModelCodeModuleCategory::alias('cmc')
->whereOr([
['cmc.code_module_category_guid', 'in', $module_category_guids],
['cmc.code_module_category_parent_guid', 'in', $module_category_guids],
])->field([
'cmc.code_module_category_id',
'cmc.code_module_category_guid',
'cmc.customer_guid',
'cmc.code_module_category_audit',
'cmc.code_module_category_sort',
'cmc.code_module_category_parent_guid',
'cmc.code_module_category_name',
'cmc.code_module_category_audit',
'cmc.code_module_category_global_mode',
'cmc.code_module_category_library_type',
'cmc.code_module_category_ps',
'cmcp.code_module_category_name' => "code_module_category_parent_name",
'cust.customer_name',
])
->leftjoin('code_module_category cmcp', 'cmc.code_module_category_parent_guid = cmcp.code_module_category_guid')
->leftjoin('customer cust', 'cmc.customer_guid = cust.customer_guid')
->order('code_module_category_sort')
->select()
->toArray();
$Traverse = new Traverse('code_module_category_guid', 'code_module_category_parent_guid');
$tree_data = $Traverse->tree($data, ModelCodeModuleCategory::MASTER_DEFAULT, function ($v) {
return [
'code_module_category_name' => $v['code_module_category_name'],
'code_module_category_parent_name' => $v['code_module_category_parent_name'],
'code_module_category_guid' => $v['code_module_category_guid'],
'code_module_category_parent_guid' => $v['code_module_category_parent_guid'],
'code_module_category_sort' => $v['code_module_category_sort'],
'code_module_category_ps' => $v['code_module_category_ps'],
'code_module_category_global_mode' => $v['code_module_category_global_mode'],
'code_module_category_audit' => $v['code_module_category_audit'],
'code_module_category_library_type' => $v['code_module_category_library_type'],
'customer_guid' => $v['customer_guid'],
'customer_name' => $v['customer_name'],
];
});
}
//分页后的主级类目开始构建树形结构(此时才会获取到各个父级类目所包含的子级类目)
$tree_data = LogicCodeModuleCategory::buildTreeData($module_category_guids);
return msg(0, "获取代码块类目列表成功!", [
'count' => $query->count(),
@ -217,7 +175,7 @@ class CodeModuleCategory extends BaseController
*
* @param Request $request
* @return array
* @date 2023-06-28
* @date 2023-07-05
* @author xjh
* @since 1.0.0
*/
@ -230,9 +188,7 @@ class CodeModuleCategory extends BaseController
]);
Db::startTrans();
try {
ModelCodeModuleCategory::where([
'code_module_category_guid' => explode(',', $params['code_module_category_guid'])
])->select()->update(['code_module_category_audit' => $params['code_module_category_audit']]);
LogicCodeModuleCategoryAudit::handleAudit(explode(',', $params['code_module_category_guid']), $params['code_module_category_audit']);
Db::commit();
return msg('审核成功!');
} catch (\Throwable $th) {

View File

@ -0,0 +1,73 @@
<?php
namespace app\admin\logic\Code;
use app\common\model\Code\CodeModuleCategory as ModelCodeModuleCategory;
use app\common\exception\Tool;
use app\common\arw\adjfut\src\Traverse;
class CodeModuleCategory
{
/**
* 构建代码块类目树形结构数据
*
* @param array $module_category_guids 主类目guid数组
* @return array
* @date 2023-07-05
* @author xjh
* @since 1.0.0
*/
public static function buildTreeData(array $module_category_guids): array
{
if (!$module_category_guids) {
return [];
}
$tree_data = [];
$data = ModelCodeModuleCategory::alias('cmc')
->whereOr([
['cmc.code_module_category_guid', 'in', $module_category_guids],
['cmc.code_module_category_parent_guid', 'in', $module_category_guids],
])->field([
'cmc.code_module_category_id',
'cmc.code_module_category_guid',
'cmc.customer_guid',
'cmc.code_module_category_audit',
'cmc.code_module_category_sort',
'cmc.code_module_category_parent_guid',
'cmc.code_module_category_name',
'cmc.code_module_category_audit',
'cmc.code_module_category_global_mode',
'cmc.code_module_category_library_type',
'cmc.code_module_category_ps',
'cmcp.code_module_category_name' => "code_module_category_parent_name",
'cust.customer_name',
])
->leftjoin('code_module_category cmcp', 'cmc.code_module_category_parent_guid = cmcp.code_module_category_guid')
->leftjoin('customer cust', 'cmc.customer_guid = cust.customer_guid')
->order('code_module_category_sort')
->select()
->toArray();
$Traverse = new Traverse('code_module_category_guid', 'code_module_category_parent_guid');
$tree_data = $Traverse->tree($data, ModelCodeModuleCategory::MASTER_DEFAULT, function ($v) {
return [
'code_module_category_name' => $v['code_module_category_name'],
'code_module_category_parent_name' => $v['code_module_category_parent_name'],
'code_module_category_guid' => $v['code_module_category_guid'],
'code_module_category_parent_guid' => $v['code_module_category_parent_guid'],
'code_module_category_sort' => $v['code_module_category_sort'],
'code_module_category_ps' => $v['code_module_category_ps'],
'code_module_category_global_mode' => $v['code_module_category_global_mode'],
'code_module_category_audit' => $v['code_module_category_audit'],
'code_module_category_library_type' => $v['code_module_category_library_type'],
'customer_guid' => $v['customer_guid'],
'customer_name' => $v['customer_name'],
];
});
return $tree_data;
}
}

View File

@ -0,0 +1,112 @@
<?php
namespace app\admin\logic\Code;
use app\common\model\Code\CodeModuleCategory as ModelCodeModuleCategory;
use app\common\exception\Tool;
class CodeModuleCategoryAudit
{
/**
* 代码块类目审核处理
*
* @param array $code_module_category_guids 类目guid数组
* @param int $code_module_category_audit 审核状态
* @return void
* @date 2023-07-05
* @author xjh
* @since 1.0.0
*/
public static function handleAudit(array $code_module_category_guids, int $code_module_category_audit): void
{
foreach ($code_module_category_guids as $code_module_category_guid) {
$module_category = ModelCodeModuleCategory::find($code_module_category_guid);
if (!$module_category) {
throwErrorMsg("含有不存在的类目!");
}
//主类目审核处理
if ($module_category->code_module_category_parent_guid == ModelCodeModuleCategory::MASTER_DEFAULT) {
self::handleMainCategory($module_category, $code_module_category_audit);
}
//子类目审核处理
else {
self::handleSonCategory($module_category, $code_module_category_audit);
}
}
}
/**
* 代码块主类目审核处理
*
* @param ModelCodeModuleCategory $module_category 模型实例
* @param int $code_module_category_audit 审核状态
* @return void
* @date 2023-07-05
* @author xjh
* @since 1.0.0
*/
public static function handleMainCategory(ModelCodeModuleCategory $module_category, int $code_module_category_audit): void
{
//主类目的审核将会直接将所属的子类目们审核状态连带修改
//(例: 主类目审核通过则子类目将会全员审核状态为通过)
//【主类目更新】
$module_category->code_module_category_audit = $code_module_category_audit;
$module_category->save();
//【所属子类目们的更新】
ModelCodeModuleCategory::where('code_module_category_parent_guid', $module_category->code_module_category_guid)->select()->update([
'code_module_category_audit' => $code_module_category_audit
]);
}
/**
* 代码块子类目审核处理
*
* @param ModelCodeModuleCategory $module_category 模型实例
* @param int $code_module_category_audit 审核状态
* @return void
* @date 2023-07-05
* @author xjh
* @since 1.0.0
*/
public static function handleSonCategory(ModelCodeModuleCategory $module_category, int $code_module_category_audit): void
{
//【当前子类目更新】
$module_category->code_module_category_audit = $code_module_category_audit;
$module_category->save();
//【所属主类目更新】
$module_category_parent_guid = $module_category->code_module_category_parent_guid;
//当前主类目含未审核子类目的数量
$count = ModelCodeModuleCategory::scope('auditUnaudited')->where([
['code_module_category_parent_guid', '=', $module_category_parent_guid],
['code_module_category_guid', '<>', $module_category->code_module_category_guid],
])->count();
//当未审核子类目的数量为0的时候
//【场景一】若此时所有的已审核子类目状态都为不通过,则自动将所属的主类目审核状态设置为不通过
//【场景二】若此时所有的已审核子类目状态包含着通过与不通过的状态,则自动将所属的主类目审核状态设置为通过
if ($count == 0) {
$son_category_audits = ModelCodeModuleCategory::scope('auditPass')->where('code_module_category_parent_guid', $module_category_parent_guid)
->column('code_module_category_audit');
$is_all_not_failed = true;
foreach ($son_category_audits as $son_category_audit) {
if ($son_category_audit != ModelCodeModuleCategory::AUDIT_FAILED) {
$is_all_not_failed = false;
break;
}
}
if ($is_all_not_failed) {
ModelCodeModuleCategory::update([
'code_module_category_guid' => $module_category_parent_guid,
'code_module_category_audit' => ModelCodeModuleCategory::AUDIT_FAILED,
]);
} else {
ModelCodeModuleCategory::update([
'code_module_category_guid' => $module_category_parent_guid,
'code_module_category_audit' => ModelCodeModuleCategory::AUDIT_PASS,
]);
}
}
}
}

View File

@ -51,7 +51,7 @@ class CodeModule extends BaseController
'code_module_category.code_module_category_guid',
])->leftJoin('code_module_category', 'code_module_category.code_module_category_guid = code_module.code_module_category_guid')
->where('code_module.code_module_category_guid', $code_module_category_guid)
->scope('audit_pass')
->scope('auditPass')
->order('code_module.code_module_sort')->select();
$data[] = $code_module_list;
}

View File

@ -36,7 +36,7 @@ class CodeModuleCategory extends BaseController
->append(['langHit', 'libraryType'])
->hidden(['code_module_category_global_mode', 'code_module_category_library_type'])
->leftjoin('customer c', 'a.customer_guid = c.customer_guid')
->scope('audit_pass')
->scope('auditPass')
->where('a.code_module_category_parent_guid', 0)->select();
return msg(0, "获取一级类目列表成功!", [
@ -67,7 +67,7 @@ class CodeModuleCategory extends BaseController
// ->append(['langHit', 'libraryType'])
// ->hidden(['code_module_category_global_mode', 'code_module_category_library_type'])
->leftjoin('customer c', 'a.customer_guid = c.customer_guid')
->scope('audit_pass')
->scope('auditPass')
->where('code_module_category_parent_guid', $params['code_module_category_guid'])
->select();

View File

@ -19,7 +19,7 @@ class CodeModuleCategory
*/
public static function isSonCategory(string $code_module_category_guid): void
{
$module_category = ModelCodeModuleCategory::scope('not_master')->find($code_module_category_guid);
$module_category = ModelCodeModuleCategory::scope('notMaster')->find($code_module_category_guid);
if (!$module_category) {
throwErrorMsg("当前类目不为子类目!");
}

View File

@ -185,6 +185,20 @@ class CodeModuleCategory extends BaseModel
$query->where('code_module_category.code_module_category_audit', self::AUDIT_PASS);
}
/**
* 查询范围-未审核代码块类目
*
* @param $query
* @return void
* @date 2023-07-05
* @author xjh
* @since 1.0.0
*/
public function scopeAuditUnaudited($query): void
{
$query->where('code_module_category.code_module_category_audit', self::AUDIT_UNAUDITED);
}
/**
* 获取全局模式名称
*