Region::getNameById($data['province_id']), 'city' => Region::getNameById($data['city_id']), 'region' => $data['region_id'] == 0 ? '' : Region::getNameById($data['region_id']), ]; } public function getSexAttr($value) { $data = [10 => '未知', 20 => '男', 30 => '女']; return $data[$value]; } /** * 关联用户 * @return \think\model\relation\HasOne */ public function user() { $model = self::getCalledModule() ?: 'common'; return $this->hasOne("app\\$model\\model\\user\\User", 'user_id', 'user_id'); } /** * 头像 * @return \think\model\relation\HasOne */ public function image() { $model = self::getCalledModule() ?: 'common'; return $this->hasOne("app\\$model\\model\\file\\UploadFile", 'file_id', 'file_id')->bind(['file_path']); } /** * logo * @return \think\model\relation\HasOne */ public function logoImage() { $model = self::getCalledModule() ?: 'common'; return $this->hasOne("app\\$model\\model\\file\\UploadFile", 'file_id', 'logo'); } /** * 等级 * @return \think\model\relation\HasOne */ public function grade() { $model = self::getCalledModule() ?: 'common'; return $this->hasOne("app\\$model\\model\\plus\\business\\Grade", 'grade_id', 'grade_id'); } public function industry() { $model = self::getCalledModule() ?: 'common'; return $this->hasOne("app\\$model\\model\\plus\\business\\Industry", 'industry_id', 'industry_id'); } /** * 添加 * @param $data * @return false|int */ public function add($data) { $data['app_id'] = self::$app_id; $data['grade_id'] = (new Grade())->getDefaultGradeId(); return $this->save($data); } public function getUnitAttr($name) { return json_decode($name); } public function getDutiesAttr($name) { return json_decode($name); } public function getAddressAttr($name) { return json_decode($name); } public function getPositionAttr($name) { return $name ? json_decode($name) : []; } /** * 获取名片列表 * @param $param * @return \think\Paginator * @throws \think\db\exception\DbException */ public function getList($param = []) { $paramr = array_merge(['listRow' => 15], $param); $where = []; !empty($paramr['name']) && $where['name'] = ['like', '%' . $paramr['name'] . '%']; !empty($paramr['search']) && $where['name|duties|unit'] = ['like', '%' . $paramr['search'] . '%']; !empty($paramr['user_id']) && $where['user_id'] = $paramr['user_id']; !empty($paramr['industry_id']) && $where['industry_id'] = $paramr['industry_id']; !empty($paramr['province_id']) && $where['province_id'] = $paramr['province_id']; !empty($paramr['city_id']) && $where['city_id'] = $paramr['city_id']; !empty($paramr['region_id']) && $where['region_id'] = $paramr['region_id']; if (!empty($paramr['sort'])) { $order = ['is_top' => 'desc', 'top_time' => 'desc']; if ($paramr['sort'] == 'name') { $order['name'] = "asc"; } else if ($paramr['sort'] == 'time') { $order['create_time'] = "asc"; } else { $order['unit'] = "asc"; } } else { // 检查置顶时间是否过期,如果过期则设置为非置顶 $this->checkTopExpire(); // 按置顶状态和创建时间排序 $order = ['is_top' => 'desc', 'top_time' => 'desc', 'create_time' => 'desc']; } return $this->with(['user', 'image', 'logoImage', 'grade'])->order($order)->where($where)->paginate($paramr); } /** * 检查并更新过期的置顶名片 */ private function checkTopExpire() { $this->where('is_top', 1) ->where('top_time', '<', time()) ->update(['is_top' => 0]); } /** * 获取名片详情 * @param $business_card_id * @return array|false|\think\Model|null * @throws \think\db\exception\DbException */ public static function detail($business_card_id) { return (new self())->with(['user', 'image', 'logoImage', 'grade', 'industry'])->where(['business_card_id' => $business_card_id])->find(); } }