drag-create-api/app/common/logic/Code/CodeModuleCategory.php

94 lines
3.7 KiB
PHP

<?php
namespace app\common\logic\Code;
use app\common\model\Code\CodeModuleCategory as ModelCodeModuleCategory;
use app\common\model\Token as ModelToken;
class CodeModuleCategory
{
/**
* 新增前审核状态处理
*
* @param ModelCodeModuleCategory &$model
* @return void
* @date 2023-06-28
* @author xjh
* @since 1.0.0
*/
public static function onBeforeInsertAudit(ModelCodeModuleCategory &$model): void
{
switch (ModelToken::getCurrent()->token_type == ModelToken::USER_TYPE) {
case ModelToken::USER_TYPE: //用户
//保证用户新增的任意代码类目审核状态为已审核
$model->code_module_category_audit = ModelCodeModuleCategory::AUDIT_PASS;
break;
case ModelToken::CUSTOMER_TYPE: //客户
//客户新增代码类目时只有库类为私用的权限时,才可默认审核状态为已审核,其余都为待审核
if ($model->code_module_category_library_type == ModelCodeModuleCategory::LIBRARY_PRIVATE) {
$model->code_module_category_audit = ModelCodeModuleCategory::AUDIT_PASS;
} else {
$model->code_module_category_audit = ModelCodeModuleCategory::AUDIT_UNAUDITED;
}
break;
default:
throwErrorMsg("token所有者身份类型不正确!");
}
}
/**
* 新增前父级(上级类目)guid处理
*
* @param ModelCodeModuleCategory $model
* @return void
* @date 2023-06-28
* @author xjh
* @since 1.0.0
*/
public static function onBeforeInsertParentGuid(ModelCodeModuleCategory $model): void
{
if (isset($model->code_module_category_parent_guid) && $model->code_module_category_parent_guid) {
if ($model->code_module_category_parent_guid == $model->code_module_category_guid) {
throwErrorMsg('不可成为自己的子级类目!');
}
$code_module_category_parent = ModelCodeModuleCategory::find($model->code_module_category_parent_guid);
if (!$code_module_category_parent) {
throwErrorMsg('上级类目不存在!');
}
if ($code_module_category_parent->code_module_category_parent_guid != ModelCodeModuleCategory::MASTER_DEFAULT) {
throwErrorMsg('不可选择已拥有上级类目的类目作为自己的上级类目!');
}
if (ModelCodeModuleCategory::where('code_module_category_parent_guid', $model->code_module_category_guid)->find()) {
throwErrorMsg('当前类目已有子类目,不可更换上级类目!');
}
} else {
$model->code_module_category_parent_guid = ModelCodeModuleCategory::MASTER_DEFAULT;
}
}
/**
* 父子类目共用信息验证
*
* @param ModelCodeModuleCategory $model
* @return void
* @date 2023-06-29
* @author xjh
* @since 1.0.0
*/
public static function validateCategoryInfo(ModelCodeModuleCategory $model): void
{
if ($model->code_module_category_parent_guid != ModelCodeModuleCategory::MASTER_DEFAULT) {
$parent_category = ModelCodeModuleCategory::find($model->code_module_category_parent_guid);
if (!$parent_category) {
throwErrorMsg("上级类目不存在!");
}
foreach (ModelCodeModuleCategory::Common_INFO_FIELDS as $field) {
if ($model->$field != $parent_category->$field) {
throwErrorMsg("父子类目共用信息{$field}未完全相同! ");
}
};
}
}
}