/b2b/core/model/trading/mdl.refund.php
PHP | 232 lines | 199 code | 21 blank | 12 comment | 26 complexity | 0bc05d50b30ae216e650e8e443f82054 MD5 | raw file
- <?php
-
- require_once('shopObject.php');
-
- class mdl_refund extends shopObject{
-
- //START
- var $adminCtl='order/refund';
- var $idColumn='refund_id';
- var $textColumn = 'refund_id';
- var $defaultCols = 'refund_id,money,currency,order_id,paymethod,member_id,account,bank,pay_account,status';
- var $defaultOrder = array('refund_id','desc');
- var $tableName = 'sdb_refunds';
-
- function getColumns(){
- return array(
- 'refund_id'=>array('label'=>'????','class'=>'span-3'), /* ???id */
- 'order_id'=>array('label'=>'???','class'=>'span-4','type'=>'orderid'), /* ??id */
- 'member_id'=>array('label'=>'?????','class'=>'span-2','type'=>'object:member'), /* ??id */
- 'account'=>array('label'=>'????','class'=>'span-3'), /* ???? */
- 'bank'=>array('label'=>'????','class'=>'span-3'), /* ???? */
- 'pay_account'=>array('label'=>'???','class'=>'span-2'), /* ??? */
- 'currency'=>array('label'=>'??','class'=>'span-2','type'=>'object:currency'), /* ?? */
- 'money'=>array('label'=>'??','class'=>'span-2','type'=>'money'), /* ?? */
- 'pay_type'=>array('label'=>'????','class'=>'span-3','type'=>'ptype'), /* ??/??/??? */
- //'payment'=>array('label'=>'????id','class'=>'span-3'), /* ????id */
- 'paymethod'=>array('label'=>'????','class'=>'span-3'), /* ???????? */
- //'send_op_id'=>array('label'=>'???','class'=>'span-3','type'=>'object:operator'), /* ?????? */
- //'ip'=>array('label'=>'','class'=>'span-3'), /* */
- 't_ready'=>array('label'=>'??????','class'=>'span-3','type'=>'time'), /* ??????? */
- 't_sent'=>array('label'=>'????','class'=>'span-3','type'=>'time'), /* ???? */
- //'t_received'=>array('label'=>'????????','class'=>'span-3'), /* ???????? */
- 'status'=>array('label'=>'??','class'=>'span-2','type'=>'status'), /* ?? ready: ?????progress:??????sent:??????received:??????? */
- 'op_name'=>array('label'=>'???','class'=>'span-2')
- //'title'=>array('label'=>'??','class'=>'span-4'), /* ?? */
- );
- }
-
- function searchOptions(){
- return array(
- 'fuzzy_order_id'=>'???',
- 'refund_id'=>'????',
- 'member_name'=>'?????'
- );
- }
-
- function _filter($filter,$tableAlias=null,$baseWhere=null){
- trim_value($filter);
- $where=array(1);
- $where[] = 'version_id=0';
-
- if(is_array($filter['payment'])){
- foreach($filter['payment'] as $payment){
- if($payment!='_ANY_'){
- $aPayment[] = 'payment = '.intval($payment);
- }
- }
- if(count($aPayment)>0){
- $where[] = '('.implode($aPayment,' OR ').')';
- }
- unset($filter['payment']);
- }
- if(is_array($filter['pay_type'])){
- foreach($filter['pay_type'] as $state){
- if($state!='_ANY_'){
- $aState[] = $state;
- }
- }
- if(count($aState)>0){
- $where[] = 'pay_type in (\''.implode($aState,'\',\'').'\')';
- }
-
- unset($filter['pay_type']);
- }
- if(isset($filter['operators']) && $filter['operators'] != ""){
- $where[] = 'op_name LIKE \'%'.$filter['operators'].'%\'';
- unset($filter['operators']);
- }
- if(!empty($filter['fuzzy_order_id'])){
- if($this->system->getConf('taofenxiao.node_id')){
- $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']."%'";
- $mark_data = $this->db->select($sql);
- foreach($mark_data as $k => $v){
- $tmp[] = $v['order_id'];
- }
- $where[] = 'order_id IN ('.implode(',', $tmp).')';
- }else{
- $where[] = 'order_id LIKE \'%'.$filter['fuzzy_order_id'].'%\'';
- }
-
- //$where[] = 'order_id LIKE \'%'.$filter['fuzzy_order_id'].'%\'';
- unset($filter['fuzzy_order_id']);
- }if(isset($filter['refund_id']) && !is_array($filter['refund_id'])){
- $where[] = 'refund_id LIKE \'%'.$filter['refund_id'].'%\'';
- unset($filter['refund_id']);
- }
- if(isset($filter['member_name']) && $filter['member_name'] !== ''){
- $aId = array(0);
- foreach($this->db->select('SELECT member_id FROM sdb_members WHERE uname LIKE \'%'.$filter['member_name'].'%\'') as $rows){
- $aId[] = $rows['member_id'];
- }
- $where[] = 'member_id IN ('.implode(',', $aId).')';
- unset($filter['member_name']);
- }
- if ($filter['start_date']&&$filter['end_date'])
- $where[] = ' (t_ready>='.strtotime($filter['start_date']).' AND t_ready<='.strtotime($filter['end_date'].' 23:59:59').') ';
- elseif ($filter['start_date'])
- $where[] = "t_ready>=".strtotime($filter['start_date']);
- elseif ($filter['end_date'])
- $where[] = "t_ready<=".strtotime($filter['end_date'].' 23:59:59');
- return parent::_filter($filter).' and '.implode($where,' AND ');
- }
-
- function modifier_status(&$rows){
- $type = array(
- 'ready'=>'???',
- 'progress'=>'????',
- 'sent'=>'????',
- 'received'=>'??????',
- );
- foreach($rows as $k=>$v){
- $rows[$k] = $type[$v];
- }
- }
-
- function modifier_ptype(&$rows){
- $status = array('online'=>'????',
- 'offline'=>'????',
- 'deposit'=>'?????',
- 'recharge'=>'?????',
- );
- foreach($rows as $k=>$v){
- $rows[$k] = $status[$v];
- }
- }
-
- function getFilter($p){
- $oPayment = $this->system->loadModel('trading/payment');
- $return['payment']=$oPayment->getMethods();
- return $return;
- }
- function detail($nRefundID){
- return $this->db->selectrow('select * from sdb_refunds where refund_id='.$nRefundID);
- }
- function edit($aDetail){
- $rRefund=$this->db->query('select * from sdb_refunds where refund_id='.$aDetail['refund_id']);
- unset($aDetail['refund_id']);
- $sSQL=$this->db->GetUpdateSQL($rRefund,$aDetail);
- if (!$sSQL || $this->db->exec($sSQL)) {
- return true;
- } else {
- return false;
- }
- }
-
- function getOrderBillList($orderid){
- return $this->db->select('SELECT * FROM sdb_refunds WHERE order_id = '.$orderid);
- }
- //END
-
- function gen_id(){
- $i = rand(0,9999);
- do{
- if(9999==$i){
- $i=0;
- }
- $i++;
- $refund_id = time().str_pad($i,4,'0',STR_PAD_LEFT);
- $row = $this->db->selectrow('select refund_id from sdb_refunds where refund_id =\''.$refund_id.'\'');
- }while($row);
- return $refund_id;
- }
-
- function create($data){
- $data['refund_id'] = $this->gen_id();
- $data['t_ready'] = time();
- $data['t_sent'] = time();
- $data['ip'] = remote_addr();
- if($data['pay_type'] == 'deposit'){ //todo???
- // $this->money=$money;
- }
-
- if($payCfg = $this->db->selectrow('SELECT pay_type,fee,custom_name FROM sdb_payment_cfg WHERE id='.intval($data['payment']))){
- $data['paycost'] = $payCfg['fee'] * $data['money'];
- //$this->bank = $payCfg['pay_type'];
- $data['paymethod'] = addslashes($payCfg['custom_name']);
- }
-
- $rs = $this->db->query('select * from sdb_refunds where 0=1');
- $sql = $this->db->getInsertSQL($rs,$data);
- if($this->db->exec($sql)){
- return $data['refund_id'];
- }else{
- return false;
- }
- }
-
- function setRefundStatus($refundId,$status){
- $aTemp = array();
- $aTemp['t_end'] = time();
- switch($status){
- case PAY_FAILED:
- $aTemp['status'] = 'failed'; //????????????????
- break;
- case PAY_TIMEOUT:
- $aTemp['status'] = 'timeout'; //
- break;
- case 'succ':
- $aTemp['status'] = 'succ'; //????????????
- break;
- }
-
- $aRs = $this->db->query('SELECT * FROM sdb_refunds WHERE refund_id=\''.$refundId.'\'');
- //todo:????????,?????????????(???,??????????)
- if(!$aRs || !($rows = $this->db->getRows($aRs))){
- echo '??:???????????!';
- exit();
- //todo ???????
- return false;
- }
-
- $sSql = $this->db->GetUpdateSql($aRs,$aTemp);
- return (!$sSql || $this->db->exec($sSql));
- }
-
- function modifier_money(&$rows){
- foreach($rows as $i=>$money){
- $rows[$i] = '?'.$money;
- }
- }
- }
- ?>