148 lines
5.2 KiB
PHP
148 lines
5.2 KiB
PHP
<?php
|
|
/**
|
|
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.cdcloudshop.com
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\blindbox\api\controller;
|
|
|
|
use app\api\controller\BaseApi;
|
|
use addon\blindbox\model\BlindboxCategory as BlindboxCategoryModel;
|
|
use addon\blindbox\model\Blindbox as BlindboxModel;
|
|
use addon\blindbox\model\BlindboxGoods as BlindboxGoodsModel;
|
|
use app\model\member\Member;
|
|
use app\model\goods\Goods as GoodsModel;
|
|
|
|
/**
|
|
* 盲盒商品
|
|
* Class Goods
|
|
* @package addon\blindbox\api\controller
|
|
*/
|
|
class Goods extends BaseApi
|
|
{
|
|
/**
|
|
*获取展示的盲盒分类
|
|
*/
|
|
public function categoryList()
|
|
{
|
|
$condition = [
|
|
['site_id', '=', $this->site_id],
|
|
['status', '=', 1],
|
|
];
|
|
$category_model = new BlindboxCategoryModel();
|
|
$data = $category_model->getBlindboxCategoryList($condition);
|
|
return $this->response($data);
|
|
}
|
|
|
|
/**
|
|
* 获取盲盒活动列表
|
|
*/
|
|
public function page()
|
|
{
|
|
$page = $this->params['page'] ?? 1;
|
|
$page_size = $this->params['page_size'] ?? PAGE_LIST_ROWS;
|
|
$category_id = $this->params['category_id'] ?? 0;
|
|
|
|
$condition = [
|
|
['site_id', '=', $this->site_id],
|
|
['blindbox_status', '=', 1],
|
|
];
|
|
|
|
if ($category_id) {
|
|
$condition[] = ['category_id', '=', $category_id];
|
|
}
|
|
$blindbox_model = new BlindboxModel();
|
|
$data = $blindbox_model->getBlindboxPageList($condition, $page, $page_size,'sort asc,create_time desc');
|
|
|
|
return $this->response($data);
|
|
}
|
|
|
|
/**
|
|
* 盲盒(系列)详情
|
|
*/
|
|
public function info()
|
|
{
|
|
$token = $this->checkToken();
|
|
$blindbox_id = $this->params['blindbox_id'] ?? 0;
|
|
if (empty($blindbox_id)) return $this->response($this->error('', '缺少参数'));
|
|
$condition = [
|
|
['site_id', '=', $this->site_id],
|
|
['blindbox_status', '=', 1],
|
|
['blindbox_id', '=', $blindbox_id]
|
|
];
|
|
$blindbox_model = new BlindboxModel();
|
|
$data = $blindbox_model->getBlindboxInfo($condition);
|
|
if ($data['data']) {
|
|
$goods_model = new BlindboxGoodsModel();
|
|
$goods_list = $goods_model->getBlindboxGoodsList([['a.site_id', '=', $this->site_id], ['a.blindbox_id', '=', $blindbox_id]])['data'] ?? [];
|
|
$checked_goods = [];
|
|
#是否新人
|
|
$is_new = 0;
|
|
if ($goods_list) {
|
|
foreach ($goods_list as $k => $v) {
|
|
if (!isset($checked_goods[$v['goods_id']])) {
|
|
$checked_goods[$v['goods_id']] = $v;
|
|
}
|
|
}
|
|
$goods_ids = array_column($checked_goods,'goods_id');
|
|
$goods_model = new GoodsModel();
|
|
$goods_data = $goods_model->getGoodsList([['goods_id','in',$goods_ids],['site_id','=',$this->site_id]],'goods_id,goods_name,goods_image,price,market_price,sku_id')['data']??[];
|
|
$member_arr = array_column($goods_list,'member_id');
|
|
|
|
if($this->member_id){
|
|
if(in_array($this->member_id,$member_arr)){
|
|
#不是新人
|
|
$is_new = 1;
|
|
}
|
|
$member_model = new Member();
|
|
$member_info_result = $member_model->getMemberDetail($this->member_id, $this->site_id)['data'] ?? [];
|
|
$data['data']['member_info'] = $member_info_result;
|
|
}
|
|
}
|
|
|
|
#盒子内的商品
|
|
$data['data']['goods_list'] = $goods_data;
|
|
$data['data']['is_new'] = $is_new;
|
|
|
|
}
|
|
return $this->response($data);
|
|
}
|
|
|
|
/**
|
|
* 盲盒下的盒子
|
|
* @return false|string
|
|
*/
|
|
public function boxPage()
|
|
{
|
|
$page = $this->params['page'] ?? 1;
|
|
$page_size = $this->params['page_size'] ?? 6;
|
|
$blindbox_id = $this->params['blindbox_id'] ?? 0;
|
|
if (empty($blindbox_id)) return $this->response($this->error('', '缺少参数'));
|
|
|
|
#获取盲盒下所有盒子
|
|
$condition = [
|
|
['site_id', '=', $this->site_id],
|
|
['blindbox_status', '=', 1],
|
|
['blindbox_id', '=', $blindbox_id]
|
|
];
|
|
$blindbox_model = new BlindboxModel();
|
|
$data = $blindbox_model->getBlindboxInfo($condition)['data'] ?? [];
|
|
if (empty($data)) return $this->response($this->error('', '暂无数据'));
|
|
|
|
$box_condition = [
|
|
['site_id', '=', $this->site_id],
|
|
['blindbox_id', '=', $blindbox_id],
|
|
];
|
|
if ($data['is_emptybox'] == 2) {
|
|
$box_condition[] = ['a.status', '=', 0];
|
|
}
|
|
$goods_model = new BlindboxGoodsModel();
|
|
$box_list = $goods_model->getBlindboxGoodsPageList($box_condition,$page,$page_size,'sort desc','id,blindbox_id,status,create_time');
|
|
$box_list['data']['page'] = $page;
|
|
return $this->response($box_list);
|
|
}
|
|
} |