stanley-king 8 years ago
parent
commit
03e980019d

+ 41 - 2
crontab/control/hour.php

@@ -247,9 +247,48 @@ class hourControl extends BaseCronControl {
     public function releaseBonusOp()
     {
         $bonus_type = Model('bonus_type');
-        $bonus_type->bonus_refund();
-    }
 
+        $one_hour = 60 * 60;
+        $condition = array('remain_amount' => array('gt',0),'is_refund' => 0,'send_end_date' =>array('lt',time() - $one_hour));
+        $bonus_types = $bonus_type->getTypeList($condition,'','*','',false);
+        if(empty($bonus_types) || count($bonus_types)) {
+            return;
+        }
+
+        foreach($bonus_types as $type)
+        {
+            Model::beginTransaction();
+            try
+            {
+                $pred = new predeposit_helper($type['sender_id']);
+                $pred->bonus_refund($type);
+                $bonus_type->edit(array('type_id' =>$type['type_id']),array('is_refund' => 1,'refund_time' => time()));
+                if ($bonus_type->affected_rows() <= 0) {
+                    Model::rollback();
+                    $sresult = implode(',',$type);
+                    Log::record("bonus refund 更新状态失败,result:{$sresult}.");
+                } else {
+                    $condition = array('type_id' =>$type['type_id'],'bonus_status' => array('in','0,1'));
+                    Model('user_bonus')->where($condition)->delete();
+                    Model::commit();
+
+                    $param['member_id'] = $type['sender_id'];
+                    $amount = $type['remain_amount'];
+                    $param['text']      = "红包退还通知:您发送的红包已超过24小时,退还未被领取的金额{$amount}元,请在收支明细中查看.";
+                    $param['go_type']   = 'bonus';
+                    QueueClient::push('upushSendMsg',$param);
+                }
+            }
+            catch (Exception $e)
+            {
+                Model::rollback();
+
+                $sresult = implode(',',$type);
+                Log::record('bonus refund : error:' . $e->getMessage() . " result:{$sresult}.");
+            }
+        }
+    }
+    
     /**
      * 定时清理已领取但未使用的红包
      */

+ 0 - 67
data/model/bonus_type.model.php

@@ -52,71 +52,4 @@ class bonus_typeModel extends Model
     public function edit($condition,$data) {
         $this->where($condition)->update($data);
     }
-
-    /**
-     * 获取已过期的余额列表
-     */
-    private function get_endbonus_list()
-    {
-        $one_hour = 60 * 60;
-        $condition = array('remain_amount' => array('gt',0),'is_refund' => 0,'send_end_date' =>array('lt',time() - $one_hour));
-        return $this->where($condition)->field('type_id,type_sn,sender_id,sender_name,remain_amount')->limit(false)->select();
-    }
-
-    /**
-     * 红包退款
-     * @return bool
-     */
-    public function bonus_refund()
-    {
-        $results = $this->get_endbonus_list();
-        if(empty($results)) {
-            return false;
-        }
-
-        $model_predeposit = Model('predeposit');
-        foreach($results as $result)
-        {
-            Model::beginTransaction();
-            try
-            {
-                //将没抢完的钱退还到用户余额
-                $log_data = array();
-                $log_data['member_id']   = $result['sender_id'];
-                $log_data['member_name'] = $result['sender_name'];
-                $log_data['amount'] = $result['remain_amount'];
-                $log_data['type_sn'] = $result['type_sn'];
-
-                $model_predeposit->changePd('bonus_refund',$log_data);
-
-                //更新红包状态
-                $this->where(array('type_id' =>$result['type_id']))->update(array('is_refund' => 1,'refund_time' => time()));
-                if ($this->affected_rows() <= 0) {
-                    Model::rollback();
-
-                    $sresult = implode(',',$result);
-                    Log::record("bonus refund 更新状态失败,result:{$sresult}.");
-                } else {
-                    $condition = array('type_id' =>$result['type_id'],'bonus_status' => array('in','0,1'));
-                    Model('user_bonus')->where($condition)->delete();
-                    Model::commit();
-
-                    $param['member_id'] = $result['sender_id'];
-                    $amount = $result['remain_amount'];
-                    $param['text']      = "红包退还通知:您发送的红包已超过24小时,退还未被领取的金额{$amount}元,请在收支明细中查看.";
-                    $param['go_type']   = 'bonus';
-                    QueueClient::push('upushSendMsg',$param);
-                }
-            }
-            catch (Exception $e)
-            {
-                Model::rollback();
-
-                $sresult = implode(',',$result);
-                Log::record('bonus refund : error:' . $e->getMessage() . " result:{$sresult}.");
-            }
-        }
-
-        return true;
-    }
 }

