Ver código fonte

Merge branch 'mobile_shop' of 121.43.114.153:/home/git/repositories/shopnc into mobile_shop

stanley-king 8 anos atrás
pai
commit
ce65601eee

+ 2 - 3
crontab/control/date.php

@@ -935,8 +935,7 @@ class dateControl extends BaseCronControl {
 
     private function bonus_expired_notify()
     {
-        $user_bonus_model = Model("user_bonus");
-        $user_bonus_model->expired_warn();
-        $user_bonus_model->expired_action();
+        user_helper::notify_soon_expired_bonus(10,5);
+        user_helper::notify_already_expired_bonus();
     }
 }

+ 1 - 27
data/logic/queue.logic.php

@@ -487,33 +487,7 @@ class queueLogic
         }
 
         try {
-            $ret = Model()->table("mobile_contacts")->field('member_id,origin_contacts')->where(array("member_id"=>$param["member_id"],"task_status"=>0))->find();
-            if (!empty($ret)) {
-                $member_id = $ret["member_id"];
-                $origin_contacts = unserialize($ret["origin_contacts"]);
-
-                $mobilelist = array();
-                $namelist = array();
-                foreach($origin_contacts as $obj) {
-                    $mobilelist[] = $obj["mobile"];
-                    $namelist[$obj["mobile"]] = $obj["name"];
-                }
-
-                $member_nameids = array();
-                $member_ids = Model("member")->field("member_id,member_mobile")->where(array('member_mobile'=>array('in', $mobilelist)))->select();
-                if(!empty($member_ids)) {
-                    foreach($member_ids as $key => $val) {
-                        $member_nameids[] = array("member_id"=>$val["member_id"],"name"=>$namelist[$val["member_mobile"]]);
-                    }
-
-                    $data = array("task_status"=>1,"friend_contacts"=>serialize($member_nameids));
-                    Model()->table("mobile_contacts")->where(array("member_id"=>$member_id))->update($data);
-
-                    $prefix = "mb_";
-                    $key = "mobilecontacts_{$member_id}";
-                    dcache($key,$prefix);
-                }
-            }
+            Model("mobile_contacts")->generateFriendRelationship($param["member_id"]);
         } catch (Exception $e) {
             Log::record("generateFriendRelationship: fall error\treturn:" . $e->getMessage());
         }

+ 63 - 0
data/model/mobile_contacts.model.php

@@ -0,0 +1,63 @@
+<?php
+
+defined('InShopNC') or exit('Access Invalid!');
+
+class mobile_contactsModel extends Model
+{
+    public function __construct()
+    {
+        parent::__construct('mobile_contacts');
+    }
+
+    public function generateFriendRelationship($member_id)
+    {
+        $ret = $this->field('member_id,origin_contacts,unregister_contacts,friend_contacts')->where(array("member_id"=>$member_id,"task_status"=>0))->find();
+        if (!empty($ret)) {
+            $origin_contacts = unserialize($ret["origin_contacts"]);
+            $mobilelist = array();
+            $namelist = array();
+            foreach($origin_contacts as $obj) {
+                $mobilelist[] = $obj["mobile"];
+                $namelist[$obj["mobile"]] = $obj["name"];
+            }
+
+            $member_nameids = array();
+            $member_ids = Model("member")->field("member_id,member_mobile")->where(array('member_mobile'=>array('in', $mobilelist)))->select();
+            if(!empty($member_ids)) {
+                foreach($member_ids as $key => $val) {
+                    $member_nameids[] = array("member_id"=>$val["member_id"],"name"=>$namelist[$val["member_mobile"]]);
+                }
+
+                $data = array("task_status"=>1,"friend_contacts"=>serialize($member_nameids));
+                $this->where(array("member_id"=>$member_id))->update($data);
+
+                $prefix = "mb_";
+                $key = "mobilecontacts_{$member_id}";
+                dcache($key,$prefix);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public function getRelationshipFriends($member_id)
+    {
+        $data = array();
+        if (isset($member_id) && !empty($member_id)) {
+            $prefix = "mb_";
+            $key = "mobilecontacts_{$member_id}";
+
+            $ret = rcache($key,$prefix);
+            if (empty($ret)) {
+                $data =  $this->field('friend_contacts')->where(array("member_id"=>$member_id))->find();
+                wcache($key,array("contacts_list"=>$data["friend_contacts"]),$prefix);
+                $data = unserialize($data["friend_contacts"]);
+            } else {
+                $data = unserialize($ret["contacts_list"]);
+            }
+        }
+
+        return $data;
+    }
+}

+ 10 - 42
data/model/user_bonus.model.php

@@ -192,51 +192,19 @@ class user_bonusModel extends Model
         }
     }
 
-    public function expired_warn()
+    public function get_expired_soon_notify_bonus($warn_remain_days, $warn_interval_days)
     {
-        $field = 'user_bonus.user_id,user_bonus.type_sn,(bonus_type.send_end_date-unix_timestamp(now())) as seconds';
-        $condition = 'bonus_type.send_end_date > unix_timestamp(now())';
-        $ret = Model()->table('user_bonus,bonus_type')->field($field)->join()->on('user_bonus.type_id=bonus_type.type_id')->where($condition)->limit(false)->select();
-        foreach ($ret as $key=>$val)
-        {
-            $user_id = $val["user_id"];
-            $remain_days = intval($val["seconds"]) < 86400 ? 1 : (intval($val["seconds"])/86400) + 1;
-
-            $param = array();
-            $param['member_id'] = $user_id;
-            $param['text']      = "红包过期通知:您领取的红包将在{$remain_days}天内过期.";
-            $param['go_type']   = 'bonus';
-            QueueClient::push('upushSendMsg',$param);
-        }
+        $field = 'bonus_id,user_id,type_sn,(usable_time-unix_timestamp(now())) as seconds';
+        $condition = 'usable_time > unix_timestamp(now()) and  usable_time-unix_timestamp(now()) <= {$warn_remain_days} and (isnull(notify_time) or unix_timestamp(now()) - notify_time >= {$warn_interval_days})';
+        $ret = $this->field($field)->where($condition)->limit(false)->select();
+        return $ret;
     }
 
-    public function expired_action()
+    public function get_already_expired_bonus()
     {
-        $field = 'user_bonus.user_id,user_bonus.type_sn,user_bonus.bonus_id';
-        $condition = 'bonus_type.send_end_date <= unix_timestamp(now())';
-        $ret = Model()->table('user_bonus,bonus_type')->field($field)->join()->on('user_bonus.type_id=bonus_type.type_id')->where($condition)->limit(false)->select();
-
-        $push_array = array();
-        $bonus_ids = array();
-
-        foreach ($ret as $key=>$val)
-        {
-            $user_id = $val["user_id"];
-            $param = array();
-            $param['member_id'] = $user_id;
-            $param['text']      = "红包过期通知:您领取的红包已经过期.";
-            $param['go_type']   = 'bonus';
-
-            $push_array[] = $param;
-            $bonus_ids[] = $val["bonus_id"];
-        }
-
-        if (!empty($push_array)) {
-            $this->where(array('bonus_id'=>array('in', $bonus_ids)))->delete();
-            foreach ($push_array as $key)
-            {
-                QueueClient::push('upushSendMsg',$key);
-            }
-        }
+        $field = 'bonus_id,user_id,type_sn';
+        $condition = 'usable_time <= unix_timestamp(now())';
+        $ret = $this->field($field)->where($condition)->limit(false)->select();
+        return $ret;
     }
 }

