PageRenderTime 27ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/b2b/core/model/trading/mdl.refund.php

http://phpfor.googlecode.com/
PHP | 232 lines | 199 code | 21 blank | 12 comment | 26 complexity | 0bc05d50b30ae216e650e8e443f82054 MD5 | raw file
  1. <?php
  2. require_once('shopObject.php');
  3. class mdl_refund extends shopObject{
  4. //START
  5. var $adminCtl='order/refund';
  6. var $idColumn='refund_id';
  7. var $textColumn = 'refund_id';
  8. var $defaultCols = 'refund_id,money,currency,order_id,paymethod,member_id,account,bank,pay_account,status';
  9. var $defaultOrder = array('refund_id','desc');
  10. var $tableName = 'sdb_refunds';
  11. function getColumns(){
  12. return array(
  13. 'refund_id'=>array('label'=>'????','class'=>'span-3'), /* ???id */
  14. 'order_id'=>array('label'=>'???','class'=>'span-4','type'=>'orderid'), /* ??id */
  15. 'member_id'=>array('label'=>'?????','class'=>'span-2','type'=>'object:member'), /* ??id */
  16. 'account'=>array('label'=>'????','class'=>'span-3'), /* ???? */
  17. 'bank'=>array('label'=>'????','class'=>'span-3'), /* ???? */
  18. 'pay_account'=>array('label'=>'???','class'=>'span-2'), /* ??? */
  19. 'currency'=>array('label'=>'??','class'=>'span-2','type'=>'object:currency'), /* ?? */
  20. 'money'=>array('label'=>'??','class'=>'span-2','type'=>'money'), /* ?? */
  21. 'pay_type'=>array('label'=>'????','class'=>'span-3','type'=>'ptype'), /* ??/??/??? */
  22. //'payment'=>array('label'=>'????id','class'=>'span-3'), /* ????id */
  23. 'paymethod'=>array('label'=>'????','class'=>'span-3'), /* ???????? */
  24. //'send_op_id'=>array('label'=>'???','class'=>'span-3','type'=>'object:operator'), /* ?????? */
  25. //'ip'=>array('label'=>'','class'=>'span-3'), /* */
  26. 't_ready'=>array('label'=>'??????','class'=>'span-3','type'=>'time'), /* ??????? */
  27. 't_sent'=>array('label'=>'????','class'=>'span-3','type'=>'time'), /* ???? */
  28. //'t_received'=>array('label'=>'????????','class'=>'span-3'), /* ???????? */
  29. 'status'=>array('label'=>'??','class'=>'span-2','type'=>'status'), /* ?? ready: ?????progress:??????sent:??????received:??????? */
  30. 'op_name'=>array('label'=>'???','class'=>'span-2')
  31. //'title'=>array('label'=>'??','class'=>'span-4'), /* ?? */
  32. );
  33. }
  34. function searchOptions(){
  35. return array(
  36. 'fuzzy_order_id'=>'???',
  37. 'refund_id'=>'????',
  38. 'member_name'=>'?????'
  39. );
  40. }
  41. function _filter($filter,$tableAlias=null,$baseWhere=null){
  42. trim_value($filter);
  43. $where=array(1);
  44. $where[] = 'version_id=0';
  45. if(is_array($filter['payment'])){
  46. foreach($filter['payment'] as $payment){
  47. if($payment!='_ANY_'){
  48. $aPayment[] = 'payment = '.intval($payment);
  49. }
  50. }
  51. if(count($aPayment)>0){
  52. $where[] = '('.implode($aPayment,' OR ').')';
  53. }
  54. unset($filter['payment']);
  55. }
  56. if(is_array($filter['pay_type'])){
  57. foreach($filter['pay_type'] as $state){
  58. if($state!='_ANY_'){
  59. $aState[] = $state;
  60. }
  61. }
  62. if(count($aState)>0){
  63. $where[] = 'pay_type in (\''.implode($aState,'\',\'').'\')';
  64. }
  65. unset($filter['pay_type']);
  66. }
  67. if(isset($filter['operators']) && $filter['operators'] != ""){
  68. $where[] = 'op_name LIKE \'%'.$filter['operators'].'%\'';
  69. unset($filter['operators']);
  70. }
  71. if(!empty($filter['fuzzy_order_id'])){
  72. if($this->system->getConf('taofenxiao.node_id')){
  73. $sql = "select so.order_id from sdb_refunds sr LEFT JOIN sdb_orders so ON sr.order_id=so.order_id WHERE so.order_id like '%".$filter['fuzzy_order_id']."%' or so.dealer_order_id like '%".$filter['fuzzy_order_id']."%'";
  74. $mark_data = $this->db->select($sql);
  75. foreach($mark_data as $k => $v){
  76. $tmp[] = $v['order_id'];
  77. }
  78. $where[] = 'order_id IN ('.implode(',', $tmp).')';
  79. }else{
  80. $where[] = 'order_id LIKE \'%'.$filter['fuzzy_order_id'].'%\'';
  81. }
  82. //$where[] = 'order_id LIKE \'%'.$filter['fuzzy_order_id'].'%\'';
  83. unset($filter['fuzzy_order_id']);
  84. }if(isset($filter['refund_id']) && !is_array($filter['refund_id'])){
  85. $where[] = 'refund_id LIKE \'%'.$filter['refund_id'].'%\'';
  86. unset($filter['refund_id']);
  87. }
  88. if(isset($filter['member_name']) && $filter['member_name'] !== ''){
  89. $aId = array(0);
  90. foreach($this->db->select('SELECT member_id FROM sdb_members WHERE uname LIKE \'%'.$filter['member_name'].'%\'') as $rows){
  91. $aId[] = $rows['member_id'];
  92. }
  93. $where[] = 'member_id IN ('.implode(',', $aId).')';
  94. unset($filter['member_name']);
  95. }
  96. if ($filter['start_date']&&$filter['end_date'])
  97. $where[] = ' (t_ready>='.strtotime($filter['start_date']).' AND t_ready<='.strtotime($filter['end_date'].' 23:59:59').') ';
  98. elseif ($filter['start_date'])
  99. $where[] = "t_ready>=".strtotime($filter['start_date']);
  100. elseif ($filter['end_date'])
  101. $where[] = "t_ready<=".strtotime($filter['end_date'].' 23:59:59');
  102. return parent::_filter($filter).' and '.implode($where,' AND ');
  103. }
  104. function modifier_status(&$rows){
  105. $type = array(
  106. 'ready'=>'???',
  107. 'progress'=>'????',
  108. 'sent'=>'????',
  109. 'received'=>'??????',
  110. );
  111. foreach($rows as $k=>$v){
  112. $rows[$k] = $type[$v];
  113. }
  114. }
  115. function modifier_ptype(&$rows){
  116. $status = array('online'=>'????',
  117. 'offline'=>'????',
  118. 'deposit'=>'?????',
  119. 'recharge'=>'?????',
  120. );
  121. foreach($rows as $k=>$v){
  122. $rows[$k] = $status[$v];
  123. }
  124. }
  125. function getFilter($p){
  126. $oPayment = $this->system->loadModel('trading/payment');
  127. $return['payment']=$oPayment->getMethods();
  128. return $return;
  129. }
  130. function detail($nRefundID){
  131. return $this->db->selectrow('select * from sdb_refunds where refund_id='.$nRefundID);
  132. }
  133. function edit($aDetail){
  134. $rRefund=$this->db->query('select * from sdb_refunds where refund_id='.$aDetail['refund_id']);
  135. unset($aDetail['refund_id']);
  136. $sSQL=$this->db->GetUpdateSQL($rRefund,$aDetail);
  137. if (!$sSQL || $this->db->exec($sSQL)) {
  138. return true;
  139. } else {
  140. return false;
  141. }
  142. }
  143. function getOrderBillList($orderid){
  144. return $this->db->select('SELECT * FROM sdb_refunds WHERE order_id = '.$orderid);
  145. }
  146. //END
  147. function gen_id(){
  148. $i = rand(0,9999);
  149. do{
  150. if(9999==$i){
  151. $i=0;
  152. }
  153. $i++;
  154. $refund_id = time().str_pad($i,4,'0',STR_PAD_LEFT);
  155. $row = $this->db->selectrow('select refund_id from sdb_refunds where refund_id =\''.$refund_id.'\'');
  156. }while($row);
  157. return $refund_id;
  158. }
  159. function create($data){
  160. $data['refund_id'] = $this->gen_id();
  161. $data['t_ready'] = time();
  162. $data['t_sent'] = time();
  163. $data['ip'] = remote_addr();
  164. if($data['pay_type'] == 'deposit'){ //todo???
  165. // $this->money=$money;
  166. }
  167. if($payCfg = $this->db->selectrow('SELECT pay_type,fee,custom_name FROM sdb_payment_cfg WHERE id='.intval($data['payment']))){
  168. $data['paycost'] = $payCfg['fee'] * $data['money'];
  169. //$this->bank = $payCfg['pay_type'];
  170. $data['paymethod'] = addslashes($payCfg['custom_name']);
  171. }
  172. $rs = $this->db->query('select * from sdb_refunds where 0=1');
  173. $sql = $this->db->getInsertSQL($rs,$data);
  174. if($this->db->exec($sql)){
  175. return $data['refund_id'];
  176. }else{
  177. return false;
  178. }
  179. }
  180. function setRefundStatus($refundId,$status){
  181. $aTemp = array();
  182. $aTemp['t_end'] = time();
  183. switch($status){
  184. case PAY_FAILED:
  185. $aTemp['status'] = 'failed'; //????????????????
  186. break;
  187. case PAY_TIMEOUT:
  188. $aTemp['status'] = 'timeout'; //
  189. break;
  190. case 'succ':
  191. $aTemp['status'] = 'succ'; //????????????
  192. break;
  193. }
  194. $aRs = $this->db->query('SELECT * FROM sdb_refunds WHERE refund_id=\''.$refundId.'\'');
  195. //todo:????????,?????????????(???,??????????)
  196. if(!$aRs || !($rows = $this->db->getRows($aRs))){
  197. echo '??:???????????!';
  198. exit();
  199. //todo ???????
  200. return false;
  201. }
  202. $sSql = $this->db->GetUpdateSql($aRs,$aTemp);
  203. return (!$sSql || $this->db->exec($sSql));
  204. }
  205. function modifier_money(&$rows){
  206. foreach($rows as $i=>$money){
  207. $rows[$i] = '?'.$money;
  208. }
  209. }
  210. }
  211. ?>