diff --git a/app/Console/Commands/UpdateCompany.php b/app/Console/Commands/UpdateCompany.php index 8581313..b5ada7d 100755 --- a/app/Console/Commands/UpdateCompany.php +++ b/app/Console/Commands/UpdateCompany.php @@ -16,7 +16,7 @@ class UpdateCompany extends Command * * @var string */ - protected $signature = 'update_company {--user_id=} {--address=0}'; + protected $signature = 'update_company {--user_id=} {--address=0} {--market=0}'; /** * The console command description. @@ -44,12 +44,17 @@ class UpdateCompany extends Command { $user_id = $this->option('user_id'); $updateLocal = (int)$this->option('address'); + $updateMarket = (int)$this->option('market'); // 更新公司信息 $this->compnay($user_id); // 更新经纬度信息(可选) if ($updateLocal) { $this->local($user_id); } + // 更新上市状态(可选) + if ($updateMarket) { + $this->updateMarketStatus(); + } return $this->info('全部更新完成'); } @@ -137,6 +142,8 @@ class UpdateCompany extends Command // 更新用户关联 $user->company_id = $company->id; $user->save(); + // 更新上市状态 + $this->updateMarketStatus($company->id); $bar->setMessage($result['enterpriseName'] . ' 更新成功', 'status'); $bar->advance(); } @@ -194,4 +201,54 @@ class UpdateCompany extends Command return $this->info('经纬度信息-全部更新完成'); } + /** + * 根据 company_tag 更新上市状态 + * 判断是否包含上市代码标签,如 688001.SH、000001.SZ、830001.BJ 等 + */ + public function updateMarketStatus($companyId = null) + { + $this->info('开始更新上市状态...'); + + // 获取所有有 company_tag 的公司 + if ($companyId) { + $companies = Company::where('id', $companyId)->get(); + } else { + $companies = Company::whereNotNull('company_tag') + ->where('company_tag', '!=', '') + ->get(); + } + + $total = $companies->count(); + if ($total == 0) { + return $this->info('没有需要更新上市状态的公司'); + } + + $bar = $this->output->createProgressBar($total); + $bar->start(); + + // 上市代码正则:数字.SH 或 数字.SZ 或 数字.BJ + $stockCodePattern = '/\d{6}\.(SH|SZ|BJ)/i'; + + $updatedCount = 0; + foreach ($companies as $company) { + $hasStockCode = preg_match($stockCodePattern, $company->company_tag); + $newMarketStatus = $hasStockCode ? 1 : 0; + + // 只有状态变化才更新 + if ($company->company_market != $newMarketStatus) { + $company->company_market = $newMarketStatus; + $company->save(); + $updatedCount++; + $statusText = $newMarketStatus ? '上市' : '非上市'; + $bar->setMessage("{$company->company_name} => {$statusText}", 'status'); + } + + $bar->advance(); + } + + $bar->finish(); + $this->newLine(); + return $this->info("上市状态更新完成,共更新 {$updatedCount} 个公司"); + } + } diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index eafe558..e0543e3 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -212,9 +212,9 @@ class CourseSign extends SoftDeletesModel public static function genban($start_date, $end_date, $course_ids = null, $retList = false) { $courseSignsQuery = self::getStudentList($start_date, $end_date, 1, $course_ids); - // 获取制定的课程id + // 获取需要统计跟班学员的课程 $genbanCourse = Course::whereHas('typeDetail', function ($query) { - $query->whereIn('id', [1, 3, 14]); + $query->where('is_count_genban', 1); })->get(); $courseSigns = $courseSignsQuery->whereHas('user', function ($query) { diff --git a/app/Models/CourseType.php b/app/Models/CourseType.php index a0ebea1..25aaf67 100755 --- a/app/Models/CourseType.php +++ b/app/Models/CourseType.php @@ -8,6 +8,16 @@ class CourseType extends SoftDeletesModel { const START_DATE = '2020-01-01 00:00:00'; + protected $appends = ['is_count_genban_text']; + + /** + * 是否统计跟班学员数文字 + */ + public function getIsCountGenbanTextAttribute() + { + return ($this->attributes['is_count_genban'] ?? 1) == 1 ? '是' : '否'; + } + public function courses() { return $this->hasMany(Course::class, 'type', 'id'); diff --git a/database/migrations/2025_11_27_100000_add_is_count_genban_to_course_types_table.php b/database/migrations/2025_11_27_100000_add_is_count_genban_to_course_types_table.php new file mode 100644 index 0000000..c87c6e8 --- /dev/null +++ b/database/migrations/2025_11_27_100000_add_is_count_genban_to_course_types_table.php @@ -0,0 +1,29 @@ +tinyInteger('is_count_genban')->default(0)->nullable()->comment('是否统计跟班学员数 0否 1是'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('course_types', function (Blueprint $table) { + $table->dropColumn('is_count_genban'); + }); + } +}; +