zhaojs
2023-07-31 8dcfae4fff98fbbb19ff46bd9750f25bc56801a9
application/api/controller/User.php
@@ -18,12 +18,17 @@
use app\api\logic\UserWithdrawal as LogicUserWithdrawal;
use app\api\logic\SettlementRecord as LogicSettlementRecord;
use app\api\logic\UserMoneyLog as LogicUserMoneyLog;
use think\log;
use app\api\logic\ActivityInfo as InfoActivityInfo;
use app\common\model\UserExtend as ModelUserExtend;
use think\Db;
use EasyWeChat\Kernel\Support\AES;
/**
 * 会员接口
 */
class User extends Api
{
    protected $noNeedLogin = ['login', 'mobilelogin', 'resetpwd', 'changemobile', 'wxapplogin','bind_mobile_login','register'];
    protected $noNeedLogin = ['GetDfgToken','GetRecomInviter','login', 'mobilelogin', 'resetpwd', 'changemobile', 'wxapplogin','bind_mobile_login','register'];
    protected $noNeedRight = '*';
    public function _initialize()
@@ -47,6 +52,35 @@
        $userInfo['token'] = $this->auth->getToken();
        $data = ['userinfo' => $userInfo];
        $this->success('获取成功', $data);
    }
    public function GetDfgToken()
    {
        $userId=$this->request->post('userid');
        if (!$userId) {
            $this->error(__('Invalid parameters'));
        }
        //aes加密
        $enKey="wp4hs3bvu7wq2mud";
        $iv = 'fedcba9876543210';
        $decrypted = base64_encode(AES::encrypt($userId,$enKey, $iv));
        $this->success($decrypted);
    }
    /**
     * 更新appclientid
     */
    public function UpdateClientId()
    {
        $pushCid=$this->request->post('pushcid');
        $ModelUser = new ModelUser();
        $userInfo = $ModelUser->where(['id'=>USERID]);
        if(empty($userInfo)) $this->success('成功',true);
        $userInfo->update(['push_cid'=>$pushCid]);
        $this->success('成功', true);
    }
    /**
@@ -84,6 +118,7 @@
        $mobile = $this->request->post('mobile');
        $captcha = $this->request->post('captcha');
        $ismobouth=$this->request->post('ismobouth',false);
        $pushCid=$this->request->post('pushCid',false);
        if (!$mobile || !$captcha) {
            $this->error(__('Invalid parameters'));
        }
@@ -101,7 +136,7 @@
            //如果已经有账号则直接登录
            $ret = $this->auth->direct($user->id);
        } else {
            $ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, []);
            $ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, [],'',[],$pushCid);
        }
        if ($ret) {
            Sms::flush($mobile, 'login');
@@ -211,7 +246,8 @@
        $user = $this->auth->getUser();
        $mobile = $this->request->post('mobile');
        $captcha = $this->request->post('captcha');
        if (!$mobile || !$captcha) {
        $isyj=$this->request->post('isyj',false);
        if (!$mobile || (!$isyj&&!$captcha)) {
            $this->error(__('Invalid parameters'));
        }
        if (!Validate::regex($mobile, "^1\d{10}$")) {
@@ -278,20 +314,26 @@
    public function bind_mobile_login()
    {
        $wxUser = request()->param('wxUser','','urldecode');
        $pushCid= request()->param('pushCid','');
        $wxUser = json_decode($wxUser,true);
        if(empty($wxUser)) $this->error('微信授权信息获取失败');
        $mobile = $this->request->post('mobile');
        $captcha = $this->request->post('captcha');
        if (!$mobile || !$captcha) {
        $isyj=$this->request->post('isyj',false);
        if (!$mobile || (!$isyj&&!$captcha)) {
            $this->error(__('Invalid parameters'));
        }
        if (!Validate::regex($mobile, "^1\d{10}$")) {
            $this->error('请输入正确手机号');
        }
        $result = Sms::check($mobile, $captcha, 'changemobile');
        if (!$result) {
            $this->error(__('Captcha is incorrect'));
        if(!$isyj)
        {
            $result = Sms::check($mobile, $captcha, 'changemobile');
            if (!$result) {
                $this->error(__('Captcha is incorrect'));
            }
        }
        $ModelThird = new ModelThird();
        $LogicUser = new LogicUser();
        //判断当前手机号是否已经绑定微信
@@ -299,11 +341,11 @@
        $is_phone_bind = $ModelUser->where(['mobile'=> $mobile])->find();
        if(!empty($is_phone_bind)){
            $LogicUser->bindWechat($is_phone_bind['id'],$wxUser['headimgurl'],$wxUser['sex'],$wxUser['nickname'],$wxUser['openid']);
            $ret = $this->auth->direct($is_phone_bind['id']);
            $ret = $this->auth->direct($is_phone_bind['id'],$pushCid);
        }else{ //判断微信是否已经绑定
            $find_third = $ModelThird->where(['openid'=>$wxUser['openid']])->find();
            if(!empty($find_third)) $this->error('当前微信号已绑定其他账号');
            $ret = $this->auth->register('', Random::alnum(), '', $mobile, [],'wechat',$wxUser);
            $ret = $this->auth->register('', Random::alnum(), '', $mobile, [],'wechat',$wxUser,$pushCid);
        }
        Sms::flush($mobile, 'changemobile');
        if ($ret) {
@@ -428,6 +470,48 @@
        if($res === false) $this->error($LogicUserBrowse->getError());
        $this->success([],'删除成功');
    }
    /**
     * 标记浏览0元购商品记录
     *
     * @return void
     */
    public function update_first_free_browse()
    {
        $ids = request()->param('goodsid','');
        $new_goodsId = request()->param('new_goodsId','');
        $plateform= request()->param('plateform','');
        $LogicUserBrowse = new LogicUserBrowse();
        $res = $LogicUserBrowse->updatefirstfreelog(USERID,$ids,$new_goodsId,$plateform);
        if($res === false) $this->error($LogicUserBrowse->getError());
        $this->success([],'添加成功');
    }
    /**
     * 检测是否首单
     *
     * @return void
     */
    public function check_isfirst_free()
    {
        $LogicUserBrowse = new LogicUserBrowse();
        $res = $LogicUserBrowse->checkIsFirstFree(USERID);
        if($res === false) $this->error($LogicUserBrowse->getError());
        Log::write('检测是否首单:'.json_encode($res));
        if(empty($res)) $this->success(['info'=>1],'首单客户');
        $this->success(['info'=>0],'非首单客户');
    }
