301 lines
13 KiB
PHP
301 lines
13 KiB
PHP
<?php
|
|
/**
|
|
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.cdcloudshop.com
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\blindbox\shop\controller;
|
|
|
|
use addon\blindbox\model\BlindboxGoods as BlindboxGoodsModel;
|
|
use app\shop\controller\BaseShop;
|
|
use addon\blindbox\model\BlindboxCategory as BlindboxCategoryModel;
|
|
use addon\blindbox\model\Blindbox as BlindboxModel;
|
|
|
|
class Blindbox extends BaseShop
|
|
{
|
|
|
|
/**
|
|
* 盲盒列表
|
|
* @return mixed|string
|
|
*/
|
|
public function lists()
|
|
{
|
|
$blindbox_model = new BlindboxModel();
|
|
//获取续签信息
|
|
if (request()->isAjax()) {
|
|
$page = input('page', 1);
|
|
$page_size = input('page_size', PAGE_LIST_ROWS);
|
|
$name = input('blindbox_name', '');
|
|
$blindbox_status = input('blindbox_status', '');
|
|
$category_id = input('category_id', '');
|
|
$start_time = input('start_time', '');
|
|
$end_time = input('end_time', '');
|
|
|
|
$condition = [];
|
|
if ($blindbox_status !== "") {
|
|
$condition[] = [ 'a.blindbox_status', '=', $blindbox_status ];
|
|
}
|
|
if ($category_id) {
|
|
$condition[] = [ 'a.category_id', '=', $category_id ];
|
|
}
|
|
|
|
if (!empty($start_time) && empty($end_time)) {
|
|
$condition[] = [ "a.start_time", ">=", date_to_time($start_time) ];
|
|
} elseif (empty($start_time) && !empty($end_time)) {
|
|
$condition[] = [ "a.end_time", "<=", date_to_time($end_time) + 86399 ];
|
|
} elseif (!empty($start_time) && !empty($end_time)) {
|
|
$condition[] = [ "a.start_time", ">=", date_to_time($start_time) ];
|
|
$condition[] = [ "a.end_time", "<=", date_to_time($end_time) + 86399 ];
|
|
}
|
|
|
|
$condition[] = [ 'a.site_id', '=', $this->site_id ];
|
|
$condition[] = [ 'a.blindbox_name', 'like', '%' . $name . '%' ];
|
|
|
|
$field = 'a.*,bc.category_name';
|
|
$alias = 'a';
|
|
$join = [
|
|
[ 'blindbox_category bc', 'bc.category_id = a.category_id', 'left' ]
|
|
];
|
|
|
|
//排序
|
|
$order = input('order', 'create_time');
|
|
$sort = input('sort', 'desc');
|
|
if (!empty($sort)) {
|
|
$order_by = 'a.' . $order . ' ' . $sort;
|
|
} else {
|
|
$order_by = 'a.create_time desc';
|
|
}
|
|
$data = $blindbox_model->getBlindboxPageList($condition, intval($page), $page_size, $order_by, $field, $alias, $join);
|
|
return $data;
|
|
} else {
|
|
$this->forthMenu();
|
|
$blindbox_status = $blindbox_model->getBlindboxStatus();
|
|
$this->assign('blindbox_status', $blindbox_status[ 'data' ]);
|
|
|
|
$category_model = new BlindboxCategoryModel();
|
|
$category_data = $category_model->getBlindboxCategoryList([ [ 'site_id', '=', $this->site_id ], [ 'status', '=', 1 ] ], 'category_id,category_name')[ 'data' ] ?? [];
|
|
if ($category_data) {
|
|
$category_data = array_column($category_data, 'category_name', 'category_id');
|
|
}
|
|
$this->assign('category_data', $category_data);
|
|
return $this->fetch("blindbox/lists");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 修改排序
|
|
*/
|
|
public function blindboxSort()
|
|
{
|
|
$sort = input('sort', 0);
|
|
$blindbox_id = input('blindbox_id', 0);
|
|
$member_label_model = new BlindboxModel();
|
|
return $member_label_model->blindboxSort($sort, $blindbox_id);
|
|
}
|
|
|
|
/**
|
|
* 添加
|
|
* @return array|mixed
|
|
*/
|
|
public function add()
|
|
{
|
|
//获取续签信息
|
|
if (request()->isAjax()) {
|
|
$goods = input('goods', '');
|
|
$goods_ids = array_column($goods, 'sku_id');
|
|
$goods_count = array_column($goods, 'num');
|
|
$blindbox_count = array_sum($goods_count);
|
|
$data = [
|
|
'blindbox_name' => input('blindbox_name', ''), #盲盒名称
|
|
'blindbox_images' => input('blindbox_images', ''),#盲盒封面
|
|
'blindbox_count' => $blindbox_count,#放置总量
|
|
'blindbox_inventory' => $blindbox_count,#盲盒库存
|
|
'start_time' => strtotime(input('start_time', 0)),#活动开启时间
|
|
'end_time' => strtotime(input('end_time', 0)),#活动结束时间
|
|
'category_id' => input('category_id', 0),#盲盒分类
|
|
'early_inventory' => input('early_inventory', 0),#库存预警
|
|
'sort' => input('sort', 0),#排序
|
|
'price' => input('price', ''),#拆盒价
|
|
'new_price' => ( input('new_price', 0) > 0 ) ? input('new_price', '') : input('price', ''),#新人拆盒价
|
|
'is_emptybox' => input('is_emptybox', 1),#空盒是否显示1显示 2不显示
|
|
'is_balance' => input('is_balance', 0),#是否用余额支付
|
|
'remark' => input('remark', ''),#说明
|
|
'goods_ids' => implode(',', $goods_ids),#盲盒内所有的商品规格Id
|
|
'goods' => $goods,
|
|
'site_id' => $this->site_id,
|
|
'create_time' => time(),
|
|
];
|
|
|
|
$blindbox_model = new BlindboxModel();
|
|
$res = $blindbox_model->addBlindbox($data);
|
|
return $res;
|
|
} else {
|
|
$category_model = new BlindboxCategoryModel();
|
|
$category_data = $category_model->getBlindboxCategoryList([ [ 'site_id', '=', $this->site_id ], [ 'status', '=', 1 ] ], 'category_id,category_name')[ 'data' ] ?? [];
|
|
if ($category_data) {
|
|
$category_data = array_column($category_data, 'category_name', 'category_id');
|
|
}
|
|
$this->assign('category_data', $category_data);
|
|
return $this->fetch("blindbox/add");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 编辑
|
|
* @return array|mixed
|
|
*/
|
|
public function edit()
|
|
{
|
|
$blindbox_id = input('blindbox_id', 0);
|
|
$blindbox_model = new BlindboxModel();
|
|
|
|
if (request()->isAjax()) {
|
|
$input = input();
|
|
$data = [];
|
|
$data[ 'site_id' ] = $this->site_id;
|
|
if (isset($input[ 'blindbox_id' ])) $data[ 'blindbox_id' ] = $input[ 'blindbox_id' ];
|
|
if (isset($input[ 'price' ])) $data[ 'price' ] = $input[ 'price' ];
|
|
if (isset($input[ 'blindbox_name' ])) $data[ 'blindbox_name' ] = $input[ 'blindbox_name' ];
|
|
if (isset($input[ 'blindbox_images' ])) $data[ 'blindbox_images' ] = $input[ 'blindbox_images' ];
|
|
if (isset($input[ 'start_time' ])) $data[ 'start_time' ] = $input[ 'start_time' ] ? strtotime($input[ 'start_time' ]) : 0;
|
|
if (isset($input[ 'end_time' ])) $data[ 'end_time' ] = $input[ 'end_time' ] ? strtotime($input[ 'end_time' ]) : 0;
|
|
if (isset($input[ 'category_id' ])) $data[ 'category_id' ] = $input[ 'category_id' ];
|
|
if (isset($input[ 'sort' ])) $data[ 'sort' ] = $input[ 'sort' ];
|
|
if (isset($input[ 'early_inventory' ])) $data[ 'early_inventory' ] = $input[ 'early_inventory' ];
|
|
if (isset($input[ 'price' ])) $data[ 'price' ] = $input[ 'price' ];
|
|
if (isset($input[ 'new_price' ])) $data[ 'new_price' ] = ( $input[ 'new_price' ] > 0 ) ? $input[ 'new_price' ] : $input[ 'price' ];
|
|
if (isset($input[ 'is_emptybox' ])) $data[ 'is_emptybox' ] = $input[ 'is_emptybox' ];
|
|
if (isset($input[ 'is_balance' ])) $data[ 'is_balance' ] = $input[ 'is_balance' ];
|
|
if (isset($input[ 'remark' ])) $data[ 'remark' ] = $input[ 'remark' ];
|
|
if (isset($input[ 'goods' ])) {
|
|
$goods = input('goods', '');
|
|
$goods_ids = array_column($goods, 'sku_id');
|
|
$goods_count = array_column($goods, 'num');
|
|
$blindbox_count = array_sum($goods_count);
|
|
$data[ 'blindbox_count' ] = $blindbox_count;#放置总量
|
|
$data[ 'blindbox_inventory' ] = $blindbox_count;#盲盒库存
|
|
$data[ 'goods_ids' ] = implode(',', $goods_ids);#盲盒内所有的商品规格Id
|
|
$data[ 'goods' ] = $goods;
|
|
}
|
|
|
|
$res = $blindbox_model->editBlindbox($data);
|
|
return $res;
|
|
} else {
|
|
$condition = [
|
|
[ 'blindbox_id', '=', $blindbox_id ],
|
|
];
|
|
$field = 'a.*,bc.category_name';
|
|
$alias = 'a';
|
|
$join = [
|
|
[ 'blindbox_category bc', 'bc.category_id = a.category_id', 'left' ]
|
|
];
|
|
$blindbox_info = $blindbox_model->getBlindboxInfo($condition, $field, $alias, $join)[ 'data' ] ?? [];
|
|
$goods_model = new BlindboxGoodsModel();
|
|
$goods_list = $goods_model->getBlindboxGoodsList([ [ 'a.site_id', '=', $this->site_id ], [ 'a.blindbox_id', '=', $blindbox_id ] ])[ 'data' ] ?? [];
|
|
|
|
$checked_goods = [];
|
|
if ($goods_list) {
|
|
foreach ($goods_list as $k => $v) {
|
|
$v[ 'num' ] = 1;
|
|
unset($v[ 'id' ]);
|
|
if (!isset($checked_goods[ $v[ 'sku_id' ] ])) {
|
|
$checked_goods[ $v[ 'sku_id' ] ] = $v;
|
|
} else {
|
|
$checked_goods[ $v[ 'sku_id' ] ][ 'num' ] += $v[ 'num' ] ?? 0;
|
|
}
|
|
}
|
|
}
|
|
$blindbox_info[ 'goods_list' ] = $checked_goods;
|
|
$blindbox_info[ 'goods_list_count' ] = count($checked_goods);
|
|
$this->assign('blindbox_info', $blindbox_info);
|
|
$category_model = new BlindboxCategoryModel();
|
|
$category_data = $category_model->getBlindboxCategoryList([ [ 'site_id', '=', $this->site_id ], [ 'status', '=', 1 ] ], 'category_id,category_name')[ 'data' ] ?? [];
|
|
if ($category_data) {
|
|
$category_data = array_column($category_data, 'category_name', 'category_id');
|
|
}
|
|
$this->assign('category_data', $category_data);
|
|
return $this->fetch("blindbox/edit");
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除盲盒
|
|
* @return array
|
|
*/
|
|
public function del()
|
|
{
|
|
if (request()->isAjax()) {
|
|
$blindbox_id = input('blindbox_id', 0);
|
|
$data = [
|
|
'blindbox_id' => $blindbox_id,
|
|
'site_id' => $this->site_id,
|
|
];
|
|
$blindbox_model = new BlindboxModel();
|
|
return $blindbox_model->deleteBlindbox($data);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 关闭盲盒
|
|
* @return mixed
|
|
*/
|
|
public function close()
|
|
{
|
|
if (request()->isAjax()) {
|
|
$blindbox_id = input('blindbox_id', 0);
|
|
$data = [
|
|
'blindbox_id' => $blindbox_id,
|
|
'site_id' => $this->site_id,
|
|
];
|
|
$blindbox_model = new BlindboxModel();
|
|
return $blindbox_model->closeBlindbox($data);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 盲盒详情
|
|
* @return array|mixed
|
|
*/
|
|
public function detail()
|
|
{
|
|
$blindbox_id = input('blindbox_id', 0);
|
|
|
|
$blindbox_model = new BlindboxModel();
|
|
$condition = [
|
|
[ 'blindbox_id', '=', $blindbox_id ],
|
|
];
|
|
$field = 'a.*,bc.category_name';
|
|
$alias = 'a';
|
|
$join = [
|
|
[ 'blindbox_category bc', 'bc.category_id = a.category_id', 'left' ]
|
|
];
|
|
$blindbox_info = $blindbox_model->getBlindboxInfo($condition, $field, $alias, $join)[ 'data' ] ?? [];
|
|
if (empty($blindbox_info)) {
|
|
$this->error('未获取到盲盒信息', addon_url('blindbox/shop/blindbox/lists'));
|
|
}
|
|
$category_model = new BlindboxCategoryModel();
|
|
$category_data = $category_model->getBlindboxCategoryList([ [ 'site_id', '=', $this->site_id ], [ 'status', '=', 1 ] ], 'category_id,category_name')[ 'data' ] ?? [];
|
|
if ($category_data) {
|
|
$category_data = array_column($category_data, 'category_name', 'category_id');
|
|
}
|
|
$this->assign('category_data', $category_data);
|
|
$this->assign('blindbox_info', $blindbox_info);
|
|
return $this->fetch("blindbox/detail");
|
|
}
|
|
|
|
/**
|
|
* 活动推广
|
|
*/
|
|
public function spreadBlindbox()
|
|
{
|
|
$blindbox_id = input('blindbox_id', 0);
|
|
$blindbox_model = new BlindboxModel();
|
|
$res = $blindbox_model->urlQrcode('/pages_promotion/blindbox/index', [ 'blindbox_id' => $blindbox_id ], 'blindbox', $this->site_id);
|
|
return $res;
|
|
}
|
|
} |