stanley-king 8 år sedan
förälder
incheckning
7f0d723310

+ 50 - 13
helper/fcode/send_manager.php

@@ -20,7 +20,8 @@ class send_manager
 {
     public static $stInstance;
     private $mGoodsBlock;
-    private $mAmountGoods;
+    private $mConfirmGoods; //确认收获后赠送的F码商品。
+    private $mPayGoods;     //支付后送的F码商品。
 
     private function __construct()
     {
@@ -41,11 +42,11 @@ class send_manager
 
     private function init()
     {
-        $this->mAmountGoods = [];
+        $this->mConfirmGoods = [];
         $this->mGoodsBlock  = [];
 
         global $config;
-        $fcodes_id = $config['paysuccess_fcodes']['fcodes_id'];
+        $fcodes_id = $config['autosend_fcodes']['fcodes_specialid'];
         $blocks = special_manager::instance()->special($fcodes_id,$goods_ids);
 
         foreach ($blocks as $block)
@@ -66,28 +67,66 @@ class send_manager
             }
         }
 
-        krsort($this->mAmountGoods);
+        krsort($this->mConfirmGoods);
     }
 
     private function add($amount,$item,$block)
     {
+        global $config;
+        $pay_gids = $config['autosend_fcodes']['pay_goodsids'];
+
         $goods_id = intval($item['data']);
         if($goods_id <= 0) return;
 
-        if(array_key_exists($amount,$this->mAmountGoods) == false) {
-            $this->mAmountGoods[$amount] = [];
+        if(!empty($pay_gids) && is_array($pay_gids) && in_array($goods_id,$pay_gids))
+        {
+            if(array_key_exists($amount,$this->mConfirmGoods) == false) {
+                $this->mPayGoods[$amount] = [];
+            }
+            $this->mPayGoods[$amount][] = $goods_id;
+        }
+        else
+        {
+            if(array_key_exists($amount,$this->mConfirmGoods) == false) {
+                $this->mConfirmGoods[$amount] = [];
+            }
+            $this->mConfirmGoods[$amount][] = $goods_id;
         }
-        $this->mAmountGoods[$amount][] = $goods_id;
         $this->mGoodsBlock[$goods_id] = $block;
     }
 
-    public function fetch($amount)
+    public function fetch_pay($amount)
     {
         $amount = intval($amount);
         if($amount <= 0) return false;
 
         $gids = [];
-        foreach ($this->mAmountGoods as $key => $goods_ids)
+        foreach ($this->mPayGoods as $key => $goods_ids)
+        {
+            if(empty($goods_ids)) continue;
+
+            if($key <= $amount)
+            {
+                foreach ($goods_ids as $gid) {
+                    $gids[] = $gid;
+                }
+            }
+        }
+        if(empty($gids)) {
+            return false;
+        }
+
+        $result = $this->validate_one($gids);
+        return $result;
+    }
+
+    public function fetch_confirm($amount)
+    {
+        $amount = intval($amount);
+        if($amount <= 0) return false;
+
+        $gids = [];
+        foreach ($this->mConfirmGoods as $key => $goods_ids)
         {
             if(empty($goods_ids)) continue;
 
@@ -118,7 +157,6 @@ class send_manager
             $all_goods[$gid] = $goods;
         }
 
-
         foreach ($gids as $gid)
         {
             if(array_key_exists($gid,$all_goods))
@@ -128,10 +166,9 @@ class send_manager
 
                 $block = $this->mGoodsBlock[$gid];
                 $batch_code = $block['items'][0]['title'];
-
                 $oper = new operator($commonid,$batch_code);
-                //todo 测试完成之后需要关闭掉
-                //if($oper->grabed()) continue;
+
+                if($oper->grabed()) continue;
                 $fcode = $oper->grab();
                 if($fcode != false) {
                     return ['fcode' => $fcode,'banner' => $block];

+ 31 - 0
helper/login/ilogin.php

@@ -11,6 +11,9 @@ namespace login;
 use account_helper;
 use session;
 use session_helper;
+use member_info;
+
+require_once (BASE_ROOT_PATH . '/helper/model/member_info.php');
 
 abstract class ILogin
 {
@@ -64,9 +67,37 @@ abstract class ILogin
 
         $update['member_nickname'] = $user_info['nickname'];
         $update['member_wxunionid'] = $user_info['unionid'];
+        $update['member_wxopenid'] = $user_info['openid'];
         $update['member_avatar'] = $user_info['headimgurl'];
         $update['member_sex'] = intval($user_info['sex']);
         $ret = $mod_member->editMember(array('member_id' => $this->mMemberId), $update);
         return $ret;
     }
+
+    public function unbind()
+    {
+        if($this->mMemberId <= 0) return false;
+        $mod_member = Model('member');
+
+        $tmp_info = $this->mMemberInfo;
+        $tmp_info['member_nickname'] = '';
+        $tmp_info['member_avatar'] = '';
+        $tmp_info['member_sex'] = '';
+
+        $member = new member_info($tmp_info);
+        $update['member_nickname']   = $member->nickname();
+        $update['member_wxunionid']  = '';
+        $update['member_wxopenid']   = '';
+        $update['member_avatar']     = $member->avatar();
+        $update['member_sex']        = $member->sex();
+
+        $this->mMemberInfo['member_nickname'] = $member->nickname();
+        $this->mMemberInfo['member_wxunionid']  = '';
+        $this->mMemberInfo['member_wxopenid']   = '';
+        $this->mMemberInfo['member_avatar'] = $member->avatar();
+        $this->mMemberInfo['member_sex'] = $member->sex();
+
+        $ret = $mod_member->editMember(array('member_id' => $this->mMemberId), $update);
+        return $ret;
+    }
 }

+ 1 - 0
helper/login/mobile_log.php

@@ -25,6 +25,7 @@ class mobile_log extends ILogin
         }
         else {
             $this->mMemberId = intval($minfo['member_id']);
+            $this->mMemberInfo = $minfo;
             return true;
         }
     }

+ 1 - 0
helper/login/openid_log.php

@@ -25,6 +25,7 @@ class openid_log extends ILogin
         }
         else {
             $this->mMemberId = intval($minfo['member_id']);
+            $this->mMemberInfo =$minfo;
             return true;
         }
     }

