checkToken(); if ($token[ 'code' ] < 0) return $this->response($token); $page = $this->params[ 'page' ] ?? 1; $page_size = $this->params[ 'page_size' ] ?? PAGE_LIST_ROWS; $status = $this->params[ 'status' ] ?? ''; $condition = [ [ 'site_id', '=', $this->site_id ] ]; if ($status != '') { $condition[] = [ 'blindbox_status', '=', $status ]; } $group_model = new BlindboxMemberGroup(); $blindbox_model = new BlindboxModel(); $data = $group_model->getBlindboxGroupList([ [ 'site_id', '=', $this->site_id ], [ 'member_id', '=', $this->member_id ] ], 'id,blindbox_id')[ 'data' ] ?? []; $blindbox_ids = []; $temp = []; if ($data) { foreach ($data as $k => $v) { $v[ 'num' ] = 1; if (!isset($temp[ $v[ 'blindbox_id' ] ])) { $temp[ $v[ 'blindbox_id' ] ] = $v; } else { $temp[ $v[ 'blindbox_id' ] ][ 'num' ] += $v[ 'num' ] ?? 0; } } $blindbox_ids = array_column($temp, 'blindbox_id'); } $condition[] = [ 'blindbox_id', 'in', $blindbox_ids ]; $list = $blindbox_model->getBlindboxPageList($condition, $page, $page_size); if ($list[ 'data' ][ 'list' ]) { $new_list = []; foreach ($list[ 'data' ][ 'list' ] as $key => $val) { $list[ 'data' ][ 'list' ][ $key ][ 'buy_num' ] = $temp[ $val[ 'blindbox_id' ] ][ 'num' ]; $new_list[ array_keys($blindbox_ids, $val[ 'blindbox_id' ])[ 0 ] ] = $list[ 'data' ][ 'list' ][ $key ]; } ksort($new_list); $new_list = array_values($new_list); // 重组数组 foreach ($new_list as $k => $v) { $list[ 'data' ][ 'list' ][ $k ] = $v; } } return $this->response($list); } /** * 奖品 */ public function box() { $token = $this->checkToken(); if ($token[ 'code' ] < 0) return $this->response($token); $page = $this->params[ 'page' ] ?? 1; $page_size = $this->params[ 'page_size' ] ?? PAGE_LIST_ROWS; $blindbox_id = $this->params[ 'blindbox_id' ] ?? '0'; $diff = $this->params[ 'diff' ] ?? 1; $condition = [ [ 'a.site_id', '=', $this->site_id ], [ 'a.blindbox_id', '=', $blindbox_id ], ]; if ($diff == 1) { $condition[] = [ 'a.member_id', '=', $this->member_id ]; } $alias = 'a'; $field = 'a.id,a.blindbox_id,a.blindbox_goods_id,a.create_time,gs.goods_class,gs.sku_name,gs.sku_image,m.username,m.nickname,m.headimg,bo.is_dispatch,bo.out_trade_no,o.order_id,gs.sku_id'; $join = [ [ 'blindbox_goods bg', 'a.blindbox_goods_id = bg.id', 'left' ], [ 'goods_sku gs', 'a.sku_id = gs.sku_id', 'left' ], [ 'member m', 'a.member_id = m.member_id', 'left' ], [ 'blindbox_order bo', 'a.order_id = bo.order_id', 'left' ], [ 'order o', 'a.blindbox_goods_id = o.promotion_id and o.promotion_type = "blindbox" ', 'left' ], ]; $group_model = new BlindboxMemberGroup(); $list = $group_model->getBlindboxGroupPageList($condition, $page, $page_size, $order = 'a.id desc', $field, $alias, $join); return $this->response($list); } /** * 我的盲盒系列详情 */ public function blindboxInfo() { $token = $this->checkToken(); if ($token[ 'code' ] < 0) return $this->response($token); $blindbox_id = $this->params[ 'blindbox_id' ] ?? 0; $condition = [ [ 'site_id', '=', $this->site_id ], [ 'blindbox_id', '=', $blindbox_id ] ]; $blindbox_model = new BlindboxModel(); $info = $blindbox_model->getBlindboxInfo($condition); if ($info[ 'data' ]) { $blindbox_goods_model = new BlindboxGoodsModel(); $num = $blindbox_goods_model->getBlindboxGoodsCount([ [ 'blindbox_id', '=', $blindbox_id ], [ 'member_id', '=', $this->member_id ], [ 'status', '=', 1 ] ])[ 'data' ] ?? 0; $info[ 'data' ][ 'buy_num' ] = $num; } return $this->response($info); } /** * 发货 sku信息 */ public function skuInfo() { $token = $this->checkToken(); if ($token[ 'code' ] < 0) return $this->response($token); $sku_id = $this->params[ 'sku_id' ] ?? 0; $blindbox_goods_model = new BlindboxGoodsModel(); $info = $blindbox_goods_model->getSkuInfo([ [ 'sku_id', '=', $sku_id ] ], 'sku_id,price,market_price,sku_name,sku_image'); return $this->response($info); } }