소스 검색

合并上传通讯录

stanley-king 8 년 전
부모
커밋
5fe12df0c3

+ 3 - 3
data/logic/queue.logic.php

@@ -480,16 +480,16 @@ class queueLogic
     /**
      * 根据上传的通讯录生成好友关系
      */
-    public function generateFriendRelationship($param)
+    public function generateRelations($param)
     {
         if (empty($param["member_id"])) {
             return false;
         }
 
         try {
-            Model("mobile_contacts")->generateFriendRelationship($param["member_id"]);
+            Model("mobile_contacts")->genRelations($param["member_id"]);
         } catch (Exception $e) {
-            Log::record("generateFriendRelationship: fall error\treturn:" . $e->getMessage());
+            Log::record("generateRelations: fall error\treturn:" . $e->getMessage());
         }
 
         return true;

+ 6 - 5
data/model/mobile_contacts.model.php

@@ -9,14 +9,15 @@ class mobile_contactsModel extends Model
         parent::__construct('mobile_contacts');
     }
 
-    public function add()
+    public function add($member_id, $contacts)
     {
-
+        return $this->insert(array('member_id'=>$member_id,'origin_contacts'=>serialize($contacts),'task_status'=>0), true);
     }
 
-    public function generateFriendRelationship($member_id)
+
+    public function genRelations($member_id)
     {
-        $ret = $this->field('member_id,origin_contacts,unregister_contacts,friend_contacts')->where(array("member_id"=>$member_id,"task_status"=>0))->find();
+        $ret = $this->get('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();
@@ -46,7 +47,7 @@ class mobile_contactsModel extends Model
         return false;
     }
 
-    public function getRelationshipFriends($member_id)
+    public function getRelations($member_id)
     {
         $data = array();
         if (isset($member_id) && !empty($member_id)) {

+ 1 - 0
data/model/user_bonus.model.php

@@ -207,6 +207,7 @@ class user_bonusModel extends Model
         $period_secs = intval($interval_days) * $day_secs;
 
         $condition = "bonus_status = 3 and usable_time > {$cur_time} and usable_time-{$cur_time} <= {$left_warn_secs} and (isnull(notify_time) or {$cur_time} - notify_time >= {$period_secs})";
+
         $ret = $this->field($field)->where($condition)->limit(false)->select();
         if(empty($ret)) {
             return false;

+ 18 - 0
helper/relation_helper.php

@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: stanley-king
+ * Date: 16/6/23
+ * Time: 下午4:26
+ */
+class relation_helper
+{
+    static public function onRegister($member_id) {
+
+    }
+
+    static public function onUpContacts($member_id) {
+        QueueClient::push('generateRelations',array('member_id'=>$member_id));
+    }
+}

+ 71 - 29
helper/user_helper.php

@@ -8,6 +8,28 @@
 
 class user_helper
 {
+    const mobile_login = 1;
+    const wxopen_login = 2;
+    const mobile_len = 11;
+
+    static public function mobile_valid($mobile)
+    {
+        if(isset($mobile) || empty($mobile) || strlen($mobile) < self::mobile_len) {
+            return false;
+        }
+
+        $mobile = substr($mobile,-self::mobile_len);
+
+        $validate = new Validate();
+        $validate->setValidate(Validate::verify_mobile($mobile));
+        $err = $validate->validate();
+        if(empty($err)) {
+            return $mobile;
+        } else {
+            return false;
+        }
+    }
+
     static public function nickname()
     {
         if(isset($_SESSION['member_nickname']) && !empty($_SESSION['member_nickname'])) {
@@ -102,32 +124,6 @@ class user_helper
         return $member_info;
     }
 
-    static public function bindbonus_register($mobile,$sms_code)
-    {
-        if($_SESSION['is_login'] == 1) {
-            return;
-        }
-
-        $password = $sms_code . substr($mobile, -4);
-        $model = Model('member');
-        $ret = $model->getMemberInfo(array('member_mobile' => $mobile));
-        if(empty($ret))
-        {
-            $member_info = array('member_mobile' => $mobile,
-                'member_type' => 0,
-                'member_passwd' => $password,
-                'member_sex' => 0,
-                'member_name' => $mobile,
-                'member_nickname' => substr_replace($mobile, '****', 3, 4),
-                'member_mobile_bind' => 1);
-
-            $success = $model->addMember($member_info);
-            if ($success == true) {
-                sms_helper::send_nostore_message($mobile, Sms::bindbonus_register_code, $password);
-            }
-        }
-    }
-
     static public function notify_soon_expired_bonus($warn_remain_days, $warn_interval_days)
     {
         $user_bonus_model = Model("user_bonus");
@@ -148,7 +144,7 @@ class user_helper
 
         if (!empty($bonus_ids))
         {
-            $user_bonus_model->where(array('user_id' => array('in', $bonus_ids)))->update(array("notify_time" => 'unix_timestamp(now())'));
+            $user_bonus_model->where(array('bonus_id' => array('in', $bonus_ids)))->update(array("notify_time" => 'unix_timestamp(now())'));
         }
     }
 
@@ -165,12 +161,58 @@ class user_helper
             $param['text'] = "红包过期通知:您领取的红包已经过期.";
             $param['go_type'] = 'bonus';
             QueueClient::push('upushSendMsg', $param);
-            $bonus_ids[] = $val["bonus_ids"];
+            $bonus_ids[] = $val["bonus_id"];
         }
 
         if (!empty($bonus_ids))
         {
-            $user_bonus_model->where(array('user_id' => array('in', $bonus_ids)))->delete();
+            $user_bonus_model->where(array('bonus_id' => array('in', $bonus_ids)))->delete();
         }
     }
+
+    static public function filter_member_info($member_info,$openid)
+    {
+        field_helper::validate_null_string($member_info, 'member_mobile,member_wxopenid,member_name,' .
+            'member_truename,member_signname,member_avatar,member_email,member_birthday');
+        field_helper::validate_null_string($member_info, 'member_sex', '0');
+        field_helper::validate_null_string($member_info, 'member_nickname', substr_replace($openid, '****', 3, 4));
+        return $member_info;
+    }
+
+    static public function register_login($mobile,$password)
+    {
+        if($_SESSION['is_login'] == 1) {
+            return false;
+        }
+
+        $mod_member = Model('member');
+        $info = $mod_member->getMemberInfo(array('member_mobile' => $mobile));
+        if(empty($info))
+        {
+            $member_info = array('member_mobile' => $mobile,
+                'member_type' => self::mobile_login,
+                'member_passwd' => $password,
+                'member_sex' => 0,
+                'member_name' => $mobile,
+                'member_nickname' => substr_replace($mobile, '****', 3, 4),
+                'member_mobile_bind' => 1);
+
+            $member_id = $mod_member->addMember($member_info);
+            if ($member_id != false) {
+                sms_helper::send_nostore_message($mobile, Sms::bindbonus_register_code, $password);
+                $info = $mod_member->getMemberInfo(array('member_mobile' => $mobile));
+                relation_helper::onRegister($member_id);
+            } else {
+                return false;
+            }
+        }
+
+        $member_info = self::filter_member_info($info,$info['momber_mobile']);
+        $mod_member->createSession($member_info);
+
+        Model('cart')->mergecart($member_info, $_SESSION['store_id']);
+        Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
+
+        return self::outsuccess(array('HPHPSESSID' => $_SESSION['MPHPSESSID']));
+    }
 }

+ 4 - 3
mobile/control/bonusex.php

@@ -12,6 +12,8 @@ require_once (BASE_ROOT_PATH . '/helper/bonus_helper.php');
 require_once (BASE_ROOT_PATH . '/helper/predeposit_helper.php');
 require_once (BASE_ROOT_PATH . '/helper/user_helper.php');
 require_once (BASE_ROOT_PATH . '/helper/sms_helper.php');
+require_once (BASE_MOBILE_PATH . "/control/login.php");
+
 
 class bonusexControl extends mobileControl
 {
@@ -250,6 +252,8 @@ class bonusexControl extends mobileControl
                 return self::outerr($ret['code'], $ret['msg']);
             } else {
                 $_SESSION['member_mobile'] = $mobile;
+                $password = $code . substr($mobile, -4);
+                user_helper::register_login($mobile,$password);
             }
         }
 
@@ -260,9 +264,6 @@ class bonusexControl extends mobileControl
             $type_infos = bonus_helper::get_typeinfo($bonus_obj->type_sn());
             $this->fileter_typeinfos($type_infos,$type_info,$binded_info);
 
-            //绑定手机成功后自动注册为用户
-            user_helper::bindbonus_register($mobile,$code);
-
             return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info));
         } else {
             return self::outerr($ret['code'],$ret['msg']);

+ 4 - 8
mobile/control/login.php

@@ -127,13 +127,9 @@ class loginControl extends mobileHomeControl
             return NULL;
         }
 
