dggzichahu/application/api/logic/PcLogic.php

550 lines
18 KiB
PHP
Executable File
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
// +----------------------------------------------------------------------
// | 宏驰云科技开发团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | Author: HcyShop-竹
// +----------------------------------------------------------------------
namespace app\api\logic;
use app\api\model\Goods;
use app\common\model\Ad;
use app\common\server\ConfigServer;
use app\common\server\UrlServer;
use think\Db;
class PcLogic{
/**
* Notes:惠藏百件分类
* @return array
* @author:kiki
*/
public static function baijian_goods_category(){
$category_list = Db::name('goods_category')
->where(['del'=>0,'is_recommend'=>1])
->order('sort desc')
->field('id,name')
->select();
return $category_list;
}
/**
* Notes:pc端首页接口
* @return array
* @author:kiki
*/
public static function pcLists(){
//新品上架
$new_list = Db::name('goods g')
->where(['g.del'=>0,'g.status'=>1,'g.is_new'=>1])
->field('g.id as goods_id,g.name as goods_name,g.code,g.image,min_price as price,rongliang_name,sm.name as mud_name,s.name as supplier_name')
->join('screen_mud sm', 'g.mud_id = sm.id')
->join('supplier s', 'g.supplier_id = s.id')
->order('g.id desc,g.sort desc')
->limit(10)
->select();
$ad_list = Db::name('ad a')
->join('ad_position ap', 'a.pid = ap.id')
->where(['pid' =>[2],'a.status' => 1,'a.del' => 0,'ap.status' => 1,'ap.del' => 0])
->order('a.id desc')
->field('a.*')
->select();
$index_ad = []; //首页轮播图广告
foreach ($ad_list as $ad){
$url = $ad['link'];
$is_tab = 0;
$params = [];
switch ($ad['link_type']) {
case 1:
$page = Ad::getLinkPage($ad['client'], $ad['link']);
$url = $page['path'];
$is_tab = $page['is_tab'] ?? 0;
break;
case 2:
$goods_path = Ad::getGoodsPath($ad['client']);
$url = $goods_path;
$params = [
'id' => $ad['link'],
];
break;
}
//首页轮播图广告
if(empty($index_ad) && 2 == $ad['pid']){
$index_ad = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
}
//紫砂资讯
$article = Db::name('article')
->where(['del'=>0,'is_notice'=>1,'is_show'=>1])
->order('create_time desc')
->field('id,title,synopsis,image,create_time')
->limit(4)
->select();
foreach ($article as $key => $v1){
$article[$key]['image']=UrlServer::getFileUrl($v1['image']);
$article[$key]['create_time'] = date('Y-m-d', $v1['create_time']);
}
//专家信息
$supplier = Db::name('supplier')
->where(['del'=>0,'is_notice'=>1])
->order('create_time desc')
->field('id,name,remark,avatar')
->limit(6)
->select();
foreach ($supplier as $key => $v2){
$supplier[$key]['avatar']=UrlServer::getFileUrl($v2['avatar']);
}
//门店信息
$store = Db::name('store')
->where(['del'=>0,'is_show'=>1])
->order('create_time desc')
->field('id,title,address,image,business,traffic,contact')
->limit(4)
->select();
foreach ($store as $key => $v2){
$store[$key]['image']=UrlServer::getFileUrl($v1['image']);
}
$list = [
'new_list' => $new_list,
'index_ad' => $index_ad,
'article' => $article,
'supplier' => $supplier,
'store' => $store
];
return $list;
}
//专家信息
public static function supplierclssList(){
$supplier_category = new \app\admin\model\SupplierCategory();
$supplier_category_list = $supplier_category
->where(['del'=>0, 'is_show'=>1])
->field('id,name')
->select();
$category_list = [];
foreach ($supplier_category_list as $key => $supplier_category){
$supplier_list = Db::name('supplier')
->where(['cid'=>$supplier_category['id'],'del'=>0])
->field('id,name')
->select();
if(!$supplier_list){
continue;
}
$category_list[] = [
'id' => $supplier_category['id'],
'name' => $supplier_category['name'],
'supplier_list'=> $supplier_list,
];
}
return $category_list;
}
/**
* Notes:获取专家列表
* @param $page int 页码
* @param $size int 每页数量
* @param $cid int 分类id
* @return array
* @author: kiki
*/
public static function supplierList($page,$size,$cid){
$where[] = ['del','=',0];
//按商品分类搜索
if($cid){
$where[] = ['cid','=',$cid];
}
$count =Db::name('supplier')
->field('id,name,remark,avatar')
->where($where)
->count();
$list =Db::name('supplier')
->order('create_time desc')
->field('id,name,remark,avatar')
->where($where)
->page($page, $size)
->select();
$more = is_more($count, $page, $size); //是否有下一页
return [
'list' => $list,
'page' => $page,
'size' => $size,
'count' => $count,
'more' => $more
];
}
/**
* Notes:获取专家详情
* @param $cid int 专家id
* @return array
* @author: kiki
*/
public static function getsupplierDetail($id){
$where[] = ['del','=',0];
$where[] = ['id','=',$id];
$info =Db::name('supplier')
->order('create_time desc')
->field('id,name,remark,avatar,honor,position')
->where($where)
->find();
$goods_list=Db::name('goods g')
->where(['g.del'=>0,'g.status'=>1,'g.supplier_id'=>$info['id']])
->field('g.id as goods_id,g.name as goods_name,g.code,g.image,min_price as price,rongliang_name,sm.name as mud_name,s.name as supplier_name')
->join('screen_mud sm', 'g.mud_id = sm.id')
->join('supplier s', 'g.supplier_id = s.id')
->order('g.id desc,g.sort desc')
->select();
return [
'info' => $info,
'goods_list' => $goods_list,
];
}
/**
* Notes:pc端获取公共数据
* @param $user_id int 用户id
* @return array
* @author: kiki
*/
public static function commonData($user_id){
$nickname = '';
if($user_id){
$nickname = Db::name('user')->where(['id'=>$user_id])->value('nickname');
}
$help_category_list = DB::name('help_category')
->where('is_show', 1)
->where(['del' => 0])
->field('id,name')
->select();
$h_category_list = [];
foreach ($help_category_list as $key => $help_category){
$help_list = Db::name('help')
->where(['cid'=>$help_category['id'],'del'=>0])
->field('id,title')
->select();
$h_category_list[] = [
'id' => $help_category['id'],
'name' => $help_category['name'],
'help_list'=> $help_list,
];
}
return [
'logo' => UrlServer::getFileUrl(ConfigServer::get('website', 'pc_logo')),
'name' => ConfigServer::get('website', 'name',''),
'nickname' => $nickname,
'kfphone' => ConfigServer::get('service','phone',''),
'kf_qr_code' => UrlServer::getFileUrl(ConfigServer::get('service','image','')),
'oa_qr_code' => UrlServer::getFileUrl(ConfigServer::get('oa', 'qr_code', '')),
'h_category_list'=>$h_category_list,
];
}
/**
* Notes:惠藏藏品列表
* @author: kiki
*/
public static function cangpingoods(){
$ad_list = Db::name('ad a')
->join('ad_position ap', 'a.pid = ap.id')
->where(['pid' =>[24],'a.status' => 1,'a.del' => 0,'ap.status' => 1,'ap.del' => 0])
->order('a.id desc')
->field('a.*')
->select();
$ad = []; //广告
foreach ($ad_list as $ad){
$url = $ad['link'];
$is_tab = 0;
$params = [];
switch ($ad['link_type']) {
case 1:
$page = Ad::getLinkPage($ad['client'], $ad['link']);
$url = $page['path'];
$is_tab = $page['is_tab'] ?? 0;
break;
case 2:
$goods_path = Ad::getGoodsPath($ad['client']);
$url = $goods_path;
$params = [
'id' => $ad['link'],
];
break;
}
//广告
if(empty($tiemai_tup_ad) && 24 == $ad['pid']){
$tiemai_tup_ad = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
}
$where[] = ['g.del','=',0];
$where[] = ['g.status','=',1];
//藏品捡宝
$where1[] = ['is_jiantreasure','=',1];
//镇店藏品
$where2[] = ['is_zdtreasure','=',1];
$jiantreasure_list =Db::name('goods g')
->field('g.id as goods_id,g.name as goods_name,g.image,remark')
->where($where)
->where($where1)
->page(0,7)
->select();
foreach ($jiantreasure_list as $key => $v1){
$jiantreasure_list[$key]['image']=UrlServer::getFileUrl($v1['image']);
}
$zdtreasure_list =Db::name('goods g')
->field('g.id as goods_id,g.name as goods_name,g.image,remark')
->where($where)
->where($where2)
->page(0,7)
->select();
foreach ($zdtreasure_list as $key => $v1){
$zdtreasure_list[$key]['image']=UrlServer::getFileUrl($v1['image']);
}
return [
'ad' => $tiemai_tup_ad,//广告
'jiantreasure_list' => $jiantreasure_list,//藏品捡宝
'zdtreasure_list' => $zdtreasure_list,//镇店藏品
];
}
/**
* Notes:特卖商品列表
* @author: kiki
*/
public static function temaigoods(){
$ad_list = Db::name('ad a')
->join('ad_position ap', 'a.pid = ap.id')
->where(['pid' =>[16,21],'a.status' => 1,'a.del' => 0,'ap.status' => 1,'ap.del' => 0])
->order('a.id desc')
->field('a.*')
->select();
$tiemai_tup_ad = []; //特卖大图广告
$tiemai_bott_ad = []; //特卖小图广告
foreach ($ad_list as $ad){
$url = $ad['link'];
$is_tab = 0;
$params = [];
switch ($ad['link_type']) {
case 1:
$page = Ad::getLinkPage($ad['client'], $ad['link']);
$url = $page['path'];
$is_tab = $page['is_tab'] ?? 0;
break;
case 2:
$goods_path = Ad::getGoodsPath($ad['client']);
$url = $goods_path;
$params = [
'id' => $ad['link'],
];
break;
}
//特卖大图广告
if(empty($tiemai_tup_ad) && 21 == $ad['pid']){
$tiemai_tup_ad = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
//特卖小图广告
if(16 == $ad['pid']){
$tiemai_bott_ad[] = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
}
$where[] = ['g.del','=',0];
$where[] = ['g.status','=',1];
//新品上架
$where1[] = ['is_new','=',1];
//精品推荐
$where2[] = ['is_best','=',1];
//今日促销
$where3[] = ['is_like','=',1];
$xinpin_list =Db::name('goods g')
->field('g.id as goods_id,g.name as goods_name,g.code,g.image,min_price as price,rongliang_name,s.name as supplier_name')
->join('supplier s', 'g.supplier_id = s.id')
->where($where)
->where($where1)
->page(0,7)
->select();
foreach ($xinpin_list as $key => $v1){
$xinpin_list[$key]['image']=UrlServer::getFileUrl($v1['image']);
}
$jingpin_list =Db::name('goods g')
->field('g.id as goods_id,g.name as goods_name,g.image,min_price as price')
->where($where)
->where($where2)
->page(0,6)
->select();
foreach ($jingpin_list as $key => $v1){
$jingpin_list[$key]['image']=UrlServer::getFileUrl($v1['image']);
}
$cuxiao_list =Db::name('goods g')
->field('g.id as goods_id,g.name as goods_name,g.image,min_price as price')
->where($where)
->where($where3)
->page(0,6)
->select();
foreach ($cuxiao_list as $key => $v1){
$cuxiao_list[$key]['image']=UrlServer::getFileUrl($v1['image']);
}
return [
'da_ad' => $tiemai_tup_ad,//大图
'xiao_ad' => $tiemai_bott_ad,//4小图
'xinpin_list' => $xinpin_list,//新品
'jingpin_list' => $jingpin_list,//精品
'cuxiao_list' => $cuxiao_list//促销
];
}
/**
* Notes:获取商品列表
* @param $page int 页码
* @param $size int 每页数量
* @param $name string 商品名称
* @param $category_id int 分类id
* @param $type int 类型1-热销榜单2-新品推荐3-好物优选
* @param $sort_type string 筛选类型:sales_sum-销量筛选price-价格筛选
* @param $sort string 排序方式desc-降序asc-升序
* @return array
* @author: kiki
*/
public static function goodsList($page,$size,$name,$category_id,$type,$sort_type,$sort){
$where[] = ['g.del','=',0];
$where[] = ['g.status','=',1];
//按商品名称搜索
if($name){
$where[] = ['g.name','like','%'.$name.'%'];
}
//按商品分类搜索
if($category_id){
$where[] = ['first_category_id|second_category_id|third_category_id','=',$category_id];
}
//按类型筛选
if(1 != $type){
switch ($type){
case 2:
//新品上架
$where[] = ['is_new','=',1];
break;
case 3:
//精品推荐
$where[] = ['is_best','=',1];
break;
case 4:
//今日促销
$where[] = ['is_like','=',1];
break;
case 5:
//藏品捡宝
$where[] = ['is_jiantreasure','=',1];
break;
case 6:
//镇店藏品
$where[] = ['is_zdtreasure','=',1];
break;
}
}
//按排序条件显示
$order = [];
if($sort_type && $sort){
$order = [$sort_type=>$sort];
}
$goods = new Goods();
$count =Db::name('goods g')
->join('screen_mud sm', 'g.mud_id = sm.id')
->join('supplier s', 'g.supplier_id = s.id')
->where($where)
->count();
$list =Db::name('goods g')
->field('g.id as goods_id,g.name as goods_name,g.code,g.image,min_price as price,rongliang_name,sm.name as mud_name,s.name as supplier_name')
->join('screen_mud sm', 'g.mud_id = sm.id')
->join('supplier s', 'g.supplier_id = s.id')
->where($where)
->order($order)
->page($page, $size)
->select();
foreach ($list as $key => $v1){
$list[$key]['image']=UrlServer::getFileUrl($v1['image']);
}
$more = is_more($count, $page, $size); //是否有下一页
return [
'list' => $list,
'page' => $page,
'size' => $size,
'count' => $count,
'more' => $more
];
}
/**
* Notes:修改用户信息
* @param $post array 用户信息
* @return int|string
* @throws \think\Exception
* @throws \think\exception\PDOException
* @author: kiki
*/
public static function changeUserInfo($post){
$data = [
'nickname' => $post['nickname'],
'sex' => $post['sex'],
'create_time' => time(),
];
return Db::name('user')->where(['id'=>$post['user_id']])->update($data);
}
}