$featuresCode])->field('id')->find(); if (!$projectFeatures) { return error(3, '该版本库已失效'); } $version = self::where(['name' => $name, 'features_code' => $featuresCode])->find(); if ($version) { return error(2, '该版本已名称存在'); } $data = [ 'create_time' => nowTime(), 'code' => createUniqueCode('ProjectVersion'), 'features_code' => $featuresCode, 'start_time' => $startTime, 'plan_publish_time' => $planPublishTime, 'description' => $description, 'organization_code' => $organizationCode, 'name' => trim($name), ]; $result = self::create($data)->toArray(); return $result; } /** * 删除版本 * @param $featuresCode * @return array|bool * @throws Exception * @throws PDOException */ public function deleteProjectVersion($versionCode) { if (!$versionCode) { return error(1, '请选择一个版本'); } ProjectVersion::versionHook(getCurrentMember()['code'], $versionCode, 'delete'); self::where(['code' => $versionCode])->delete(); Task::update(['features_code' => '', 'version_code' => ''], ['version_code' => $versionCode]); return true; } public function changeStatus($versionCode, $status, $publishTime = '') { if (!$versionCode) { return error(1, '请选择一个版本'); } $updateData = ['status' => $status]; $logType = 'status'; if ($status == 3) { $updateData['publish_time'] = $publishTime; $logType = 'publish'; } self::update($updateData, ['code' => $versionCode]); ProjectVersion::versionHook(getCurrentMember()['code'], $versionCode, $logType); return true; } public function getStatusTextAttr($value, $data) { //状态。0:未开始,1:进行中,2:延期发布,3:已发布 if (!isset($data['status'])) { return '-'; } switch ($data['status']) { case 0: return '未开始'; case 1: return '进行中'; case 2: return '延期发布'; case 3: return '已发布'; } } /** * 版本变动钩子 * @param $memberCode * @param $versionCode * @param string $type * @param string $remark * @param string $content * @param array $data * @param string $tag */ public static function versionHook($memberCode, $versionCode, $type = 'create', $remark = '', $content = '', $data = [], $tag = 'version') { $data = ['memberCode' => $memberCode, 'versionCode' => $versionCode, 'remark' => $remark, 'type' => $type, 'content' => $content, 'data' => $data, 'tag' => $tag]; Hook::listen($tag, $data); } }