sugar1569 7 лет назад
Родитель
Сommit
608494ff3d
1 измененных файлов с 150 добавлено и 0 удалено
  1. 150 0
      application/wap/model/user/User.php

+ 150 - 0
application/wap/model/user/User.php

@@ -0,0 +1,150 @@
+<?php
+/**
+ *
+ * @author: xaboy<365615158@qq.com>
+ * @day: 2017/12/21
+ */
+
+namespace app\wap\model\user;
+
+
+use basic\ModelBasic;
+use service\SystemConfigService;
+use think\Request;
+use think\response\Redirect;
+use think\Session;
+use think\Url;
+use traits\ModelTrait;
+
+class User extends ModelBasic
+{
+    use ModelTrait;
+
+    protected $insert = ['add_time','add_ip','last_time','last_ip'];
+
+    protected function setAddTimeAttr($value)
+    {
+        return time();
+    }
+
+    protected function setAddIpAttr($value)
+    {
+        return Request::instance()->ip();
+    }
+
+    protected function setLastTimeAttr($value)
+    {
+        return time();
+    }
+
+    protected function setLastIpAttr($value)
+    {
+        return Request::instance()->ip();
+    }
+
+    public static function setWechatUser($wechatUser,$spread_uid = 0)
+    {
+        return self::set([
+            'account'=>'wx'.$wechatUser['uid'].time(),
+            'pwd'=>md5(123456),
+            'nickname'=>$wechatUser['nickname']?:'',
+            'avatar'=>$wechatUser['headimgurl']?:'',
+            'spread_uid'=>$spread_uid,
+            'uid'=>$wechatUser['uid'],
+            'user_type'=>'wechat'
+        ]);
+
+    }
+
+    public static function updateWechatUser($wechatUser,$uid)
+    {
+        return self::edit([
+            'nickname'=>$wechatUser['nickname']?:'',
+            'avatar'=>$wechatUser['headimgurl']?:''
+        ],$uid,'uid');
+    }
+
+    public static function setSpreadUid($uid,$spreadUid)
+    {
+        return self::where('uid',$uid)->update(['spread_uid'=>$spreadUid]);
+    }
+
+
+    public static function getUserInfo($uid)
+    {
+        $userInfo = self::where('uid',$uid)->find();
+        if(!$userInfo) exception('读取用户信息失败!');
+        return $userInfo->toArray();
+    }
+
+    /**
+     * 获得当前登陆用户UID
+     * @return int $uid
+     */
+    public static function getActiveUid()
+    {
+        $uid = null;
+        if(Session::has('loginUid','wap')) $uid = Session::get('loginUid','wap');
+        if(!$uid && Session::has('loginOpenid','wap') && ($openid = Session::get('loginOpenid','wap')))
+            $uid = WechatUser::openidToUid($openid);
+        if(!$uid) exit(exception('请登陆!'));
+        return $uid;
+    }
+
+    /** //TODO 一级返佣
+     * @param $orderInfo
+     * @return bool
+     */
+    public static function backOrderBrokerage($orderInfo)
+    {
+        $userInfo = User::getUserInfo($orderInfo['uid']);
+        if(!$userInfo || !$userInfo['spread_uid']) return true;
+        $storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ? : 1;//获取后台分销类型
+        if($storeBrokerageStatu == 1){
+            if(!User::be(['uid'=>$userInfo['spread_uid'],'is_promoter'=>1])) return true;
+        }
+        $brokerageRatio = (SystemConfigService::get('store_brokerage_ratio') ?: 0)/100;
+        if($brokerageRatio <= 0) return true;
+        $cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价
+        if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回
+        $brokeragePrice = bcmul(bcsub($orderInfo['pay_price'],$cost,2),$brokerageRatio,2);
+        if($brokeragePrice <= 0) return true;
+        $mark = $userInfo['nickname'].'成功消费'.floatval($orderInfo['pay_price']).'元,奖励推广佣金'.floatval($brokeragePrice);
+        self::beginTrans();
+        $res1 = UserBill::income('获得推广佣金',$userInfo['spread_uid'],'now_money','brokerage',$brokeragePrice,$orderInfo['id'],0,$mark);
+        $res2 = self::bcInc($userInfo['spread_uid'],'now_money',$brokeragePrice,'uid');
+        $res = $res1 && $res2;
+        self::checkTrans($res);
+        if($res) self::backOrderBrokerageTwo($orderInfo);
+        return $res;
+    }
+
+    /**
+     * //TODO 二级推广
+     * @param $orderInfo
+     * @return bool
+     */
+    public static function backOrderBrokerageTwo($orderInfo){
+        $userInfo = User::getUserInfo($orderInfo['uid']);
+        $userInfoTwo = User::getUserInfo($userInfo['spread_uid']);
+        if(!$userInfoTwo || !$userInfoTwo['spread_uid']) return true;
+        $storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ? : 1;//获取后台分销类型
+        if($storeBrokerageStatu == 1){
+            if(!User::be(['uid'=>$userInfoTwo['spread_uid'],'is_promoter'=>1]))  return true;
+        }
+        $brokerageRatio = (SystemConfigService::get('store_brokerage_two') ?: 0)/100;
+        if($brokerageRatio <= 0) return true;
+        $cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价
+        if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回
+        $brokeragePrice = bcmul(bcsub($orderInfo['pay_price'],$cost,2),$brokerageRatio,2);
+        if($brokeragePrice <= 0) return true;
+        $mark = '二级推广人'.$userInfo['nickname'].'成功消费'.floatval($orderInfo['pay_price']).'元,奖励推广佣金'.floatval($brokeragePrice);
+        self::beginTrans();
+        $res1 = UserBill::income('获得推广佣金',$userInfoTwo['spread_uid'],'now_money','brokerage',$brokeragePrice,$orderInfo['id'],0,$mark);
+        $res2 = self::bcInc($userInfoTwo['spread_uid'],'now_money',$brokeragePrice,'uid');
+        $res = $res1 && $res2;
+        self::checkTrans($res);
+        return $res;
+    }
+
+}