lion 2 weeks ago
commit 30901f9ccf

@ -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} 个公司");
}
}

@ -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) {

@ -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');

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('course_types', function (Blueprint $table) {
$table->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');
});
}
};
Loading…
Cancel
Save