122 lines
4.4 KiB
PHP
122 lines
4.4 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | YwxApp [ WE CAN DO IT JUST THINK ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Author: ywxapp<admin@ywxapp.cn>
|
|
// +----------------------------------------------------------------------
|
|
namespace ywxapp\model;
|
|
use ywxapp\model\BaseModel;
|
|
|
|
/**
|
|
* 用户资料模型
|
|
*/
|
|
class MemberProfile extends BaseModel
|
|
{
|
|
|
|
protected function getOptions(): array
|
|
{
|
|
return [
|
|
'strict' => false,
|
|
'name' => 'member_profile',
|
|
'autoWriteTimestamp' => 'int',
|
|
'createTime' => 'create_at',
|
|
'updateTime' => 'update_at',
|
|
// 'deleteTime' => 'delete_at',
|
|
// 'defaultSoftDelete' => 0,
|
|
// 'dateFormat' => 'Y-m-d H:i:s',
|
|
'append' => ['is_parent', 'age', 'is_online'],
|
|
'hidden' => ['create_at', 'update_at', 'delete_at'],
|
|
'readonly' => ['uid'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 计算年龄
|
|
*/
|
|
public function getAgeAttr()
|
|
{
|
|
if (empty($this->birthday)) {
|
|
return 0;
|
|
}
|
|
$b = strtotime($this->birthday);
|
|
if ($b === false) {
|
|
return 0;
|
|
}
|
|
return (int) floor((time() - $b) / 31557600);
|
|
}
|
|
|
|
/**
|
|
* 是否在线(5 分钟内活跃)
|
|
*/
|
|
public function getIsOnlineAttr()
|
|
{
|
|
return $this->online_status == 1
|
|
|| (! empty($this->last_active_at) && time() - (int) $this->last_active_at < 300);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 表结构自愈:建表 + 关键列兜底(install.sql 为事实源)。
|
|
* 查询/写入前调用,避免老库缺表导致 1146。
|
|
*/
|
|
public static function ensureSchema(): void
|
|
{
|
|
BaseModel::ensureTableFromInstall(BaseModel::currentPrefix(), 'member_profile');
|
|
}
|
|
}
|
|
|
|
// realname varchar(255) NO 实名
|
|
// gender tinyint(1) 0 NO 性别 (0:保密 1:男 2:女)
|
|
// birthyear smallint(6) unsigned 0 NO
|
|
// birthmonth tinyint(3) unsigned 0 NO
|
|
// birthday tinyint(3) unsigned 0 NO
|
|
// constellation varchar(255) NO 星座(根据生日自动计算)
|
|
// zodiac varchar(255) NO 生肖(根据生日自动计算)
|
|
// telephone varchar(255) NO 固定电话
|
|
// mobile varchar(255) NO 手机
|
|
// idcardtype varchar(255) NO 证件类型:身份证 护照 军官证等
|
|
// idcard varchar(255) NO 证件号码
|
|
// address varchar(255) NO 邮寄地址
|
|
// zipcode varchar(255) NO 邮编
|
|
// nationality varchar(255) NO 国籍
|
|
// birthprovince varchar(255) NO 出生省份
|
|
// birthcity varchar(255) NO 出生城市
|
|
// birthdist varchar(20) NO 出生行政区/县
|
|
// birthcommunity varchar(255) NO 出生小区
|
|
// resideprovince varchar(255) NO 居住省份
|
|
// residecity varchar(255) NO 居住城市
|
|
// residedist varchar(20) NO 居住行政区/县
|
|
// residecommunity varchar(255) NO 居住小区
|
|
// residesuite varchar(255) NO 小区、写字楼门牌号
|
|
// graduateschool varchar(255) NO 毕业学校
|
|
// company varchar(255) NO 公司
|
|
// education varchar(255) NO 学历
|
|
// occupation varchar(255) NO 职业
|
|
// position varchar(255) NO 职位
|
|
// revenue varchar(255) NO 年收入
|
|
// affectivestatus varchar(255) NO 情感状态
|
|
// lookingfor varchar(255) NO 交友目的(交友类型)
|
|
// bloodtype varchar(255) NO 血型
|
|
// height varchar(255) NO 身高
|
|
// weight varchar(255) NO 体重
|
|
// alipay varchar(255) NO 支付宝帐号
|
|
// icq varchar(255) NO ICQ
|
|
// qq varchar(255) NO QQ
|
|
// yahoo varchar(255) NO YAHOO
|
|
// msn varchar(255) NO MSN
|
|
// taobao varchar(255) NO 阿里旺旺
|
|
// site varchar(255) NO 主页
|
|
// bio text NO 自我介绍 来自论坛bio字段
|
|
// interest text NO 兴趣爱好
|
|
// field1 text NO 自定义字段1
|
|
// field2 text NO 自定义字段2
|
|
// field3 text NO 自定义字段3
|
|
// field4 text NO 自定义字段4
|
|
// field5 text NO 自定义字段5
|
|
// field6 text NO 自定义字段6
|
|
// field7 text NO 自定义字段7
|
|
// field8 text NO 自定义字段8
|