154 lines
5.4 KiB
PHP
154 lines
5.4 KiB
PHP
|
<?php
|
||
|
|
||
|
|
||
|
namespace app\admin\logic\team;
|
||
|
|
||
|
|
||
|
use app\common\basics\Logic;
|
||
|
use app\common\enum\OrderEnum;
|
||
|
use app\common\enum\TeamEnum;
|
||
|
use app\common\model\order\Order;
|
||
|
use app\common\model\team\TeamFound;
|
||
|
use app\common\model\team\TeamJoin;
|
||
|
use app\common\server\FileServer;
|
||
|
use app\common\server\UrlServer;
|
||
|
use Exception;
|
||
|
|
||
|
class FoundLogic extends Logic
|
||
|
{
|
||
|
/**
|
||
|
* @Notes: 开团列表
|
||
|
* @Author: 张无忌
|
||
|
* @param $get
|
||
|
* @return array|bool
|
||
|
*/
|
||
|
public static function lists($get)
|
||
|
{
|
||
|
try {
|
||
|
$where = [];
|
||
|
if (isset($get['type']) and is_numeric($get['type']) and $get['type'] != 100) {
|
||
|
$where[] = ['status', '=', (int)$get['type']];
|
||
|
}
|
||
|
|
||
|
if (!empty($get['team_sn']) and $get['team_sn']) {
|
||
|
$where[] = ['team_sn', 'like', '%'.$get['team_sn'].'%'];
|
||
|
}
|
||
|
|
||
|
if (!empty($get['goods']) and $get['goods']) {
|
||
|
$where[] = ['goods_snap->name', 'like', '%'.$get['goods'].'%'];
|
||
|
}
|
||
|
|
||
|
if (!empty($get['datetime']) and $get['datetime']) {
|
||
|
list($start, $end) = explode(' - ', $get['datetime']);
|
||
|
$where[] = ['kaituan_time', '>=', strtotime($start.' 00:00:00')];
|
||
|
$where[] = ['kaituan_time', '<=', strtotime($end.' 23:59:59')];
|
||
|
}
|
||
|
|
||
|
$model = new TeamFound();
|
||
|
$lists = $model->alias('TF')->field(['TF.*,U.nickname,U.sn,U.avatar'])
|
||
|
->join('user U', 'U.id = TF.user_id')
|
||
|
->order('id desc')
|
||
|
->where($where)
|
||
|
->paginate([
|
||
|
'page' => $get['page'] ?? 1,
|
||
|
'list_rows' => $get['limit'] ?? 20,
|
||
|
'var_page' => 'page'
|
||
|
])->toArray();
|
||
|
|
||
|
foreach ($lists['data'] as &$item) {
|
||
|
$item['peopleJoin'] = $item['people'] . '/' . $item['join'];
|
||
|
$item['kaituan_time'] = date('Y-m-d H:i:s', $item['kaituan_time']);
|
||
|
$item['invalid_time'] = date('Y-m-d H:i:s', $item['invalid_time']);
|
||
|
$item['goods_snap'] = json_decode($item['goods_snap'], true);
|
||
|
$item['status_text'] = TeamEnum::getStatusDesc($item['status']);
|
||
|
$item['avatar'] = UrlServer::getFileUrl($item['avatar']);
|
||
|
}
|
||
|
|
||
|
return ['count'=>$lists['total'], 'lists'=>$lists['data']];
|
||
|
} catch (Exception $e) {
|
||
|
static::$error = $e->getMessage();
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @Notes: 数据统计
|
||
|
* @Author: 张无忌
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public static function statistics()
|
||
|
{
|
||
|
$model = new TeamFound();
|
||
|
$detail['total'] = $model->count();
|
||
|
$detail['stayStatus'] = $model->where(['status'=>0])->count();
|
||
|
$detail['successStatus'] = $model->where(['status'=>1])->count();
|
||
|
$detail['failStatus'] = $model->where(['status'=>2])->count();
|
||
|
return $detail;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @Notes: 拼团详细
|
||
|
* @Author: 张无忌
|
||
|
* @param $id
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function detail($id)
|
||
|
{
|
||
|
$teamFound = (new TeamFound())->alias('TF')
|
||
|
->field(['TF.*,U.sn,U.nickname,U.mobile'])
|
||
|
->join('user U', 'U.id = TF.user_id')
|
||
|
->where('TF.id', '=', intval($id))
|
||
|
->findOrEmpty()->toArray();
|
||
|
$teamFound['kaituan_time'] = date('Y-m-d H:i:s', $teamFound['kaituan_time']);
|
||
|
$teamFound['invalid_time'] = date('Y-m-d H:i:s', $teamFound['invalid_time']);
|
||
|
$teamFound['team_end_time'] = date('Y-m-d H:i:s', $teamFound['team_end_time']);
|
||
|
$teamFound['status_text'] = TeamEnum::getStatusDesc($teamFound['status']);
|
||
|
|
||
|
return ['teamFound'=>$teamFound];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @Notes: 参团列表
|
||
|
* @Author: 张无忌
|
||
|
* @param $get
|
||
|
* @return array|bool
|
||
|
*/
|
||
|
public static function join($get)
|
||
|
{
|
||
|
try {
|
||
|
$where[] = ['TJ.team_id', '=', $get['team_id']];
|
||
|
|
||
|
$model = new TeamJoin();
|
||
|
$lists = $model->alias('TJ')->field(['TJ.*,U.sn,U.nickname,U.avatar'])
|
||
|
->join('user U', 'U.id = TJ.user_id')
|
||
|
->where($where)
|
||
|
->paginate([
|
||
|
'page' => $get['page'] ?? 1,
|
||
|
'list_rows' => $get['limit'] ?? 20,
|
||
|
'var_page' => 'page'
|
||
|
])->toArray();
|
||
|
|
||
|
$orderModel = new Order();
|
||
|
foreach ($lists['data'] as &$item) {
|
||
|
$item['identity'] = $item['identity'] == 1 ? '团长' : '团员';
|
||
|
|
||
|
$item['order'] = $orderModel->field([
|
||
|
'id,order_sn,order_type,order_status,
|
||
|
refund_status,pay_status,order_amount,create_time'
|
||
|
])
|
||
|
->with(['orderGoods'])
|
||
|
->findOrEmpty($item['order_id'])->toArray();
|
||
|
|
||
|
$item['order']['order_status'] = OrderEnum::getOrderStatus($item['order']['order_status']);
|
||
|
$item['order']['pay_status'] = OrderEnum::getPayStatus($item['order']['pay_status']);
|
||
|
$item['order']['refund_status'] = OrderEnum::getRefundStatus($item['order']['refund_status']);
|
||
|
$item['avatar'] = UrlServer::getFileUrl($item['avatar']);
|
||
|
}
|
||
|
|
||
|
return ['count'=>$lists['total'], 'lists'=>$lists['data']];
|
||
|
} catch (Exception $e) {
|
||
|
static::$error = $e->getMessage();
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|