coupon-admin/app/controller/api/Dictionary.php

170 lines
4.8 KiB
PHP
Raw Normal View History

2021-11-29 05:59:29 +00:00
<?php
namespace app\controller\api;
use app\exception\RepositoryException;
use app\repository\BusinessRepository;
2021-11-29 08:34:25 +00:00
use app\repository\CouponRepository;
use app\repository\DictionaryRepository;
2022-01-20 05:56:21 +00:00
use think\facade\Config as CConfig;
2021-11-29 05:59:29 +00:00
use think\response\Json;
2022-01-20 05:56:21 +00:00
use app\model\{Business as BusinessModel, BusinessCircle, Member};
2021-11-29 05:59:29 +00:00
/**
* APP 数据字典
*
* Class Dictionary
* @package app\controller\api
*/
class Dictionary extends Base
{
protected $noNeedLogin = [
'getDistanceList',
2021-11-29 08:34:25 +00:00
'getBusinessCircle',
2021-11-29 05:59:29 +00:00
'getAgencyList',
2021-11-29 08:34:25 +00:00
'getBusinessTypeList',
'getCouponTypeList',
2022-01-20 05:56:21 +00:00
'screen',
2021-11-29 05:59:29 +00:00
];
/**
* 获取距离(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);
}
/**
* 获取商圈列表
2021-11-29 08:34:25 +00:00
* @return Json
2021-11-29 05:59:29 +00:00
*/
2021-11-29 08:34:25 +00:00
public function getBusinessCircle(): Json
2021-11-29 05:59:29 +00:00
{
2022-01-27 03:16:02 +00:00
$lng = $this->request->param('lng/f', 0); // 经度 104.752890
$lat = $this->request->param('lat/f', 0); // 纬度 31.465040
$field = ["*"];
$order = [];
if ($lng && $lat) {
2022-01-27 06:09:14 +00:00
$field[] = "abs( (IFNULL(lat,0) - {$lat}) * (IFNULL(lng,0) - {$lng}) ) as square";
2022-01-27 03:16:02 +00:00
$order["square"] = "asc";
}
$order["sort"] = "desc";
$order["id"] = "desc";
$items = DictionaryRepository::getInstance()->getAllBusinessCircleList($field,$order);
2022-01-27 06:02:28 +00:00
$items->each(function ($item)use($lat,$lng) {
2021-11-30 10:52:02 +00:00
$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.'」';
}
2022-01-27 06:02:28 +00:00
if($lng && $lat){
$distance = get_distance($lat,$lng,$item['lat'],$item['lng']);
2022-01-27 08:51:51 +00:00
if ($distance >= 1000) {
$distance = round($distance/1000,2)."km";
2022-01-27 06:02:28 +00:00
}else{
2022-01-27 08:51:51 +00:00
$distance .= "m";
2022-01-27 06:02:28 +00:00
}
$item['distance_text'] = $distance;
}else{
$item['distance_text'] = '';
}
2021-11-30 10:52:02 +00:00
return $item;
});
2021-11-29 08:34:25 +00:00
return $this->json(0, 'success', $items);
2021-11-29 05:59:29 +00:00
}
/**
2021-11-30 10:52:02 +00:00
* 获取代理机构(代理商)关联的商家列表
* (来源商家表中的代理商)
2021-11-29 05:59:29 +00:00
*
* $size 0 表示不分页,获取所有数据
*
*/
public function getAgencyList(): Json
{
try {
2021-12-23 10:09:30 +00:00
$data = Member::getAgentAll();
return $this->json(0 , 'success', $data);
2021-11-29 05:59:29 +00:00
} catch (RepositoryException | \Exception $e) {
return $this->json(0 , 'success', []);
}
}
2021-11-29 08:34:25 +00:00
/**
* 获取商家分类
*/
public function getBusinessTypeList(): Json
{
$pid = $this->request->param('pid/d', 0);
2021-11-29 08:34:25 +00:00
$whereMap = [];
if ($pid > 0) {
$whereMap[] = ['pid', '=', $pid];
}
$repo = DictionaryRepository::getInstance();
$items = $repo->getBusinessTypeList($whereMap, [], null, ['pid'=>'asc']);
2021-11-29 08:34:25 +00:00
$list = $items->toArray();
$list = $repo->recursionChildrenList($list, $pid, 'pid', 'id');
2021-11-29 08:34:25 +00:00
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);
}
2021-11-29 05:59:29 +00:00
2022-01-20 05:56:21 +00:00
/**
* 商圈大屏
* */
public function screen()
{
$id = input("id/d",0);
$business_circle = BusinessCircle::findOne([["id","=",$id]]);
if(empty($business_circle)){
return $this->json(4001,"商圈不存在");
}
$couponMain = CouponRepository::getInstance()->screen($id);
CConfig::load('extra/wechat', 'wechat');
$screenTopBanner = config('wechat')['screenTopBanner']??"/static/images/screenTopBanner.jpg";
2022-01-20 12:12:22 +00:00
return view('/page/screen')->assign(["couponMain"=>json_encode($couponMain),"screenTopBanner"=>($screenTopBanner)]);
2022-01-20 05:56:21 +00:00
}
2021-11-29 05:59:29 +00:00
}