📖 File Reader
<?php
namespace app\api\controller;
use app\api\common\Common_order;
use app\api\model\ModGoodsAct;
use app\BaseController;
use app\api\common\Common_user;
use think\facade\Db;
use think\facade\View;
class Goods extends Base
{
/**
* 采购商城
*/
public function index()
{
$act_id = input("param.act_id");
$where = 1;
if (!empty($act_id)){
$where .= " and act_id = $act_id";
}
//商品信息
$goods_list = db::name("goods")->where("state = 1 and is_sold = 1 and is_delete = 0 and ".$where)->order("sort desc,goods_id desc")->select();
$goods_list = json_decode($goods_list,true);
foreach ($goods_list as $k => $v){
$goods_list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
}
$data = [
'goods_list'=>$goods_list,
];
return $this->succeed_json("ok",$data);
}
/*商城分类*/
public function goods_act()
{
$parent_id = input("param.parent_id");
$where = 1;
if (!empty($parent_id)) {
$where .= " and parent_id = $parent_id";
$act_name = db::name("goods_act")->where("id = $parent_id")->value("name");
}else{
$act_name = '';
$where .= " and parent_id = 0";
}
$goods_act = db::name("goods_act")->where("is_show = 1 and $where")->order("sort desc")->field("id,name,name_english,icon")->select();
$data = [
'goods_act'=>$goods_act,
'act_name'=>$act_name,
];
return $this->succeed_json("ok",$data);
}
/*全部分类(多层)*/
public function goods_act_multilayer()
{
$act_id = input("param.act_id");
$act_id_arr = '';
if (empty($act_id)){
$cat = db::name("goods_act")->where("parent_id = 0 and is_show = 1")->order("sort desc")->field("id,name,name_english")->select()->toArray();
$act_id = '';
foreach ($cat as $k => $v){
$act_id .= $v['id'].',';
}
$act_id = substr($act_id,0,strlen($act_id)-1);
if (!empty($act_id)){
$act_id_arr = explode(',',$act_id);
}
}else{
$act_id_arr = explode(',',$act_id);
}
$list = [];
foreach ($act_id_arr as $k => $v){
//顶级分类信息
$act_info = db::name("goods_act")->where("id = $v and is_show = 1")->find();
//二级分类
$act_list = db::name("goods_act")->where("parent_id = $v and is_show = 1")->order("sort desc")->select()->toarray();
$data = [
'id'=>$act_info["id"],
'parent_id'=>$act_info["parent_id"],
'name'=>$act_info["name"],
'name_english'=>$act_info["name_english"],
'icon'=>$act_info["icon"],
'list'=>$act_list,
];
$list[$k] = $data;
}
$data = [
'list'=>$list,
];
return $this->succeed_json("ok",$data);
}
/*商品列表*/
public function goods_list()
{
$act_id = input("param.act_id");
$keyword = input("param.keyword");//搜索关键词
$type = input("param.type");//类型:1新品 2精品 3特惠 4火爆抢购
$where = 1;
if (!empty($act_id)){
$sublevel_act_id = ModGoodsAct::sublevel_act_id($act_id,1);
if (!empty($sublevel_act_id)){
$where .= " and act_id in ($sublevel_act_id)";
}
}
if (!empty($keyword)){
$where .= " and name like '%".$keyword."%'";
}
if (!empty($type)){
if ($type == 1){
$where.= " and is_new = 1";
}else if ($type == 2){
$where.= " and is_competitive = 1";
}else if ($type == 3){
$where.= " and is_discounts = 1";
}else if ($type == 4){
$where.= " and is_discounts = 1 and is_competitive = 1 and is_new = 1";
}
}
$goods = db::name("goods")->where("state = 1 and is_sold = 1 and is_delete = 0 and $where")->order("sort desc,add_time desc")->page($this->page,$this->limit)->select()->toArray();
foreach ($goods as $k => $v){
//获取图册
$goods_photo = db::name("goods_photo")->where("goods_id = $v[goods_id]")->field("goods_id,photo_img")->order("sort desc")->select()->toArray();
$goods[$k]["goods_photo"] = $goods_photo;
}
//获取总页数
$count = db::name("goods")->where("state = 1 and is_sold = 1 and is_delete = 0 and $where")->count();
$vue_pages = $this->vue_pages($count,$this->limit);
$data = [
'list'=>$goods,
'count'=>$count,
'pages'=>$vue_pages,
];
return $this->succeed_json("ok",$data);
}
/**
* 商品详情页
*/
public function goods_info()
{
$goods_id = input("param.goods_id");
if (empty($goods_id)){
return $this->error_json("请传入产品id");
}
//商品详情
$goods_info = db::name("goods")->where("goods_id = $goods_id")->find();
$goods_info["add_time"] = date("Y.m.d",$goods_info["add_time"]);
//商品规格
$goods_guige_list = db::name("goods_guige_value")->where("goods_id = $goods_id")->order("id asc")->select();
$goods_guige_list = json_decode($goods_guige_list,true);
foreach ($goods_guige_list as $k => $v){
$goods_guige_list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
}
$guige_info = [];//默认规格
if (!empty($goods_guige_list)){
$guige_info = $goods_guige_list[0];
}
//商品图册
$goods_photo = db::name("goods_photo")->where("goods_id = $goods_id")->field("id,photo_img")->order("sort desc")->select();
$goods_photo_img["0"]["photo_img"] = $goods_info["img"];
foreach($goods_photo as $k => $v){
$goods_photo_img[$k+1]["photo_img"] = $v["photo_img"];
}
//更改浏览量
$info["browse_sum"] = $goods_info["browse_sum"]+1;
db::name("goods")->where("goods_id = $goods_id")->data($info)->update();
$data = [
'goods_info'=>$goods_info,
'goods_photo'=>$goods_photo_img,
'guige_info'=>$guige_info,
'goods_guige_list'=>$goods_guige_list,
'goods_guige_count'=>count($goods_guige_list),
];
return $this->succeed_json("ok",$data);
}
/*创建足迹浏览记录*/
public function goods_footprint()
{
$goods_id = input("param.goods_id");
$info = [
'user_id'=>$this->user_id,
'goods_id'=>$goods_id,
'browse_sum'=>1,
'time'=>time(),
];
$goods_footprint = db::name("goods_footprint")->where("user_id = $this->user_id and goods_id = $goods_id")->field("id,browse_sum")->find();
if (empty($goods_footprint)){
db::name("goods_footprint")->insertGetId($info);
}else{
$info["browse_sum"] = $goods_footprint["browse_sum"] + 1;
db::name("goods_footprint")->where("id = $goods_footprint[id]")->data($info)->update();
}
return $this->succeed_json("创建成功");
}
/*我的足迹*/
public function user_footprint()
{
$list = db::name("goods_footprint")->alias("a")
->join("goods b","a.goods_id = b.goods_id","LEFT")
->field("a.*,b.name as goods_name,b.img as goods_img,b.describe,b.price")
->where("a.user_id = $this->user_id")
->order("a.time desc")
->page($this->page,$this->limit)
->select()
->toArray();
/*总页数*/
$count = db::name("goods_footprint")->alias("a")
->join("goods b","a.goods_id = b.goods_id","LEFT")
->where("a.user_id = $this->user_id")
->count();
$pages = $this->vue_pages($count,$this->limit);
$data = [
'list'=>$list,
'pages'=>$pages,
];
return $this->succeed_json("ok",$data);
}
/*购物车查询*/
public function shopping()
{
$list = db::name("shopping_cart")->alias("a")
->join("goods b","a.goods_id = b.goods_id","LEFT")
->join("goods_guige_value c","a.guige_id = c.id","LEFT")
->field("a.*,b.name as goods_name,b.img as goods_img,b.price as goods_price,b.stocks as goods_stocks,c.guige_name,c.price as guige_price,c.stocks as guige_stocks,c.img as guige_img")
->where("a.user_id = $this->user_id and b.is_sold = 1 and b.is_delete = 0 and b.state = 1")
->select()
->toArray();
$cart_list = [];
foreach ($list as $k => $v){
$goods_name = $v["goods_name"];
if (!empty($v["guige_name"])){
$goods_name .= '('.$v["guige_name"].')';
}
$price = $v["guige_id"]>0?$v["guige_price"]:$v["goods_price"];
$img = $v["guige_id"]>0?$v["guige_img"]:$v["goods_img"];
$stocks = $v["guige_id"]>0?$v["guige_stocks"]:$v["goods_stocks"];
$cart_data = [
'id'=>$v["id"],
'goods_id'=>$v["goods_id"],
'goods_name'=>$goods_name,
'guige_id'=>$v["guige_id"],
'guige_name'=>$v["guige_name"],
'price'=>$price,
'img'=>$img,
'goods_sum'=>$v["goods_sum"],
'stocks'=>$stocks,
'checked'=>'fales',
'add_time'=>date("Y-m-d H:i",$v["add_time"]),
];
$cart_list[$k] = $cart_data;
}
$data = [
'list'=>$cart_list,
'list_count'=>count($cart_list),
];
return $this->succeed_json("ok",$data);
}
/*购物车添加*/
public function shopping_upload()
{
$goods_id = input("param.goods_id");
$guige_id = input("param.guige_id");
$num = input("param.num");
$num_type = input("param.num_type");//1直接购买不在原购物车基础上新增数量
/*礼品专区产品处理*/
// $sublevel_act_id = ModGoodsAct::sublevel_act_id(33,1);
// $is_lipin = 0;
// if (!empty($sublevel_act_id)){
// $goods_list = db::name("goods")->where("act_id in ($sublevel_act_id) and is_sold = 1 and is_delete = 0 and state = 1")->field("goods_id,name")->order("goods_id desc")->select()->toArray();
// $goods_lipin_id = '';
// foreach ($goods_list as $v){
// if ($v["goods_id"] == $goods_id){
// $is_lipin = 1;//礼品专区
// }
// $goods_lipin_id .= $v["goods_id"].',';
// }
// $goods_lipin_id = substr($goods_lipin_id,0,strlen($goods_lipin_id)-1);
// if ($is_lipin == 1 && $goods_lipin_id != ''){
// //查询今日是否已领取过礼品
// $time_lc = strtotime(date("Y-m-d 00:00:00",time()));
// $order_lipin = db::name("order")->alias("a")
// ->join("order_goods b","a.order_id = b.order_id","LEFT")
// ->where("b.goods_id in ($goods_lipin_id) and a.pay_time >= $time_lc")
// ->count();
// if (!empty($order_lipin)){
// return $this->error_json("自选礼包已领取");
// }
// if ($num > 1){
// return $this->error_json("自选礼包只可领取1个");
// }
// }
// }
/*购物车信息处理*/
$where = 1;
if (!empty($guige_id)){
$where .= " and guige_id = $guige_id";
}
$cart_info = db::name("shopping_cart")->where("goods_id = $goods_id and user_id = $this->user_id and $where")->find();
$info = [
'user_id'=>$this->user_id,
'goods_id'=>$goods_id,
'guige_id'=>$guige_id,
'goods_sum'=>$num,
'add_time'=>time(),
];
if (empty($cart_info)){
$cart_id = db::name("shopping_cart")->insertGetId($info);
}else{
if ($num_type != 1){
$info["goods_sum"] = $cart_info["goods_sum"] + $num;
}
db::name("shopping_cart")->where("id = $cart_info[id]")->data($info)->update();
$cart_id = $cart_info["id"];
}
$data = [
'cart_id'=>$cart_id,
];
return $this->succeed_json("添加成功",$data);
}
/*购物车删除*/
public function shopping_del()
{
$id = input("param.id");
if (empty($id)){
return $this->error_json("请传入购物车id");
}
db::name("shopping_cart")->where("id in ($id)")->delete();
return $this->succeed_json("删除成功");
}
/*购物车数量修改*/
public function shopping_sum_upload()
{
$cart_id = input("param.id");
$stocks = input("param.stocks");//产品总库存
$variation_sum = input("param.variation_sum");//变动数量(直接修改数量)
$type = input("param.type");//类型:1减少 2增加
$cart_info = db::name("shopping_cart")->where("user_id = $this->user_id and id = $cart_id")->find();
if (empty($cart_info)){
return $this->error_json("购物车商品错误");
}
$info["goods_sum"] = 1;
if (!empty($variation_sum)){
$info["goods_sum"] = $variation_sum;
}else{
if ($type == 1){
$info["goods_sum"] = $cart_info["goods_sum"] - 1;
}else if($type == 2){
$info["goods_sum"] = $cart_info["goods_sum"] + 1;
}
}
if ($info["goods_sum"] <= 0){
return $this->error_json("数量不可低于1",405);
}else{
if ($info["goods_sum"] > $stocks){
return $this->error_json("库存不足",405);
}
}
db::name("shopping_cart")->where("id = $cart_id")->data($info)->update();
$data = [
'goods_sum'=>$info["goods_sum"],
];
return $this->succeed_json("操作成功",$data);
}
/*购物车多选计算查询*/
public function shopping_checked_inquire(Common_order $common_order)
{
$clsAll = input("param.clsAll");
if (!is_array($clsAll)){
if (!empty($clsAll)) {
$clsAll = explode(',', $clsAll);
}else{
$clsAll = [];
}
}
$clsAll_count = count($clsAll);
$order_price = '0';//价格
$clsAll_str = '';
if (!empty($clsAll)){
$clsAll_str = implode(",",$clsAll);
/*计算价格*/
$goods_list = db::name("shopping_cart")->alias("a")
->join("goods b","a.goods_id = b.goods_id","LEFT")
->join("goods_guige_value c","a.guige_id = c.id","LEFT")
->field("a.goods_sum,b.goods_id,b.name,b.act_id,b.describe,b.img,b.price,c.id as guige_id,c.guige_name,c.price as guige_price")
->where("a.id in ($clsAll_str) and a.user_id = $this->user_id")
->select()
->toArray();
/*订单价格查询*/
$order_price_data = $common_order->order_price($goods_list);
$order_price = $order_price_data["order_price"];
}
$data = [
'clsAll_str'=>$clsAll_str,
'clsAll_count'=>$clsAll_count,
'order_price'=>$order_price,
];
return $this->succeed_json('ok',$data);
}
}