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; } }