76 lines
2.0 KiB
PHP
76 lines
2.0 KiB
PHP
<?php
|
||
|
||
namespace app\common\model;
|
||
|
||
use support\Model;
|
||
|
||
class CrmCustomer extends Model
|
||
{
|
||
/**
|
||
* The connection name for the model.
|
||
*
|
||
* @var string|null
|
||
*/
|
||
protected $connection = 'mysql';
|
||
|
||
/**
|
||
* The table associated with the model.
|
||
*
|
||
* @var string
|
||
*/
|
||
protected $table = 'crm_customer';
|
||
|
||
/**
|
||
* The primary key associated with the table.
|
||
*
|
||
* @var string
|
||
*/
|
||
protected $primaryKey = 'id';
|
||
|
||
/**
|
||
* Indicates if the model should be timestamped.
|
||
*
|
||
* @var bool
|
||
*/
|
||
public $timestamps = true;
|
||
|
||
|
||
protected $dateFormat = 'U';
|
||
|
||
/**
|
||
* 允许自动填充模型字段
|
||
*/
|
||
protected $fillable = ['id', 'sn', 'corp_abbr', 'user_id', 'user_sn', 'type', 'grade', 'sex', 'channel_id', 'country_id', 'car_type_id', 'magnitude', 'email', 'phone', 'WhatsApp', 'contacts', 'describe', 'desc_collect', 'address', 'lat', 'lng', 'follow_last', 'follow_next', 'warn', 'follow_remark', 'enter_user_id', 'created_at', 'updated_at', 'deleted_at'];
|
||
|
||
/**
|
||
* 不允许自动填充模型字段
|
||
*/
|
||
protected $guarded = [];
|
||
|
||
protected static function booted()
|
||
{
|
||
static::saved(function ($customer) {
|
||
if (empty($customer->code)) {
|
||
$customer->code = self::generateCustomerCode($customer);
|
||
// 使用saveQuietly避免递归调用
|
||
$customer->saveQuietly();
|
||
}
|
||
});
|
||
}
|
||
|
||
public static function generateCustomerCode($customer)
|
||
{
|
||
// 生成唯一16位code,CM+14位
|
||
$unique = strtoupper(substr(md5($customer->id . microtime(true) . mt_rand(1000, 9999)), 8, 14));
|
||
$code = 'CM' . date('Ymd') .$unique;
|
||
return $code;
|
||
}
|
||
|
||
// 静默保存方法,不触发事件
|
||
public function saveQuietly(array $options = [])
|
||
{
|
||
return static::withoutEvents(function () use ($options) {
|
||
return $this->save($options);
|
||
});
|
||
}
|
||
} |