// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\common\model; use cores\BaseModel; use think\model\relation\HasOne; /** * 商家记录表模型 * Class Store * @package app\common\model */ class Merchant extends BaseModel { // 定义表名 protected $name = 'merchant'; // 定义主键 protected $pk = 'merchant_id'; /** * 关联logo图片 * @return HasOne */ public function logoImage(): HasOne { return $this->hasOne('UploadFile', 'file_id', 'logo_image_id'); } /** * 关联logo图片 * @return HasOne */ public function licenseImage(): HasMany { return $this->HasMany('UploadFile', 'file_id', 'license_img_id'); } /** * 详情信息 * @param int $storeId * @return static|array|null */ public static function getMerchantId(String $userName) { try { $info = self::withoutGlobalScope() ->where('user_name', '=', $userName) ->find(); return $info['merchant_id'] ?? 0; } catch (\Exception $e) { return 0; } } /** * 详情信息 * @param int $storeId * @return static|array|null */ public static function detail(int $merchantId) { $where = [ 'merchant_id' => $merchantId, 'store_id' => self::$storeId ]; return static::get($where, []); } /** * 获取列表数据 * @param bool $isRecycle 是否在回收站 * @return \think\Paginator * @throws \think\db\exception\DbException */ public function getList(array $param = []): \think\Paginator { $res = $this->with(['logoImage']) ->where($this->getFilter($param)) ->where('is_delete', '=', 0) ->order(['sort' => 'asc', $this->getPk()]) ->paginate(15); return $res; } /** * 设置列表查询条件 * @param array $param * @return array */ private function getFilter(array $param = []): array { // 默认查询参数 $params = $this->setQueryDefaultValue($param, [ 'search' => '', // 搜索关键词: 门店名称/联系人/电话 ]); // 检索查询条件 $filter = []; // 搜索关键词 !empty($params['search']) && $filter[] = ['shop_name|shop_label', 'like', "%{$params['search']}%"]; // 门店状态 //is_numeric($params['status']) && $filter[] = ['status', '=', (int)$params['status']]; return $filter; } /** * 软删除 * @return bool */ public function setDelete(): bool { return $this->save(['is_delete' => 1]); } }