143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
namespace app\controller\api;
 | 
						|
 | 
						|
use app\exception\RepositoryException;
 | 
						|
use app\repository\BusinessRepository;
 | 
						|
use app\repository\CouponRepository;
 | 
						|
use app\repository\DictionaryRepository;
 | 
						|
use think\response\Json;
 | 
						|
use app\model\{
 | 
						|
    Business as BusinessModel
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * APP 数据字典
 | 
						|
 *
 | 
						|
 * Class Dictionary
 | 
						|
 * @package app\controller\api
 | 
						|
 */
 | 
						|
class Dictionary extends Base
 | 
						|
{
 | 
						|
    protected $noNeedLogin = [
 | 
						|
        'getDistanceList',
 | 
						|
        'getBusinessCircle',
 | 
						|
        'getAgencyList',
 | 
						|
        'getBusinessTypeList',
 | 
						|
        'getCouponTypeList',
 | 
						|
    ];
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取距离(distance)列表
 | 
						|
     * @return Json
 | 
						|
     */
 | 
						|
    public function getDisList(): Json
 | 
						|
    {
 | 
						|
        $list = [
 | 
						|
            ['id' => 1, 'name'=> "1km", 'value' => 1],
 | 
						|
            ['id' => 3, 'name'=> "3km", 'value' => 3],
 | 
						|
            ['id' => 5, 'name'=> "5km", 'value' => 5],
 | 
						|
            ['id' => 10, 'name'=> "10km", 'value' => 10],
 | 
						|
        ];
 | 
						|
 | 
						|
        return $this->json(0, 'success', $list);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取商圈列表
 | 
						|
     * @return Json
 | 
						|
     */
 | 
						|
    public function getBusinessCircle(): Json
 | 
						|
    {
 | 
						|
        $items = DictionaryRepository::getInstance()->getAllBusinessCircleList();
 | 
						|
        $items->each(function ($item) {
 | 
						|
            $areaText = '';
 | 
						|
            if (!empty($item['province_text'])) {
 | 
						|
                $areaText = $item['province_text'].'·';
 | 
						|
            }
 | 
						|
            if (!empty($item['city_text']) && $item['city_text'] != '市辖区') {
 | 
						|
                $areaText .=  $item['city_text'].'·';
 | 
						|
            }
 | 
						|
            if (!empty($item['county_text'])) {
 | 
						|
                $areaText .=  $item['county_text'];
 | 
						|
            }
 | 
						|
 | 
						|
            $item['name_text'] = $item['name'];
 | 
						|
            if (!empty($areaText)) {
 | 
						|
                $item['name_text'] = $item['name'] . '「'.$areaText.'」';
 | 
						|
            }
 | 
						|
 | 
						|
            return $item;
 | 
						|
        });
 | 
						|
        return $this->json(0, 'success', $items);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取代理机构(代理商)关联的商家列表
 | 
						|
     * (来源商家表中的代理商)
 | 
						|
     *
 | 
						|
     * $size 0 表示不分页,获取所有数据
 | 
						|
     *
 | 
						|
     */
 | 
						|
    public function getAgencyList(): Json
 | 
						|
    {
 | 
						|
        try {
 | 
						|
            $page = $this->request->param('page/d', 1);
 | 
						|
            $size = $this->request->param('size/d', 10);
 | 
						|
 | 
						|
            $whereMap   = [];
 | 
						|
            $whereMap[] = ['is_agency', '=', self::BOOL_TRUE];
 | 
						|
            $whereMap[] = ['is_delete', '=', self::BOOL_FALSE];
 | 
						|
            $whereMap[] = ['state', '=', BusinessModel::state_on];
 | 
						|
            $whereMap[] = ['enable', '=', self::BOOL_FALSE];
 | 
						|
 | 
						|
            $sortOrder  = ['id'=>"asc"];
 | 
						|
            $fields = ['id', 'code', 'business_name', 'business_subtitle', 'business_license',
 | 
						|
                'lat', 'lng', 'business_address', 'contact_name', 'contact_phone',
 | 
						|
                'create_time', 'type', 'type_name', 'characteristic', 'intro',
 | 
						|
                'business_circle', 'business_circle_id', 'background', 'score',
 | 
						|
            ];
 | 
						|
 | 
						|
            $repo   = BusinessRepository::getInstance();
 | 
						|
            $res    = $repo->findList($whereMap, $fields, $page, $size, null, $sortOrder);
 | 
						|
 | 
						|
            return $this->json(0 , 'success', $res);
 | 
						|
        } catch (RepositoryException | \Exception $e) {
 | 
						|
 | 
						|
            return $this->json(0 , 'success', []);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取商家分类
 | 
						|
     */
 | 
						|
    public function getBusinessTypeList(): Json
 | 
						|
    {
 | 
						|
        $pid    = $this->request->param('pid/d', 0);
 | 
						|
 | 
						|
        $whereMap   = [];
 | 
						|
        if ($pid > 0) {
 | 
						|
            $whereMap[] = ['pid', '=', $pid];
 | 
						|
        }
 | 
						|
 | 
						|
        $repo       = DictionaryRepository::getInstance();
 | 
						|
        $items      = $repo->getBusinessTypeList($whereMap, [], null, ['pid'=>'asc']);
 | 
						|
 | 
						|
        $list       = $items->toArray();
 | 
						|
        $list       = $repo->recursionChildrenList($list, $pid, 'pid', 'id');
 | 
						|
 | 
						|
        return $this->json(0, 'success', $list);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取优惠卷类型列表
 | 
						|
     * @return Json
 | 
						|
     */
 | 
						|
    public function getCouponTypeList(): Json
 | 
						|
    {
 | 
						|
        $items = CouponRepository::getInstance()->getCouponTypeAll(['id', 'name'],['id'=>'asc']);
 | 
						|
        return $this->json(0, 'success', $items);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
} |