<?php

namespace app\api\controller\company;

use app\common\controller\Apic;
use app\common\library\Sms;
use think\Exception;
use think\Validate;

use think\Db;

/**
 * 会员接口
 */
class User extends Apic
{
    protected $noNeedLogin = ['accountlogin','resetpwd','getUserOpenid'];
    protected $noNeedRight = '*';


    //员工手机+密码登录
    public function accountlogin(){
        $mobile   = $this->request->post('mobile');
        $password = $this->request->post('password');
        $openid = $this->request->post('openid','');
        if (!$mobile || !$password || !$openid) {
            $this->error(__('Invalid parameters'));
        }
        $ret = $this->auth->login($mobile, $password, $openid);
        if ($ret) {
            $data = $this->auth->getUserinfo();
            $this->success(__('Logged in successful'), $data);
        } else {
            $this->error($this->auth->getError());
        }
    }


    /**
     * 退出登录
     * @ApiMethod (POST)
     */
    public function logout()
    {
        if (!$this->request->isPost()) {
            $this->error(__('Invalid parameters'));
        }
        $this->auth->logout();
        $this->success(__('Logout successful'));
    }


    //用户详细资料
    public function getUserinfo($type = 1){
        $info = $this->auth->getUserinfo();
        if($type == 'return'){
            return $info;
        }
        $this->success(__('success'),$info);
    }

    /**
     * 重置密码
     *
     * @ApiMethod (POST)
     * @param string $mobile      手机号
     * @param string $captcha     验证码
     * @param string $newpassword 新密码
     */
    public function resetpwd()
    {
        $mobile      = $this->request->post('mobile');
        $captcha     = $this->request->post('captcha');
        $newpassword = $this->request->post("newpassword");
        if (!$mobile || !$captcha || !$newpassword) {
            $this->error(__('Invalid parameters'));
        }
        //验证Token
        if (!Validate::make()->check(['newpassword' => $newpassword], ['newpassword' => 'require|regex:\S{6,30}'])) {
            $this->error(__('Password must be 6 to 30 characters'));
        }
        if (!Validate::regex($mobile, "^1\d{10}$")) {
            $this->error(__('Mobile is incorrect'));
        }
        $user = \app\common\model\CompanyStaff::getByMobile($mobile);
        if (!$user) {
            $this->error(__('User not found'));
        }
        $ret = Sms::check($mobile, $captcha, 'resetpwd');
        if (!$ret) {
            $this->error(__('Captcha is incorrect'));
        }
        Sms::flush($mobile, 'resetpwd');

        //模拟一次登录
        $this->auth->direct($user->id);
        $ret = $this->auth->resetpwd($newpassword, '', true);
        if ($ret) {
            $this->success(__('Reset password successful'));
        } else {
            $this->error($this->auth->getError());
        }
    }


    /**
     * 修改会员个人信息
     *
     * @ApiMethod (POST)
     * @param string $avatar   头像地址
     * @param string $username 用户名
     * @param string $nickname 昵称
     * @param string $bio      个人简介
     */
    public function profile()
    {
        //验证
        if($this->auth->type != 1){
            $this->error('只有门店老板才能设置');
        }
        $field = [
            'mobile',
            'image',
            'is_open',
            'open_hours',
        ];

        $data = request_post_hub($field);
        $data['updatetime'] = time();

        $update_rs = Db::name('company')->where('id',$this->auth->company_id)->update($data);

        $this->success('资料更新完成');
    }


}
