2019-05-16 14:29:59 +08:00

313 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\ebapi\controller;
use app\core\model\user\UserBill;
use app\core\model\system\SystemUserLevel;
use app\core\model\system\SystemUserTask;
use app\core\model\user\UserLevel;
use app\ebapi\model\store\StoreCategory;
use app\core\model\routine\RoutineFormId;//待完善
use app\ebapi\model\store\StoreCouponIssue;
use app\ebapi\model\store\StoreProduct;
use app\core\util\GroupDataService;
use service\HttpService;
use service\JsonService;
use app\core\util\SystemConfigService;
use service\UploadService;
use service\UtilService;
use service\CacheService;
use think\Cache;
/**
* 小程序公共接口
* Class PublicApi
* @package app\ebapi\controller
*
*/
class PublicApi extends AuthController
{
/*
* 白名单不验证token 如果传入token执行验证获取信息没有获取到用户信息
* */
public static function whiteList()
{
return [
'index',
'get_index_groom_list',
'get_hot_product',
'refresh_cache',
'clear_cache',
'get_logo_url',
'get_my_naviga',
];
}
/*
* 获取个人中心菜单
* */
public function get_my_naviga()
{
return JsonService::successful(['routine_my_menus'=>GroupDataService::getData('routine_my_menus')]);
}
/*
* 获取授权登录log
* */
public function get_logo_url()
{
$routine_logo=SystemConfigService::get('routine_logo');
return JsonService::successful(['logo_url'=>str_replace('\\','/',$routine_logo)]);
}
/**
* TODO 获取首页推荐不同类型产品的轮播图和产品
* @param int $type
*/
public function get_index_groom_list($type = 1){
$info['banner'] = [];
$info['list'] = [];
if($type == 1){//TODO 精品推荐
$info['banner'] = GroupDataService::getData('routine_home_bast_banner')?:[];//TODO 首页精品推荐图片
$info['list'] = StoreProduct::getBestProduct('id,image,store_name,cate_id,price,ot_price,IFNULL(sales,0) + IFNULL(ficti,0) as sales,unit_name,sort');//TODO 精品推荐个数
}else if($type == 2){//TODO 热门榜单
$info['banner'] = GroupDataService::getData('routine_home_hot_banner')?:[];//TODO 热门榜单 猜你喜欢推荐图片
$info['list'] = StoreProduct::getHotProduct('id,image,store_name,cate_id,price,ot_price,unit_name,sort,IFNULL(sales,0) + IFNULL(ficti,0) as sales',0,$this->uid);//TODO 热门榜单 猜你喜欢
}else if($type == 3){//TODO 首发新品
$info['banner'] = GroupDataService::getData('routine_home_new_banner')?:[];//TODO 首发新品推荐图片
$info['list'] = StoreProduct::getNewProduct('id,image,store_name,cate_id,price,ot_price,unit_name,sort,IFNULL(sales,0) + IFNULL(ficti,0) as sales',0,$this->uid);//TODO 首发新品
}else if($type == 4){//TODO 促销单品
$info['banner'] = GroupDataService::getData('routine_home_benefit_banner')?:[];//TODO 促销单品推荐图片
$info['list'] = StoreProduct::getBenefitProduct('id,image,store_name,cate_id,price,ot_price,stock,unit_name,sort');//TODO 促销单品
}
return JsonService::successful($info);
}
/**
* 首页
*/
public function index(){
$banner = GroupDataService::getData('routine_home_banner')?:[];//TODO 首页banner图
$menus = GroupDataService::getData('routine_home_menus')?:[];//TODO 首页按钮
$roll = GroupDataService::getData('routine_home_roll_news')?:[];//TODO 首页滚动新闻
$activity = GroupDataService::getData('routine_home_activity',3)?:[];//TODO 首页活动区域图片
$info['fastInfo'] = SystemConfigService::get('fast_info');//TODO 快速选择简介
$info['bastInfo'] = SystemConfigService::get('bast_info');//TODO 精品推荐简介
$info['firstInfo'] = SystemConfigService::get('first_info');//TODO 首发新品简介
$info['salesInfo'] = SystemConfigService::get('sales_info');//TODO 促销单品简介
$logoUrl = SystemConfigService::get('routine_index_logo');//TODO 促销单品简介
if(strstr($logoUrl,'http')===false) $logoUrl=SystemConfigService::get('site_url').$logoUrl;
$logoUrl=str_replace('\\','/',$logoUrl);
$fastNumber = (int)SystemConfigService::get('fast_number');//TODO 快速选择分类个数
$bastNumber = (int)SystemConfigService::get('bast_number');//TODO 精品推荐个数
$firstNumber = (int)SystemConfigService::get('first_number');//TODO 首发新品个数
$info['fastList'] = StoreCategory::byIndexList($fastNumber);//TODO 快速选择分类个数
$info['bastList'] = StoreProduct::getBestProduct('id,image,store_name,cate_id,price,ot_price,IFNULL(sales,0) + IFNULL(ficti,0) as sales,unit_name,sort',$bastNumber,$this->uid);//TODO 精品推荐个数
$info['firstList'] = StoreProduct::getNewProduct('id,image,store_name,cate_id,price,unit_name,sort',$firstNumber);//TODO 首发新品个数
$info['bastBanner'] = GroupDataService::getData('routine_home_bast_banner')?:[];//TODO 首页精品推荐图片
$benefit = StoreProduct::getBenefitProduct('id,image,store_name,cate_id,price,ot_price,stock,unit_name,sort',3);//TODO 首页促销单品
$lovely =[];//TODO 首发新品顶部图
$likeInfo = StoreProduct::getHotProduct('id,image,store_name,cate_id,price,unit_name,sort',3);//TODO 热门榜单 猜你喜欢
$couponList=StoreCouponIssue::getIssueCouponList($this->uid,3);
return $this->successful(compact('banner','menus','roll','info','activity','lovely','benefit','likeInfo','logoUrl','couponList'));
}
/**
* 猜你喜欢 加载
* @param Request $request
*/
public function get_hot_product(){
$data = UtilService::getMore([['offset',0],['limit',0]],$this->request);
$hot = StoreProduct::getHotProductLoading('id,image,store_name,cate_id,price,unit_name,sort',$data['offset'],$data['limit']);//猜你喜欢
return $this->successful($hot);
}
/*
* 根据经纬度获取当前地理位置
* */
public function getlocation($latitude='',$longitude=''){
$location=HttpService::getRequest('https://apis.map.qq.com/ws/geocoder/v1/',
['location'=>$latitude.','.$longitude,'key'=>'U65BZ-F2IHX-CGZ4I-73I7L-M6FZF-TEFCH']);
$location=$location ? json_decode($location,true) : [];
if($location && isset($location['result']['address'])){
try{
$address=$location['result']['address_component']['street'];
return $this->successful(['address'=>$address]);
}catch (\Exception $e){
return $this->fail('获取位置信息失败!');
}
}else{
return $this->fail('获取位置信息失败!');
}
}
/*
* 根据key来取系统的值
* */
public function get_system_config_value($name=''){
if($name=='') return JsonService::fail('缺少参数');
$name=str_replace(SystemConfigService::$ProtectedKey,'',$name);
if(strstr($name,',')!==false){
return $this->successful(SystemConfigService::more($name));
}else{
$value=SystemConfigService::get($name);
$value=is_array($value) ? $value[0] : $value;
return $this->successful([$name=>$value]);
}
}
/*
* 获取系统
* */
public function get_system_group_data_value($name='',$multi=0){
if($name=='') return $this->successful([$name=>[]]);
if($multi==1){
$name=json_decode($name,true);
$value=[];
foreach ($name as $item){
$value[$item]=GroupDataService::getData($item)?:[];
}
return $this->successful($value);
}else{
$value= GroupDataService::getData($name)?:[];
return $this->successful([$name=>$value]);
}
}
/*
* 删除指定资源
*
* */
public function delete_image(){
$post=UtilService::postMore([
['pic',''],
]);
if($post['pic']=='') return $this->fail('缺少删除资源');
$type=['php','js','css','html','ttf','otf'];
$post['pic']=substr($post['pic'],1);
$ext=substr($post['pic'],-3);
if(in_array($ext,$type)) return $this->fail('非法操作');
if(strstr($post['pic'],'uploads')===false) return $this->fail('非法操作');
try{
if(file_exists($post['pic'])) unlink($post['pic']);
if(strstr($post['pic'],'s_')!==false){
$pic=str_replace(['s_'],'',$post['pic']);
if(file_exists($pic)) unlink($pic);
}
return $this->successful('删除成功');
}catch (\Exception $e){
return $this->fail('刪除失败',['line'=>$e->getLine(),'message'=>$e->getMessage()]);
}
}
/**
* 上传图片
* @param string $filename
* @return \think\response\Json
*/
public function upload($dir='')
{
$data = UtilService::postMore([
['filename',''],
],$this->request);
if(Cache::has('start_uploads_'.$this->uid) && Cache::get('start_uploads_'.$this->uid) >= 100) return $this->fail('非法操作');
$res = UploadService::image($data['filename'],$dir ? $dir: 'store/comment');
if($res->status == 200){
if(Cache::has('start_uploads_'.$this->uid))
$start_uploads=(int)Cache::get('start_uploads_'.$this->uid);
else
$start_uploads=0;
$start_uploads++;
Cache::set('start_uploads_'.$this->uid,$start_uploads,86400);
return $this->successful('图片上传成功!', ['name' => $res->fileInfo->getSaveName(), 'url' => UploadService::pathToUrl($res->dir)]);
}else
return $this->fail($res->error);
}
/**
* 获取退款理由
*/
public function get_refund_reason(){
$reason = SystemConfigService::get('stor_reason')?:[];//退款理由
$reason = str_replace("\r\n","\n",$reason);//防止不兼容
$reason = explode("\n",$reason);
return $this->successful($reason);
}
/**
* 获取提现银行
*/
public function get_user_extract_bank(){
$extractBank = SystemConfigService::get('user_extract_bank')?:[];//提现银行
$extractBank = str_replace("\r\n","\n",$extractBank);//防止不兼容
$data['extractBank'] = explode("\n",$extractBank);
$data['minPrice'] = SystemConfigService::get('user_extract_min_price');//提现最低金额
return $this->successful($data);
}
/**
* 收集发送模板信息的formID
* @param string $formId
*/
public function get_form_id($formId = ''){
if($formId==''){
list($formIds)=UtilService::postMore([
['formIds',[]]
],$this->request,true);
foreach ($formIds as $formId){
RoutineFormId::SetFormId($formId,$this->uid);
}
}else
RoutineFormId::SetFormId($formId,$this->uid);
return $this->successful('');
}
/**
* 刷新数据缓存
*/
public function refresh_cache(){
`php think optimize:schema`;
`php think optimize:autoload`;
`php think optimize:route`;
`php think optimize:config`;
}
/*
* 清除系统全部缓存
* @return
* */
public function clear_cache()
{
\think\Cache::clear();
}
/*
* 获取会员等级
* */
public function get_level_list()
{
return JsonService::successful(SystemUserLevel::getLevelList($this->uid));
}
/*
* 获取某个等级的任务
* @param int $level_id 等级id
* @return json
* */
public function get_task($level_id=''){
return JsonService::successful(SystemUserTask::getTashList($level_id,$this->uid));
}
/*
* 检测用户是否可以成为会员
* */
public function set_level_complete()
{
return JsonService::successful(UserLevel::setLevelComplete($this->uid));
}
/*
* 记录用户分享次数
* */
public function set_user_share()
{
return JsonService::successful(UserBill::setUserShare($this->uid));
}
}