/88li/include/classes/ZOrder.class.php
PHP | 205 lines | 178 code | 17 blank | 10 comment | 24 complexity | 1525e620cd34985367c6d32ce8fc1876 MD5 | raw file
- <?php
- class ZOrder {
- static public function OnlineIt($gen_id, $pay_id, $money, $currency='CNY', $service='alipay', $bank='???'){
- if (!$gen_id || !$pay_id || $money <= 0 ) return false;
- $order = Table::Fetch('order', $gen_id, 'gen_id');
- if ( $order['state'] == 'unpay' ) {
- Table::UpdateCache('order', $order['id'], array(
- 'pay_id' => $pay_id,
- 'money' => $money,
- 'state' => 'pay',
- 'status' => 'finish',
- //'service' => $service,
- //'quantity' => $quantity,
- 'pay_time' => time(),
- ));
- $order = Table::FetchForce('order', $order['id']);
- if ( $order['state'] == 'pay' ) {
- $table = new Table('pay');
- $table->id = $pay_id;
- $table->order_id = $order['id'];
- $table->money = $money;
- $table->currency = $currency;
- $table->bank = $bank;
- $table->service = $service;
- $table->create_time = time();
- $table->insert( array('id', 'order_id', 'money', 'currency', 'service', 'create_time', 'bank') );
-
- //TeamBuy Operation
- ZTeam::BuyOne($order);
- self::notifyPay($order['gen_id']); // ??????????
- //self::notifySms($order); // ??
- }
- }
- return true;
- }
- static public function CashIt($order) {
- global $login_user_id;
- if (! $order['state']=='pay' ) return 0;
- //update user money;
- $user = Table::Fetch('user', $order['user_id']);
- Table::UpdateCache('user', $order['user_id'], array(
- 'money' => moneyit($user['money'] - $order['credit']),
- ));
- //update order
- Table::UpdateCache('order', $order['id'], array(
- 'state' => 'pay',
- 'status' => 'finish',
- 'service' => 'cash',
- 'admin_id' => $login_user_id,
- 'money' => $order['origin'],
- ));
- self::notifyPay($order['gen_id']); // ??????????
- ZTeam::BuyOne($order);
- //self::notifySms($order); // ??
- }
- static public function CreateFromCharge($money, $user_id, $time,$service) {
- if (!$money || !$user_id || !$time || !$service) return 0;
- $pay_id = "charge-{$user_id}-{$time}";
- $oarray = array(
- 'user_id' => $user_id,
- 'pay_id' => $pay_id,
- 'service' => $service,
- 'state' => 'pay',
- 'status' => 'finish',
- 'money' => $money,
- 'origin' => $money,
- 'create_time' => $time,
- );
- return DB::Insert('order', $oarray);
- }
-
- static public function checkOrderItem($gen_id,$check = false){
- $con = array(
- 'gen_id' => $gen_id,
- );
- $orderitems = DB::LimitQuery('orderitem', array(
- 'condition' => $con,
- ));
- $team_ids = Utility::GetColumn($orderitems, 'team_id');
- $teams = Table::Fetch('team', $team_ids);
- if($check){
- $today = strtotime(date('Y-m-d'));
- foreach($orderitems as $k=>$item){
- $team_id = $item['team_id'];
- if( $teams[$team_id]['end_time'] < $today || ( $teams[$team_id]['max_number']>0
- && $teams[$team_id]['now_number'] >= $teams[$team_id]['max_number'] )){ // ??????????
- DB::Update('order', $gen_id, array('status' => 'dead'), 'gen_id');
- return false;
- }
- }
- }
- return array('orderitems'=>$orderitems,'teams'=>$teams);
- }
-
- static public function setOrderItem($items,$gen_id,$user_id){
- //$teams = $result['data'];
- if(!is_array($items)) return false;
- $oarray['gen_id'] = $gen_id;
- foreach($items as $id=>$v){
- //$oarray['product'] = $v['product'];
- $oarray['team_price'] = $v['team_price'];
- $oarray['team_type'] = $v['team_type'];
- $oarray['market_price'] = $v['market_price'];
- $oarray['team_id'] = $id;
- $oarray['user_id'] = $user_id;
- if($v['list']){ // ??????
- foreach($v['list'] as $one){
- $oarray['props'] = $one['props'];
- $oarray['quantity'] = $one['quantity'];
- DB::Insert('orderitem', $oarray);
- unset($oarray['props'],$one['quantity']);
- }
- }else{
- $oarray['quantity'] = $v['quantity'];
- $oarray['props'] = $v['props'];
- DB::Insert('orderitem', $oarray);
- }
- }
- return true;
- }
-
- // ???????????? 2011-3-30
- static public function upOrderExpress($order, $express_id, $express_no){
- if (!$express_id) $express_id = '';
- if($order['bind_id']){ // ???????????
- ZOrderbind::upBindOrderExpress($order['bind_id'],$express_id,$express_no);
- return true;
- }
- Table::UpdateCache('order', $order['id'], array(
- 'express_id' => $express_id,
- 'express_no' => $express_no,
- ));
- self::setItemExp($order['gen_id'],$express_id);
- return true;
- }
-
- static public function setItemExp($gen_ids,$express_id){ // ?????????????
- settype($gen_ids, 'array');
- Table::UpdateCache('orderitem', array('gen_id'=>$gen_ids), array(
- 'express_id' => $express_id,
- ));
- return true;
- }
-
- static public function notifyPay($gen_id,$paystate = 'pay'){ // ??????orderitem
- if(!in_array($paystate,array('pay','unpay'))) return false;
- $updaterow = array(
- 'state' => $paystate,
- );
- DB::Update('orderitem', $gen_id, $updaterow, 'gen_id');
- }
-
- static public function notifySms($order){ // ??????
- global $INI;
- $msg = "[{$INI['system']['sitename']}]??,????{$INI['system']['orderpre']}{$order['gen_id']}?????,????{$INI['system']['sitename']}???{$INI['system']['wwwprefix']}";
- return sms_send($order['mobile'], $msg);
- }
-
-
- static public function getPerNumber($team,$user_id){
- if ($team['per_number']>0) {
- $now_count = Table::Count('orderitem', array(
- 'user_id' => $user_id,
- 'team_id' => $team['id'],
- 'state' => 'pay',
- ), 'quantity');
- $team['per_number'] -= $now_count;
- return $team['per_number'];
- }
- return 9999;
-
- }
- static public function GenOrderId() {
- $i = rand(0,9999);
- do{
- if(9999==$i){
- $i=0;
- }
- $i++;
- $gen_id = date('YmdH').str_pad($i,4,'0',STR_PAD_LEFT);
- $row = Table::Fetch('order', $gen_id, 'gen_id');
- }while($row);
- return $gen_id;
- }
- static public function UpGenOrderId($time) {
- $i = rand(0,9999);
- do{
- if(9999==$i){
- $i=0;
- }
- $i++;
- $gen_id = date('YmdH',$time).str_pad($i,4,'0',STR_PAD_LEFT);
- $row = Table::Fetch('order', $gen_id, 'gen_id');
- }while($row);
- return $gen_id;
- }
- }
- ?>