| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- /**
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: https://www.niushop.com
- * =========================================================
- */
- namespace addon\blindbox\api\controller;
- use app\api\controller\BaseApi;
- use addon\blindbox\model\Blindbox as BlindboxModel;
- use addon\blindbox\model\BlindboxGoods as BlindboxGoodsModel;
- use addon\blindbox\model\BlindboxMemberGroup;
- /**
- * 盲盒
- * Class Blindbox
- * @package addon\blindbox\api\controller
- */
- class Blindbox extends BaseApi
- {
- /**
- * 我的盲盒活动
- */
- public function myBlindbox()
- {
- $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;
- $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);
- }
- }
|