Commit 056356b8 authored by clone's avatar clone

微信数据保存

parent 976b15b4
...@@ -4,6 +4,7 @@ namespace app\api\controller; ...@@ -4,6 +4,7 @@ namespace app\api\controller;
use app\api\extend\Basic; use app\api\extend\Basic;
use app\api\untils\MessageUntils; use app\api\untils\MessageUntils;
use app\extra\RedisExt;
use think\Request; use think\Request;
/** /**
...@@ -15,9 +16,12 @@ use think\Request; ...@@ -15,9 +16,12 @@ use think\Request;
*/ */
class Register extends Basic class Register extends Basic
{ {
private $messageUntil;
function __construct($request = null) function __construct($request = null)
{ {
parent::__construct($request); parent::__construct($request);
$this->messageUntil = new MessageUntils();
} }
/** /**
...@@ -35,8 +39,7 @@ class Register extends Basic ...@@ -35,8 +39,7 @@ class Register extends Basic
if (true !== $checkResult) { if (true !== $checkResult) {
return $this->response("101", $checkResult); return $this->response("101", $checkResult);
} }
$message = new MessageUntils(); $result = $this->messageUntil->sendCheckCodeV2($params['device_id'], $params['phone']);
$result = $message->sendCheckCodeV2($params['device_id'], $params['phone']);
if ($result == 'true') { if ($result == 'true') {
return $this->response("200", "request success", $result); return $this->response("200", "request success", $result);
} else { } else {
...@@ -52,12 +55,18 @@ class Register extends Basic ...@@ -52,12 +55,18 @@ class Register extends Basic
"phone" => "16617616471", "phone" => "16617616471",
"device_id" => "1111", "device_id" => "1111",
"code" => 1231, "code" => 1231,
"union_id" => "wx_open_id" => "1111111111" //false
); );
$checkResult = $this->validate($params, "RegisterValidate.register"); $checkResult = $this->validate($params, "RegisterValidate.register");
if (true !== $checkResult) { if (true !== $checkResult) {
return $this->response("101", $checkResult); return $this->response("101", $checkResult);
} }
$is_eq = $this->messageUntil->verifyCode($params["device_id"], $params["code"]);
if (!$is_eq) {
return $this->response("101", "验证码错误");
}
} }
} }
\ No newline at end of file
...@@ -34,6 +34,7 @@ class WxSdk extends Basic ...@@ -34,6 +34,7 @@ class WxSdk extends Basic
$params = $this->params; $params = $this->params;
/* $params = array( /* $params = array(
"wx_open_id" => "123132123123123", "wx_open_id" => "123132123123123",
"wx_union_id" => "123132123123123",
"buyer_nick" => "222222222", "buyer_nick" => "222222222",
"buyer_img" => "123123123", "buyer_img" => "123123123",
"sex" => 1, "sex" => 1,
...@@ -46,10 +47,10 @@ class WxSdk extends Basic ...@@ -46,10 +47,10 @@ class WxSdk extends Basic
return $this->response("101", $checkResult); return $this->response("101", $checkResult);
} }
$wx_open_id = $params["wx_open_id"]; $wx_union_id = $params["wx_union_id"];
// 验证open_id是否已经存在,存在则更新 // 验证open_id是否已经存在,存在则更新
$wxInfoObj = $this->wxInfoModel->getWxInfoByOpenId($wx_open_id); $wxInfoObj = $this->wxInfoModel->getWxInfoByOpenId($wx_union_id);
try { try {
if ($wxInfoObj && count($wxInfoObj) > 0) { if ($wxInfoObj && count($wxInfoObj) > 0) {
$params["id"] = $wxInfoObj[0]["id"]; $params["id"] = $wxInfoObj[0]["id"];
......
...@@ -12,9 +12,11 @@ namespace app\api\untils; ...@@ -12,9 +12,11 @@ namespace app\api\untils;
use app\extra\RedisExt; use app\extra\RedisExt;
use app\model\NoteLog; use app\model\NoteLog;
class MessageUntils { class MessageUntils
{
public function __construct() { public function __construct()
{
} }
...@@ -27,7 +29,8 @@ class MessageUntils { ...@@ -27,7 +29,8 @@ class MessageUntils {
* @param string $tempId * @param string $tempId
* @return SimpleXMLElement[] * @return SimpleXMLElement[]
*/ */
public function sendCCPSMS($to, $datas, $tempId = '214759') { public function sendCCPSMS($to, $datas, $tempId = '214759')
{
import('CCPRestSDK', EXTEND_PATH, '.php'); import('CCPRestSDK', EXTEND_PATH, '.php');
$accountSid = '8a48b55153eae51101540e763d3b3888'; $accountSid = '8a48b55153eae51101540e763d3b3888';
$accountToken = '26b220de299d4a56a6f54dd5792a30e4'; $accountToken = '26b220de299d4a56a6f54dd5792a30e4';
...@@ -49,15 +52,15 @@ class MessageUntils { ...@@ -49,15 +52,15 @@ class MessageUntils {
$result['smsMessageSid'] = ''; $result['smsMessageSid'] = '';
$result['statusMsg'] = ''; $result['statusMsg'] = '';
$result = (array)$rest->sendTemplateSMS($to, $datas, $tempId); $result = (array)$rest->sendTemplateSMS($to, $datas, $tempId);
if($result == NULL ) { if ($result == NULL) {
$data['statusMsg'] = '短信接口无返回'; $data['statusMsg'] = '短信接口无返回';
$data['statusCode'] = -1; $data['statusCode'] = -1;
} }
if($result['statusCode'] != 0) { if ($result['statusCode'] != 0) {
$data['statusCode'] = $result['statusCode']; $data['statusCode'] = $result['statusCode'];
$data['statusMsg'] = $result['statusMsg']; $data['statusMsg'] = $result['statusMsg'];
}else{ } else {
$data['statusCode'] = $result['statusCode']; $data['statusCode'] = $result['statusCode'];
$data['TemplateSMS'] = $result['TemplateSMS']; $data['TemplateSMS'] = $result['TemplateSMS'];
} }
...@@ -74,24 +77,25 @@ class MessageUntils { ...@@ -74,24 +77,25 @@ class MessageUntils {
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException * @throws \think\exception\DbException
*/ */
public function sendCheckCode($phone) { public function sendCheckCode($phone)
{
$result_data['msg'] = ''; $result_data['msg'] = '';
$result_data['status'] = true; $result_data['status'] = true;
$noteLog = new NoteLog(); $noteLog = new NoteLog();
$send_time = $noteLog->field('send_time')->where('phone', $phone) $send_time = $noteLog->field('send_time')->where('phone', $phone)
->where('is_success',1) ->where('is_success', 1)
->where('send_time','between time',[date('Y-m-d').' 00:00:00',date('Y-m-d').' 23:59:59']) ->where('send_time', 'between time', [ date('Y-m-d') . ' 00:00:00', date('Y-m-d') . ' 23:59:59' ])
->select(); ->select();
$num = count($send_time); //发送数量 $num = count($send_time); //发送数量
if (!empty($send_time[$num-1]) && (time() - strtotime($send_time[$num-1]->send_time) < 58) && $num != 0) { if (!empty($send_time[$num - 1]) && (time() - strtotime($send_time[$num - 1]->send_time) < 58) && $num != 0) {
$result_data['msg'] = '1分钟内不能再次获取验证码'; $result_data['msg'] = '1分钟内不能再次获取验证码';
$result_data['status'] = false; $result_data['status'] = false;
return $result_data; return $result_data;
} }
if ($num > 7){ if ($num > 7) {
$result_data['msg'] = '短信发送超过上限'; $result_data['msg'] = '短信发送超过上限';
$result_data['status'] = false; $result_data['status'] = false;
return $result_data; return $result_data;
...@@ -99,10 +103,10 @@ class MessageUntils { ...@@ -99,10 +103,10 @@ class MessageUntils {
$message = new MessageUntils(); $message = new MessageUntils();
$_code = mt_rand(1000, 9999) . ''; $_code = mt_rand(1000, 9999) . '';
$result = $message->sendCCPSMS($phone, array($_code, '5分钟'), 214759); $result = $message->sendCCPSMS($phone, array( $_code, '5分钟' ), 214759);
$noteLog->phone = $phone; $noteLog->phone = $phone;
$noteLog->template_msg = '【同联商业】您的验证码为'.$_code.',请于5分钟内正确输入,如非本人操作,请忽略此短信。'; $noteLog->template_msg = '【同联商业】您的验证码为' . $_code . ',请于5分钟内正确输入,如非本人操作,请忽略此短信。';
$noteLog->code = $_code; $noteLog->code = $_code;
$noteLog->send_time = date('Y-m-d H:i:s'); $noteLog->send_time = date('Y-m-d H:i:s');
$result['statusCode'] = 0; $result['statusCode'] = 0;
...@@ -129,28 +133,29 @@ class MessageUntils { ...@@ -129,28 +133,29 @@ class MessageUntils {
* @param $phone * @param $phone
* @return mixed * @return mixed
*/ */
public function sendCheckCodeV2($device_id,$phone) { public function sendCheckCodeV2($device_id, $phone)
{
$noteLog = new NoteLog(); $noteLog = new NoteLog();
$send_time = $noteLog->field('send_time')->where('phone', $phone) $send_time = $noteLog->field('send_time')->where('phone', $phone)
->where('is_success',1) ->where('is_success', 1)
->where('send_time','between time',[date('Y-m-d').' 00:00:00',date('Y-m-d').' 23:59:59']) ->where('send_time', 'between time', [ date('Y-m-d') . ' 00:00:00', date('Y-m-d') . ' 23:59:59' ])
->select(); ->select();
$num = count($send_time); //发送数量 $num = count($send_time); //发送数量
if (!empty($send_time[$num-1]) && (time() - strtotime($send_time[$num-1]->send_time) < 58) && $num != 0) { if (!empty($send_time[$num - 1]) && (time() - strtotime($send_time[$num - 1]->send_time) < 58) && $num != 0) {
return '1分钟内不能再次获取验证码'; return '1分钟内不能再次获取验证码';
} }
if ($num > 7){ if ($num > 7) {
return '短信发送超过上限'; return '短信发送超过上限';
} }
$message = new MessageUntils(); $message = new MessageUntils();
$_code = mt_rand(1000, 9999) . ''; $_code = mt_rand(1000, 9999) . '';
$result = $message->sendCCPSMS($phone, array($_code, '5分钟'), 214759); $result = $message->sendCCPSMS($phone, array( $_code, '5分钟' ), 214759);
$noteLog->phone = $phone; $noteLog->phone = $phone;
$noteLog->template_msg = '【同联商业】您的验证码为'.$_code.',请于5分钟内正确输入,如非本人操作,请忽略此短信。'; $noteLog->template_msg = '【同联商业】您的验证码为' . $_code . ',请于5分钟内正确输入,如非本人操作,请忽略此短信。';
$noteLog->code = $_code; $noteLog->code = $_code;
$noteLog->send_time = date('Y-m-d H:i:s'); $noteLog->send_time = date('Y-m-d H:i:s');
$result['statusCode'] = 0; $result['statusCode'] = 0;
...@@ -160,10 +165,10 @@ class MessageUntils { ...@@ -160,10 +165,10 @@ class MessageUntils {
$noteLog->save(); $noteLog->save();
//todo 存code //todo 存code
$redis_ = RedisExt::getRedis(); $redis_ = RedisExt::getRedis();
if($redis_){ if ($redis_) {
$redis_->set($device_id,$_code,300); $redis_->set($device_id, $_code, 300);
}else{ } else {
session($device_id,$_code); session($device_id, $_code);
} }
return "true"; return "true";
} else { } else {
...@@ -172,4 +177,25 @@ class MessageUntils { ...@@ -172,4 +177,25 @@ class MessageUntils {
return '发送异常,请联系管理员'; return '发送异常,请联系管理员';
} }
} }
/**
* 验证code
* @param $device_id
* @param $code
* @return bool
*/
public function verifyCode(string $device_id, int $code) : bool
{
$redis_ = RedisExt::getRedis();
if ($redis_) {
$service_code = $redis_->get($device_id, 300);
} else {
$service_code = session($device_id);
}
if ($code == $service_code) {
return true;
} else {
return false;
}
}
} }
...@@ -80,7 +80,8 @@ class WxCallbackUntils ...@@ -80,7 +80,8 @@ class WxCallbackUntils
'sex' => $user_info->sex, 'sex' => $user_info->sex,
'province' => $user_info->province, 'province' => $user_info->province,
'city' => $user_info->city, 'city' => $user_info->city,
'buyer_img' => $user_info->headimgurl 'buyer_img' => $user_info->headimgurl,
'union_id' => $user_info->unionid,
); );
session("userInfo", $data); session("userInfo", $data);
return $data; return $data;
......
...@@ -14,12 +14,15 @@ use think\Validate; ...@@ -14,12 +14,15 @@ use think\Validate;
class RegisterValidate extends Validate class RegisterValidate extends Validate
{ {
protected $rule = [ protected $rule = [
'wx_open_id' => 'require|length:10,50',
'code' => 'require|number', 'code' => 'require|number',
'device_id' => 'require', 'device_id' => 'require',
'phone' => [ 'regex' => '/^((13[0-9])|(14[0-9])|(15[0-9])|(18[0-9])|(16[0-9])|(17[0-9])|(19[0-9]))\\d{8}$/i' ], 'phone' => [ 'regex' => '/^((13[0-9])|(14[0-9])|(15[0-9])|(18[0-9])|(16[0-9])|(17[0-9])|(19[0-9]))\\d{8}$/i' ],
]; ];
protected $message = [ protected $message = [
'wx_open_id.require' => '微信open_id不能为空',
'wx_open_id.length:10,50' => '微信open_id错误',
'phone.regex' => '手机号格式不正确', 'phone.regex' => '手机号格式不正确',
'device_id.require' => '设备id不能为空', 'device_id.require' => '设备id不能为空',
'code.require' => 'code为必填字段', 'code.require' => 'code为必填字段',
...@@ -28,6 +31,6 @@ class RegisterValidate extends Validate ...@@ -28,6 +31,6 @@ class RegisterValidate extends Validate
protected $scene = [ protected $scene = [
'verify' => [ 'phone,device_id' ], 'verify' => [ 'phone,device_id' ],
'register' => [ 'phone,device_id,code' ], 'register' => [ 'phone,device_id,code,wx_open_id' ],
]; ];
} }
\ No newline at end of file
...@@ -15,6 +15,7 @@ class UWxInfoValidate extends Validate ...@@ -15,6 +15,7 @@ class UWxInfoValidate extends Validate
{ {
protected $rule = [ protected $rule = [
'wx_open_id' => 'require|length:10,50', 'wx_open_id' => 'require|length:10,50',
'wx_union_id' => 'require|length:10,50',
'sex' => 'require|number', 'sex' => 'require|number',
'source' => 'require|number', 'source' => 'require|number',
'user_id' => 'require|number|gt:0', 'user_id' => 'require|number|gt:0',
...@@ -23,6 +24,8 @@ class UWxInfoValidate extends Validate ...@@ -23,6 +24,8 @@ class UWxInfoValidate extends Validate
protected $message = [ protected $message = [
'wx_open_id.require' => '微信open_id不能为空', 'wx_open_id.require' => '微信open_id不能为空',
'wx_open_id.length:10,50' => '微信open_id错误', 'wx_open_id.length:10,50' => '微信open_id错误',
'wx_union_id.require' => '微信union_id不能为空',
'wx_union_id.length:10,50' => '微信union_id错误',
'sex.require' => '性别为必须字段', 'sex.require' => '性别为必须字段',
'sex.number' => '性别必须是数字', 'sex.number' => '性别必须是数字',
'source.require' => '来源为必须字段', 'source.require' => '来源为必须字段',
...@@ -33,7 +36,7 @@ class UWxInfoValidate extends Validate ...@@ -33,7 +36,7 @@ class UWxInfoValidate extends Validate
]; ];
protected $scene = [ protected $scene = [
'add' => [ 'wx_open_id', 'sex', 'source' ], 'add' => [ 'wx_open_id','wx_union_id', 'sex', 'source' ],
'select' => [ 'wx_open_id' ], 'select' => [ 'wx_open_id' ],
'bind' => [ 'wx_open_id', 'user_id' ], 'bind' => [ 'wx_open_id', 'user_id' ],
]; ];
......
...@@ -35,6 +35,8 @@ class WxTest extends Basic ...@@ -35,6 +35,8 @@ class WxTest extends Basic
if (!$userInfo) { if (!$userInfo) {
$this->_wxApi->getWxCode($this->url); $this->_wxApi->getWxCode($this->url);
} else { } else {
dump($userInfo);
return view("test"); return view("test");
} }
} }
......
...@@ -68,7 +68,7 @@ class UWxInfo extends Model ...@@ -68,7 +68,7 @@ class UWxInfo extends Model
*/ */
public function getWxInfoByOpenId(string $open_id) public function getWxInfoByOpenId(string $open_id)
{ {
$where_["wx_open_id"] = $open_id; $where_["wx_union_id"] = $open_id;
$where_["is_del"] = 0; $where_["is_del"] = 0;
return $this return $this
->field("id") ->field("id")
...@@ -95,6 +95,9 @@ class UWxInfo extends Model ...@@ -95,6 +95,9 @@ class UWxInfo extends Model
if (isset($params["wx_open_id"])) { if (isset($params["wx_open_id"])) {
$arr["wx_open_id"] = $params["wx_open_id"]; $arr["wx_open_id"] = $params["wx_open_id"];
} }
if (isset($params["wx_union_id"])) {
$arr["wx_union_id"] = $params["wx_union_id"];
}
if (isset($params["buyer_nick"])) { if (isset($params["buyer_nick"])) {
$arr["buyer_nick"] = $params["buyer_nick"]; $arr["buyer_nick"] = $params["buyer_nick"];
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment