HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/bs.kntsleep.com/system/admin/member/orders.class.php
<?php
/*
 * Copyright (c) Huyin Information Technology Co., Ltd. All Rights Reserved.
 * BOSSCMS Content Management System (https://www.bosscms.net/)
 */
defined('IS_OK') or exit('Access Forbidden');

into::basic_class('admin');

class orders extends admin
{
	public function init()
	{
		global $G;
		$G['cover'] = $this->cover();
		$where = $this->where($G['get']);
		$rows = $G['rows'] = $this->rows(20);
		$data = page::orders_pages(null,$rows,null,null,null,'pages','*',$where,null);
		foreach($data['list'] as $k=>$v){
			if(!isset($G['user'][$v['member']])){
				$G['user'][$v['member']] = arrExist(mysql::select_one('username','member',"id='{$v['member']}'"),'username');
			}
			$data['list'][$k]['user'] = $G['user'][$v['member']];
		}
		$G['package'] = arrOption(page::package_list(1),'id','name');
		echo $this->theme('member/orders',$data);
	}

	public function where($data)
	{
		$where = 1;
		if($keyword = $data['keyword']){
			if($m = mysql::select_one('id','member',"username='{$keyword}'")){
				$where = "member='{$m['id']}' AND {$where}";
			}else{
				$where = "num='{$keyword}' AND {$where}";
			}
		}
		if(is_numeric($data['type'])){
			$where = "type='{$data['type']}' AND {$where}";
		}
		if(preg_match('/^[012]$/',$data['state'])){
			$where = "state='{$data['state']}' AND {$where}";
		}
		return $where;
	}
	
	public function modify()
	{
		global $G;
		$this->cover('member&orders','M');
		if(isset($G['post']['id']) && preg_match('/^(1|2)$/',$G['get']['state'])){
			$success = array();
			$state = $G['get']['state'];
			foreach($G['post']['id'] as $id){
				if($res = mysql::select_one('*','orders',"id='{$id}' AND state<'{$state}'")){
					if(mysql::update(array('state'=>$state),"orders","id='{$id}'")){
						$success[] = $id;
						if($state == 2){
							$me = mysql::select_one('*','member',"id='{$res['member']}'");
							$pa = mysql::select_one('*','package',"id='{$res['package']}'");
							if($res['type']){
								mysql::update(array('golds'=>$me['golds']+$pa['golds']),'member',"id='{$res['member']}'");
							}else{
								if($ge = mysql::select_one('*','grade',"id='{$pa['grade']}'")){
									$data['utime'] = TIME;
									if($pa['term'] == 0){
										$data['etime'] = 0;
									}else{
										$data['etime'] = strtotime('+'.abs($pa['term']).' '.($pa['term']>0?'month':'day'),$ge['weight']>$me['weight']?TIME:setDefault($me['etime']*1,TIME));
									}
									$data['weight'] = $ge['weight'];
									$data['golds'] = $me['golds']+$ge['golds'];
									$data['points'] = $me['points']+$ge['points'];
									mysql::update($data,'member',"id='{$res['member']}'");
								}
							}
						}
					}
				}
			}
			if($success){
				alert('修改成功'.(count($success)==count($G['post']['id'])?'':count($success).'个'), url::mpf('member','orders','init'));
			}else{
				alert('修改失败');
			}
		}else{
			alert('没有提交信息');
		}
	}
	
	public function delete()
	{
		global $G;
		$this->cover('member&orders','D');
		if(isset($G['post']['url']) && isset($G['get']['id'])){
			$del = array();
			$arr = explode(',',$G['get']['id']);
			foreach($arr as $id){
				if(is_numeric($id)){
					$del[$id] = $id;
				}
			}
			if($del){
				$error=array();
				foreach($del as $id=>$name){
					if(is_numeric(mysql::delete("orders","id='{$id}'"))){
						
					}else{
						$error[]=$id;
					}
				}
				if($error){
					alert('ID为'.implode(',',$error).'删除失败');
				}else{
					alert('删除成功',url::mpf('member','orders','init',array('id'=>null)));
				}
			}else{
				alert('没有删除对象id');
			}			
		}
		alert('没有提交信息');
	}

	public function csv()
	{
		global $G;
		$this->cover('member&orders','R');
		if($G['post']){
			header('Content-Type: application/vnd.ms-excel');
			header('Content-Disposition: attachment;filename="orders.csv"');
			header('Cache-Control: max-age=0');
			$where = $this->where($G['post']);
			$rows = 1000;
			if($total = mysql::total('orders', $where)){
				$file = fopen('php://output','a');
				$arr = array('编号','订单号','产品名称','产品类型','生成日期','价格','支付方式','状态','会员');
				foreach($arr as $k=>$v){
					$arr[$k] = iconv('utf-8','gbk',$v);
				}
				fputcsv($file,$arr);
				$max = ceil($total/$rows);
				for($i=0; $i<$max; $i++){
					ob_flush();
					flush();
					$list = mysql::select_all('*', 'orders', $where, 'id ASC', ($i*$rows).','.$rows);
					foreach($list as $v){
						if($G['mb'][$v['member']]){
							$member = $G['mb'][$v['member']];
						}else{
							$G['mb'][$v['member']] = $member = arrExist(mysql::select_one('username','member',"id='{$v['member']}'"),'username');
						}
						fputcsv($file, array(
							$v['id'],
							$v['num']."\t",
							iconv('utf-8','gbk',$v['name']),
							iconv('utf-8','gbk',$G['option']['supply'][$v['type']]),
							date('Y-m-d H:i:s',$v['ctime']),
							$v['price'],
							iconv('utf-8','gbk',$G['option']['payment'][$v['payment']]),
							iconv('utf-8','gbk',$G['option']['statebuy'][$v['state']]),
							iconv('utf-8','gbk',$member)
						));
					}
				}
				fclose($file);
			}else{
				alert('数据为空');
			}
		}else{
			alert('没有提交信息');
		}
	}
}
?>