<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use JiGuang\JSMS as JSMS;
use Illuminate\Support\Facades\Redis;
use Log;
use App\Models\User;

/**
 *
 * @description: 系统级接口
 * @author fengyichao
 * @date 2017年11月13日 上午11:06:13
 */
class SystemController extends ApiController {
	private static $app_key = '097b7bfa1a75f3b8d3f910d4';
	private static $master_secret = '84624089692664d407f52654';
	/**
	 *
	 * @api {post} /system/sendSms 发送验证码
	 * @apiName send-sms
	 * @apiGroup System
	 * @apiParam {String} mobile 手机号
	 */
	function sendSms(Request $request) {
		$phone = $request->mobile;
		// 检查是否手机号是否开通
		$user = User::where ( 'mobile', $phone )->first ();
		if (! $user)
			return $this->error ( '404', '该手机尚未开通' );
		$temp_id = 1;
		$client = new JSMS ( self::$app_key, self::$master_secret, [ 
				'disable_ssl' => true
		] );
		$res = $client->sendCode ( $phone, $temp_id );
		if ($res ['http_code'] == '200' && isset ( $res ['body'] ['msg_id'] )) {
			// 存redis mobile => msg_id
			$key = 'code:sms:' . $phone;
			Redis::setex ( $key, 600, $res ['body'] ['msg_id'] );
			return $this->success ();
		} else {
			return $this->error ( '404', '发送失败' );
		}
	}

	/**
	 *
	 * @api {post} /system/checkSms 验证码验证
	 * @apiName checkSms
	 * @apiGroup System
	 * @apiParam {String} mobile 手机号
	 * @apiParam {string} code 验证码
	 */
	function checkCode(Request $request) {
		// 测试条件放开
		// return $this->success ();
		$client = new JSMS ( self::$app_key, self::$master_secret, [ 
				'disable_ssl' => true
		] );
		$phone = $request->mobile;
		$user = User::where ( 'mobile', $phone )->first ();
		if (! $user)
			return $this->error ( '404', '该手机尚未开通' );
		if($user->is_lock==1)
			return $this->error ( '406', '您的账号已锁定，请联系我们。' );
		if(!$request->skey ||$request->skey=='')
			return $this->error ( 4002, '数据缺失' );
// 		$user->wx_openid = getOpenIdBySkey ( $request->skey );
// 		$user->save ();
// 		return $this->success ();

		$key = 'code:sms:' . $phone;
		$msg_id = Redis::get ( $key );
		$res = $client->checkCode ( $msg_id, $request->code );
		Log::info ( $res );
		if ($res ['http_code'] == 200 && $res ['body'] ['is_valid'] === true) {
			$user->wx_openid = getOpenIdBySkey ( $request->skey );
			$user->save ();
			return $this->success ();
		} else {
			return $this->error ( 4001, '验证失败' );
		}
	}
}