@@ -625,6 +709,7 @@
    public function bind_invitation()
    {
        $invite_code = request()->param('invite_code','');
        $deviceid=request()->param('deviceid','');
        if(empty($invite_code)) $this->error('邀请码不能为空');
        $is_official = false;
        $isOpenOfficialCode = config('site.isOpenOfficialCode');
@@ -645,6 +730,13 @@
            if($f_user['status'] != 'normal')$this->error('邀请人帐号已被锁定,暂时无法邀请');
            if($user['invitation_id'] != 0)$this->error('当前已绑定上级用户');
            $save_data['invitation_id'] = $f_user['id'];
            if(!empty($deviceid))
            {//设备id
                $save_data['login_deviceid'] = $deviceid;
            }
            else{
                $save_data['login_deviceid'] = 'cus'.self::guid();
            }
            if($f_user['invitation_id'] != 0)$save_data['f_invitation_id'] = $f_user['invitation_id'];
            $res2 = $ModelUser->where(['id'=>$f_user['id']])->setInc('fans',1);
            if(!$res2){
@@ -658,7 +750,31 @@
            $this->error('绑定失败');
        } 
        $ModelUser->commit();
        //更新招募活动信息
        $activityInfo=new InfoActivityInfo();
        $activityInfo->updateRecruitCount($save_data['invitation_id'] );
        $this->success('绑定成功',[]);    
    }
   public function guid()
    {
        if (function_exists('com_create_guid')) {
            return com_create_guid();
        } else {
            mt_srand((double)microtime() * 10000);
            $charid = strtoupper(md5(uniqid(rand(), true)));
            $uuid = substr($charid, 0, 8)
                . substr($charid, 8, 4)
                . substr($charid, 12, 4)
                . substr($charid, 16, 4)
                . substr($charid, 20, 12);
            return $uuid;
        }
    }
    /**
@@ -743,6 +859,7 @@
        $user_jjcj_num = $ModelUser->where(['f_invitation_id'=>USERID,'level'=>1])->count(); //间接初级人数
        $user_zszj_num = $ModelUser->where(['invitation_id'=>USERID,'level'=>2])->count(); //直属中级人数
        $user_jjzj_num = $ModelUser->where(['f_invitation_id'=>USERID,'level'=>2])->count(); //间接中级人数
        $user_zong_num = $ModelUser->where(['invitation_id'=>USERID])->count(); //总邀请人数
        $user_monthly_commission = LogicUser::getUserCommission($user['id'],'month'); //获取近30佣金
        $user_total_commission = LogicUser::getUserCommission($user['id'],'total'); //获取累计佣金
        $data = [
@@ -751,6 +868,7 @@
                'user_jjcj_num' => $user_jjcj_num,
                'user_zszj_num' => $user_zszj_num,
                'user_jjzj_num' => $user_jjzj_num,
                'user_zong_num'=>$user_zong_num,
                'user_monthly_commission' => $user_monthly_commission,
                'total_commission' => $user_total_commission
            ],
@@ -934,6 +1052,10 @@
        if($user->level<2){
            $this->error('当前等级不能修改邀请码');
        }
        //判断是否有修改记录
        if (\app\common\model\user\CodeChangeHistory::getByUserId($user->id)) {
            $this->error('邀请码只能修改一次哦');
        }
        $invitation_code =  request()->param('invite_code','');
        if (!$invitation_code ) {
            $this->error(__('请输入邀请码'));
@@ -950,10 +1072,44 @@
        }
        $user->invitation_code = $invitation_code;
        $user->save();
        //保存修改记录
        \app\common\model\user\CodeChangeHistory::create([
                    'user_id' => $user->id,
                    'before_code' => $user->invitation_code,
                    'after_code' =>$invitation_code,
                    'create_time' => time()
                ]);
        $this->success();
    }
    /**
    *
    *获取推荐邀请人
    */
    public function getRecomInviter()
    {
        $ModelUser=new ModelUser();
        $user = $ModelUser->join('recommend_inviter', 't_user.id=t_recommend_inviter.user_id')
        ->field('t_user.id,t_user.avatar,t_user.invitation_code,t_user.nickname')
        ->order('recommend_inviter.order_inde asc')
        ->select();
        $this->success('获取成功',$user);
    }
    /**
     * 检测是否有偏好商品
     *
     * @return void
     */
    public function check_preference_goods()
    {
        //获取当前登录人用户信息
        $user = $this->auth->getUser();
        $ModelUserExtend=new ModelUserExtend();
        $preference_goods=$ModelUserExtend->where(['id'=>$user['id']])->field('p_cids,p_platefrom')->find();
        if(empty($preference_goods)||empty($preference_goods['p_cids'])) $this->error('暂无偏好商品');
        $this->success('获取成功',$preference_goods);
    }
}