// +----------------------------------------------------------------------
namespace app\admin\model\ump;
use traits\ModelTrait;
use basic\ModelBasic;
use think\Db;
use app\admin\model\user\User;
use service\PHPExcelService;
class EventSignUp extends ModelBasic
{
use ModelTrait;
public static function getUserSignUpAll($where){
$model = new self;
$model = $model->where('activity_id',$where['id']);
if($where['real_name']!='') $model = $model->where('order_id','like',"%$where[real_name]%");
$model = self::statusByWhere($where['status'],$model);
$model = $model->where('is_del',0);
$model = $model->order('add_time DESC');
if (isset($where['excel']) && $where['excel'] == 1) {
$data = ($data = $model->select()) && count($data) ? $data->toArray() : [];
} else {
$data = $model->page((int)$where['page'],(int)$where['limit'])->select();
$data = count($data) ? $data->toArray() : [];
}
foreach ($data as &$v){
$v['addTime']=date('Y-m-d H:i:s',$v['add_time']);
$v['is_fill']=EventRegistration::where('id',$v['activity_id'])->value('is_fill');
if($v['pay_type']=='weixin'){
$v['pay_type']='微信支付';
}elseif ($v['pay_type']=='zhifubao'){
$v['pay_type']='支付宝支付';
}elseif ($v['pay_type']=='yue'){
$v['pay_type']='余额支付';
}else{
$v['pay_type']='其他支付';
}
if($v['status']){
$v['write_off']='已核销';
}else{
$v['write_off']='未核销';
}
if($v['user_info'] && $v['is_fill']){
$user_info=json_decode($v['user_info']);
if($user_info->sex==1){
$sex='男';
}elseif($user_info->sex==2){
$sex='女';
}else{
$sex='保密';
}
$v['userInfo']=<<姓名:$user_info->name
电话:$user_info->phone
性别:$sex
年龄:$user_info->age
公司:$user_info->company
备注:$user_info->remarks
HTML;
}else{
$v['userInfo']='无';
}
}
if (isset($where['excel']) && $where['excel'] == 1) {
self::SaveExcel($data);
}
$count = self::where('activity_id',$where['id'])->where('is_del',0)->count();
return compact('data','count');
}
public static function statusByWhere($status,$model = null,$alert='')
{
if($model == null) $model = new self;
if('' === $status)
return $model->where($alert.'paid',1);
else if($status == 1)//已支付 未核销
return $model->where($alert.'paid',1)->where($alert.'status',0);
else if($status == 2)//已支付 已核销
return $model->where($alert.'paid',1)->where($alert.'status',1);
else
return $model->where($alert.'paid',1);
}
/**
* 保存并下载excel
* $list array
* return
*/
public static function SaveExcel($list)
{
$export = [];
foreach ($list as $index => $item) {
$title =EventRegistration::where('id',$item['activity_id'])->value('title');
if($item['user_info'] && $item['is_fill']){
$user_info=json_decode($item['user_info']);
if($user_info->sex==1){
$sex='男';
}elseif($user_info->sex==2){
$sex='女';
}else{
$sex='保密';
}
$userInfo='姓名:'.$user_info->name."\n"
.'电话:'.$user_info->phone."\n"
.'性别:'.$sex."\n"
.'年龄:'.$user_info->age."\n"
.'公司:'.$user_info->company."\n"
.'备注:'.$user_info->remarks;
}else{
$userInfo='无';
}
$export[] = [
$item['order_id'],
$title,
$userInfo,
$item['pay_type'],
$item['pay_price'],
$item['status'] == 1 ? '已核销' : '未核销',
date('Y/md H:i', $item['add_time'])
];
}
PHPExcelService::setExcelHeader(['订单号','活动标题','报名信息','支付方式','支付金额', '状态', '报名时间'])
->setExcelTile('报名导出', '报名信息' . time(), ' 生成时间:' . date('Y-m-d H:i:s', time()))
->setExcelContent($export)
->ExcelSave();
}
public static function getBadge($where)
{
$price = self::getOrderPrice($where);
return [
[
'name' => '订单数量',
'field' => '件',
'count' => $price['order_sum'],
'background_color' => 'layui-bg-blue',
'col' => 2
],
[
'name' => '订单总金额',
'field' => '元',
'count' => $price['pay_price'],
'background_color' => 'layui-bg-blue',
'col' => 2
],
[
'name' => '微信支付金额',
'field' => '元',
'count' => $price['pay_price_wx'],
'background_color' => 'layui-bg-blue',
'col' => 2
],
[
'name' => '余额支付金额',
'field' => '元',
'count' => $price['pay_price_yue'],
'background_color' => 'layui-bg-blue',
'col' => 2
],
[
'name' => '支付宝支付金额',
'field' => '元',
'count' => $price['pay_price_zhifubao'],
'background_color' => 'layui-bg-blue',
'col' => 2
]
];
}
/**
* 处理订单金额
* @param $where
* @return array
*/
public static function getOrderPrice($where)
{
$model = new self;
$price = array();
$price['pay_price'] = 0;//支付金额
$price['pay_price_wx'] = 0;//微信支付金额
$price['pay_price_yue'] = 0;//余额支付金额
$price['pay_price_zhifubao'] = 0;//支付宝支付金额
$list = self::statusByWhere($where, $model)->where('activity_id',$where['id'])->field([
'sum(pay_price) as pay_price'])->find()->toArray();
$price['pay_price'] = $list['pay_price'];//支付金额
$list = self::statusByWhere($where, $model)->where('activity_id',$where['id'])->field('sum(pay_price) as pay_price,pay_type')->group('pay_type')->select()->toArray();
foreach ($list as $v) {
if ($v['pay_type'] == 'weixin') {
$price['pay_price_wx'] = $v['pay_price'];
} elseif ($v['pay_type'] == 'yue') {
$price['pay_price_yue'] = $v['pay_price'];
} elseif ($v['pay_type'] == 'zhifubao') {
$price['pay_price_zhifubao'] = $v['pay_price'];
}
}
$price['order_sum'] =self::statusByWhere($where, $model)->where('activity_id',$where['id'])->count();
return $price;
}
}