支付宝小程序用户绑定
parent
f69c77c96e
commit
6a461c54ae
|
|
@ -44,6 +44,11 @@ class Common extends Controller
|
|||
exit(json_encode(DataReturn('非法访问', -500)));
|
||||
}
|
||||
|
||||
// 输入参数
|
||||
$this->data_post = input('post.');
|
||||
$this->data_get = input('get.');
|
||||
$this->data_request = input();
|
||||
|
||||
// 系统初始化
|
||||
$this->SystemInit();
|
||||
|
||||
|
|
@ -52,11 +57,6 @@ class Common extends Controller
|
|||
|
||||
// 公共数据初始化
|
||||
$this->CommonInit();
|
||||
|
||||
// 输入参数
|
||||
$this->data_post = input('post.');
|
||||
$this->data_get = input('get.');
|
||||
$this->data_request = input();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -118,7 +118,7 @@ class Common extends Controller
|
|||
// 用户数据
|
||||
if(!empty($this->data_request['user_id']))
|
||||
{
|
||||
$this->user = UserService::UserLoginRecord($this->data_request['user_id']);
|
||||
$this->user = UserService::UserLoginRecord($this->data_request['user_id'], true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,174 @@
|
|||
<?php
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\service\UserService;
|
||||
use app\service\OrderService;
|
||||
use app\service\GoodsService;
|
||||
use app\service\MessageService;
|
||||
|
||||
/**
|
||||
* 首页
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-01T21:51:08+0800
|
||||
*/
|
||||
class User extends Common
|
||||
{
|
||||
/**
|
||||
* [__construct 构造方法]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-03T12:39:08+0800
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// 调用父类前置方法
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* [Reg 用户注册-数据添加]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2017-03-07T00:08:36+0800
|
||||
*/
|
||||
public function Reg()
|
||||
{
|
||||
// 是否ajax请求
|
||||
if(!IS_AJAX)
|
||||
{
|
||||
return $this->error('非法访问');
|
||||
}
|
||||
|
||||
// 调用服务层
|
||||
$ret = UserService::AppReg(input('post.'));
|
||||
return json($ret);
|
||||
}
|
||||
|
||||
/**
|
||||
* [RegVerifySend 用户注册-验证码发送]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2017-03-05T19:17:10+0800
|
||||
*/
|
||||
public function RegVerifySend()
|
||||
{
|
||||
// 是否ajax请求
|
||||
if(!IS_AJAX)
|
||||
{
|
||||
return $this->error('非法访问');
|
||||
}
|
||||
|
||||
// 调用服务层
|
||||
$ret = UserService::AppUserBindVerifySend(input('post.'));
|
||||
return json($ret);
|
||||
}
|
||||
|
||||
/**
|
||||
* [GetAlipayUserInfo 获取支付宝用户信息]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2017-09-23T21:52:49+0800
|
||||
*/
|
||||
public function AlipayUserAuth()
|
||||
{
|
||||
// 参数
|
||||
if(empty($this->data_post['authcode']))
|
||||
{
|
||||
return json(DataReturn('授权码不能为空', -1));
|
||||
}
|
||||
|
||||
// 授权
|
||||
$result = (new \base\AlipayAuth())->GetAlipayUserInfo($this->data_post['authcode'], MyC('common_app_mini_alipay_appid'));
|
||||
if($result === false)
|
||||
{
|
||||
return json(DataReturn('获取授权信息失败', -10));
|
||||
} else {
|
||||
$result['openid'] = $result['user_id'];
|
||||
$result['referrer']= isset($this->data_post['referrer']) ? intval($this->data_post['referrer']) : 0;
|
||||
$ret = UserService::AuthUserProgram($result, 'alipay_openid');
|
||||
return json($ret);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 百度小程序获取用户信息
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-11-06
|
||||
* @desc description
|
||||
*/
|
||||
public function BaiduUserAuth()
|
||||
{
|
||||
return json(DataReturn('暂未开放', -1));
|
||||
|
||||
$_POST['config'] = MyC('baidu_mini_program_config');
|
||||
$result = (new \Library\BaiduAuth())->GetAuthUserInfo($_POST);
|
||||
if($result['status'] == 0)
|
||||
{
|
||||
$ret = UserService::AuthUserProgram($result, 'alipay_openid');
|
||||
return json($ret);
|
||||
} else {
|
||||
return json(DataReturn($result['msg'], -10));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* [ClientCenter 用户中心]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2018-05-21T15:21:52+0800
|
||||
*/
|
||||
public function Center()
|
||||
{
|
||||
// 登录校验
|
||||
$this->Is_Login();
|
||||
|
||||
// 订单总数
|
||||
$where = ['user_id'=>$this->user['id'], 'is_delete_time'=>0, 'user_is_delete_time'=>0];
|
||||
$user_order_count = OrderService::OrderTotal($where);
|
||||
|
||||
// 商品收藏总数
|
||||
$where = ['user_id'=>$this->user['id']];
|
||||
$user_goods_favor_count = GoodsService::GoodsFavorTotal($where);
|
||||
|
||||
// 商品浏览总数
|
||||
$where = ['user_id'=>$this->user['id']];
|
||||
$user_goods_browse_count = GoodsService::GoodsBrowseTotal($where);
|
||||
|
||||
// 未读消息总数
|
||||
$params = ['user'=>$this->user, 'is_more'=>1, 'is_read'=>0];
|
||||
$common_message_total = MessageService::UserMessageTotal($params);
|
||||
$common_message_total = ($common_message_total > 99) ? '99+' : $common_message_total;
|
||||
|
||||
// 用户订单状态
|
||||
$user_order_status = OrderService::OrderStatusStepTotal(['user_type'=>'user', 'user'=>$this->user, 'is_comments'=>1]);
|
||||
|
||||
// 初始化数据
|
||||
$result = array(
|
||||
'integral' => (int) $this->user['integral'],
|
||||
'avatar' => $this->user['avatar'],
|
||||
'nickname' => $this->user['nickname'],
|
||||
'username' => $this->user['username'],
|
||||
'customer_service_tel' => MyC('common_app_customer_service_tel', null, true),
|
||||
'common_user_center_notice' => MyC('common_user_center_notice', null, true),
|
||||
'user_order_status' => $user_order_status['data'],
|
||||
'user_order_count' => $user_order_count,
|
||||
'user_goods_favor_count' => $user_goods_favor_count,
|
||||
'user_goods_browse_count' => $user_goods_browse_count,
|
||||
'common_message_total' => $common_message_total,
|
||||
'common_app_is_enable_answer' => (int) MyC('common_app_is_enable_answer', 0),
|
||||
);
|
||||
|
||||
// 返回数据
|
||||
return json(DataReturn('success', 0, $result));
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -602,9 +602,10 @@ class UserService
|
|||
* @version 0.0.1
|
||||
* @datetime 2017-03-09T11:37:43+0800
|
||||
* @param [int] $user_id [用户id]
|
||||
* @param [boolean] $is_app [是否为app]
|
||||
* @return [boolean] [记录成功true, 失败false]
|
||||
*/
|
||||
public static function UserLoginRecord($user_id = 0)
|
||||
public static function UserLoginRecord($user_id = 0, $is_app = false)
|
||||
{
|
||||
if(!empty($user_id))
|
||||
{
|
||||
|
|
@ -645,9 +646,14 @@ class UserService
|
|||
$user['avatar'] = config('images_host').'/static/index/'.strtolower(config('DEFAULT_THEME', 'default')).'/images/default-user-avatar.jpg';
|
||||
}
|
||||
|
||||
// 存储session
|
||||
session('user', $user);
|
||||
return (session('user') !== null);
|
||||
if($is_app == true)
|
||||
{
|
||||
return $user;
|
||||
} else {
|
||||
// 存储session
|
||||
session('user', $user);
|
||||
return (session('user') !== null);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
|
@ -1343,5 +1349,205 @@ class UserService
|
|||
return DataReturn('编辑失败或数据未改变', -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户授权数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-11-06
|
||||
* @desc description
|
||||
* @param [array] $params [用户数据]
|
||||
* @param [string] $field [平台字段名称]
|
||||
*/
|
||||
public static function AuthUserProgram($params, $field)
|
||||
{
|
||||
$data = [
|
||||
$field => $params['openid'],
|
||||
'nickname' => empty($params['nick_name']) ? '' : $params['nick_name'],
|
||||
'avatar' => empty($params['avatar']) ? '' : $params['avatar'],
|
||||
'gender' => empty($params['gender']) ? 0 : ($params['gender'] == 'm') ? 2 : 1,
|
||||
'province' => empty($params['province']) ? '' : $params['province'],
|
||||
'city' => empty($params['city']) ? '' : $params['city'],
|
||||
'referrer' => isset($params['referrer']) ? intval($params['referrer']) : 0,
|
||||
];
|
||||
$where = [$field=>$params['openid'], 'is_delete_time'=>0];
|
||||
$user = Db::name('User')->where($where)->find();
|
||||
if(!empty($user))
|
||||
{
|
||||
$data = $user;
|
||||
}
|
||||
|
||||
// 返回成功
|
||||
return DataReturn('授权成功', 0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* app用户注册
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-12-27
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function AppReg($params = [])
|
||||
{
|
||||
// 数据验证
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'mobile',
|
||||
'error_msg' => '手机号码不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'app_type',
|
||||
'error_msg' => '终端用户类型不能为空',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 手机号码格式
|
||||
if(!CheckMobile($params['mobile']))
|
||||
{
|
||||
return DataReturn('手机号码格式错误', -2);
|
||||
}
|
||||
|
||||
// 验证码校验
|
||||
$verify_param = array(
|
||||
'key_prefix' => 'bind',
|
||||
'expire_time' => MyC('common_verify_expire_time')
|
||||
);
|
||||
$obj = new \base\Sms($verify_param);
|
||||
|
||||
// 是否已过期
|
||||
if(!$obj->CheckExpire())
|
||||
{
|
||||
return DataReturn('验证码已过期', -10);
|
||||
}
|
||||
// 是否正确
|
||||
if(!$obj->CheckCorrect($params['verify']))
|
||||
{
|
||||
return DataReturn('验证码错误', -11);
|
||||
}
|
||||
|
||||
// 用户信息
|
||||
$accounts_field = $params['app_type'].'_openid';
|
||||
if(empty($params[$accounts_field]))
|
||||
{
|
||||
return DataReturn('用户openid不能为空', -20);
|
||||
}
|
||||
$data = array(
|
||||
$accounts_field => $params[$accounts_field],
|
||||
'mobile' => $params['mobile'],
|
||||
);
|
||||
|
||||
// 获取用户信息
|
||||
$where = ['mobile'=>$data['mobile'], 'is_delete_time'=>0];
|
||||
$temp_user = Db::name('User')->where($where)->find();
|
||||
|
||||
// 额外信息
|
||||
if(empty($temp_user['nickname']) && !empty($params['nickname']))
|
||||
{
|
||||
$data['nickname'] = $params['nickname'];
|
||||
}
|
||||
if(empty($temp_user['avatar']) && !empty($params['avatar']))
|
||||
{
|
||||
$data['avatar'] = $params['avatar'];
|
||||
}
|
||||
if(empty($temp_user['province']) && !empty($params['province']))
|
||||
{
|
||||
$data['province'] = $params['province'];
|
||||
}
|
||||
if(empty($temp_user['city']) && !empty($params['city']))
|
||||
{
|
||||
$data['city'] = $params['city'];
|
||||
}
|
||||
if(empty($temp_user) && isset($params['gender']))
|
||||
{
|
||||
$data['gender'] = intval($params['gender']);
|
||||
}
|
||||
|
||||
// 不存在添加/则更新
|
||||
if(empty($temp_user))
|
||||
{
|
||||
$data['referrer'] = isset($params['referrer']) ? intval($params['referrer']) : 0;
|
||||
$data['add_time'] = time();
|
||||
$user_id = Db::name('User')->insertGetId($data);
|
||||
} else {
|
||||
$data['upd_time'] = time();
|
||||
if(Db::name('User')->where($where)->update($data))
|
||||
{
|
||||
$user_id = $temp_user['id'];
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($user_id) && $user_id > 0)
|
||||
{
|
||||
// 清除验证码
|
||||
$obj->Remove();
|
||||
|
||||
return DataReturn('绑定成功', 0, self::UserLoginRecord($user_id, true));
|
||||
} else {
|
||||
return DataReturn('绑定失败', -100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* app用户绑定验证码发送
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-12-27
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function AppUserBindVerifySend($params = [])
|
||||
{
|
||||
// 数据验证
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'mobile',
|
||||
'error_msg' => '手机号码不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'fun',
|
||||
'key_name' => 'mobile',
|
||||
'checked_data' => 'CheckMobile',
|
||||
'error_msg' => '手机号码格式错误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 验证码公共基础参数
|
||||
$verify_param = array(
|
||||
'key_prefix' => 'bind',
|
||||
'expire_time' => MyC('common_verify_expire_time'),
|
||||
'time_interval' => MyC('common_verify_time_interval'),
|
||||
);
|
||||
|
||||
// 发送验证码
|
||||
$obj = new \base\Sms($verify_param);
|
||||
$code = GetNumberCode(6);
|
||||
$status = $obj->SendCode($params['mobile'], $code, MyC('home_sms_user_mobile_binding'));
|
||||
|
||||
// 状态
|
||||
if($status)
|
||||
{
|
||||
return DataReturn('发送成功', 0);
|
||||
} else {
|
||||
return DataReturn('发送失败'.'['.$obj->error.']', -100);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -164,7 +164,6 @@ App({
|
|||
var user = this.GetUserCacheInfo();
|
||||
var app_client_user_id = user == false ? "" : user.alipay_openid;
|
||||
var user_id = user == false ? 0 : user.id;
|
||||
var nickname = user == false ? "" : user.nickname;
|
||||
return (
|
||||
this.data.request_url +
|
||||
"/" + m + "/" + c + "/" + a +
|
||||
|
|
@ -172,8 +171,6 @@ App({
|
|||
app_client_user_id +
|
||||
"&user_id=" +
|
||||
user_id +
|
||||
"&nickname=" +
|
||||
nickname +
|
||||
"&ajax=ajax" +
|
||||
params
|
||||
);
|
||||
|
|
@ -227,7 +224,7 @@ App({
|
|||
success: res => {
|
||||
if (res.authCode) {
|
||||
my.httpRequest({
|
||||
url: this.get_request_url("GetAlipayUserInfo", "User"),
|
||||
url: this.get_request_url("alipayuserauth", "user"),
|
||||
method: "POST",
|
||||
data: {
|
||||
authcode: res.authCode,
|
||||
|
|
|
|||
|
|
@ -460,6 +460,11 @@ Page({
|
|||
}
|
||||
if(spec.length <= 0 || active_count < sku_count)
|
||||
{
|
||||
this.setData({
|
||||
goods_spec_base_price: this.data.goods.price,
|
||||
goods_spec_base_original_price: this.data.goods.original_price,
|
||||
goods_spec_base_inventory: this.data.goods.inventory,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -471,7 +476,11 @@ Page({
|
|||
dataType: 'json',
|
||||
success: (res) => {
|
||||
if (res.data.code == 0) {
|
||||
|
||||
this.setData({
|
||||
goods_spec_base_price: res.data.data.price,
|
||||
goods_spec_base_original_price: res.data.data.original_price,
|
||||
goods_spec_base_inventory: res.data.data.inventory,
|
||||
});
|
||||
} else {
|
||||
my.showToast({
|
||||
type: 'fail',
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ page{
|
|||
.content .mobile{
|
||||
width: 100%;
|
||||
margin: 20rpx 0;
|
||||
border-bottom: solid 1rpx #a6a6a6;
|
||||
border-bottom: solid 1px #eee;
|
||||
}
|
||||
.content input{
|
||||
font-size: 28rpx;
|
||||
|
|
@ -22,13 +22,13 @@ page{
|
|||
}
|
||||
.content .code{
|
||||
margin: 20rpx 0;
|
||||
border-bottom: solid 1rpx #a6a6a6;
|
||||
border-bottom: solid 1px #eee;
|
||||
}
|
||||
.content .code .verify{
|
||||
width: 63%;
|
||||
}
|
||||
.content .code .verify-sub{
|
||||
border: solid 1rpx #ff6482;
|
||||
border: solid 1px #ff6482;
|
||||
color: #ff6482;
|
||||
width: 35%;
|
||||
height: 35px;
|
||||
|
|
@ -36,7 +36,7 @@ page{
|
|||
border-radius: 10rpx;
|
||||
}
|
||||
.content .code .verify-sub.sub-disabled{
|
||||
border: solid 1rpx #a6a6a6;
|
||||
border: solid 1px #eee;
|
||||
color: #a6a6a6
|
||||
}
|
||||
.content .submit{
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ Page({
|
|||
this.setData({verify_submit_text: '发送中', verify_loading: true, verify_disabled: true});
|
||||
|
||||
my.httpRequest({
|
||||
url: app.get_request_url('RegVerifySend', 'User'),
|
||||
url: app.get_request_url('regverifysend', 'user'),
|
||||
method: 'POST',
|
||||
data: {mobile: this.data.mobile},
|
||||
dataType: 'json',
|
||||
|
|
@ -115,7 +115,7 @@ Page({
|
|||
|
||||
// 网络请求
|
||||
my.httpRequest({
|
||||
url: app.get_request_url('Reg', 'User'),
|
||||
url: app.get_request_url('reg', 'user'),
|
||||
method: 'POST',
|
||||
data: e.detail.value,
|
||||
dataType: 'json',
|
||||
|
|
|
|||
Loading…
Reference in New Issue