147 lines
5.4 KiB
PHP
147 lines
5.4 KiB
PHP
<?php
|
|
/**
|
|
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.cdcloudshop.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);
|
|
}
|
|
} |