Quellcode durchsuchen

增加领红包时建立好友关系

stanley-king vor 8 Jahren
Ursprung
Commit
92089177c2

+ 0 - 3
helper/http_header.php

@@ -162,8 +162,6 @@ class http_header
             $cookie .= self::COOKIE_HTTPONLY . $httponly;
         }
 
-        //$this->mHeader->pop();
-        //$this->mHeader->pop();
         $this->mHeader->push($cookie);
 
         return true;
@@ -346,7 +344,6 @@ function init_cookie($cookie)
 
 function fcgi_setcookie($name, $value = null, $expire = null, $path = null, $domain = null, $secure = null, $httponly = null)
 {
-    Log::record("fcgi_setcookie {$name}: {$value}");
     return http_header::instance()->setcookie($name,$value,$expire,$path,$domain,$secure,true,$httponly);
 }
 

+ 93 - 116
helper/relation/mem_relation.php

@@ -12,19 +12,19 @@ use \Exception;
 use \session_helper;
 use \algorithm_helper;
 use \errcode;
-use \Log;
 use \member_info;
+use \Log;
+
+//member_mobile VARCHAR(11) PRIMARY KEY NOT NULL COMMENT '用户手机号',
+//member_id INT(11) DEFAULT '0' COMMENT '已经注册用户id',
+//contact_name VARCHAR(50) DEFAULT '',
+//subscriber TEXT COMMENT '订阅我为好友的人。',
+//follower TEXT COMMENT '我订阅别人成为好友通过的人。',
+//build_mobiles TEXT COMMENT '已经与我建立好友关系的手机号',
+//unbuild_mobiles TEXT COMMENT '还未与我建立好友关系的手机号'
 
 class mem_relation
 {
-    //member_mobile VARCHAR(11) PRIMARY KEY NOT NULL COMMENT '用户手机号',
-    //member_id INT(11) DEFAULT '0' COMMENT '已经注册用户id',
-    //contact_name VARCHAR(50) DEFAULT '',
-    //subscriber TEXT COMMENT '订阅我为好友的人。',
-    //follower TEXT COMMENT '我订阅别人成为好友通过的人。',
-    //build_mobiles TEXT COMMENT '已经与我建立好友关系的手机号',
-    //unbuild_mobiles TEXT COMMENT '还未与我建立好友关系的手机号'
-
     private $member_id;
     private $member_mobile;
     private $contact_name;
@@ -37,89 +37,86 @@ class mem_relation
     private $mod_relation;
     private $dirty;
 
-    public function __construct($member_id,$mobile = null,$name = null)
+    public function __construct($member_id,$mobile = null)
     {
-        Log::record("member_id = {$member_id}",Log::DEBUG);
-        $this->mod_relation = Model('member_relation');
+        $this->dirty = false;
 
+        $this->mod_relation = Model('member_relation');
         $member_id = intval($member_id);
+
         if(isset($member_id) && intval($member_id) > 0)
         {
-            $info = $this->mod_relation->findByID($member_id);
-            if(!empty($info))
-            {
-                $this->init($info);
-                if($this->member_id == 0 && $member_id > 0) {
-                    $this->member_id = $member_id;
-                    $this->dirty = true;
-                }
-                if(isset($name) && !empty($name)) {
-                    $this->contact_name = $name;
-                    $this->dirty = true;
-                }
-                return;
-            }
-            else
+            $member_info = new member_info($member_id);
+            if(!empty($member_info))
             {
-                $member_info = new member_info($member_id);
-                $name = $member_info->nickname();
-                echo ("member_id = {$member_id} name = {$name}.");
-                if(!empty($member_info)) {
-                    $this->member_id = $member_id;
-                    $this->member_mobile = $member_info->mobile();
-                    $this->contact_name = $member_info->nickname();
-
-                    $this->dirty = true;
-                    $this->subscriber = array();
-                    $this->new_subscriber = array();
-                    $this->follower = array();
-                    $this->build_mobiles = array();
-                    $this->unbuild_mobiles = array();
-
+                $mobile = $member_info->mobile();
+                $info = $this->mod_relation->findByMobile($mobile);
+                if(!empty($info))
+                {
+                    $this->init($info);
+                    if($this->member_id == 0 && $member_id > 0) {
+                        $this->member_id = $member_info->member_id();
+                        $this->dirty = true;
+                    }
+                    if($this->contact_name != $member_info->nickname()) {
+                        $this->contact_name = $member_info->nickname();
+                        $this->dirty = true;
+                    }
                     return;
                 }
+                else
+                {
+                    if(!empty($member_info)) {
+                        $this->member_id = $member_info->member_id();
+                        $this->member_mobile = $member_info->mobile();
+                        $this->contact_name = $member_info->nickname();
+                        $this->subscriber = array();
+                        $this->new_subscriber = array();
+                        $this->follower = array();
+                        $this->build_mobiles = array();
+                        $this->unbuild_mobiles = array();
+
+                        $this->dirty = true;
+                        return;
+                    }
+                }
             }
         }
 
         if(isset($mobile) && !empty($mobile))
         {
+            $mobile = session_helper::mobile_valid($mobile);
+            if($mobile == false) {
+                throw new Exception("member_relation __construct error",errcode::ErrParamter);
+            }
+
             $info = $this->mod_relation->findByMobile($mobile);
-            if(!empty($info))
-            {
+            if(!empty($info)) {
                 $this->init($info);
-                if($this->member_id == 0 && $member_id > 0) {
-                    $this->member_id = $member_id;
-
-                    $this->dirty = true;
-                }
-                if($member_id > 0 && isset($name) && !empty($name)) {
-                    $this->contact_name = $name;
-                    $this->dirty = true;
-                }
                 return;
             }
+            else
+            {
+                $this->member_mobile = $mobile;
+                $this->member_id = $member_id;
+                $this->contact_name = '';
+                $this->subscriber = array();
+                $this->new_subscriber = array();
+                $this->follower = array();
+                $this->build_mobiles = array();
+                $this->unbuild_mobiles = array();
+
+                $this->dirty = true;
+            }
         }
+    }
 
-        $mobile = session_helper::mobile_valid($mobile);
-        if($mobile == false) {
-            throw new Exception("member_relation __construct error",errcode::ErrParamter);
-        } else {
-            $this->member_mobile = $mobile;
-        }
-
-        $this->member_id = $member_id;
-        if(isset($name) && !empty($name)) {
-            $this->contact_name = $name;
-        } else {
-            $this->contact_name = '';
+    public function __destruct()
+    {
+        Log::record(__METHOD__,Log::DEBUG);
+        if($this->dirty) {
+            $this->save();
         }
-
-        $this->dirty = true;
-        $this->subscriber = array();
-        $this->new_subscriber = array();
-        $this->follower = array();
-        $this->build_mobiles = array();
-        $this->unbuild_mobiles = array();
     }
 
     private function subscribe_me($member_id)
@@ -139,9 +136,9 @@ class mem_relation
         }
     }
 
-    private function doSubscribe($member_id,$mobile, $name)
+    private function doSubscribe($member_id,$mobile)
     {
-        $someone = new mem_relation($member_id, $mobile, $name);
+        $someone = new mem_relation($member_id, $mobile);
         $someone->subscribe_me($this->member_id);
         $someone->save();
         return $someone->member_id;
@@ -156,13 +153,13 @@ class mem_relation
     public function unfollower() {
         return $this->unbuild_mobiles;
     }
-    public function subscribe($member_id,$mobile = null,$name = null)
+    public function subscribe($member_id,$mobile = null)
     {
         if(!isset($member_id) || intval($member_id) == 0 || $this->member_id == $member_id) {
             return false;
         }
 
-        $someone_id = $this->doSubscribe($member_id,$mobile, $name);
+        $someone_id = $this->doSubscribe($member_id,$mobile);
         if($someone_id > 0) {
             $this->add_fllower($someone_id);
             $this->remove_unbuild($mobile);
@@ -177,7 +174,7 @@ class mem_relation
 
     public function pass_subscribe()
     {
-        if(count($this->new_subscriber) >0) {
+        if(count($this->new_subscriber) > 0) {
             $this->dirty = true;
         }
         else {
@@ -186,7 +183,7 @@ class mem_relation
         
         foreach ($this->new_subscriber as $someone_id)
         {
-            $someone = new mem_relation($someone_id, null, null);
+            $someone = new mem_relation($someone_id);
             $someone->add_fllower($this->member_id);
             $someone->remove_unbuild($this->member_mobile);
             $someone->add_build($this->member_mobile);
@@ -260,7 +257,7 @@ class mem_relation
                 continue;
             }
 
-            $someone_id = $this->doSubscribe(0,$mobile,null);
+            $someone_id = $this->doSubscribe(0,$mobile);
             if($someone_id > 0) {
                 $this->add_fllower($someone_id);
                 $this->remove_unbuild($mobile);
@@ -272,20 +269,30 @@ class mem_relation
         $this->save();
     }
 
-    public function save()
+    private function save()
     {
         if($this->dirty) {
             $data = array();
             $data['member_mobile'] = $this->member_mobile;
             $data['member_id'] = $this->member_id;
             $data['contact_name'] = $this->contact_name;
-
             $data['subscriber'] = serialize($this->subscriber);
             $data['new_subscriber '] = serialize($this->new_subscriber);
             $data['follower'] = serialize($this->follower);
             $data['build_mobiles'] = serialize($this->build_mobiles);
             $data['unbuild_mobiles'] = serialize($this->unbuild_mobiles);
+
             $this->mod_relation->replace($data);
+            $this->dirty = false;
+        }
+    }
+
+    private function from_text($text)
+    {
+        if(is_null($text) || empty($text)) {
+            return array();
+        } else {
+            return unserialize($text);
         }
     }
 
@@ -294,41 +301,11 @@ class mem_relation
         $this->member_id = intval($info['member_id']);
         $this->member_mobile = $info['member_mobile'];
         $this->contact_name = $info['contact_name'];
-        $subscriber = $info['subscriber'];
-        $new_subscriber = $info['new_subscriber'];
-        $follower = $info['follower'];
-        $build_mobiles = $info['build_mobiles'];
-        $unbuild_mobiles = $info['unbuild_mobiles'];
-
-        if(is_null($subscriber) || empty($subscriber)) {
-            $this->subscriber = array();
-        } else {
-            $this->subscriber = unserialize($subscriber);
-        }
-
-        if(is_null($new_subscriber) || empty($new_subscriber)) {
-            $this->new_subscriber = array();
-        } else {
-            $this->new_subscriber = unserialize($new_subscriber);
-        }
-
-        if(is_null($follower) || empty($follower)) {
-            $this->follower = array();
-        } else {
-            $this->follower = unserialize($follower);
-        }
-
-        if(is_null($build_mobiles) || empty($build_mobiles)) {
-            $this->build_mobiles = array();
-        } else {
-            $this->build_mobiles = unserialize($build_mobiles);
-        }
-
-        if(is_null($unbuild_mobiles) || empty($unbuild_mobiles)) {
-            $this->unbuild_mobiles = array();
-        } else {
-            $this->unbuild_mobiles = unserialize($unbuild_mobiles);
-        }
+        $this->subscriber = $this->from_text($info['subscriber']);
+        $this->new_subscriber = $this->from_text($info['new_subscriber']);
+        $this->follower = $this->from_text($info['follower']);
+        $this->build_mobiles = $this->from_text($info['build_mobiles']);
+        $this->unbuild_mobiles = $this->from_text($info['unbuild_mobiles']);
 
         sort($this->subscriber);
         sort($this->new_subscriber);

+ 4 - 9
helper/relation_helper.php

@@ -12,23 +12,18 @@ require_once (BASE_ROOT_PATH . '/helper/algorithm_helper.php');
 
 class relation_helper
 {
-    static public function init_user($member_id) {
-        $relation = new relation\mem_relation($member_id);
-        $relation->save();
-    }
-
     static public function onLogin($member_id) {
         $relation = new relation\mem_relation($member_id);
         $relation->pass_subscribe();
     }
 
-    static public function onRegister($member_id,$mobile,$name) {
-        $relation = new relation\mem_relation($member_id,$mobile,$name);
+    static public function onRegister($member_id) {
+        $relation = new relation\mem_relation($member_id);
         $relation->pass_subscribe();
     }
 
-    static public function onUpContacts($member_id,$mobile,$name,$contacts) {
-        $relation = new relation\mem_relation($member_id,$mobile,$name);
+    static public function onUpContacts($member_id,$contacts) {
+        $relation = new relation\mem_relation($member_id);
         $relation->subscribe_contacts($contacts);
     }
 

+ 14 - 3
helper/session_helper.php

@@ -160,12 +160,23 @@ class session_helper
             $member_id = $mod_member->addMember($member_info);
             if ($member_id != false) {
                 $info = $mod_member->getMemberInfo(array('member_mobile' => $mobile));
-                relation_helper::onRegister($member_id,$mobile,$info['member_nickname']);
+                relation_helper::onRegister($member_id);
+                $ret = relation_helper::onSubscribe($_SESSION['member_id'],$type->sender_id());
+                if($ret) {
+                    //成为好友通知
+//                    $push_param = array();
+//                    $push_param['member_id'] = $type->sender_id();
+//                    $push_param['text']      = "红包退还通知:您发送的红包已超过24小时,退还未被领取的金额{$amount}元,请在收支明细中查看.";
+//                    $push_param['go_type']   = 'bonus';
+//                    QueueClient::push('upushSendMsg',$push_param);
+                }
                 $bonus = account_helper::register_bonus($member_id,200);
                 if($bonus == false) {
                     sms_helper::send_nostore_message($mobile,Sms::newcomer_code,array('account'=> $mobile,'code'=>$password,'time'=>'5'));
-                } else {
-                    sms_helper::send_nostore_message($mobile,Sms::newcomer_bonus_code,array('account'=> $mobile,'code'=>$password,'amount' => 200,'time'=>'5'));
+                }
+                else {
+                    sms_helper::send_nostore_message($mobile,Sms::newcomer_bonus_code,
+                        array('account'=> $mobile,'code'=>$password,'amount' => 200,'url' => 'http://a.app.qq.com/o/simple.jsp?pkgname=com.lrlz.beautyshop','time'=>'5'));
                 }
             }
             else

+ 0 - 197
mobile/control/bonus.php

@@ -1,197 +0,0 @@
-<?php
-/**
- * 红包管理
- *
- *
- *
- ***/
-defined('InShopNC') or exit('Access Invalid!');
-
-class bonusControl extends mobileHomeControl
-{
-    public function __construct()
-    {
-        parent::__construct();
-        throw new Exception("dont call act=bonus",10336);
-    }
-
-    /**
-     * 首页-获取红包
-     */
-    public function modeOp()
-    {
-        $type_id = $_GET['type_id'];
-        $result = Model()->table('bonus_type')->where(array('type_id' => $type_id))->limit(1)->select();
-
-        if (!empty($result)) {
-            Tpl::output('sender', $result[0]['sender']);
-            Tpl::output('link', self::home_url . "?act=h5_hb&op=bindtel&type_id={$type_id}");
-            Tpl::showpage('mode', 'h5_hb/mode');
-        } else {
-            Tpl::showpage('mode', 'h5_hb/over');
-        }
-    }
-
-    /**
-     * 获取红包类型
-     */
-    private function getBonusType($type_id)
-    {
-        static $bonustype;
-        if (empty($bonustype)) {
-            $result = Model()->table('bonus_type')->select();
-            foreach ($result as $key => $value) {
-                $typeid = strval($value['type_id']);
-                $bonustype[$typeid] = $value;
-            }
-        }
-
-        return $bonustype[$type_id];
-    }
-
-    /**
-     * 获取红包列表, 红包使用列表数据
-     */
-    public function bonus_listOp()
-    {
-        // 根据token获取用户ID
-        $condition = array();
-        $condition['user_id'] = $_SESSION['member_id'];
-        if (!empty($condition['user_id']))
-        {
-            // 红包总值(直接等于预存款值)18-
-            $member = Model('member');
-            $pd_array = $member->getMemberPdInfo($condition['user_id']);;
-            $total_value = $pd_array['available_predeposit'];   // 当前预存款
-            $freeze_value = $pd_array['freeze_predeposit'];     // 当前预存款冻结
-            // 获取使用列表
-            $ret_array = $member->getPdOrderList($condition['user_id']);
-            self::outsuccess(array('total_value' => $total_value,'freeze_value' => $freeze_value,"ret_array" => $ret_array));
-        }
-    }
-
-    /**
-     * 添加余额
-     */
-    private function _add_money_ex($member_id, $pointsnum, $order_sn, $pointsdesc, $bonusname)
-    {
-
-        $obj_validate = new Validate();
-        $obj_validate->validateparam = array(
-            array("input" => $member_id, "require" => "true", "message" => Language::get('admin_points_member_error_again')),
-            array("input" => $pointsnum, "require" => "true", 'validator' => 'Compare', 'operator' => ' >= ', 'to' => 1, "message" => Language::get('admin_points_points_min_error'))
-        );
-        $error = $obj_validate->validate();
-        if ($error != '') {
-            return -1;
-        }
-
-        $money = abs(floatval($pointsnum));
-        $memo = trim($pointsdesc);
-        if ($money <= 0) {
-            return -2;  // 输入的金额必需大于0
-        }
-        //查询会员信息
-        $obj_member = Model('member');
-        $member_id = intval($member_id);
-        $member_info = $obj_member->getMemberInfo(array('member_id' => $member_id));
-
-        if (!is_array($member_info) || count($member_info) <= 0) {
-            return -3;  // 用户信息不对
-        }
-        $available_predeposit = floatval($member_info['available_predeposit']);
-        $freeze_predeposit = floatval($member_info['freeze_predeposit']);
-        $model_pd = Model('predeposit');
-
-        try {
-            //扣除冻结的预存款
-            $data = array();
-            $data['member_id'] = $member_info['member_id'];
-            $data['member_name'] = $member_info['member_name'];
-            $data['amount'] = $money;
-            $data['order_sn'] = $order_sn;
-            $data['admin_name'] = $bonusname;
-            $data['pdr_sn'] = $order_sn;
-            $data['lg_desc'] = $memo;
-            $model_pd->changePd("bonus_add_money", $data);
-            return 0; // 操作成功
-        } catch (Exception $e) {
-            return -7;  // 操作异常
-        }
-        return -8;
-    }
-
-    public function gensnOp(){
-        $model_pd = Model('predeposit');
-        $user_bonus = Model()->table("user_bonus")->limit(10000)->select();
-        foreach($user_bonus as $val){
-            $data = array();
-            $data['bonus_sn'] = $model_pd->makeSn();
-            if(intval($val['bonus_sn']) == 100000){
-                $ret = Model()->table('user_bonus')->where(array('bonus_id' => $val['bonus_id']))->update($data);
-                if(!$ret){
-                    return joutput_error(errcode::ErrDB);
-                }
-            }
-        }
-        return joutput_data(null);
-    }
-
-    // 红包绑定
-    public function bind_bonusOp()
-    {
-        // 获取user_id
-        $condition = array();
-        $condition['member_id'] = $_SESSION['member_id'];
-        if (!empty($condition['member_id'])) {
-
-            // get member_mobile 获取用户手机号
-            $member = Model()->table("member")->field("member_mobile")->where($condition)->select();
-            if (!empty($member)) {
-
-                $user_bonus = Model()->table("user_bonus")->where(array('user_mobile' => $member[0]['member_mobile'], 'user_id' => 0))->select();
-                // 更新user_bonus
-                if (!empty($user_bonus)) {
-
-                    Model::beginTransaction();
-
-                    $bonus_info = array();
-                    foreach ($user_bonus as $value) {
-                        $info = [];
-                        $bonus_type = $this->getBonusType(strval($value['type_id']));
-                        $info['sender'] = $bonus_type['sender'];
-                        $info['type_name'] = $bonus_type['type_name'];
-                        $info['bonus_value'] = $value['bonus_value'];
-
-                        array_push($bonus_info, $info);
-
-                        // 添加预存款
-                        $ret = $this->_add_money_ex($_SESSION['member_id'], $value['bonus_value'], $value["bonus_sn"], '', $bonus_type['type_name']);
-                        if (0 != $ret) {
-                            Model::rollback();
-                            return joutput_error(errcode::ErrDB);
-                        }
-                    }
-                    // 更新为已领取
-                    $data = array();
-                    $data['user_id'] = $_SESSION['member_id'];
-                    $data['bonus_status'] = '1';
-                    $ret = Model()->table('user_bonus')->where(array('user_mobile' => $member[0]['member_mobile']))->update($data);
-                    if (0 == $ret) {
-                        Model::rollback();
-                        return joutput_error(errcode::ErrDB);
-                    }
-
-                    Model::commit();
-                    joutput_data(array('have_bonus' => 1, 'bonus_info' => $bonus_info));
-                } else {
-                    joutput_data(array('have_bonus' => 0, 'bonus_info' => null));
-                }
-            } else {
-                return joutput_error(errcode::ErrMobileNotBinded);
-            }
-        } else{
-            return joutput_error(errcode::ErrMobileNotBinded);
-        }
-    }
-}

+ 1 - 1
mobile/control/member_info.php

@@ -95,7 +95,7 @@ class member_infoControl extends mbMemberControl
             return self::outerr(errcode::ErrParamter);
         }
 
-        relation_helper::onUpContacts($_SESSION['member_id'],$_SESSION['member_mobile'],$_SESSION['member_nickname'],$contacts);
+        relation_helper::onUpContacts($_SESSION['member_id'],$contacts);
         return self::outsuccess(NULL);
     }
 

+ 1 - 1
mobile/control/test.php

@@ -294,7 +294,7 @@ class testControl extends mobileHomeControl
 
             $member_id = $val["member_id"];
             echo ("add member_id = {$member_id}<br/>");
-            relation_helper::init_user($member_id);
+            relation_helper::onRegister($member_id);
         }
     }
 

+ 24 - 5
test/account_helperTest.php

@@ -13,6 +13,19 @@ require_once(BASE_ROOT_PATH . '/fooder.php');
 require_once(BASE_ROOT_PATH . '/helper/bonus_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
 
+
+class bar
+{
+    public function __construct()
+    {
+        echo __FUNCTION__ . " \n";
+    }
+    public function __destruct()
+    {
+        echo __FUNCTION__ . " \n";
+    }
+}
+
 class account_helperTest extends PHPUnit_Framework_TestCase
 {
     public static function setUpBeforeClass()
@@ -49,13 +62,19 @@ class account_helperTest extends PHPUnit_Framework_TestCase
         $cond['make_type'] = 0;
 
         $mod_type->where($cond)->select();
+    }
 
+    private function xxx()
+    {
+        $bar = new bar();
+    }
 
-
-        //$count = $mod_type->getTypeCount($condition);
-
-        //('sender_id' = 36490 or 'relayer_id' = 36490) and ('make_type' = 0)
-
+    public function testDestruct()
+    {
+        echo __FUNCTION__ . " begin \n";
+        $this->xxx();
+        $bar = new bar();
+        echo __FUNCTION__ . " end \n";
     }
 
     public static function tearDownAfterClass()