+ 1 - 0
helper/login/unionid_log.php

@@ -26,6 +26,7 @@ class unionid_log extends ILogin
         }
         else {
             $this->mMemberId = intval($minfo['member_id']);
+            $this->mMemberInfo = $minfo;
             return true;
         }
     }

+ 1 - 0
helper/login/userinfo_log.php

@@ -29,6 +29,7 @@ class userinfo_log extends ILogin
         }
         else {
             $this->mMemberId = intval($minfo['member_id']);
+            $this->mMemberInfo = $minfo;
             return true;
         }
     }

+ 4 - 3
helper/pay_helper.php

@@ -108,17 +108,18 @@ class pay_helper
         }
     }
 
-    public static function confirm($pay_sn,&$err)
+    public static function confirm($pay_sn,&$err,&$amount)
     {
         $logic_payment = Logic('payment');
         $result = $logic_payment->getRealOrderInfo($pay_sn);
+        $amount = $result['data']['api_pay_amount'];
 
-        if (intval($result['data']['api_pay_state']) != 0) {
+        if (intval($result['data']['api_pay_state']) == 0) {
             $err = ['code'=> errcode::ErrOrder,'msg' => '此订单未完成支付.'];
             return false;
         }
         else {
-            return $result['data']['api_pay_amount'];
+            return true;
         }
     }
 

+ 4 - 0
helper/session_helper.php

@@ -42,6 +42,10 @@ class session_helper
         }
     }
 