+ 41 - 15
helper/user_helper.php

@@ -128,23 +128,49 @@ class user_helper
         }
     }
 
-    static public function get_mobile_contacts($member_id)
+    static public function notify_soon_expired_bonus($warn_remain_days, $warn_interval_days)
     {
-        $data = array();
-        if (isset($member_id) && !empty($member_id)) {
-            $prefix = "mb_";
-            $key = "mobilecontacts_{$member_id}";
-
-            $ret = rcache($key,$prefix);
-            if (empty($ret)) {
-                $data =  Model()->table("mobile_contacts")->field('friend_contacts')->where(array("member_id"=>$member_id))->find();
-                wcache($key,array("contacts_list"=>$data["friend_contacts"]),$prefix);
-                $data = unserialize($data["friend_contacts"]);
-            } else {
-                $data = unserialize($ret["contacts_list"]);
-            }
+        $user_bonus_model = Model("user_bonus");
+        $expired_list = $user_bonus_model->get_expired_soon_notify_bonus($warn_remain_days, $warn_interval_days);
+        $bonus_ids = array();
+
+        foreach ($expired_list as $key => $val) {
+            $user_id = $val["user_id"];
+            $remain_days = intval($val["seconds"]) < 86400 ? 1 : (intval($val["seconds"]) / 86400) + 1;
+
+            $param = array();
+            $param['member_id'] = $user_id;
+            $param['text'] = "红包过期通知:您领取的红包将在{$remain_days}天内过期.";
+            $param['go_type'] = 'bonus';
+            QueueClient::push('upushSendMsg', $param);
+            $bonus_ids[] = $val["bonus_id"];
+        }
+
+        if (!empty($bonus_ids))
+        {
+            $user_bonus_model->where(array('user_id' => array('in', $bonus_ids)))->update(array("notify_time" => 'unix_timestamp(now())'));
         }
+    }
 
-        return $data;
+    static public function notify_already_expired_bonus()
+    {
+        $user_bonus_model = Model("user_bonus");
+        $expired_list = $user_bonus_model->get_already_expired_bonus();
+        $bonus_ids = array();
+
+        foreach ($expired_list as $key => $val) {
+            $user_id = $val["user_id"];
+            $param = array();
+            $param['member_id'] = $user_id;
+            $param['text'] = "红包过期通知:您领取的红包已经过期.";
+            $param['go_type'] = 'bonus';
+            QueueClient::push('upushSendMsg', $param);
+            $bonus_ids[] = $val["bonus_ids"];
+        }
+
+        if (!empty($bonus_ids))
+        {
+            $user_bonus_model->where(array('user_id' => array('in', $bonus_ids)))->delete();
+        }
     }
 }

+ 1 - 1
mobile/control/member_info.php

@@ -109,7 +109,7 @@ class member_infoControl extends mbMemberControl
             }
         }
 
-        $ret = Model()->table('mobile_contacts')->insert(array('member_id'=>$member_id,'origin_contacts'=>serialize($contacts),'task_status'=>0), true);
+        $ret = Model('mobile_contacts')->insert(array('member_id'=>$member_id,'origin_contacts'=>serialize($contacts),'task_status'=>0), true);
         if ($ret == false) {
             return self::outerr(errcode::ErrDB);
         }