-        $member_info = $model_member->getMemberInfo($conditions,self::$fields);
-        field_helper::validate_null_string($member_info,'member_mobile,member_wxopenid,member_name,' .
-            'member_truename,member_signname,member_avatar,member_email,member_birthday');
-        field_helper::validate_null_string($member_info,'member_sex','0');
-
-        field_helper::validate_null_string($member_info,'member_nickname',substr_replace($openid, '****', 3, 4));
-
+        $ret = $model_member->getMemberInfo($conditions,self::$fields);
+        $member_info = user_helper::filter_member_info($ret,$openid);
+        
         return $member_info;
     }
 
@@ -203,7 +199,7 @@ class loginControl extends mobileHomeControl
         else
         {
             $member_info = array('member_mobile' => $mobile,
-                'member_type' => 0,
+                'member_type' => self::mobile_login,
                 'member_passwd' => $password,
                 'member_sex' => 0,
                 'member_name' => $mobile,

+ 23 - 15
mobile/control/member_info.php

@@ -86,14 +86,10 @@ class member_infoControl extends mbMemberControl
         }
     }
 
-    public function upcontactsOp(){
-        $member_id = $_SESSION['member_id'];
-        if (!isset($member_id)) {
-            return self::outerr(errcode::ErrUnLogin);
-        }
-
+    public function upcontactsOp()
+    {
         $contacts = $_POST["contact_list"];
-        if ((isset($contacts) && !empty($contacts)) == false) {
+        if (!isset($contacts) || empty($contacts)) {
             return self::outerr(errcode::ErrParamter);
         }
 
@@ -102,20 +98,32 @@ class member_infoControl extends mbMemberControl
             return self::outerr(errcode::ErrParamter);
         }
 
-        foreach ($contacts as $obj) {
-            if (count($obj) != 2 || !array_key_exists("mobile",$obj) || !array_key_exists("name",$obj))
-            {
-                return self::outerr(errcode::ErrParamter);
+        $ar_contact = array();
+        foreach ($contacts as $item)
+        {
+            $mobile = user_helper::mobile_valid($item['mobile']);
+            if($mobile == false) {
+                continue;
+            }
+            if(array_key_exists($mobile,$ar_contact)) {
+                continue;
             }
+
+            if(!isset($item['name']) || empty($item['name'])) {
+                $name = substr_replace($mobile, '****', 3, 4);
+            } else {
+                $name = trim($item['name']);
+            }
+
+            $ar_contact[$mobile] = $name;
         }
 
-        $ret = Model('mobile_contacts')->insert(array('member_id'=>$member_id,'origin_contacts'=>serialize($contacts),'task_status'=>0), true);
-        
+        $ret = Model('mobile_contacts')->add($_SESSION['member_id'], $ar_contact);
         if ($ret == false) {
             return self::outerr(errcode::ErrDB);
         }
-
-        QueueClient::push('generateFriendRelationship',array('member_id'=>$member_id));
+        
+        relation_helper::onUpContacts($_SESSION['member_id']);
         return self::outsuccess(NULL);
     }
 

+ 7 - 1
test/pay_helperTest.php

@@ -12,7 +12,13 @@ class pay_helperTest extends PHPUnit_Framework_TestCase
 {
     public function testAdd()
     {
-        $this->assertContainsOnly('string', ['1', '2', '3']);
+        $mobiles = array();
+//        array_push($mobiles,array('139111269867' => '江海苗C'));
+//        array_push($mobiles,array('139111269868' => '江海苗A'));
+//        array_push($mobiles,array('139111269869' => '江海苗B'));
+        $mobiles['139111269867'] = '江海苗C';
+        $mobiles['139111269868'] = '江海苗C';
+        $mobiles['139111269869'] = '江海苗C';
     }
 
 }