yingzi hace 2 años
padre
commit
473339854b

+ 5 - 0
app/api/controller/Pub.php

@@ -269,6 +269,11 @@ class Pub extends BaseController
      * 测试
      */
     public function appTest(Request $request){
+        $money = $request->post("money",0);
+        $money = bcadd("0", $money."",2);
+        echo $money;exit;
+        
+        
         $xml = "<xml><appid><![CDATA[wx57a473fc2f83f7e5]]></appid>
 <attach><![CDATA[微信小程序支付]]></attach>
 <bank_type><![CDATA[OTHERS]]></bank_type>

+ 34 - 3
app/api/controller/User.php

@@ -15,6 +15,7 @@ namespace app\api\controller;
 use app\BaseController;
 
 use app\model\api\User as UserModel;
+use app\model\api\UserDetail as UserDetailModel;
 use app\model\api\ServiceType as ServiceTypeModel;
 use app\model\api\InfoAudit;
 use app\model\api\TypeAudit;
@@ -135,6 +136,8 @@ class User extends BaseController
             ['birthday',''],
             ['service_type',''],
             ['service_price',''],
+            ['service_min_price',''],
+            ['service_max_price',''],
             ['service_area',[]],
             ['service_project',[]],
             ['service_intro_content',''],
@@ -157,6 +160,8 @@ class User extends BaseController
         }
         //服务价格区间
         $save["service_price"] = empty($post["service_price"]) ? "" : $post["service_price"];
