| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- <?php
- /**
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: https://www.niushop.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;
- }
- }
|