PageRenderTime 43ms CodeModel.GetById 7ms RepoModel.GetById 0ms app.codeStats 0ms

/88li/include/classes/ZOrder.class.php

http://phpfor.googlecode.com/
PHP | 205 lines | 178 code | 17 blank | 10 comment | 24 complexity | 1525e620cd34985367c6d32ce8fc1876 MD5 | raw file
  1. <?php
  2. class ZOrder {
  3. static public function OnlineIt($gen_id, $pay_id, $money, $currency='CNY', $service='alipay', $bank='???'){
  4. if (!$gen_id || !$pay_id || $money <= 0 ) return false;
  5. $order = Table::Fetch('order', $gen_id, 'gen_id');
  6. if ( $order['state'] == 'unpay' ) {
  7. Table::UpdateCache('order', $order['id'], array(
  8. 'pay_id' => $pay_id,
  9. 'money' => $money,
  10. 'state' => 'pay',
  11. 'status' => 'finish',
  12. //'service' => $service,
  13. //'quantity' => $quantity,
  14. 'pay_time' => time(),
  15. ));
  16. $order = Table::FetchForce('order', $order['id']);
  17. if ( $order['state'] == 'pay' ) {
  18. $table = new Table('pay');
  19. $table->id = $pay_id;
  20. $table->order_id = $order['id'];
  21. $table->money = $money;
  22. $table->currency = $currency;
  23. $table->bank = $bank;
  24. $table->service = $service;
  25. $table->create_time = time();
  26. $table->insert( array('id', 'order_id', 'money', 'currency', 'service', 'create_time', 'bank') );
  27. //TeamBuy Operation
  28. ZTeam::BuyOne($order);
  29. self::notifyPay($order['gen_id']); // ??????????
  30. //self::notifySms($order); // ??
  31. }
  32. }
  33. return true;
  34. }
  35. static public function CashIt($order) {
  36. global $login_user_id;
  37. if (! $order['state']=='pay' ) return 0;
  38. //update user money;
  39. $user = Table::Fetch('user', $order['user_id']);
  40. Table::UpdateCache('user', $order['user_id'], array(
  41. 'money' => moneyit($user['money'] - $order['credit']),
  42. ));
  43. //update order
  44. Table::UpdateCache('order', $order['id'], array(
  45. 'state' => 'pay',
  46. 'status' => 'finish',
  47. 'service' => 'cash',
  48. 'admin_id' => $login_user_id,
  49. 'money' => $order['origin'],
  50. ));
  51. self::notifyPay($order['gen_id']); // ??????????
  52. ZTeam::BuyOne($order);
  53. //self::notifySms($order); // ??
  54. }
  55. static public function CreateFromCharge($money, $user_id, $time,$service) {
  56. if (!$money || !$user_id || !$time || !$service) return 0;
  57. $pay_id = "charge-{$user_id}-{$time}";
  58. $oarray = array(
  59. 'user_id' => $user_id,
  60. 'pay_id' => $pay_id,
  61. 'service' => $service,
  62. 'state' => 'pay',
  63. 'status' => 'finish',
  64. 'money' => $money,
  65. 'origin' => $money,
  66. 'create_time' => $time,
  67. );
  68. return DB::Insert('order', $oarray);
  69. }
  70. static public function checkOrderItem($gen_id,$check = false){
  71. $con = array(
  72. 'gen_id' => $gen_id,
  73. );
  74. $orderitems = DB::LimitQuery('orderitem', array(
  75. 'condition' => $con,
  76. ));
  77. $team_ids = Utility::GetColumn($orderitems, 'team_id');
  78. $teams = Table::Fetch('team', $team_ids);
  79. if($check){
  80. $today = strtotime(date('Y-m-d'));
  81. foreach($orderitems as $k=>$item){
  82. $team_id = $item['team_id'];
  83. if( $teams[$team_id]['end_time'] < $today || ( $teams[$team_id]['max_number']>0
  84. && $teams[$team_id]['now_number'] >= $teams[$team_id]['max_number'] )){ // ??????????
  85. DB::Update('order', $gen_id, array('status' => 'dead'), 'gen_id');
  86. return false;
  87. }
  88. }
  89. }
  90. return array('orderitems'=>$orderitems,'teams'=>$teams);
  91. }
  92. static public function setOrderItem($items,$gen_id,$user_id){
  93. //$teams = $result['data'];
  94. if(!is_array($items)) return false;
  95. $oarray['gen_id'] = $gen_id;
  96. foreach($items as $id=>$v){
  97. //$oarray['product'] = $v['product'];
  98. $oarray['team_price'] = $v['team_price'];
  99. $oarray['team_type'] = $v['team_type'];
  100. $oarray['market_price'] = $v['market_price'];
  101. $oarray['team_id'] = $id;
  102. $oarray['user_id'] = $user_id;
  103. if($v['list']){ // ??????
  104. foreach($v['list'] as $one){
  105. $oarray['props'] = $one['props'];
  106. $oarray['quantity'] = $one['quantity'];
  107. DB::Insert('orderitem', $oarray);
  108. unset($oarray['props'],$one['quantity']);
  109. }
  110. }else{
  111. $oarray['quantity'] = $v['quantity'];
  112. $oarray['props'] = $v['props'];
  113. DB::Insert('orderitem', $oarray);
  114. }
  115. }
  116. return true;
  117. }
  118. // ???????????? 2011-3-30
  119. static public function upOrderExpress($order, $express_id, $express_no){
  120. if (!$express_id) $express_id = '';
  121. if($order['bind_id']){ // ???????????
  122. ZOrderbind::upBindOrderExpress($order['bind_id'],$express_id,$express_no);
  123. return true;
  124. }
  125. Table::UpdateCache('order', $order['id'], array(
  126. 'express_id' => $express_id,
  127. 'express_no' => $express_no,
  128. ));
  129. self::setItemExp($order['gen_id'],$express_id);
  130. return true;
  131. }
  132. static public function setItemExp($gen_ids,$express_id){ // ?????????????
  133. settype($gen_ids, 'array');
  134. Table::UpdateCache('orderitem', array('gen_id'=>$gen_ids), array(
  135. 'express_id' => $express_id,
  136. ));
  137. return true;
  138. }
  139. static public function notifyPay($gen_id,$paystate = 'pay'){ // ??????orderitem
  140. if(!in_array($paystate,array('pay','unpay'))) return false;
  141. $updaterow = array(
  142. 'state' => $paystate,
  143. );
  144. DB::Update('orderitem', $gen_id, $updaterow, 'gen_id');
  145. }
  146. static public function notifySms($order){ // ??????
  147. global $INI;
  148. $msg = "[{$INI['system']['sitename']}]??,????{$INI['system']['orderpre']}{$order['gen_id']}?????,????{$INI['system']['sitename']}???{$INI['system']['wwwprefix']}";
  149. return sms_send($order['mobile'], $msg);
  150. }
  151. static public function getPerNumber($team,$user_id){
  152. if ($team['per_number']>0) {
  153. $now_count = Table::Count('orderitem', array(
  154. 'user_id' => $user_id,
  155. 'team_id' => $team['id'],
  156. 'state' => 'pay',
  157. ), 'quantity');
  158. $team['per_number'] -= $now_count;
  159. return $team['per_number'];
  160. }
  161. return 9999;
  162. }
  163. static public function GenOrderId() {
  164. $i = rand(0,9999);
  165. do{
  166. if(9999==$i){
  167. $i=0;
  168. }
  169. $i++;
  170. $gen_id = date('YmdH').str_pad($i,4,'0',STR_PAD_LEFT);
  171. $row = Table::Fetch('order', $gen_id, 'gen_id');
  172. }while($row);
  173. return $gen_id;
  174. }
  175. static public function UpGenOrderId($time) {
  176. $i = rand(0,9999);
  177. do{
  178. if(9999==$i){
  179. $i=0;
  180. }
  181. $i++;
  182. $gen_id = date('YmdH',$time).str_pad($i,4,'0',STR_PAD_LEFT);
  183. $row = Table::Fetch('order', $gen_id, 'gen_id');
  184. }while($row);
  185. return $gen_id;
  186. }
  187. }
  188. ?>