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