+ 8 - 7
data/model/predeposit.model.php

@@ -298,7 +298,14 @@ class predepositModel extends Model {
                 if(isBonusExpiryDate()) {
                     require_once (BASE_ROOT_PATH . '/helper/account_helper.php');
                     account_helper::onPredeposit('order_cancel',$data['member_id'],$data['amount']);
-                    return;
+                    
+                    $data_log['lg_freeze_amount'] = -$data['amount'];
+                    $data_log['lg_desc'] = '取消订单,解冻预存款,订单号: '.$data['order_sn'];
+                    $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit-'.$data['amount']);
+
+                    $data_msg['av_amount'] = 0;
+                    $data_msg['freeze_amount'] = -$data['amount'];
+                    $data_msg['desc'] = $data_log['lg_desc'];
                 } else {
                     $data_log['lg_av_amount'] = $data['amount'];
                     $data_log['lg_freeze_amount'] = -$data['amount'];
@@ -424,12 +431,6 @@ class predepositModel extends Model {
                 $data_msg['av_amount'] = -$data['amount'];
                 $data_msg['freeze_amount'] = 0;
                 $data_msg['desc'] = $data_log['lg_desc'];
-
-//                if(isBonusExpiryDate()) {
-//                    require_once (BASE_ROOT_PATH . '/helper/account_helper.php');
-//                    account_helper::onPredeposit('hand_out_bonus',$data['member_id'],$data['amount']);
-//                }
-
                 break;
 				////////////////////zmr>v20////////////////////////////////////
             case 'sys_add_money':

+ 5 - 0
helper/bonus/type.php

@@ -196,6 +196,11 @@ class type
         $make_type = intval($this->mParam['make_type']);
         return $make_type;
     }
+    public function remain_amount()
+    {
+        $amount = intval($this->mParam['remain_amount'] * 100 + 0.5);
+        return $amount / 100;
+    }
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     static public function crate_by_input($paramer)

+ 6 - 0
helper/notify_helper.php

@@ -7,6 +7,9 @@
  * Time: 下午9:30
  */
 require_once (BASE_ROOT_PATH . '/helper/account_helper.php');
+require_once (BASE_ROOT_PATH . '/helper/predeposit_helper.php');
+
+
 
 class notify_helper
 {
@@ -50,6 +53,9 @@ class notify_helper
         foreach ($items as $key => $val) {
             $user_id = $val["user_id"];
 
+            $pred = new predeposit_helper($user_id);
+            $pred->bonus_expire($val);
+
             $param = array();
             $param['member_id'] = $user_id;
             $param['text'] = "红包过期通知:您领取的红包已经过期.";

+ 35 - 10
helper/predeposit_helper.php

@@ -53,17 +53,42 @@ class predeposit_helper
         $this->model_pd->changePd("bonus_add_money", $data);
     }
 
-//    public function bonus_refund($mod_pred,$sender_id,$sener_name,$amount,$type_sn)
-//    {
-//        $log_data = array();
-//        $log_data['member_id']   = $sender_id;
-//        $log_data['member_name'] = $sener_name;
-//        $log_data['amount'] = $amount;
-//        $log_data['type_sn'] = $type_sn;
-//
-//        $mod_pred->changePd('bonus_refund',$log_data);
-//    }
+    public function bonus_expire($bouns)
+    {
+        try
+        {
+            $bonus_obj = bonus\user_bonus::create_by_param($bouns);
+            if($bonus_obj->spend_over()) {
+                return false;
+            }
+            $minfo = new member_info($this->member_id);
+            $data = array();
+            $data['member_id'] = $this->member_id;
+            $data['member_name'] = $minfo->nickname();
+            $data['amount'] = $bonus_obj->remain_amount();
+            $data['order_sn'] = $bonus_obj->bonus_sn();
+            $data['admin_name'] = "熊猫美妆";
+            $data['pdr_sn'] = $bonus_obj->bonus_sn();
+            $data['lg_desc'] = "红包过期扣款";
+            $this->model_pd->changePd("bonus_expire", $data);
+            return true;
+        } catch (Exception $ex) {
+            return false;
+        }
+    }
 
+    public function bonus_refund($bonus_type)
+    {
+        $types = bonus\type::crate_by_paramer($bonus_type);
+        $log_data = array();
+        $log_data['member_id']   = $types->sender_id();
+        $log_data['member_name'] = $types->sender_name();
+        $log_data['amount'] = $types->remain_amount();
+        $log_data['type_sn'] = $types->getType_sn();
+
+        $this->model_pd->changePd('bonus_refund',$log_data);
+    }
+    
     public function transform_money($member_id,$name,$amount)
     {
         $data = array();