<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台(PHP版)
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 开源版本可自由商用,可去除界面版权logo
// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
// | github下载:https://github.com/likeshop-github/likeadmin
// | 访问官网:https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------

namespace app\store\controller;

use app\admin\logic\ConfigLogic;
use app\admin\logic\system_store\SystemStoreLogic;
use app\common\controller\Definitions;
use hg\apidoc\annotation as ApiDoc;
use think\facade\Db;

/**
 * 配置控制器
 * Class ConfigController
 * @package app\admin\controller
 */
#[ApiDoc\title('站点配置')]
class ConfigController extends BaseAdminController
{

    public $notNeedLogin = ['getConfig', 'dict'];

    #[
        ApiDoc\Title('站点配置'),
        ApiDoc\url('/store/config/getConfig'),
        ApiDoc\Method('GET'),
        ApiDoc\NotHeaders(),
        ApiDoc\Author('中国队长'),
        ApiDoc\ResponseSuccess("data", type: "array", children: [
            ['name' => 'oss_domain', 'desc' => 'oss域名', 'type' => 'string'],
            ['name' => 'web_name', 'desc' => '站点名称', 'type' => 'string'],
            ['name' => 'web_favicon', 'desc' => '站点图标', 'type' => 'string'],
            ['name' => 'web_logo', 'desc' => '站点logo', 'type' => 'string'],
            ['name' => 'login_image', 'desc' => '登录页背景图', 'type' => 'string'],
            ['name' => 'copyright_config', 'desc' => '版权信息', 'type' => 'array'],
        ]),
    ]
    public function getConfig()
    {
        $data = ConfigLogic::getConfig();
        return $this->data($data);
    }

    #[
        ApiDoc\Title('门店配置'),
        ApiDoc\url('/store/config/store'),
        ApiDoc\Method('GET'),
        ApiDoc\NotHeaders(),
        ApiDoc\Author('中国队长'),
        ApiDoc\Header(ref: [Definitions::class, "token"]),
        ApiDoc\ResponseSuccess("data", type: "array"),
    ]
    public function store()
    {
        $params['id'] = $this->request->adminInfo['store_id'];
        $result = SystemStoreLogic::detail($params);
        return $this->data($result);
    }

    #[
        ApiDoc\Title('保存门店配置'),
        ApiDoc\url('/store/config/saveStore'),
        ApiDoc\Method('POST'),
        ApiDoc\NotHeaders(),
        ApiDoc\Author('中国队长'),
        ApiDoc\Header(ref: [Definitions::class, "token"]),
        ApiDoc\ResponseSuccess("data", type: "array"),
    ]
    public function saveStore()
    {
        $params = $this->request->post();
        $params['id'] = $this->request->adminInfo['store_id'];
        SystemStoreLogic::edit($params);
        return $this->success('操作成功', [], 1, 1);
    }

    #[
        ApiDoc\Title('省列表'),
        ApiDoc\url('/store/config/province'),
        ApiDoc\Method('GET'),
        ApiDoc\NotHeaders(),
        ApiDoc\Author('中国队长'),
        ApiDoc\Header(ref: [Definitions::class, "token"]),
        ApiDoc\ResponseSuccess("data", type: "array"),
    ]
    public function province()
    {
        $list = Db::name('geo_province')->select()->toArray();
        return $this->success('ok', $list);
    }

    #[
        ApiDoc\Title('市列表'),
        ApiDoc\url('/store/config/city'),
        ApiDoc\Method('GET'),
        ApiDoc\NotHeaders(),
        ApiDoc\Author('中国队长'),
        ApiDoc\Query(name: 'code', type: 'int', require: true, desc: '省份代码'),
        ApiDoc\Header(ref: [Definitions::class, "token"]),
        ApiDoc\ResponseSuccess("data", type: "array"),
    ]
    public function city()
    {
        $province_code = $this->request->get('code');
        $list = Db::name('geo_city')->where('province_code', $province_code)->select()?->toArray();
        return $this->success('ok', $list);
    }

    #[
        ApiDoc\Title('区列表'),
        ApiDoc\url('/store/config/area'),
        ApiDoc\Method('GET'),
        ApiDoc\NotHeaders(),
        ApiDoc\Author('中国队长'),
        ApiDoc\Query(name: 'code', type: 'int', require: true, desc: '城市代码'),
        ApiDoc\Header(ref: [Definitions::class, "token"]),
        ApiDoc\ResponseSuccess("data", type: "array"),
    ]
    public function area()
    {
        $city_code = $this->request->get('code');
        $list = Db::name('geo_area')->where('city_code', $city_code)->select()?->toArray();
        return $this->success('ok', $list);
    }

}