Browse Source

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

stanley-king 9 years ago
parent
commit
b9889d1a9b

+ 1 - 1
data/config/config.ini.php

@@ -3,7 +3,7 @@
 defined('InShopNC') or exit('Access Invalid!');
 
 define('USE_REMOTE_IMAGE',true);
-
+define('DEBUG_MODE',true);
 $config = array();
 
 const test_srv_host = 'http://121.43.114.153';

+ 5 - 7
data/logic/payment.logic.php

@@ -51,12 +51,9 @@ class paymentLogic
                 $data_order = array();
                 $change_type = '';
                 // 计算运费+订单总额
-                $total_amount = floatval($order_info['order_amount']) + floatval($order_info['shipping_fee']);
-                // 已经使用过红包, 不允许第二次使用
-                if (intval($order_info['pd_amount']) != 0) {
-                    DB::rollback();
-                    return -2;
-                }
+                //$total_amount = floatval($order_info['order_amount']) + floatval($order_info['shipping_fee']);
+                $total_amount = floatval($order_info['order_amount']);
+                $increment_amount = 0.0;    // 预存款使用
                 if ((floatval($pd_amount) + floatval($order_info['pd_amount'])) > floatval($total_amount))  {
                     // 预存款增量, 当二次付款并使用红包的时候, 需要进行二次计算预存款
                     $increment_amount = floatval($total_amount) - floatval($order_info['pd_amount']);
@@ -64,6 +61,7 @@ class paymentLogic
                     $pd_amount = floatval($pd_amount) - floatval($increment_amount);
                     $change_type = 'order_pay';
                 } else {    // 余额小于等于订单金额的情况, $pd_amount不能等于0
+                    $increment_amount = floatval($pd_amount);
                     $order_info['pd_amount'] += floatval($pd_amount);
                     $pd_amount = 0.0;
                     $change_type = 'order_freeze';
@@ -72,7 +70,7 @@ class paymentLogic
                 $data_pd = array();
                 $data_pd['member_id'] = $member_id;
                 $data_pd['member_name'] = $member_info['member_name'];
-                $data_pd['amount'] = $order_info['pd_amount'];
+                $data_pd['amount'] = $increment_amount;
                 $data_pd['order_sn'] = $order_info['order_sn'];
                 //预存款立即支付,订单支付完成
                 $ret = $model_pd->changePd($change_type, $data_pd);

+ 6 - 6
data/model/cart.model.php

@@ -44,7 +44,7 @@ class cartModel extends Model
      */
     public function checkCart($condition = array())
     {
-        return $this->where($condition)->find();
+        return $this->table('cart')->where($condition)->find();
     }
 
     /**
@@ -54,7 +54,7 @@ class cartModel extends Model
      */
     public function getCartInfo($condition = array(), $field = '*')
     {
-        return $this->field($field)->where($condition)->find();
+        return $this->table('cart')->field($field)->where($condition)->find();
     }
 
     /**
@@ -103,7 +103,7 @@ class cartModel extends Model
             } else {
                 // 更新数量
                 $data['goods_num'] = intval($check_cart['goods_num']) + $quantity;
-                $ret = $this->where($condition)->update($data);
+                $ret = $this->table('cart')->where($condition)->update($data);
                 return true;
             }
         }
@@ -157,7 +157,7 @@ class cartModel extends Model
      */
     public function editCart($data, $condition)
     {
-        $result = $this->where($condition)->update($data);
+        $result = $this->table('cart')->where($condition)->update($data);
         if ($result) {
             $this->getCartNum('db', array('buyer_id' => $condition['buyer_id']));
         }
@@ -200,7 +200,7 @@ class cartModel extends Model
     public function listCart($type, $condition = array(), $limit = '')
     {
         if ($type == 'db') {
-            $cart_list = $this->where($condition)->limit($limit)->select();
+            $cart_list = $this->table('cart')->where($condition)->limit($limit)->select();
         } elseif ($type == 'cookie') {
             //去除斜杠
             $cart_str = get_magic_quotes_gpc() ? stripslashes(cookie('cart')) : cookie('cart');
@@ -229,7 +229,7 @@ class cartModel extends Model
     public function delCart($type, $condition = array())
     {
         if ($type == 'db') {
-            $result = $this->where($condition)->delete();
+            $result = $this->table('cart')->where($condition)->delete();
         } elseif ($type == 'cookie') {
             $cart_str = get_magic_quotes_gpc() ? stripslashes(cookie('cart')) : cookie('cart');
             $cart_str = base64_decode(decrypt($cart_str));

+ 23 - 5
data/model/member.model.php

@@ -781,16 +781,19 @@ class memberModel extends Model
         $member_id = intval($member_id);
         $member_info = $this->getMemberInfo(array('member_id'=>$member_id));
 
+        $result['use_list'] = array();
+        $result['bonus_list'] = array();
+
         if (!is_array($member_info) || count($member_info)<=0){
             return array();  // 用户信息不对
         }
 
-        // 预存款订单查询条件
-        $condition = 'lg_type in(\'order_pay\') and (lg_freeze_amount<>0.0 or lg_av_amount<0.0) and lg_member_id=\'' . $member_info['member_id'] . '\'';
+        // 预存款订单查询条件(支付, 红包列表)
+        $condition = 'lg_type in(\'order_pay\', \'bonus_add_money\', \'sys_add_money\') and lg_member_id=\'' . $member_info['member_id'] . '\'';
         
         $model_pd = Model('predeposit');
         $tmp_log_list = array();
-        $pd_log_list = $model_pd->getPdLogList($condition,'','*','lg_id asc');
+        $pd_log_list = $model_pd->getPdLogList($condition,'','*','lg_id desc');
 
         // 订单数据查询条件(只查询已完成订单), 生成订单查询语句, 在详细查询阶段进行批量查询
         $condition_order = "refund_state=0 and delete_state=0 and order_sn in(";
@@ -810,8 +813,22 @@ class memberModel extends Model
             } else {
                 $condition_order .=  "," . '\''. $order_id .'\'';
             }
+            // 如果是红包, 放到红包列表
+            if (strcmp($value['lg_type'], 'bonus_add_money') == 0 ||
+                strcmp($value['lg_type'], 'sys_add_money') == 0) {
+                $bonus['bonus_sn'] = $order_id;
+                $bonus['type_name'] = strcmp($value['lg_type'], 'sys_add_money') == 0 ? "系统红包" : $value['lg_admin_name'];  //红包命红包系统的lg_admin_name存储红包类型名
+                $bonus['bonus_value'] = $value['lg_av_amount'];
+                $bonus['get_time'] = $value['lg_add_time'];
+                array_push($result['bonus_list'], $bonus);
+                continue;
+            }
             // 获取订单数据
-            $tmp_log_list[$order_id] = $use_list;
+            if (isset($tmp_log_list[$order_id]) == false) {
+               $tmp_log_list[$order_id] = $use_list;
+            } else {
+               $tmp_log_list[$order_id]['order_value'] += $use_list['order_value'];
+            }
         }
         
         // 查询订单详细数据
@@ -845,6 +862,7 @@ class memberModel extends Model
             array_push($pd_result_list, $result_list);
         }
 
-        return $pd_result_list;
+        $result['use_list'] = $pd_result_list;
+        return $result;
     }
 }

+ 5 - 3
mobile/control/app_pay.php

@@ -59,7 +59,7 @@ class app_payControl extends mbMemberControl
         Log::record($this->toString($result['data']), Log::DEBUG);
         // 判断是否需要支付
         $output = array();
-        if (intval($result['data']['api_pay_amount']) > 0)
+        if (floatval($result['data']['api_pay_amount']) > 0.001 )
         {
             $output['need_pay'] = 1;
             $ret = $this->api_pay($result['data'], $payment);
@@ -138,7 +138,7 @@ class app_payControl extends mbMemberControl
             $ret['out_trade_no'] = $pay_info['order_list'][0]['pay_sn'];   // 商户网站唯一订单号
             $ret['subject'] = $subject;                                     // 商品名称
             $ret['body'] = '商品详情';                                       // 商品详情
-            $ret['total_fee'] = $pay_info['order_list'][0]['order_amount']; // 商品金额
+            $ret['total_fee'] = floatval($pay_info['order_list'][0]['order_amount']) - floatval($pay_info['order_list'][0]['pd_amount']); // 商品金额
             $ret['notify_url'] = self::ali_notifyurl;                       // 服务器异步通知页面路径
             $ret['service'] = 'mobile.securitypay.pay';                     // 服务器接口名称,固定值
             $ret['payment_type'] = '1';                                     // 支付类型,固定值
@@ -259,7 +259,9 @@ class app_payControl extends mbMemberControl
         $input = new WxPayUnifiedOrder();
         $input->SetBody($body); //商品或支付单简要描述
         $input->SetAttach($paysn); //附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
-        $input->SetOut_trade_no($paysn);//商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
+        $model_pd = Model('predeposit');
+        $order_sn = $model_pd->makeSn();    // 给微信用的每次重新生成的商户订单SN, 避免二次支付, 数额修改导致支付失败
+        $input->SetOut_trade_no($order_sn);//商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
 
         $input->SetTotal_fee("{$fee}");//订单总金额,单位为分,详见支付金额
         $input->SetTime_start(date("YmdHis")); //订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则

+ 5 - 29
mobile/control/bonus.php

@@ -56,31 +56,7 @@ class bonusControl extends mbMemberControl
             $ret_array = array();
 
             // 获取使用列表
-            $ret_array['use_list'] = $obj_member->getPdOrderList($condition['user_id']);
-            // 组装红包列表
-            $ret_array['bonus_list'] = array();
-            $bonus_list = array();
-            foreach ($ret as $value) {
-                $bonus_type = $this->getBonusType(strval($value['bonus_type_id']));
-
-                if (!empty($bonus_type)) {
-                    $result['type_name'] = $bonus_type['type_name'];
-                    $result['use_start_date'] = $bonus_type['use_start_date'];
-                    $result['use_end_date'] = $bonus_type['use_end_date'];
-                }
-
-                $result['bonus_sn'] = $value['bonus_sn'];
-                //获取用户预存款(之前为获取红包接口)
-                $result['bonus_value'] = $value['bonus_value'];
-                $result['get_time'] = $value['get_time'];
-                $result['left_time'] = $result['use_end_date'] - time();
-
-                //$total_value += intval($value[bonus_value]);
-                //array_push($ret_array, $result);
-                // 红包列表
-                array_push($bonus_list, $result);
-            }
-            $ret_array['bonus_list'] = $bonus_list;
+            $ret_array = $obj_member->getPdOrderList($condition['user_id']);
             joutput_data(array('total_value' => $total_value,
                 'freeze_value' => $freeze_value,
                 "ret_array" => $ret_array));
@@ -90,7 +66,7 @@ class bonusControl extends mbMemberControl
     /**
      * 添加余额
      */
-    private function _add_money_ex($member_id, $pointsnum, $order_sn, $pointsdesc)
+    private function _add_money_ex($member_id, $pointsnum, $order_sn, $pointsdesc, $bonusname)
     {
 
         $obj_validate = new Validate();
@@ -127,7 +103,7 @@ class bonusControl extends mbMemberControl
             $data['member_name'] = $member_info['member_name'];
             $data['amount'] = $money;
             $data['order_sn'] = $order_sn;
-            $data['admin_name'] = $admininfo['name'];
+            $data['admin_name'] = $bonusname;
             $data['pdr_sn'] = $order_sn;
             $data['lg_desc'] = $memo;
             $model_pd->changePd("bonus_add_money", $data);
@@ -159,8 +135,8 @@ class bonusControl extends mbMemberControl
                 if (!empty($user_bonus)) {
 
                     $bonus_info = array();
+                    $bonus_type = $this->getBonusType(strval($value['bonus_type_id']));
                     foreach ($user_bonus as $value) {
-                        $bonus_type = $this->getBonusType(strval($value['bonus_type_id']));
                         $info = [];
                         $info['sender'] = $bonus_type['sender'];
                         $info['type_name'] = $bonus_type['type_name'];
@@ -174,7 +150,7 @@ class bonusControl extends mbMemberControl
                     Model::beginTransaction();
 
                     // 添加预存款
-                    $ret = $this->_add_money_ex($data['user_id'], $user_bonus[0]['bonus_value'], $user_bonus[0]["bonus_sn"]);
+                    $ret = $this->_add_money_ex($data['user_id'], $user_bonus[0]['bonus_value'], $user_bonus[0]["bonus_sn"],  $bonus_type['type_name']);
                     if (0 != $ret) {
                         Model::rollback();
                         return joutput_error(errcode::ErrDB);

+ 3 - 1
mobile/control/member_info.php

@@ -26,7 +26,7 @@ class member_infoControl extends mbMemberControl
 
         $member_id = $this->member_info['member_id'];
         $model = Model('member');
-        $member_info = $model->getMemberInfoByID($member_id, 'member_name,member_sex');
+        $member_info = $model->getMemberInfoByID($member_id, 'member_mobile,member_name,member_sex');
 
         $ret = array();
         if (!empty($member_info)) {
@@ -39,6 +39,8 @@ class member_infoControl extends mbMemberControl
             } else {
                 $ret['member_sex'] = '0';
             }
+
+            $ret['member_mobile'] = $member_info['member_mobile'];
         }
         joutput_data($ret);
     }

+ 6 - 5
mobile/control/member_login.php

@@ -195,8 +195,7 @@ class member_loginControl extends mbMemberControl
         }
 
         // 判断是否已经注册
-        $model = Model('member');
-        $ret = $model->where(array('member_mobile' => $mobile))->find();
+        $ret = Model()->table('member')->where(array('member_mobile' => $mobile))->find();
         if (empty($ret)) {
 //            // 添加注册
 //            $member_info = array();
@@ -205,12 +204,16 @@ class member_loginControl extends mbMemberControl
 //            if (!$member_id) {
 //                return joutput_error(errcode::ErrDB);
 //            }
+
+            Log::record(">>>>>member_mobile={$mobile}<<<<<<");
+
             return joutput_error(errcode::ErrMemberNotExist);
         } else {
             $member_id = $ret['member_id'];
         }
 
         // 判断是否处理
+        $model = Model('member');
         $ret = $model->bindwx($member_id, $wx_openid, serialize($wx_info));
         if ($ret != 0) {
             return joutput_error(errcode::ErrDB);
@@ -290,9 +293,7 @@ class member_loginControl extends mbMemberControl
         $condition = array();
         $condition['token'] = $token;
         $model = Model('mb_user_token');
-        $model->delMbUserToken($token);
-        $key = func::gen_token_key($token);
-        dcache($key);
+        $model->del_token($token);
         joutput_data(null);
     }
 

+ 16 - 19
mobile/util/errcode.php

@@ -11,7 +11,6 @@ class errcode extends SplEnum
     const ErrApptype = 10000;
     const ErrParamter = 10001;
     const ErrLogin = 10002;
-    const ErrGenuser = 10003;
     const ErrUsertype = 10004;
     const ErrTokenExpire = 10005;
     const ErrSmscodeExpire = 10006;
@@ -58,39 +57,37 @@ class errcode extends SplEnum
     {
         switch ($code) {
             case errcode::Success:
-                return 'Success';
+                return '成功';
             case errcode::ErrProtocolDisabled:
-                return 'ErrProtocolDisabled';
+                return '协议未启用';
             case errcode::ErrApptype :
-                return 'ErrApptype';
+                return '类型错误';
             case errcode::ErrLogin :
-                return 'ErrLogin error password or phone';
-            case errcode::ErrGenuser :
-                return 'ErrGenuser';
+                return '用户名或密码错误';
             case errcode::ErrUsertype :
-                return 'ErrUsertype';
+                return '用户类型错误';
             case errcode::ErrTokenExpire :
-                return 'ErrTokenExpire';
+                return 'token过期';
             case errcode::ErrSmscodeExpire :
-                return 'ErrSmscodeExpire';
+                return '验证码过期';
             case errcode::ErrSmscode:
-                return 'ErrSmscode';
+                return '验证码错误';
             case errcode::ErrIDbinded:
-                return 'ErrIDbinded id has been binded.';
+                return '用户已经绑定';
             case errcode::ErrMobileNotBinded:
-                return 'mobile has been binded.';
+                return '手机号尚未绑定';
             case errcode::ErrSpecial:
                 return 'ErrSpecial.';
             case errcode::ErrPayment:
-                return 'ErrPayment.';
+                return '支付错误.';
             case errcode::ErrGoodsNotExist:
-                return 'ErrGoodsNotExist.';
+                return '商品库存不足或已下架.';
             case errcode::ErrMemberNotExist:
                 return '用户不存在.';
             case errcode::ErrInputParam:
                 return '输入参数错误';
             case errcode::ErrVerifyCode:
-                return 'error verify code';
+                return '验证码错误';
             case errcode::ErrMemberExist:
                 return '用户已经存在';
             case errcode::ErrPasswd:
@@ -116,11 +113,11 @@ class errcode extends SplEnum
                 return '添加购物车失败';
 
             case errcode::ErrDB :
-                return 'ErrorDB';
+                return '系统错误';
             case errcode::ErrSms :
-                return 'ErrSms,Send sms error.';
+                return '验证码发送错误';
             default :
-                return 'Unknown Error.';
+                return '系统错误.';
         }
     }
 }

+ 6 - 5
mobile/wxnotify.php

@@ -60,12 +60,13 @@ try
     wxLog::DEBUG("result_code= {$ret_code}");
     if($ret_code == 'SUCCESS')
     {
-        $out_trade_no = $result['out_trade_no'];
+        $out_trade_no = $result['out_trade_no'];    //  给微信用的随机商户订单SN
+        $attach = $result['attach'];    // 真正的我们平台的订单SN号
         $transaction_id=$result['transaction_id'];
-        wxLog::DEBUG("out_trade_no={$out_trade_no} and transaction_id = {$transaction_id}");
-        Log::record("out_trade_no={$out_trade_no} and transaction_id = {$transaction_id}",Log::DEBUG);
+        wxLog::DEBUG("out_trade_no={$out_trade_no} and attach={$attach} and transaction_id = {$transaction_id}");
+        Log::record("out_trade_no={$out_trade_no} and attach={$attach} and transaction_id = {$transaction_id}",Log::DEBUG);
 
-        $cb_info = app_payControl::update_order($out_trade_no,$transaction_id,'wxpay');
+        $cb_info = app_payControl::update_order($attach,$transaction_id,'wxpay');
 
         if($cb_info['state'] == false) {
             wxLog::ERROR('wxpay error 1.');
@@ -74,7 +75,7 @@ try
             wxLog::DEBUG('wxpay success.');
             Log::record('wxpay success.',Log::DEBUG);
             $logic_delivery = Logic('delivery');
-            $ret = $logic_delivery->putOrder($out_trade_no, $transaction_id);
+            $ret = $logic_delivery->putOrder($attach, $transaction_id);
         }
 
         $ret_wx['return_code'] = 'SUCCESS';