Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
飞鱼0526
ShopXO
提交
252bee07
ShopXO
项目概览
飞鱼0526
/
ShopXO
与 Fork 源项目一致
Fork自
纵之格 / ShopXO
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
252bee07
编写于
4月 04, 2019
作者:
D
devil_gong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增ucenter应用
上级
f5d23e2e
变更
27
展开全部
隐藏空白更改
内联
并排
Showing
27 changed file
with
1382 addition
and
97 deletion
+1382
-97
application/common.php
application/common.php
+21
-0
application/index/controller/User.php
application/index/controller/User.php
+9
-2
application/index/view/default/user/email_reg_info.html
application/index/view/default/user/email_reg_info.html
+29
-2
application/index/view/default/user/login_info.html
application/index/view/default/user/login_info.html
+30
-4
application/index/view/default/user/logout.html
application/index/view/default/user/logout.html
+46
-0
application/index/view/default/user/modal_login_info.html
application/index/view/default/user/modal_login_info.html
+12
-4
application/index/view/default/user/sms_reg_info.html
application/index/view/default/user/sms_reg_info.html
+29
-2
application/lang/zh-cn.php
application/lang/zh-cn.php
+1
-1
application/plugins/touristbuy/Index.php
application/plugins/touristbuy/Index.php
+4
-6
application/plugins/touristbuy/Service.php
application/plugins/touristbuy/Service.php
+21
-21
application/plugins/ucenter/Admin.php
application/plugins/ucenter/Admin.php
+94
-0
application/plugins/ucenter/Api.php
application/plugins/ucenter/Api.php
+173
-0
application/plugins/ucenter/Hook.php
application/plugins/ucenter/Hook.php
+263
-0
application/plugins/ucenter/config.json
application/plugins/ucenter/config.json
+36
-0
application/plugins/view/touristbuy/index/success.html
application/plugins/view/touristbuy/index/success.html
+58
-0
application/plugins/view/ucenter/admin/index.html
application/plugins/view/ucenter/admin/index.html
+217
-0
application/plugins/view/ucenter/admin/saveinfo.html
application/plugins/view/ucenter/admin/saveinfo.html
+65
-0
application/plugins/view/ucenter/index/content.html
application/plugins/view/ucenter/index/content.html
+3
-0
application/service/SafetyService.php
application/service/SafetyService.php
+70
-18
application/service/UserService.php
application/service/UserService.php
+139
-21
application/tags.php
application/tags.php
+17
-0
config/app.php
config/app.php
+1
-1
config/shopxo.sql
config/shopxo.sql
+16
-14
public/static/index/default/css/common.css
public/static/index/default/css/common.css
+1
-1
public/static/plugins/css/ucenter/admin.css
public/static/plugins/css/ucenter/admin.css
+27
-0
public/static/upload/images/plugins_ucenter/2019/04/02/1554185833720976-s.jpg
.../images/plugins_ucenter/2019/04/02/1554185833720976-s.jpg
+0
-0
public/static/upload/images/plugins_ucenter/2019/04/02/1554185833720976.jpg
...ad/images/plugins_ucenter/2019/04/02/1554185833720976.jpg
+0
-0
未找到文件。
application/common.php
浏览文件 @
252bee07
...
...
@@ -11,6 +11,27 @@
// 应用公共文件
/**
* 生成随机字符串
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-04
* @desc description
* @param [int] $length [长度 默认6]
*/
function
RandomString
(
$length
=
6
)
{
$pattern
=
'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ'
;
$pattern_length
=
strlen
(
$pattern
)
-
1
;
$output
=
''
;
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
$output
.
=
$pattern
[
mt_rand
(
0
,
$pattern_length
)];
}
return
$output
;
}
/**
* each函数
* @author Devil
...
...
application/index/controller/User.php
浏览文件 @
252bee07
...
...
@@ -441,8 +441,15 @@ class User extends Common
*/
public
function
Logout
()
{
session
(
'user'
,
null
);
return
redirect
(
__MY_URL__
);
// 调用服务层
$ret
=
UserService
::
Logout
();
// 登录返回
$body_html
=
(
!
empty
(
$ret
[
'data'
][
'body_html'
])
&&
is_array
(
$ret
[
'data'
][
'body_html'
]))
?
implode
(
' '
,
$ret
[
'data'
][
'body_html'
])
:
$ret
[
'data'
][
'body_html'
];
$this
->
assign
(
'body_html'
,
$body_html
);
$this
->
assign
(
'msg'
,
$ret
[
'msg'
]);
return
$this
->
fetch
();
}
/**
...
...
application/index/view/default/user/email_reg_info.html
浏览文件 @
252bee07
...
...
@@ -16,7 +16,7 @@
<div
class=
"am-g my-content"
>
<div
class=
"am-u-md-6 am-u-sm-centered"
>
<!-- form start -->
<form
class=
"am-form form-validation"
method=
"post"
action=
"{{:MyUrl('index/user/reg')}}"
request-type=
"ajax-
url"
request-value=
"{{$referer_url}}
"
>
<form
class=
"am-form form-validation"
method=
"post"
action=
"{{:MyUrl('index/user/reg')}}"
request-type=
"ajax-
fun"
request-value=
"RegisterSuccessBack
"
>
<fieldset>
{{if MyC('home_user_login_state') eq 1}}
<span>
已有帐号?
</span>
...
...
@@ -101,4 +101,31 @@
</div>
<!-- conntent end -->
{{include file="public/footer" /}}
\ No newline at end of file
{{include file="public/footer" /}}
<script
type=
"text/javascript"
>
// 注册成功回调
function
RegisterSuccessBack
(
e
)
{
if
(
e
.
code
==
0
)
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
,
'
success
'
);
// 登录返回html处理
if
((
e
.
data
.
body_html
||
null
)
!=
null
)
{
$
(
'
body
'
).
append
(
e
.
data
.
body_html
);
}
setTimeout
(
function
()
{
window
.
location
.
href
=
'
{{$referer_url}}
'
;
},
1500
);
}
else
{
$
(
'
form.form-validation
'
).
find
(
'
button[type="submit"]
'
).
button
(
'
reset
'
);
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
);
}
}
</script>
\ No newline at end of file
application/index/view/default/user/login_info.html
浏览文件 @
252bee07
...
...
@@ -16,7 +16,7 @@
<div
class=
"am-g my-content"
>
<div
class=
"am-u-md-6 am-u-sm-centered"
>
<!-- form start -->
<form
class=
"am-form form-validation"
method=
"post"
action=
"{{:MyUrl('index/user/login')}}"
request-type=
"ajax-
url"
request-value=
"{{$referer_url}}
"
>
<form
class=
"am-form form-validation"
method=
"post"
action=
"{{:MyUrl('index/user/login')}}"
request-type=
"ajax-
fun"
request-value=
"LoginSuccessBack
"
>
<fieldset>
{{if in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state'))}}
<span
class=
""
>
还没有帐号?
</span>
...
...
@@ -39,8 +39,8 @@
<hr
/>
<div
class=
"am-form-group am-form-group-refreshing"
>
<label>
手机/邮箱
</label>
<input
type=
"text"
name=
"accounts"
class=
"am-radius"
minlength=
"1"
placeholder=
"
手机/邮箱"
data-validation-message=
"手机/邮箱格式有误
"
required
/>
<label>
登录账号
</label>
<input
type=
"text"
name=
"accounts"
class=
"am-radius"
minlength=
"1"
placeholder=
"
用户名/手机/邮箱"
data-validation-message=
"请填写登录账号
"
required
/>
</div>
<div
class=
"am-form-group am-form-group-refreshing"
>
...
...
@@ -59,5 +59,31 @@
</div>
<!-- conntent end -->
{{include file="public/footer" /}}
{{include file="public/footer" /}}
\ No newline at end of file
<script
type=
"text/javascript"
>
// 登录成功回调
function
LoginSuccessBack
(
e
)
{
if
(
e
.
code
==
0
)
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
,
'
success
'
);
// 登录返回html处理
if
((
e
.
data
.
body_html
||
null
)
!=
null
)
{
$
(
'
body
'
).
append
(
e
.
data
.
body_html
);
}
setTimeout
(
function
()
{
window
.
location
.
href
=
'
{{$referer_url}}
'
;
},
1500
);
}
else
{
$
(
'
form.form-validation
'
).
find
(
'
button[type="submit"]
'
).
button
(
'
reset
'
);
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
);
}
}
</script>
\ No newline at end of file
application/index/view/default/user/logout.html
0 → 100644
浏览文件 @
252bee07
{{include file="public/header" /}}
<!-- header nav start -->
{{if isset($is_header) and $is_header eq 1}}
<!-- header top nav -->
{{include file="public/header_top_nav" /}}
<!-- search -->
{{include file="public/nav_search" /}}
<!-- header nav -->
{{include file="public/header_nav" /}}
<!-- goods category -->
{{include file="public/goods_category" /}}
{{/if}}
<!-- header nav end -->
<!-- conntent start -->
<div
class=
"am-g my-content"
>
<div
class=
"am-u-md-6 am-u-sm-centered"
>
<div
class=
"am-panel am-radius tips-success"
>
<div
class=
"am-panel-bd"
>
<i
class=
"am-icon-check-circle am-icon-sm"
></i>
<span
class=
"msg"
>
{{$msg}}
</span>
<div
class=
"tips-nav"
>
<a
href=
"{{$Think.__MY_URL__}}"
class=
"am-btn am-btn-secondary am-radius"
>
回到首页
</a>
</div>
</div>
</div>
</div>
</div>
<!-- conntent end -->
{{include file="public/footer" /}}
{{if !empty($body_html)}}
{{$body_html|raw}}
{{/if}}
<script
type=
"text/javascript"
>
setTimeout
(
function
()
{
window
.
location
.
href
=
'
{{$Think.__MY_URL__}}
'
;
},
1500
);
</script>
\ No newline at end of file
application/index/view/default/user/modal_login_info.html
浏览文件 @
252bee07
...
...
@@ -27,8 +27,8 @@
<hr
/>
<div
class=
"am-form-group am-form-group-refreshing"
>
<label>
手机/邮箱
</label>
<input
type=
"text"
name=
"accounts"
class=
"am-radius"
minlength=
"1"
placeholder=
"
手机/邮箱"
data-validation-message=
"手机/邮箱格式有误
"
required
/>
<label>
登录账号
</label>
<input
type=
"text"
name=
"accounts"
class=
"am-radius"
minlength=
"1"
placeholder=
"
用户名/手机/邮箱"
data-validation-message=
"请填写登录账号
"
required
/>
</div>
<div
class=
"am-form-group am-form-group-refreshing"
>
...
...
@@ -57,9 +57,16 @@
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
,
'
success
'
);
// 登录返回html处理
if
((
e
.
data
.
body_html
||
null
)
!=
null
)
{
$
(
'
body
'
).
append
(
e
.
data
.
body_html
);
}
setTimeout
(
function
()
{
parent
.
location
.
reload
();
window
.
parent
.
location
.
reload
();
},
1500
);
}
else
{
$
(
'
form.form-validation
'
).
find
(
'
button[type="submit"]
'
).
button
(
'
reset
'
);
...
...
@@ -67,4 +74,5 @@
Prompt
(
e
.
msg
);
}
}
</script>
\ No newline at end of file
</script>
application/index/view/default/user/sms_reg_info.html
浏览文件 @
252bee07
...
...
@@ -16,7 +16,7 @@
<div
class=
"am-g my-content"
>
<div
class=
"am-u-md-6 am-u-sm-centered"
>
<!-- form start -->
<form
class=
"am-form form-validation"
method=
"post"
action=
"{{:MyUrl('index/user/reg')}}"
request-type=
"ajax-
url"
request-value=
"{{$referer_url}}
"
>
<form
class=
"am-form form-validation"
method=
"post"
action=
"{{:MyUrl('index/user/reg')}}"
request-type=
"ajax-
fun"
request-value=
"RegisterSuccessBack
"
>
<fieldset>
{{if MyC('home_user_login_state') eq 1}}
<span>
已有帐号?
</span>
...
...
@@ -100,4 +100,31 @@
</div>
<!-- conntent end -->
{{include file="public/footer" /}}
\ No newline at end of file
{{include file="public/footer" /}}
<script
type=
"text/javascript"
>
// 注册成功回调
function
RegisterSuccessBack
(
e
)
{
if
(
e
.
code
==
0
)
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
,
'
success
'
);
// 登录返回html处理
if
((
e
.
data
.
body_html
||
null
)
!=
null
)
{
$
(
'
body
'
).
append
(
e
.
data
.
body_html
);
}
setTimeout
(
function
()
{
window
.
location
.
href
=
'
{{$referer_url}}
'
;
},
1500
);
}
else
{
$
(
'
form.form-validation
'
).
find
(
'
button[type="submit"]
'
).
button
(
'
reset
'
);
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
);
}
}
</script>
\ No newline at end of file
application/lang/zh-cn.php
浏览文件 @
252bee07
...
...
@@ -309,7 +309,7 @@ return array(
// 正则
// 用户名
'common_regex_username'
=>
'^[A-Za-z0-9_]{
5
,18}$'
,
'common_regex_username'
=>
'^[A-Za-z0-9_]{
2
,18}$'
,
// 用户名
'common_regex_pwd'
=>
'^.{6,18}$'
,
...
...
application/plugins/touristbuy/Index.php
浏览文件 @
252bee07
...
...
@@ -124,12 +124,10 @@ class Index extends Controller
$ret
=
Service
::
TouristReg
();
if
(
$ret
[
'code'
]
==
0
)
{
if
(
isset
(
$params
[
'is_parent'
])
&&
$params
[
'is_parent'
]
==
1
)
{
return
'<script type="text/javascript">if(self.frameElement && self.frameElement.tagName == "IFRAME"){parent.location.reload();}else{window.location.href="'
.
__MY_URL__
.
'";}</script>'
;
}
else
{
return
$this
->
redirect
(
__MY_URL__
);
}
$this
->
assign
(
'msg'
,
$ret
[
'msg'
]);
$this
->
assign
(
'data'
,
$ret
[
'data'
]);
$this
->
assign
(
'is_parent'
,
isset
(
$params
[
'is_parent'
])
?
$params
[
'is_parent'
]
:
0
);
return
$this
->
fetch
(
'../../../plugins/view/touristbuy/index/success'
);
}
else
{
$this
->
assign
(
'msg'
,
$ret
[
'msg'
]);
return
$this
->
fetch
(
'public/error'
);
...
...
application/plugins/touristbuy/Service.php
浏览文件 @
252bee07
...
...
@@ -41,54 +41,54 @@ class Service
return
DataReturn
(
'已登录,请先退出'
,
-
1
);
}
// 获取应用数据
$ret
=
PluginsService
::
PluginsData
(
'touristbuy'
);
$nickname
=
empty
(
$ret
[
'data'
][
'nickname'
])
?
'游客'
:
$ret
[
'data'
][
'nickname'
];
// 是否重复注册
// 是否有登录纪录
$tourist_user_id
=
session
(
'tourist_user_id'
);
if
(
!
empty
(
$tourist_user_id
))
{
// 更新用户信息
$upd_data
=
[
'username'
=>
$nickname
,
'nickname'
=>
$nickname
,
'upd_time'
=>
time
(),
];
if
(
Db
::
name
(
'User'
)
->
where
([
'id'
=>
$tourist_user_id
])
->
update
(
$upd_data
))
$user
=
UserService
::
UserInfo
(
'id'
,
$tourist_user_id
);
if
(
!
empty
(
$user
))
{
// 用户登录session纪录
if
(
UserService
::
UserLoginRecord
(
$tourist_user_id
))
// 用户登录
$ret
=
UserService
::
Login
([
'accounts'
=>
$user
[
'username'
],
'pwd'
=>
$user
[
'username'
]]);
if
(
$ret
[
'code'
]
==
0
)
{
return
DataReturn
(
$nickname
.
'登录成功'
,
0
);
return
DataReturn
(
'登录成功'
,
0
,
$ret
[
'data'
]
);
}
}
session
(
'tourist_user_id'
,
null
);
}
// 获取应用数据
$ret
=
PluginsService
::
PluginsData
(
'touristbuy'
);
$nickname
=
empty
(
$ret
[
'data'
][
'nickname'
])
?
'游客'
:
$ret
[
'data'
][
'nickname'
];
$nickname
=
$nickname
.
'-'
.
RandomString
(
6
);
// 游客数据
$salt
=
GetNumberCode
(
6
);
$data
=
[
'username'
=>
$nickname
,
'nickname'
=>
$nickname
,
'status'
=>
0
,
'salt'
=>
$salt
,
'pwd'
=>
LoginPwdEncryption
(
$nickname
,
$salt
),
'add_time'
=>
time
(),
'upd_time'
=>
time
(),
];
// 数据添加
$
user_id
=
Db
::
name
(
'User'
)
->
insertGetId
(
$data
);
if
(
$
user_id
>
0
)
$
ret
=
UserService
::
UserInsert
(
$data
,
[
'nickname'
=>
$nickname
,
'pwd'
=>
$nickname
]
);
if
(
$
ret
[
'code'
]
==
0
)
{
// 单独存储用户id
session
(
'tourist_user_id'
,
$
user_id
);
session
(
'tourist_user_id'
,
$
ret
[
'data'
][
'user_id'
]
);
// 用户登录session纪录
if
(
UserService
::
UserLoginRecord
(
$
user_id
))
if
(
UserService
::
UserLoginRecord
(
$
ret
[
'data'
][
'user_id'
]
))
{
return
DataReturn
(
$nickname
.
'登录成功'
,
0
);
return
DataReturn
(
'登录成功'
,
0
,
$ret
[
'data'
]
);
}
}
return
DataReturn
(
$nickname
.
'登录失败'
,
-
100
);
return
DataReturn
(
'登录失败'
,
-
100
);
}
}
?>
\ No newline at end of file
application/plugins/ucenter/Admin.php
0 → 100644
浏览文件 @
252bee07
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace
app\plugins\ucenter
;
use
think\Controller
;
use
app\service\PluginsService
;
/**
* UCenter - 后台管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class
Admin
extends
Controller
{
/**
* 首页
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-07T08:21:54+0800
* @param [array] $params [输入参数]
*/
public
function
index
(
$params
=
[])
{
$ret
=
PluginsService
::
PluginsData
(
'ucenter'
);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
[
'data'
][
'login_sync_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'login_sync_url'
]);
$ret
[
'data'
][
'login_async_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'login_async_url'
]);
$ret
[
'data'
][
'register_sync_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'register_sync_url'
]);
$ret
[
'data'
][
'register_async_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'register_async_url'
]);
$ret
[
'data'
][
'logout_sync_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'logout_sync_url'
]);
$ret
[
'data'
][
'logout_async_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'logout_async_url'
]);
$ret
[
'data'
][
'loginpwdupdate_async_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'loginpwdupdate_async_url'
]);
$ret
[
'data'
][
'accounts_async_url'
]
=
str_replace
(
"
\n
"
,
'<br />'
,
$ret
[
'data'
][
'accounts_async_url'
]);
$this
->
assign
(
'data'
,
$ret
[
'data'
]);
return
$this
->
fetch
(
'../../../plugins/view/ucenter/admin/index'
);
}
else
{
return
$ret
[
'msg'
];
}
}
/**
* 编辑页面
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-07T08:21:54+0800
* @param [array] $params [输入参数]
*/
public
function
saveinfo
(
$params
=
[])
{
$ret
=
PluginsService
::
PluginsData
(
'ucenter'
);
if
(
$ret
[
'code'
]
==
0
)
{
// 是否
$is_whether_list
=
[
0
=>
array
(
'id'
=>
0
,
'name'
=>
'否'
,
'checked'
=>
true
),
1
=>
array
(
'id'
=>
1
,
'name'
=>
'是'
),
];
$this
->
assign
(
'is_whether_list'
,
$is_whether_list
);
$this
->
assign
(
'data'
,
$ret
[
'data'
]);
return
$this
->
fetch
(
'../../../plugins/view/ucenter/admin/saveinfo'
);
}
else
{
return
$ret
[
'msg'
];
}
}
/**
* 数据保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-07T08:21:54+0800
* @param [array] $params [输入参数]
*/
public
function
save
(
$params
=
[])
{
return
PluginsService
::
PluginsDataSave
([
'plugins'
=>
'ucenter'
,
'data'
=>
$params
]);
}
}
?>
\ No newline at end of file
application/plugins/ucenter/Api.php
0 → 100644
浏览文件 @
252bee07
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace
app\plugins\ucenter
;
use
think\Db
;
use
app\service\UserService
;
use
app\service\SafetyService
;
/**
* UCenter - Api
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class
Api
{
/**
* 密码修改
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-09T14:25:44+0800
* @param [array] $params [输入参数]
*/
public
function
LoginPwdUpdate
(
$params
=
[])
{
$user
=
empty
(
$params
[
'data'
])
?
''
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'data'
]),
true
);
$data
=
empty
(
$params
[
'params'
])
?
''
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'params'
]),
true
);
if
(
empty
(
$user
))
{
return
json
(
DataReturn
(
'用户信息为空'
,
-
400
));
}
if
(
empty
(
$data
))
{
return
json
(
DataReturn
(
'参数为空'
,
-
401
));
}
if
(
empty
(
$data
[
'accounts'
])
||
empty
(
$data
[
'my_pwd'
])
||
empty
(
$data
[
'new_pwd'
])
||
empty
(
$data
[
'confirm_new_pwd'
]))
{
return
json
(
DataReturn
(
'账号或密码为空'
,
-
402
));
}
// 用户信息
$where
=
array
(
'username|mobile|email'
=>
$data
[
'accounts'
],
'is_delete_time'
=>
0
);
$temp
=
Db
::
name
(
'User'
)
->
where
(
$where
)
->
find
();
if
(
empty
(
$temp
))
{
return
json
(
DataReturn
(
'用户信息不存在'
,
-
402
));
}
// 调用服务层
$salt
=
GetNumberCode
(
6
);
$user_data
=
[
'accounts'
=>
$data
[
'accounts'
],
'my_pwd'
=>
$data
[
'my_pwd'
],
'new_pwd'
=>
$data
[
'new_pwd'
],
'confirm_new_pwd'
=>
$data
[
'confirm_new_pwd'
],
'user'
=>
$temp
,
];
$ret
=
SafetyService
::
LoginPwdUpdate
(
$user_data
);
return
json
(
DataReturn
(
$ret
[
'msg'
],
$ret
[
'code'
]));
}
/**
* 登录
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-09T14:25:44+0800
* @param [array] $params [输入参数]
*/
public
function
Login
(
$params
=
[])
{
$user
=
empty
(
$params
[
'data'
])
?
''
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'data'
]),
true
);
$data
=
empty
(
$params
[
'params'
])
?
''
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'params'
]),
true
);
if
(
empty
(
$user
))
{
return
json
(
DataReturn
(
'用户信息为空'
,
-
400
));
}
if
(
empty
(
$data
))
{
return
json
(
DataReturn
(
'参数为空'
,
-
401
));
}
if
(
empty
(
$data
[
'accounts'
])
||
empty
(
$data
[
'pwd'
]))
{
return
json
(
DataReturn
(
'账号或密码为空'
,
-
402
));
}
// 调用服务层
$ret
=
UserService
::
Login
(
$data
);
return
json
(
DataReturn
(
$ret
[
'msg'
],
$ret
[
'code'
]));
}
/**
* 注册
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-09T14:25:44+0800
* @param [array] $params [输入参数]
*/
public
function
Register
(
$params
=
[])
{
$user
=
empty
(
$params
[
'data'
])
?
''
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'data'
]),
true
);
$data
=
empty
(
$params
[
'params'
])
?
''
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'params'
]),
true
);
if
(
empty
(
$user
))
{
return
json
(
DataReturn
(
'用户信息为空'
,
-
400
));
}
if
(
empty
(
$data
))
{
return
json
(
DataReturn
(
'参数为空'
,
-
401
));
}
if
(
empty
(
$data
[
'accounts'
])
||
empty
(
$data
[
'pwd'
]))
{
return
json
(
DataReturn
(
'账号或密码为空'
,
-
402
));
}
// 用户注册数据
$salt
=
GetNumberCode
(
6
);
$user_data
=
[
'username'
=>
$data
[
'accounts'
],
'nickname'
=>
$data
[
'accounts'
],
'email'
=>
CheckEmail
(
$data
[
'accounts'
])
?
$data
[
'accounts'
]
:
''
,
'mobile'
=>
CheckMobile
(
$data
[
'accounts'
])
?
$data
[
'accounts'
]
:
''
,
'salt'
=>
$salt
,
'pwd'
=>
LoginPwdEncryption
(
$data
[
'pwd'
],
$salt
),
];
// 调用服务层
$ret
=
UserService
::
UserInsert
(
$user_data
,
$data
);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
UserService
::
Login
(
$data
);
}
return
json
(
DataReturn
(
$ret
[
'msg'
],
$ret
[
'code'
]));
}
/**
* 退出
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-09T14:25:44+0800
* @param [array] $params [输入参数]
*/
public
function
Logout
(
$params
=
[])
{
$user
=
empty
(
$params
[
'data'
])
?
''
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'data'
]),
true
);
if
(
empty
(
$user
))
{
return
json
(
DataReturn
(
'用户信息为空'
,
-
400
));
}
// 调用服务层
$ret
=
UserService
::
Logout
();
return
json
(
DataReturn
(
$ret
[
'msg'
],
$ret
[
'code'
]));
}
}
?>
\ No newline at end of file
application/plugins/ucenter/Hook.php
0 → 100644
浏览文件 @
252bee07
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace
app\plugins\ucenter
;
use
think\Controller
;
use
app\service\PluginsService
;
/**
* UCenter - 钩子入口
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class
Hook
extends
Controller
{
/**
* 应用响应入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-02-09T14:25:44+0800
* @param [array] $params [输入参数]
*/
public
function
run
(
$params
=
[])
{
if
(
!
empty
(
$params
[
'hook_name'
]))
{
$config
=
PluginsService
::
PluginsData
(
'ucenter'
);
if
(
$config
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'无需处理'
,
0
);
if
(
!
empty
(
$params
[
'user'
]))
{
switch
(
$params
[
'hook_name'
])
{
// 注册
case
'plugins_service_user_register_end'
:
$ret
=
$this
->
RegisterEndHandle
(
$config
[
'data'
],
$params
);
break
;
// 登录
case
'plugins_service_user_login_end'
:
$ret
=
$this
->
LoginEndHandle
(
$config
[
'data'
],
$params
);
break
;
// 登录密码修改
case
'plugins_service_user_login_pwd_update'
:
$ret
=
$this
->
LoginPwdUpdateHandle
(
$config
[
'data'
],
$params
);
break
;
// 账号修改
case
'plugins_service_user_accounts_update'
:
$ret
=
$this
->
AccountsUpdateHandle
(
$config
[
'data'
],
$params
);
break
;
}
}
// 退出
if
(
in_array
(
$params
[
'hook_name'
],
[
'plugins_service_user_logout_handle'
]))
{
$ret
=
$this
->
LogoutEndHandle
(
$config
[
'data'
],
$params
);
}
return
$ret
;
}
// 默认返回视图
}
else
{
return
''
;
}
}
/**
* 账号修改
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-02
* @desc description
* @param [array] $config [配置信息]
* @param [array] $params [输入参数]
*/
public
function
AccountsUpdateHandle
(
$config
=
[],
$params
=
[])
{
// 异步接口
if
(
!
empty
(
$config
[
'accounts_async_url'
]))
{
$accounts_async_url
=
explode
(
"
\n
"
,
$config
[
'accounts_async_url'
]);
if
(
!
empty
(
$accounts_async_url
)
&&
is_array
(
$accounts_async_url
))
{
foreach
(
$accounts_async_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
SyncJob
(
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$params
[
'user'
]))
.
'¶ms='
.
urlencode
(
json_encode
(
$params
[
'params'
])));
}
}
}
}
/**
* 登录密码修改
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-02
* @desc description
* @param [array] $config [配置信息]
* @param [array] $params [输入参数]
*/
public
function
LoginPwdUpdateHandle
(
$config
=
[],
$params
=
[])
{
// 异步接口
if
(
!
empty
(
$config
[
'loginpwdupdate_async_url'
]))
{
$loginpwdupdate_async_url
=
explode
(
"
\n
"
,
$config
[
'loginpwdupdate_async_url'
]);
if
(
!
empty
(
$loginpwdupdate_async_url
)
&&
is_array
(
$loginpwdupdate_async_url
))
{
foreach
(
$loginpwdupdate_async_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
SyncJob
(
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$params
[
'user'
]))
.
'¶ms='
.
urlencode
(
json_encode
(
$params
[
'params'
])));
}
}
}
}
/**
* 退出
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-02
* @desc description
* @param [array] $config [配置信息]
* @param [array] $params [输入参数]
*/
public
function
LogoutEndHandle
(
$config
=
[],
$params
=
[])
{
// 用户信息
$user
=
empty
(
$params
[
'user'
])
?
''
:
$params
[
'user'
];
// 同步接口
if
(
!
empty
(
$config
[
'logout_sync_url'
]))
{
$logout_sync_url
=
explode
(
"
\n
"
,
$config
[
'logout_sync_url'
]);
if
(
!
empty
(
$logout_sync_url
)
&&
is_array
(
$logout_sync_url
))
{
foreach
(
$logout_sync_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
$params
[
'body_html'
][]
=
'<script type="text/javascript" src="'
.
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$user
))
.
'"></script>'
;
}
}
}
// 异步接口
if
(
!
empty
(
$config
[
'logout_async_url'
]))
{
$logout_async_url
=
explode
(
"
\n
"
,
$config
[
'logout_async_url'
]);
if
(
!
empty
(
$logout_async_url
)
&&
is_array
(
$logout_async_url
))
{
foreach
(
$logout_async_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
SyncJob
(
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$user
)));
}
}
}
}
/**
* 注册
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-02
* @desc description
* @param [array] $config [配置信息]
* @param [array] $params [输入参数]
*/
public
function
RegisterEndHandle
(
$config
=
[],
$params
=
[])
{
// 同步接口
if
(
!
empty
(
$config
[
'register_sync_url'
]))
{
$register_sync_url
=
explode
(
"
\n
"
,
$config
[
'register_sync_url'
]);
if
(
!
empty
(
$register_sync_url
)
&&
is_array
(
$register_sync_url
))
{
foreach
(
$register_sync_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
$params
[
'body_html'
][]
=
'<script type="text/javascript" src="'
.
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$params
[
'user'
]))
.
'¶ms='
.
urlencode
(
json_encode
(
$params
[
'params'
]))
.
'"></script>'
;
}
}
}
// 异步接口
if
(
!
empty
(
$config
[
'register_async_url'
]))
{
$register_async_url
=
explode
(
"
\n
"
,
$config
[
'register_async_url'
]);
if
(
!
empty
(
$register_async_url
)
&&
is_array
(
$register_async_url
))
{
foreach
(
$register_async_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
SyncJob
(
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$params
[
'user'
]))
.
'¶ms='
.
urlencode
(
json_encode
(
$params
[
'params'
])));
}
}
}
}
/**
* 登录
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-02
* @desc description
* @param [array] $config [配置信息]
* @param [array] $params [输入参数]
*/
public
function
LoginEndHandle
(
$config
=
[],
$params
=
[])
{
// 同步接口
if
(
!
empty
(
$config
[
'login_sync_url'
]))
{
$login_sync_url
=
explode
(
"
\n
"
,
$config
[
'login_sync_url'
]);
if
(
!
empty
(
$login_sync_url
)
&&
is_array
(
$login_sync_url
))
{
foreach
(
$login_sync_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
$params
[
'body_html'
][]
=
'<script type="text/javascript" src="'
.
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$params
[
'user'
]))
.
'¶ms='
.
urlencode
(
json_encode
(
$params
[
'params'
]))
.
'"></script>'
;
}
}
}
// 异步接口
if
(
!
empty
(
$config
[
'login_async_url'
]))
{
$login_async_url
=
explode
(
"
\n
"
,
$config
[
'login_async_url'
]);
if
(
!
empty
(
$login_async_url
)
&&
is_array
(
$login_async_url
))
{
foreach
(
$login_async_url
as
$url
)
{
$join
=
(
stripos
(
$url
,
'?'
)
===
false
)
?
'?'
:
'&'
;
SyncJob
(
$url
.
$join
.
'data='
.
urlencode
(
json_encode
(
$params
[
'user'
]))
.
'¶ms='
.
urlencode
(
json_encode
(
$params
[
'params'
])));
}
}
}
}
}
?>
\ No newline at end of file
application/plugins/ucenter/config.json
0 → 100644
浏览文件 @
252bee07
{
"base"
:{
"plugins"
:
"ucenter"
,
"name"
:
"UCenter"
,
"logo"
:
"
\/
static
\/
upload
\/
images
\/
plugins_ucenter
\/
2019
\/
04
\/
02
\/
1554185833720976.jpg"
,
"author"
:
"Devil"
,
"author_url"
:
"https:
\/\/
shopxo.net
\/
"
,
"version"
:
"1.0.0"
,
"desc"
:
"同步用户登录、注册、密码修改、账号修改"
,
"apply_terminal"
:[
"pc"
,
"h5"
],
"apply_version"
:[
"1.4.0"
],
"is_home"
:
false
},
"hook"
:{
"plugins_service_user_login_end"
:[
"app
\\
plugins
\\
ucenter
\\
Hook"
],
"plugins_service_user_register_end"
:[
"app
\\
plugins
\\
ucenter
\\
Hook"
],
"plugins_service_user_logout_handle"
:[
"app
\\
plugins
\\
ucenter
\\
Hook"
],
"plugins_service_user_login_pwd_update"
:[
"app
\\
plugins
\\
ucenter
\\
Hook"
],
"plugins_service_user_accounts_update"
:[
"app
\\
plugins
\\
ucenter
\\
Hook"
]
}
}
\ No newline at end of file
application/plugins/view/touristbuy/index/success.html
0 → 100644
浏览文件 @
252bee07
{{include file="public/header" /}}
<!-- header nav start -->
{{if isset($is_header) and $is_header eq 1}}
<!-- header top nav -->
{{include file="public/header_top_nav" /}}
<!-- search -->
{{include file="public/nav_search" /}}
<!-- header nav -->
{{include file="public/header_nav" /}}
<!-- goods category -->
{{include file="public/goods_category" /}}
{{/if}}
<!-- header nav end -->
<!-- conntent start -->
<div
class=
"am-g my-content"
>
<div
class=
"am-u-md-6 am-u-sm-centered"
>
<div
class=
"am-panel am-radius tips-success"
>
<div
class=
"am-panel-bd"
>
<i
class=
"am-icon-check-circle am-icon-sm"
></i>
<span
class=
"msg"
>
{{$msg}}
</span>
<div
class=
"tips-nav"
>
<a
href=
"{{$Think.__MY_URL__}}"
class=
"am-btn am-btn-secondary am-radius"
>
回到首页
</a>
</div>
</div>
</div>
</div>
</div>
<!-- conntent end -->
{{include file="public/footer" /}}
{{if !empty($data['body_html'])}}
{{$data.body_html|raw}}
{{/if}}
<script
type=
"text/javascript"
>
{{
if
isset
(
$is_parent
)
and
$is_parent
eq
1
}}
setTimeout
(
function
()
{
if
(
self
.
frameElement
&&
self
.
frameElement
.
tagName
==
"
IFRAME
"
)
{
parent
.
location
.
reload
();
}
else
{
window
.
location
.
href
=
'
{{$Think.__MY_URL__}}
'
;
}
},
1500
);
{{
else
/}
}
setTimeout
(
function
()
{
window
.
location
.
href
=
'
{{$Think.__MY_URL__}}
'
;
},
1500
);
{{
/
if
}}
</script>
\ No newline at end of file
application/plugins/view/ucenter/admin/index.html
0 → 100755
浏览文件 @
252bee07
{{include file="public/header" /}}
<!-- right content start -->
<div
class=
"content-right"
>
<div
class=
"content"
>
<legend>
<span
class=
"fs-16"
>
UCenter
</span>
<a
href=
"{{:MyUrl('admin/pluginsadmin/index')}}"
class=
"fr fs-14 m-t-5 am-icon-mail-reply"
>
返回
</a>
</legend>
<div
class=
"ucenter-content"
>
<div
class=
"items"
>
<label>
同步登录
</label>
<div>
{{if !empty($data['login_sync_url'])}}
{{$data.login_sync_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户登录账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
accounts 账号
<br
/>
pwd 密码
</div>
</div>
<div
class=
"items"
>
<label>
异步登录
</label>
<div>
{{if !empty($data['login_async_url'])}}
{{$data.login_async_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户登录账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
accounts 账号
<br
/>
pwd 密码
</div>
</div>
<div
class=
"items"
>
<label>
同步注册
</label>
<div>
{{if !empty($data['register_sync_url'])}}
{{$data.register_sync_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数(手机号、邮箱、用户名、用户昵称 都为可选参数[但至少会有一个字段存在])
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户注册账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
mobile 手机号
<br
/>
email 邮箱
<br
/>
username 用户名
<br
/>
nickname 用户昵称
<br
/>
pwd 密码
</div>
</div>
<div
class=
"items"
>
<label>
异步注册
</label>
<div>
{{if !empty($data['register_async_url'])}}
{{$data.register_async_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数(手机号、邮箱、用户名、用户昵称 都为可选参数[但至少会有一个字段存在])
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户注册账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
mobile 手机号
<br
/>
email 邮箱
<br
/>
username 用户名
<br
/>
nickname 用户昵称
<br
/>
pwd 密码
</div>
</div>
<div
class=
"items"
>
<label>
同步退出
</label>
<div>
{{if !empty($data['logout_sync_url'])}}
{{$data.logout_sync_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
</div>
</div>
<div
class=
"items"
>
<label>
异步退出
</label>
<div>
{{if !empty($data['logout_async_url'])}}
{{$data.logout_async_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
</div>
</div>
<div
class=
"items"
>
<label>
异步登录密码修改
</label>
<div>
{{if !empty($data['loginpwdupdate_async_url'])}}
{{$data.loginpwdupdate_async_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
accounts 账号
<br
/>
pwd 密码
</div>
</div>
<div
class=
"items"
>
<label>
异步账号修改
</label>
<div>
{{if !empty($data['accounts_async_url'])}}
{{$data.accounts_async_url|raw}}
{{else /}}
无
{{/if}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
accounts 原来的账号
<br
/>
new_accounts 新的账号
<br
/>
field 字段类型(mobile、email、username)
</div>
</div>
<div
class=
"items"
>
<label>
api接口-登录
</label>
<div>
{{:PluginsHomeUrl('ucenter', 'api', 'login')}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户登录账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
accounts 账号
<br
/>
pwd 密码
</div>
</div>
<div
class=
"items"
>
<label>
api接口-注册
</label>
<div>
{{:PluginsHomeUrl('ucenter', 'api', 'register')}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 用户注册账号信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
accounts 账号
<br
/>
pwd 密码
</div>
</div>
<div
class=
"items"
>
<label>
api接口-退出
</label>
<div>
{{:PluginsHomeUrl('ucenter', 'api', 'logout')}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
</div>
</div>
<div
class=
"items"
>
<label>
api接口-登录密码修改
</label>
<div>
{{:PluginsHomeUrl('ucenter', 'api', 'loginpwdupdate')}}
</div>
<div
class=
"am-alert am-alert-warning"
data-am-alert
>
附带参数
<br
/>
data 当前用户数据 [ 以 urlencode(json_encode($data)) ]
<br
/>
params 修改密码参数信息 [ 以 urlencode(json_encode($params)) ]
<br
/>
accounts 账号
<br
/>
my_pwd 原始密码
<br
/>
new_pwd 新密码
<br
/>
confirm_new_pwd 确认新密码
</div>
</div>
<a
href=
"{{:PluginsAdminUrl('ucenter', 'admin', 'saveinfo')}}"
class=
"am-btn am-btn-secondary am-radius btn-loading-example am-btn-sm am-btn-block edit-submit"
>
编辑
</a>
</div>
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
application/plugins/view/ucenter/admin/saveinfo.html
0 → 100755
浏览文件 @
252bee07
{{include file="public/header" /}}
<!-- right content start -->
<div
class=
"content-right"
>
<div
class=
"content"
>
<!-- form start -->
<form
class=
"am-form form-validation view-save"
action=
"{{:PluginsAdminUrl('ucenter', 'admin', 'save')}}"
method=
"POST"
request-type=
"ajax-url"
request-value=
"{{:PluginsAdminUrl('ucenter', 'admin', 'index')}}"
enctype=
"multipart/form-data"
>
<legend>
<span
class=
"fs-16"
>
UCenter
</span>
<a
href=
"{{:PluginsAdminUrl('ucenter', 'admin', 'index')}}"
class=
"fr fs-14 m-t-5 am-icon-mail-reply"
>
返回
</a>
</legend>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
同步登录
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"login_sync_url"
class=
"am-radius am-field-valid"
placeholder=
"同步登录"
data-validation-message=
"请填写同步登录"
>
{{if !empty($data['login_sync_url'])}}{{$data.login_sync_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
异步登录
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"login_async_url"
class=
"am-radius am-field-valid"
placeholder=
"异步登录"
data-validation-message=
"请填写异步登录"
>
{{if !empty($data['login_async_url'])}}{{$data.login_async_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
同步注册
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"register_sync_url"
class=
"am-radius am-field-valid"
placeholder=
"同步注册"
data-validation-message=
"请填写同步注册"
>
{{if !empty($data['register_sync_url'])}}{{$data.register_sync_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
异步注册
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"register_async_url"
class=
"am-radius am-field-valid"
placeholder=
"异步注册"
data-validation-message=
"请填写异步注册"
>
{{if !empty($data['register_async_url'])}}{{$data.register_async_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
同步退出
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"logout_sync_url"
class=
"am-radius am-field-valid"
placeholder=
"同步退出"
data-validation-message=
"请填写同步退出"
>
{{if !empty($data['logout_sync_url'])}}{{$data.logout_sync_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
异步退出
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"logout_async_url"
class=
"am-radius am-field-valid"
placeholder=
"异步退出"
data-validation-message=
"请填写异步退出"
>
{{if !empty($data['logout_async_url'])}}{{$data.logout_async_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
异步登录密码修改
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"loginpwdupdate_async_url"
class=
"am-radius am-field-valid"
placeholder=
"异步登录密码修改"
data-validation-message=
"请填写异步登录密码修改"
>
{{if !empty($data['loginpwdupdate_async_url'])}}{{$data.loginpwdupdate_async_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-file"
>
<label
class=
"block"
>
异步账号修改
<span
class=
"am-form-group-label-tips"
>
一行一个、GET请求
</span></label>
<textarea
rows=
"4"
name=
"accounts_async_url"
class=
"am-radius am-field-valid"
placeholder=
"异步账号修改"
data-validation-message=
"请填写异步账号修改"
>
{{if !empty($data['accounts_async_url'])}}{{$data.accounts_async_url}}{{/if}}
</textarea>
</div>
<div
class=
"am-form-group am-form-group-refreshing"
>
<button
type=
"submit"
class=
"am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100"
data-am-loading=
"{loadingText:'处理中...'}"
>
保存
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
application/plugins/view/ucenter/index/content.html
0 → 100755
浏览文件 @
252bee07
<div
class=
"am-alert am-alert-warning am-radius"
style=
"margin: 0;"
>
<div
class=
"am-container"
>
{{$data.content}}
</div>
</div>
\ No newline at end of file
application/service/SafetyService.php
浏览文件 @
252bee07
...
...
@@ -11,6 +11,7 @@
namespace
app\service
;
use
think\Db
;
use
think\facade\Hook
;
use
app\service\UserService
;
/**
...
...
@@ -65,7 +66,7 @@ class SafetyService
}
// 获取用户账户信息
$user
=
Db
::
name
(
'User'
)
->
field
(
'id,pwd,salt'
)
->
find
(
$params
[
'user'
][
'id'
]);
$user
=
Db
::
name
(
'User'
)
->
field
(
'id,pwd,salt
,username,mobile,email
'
)
->
find
(
$params
[
'user'
][
'id'
]);
// 原密码校验
if
(
LoginPwdEncryption
(
$params
[
'my_pwd'
],
$user
[
'salt'
])
!=
$user
[
'pwd'
])
...
...
@@ -79,20 +80,54 @@ class SafetyService
return
DataReturn
(
'确认密码与新密码不一致'
,
-
5
);
}
// 更新用户密码
$salt
=
GetNumberCode
(
6
);
$data
=
[
'pwd'
=>
LoginPwdEncryption
(
trim
(
$params
[
'new_pwd'
]),
$salt
),
'salt'
=>
$salt
,
'upd_time'
=>
time
(),
];
// 更新数据库
if
(
Db
::
name
(
'User'
)
->
where
([
'id'
=>
$params
[
'user'
][
'id'
]])
->
update
(
$data
)
!==
false
)
// 密码修改
$accounts
=
empty
(
$user
[
'mobile'
])
?
(
empty
(
$user
[
'email'
])
?
$user
[
'username'
]
:
$user
[
'email'
])
:
$user
[
'mobile'
];
$ret
=
self
::
UserLoginPwdUpdate
(
$accounts
,
$user
[
'id'
],
$params
[
'new_pwd'
]);
if
(
$ret
[
'code'
]
!=
0
)
{
return
DataReturn
(
'操作成功'
,
0
);
}
return
DataReturn
(
'操作失败'
,
-
100
);
return
$ret
;
}
/**
* 用户密码修改
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-03
* @desc description
* @param [string] $accounts [账号]
* @param [int] $user_id [用户id]
* @param [string] $pwd [密码]
*/
public
static
function
UserLoginPwdUpdate
(
$accounts
,
$user_id
,
$pwd
)
{
$salt
=
GetNumberCode
(
6
);
$data
=
array
(
'pwd'
=>
LoginPwdEncryption
(
trim
(
$pwd
),
$salt
),
'salt'
=>
$salt
,
'upd_time'
=>
time
(),
);
if
(
Db
::
name
(
'User'
)
->
where
([
'id'
=>
$user_id
])
->
update
(
$data
)
!==
false
)
{
// 用户登录密码修改钩子
$hook_name
=
'plugins_service_user_login_pwd_update'
;
$ret
=
Hook
::
listen
(
$hook_name
,
[
'hook_name'
=>
$hook_name
,
'is_backend'
=>
true
,
'params'
=>
[
'accounts'
=>
$accounts
,
'pwd'
=>
$pwd
],
'user_id'
=>
$user_id
,
'user'
=>
Db
::
name
(
'User'
)
->
field
(
'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'
)
->
where
([
'id'
=>
$user_id
])
->
find
(),
]);
if
(
isset
(
$ret
[
'code'
])
&&
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
}
return
DataReturn
(
'修改成功'
);
}
return
DataReturn
(
'修改失败'
,
-
100
);
}
/**
...
...
@@ -107,7 +142,7 @@ class SafetyService
private
static
function
IsExistAccounts
(
$accounts
,
$type
)
{
$field
=
(
$type
==
'sms'
)
?
'mobile'
:
'email'
;
$user
=
Db
::
name
(
'User'
)
->
where
([
$field
=>
$accounts
])
->
value
(
'id'
);
$user
=
Db
::
name
(
'User'
)
->
where
([
$field
=>
$accounts
])
->
field
(
'id'
)
->
find
(
);
if
(
!
empty
(
$user
))
{
$msg
=
(
$type
==
'sms'
)
?
'手机号码已存在'
:
'电子邮箱已存在'
;
...
...
@@ -355,10 +390,12 @@ class SafetyService
// 帐号是否已存在
$ret
=
self
::
IsExistAccounts
(
$params
[
'accounts'
],
$params
[
'type'
]);
if
(
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
}
if
(
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
}
else
{
$user
=
Db
::
name
(
'User'
)
->
field
(
'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'
)
->
where
([
'id'
=>
$params
[
'user'
][
'id'
]])
->
find
();
}
// 验证码校验
$verify_params
=
array
(
...
...
@@ -371,6 +408,7 @@ class SafetyService
}
else
{
$obj
=
new
\
base\Email
(
$verify_params
);
}
// 是否已过期
if
(
!
$obj
->
CheckExpire
())
{
...
...
@@ -389,7 +427,7 @@ class SafetyService
'upd_time'
=>
time
(),
);
// 更新数据库
if
(
Db
::
name
(
'User'
)
->
where
(
array
(
'id'
=>
$params
[
'user'
][
'id'
])
)
->
update
(
$data
)
!==
false
)
if
(
Db
::
name
(
'User'
)
->
where
(
[
'id'
=>
$params
[
'user'
][
'id'
]]
)
->
update
(
$data
)
!==
false
)
{
// 更新用户session数据
UserService
::
UserLoginRecord
(
$params
[
'user'
][
'id'
]);
...
...
@@ -400,6 +438,20 @@ class SafetyService
// 清除验证码
$obj
->
Remove
();
// 账号修改钩子
$hook_name
=
'plugins_service_user_accounts_update'
;
$ret
=
Hook
::
listen
(
$hook_name
,
[
'hook_name'
=>
$hook_name
,
'is_backend'
=>
true
,
'params'
=>
[
'accounts'
=>
$user
[
$field
],
'new_accounts'
=>
$params
[
'accounts'
],
'field'
=>
$field
],
'user_id'
=>
$user
[
'id'
],
'user'
=>
Db
::
name
(
'User'
)
->
field
(
'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'
)
->
where
([
'id'
=>
$user
[
'id'
]])
->
find
(),
]);
if
(
isset
(
$ret
[
'code'
])
&&
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
}
return
DataReturn
(
'操作成功'
,
0
);
}
return
DataReturn
(
'操作失败'
,
-
100
);
...
...
application/service/UserService.php
浏览文件 @
252bee07
...
...
@@ -13,6 +13,7 @@ namespace app\service;
use
think\Db
;
use
think\facade\Hook
;
use
app\service\RegionService
;
use
app\service\SafetyService
;
/**
* 用户服务层
...
...
@@ -850,9 +851,9 @@ class UserService
}
// 登录帐号格式校验
if
(
!
CheckMobile
(
$params
[
'accounts'
])
&&
!
CheckEmail
(
$params
[
'accounts'
]))
if
(
empty
(
$params
[
'accounts'
]))
{
return
DataReturn
(
'
手机/邮箱格式
有误'
,
-
1
);
return
DataReturn
(
'
登录账号
有误'
,
-
1
);
}
// 密码
...
...
@@ -863,7 +864,7 @@ class UserService
}
// 获取用户账户信息
$where
=
array
(
'mobile|email'
=>
$params
[
'accounts'
],
'is_delete_time'
=>
0
);
$where
=
array
(
'
username|
mobile|email'
=>
$params
[
'accounts'
],
'is_delete_time'
=>
0
);
$user
=
Db
::
name
(
'User'
)
->
field
(
'id,pwd,salt,status'
)
->
where
(
$where
)
->
find
();
if
(
empty
(
$user
))
{
...
...
@@ -902,25 +903,34 @@ class UserService
'salt'
=>
$salt
,
'upd_time'
=>
time
(),
);
if
(
Db
::
name
(
'User'
)
->
where
(
array
(
'id'
=>
$user
[
'id'
])
)
->
update
(
$data
)
!==
false
)
if
(
Db
::
name
(
'User'
)
->
where
(
[
'id'
=>
$user
[
'id'
]]
)
->
update
(
$data
)
!==
false
)
{
// 登录记录
if
(
self
::
UserLoginRecord
(
$user
[
'id'
]))
{
// 返回前端html代码
$body_html
=
[];
// 用户登录后钩子
$hook_name
=
'plugins_service_user_login_end'
;
$ret
=
Hook
::
listen
(
$hook_name
,
[
'hook_name'
=>
$hook_name
,
'is_backend'
=>
true
,
'params'
=>
&
$params
,
'user_id'
=>
$user
[
'id'
]
'user_id'
=>
$user
[
'id'
],
'user'
=>
Db
::
name
(
'User'
)
->
field
(
'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'
)
->
where
([
'id'
=>
$user
[
'id'
]])
->
find
(),
'body_html'
=>
&
$body_html
,
]);
if
(
isset
(
$ret
[
'code'
])
&&
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
}
return
DataReturn
(
'登录成功'
,
0
);
// 登录返回
$result
=
[
'body_html'
=>
is_array
(
$body_html
)
?
implode
(
' '
,
$body_html
)
:
$body_html
,
];
return
DataReturn
(
'登录成功'
,
0
,
$result
);
}
}
return
DataReturn
(
'登录失效,请重新登录'
,
-
100
);
...
...
@@ -1021,8 +1031,8 @@ class UserService
}
// 数据添加
$user_
id
=
Db
::
name
(
'User'
)
->
insertGetId
(
$data
);
if
(
$user_
id
>
0
)
$user_
ret
=
self
::
UserInsert
(
$data
,
$params
);
if
(
$user_
ret
[
'code'
]
==
0
)
{
// 清除验证码
$obj
->
Remove
();
...
...
@@ -1034,11 +1044,13 @@ class UserService
}
// 用户登录session纪录
if
(
self
::
UserLoginRecord
(
$user_
id
))
if
(
self
::
UserLoginRecord
(
$user_
ret
[
'data'
][
'user_id'
]
))
{
return
DataReturn
(
'注册成功'
,
0
);
return
DataReturn
(
'注册成功'
,
0
,
$user_ret
);
}
return
DataReturn
(
'注册成功,请到登录页面登录帐号'
);
}
else
{
return
$user_ret
;
}
return
DataReturn
(
'注册失败'
,
-
100
);
}
...
...
@@ -1399,18 +1411,20 @@ class UserService
return
DataReturn
(
'验证码错误'
,
-
11
);
}
// 更新用户密码
$salt
=
GetNumberCode
(
6
);
$data
=
array
(
'pwd'
=>
LoginPwdEncryption
(
$params
[
'pwd'
],
$salt
),
'salt'
=>
$salt
,
'upd_time'
=>
time
(),
);
if
(
Db
::
name
(
'User'
)
->
where
(
array
(
$ret
[
'data'
]
=>
$params
[
'accounts'
]))
->
update
(
$data
)
!==
false
)
// 获取用户信息
$user
=
Db
::
name
(
'User'
)
->
where
([
$ret
[
'data'
]
=>
$params
[
'accounts'
]])
->
find
();
if
(
empty
(
$user
))
{
return
DataReturn
(
'
操作成功'
);
return
DataReturn
(
'
用户信息不存在'
,
-
12
);
}
return
DataReturn
(
'操作失败'
,
-
100
);
// 密码修改
$ret
=
SafetyService
::
UserLoginPwdUpdate
(
$params
[
'accounts'
],
$user
[
'id'
],
$params
[
'pwd'
]);
if
(
$ret
[
'code'
]
!=
0
)
{
return
DataReturn
(
'操作成功'
,
0
);
}
return
$ret
;
}
/**
...
...
@@ -1523,6 +1537,66 @@ class UserService
return
Db
::
name
(
'User'
)
->
where
([
$field
=>
$value
,
'is_delete_time'
=>
0
])
->
find
();
}
/**
* 用户添加
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-04-03
* @desc description
* @param [array] $data [用户添加数据]
* @param [array] $params [输入参数]
*/
public
static
function
UserInsert
(
$data
,
$params
=
[])
{
// 账号是否存在,以用户名 手机 邮箱 作为唯一
if
(
!
empty
(
$data
[
'username'
]))
{
$temp
=
Db
::
name
(
'User'
)
->
where
([
'username'
=>
$data
[
'username'
],
'is_delete_time'
=>
0
])
->
find
();
}
else
if
(
!
empty
(
$data
[
'mobile'
]))
{
$temp
=
Db
::
name
(
'User'
)
->
where
([
'mobile'
=>
$data
[
'mobile'
],
'is_delete_time'
=>
0
])
->
find
();
}
else
if
(
!
empty
(
$data
[
'email'
]))
{
$temp
=
Db
::
name
(
'User'
)
->
where
([
'email'
=>
$data
[
'email'
],
'is_delete_time'
=>
0
])
->
find
();
}
if
(
!
empty
(
$temp
))
{
return
DataReturn
(
'账号已存在'
,
-
10
);
}
$user_id
=
Db
::
name
(
'User'
)
->
insertGetId
(
$data
);
if
(
$user_id
>
0
)
{
// 返回前端html代码
$body_html
=
[];
// 注册成功后钩子
$hook_name
=
'plugins_service_user_register_end'
;
$ret
=
Hook
::
listen
(
$hook_name
,
[
'hook_name'
=>
$hook_name
,
'is_backend'
=>
true
,
'params'
=>
&
$params
,
'user_id'
=>
$user_id
,
'user'
=>
Db
::
name
(
'User'
)
->
field
(
'id,username,nickname,mobile,email,gender,avatar,province,city,birthday'
)
->
where
([
'id'
=>
$user_id
])
->
find
(),
'body_html'
=>
&
$body_html
,
]);
if
(
isset
(
$ret
[
'code'
])
&&
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
}
// 登录返回
$result
=
[
'body_html'
=>
is_array
(
$body_html
)
?
implode
(
' '
,
$body_html
)
:
$body_html
,
'user_id'
=>
$user_id
,
];
return
DataReturn
(
'添加成功'
,
0
,
$result
);
}
return
DataReturn
(
'添加失败'
,
-
100
);
}
/**
* app用户注册
* @author Devil
...
...
@@ -1630,7 +1704,13 @@ class UserService
{
$data
[
'referrer'
]
=
isset
(
$params
[
'referrer'
])
?
intval
(
$params
[
'referrer'
])
:
0
;
$data
[
'add_time'
]
=
time
();
$user_id
=
Db
::
name
(
'User'
)
->
insertGetId
(
$data
);
$user_ret
=
self
::
UserInsert
(
$data
,
$params
);
if
(
$user_ret
[
'code'
]
==
0
)
{
$user_id
=
$user_ret
[
'data'
][
'user_id'
];
}
else
{
return
$user_ret
;
}
}
else
{
$data
[
'upd_time'
]
=
time
();
if
(
Db
::
name
(
'User'
)
->
where
(
$where
)
->
update
(
$data
))
...
...
@@ -1702,5 +1782,43 @@ class UserService
}
}
/**
* 用户退出
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-05T14:31:23+0800
* @param [array] $params [输入参数]
*/
public
static
function
Logout
(
$params
=
[])
{
// 用户信息
$user
=
self
::
LoginUserInfo
();
// 清除session
session
(
'user'
,
null
);
// html代码
$body_html
=
[];
// 用户退出钩子
$hook_name
=
'plugins_service_user_logout_handle'
;
$ret
=
Hook
::
listen
(
$hook_name
,
[
'hook_name'
=>
$hook_name
,
'is_backend'
=>
true
,
'params'
=>
[],
'user_id'
=>
isset
(
$user
[
'id'
])
?
$user
[
'id'
]
:
0
,
'user'
=>
$user
,
'body_html'
=>
&
$body_html
,
]);
// 数据返回
$result
=
[
'body_html'
=>
is_array
(
$body_html
)
?
implode
(
' '
,
$body_html
)
:
$body_html
,
];
return
DataReturn
(
'退出成功'
,
0
,
$result
);
}
}
?>
\ No newline at end of file
application/tags.php
浏览文件 @
252bee07
...
...
@@ -45,6 +45,7 @@ return array (
'plugins_service_user_login_end'
=>
array
(
0
=>
'app\\plugins\\userloginrewardintegral\\Hook'
,
1
=>
'app\\plugins\\ucenter\\Hook'
,
),
'plugins_css'
=>
array
(
...
...
@@ -117,5 +118,21 @@ return array (
0
=>
'app\\plugins\\freightfee\\Hook'
,
1
=>
'app\\plugins\\newuserreduction\\Hook'
,
),
'plugins_service_user_register_end'
=>
array
(
0
=>
'app\\plugins\\ucenter\\Hook'
,
),
'plugins_service_user_logout_handle'
=>
array
(
0
=>
'app\\plugins\\ucenter\\Hook'
,
),
'plugins_service_user_login_pwd_update'
=>
array
(
0
=>
'app\\plugins\\ucenter\\Hook'
,
),
'plugins_service_user_accounts_update'
=>
array
(
0
=>
'app\\plugins\\ucenter\\Hook'
,
),
);
?>
\ No newline at end of file
config/app.php
浏览文件 @
252bee07
...
...
@@ -19,7 +19,7 @@ return [
// 应用地址
'app_host'
=>
''
,
// 应用调试模式
'app_debug'
=>
fals
e
,
'app_debug'
=>
tru
e
,
// 应用Trace
'app_trace'
=>
false
,
// 是否支持多模块
...
...
config/shopxo.sql
浏览文件 @
252bee07
此差异已折叠。
点击以展开。
public/static/index/default/css/common.css
浏览文件 @
252bee07
...
...
@@ -413,7 +413,7 @@ background:url(../images/ibar_sprites.png) no-repeat;background-position:0px -23
/* 公共错误提示页面 */
.tips-error
,
.tips-success
{
margin
:
10%
0
;
}
.tips-pay-success
,
.tips-pay-error
{
box-shadow
:
none
;
text-align
:
center
;
}
.tips-pay-success
,
.tips-pay-error
,
.tips-error
,
.tips-success
{
box-shadow
:
none
;
text-align
:
center
;
}
.tips-error
i
.am-icon-times-circle
,
.tips-success
i
.am-icon-check-circle
{
font-size
:
26px
;
}
.tips-error
i
.am-icon-times-circle
{
color
:
#F44336
;
}
.tips-success
i
.am-icon-check-circle
{
color
:
#4CAF50
;
}
...
...
public/static/plugins/css/ucenter/admin.css
0 → 100755
浏览文件 @
252bee07
/**
* 首页
*/
.ucenter-content
.items
{
margin
:
10px
0
20px
0
;
border-bottom
:
1px
dashed
#f1f1f1
;
padding-bottom
:
20px
;
}
.ucenter-content
.edit-submit
{
margin-bottom
:
20px
;
}
/**
* 编辑页面
*/
ul
.plugins-images-view
li
{
width
:
100%
;
height
:
auto
;
}
.form-date
input
{
width
:
30%
!important
;
display
:
-webkit-inline-box
!important
;
}
.form-date
span
{
vertical-align
:
middle
;
}
\ No newline at end of file
public/static/upload/images/plugins_ucenter/2019/04/02/1554185833720976-s.jpg
0 → 100644
浏览文件 @
252bee07
3.1 KB
public/static/upload/images/plugins_ucenter/2019/04/02/1554185833720976.jpg
0 → 100644
浏览文件 @
252bee07
23.6 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录