+        $save["service_min_price"] = empty($post["service_min_price"]) ? 0 : $post["service_min_price"];
+        $save["service_max_price"] = empty($post["service_max_price"]) ? 0 : $post["service_max_price"];
         //服务区域
         $cityModel = new CityModel();
         if(!empty($post["service_area"]) && is_array($post["service_area"])){
@@ -334,16 +339,21 @@ class User extends BaseController
         $payMoney    = $total_money;//订单需支付费用
         $payMoney    = $payMoney <= 0 ? 0 : $payMoney;
         $nowTime     = time();
+        
+        //余额支付验证
+        if($pay_type=="balance" && $payMoney > $request->user["money"]){
+            return app('json')->fail("当前余额不足");
+        }
 
         //主订单数据
         $save=[];
         $save['uid']          = $request->user['uid'];
         $save['order_id']     =  makeOrderId($request->user['uid'],"ST");
-        $save['pay_type']     = $pay_type;//目前只支持微信支付
+        $save['pay_type']     = $pay_type;//
         $save['total_money']  = $total_money;//订单总金额
         $save['all_money']    = $allMoney;//商品中金额
         $save['pay_money']    = $payMoney;//实际支付金额
-        $save['balance']      = 0;//余额支付了多少(目前没有余额支付)
+        $save['balance']      = 0;//余额支付了多少(目前不用)
         $save['status']       = $payMoney <= 0 ? 1 : 0;
         $save['pay_time']     = $payMoney <= 0 ? time() : 0;
         $save['time']         = $nowTime;
@@ -353,6 +363,11 @@ class User extends BaseController
         $save['show_template_price'] = $proData["price"];
         $save['show_template_img']   = empty($proData["imgs"]) ? "" : explode(",", $proData["imgs"])[0];
         $save['show_template_code']  = $proData["code"];
+        //余额实时支付
+        if($pay_type=="balance"){
+            $save['status']       = 1;
+            $save['pay_time']     = time();
+        }
         try{
             Db::startTrans();
             $o_id = (new ShowTemplateOrder)->insertGetId($save);
@@ -360,10 +375,26 @@ class User extends BaseController
                 return app('json')->fail("订单提交失败");
             }
             //不需要支付
-            if($save['status']==1){
+            if($payMoney<=0 && $save['status']==1){
+                //验证并绑定当前模板
+                (new UserShowTemplate)->userBindTemp($save["show_template_id"],$save['uid']);
+                Db::commit();
+                return app("json")->success(["order_id"=>$save['order_id'],"money"=>$payMoney,"status"=>$save['status']]);
+            }
+            //余额支付
+            if($pay_type=="balance"){
+                //验证并绑定当前模板
+                (new UserShowTemplate)->userBindTemp($save["show_template_id"],$save['uid']);
+                //修改用户余额
+                $res = (new UserDetailModel)->balancePay($request->user["uid"],$payMoney,"show_temp_pay",["to_id"=>$o_id]);
+                if(!$res){
+                    Db::rollback();
+                    return app('json')->fail("余额支付失败");
+                }
                 Db::commit();
                 return app("json")->success(["order_id"=>$save['order_id'],"money"=>$payMoney,"status"=>$save['status']]);
             }
+            //微信支付
             if(empty($request->user['openid'])){
                 Db::rollback();
                 return app('json')->fail('用户还未绑定微信!');

+ 2 - 11
app/lib/OrderLib.php

@@ -61,17 +61,8 @@ class OrderLib
                     return false;
                 }
                 (new ShowTemplateOrder)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
-                //验证用户是否已经购买过当前模板
-                $count = (new UserShowTemplate)->where("uid",$userData['uid'])->where("show_template_id",$tempOrderData["show_template_id"])->count();
-                if($count<=0){
-                    (new UserShowTemplate)->insert([
-                        "uid"              => $tempOrderData["uid"],
-                        "show_template_id" => $tempOrderData["show_template_id"],
-                        "start_time"       => time(),
-                        "end_time"         => time()+100*365*24*60*60,//100年
-                        "is_default"       => 0,
-                    ]);
-                }
+                //验证并绑定当前模板
+                (new UserShowTemplate)->userBindTemp($tempOrderData["show_template_id"],$tempOrderData['uid']);
                 //添加消费记录
                 if(in_array($payTradeData["pay_type"],["alipay","wxpay"])){
                     (new UserDetailModel)->consumeLog($payTradeData['uid'],$payTradeData["money"],"show_temp_buy","购买名片模板");

+ 39 - 0
app/model/api/UserDetail.php

@@ -18,9 +18,48 @@ class UserDetail extends BaseModel
         'admin_cut'       => ["code" => "后台补扣余额",     "content" => "后台补扣余额:{money}。"],
         'tx_apply'        => ['code' => "提现余额",        "content" => "您发起提现,扣除余额:{money}。"],
         'tx_refund'       => ['code' => "提现失败",        "content" => "提现失败,返还余额:{money}。"],
+        'show_temp_pay'   => ['code' => "购买皮肤模板",     "content" => "您使用余额支付,扣除余额:{money}。"],
+        
+        
         'show_temp_buy'   => ['code' => "购买皮肤模板消费",  "content" => "{mono},用户消费:{money}。"],
         
     ];
+    
+    
+    
+    /**
+     * 余额支付
+     * @param type $uid
+     * @param type $money
+     * @param type $mono
+     * @param type $parms
+     */
+    public function balancePay($uid,$money,$code,$parms=[]){
+        $money = bcadd("0", $money."",2);
+        $post['uid']      = $uid;
+        $post['into']     = floatval($money);
+        $post['code']     = $code;
+        $post['title']    = $this->config[$code]['code'];
+        $post['content']  = $this->TplParam($this->config[$code]['content'],compact('money'));
+        $post['type']     = -1;//收入为1,支出为-1
+        $post['money']    = (float)(new UserModel)->where('uid', $uid)->value('money') - floatval($money);//余额
+        $post['time']     = time();
+        $post['tx_id']    = 0;
+        $post['cash_uid'] = empty($parms["cash_uid"]) ? 0 : $parms["cash_uid"];
+        $post['p_id']     = empty($parms["p_id"])     ? 0 : $parms["p_id"];
+        $post['o_id']     = empty($parms["o_id"])     ? 0 : $parms["o_id"];
+        $post['to_id']    = empty($parms["to_id"])    ? 0 : $parms["to_id"];//模板购买id
+        $this->insert($post);
+        $bool = Db::name("user")->where('uid', $uid)->dec('money', floatval($money))->update();
+        if ($bool > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+    
+    
+    
     /**
      * 消费记录[不影响余额进出]
      * @param type $uid

+ 20 - 1
app/model/api/UserShowTemplate.php

@@ -10,5 +10,24 @@ use think\Model;
  */
 class UserShowTemplate extends Model
 {
-    //
+    /**
+     * 用户绑定名片模板
+     * @param type $id
+     * @param type $uid
+     */
+    public function userBindTemp($id,$uid){
+        $count = $this->where("uid",$uid)->where("show_template_id",$id)->count();
+        if($count<=0){
+            $r = $this->insert([
+                "uid"              => $uid,
+                "show_template_id" => $id,
+                "start_time"       => time(),
+                "end_time"         => time()+100*365*24*60*60,//100年
+                "is_default"       => 0,
+            ]);
+        }
+        return true;
+    }
+    
+    
 }