+    static public function memberid() {
+        return $_SESSION['member_id'];
+    }
+
     static public function nickname()
     {
         if(isset($_SESSION['member_nickname']) && !empty($_SESSION['member_nickname'])) {

+ 3 - 1
mobile/control/cart.php

@@ -178,7 +178,9 @@ class cartControl extends mobileControl
     {
         $mod_fcode = Model('goods_fcode');
         //,'usable_time' => array('elt',time())
-        $items = $mod_fcode->getFcodeList(array('mobile' => session_helper::cur_mobile(),'fc_state' => 0),
+        $items = $mod_fcode->getFcodeList(array('mobile' => session_helper::cur_mobile(),
+            'usable_time' => array('gt',time()),
+            'fc_state' => 0),
             '*','fc_state asc,fc_id asc',$this->page_size());
         $page_count = $mod_fcode->gettotalpage();
 

+ 8 - 0
mobile/control/index.php

@@ -75,6 +75,14 @@ class indexControl extends specialControl
         if(empty($member_id)) {
             return self::outerr(errcode::ErrParamter);
         }
+
+        if(session_helper::need_wechat_author()) {
+            $author = new thrid_author\wxauthor();
+            $url = BASE_SITE_URL . "/mobile/index.php?act=index&op=member&member_id={$member_id}";
+            $author->enter($url);
+            return;
+        }
+
         $member_id = urldecode($member_id);
         $member_id = intval(util::decrypt_data($member_id));
 

+ 22 - 11
mobile/control/login.php

@@ -62,23 +62,34 @@ class loginControl extends mobileHomeControl
             return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
         }
 
-        $loginner = new \login\userinfo_log($user_info);
-        if($loginner->ismember()) {
-            $loginner->bind($user_info);
-            $loginner->login();
+        if(session_helper::logined())
+        {
+            $loginner = new \login\userinfo_log($user_info);
+            if($loginner->ismember())
+            {
+                if(session_helper::memberid() == $loginner->memberid()) {
+                    return self::outsuccess(array('ismember' => true,'isauthor' => true,
+                        'member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
+                } else {
+                    $loginner->unbind();
+                }
+            }
+
+            $id_loginer = new login\memberid_log(session_helper::memberid());
+            $id_loginer->bind($user_info);
+            $id_loginer->login();
             return self::outsuccess(array('ismember' => true,'isauthor' => true,
                 'member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
         }
         else
         {
-            if(session_helper::logined())
-            {
-                $member_id = intval($_SESSION['member_id']);
-                $id_loginer = new login\memberid_log($member_id);
-                $id_loginer->bind($user_info);
-                $id_loginer->login();
+            $loginner = new \login\userinfo_log($user_info);
+            if($loginner->ismember()) {
+                $loginner->bind($user_info);
+                $loginner->login();
                 return self::outsuccess(array('ismember' => true,'isauthor' => true,
-                    'member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));            }
+                    'member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
+            }
             else
             {
                 $_SESSION['wx_author']['user_info'] = $user_info;

+ 2 - 2
mobile/control/member_bonus.php

@@ -504,7 +504,7 @@ class member_bonusControl extends mbMemberControl
                     if($max_share < $share_num) {
                         $result['max_share']['avatar'] = $avatar;
                         $result['max_share']['count']  = $share_num;
-                        $result['max_share']['total_amount'] = $type->getTotal_amount();
+                        $result['max_share']['total_amount'] = $item['bonus_value'];//$type->getTotal_amount();
                         $result['max_share']['rate'] = $type->bonus_rate();
                         $result['max_share']['type_sn'] = $type->getType_sn();
                         $max_share = $share_num;
@@ -527,7 +527,7 @@ class member_bonusControl extends mbMemberControl
             if(!empty($result['max_share'])) {
                 $info = $result['max_share'];
                 $count = intval($info['count']);
-                $title = "恭喜获得{$count}个红包";
+                $title = "恭喜获得{$count}个可分享红包";
                 $sub_title = "分享给小伙伴,大家一起抢。";
                 $btn_type  = 'send';
                 $btn_title = '发红包';

+ 4 - 3
mobile/control/member_buy.php

@@ -129,13 +129,14 @@ class member_buyControl extends mbMemberControl
         if(empty($pay_sn)) {
             return self::outerr(errcode::ErrParamter,"支付号或者支付类型错误");
         }
-        $out_put = pay_helper::confirm($pay_sn,$err);
-        if($out_put == false) {
+        $paied = pay_helper::confirm($pay_sn,$err,$amount);
+        if($paied == false) {
             return self::outerr($err['code'],$err['msg']);
         }
         else
         {
-            $result = fcode\send_manager::instance()->fetch($out_put);
+            $amount = 50;
+            $result = fcode\send_manager::instance()->fetch_pay($amount);
             if($result != false)
             {
                 $fcode = new user_session\fcode();

+ 1 - 1
mobile/control/member_fcode.php

@@ -24,7 +24,7 @@ class member_fcodeControl extends mbMemberControl
     public function listOp()
     {
         $mod_fcode = Model('goods_fcode');
-        $items = $mod_fcode->getFcodeList(array('mobile' => session_helper::cur_mobile()),'*','fc_state asc,fc_id asc',$this->page_size());
+        $items = $mod_fcode->getFcodeList(array('mobile' => session_helper::cur_mobile()),'*','fc_state asc,usable_time desc,fc_id asc',$this->page_size());
         $page_count = $mod_fcode->gettotalpage();
 
         if($this->page_no() == 1)

+ 13 - 14
mobile/control/member_index.php

@@ -12,27 +12,26 @@
 
 defined('InShopNC') or exit('Access Invalid!');
 
-class member_indexControl extends mbMemberControl
-{
+require_once (BASE_ROOT_PATH . '/mobile/member_relation.php');
+
 
+class member_indexControl extends member_relationControl
+{
     public function __construct()
     {
         parent::__construct();
     }
 
-    /**
-     * 我的商城
-     */
     public function indexOp()
     {
-        $member_info = array();
-        $member_info['user_name'] = $_SESSION['member_name'];
-        $member_info['avator'] = getMemberAvatarForID($_SESSION['member_id']);
-        $member_info['point'] = $_SESSION['member_points'];
-        $member_info['predepoit'] = $_SESSION['available_predeposit'];
-        //v3-b11 显示充值卡
-        $member_info['available_rc_balance'] = $_SESSION['available_rc_balance'];
-
-        output_data(array('member_info' => $member_info));
+//        $member_info = array();
+//        $member_info['user_name'] = $_SESSION['member_name'];
+//        $member_info['avator'] = getMemberAvatarForID($_SESSION['member_id']);
+//        $member_info['point'] = $_SESSION['member_points'];
+//        $member_info['predepoit'] = $_SESSION['available_predeposit'];
+//        //v3-b11 显示充值卡
+//        $member_info['available_rc_balance'] = $_SESSION['available_rc_balance'];
+//
+//        output_data(array('member_info' => $member_info));
     }
 }

+ 25 - 4
mobile/templates/default/member/index.php

@@ -122,9 +122,9 @@
         </div>
     </div>
     <div class="group">
-        <div class="cell">
-            <span class="cell_label">地区</span><span class="cell_content">广东 中山</span>
-        </div>
+<!--        <div class="cell">-->
+<!--            <span class="cell_label">地区</span><span class="cell_content">广东 中山</span>-->
+<!--        </div>-->
         <div class="cell">
             <span class="cell_label">个性签名</span><span class="cell_content">。。。</span>
         </div>
@@ -133,8 +133,29 @@
         </div>
     </div>
     <div class="submit">
-        <button type="button" class="add_friend_btn">添加到我的好友</button>
+        <button type="button" id="btn_add_friend" class="add_friend_btn">添加到我的好友</button>
     </div>
 </div>
+
+<script>
+    var url = '<?php
+                    $minfo = $output['info'];
+                    $member_id = $minfo->member_id();
+                    $vurl = BASE_SITE_URL . "/mobile/index.php?act=member_index&op=subscribe&userid={$member_id}";
+                    echo $vurl;
+                ?>';
+
+    window.onload = function ()
+    {
+        $("btn_add_friend").click(function()
+        {
+            $.getJSON(url,function(result){
+                $.each(result, function(i, field){
+                    $("div").append(field + " ");
+                });
+            });
+        });
+    }
+</script>
 </body>
 </html>

+ 1 - 1
test/TestFcode.php

@@ -32,7 +32,7 @@ class TestFcode extends PHPUnit_Framework_TestCase
     public function testSendManager()
     {
         $manager = fcode\send_manager::instance();
-        $manager->fetch(600,1);
+        $manager->fetch_confirm(600,1);
     }
 
     public function testGenerate()