You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
7.5 KiB
190 lines
7.5 KiB
2 months ago
|
<?php
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
||
|
// +----------------------------------------------------------------------
|
||
|
|
||
|
namespace app\controller\api\v2;
|
||
|
|
||
|
|
||
|
use app\Request;
|
||
|
use app\services\diy\DiyServices;
|
||
|
use app\services\other\CityAreaServices;
|
||
|
use app\services\product\category\StoreProductCategoryServices;
|
||
|
use app\services\product\product\StoreProductServices;
|
||
|
use app\services\wechat\WechatUserServices;
|
||
|
use crmeb\services\CacheService;
|
||
|
use app\services\other\CacheServices;
|
||
|
use crmeb\services\SystemConfigService;
|
||
|
use app\services\system\attachment\SystemAttachmentServices;
|
||
|
|
||
|
class PublicController
|
||
|
{
|
||
|
/**
|
||
|
* 主页获取
|
||
|
* @param Request $request
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function index(Request $request)
|
||
|
{
|
||
|
$uid = $request->hasMacro('uid') ? (int)$request->uid() : 0;
|
||
|
$data = SystemConfigService::more(['fast_number', 'bast_number', 'first_number', 'promotion_number', 'tengxun_map_key', 'site_name']);
|
||
|
$site_name = $data['site_name'] ?? '';
|
||
|
$tengxun_map_key = $data['tengxun_map_key'] ?? '';
|
||
|
$fastNumber = (int)($data['fast_number'] ?? 0);// 快速选择分类个数
|
||
|
$bastNumber = (int)($data['bast_number'] ?? 0);// 精品推荐个数
|
||
|
$firstNumber = (int)($data['first_number'] ?? 0);// 首发新品个数
|
||
|
$promotionNumber = (int)($data['promotion_number'] ?? 0);// 首发新品个数
|
||
|
/** @var StoreProductCategoryServices $categoryService */
|
||
|
$categoryService = app()->make(StoreProductCategoryServices::class);
|
||
|
$info['fastList'] = $fastNumber ? $categoryService->byIndexList($fastNumber, 'id,cate_name,pid,pic') : [];// 快速选择分类个数
|
||
|
/** @var StoreProductServices $storeProductServices */
|
||
|
$storeProductServices = app()->make(StoreProductServices::class);
|
||
|
$info['bastList'] = $bastNumber ? $storeProductServices->getRecommendProduct($uid, ['is_best' => 1], $bastNumber) : [];// 精品推荐个数
|
||
|
$info['firstList'] = $firstNumber ? $storeProductServices->getRecommendProduct($uid, ['is_new' => 1], $firstNumber) : [];// 首发新品个数
|
||
|
$benefit = $promotionNumber ? $storeProductServices->getRecommendProduct($uid, ['is_benefit' => 1], $promotionNumber) : [];// 首页促销单品
|
||
|
$likeInfo = $storeProductServices->getRecommendProduct($uid, ['is_hot' => 1], 3);// 热门榜单 猜你喜欢
|
||
|
if ($uid) {
|
||
|
/** @var WechatUserServices $wechatUserService */
|
||
|
$wechatUserService = app()->make(WechatUserServices::class);
|
||
|
$subscribe = (bool)$wechatUserService->value(['uid' => $uid, 'user_type' => 'wechat'], 'subscribe');
|
||
|
} else {
|
||
|
$subscribe = true;
|
||
|
}
|
||
|
return app('json')->successful(compact('info', 'benefit', 'likeInfo', 'subscribe', 'tengxun_map_key', 'site_name'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取页面数据
|
||
|
* @return mixed
|
||
|
* @throws \think\db\exception\DataNotFoundException
|
||
|
* @throws \think\db\exception\DbException
|
||
|
* @throws \think\db\exception\ModelNotFoundException
|
||
|
*/
|
||
|
public function getDiy($name = '')
|
||
|
{
|
||
|
/** @var DiyServices $diyService */
|
||
|
$diyService = app()->make(DiyServices::class);
|
||
|
$data = CacheService::redisHandler('diy')->remember('diy_' . $name, function () use ($name, $diyService) {
|
||
|
$data = $diyService->getDiy($name);
|
||
|
if (isset($data['f_scroll_box']['goodsList']['list'])) {
|
||
|
$data['f_scroll_box']['goodsList']['list'] = get_thumb_water($data['f_scroll_box']['goodsList']['list'], 'small', ['pic']);
|
||
|
}
|
||
|
return $data;
|
||
|
});
|
||
|
return app('json')->successful($data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 是否强制绑定手机号
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function bindPhoneStatus()
|
||
|
{
|
||
|
$status = (bool)sys_config('store_user_mobile');
|
||
|
return app('json')->success(compact('status'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 是否关注
|
||
|
* @param Request $request
|
||
|
* @param WechatUserServices $services
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function subscribe(Request $request, WechatUserServices $services)
|
||
|
{
|
||
|
return app('json')->success(['subscribe' => (bool)$services->value(['uid' => $request->uid(), 'user_type' => 'wechat'], 'subscribe')]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取提货点自提开启状态
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function getStoreStatus()
|
||
|
{
|
||
|
$data['store_status'] = 0;
|
||
|
if (sys_config('store_func_status', 1)) {
|
||
|
$data['store_status'] = sys_config('store_self_mention', 0);
|
||
|
}
|
||
|
return app('json')->successful($data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取颜色选择和分类模板选择
|
||
|
* @param DiyServices $services
|
||
|
* @param $name
|
||
|
* @return mixed
|
||
|
* @throws \think\db\exception\DataNotFoundException
|
||
|
* @throws \think\db\exception\DbException
|
||
|
* @throws \think\db\exception\ModelNotFoundException
|
||
|
*/
|
||
|
public function colorChange(DiyServices $services, $name)
|
||
|
{
|
||
|
$status = (int)$services->getColorChange((string)$name);
|
||
|
$navigation = (int)sys_config('navigation_open');
|
||
|
return app('json')->success(compact('status', 'navigation'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取商品详情diy
|
||
|
* @param DiyServices $services
|
||
|
* @return mixed
|
||
|
* @throws \think\db\exception\DataNotFoundException
|
||
|
* @throws \think\db\exception\DbException
|
||
|
* @throws \think\db\exception\ModelNotFoundException
|
||
|
*/
|
||
|
public function productDetailDiy(DiyServices $services)
|
||
|
{
|
||
|
$product_detail = $services->getProductDetailDiy();
|
||
|
$product_video_status = (bool)sys_config('product_video_status');
|
||
|
$product_category = $services->getProductCategoryDiy();
|
||
|
return app('json')->success(compact('product_detail', 'product_video_status', 'product_category'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取城市
|
||
|
* @param CityAreaServices $services
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function city(Request $request, CityAreaServices $services)
|
||
|
{
|
||
|
$pid = $request->get('pid', 0);
|
||
|
$type = $request->get('type', 0);
|
||
|
return app('json')->success($services->getCityTreeList((int)$pid, (int)$type));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 解析(获取导入微信地址)
|
||
|
* @param CityAreaServices $services
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function cityList(Request $request, CityAreaServices $services)
|
||
|
{
|
||
|
$address = $request->param('address', '');
|
||
|
if (!$address)
|
||
|
return app('json')->fail('地址不存在');
|
||
|
|
||
|
$city = $services->searchCity(compact('address'));
|
||
|
if (!$city) return app('json')->fail('地址暂未录入,请联系管理员');
|
||
|
$where = [['id', 'in', array_merge([$city['id']], explode('/', trim($city->path, '/')))]];
|
||
|
return app('json')->success($services->getCityList($where, 'id as value,id,name as label,parent_id as pid', ['children']));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取客服类型配置
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function getCustomerType()
|
||
|
{
|
||
|
$data = SystemConfigService::more(['routine_contact_type', 'customer_type', 'customer_phone', 'customer_url', 'wechat_work_corpid']);
|
||
|
$data['userInfo'] = [];
|
||
|
return app('json')->success($data);
|
||
|
}
|
||
|
|
||
|
}
|