| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | 
							- <?php
 
- /**
 
-  * [WeEngine System] Copyright (c) 2014 WE7.CC
 
-  * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
 
-  */
 
- namespace We7\Table\Site;
 
- class StoreOrder extends \We7Table {
 
- 	protected $tableName = 'site_store_order';
 
- 	protected $primaryKey = 'id';
 
- 	protected $field = array(
 
- 		'orderid',
 
- 		'goodsid',
 
- 		'duration',
 
- 		'buyer',
 
- 		'buyerid',
 
- 		'amount',
 
- 		'type',
 
- 		'changeprice',
 
- 		'createtime',
 
- 		'uniacid',
 
- 		'endtime',
 
- 		'wxapp',
 
- 		'is_wish'
 
- 	);
 
- 	protected $default = array(
 
- 		'orderid' => '',
 
- 		'goodsid' => '',
 
- 		'duration' => '',
 
- 		'buyer' => '',
 
- 		'buyerid' => '',
 
- 		'amount' => '',
 
- 		'type' => '',
 
- 		'changeprice' => 0,
 
- 		'createtime' => '',
 
- 		'uniacid' => '',
 
- 		'endtime' => 0,
 
- 		'wxapp' => 0,
 
- 		'is_wish' => 0
 
- 	);
 
- 	
 
- 	public function getAllByGoodsId($goodsid) {
 
- 		return $this->query->where('goodsid', $goodsid)->getall();
 
- 	}
 
- 	
 
- 	public function getStatisticsInfoByDate($starttime, $endtime) {
 
- 		$total_orders = $this->query->select('COUNT(id)')->where(array('createtime >=' => $starttime, 'createtime <=' => $endtime,))->getcolumn();
 
- 		$total_amounts = $this->query->select('SUM(amount)')->where(array('createtime >=' => $starttime, 'createtime <=' => $endtime, 'type' => STORE_ORDER_FINISH))->getcolumn();
 
- 		return array('total_orders' => $total_orders, 'total_amounts' => $total_amounts);
 
- 	}
 
- 	public function getQueryJoinGoodsTable($order_type = 0, $goods_type = 0) {
 
- 		$query = $this->query
 
- 			->from($this->tableName, 'a')
 
- 			->leftjoin('site_store_goods', 'b')
 
- 			->on('a.goodsid', 'b.id');
 
- 		if ($order_type > 0) {
 
- 			$query->where('a.type', $order_type);
 
- 		}
 
- 		if ($goods_type > 0) {
 
- 			$query->where('b.type', $goods_type);
 
- 		}
 
- 		return $query;
 
- 	}
 
- 	public function getUserBuyNumByType($uid, $type) {
 
- 		$account_all_type = uni_account_type();
 
- 		$account_all_type_sign = uni_account_type_sign();
 
- 		foreach($account_all_type as $account_type) {
 
- 			if ($account_type['type_sign'] == $type) {
 
- 				$store_type_number = $account_type['store_type_number'];
 
- 				break;
 
- 			}
 
- 		}
 
- 		$count = $this->getQueryJoinGoodsTable(STORE_ORDER_FINISH, array($store_type_number, STORE_TYPE_ACCOUNT_PACKAGE))
 
- 			->select("b.{$type}_num")
 
- 			->where('a.buyerid', intval($uid))
 
- 			->getall();
 
- 		if (empty($count)) {
 
- 			return 0;
 
- 		} else {
 
- 			$count = array_sum(array_column($count, "{$type}_num"));
 
- 			$deleted_account = table('site_store_create_account')->getUserDeleteNum($uid, $account_all_type_sign[$type]['contain_type']);
 
- 			return max(0, $count - $deleted_account);
 
- 		}
 
- 	}
 
- 	public function getApiOrderByUniacid($uniacid) {
 
- 		return $this->getQueryJoinGoodsTable(STORE_ORDER_FINISH, STORE_TYPE_API)
 
- 			->select('a.duration, b.api_num, b.price')
 
- 			->where('a.uniacid', intval($uniacid))
 
- 			->getall();
 
- 	}
 
- 	public function getUserBuyPackage($uniacid) {
 
- 		return $this->getQueryJoinGoodsTable(STORE_ORDER_FINISH, STORE_TYPE_PACKAGE)
 
- 			->where(function ($query) use ($uniacid) {
 
- 				$query->where('a.uniacid', $uniacid)->whereor('a.wxapp', $uniacid);
 
- 			})->getall('module_group');
 
- 	}
 
- 	
 
- 	public function searchAccountBuyGoods($uniacid, $type) {
 
- 		$this->query->from('site_store_goods', 'g')
 
- 			->leftjoin('site_store_order', 'r')
 
- 			->on(array('g.id' => 'r.goodsid'))
 
- 			->where('g.type', $type)
 
- 			->where('r.type', STORE_ORDER_FINISH);
 
- 		if ($type == STORE_TYPE_API) {
 
- 			$number_list = $this->query->where('r.uniacid', $uniacid)->select('(g.api_num * r.duration) as number')->getall('number');
 
- 			return array_sum(array_keys($number_list));
 
- 		} else{
 
- 			$this->query->where(function ($query) use ($uniacid) {
 
- 				$query->where('r.uniacid', $uniacid)->whereor('r.wxapp', $uniacid);
 
- 			});
 
- 			load()->model('store');
 
- 			$all_type = store_goods_type_info();
 
- 			if ($all_type[$type]['group'] == 'module') {
 
- 				$keyfield = 'module';
 
- 			} else {
 
- 				$type_name = array(
 
- 					STORE_TYPE_PACKAGE => 'module_group',
 
- 				);
 
- 				$keyfield = empty($type_name[$type]) ? '' : $type_name[$type];
 
- 			}
 
- 			return $this->query->getall($keyfield);
 
- 		}
 
- 	}
 
- 	public function searchWithEndtime() {
 
- 		$this->query->where('r.endtime >=', time());
 
- 		return $this;
 
- 	}
 
- }
 
 
  |