dggzichahu/application/api/logic/PcLogic.php

288 lines
9.6 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:pc端首页接口
* @return array
* @author:kiki
*/
public static function pcLists(){
$goods = new Goods();
//热销榜单
$host_list = $goods
->where(['del'=>0,'status'=>1])
->field('id,name,image,min_price as price,market_price,sales_sum+virtual_sales_sum as sales_sum')
->order('sales_sum desc,click_count desc')
->limit(10)
->select();
//新品推荐
$new_list = $goods
->where(['del'=>0,'status'=>1,'is_new'=>1])
->field('id,name,image,min_price as price,market_price,sales_sum+virtual_sales_sum as sales_sum')
->order('id desc,sort desc')
->limit(10)
->select();
//好物优选
$best_list = $goods
->where(['del'=>0,'status'=>1,'is_best'=>1])
->field('id,name,image,min_price as price,market_price,sales_sum+virtual_sales_sum as sales_sum')
->order('id desc,sort desc')
->limit(10)
->select();
$ad_list = Db::name('ad a')
->join('ad_position ap', 'a.pid = ap.id')
->where(['pid' =>[18,19,20,21],'a.status' => 1,'a.del' => 0,'ap.status' => 1,'ap.del' => 0])
->order('a.id desc')
->field('a.*')
->select();
$host_ad = []; //热销榜单广告
$new_ad = []; //新品推荐广告
$best_ad = []; //好物优选广告
$category_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($host_ad) && 18 == $ad['pid']){
$host_ad = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
//首页新品推荐广告
if(empty($new_ad) && 19 == $ad['pid']){
$new_ad = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
//首页好物优选广告
if(empty($best_ad) && 20 == $ad['pid']){
$best_ad = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
//首页分类广告
if(21 == $ad['pid']){
$category_ad[$ad['category_id']] = [
'image' => UrlServer::getFileUrl($ad['image']),
'link' => $url,
'link_type' => $ad['link_type'],
'params' => $params,
'is_tab' => $is_tab,
];
}
}
//分类信息
$goods_category = new \app\admin\model\GoodsCategory();
$goods_category_list = $goods_category
->where(['del'=>0, 'level'=>1,'is_recommend'=>1])
->with(['sons'])
->field('id,name')
->select();
$category_list = [];
foreach ($goods_category_list as $key => $goods_category){
$sons = [];
$goods_list = $goods
->where(['first_category_id'=>$goods_category['id'],'del'=>0,'status'=>1])
->field('id,name,image,min_price as price,market_price,sales_sum+virtual_sales_sum as sales_sum')
->limit(8)
->select();
foreach ($goods_category['sons'] as $son){
$sons[] = [
'id' => $son['id'],
'name' => $son['name'],
];
}
$ad = $category_ad[$goods_category['id']] ?? [];
$category_list[] = [
'id' => $goods_category['id'],
'name' => $goods_category['name'],
'ad' => $ad,
'sons' => $sons,
'goods_list'=> $goods_list,
];
}
$list = [
'host_ad' => $host_ad,
'host_list' => $host_list,
'new_ad' => $new_ad,
'new_list' => $new_list,
'best_ad' => $best_ad,
'best_list' => $best_list,
'category_list' => $category_list,
];
return $list;
}
/**
* Notes:pc端获取公共数据
* @param $user_id int 用户id
* @return array
* @author: kiki
*/
public static function commonData($user_id){
$article = Db::name('article')
->where(['del'=>0,'is_notice'=>1,'is_show'=>1])
->order('create_time desc')
->field('id,title')
->limit(3)
->select();
$cart_num = 0;
$coupon_num = 0;
$nickname = '';
if($user_id){
$cart_num = Db::name('cart')->where(['user_id'=>$user_id])->sum('goods_num');
$coupon_num = Db::name('coupon_list')->where(['user_id'=>$user_id,'del'=>0,'status'=>0])->count();
$nickname = Db::name('user')->where(['id'=>$user_id])->value('nickname');
}
return [
'article' => $article,
'logo' => UrlServer::getFileUrl(ConfigServer::get('website', 'pc_logo')),
'name' => ConfigServer::get('website', 'name',''),
'cart_num' => $cart_num,
'coupon_num' => $coupon_num,
'nickname' => $nickname,
'oa_qr_code' => UrlServer::getFileUrl(ConfigServer::get('oa', 'qr_code', '')),
'mnp_qr_code' => UrlServer::getFileUrl(ConfigServer::get('mnp', 'qr_code', '')),
];
}
/**
* 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[] = ['del','=',0];
$where[] = ['status','=',1];
//按商品名称搜索
if($name){
$where[] = ['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;
}
}
//按排序条件显示
$order = [];
if($sort_type && $sort){
$order = [$sort_type=>$sort];
}
$goods = new Goods();
$count = $goods
->where($where)
->count();
$list = $goods
->where($where)
->field('id,name,image,min_price as price,market_price,sales_sum+virtual_sales_sum as sales_sum')
->order($order)
->page($page, $size)
->select();
$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);
}
}