mirror of
https://gitee.com/zongzhige/shopxo.git
synced 2024-11-30 19:08:59 +08:00
新增用户登录赠送积分应用
This commit is contained in:
parent
2044d963d5
commit
f842cb422e
@ -37,7 +37,7 @@ class Buy extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,7 @@ class Cart extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -81,7 +81,7 @@ class Common extends Controller
|
||||
private function CommonPluginsInit()
|
||||
{
|
||||
// 公共顶部钩子
|
||||
$this->assign('plugins_common_top_data', Hook::listen('plugins_common_top'));
|
||||
$this->assign('plugins_common_top_data', Hook::listen('plugins_common_top', ['hook_name'=>'plugins_common_top', 'is_control'=>false]));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -105,13 +105,13 @@ class Common extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* [Is_Login 登录校验]
|
||||
* [IsLogin 登录校验]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2017-03-09T11:43:48+0800
|
||||
*/
|
||||
protected function Is_Login()
|
||||
protected function IsLogin()
|
||||
{
|
||||
if(session('user') == null)
|
||||
{
|
||||
|
@ -120,7 +120,7 @@ class Goods extends Common
|
||||
public function Favor()
|
||||
{
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
|
||||
// 开始处理
|
||||
$params = input('post.');
|
||||
|
@ -34,7 +34,7 @@ class Message extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,7 +35,7 @@ class Order extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,7 @@ class Personal extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,7 @@ class Safety extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -74,7 +74,7 @@ class User extends Common
|
||||
public function Index()
|
||||
{
|
||||
// 登录校验
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
|
||||
// 订单总数
|
||||
$where = ['user_id'=>$this->user['id'], 'is_delete_time'=>0, 'user_is_delete_time'=>0];
|
||||
@ -137,7 +137,7 @@ class User extends Common
|
||||
$this->assign('goods_browse_list', $data['data']);
|
||||
|
||||
// 用户中心顶部钩子
|
||||
$this->assign('plugins_user_center_top_data', Hook::listen('plugins_user_center_top'));
|
||||
$this->assign('plugins_user_center_top_data', Hook::listen('plugins_user_center_top', ['hook_name'=>'plugins_user_center_top', 'is_control'=>false]));
|
||||
|
||||
return $this->fetch();
|
||||
}
|
||||
@ -434,7 +434,7 @@ class User extends Common
|
||||
}
|
||||
|
||||
// 登录校验
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
|
||||
$params = $_POST;
|
||||
$params['user'] = $this->user;
|
||||
|
@ -34,7 +34,7 @@ class UserAddress extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,7 @@ class UserFavor extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,7 @@ class UserGoodsBrowse extends Common
|
||||
parent::__construct();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,7 @@ class UserIntegral extends Common
|
||||
parent::_initialize();
|
||||
|
||||
// 是否登录
|
||||
$this->Is_Login();
|
||||
$this->IsLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -32,9 +32,9 @@ class Hook
|
||||
public function run($params = [])
|
||||
{
|
||||
// 是否控制器钩子
|
||||
if(isset($params['is_control']) && $params['is_control'] === true)
|
||||
if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
|
||||
{
|
||||
return [];
|
||||
return DataReturn('无需处理', 0);
|
||||
|
||||
// 默认返回视图
|
||||
} else {
|
||||
|
@ -32,9 +32,9 @@ class Hook
|
||||
public function run($params = [])
|
||||
{
|
||||
// 是否控制器钩子
|
||||
if(isset($params['is_control']) && $params['is_control'] === true)
|
||||
if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
|
||||
{
|
||||
return [];
|
||||
return DataReturn('无需处理', 0);
|
||||
|
||||
// 默认返回视图
|
||||
} else {
|
||||
|
@ -32,9 +32,9 @@ class Hook
|
||||
public function run($params = [])
|
||||
{
|
||||
// 是否控制器钩子
|
||||
if(isset($params['is_control']) && $params['is_control'] === true)
|
||||
if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
|
||||
{
|
||||
return [];
|
||||
return DataReturn('无需处理', 0);
|
||||
|
||||
// 默认返回视图
|
||||
} else {
|
||||
|
90
application/plugins/userlogingiveintegral/Admin.php
Normal file
90
application/plugins/userlogingiveintegral/Admin.php
Normal file
@ -0,0 +1,90 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\plugins\userlogingiveintegral;
|
||||
|
||||
use app\service\PluginsService;
|
||||
|
||||
/**
|
||||
* 登录赠送积分 - 后台管理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-01T21:51:08+0800
|
||||
*/
|
||||
class Admin
|
||||
{
|
||||
/**
|
||||
* 首页
|
||||
* @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('userlogingiveintegral');
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
// 数组组装
|
||||
$data = [
|
||||
'data' => $ret['data'],
|
||||
];
|
||||
return DataReturn('处理成功', 0, $data);
|
||||
} else {
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑页面
|
||||
* @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('userlogingiveintegral');
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
// 是否
|
||||
$is_whether_list = [
|
||||
0 => array('id' => 0, 'name' => '否'),
|
||||
1 => array('id' => 1, 'name' => '是', 'checked' => true),
|
||||
];
|
||||
|
||||
// 数组组装
|
||||
$data = [
|
||||
'is_whether_list' => $is_whether_list,
|
||||
'data' => $ret['data'],
|
||||
];
|
||||
return DataReturn('处理成功', 0, $data);
|
||||
} else {
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据保存
|
||||
* @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'=>'userlogingiveintegral', 'data'=>$params]);
|
||||
}
|
||||
}
|
||||
?>
|
137
application/plugins/userlogingiveintegral/Hook.php
Normal file
137
application/plugins/userlogingiveintegral/Hook.php
Normal file
@ -0,0 +1,137 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2018 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\plugins\userlogingiveintegral;
|
||||
|
||||
use think\Db;
|
||||
use app\service\PluginsService;
|
||||
use app\service\IntegralService;
|
||||
use app\service\UserService;
|
||||
|
||||
/**
|
||||
* 登录赠送积分 - 钩子入口
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-01T21:51:08+0800
|
||||
*/
|
||||
class Hook
|
||||
{
|
||||
/**
|
||||
* 应用响应入口
|
||||
* @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(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
|
||||
{
|
||||
if(!empty($params['user']))
|
||||
{
|
||||
switch($params['hook_name'])
|
||||
{
|
||||
// 用户登录成功后赠送积分
|
||||
case 'plugins_user_login_end' :
|
||||
$ret = $this->LoginGiveIntegral($params);
|
||||
break;
|
||||
|
||||
default :
|
||||
$ret = DataReturn('无需处理', 0);
|
||||
}
|
||||
return $ret;
|
||||
} else {
|
||||
return DataReturn('钩子传入参数有误', -600);
|
||||
}
|
||||
|
||||
// 默认返回视图
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送积分
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2019-02-14T22:19:08+0800
|
||||
* @param [array] $params [参数]
|
||||
*/
|
||||
private function LoginGiveIntegral($params)
|
||||
{
|
||||
// 获取应用数据
|
||||
$ret = PluginsService::PluginsData('userlogingiveintegral');
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
// 限制时间是否已结束
|
||||
if(!empty($ret['data']['time_start']))
|
||||
{
|
||||
// 是否已开始
|
||||
if(strtotime($ret['data']['time_start']) > time())
|
||||
{
|
||||
return DataReturn('不在限制时间范围、无需处理', 0);
|
||||
}
|
||||
}
|
||||
if(!empty($ret['data']['time_end']))
|
||||
{
|
||||
// 是否已结束
|
||||
if(strtotime($ret['data']['time_end']) < time())
|
||||
{
|
||||
return DataReturn('不在限制时间范围、无需处理', 0);
|
||||
}
|
||||
}
|
||||
|
||||
// 是否日一次限制
|
||||
if(isset($ret['data']['is_day_once']) && $ret['data']['is_day_once'] == 1)
|
||||
{
|
||||
$where = [
|
||||
['user_id', '=', $params['user']['id']],
|
||||
['add_time', '>=', strtotime(date('Y-m-d 00:00:00'))],
|
||||
['type', '=', 1],
|
||||
['msg', '=', '登录赠送积分'],
|
||||
];
|
||||
$log = Db::name('UserIntegralLog')->where($where)->find();
|
||||
if(!empty($log))
|
||||
{
|
||||
return DataReturn('今日已赠送、无需处理', 0);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取用户积分
|
||||
$give_integral = empty($ret['data']['give_integral']) ? 0 : intval($ret['data']['give_integral']);
|
||||
if(!empty($give_integral))
|
||||
{
|
||||
// 用户积分添加
|
||||
$user_integral = Db::name('User')->where(['id'=>$params['user']['id']])->value('integral');
|
||||
if(!Db::name('User')->where(['id'=>$params['user']['id']])->setInc('integral', $give_integral))
|
||||
{
|
||||
return DataReturn('登录赠送积分失败', -10);
|
||||
}
|
||||
|
||||
// 积分日志
|
||||
IntegralService::UserIntegralLogAdd($params['user']['id'], $user_integral, $user_integral+$give_integral, '登录赠送积分', 1);
|
||||
|
||||
// 更新用户登录缓存数据
|
||||
UserService::UserLoginRecord($params['user']['id']);
|
||||
|
||||
return DataReturn('登录赠送积分成功', 0);
|
||||
} else {
|
||||
return DataReturn('登录赠送积分应用配置有误', -600);
|
||||
}
|
||||
} else {
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
24
application/plugins/userlogingiveintegral/config.json
Normal file
24
application/plugins/userlogingiveintegral/config.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"base":{
|
||||
"plugins":"userlogingiveintegral",
|
||||
"name":"登录赠送积分",
|
||||
"logo":"\/static\/upload\/images\/plugins_userlogingiveintegral\/2019\/02\/14\/1550151082834629.png",
|
||||
"author":"Devil",
|
||||
"author_url":"https:\/\/shopxo.net\/",
|
||||
"version":"1.0.0",
|
||||
"desc":"用户登录后赠送积分",
|
||||
"apply_terminal":[
|
||||
"pc",
|
||||
"h5"
|
||||
],
|
||||
"apply_version":[
|
||||
"1.3.0"
|
||||
],
|
||||
"is_home":false
|
||||
},
|
||||
"hook":{
|
||||
"plugins_user_login_end":[
|
||||
"app\\plugins\\userlogingiveintegral\\Hook"
|
||||
]
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">公告内容<span class="fs-12 fw-100 cr-999">(空则不显示)</span></label>
|
||||
<textarea rows="3" name="content" class="am-radius am-field-valid" placeholder="商城公告" data-validation-message="请填写公告内容">{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
|
||||
<textarea rows="3" name="content" class="am-radius am-field-valid" placeholder="公告内容" data-validation-message="请填写公告内容">{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">公告内容<span class="fs-12 fw-100 cr-999">(空则不显示)</span></label>
|
||||
<textarea rows="3" name="content" class="am-radius am-field-valid" placeholder="商城公告" data-validation-message="请填写公告内容">{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
|
||||
<textarea rows="3" name="content" class="am-radius am-field-valid" placeholder="公告内容" data-validation-message="请填写公告内容">{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
|
@ -0,0 +1,55 @@
|
||||
{{include file="public/header" /}}
|
||||
|
||||
<!-- right content start -->
|
||||
<div class="content-right">
|
||||
<div class="content">
|
||||
<legend>
|
||||
<span class="fs-16">登录赠送积分</span>
|
||||
<a href="{{:MyUrl('admin/pluginsadmin/index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
|
||||
</legend>
|
||||
|
||||
<div class="userlogingiveintegral-content">
|
||||
<div class="items">
|
||||
<label>赠送积分</label>
|
||||
<div>
|
||||
{{if !empty($data['give_integral'])}}
|
||||
{{$data.give_integral}}
|
||||
{{else /}}
|
||||
0
|
||||
{{/if}}
|
||||
积分
|
||||
</div>
|
||||
</div>
|
||||
<div class="items">
|
||||
<label>是否日/次</label>
|
||||
<div>
|
||||
{{if isset($data['is_day_once']) and $data['is_day_once'] eq 1}}
|
||||
是
|
||||
{{else /}}
|
||||
否
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="items">
|
||||
<label>有效时间</label>
|
||||
<div>
|
||||
{{if !empty($data['time_start']) and !empty($data['time_end'])}}
|
||||
{{$data.time_start}} ~ {{$data.time_end}}
|
||||
{{elseif !empty($data['time_start']) and empty($data['time_end'])}}
|
||||
{{$data.time_start}} ~ 长期有效
|
||||
{{elseif empty($data['time_start']) and !empty($data['time_end'])}}
|
||||
立即生效 ~ {{$data.time_end}}
|
||||
{{else /}}
|
||||
无限制
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<a href="{{:PluginsAdminUrl('userlogingiveintegral', '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 -->
|
@ -0,0 +1,49 @@
|
||||
{{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('userlogingiveintegral', 'admin', 'save')}}" method="POST" request-type="ajax-url" request-value="{{:PluginsAdminUrl('userlogingiveintegral', 'admin', 'index')}}" enctype="multipart/form-data">
|
||||
<legend>
|
||||
<span class="fs-16">登录赠送积分</span>
|
||||
<a href="{{:PluginsAdminUrl('userlogingiveintegral', 'admin', 'index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
|
||||
</legend>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>赠送积分</label>
|
||||
<input type="number" name="give_integral" placeholder="赠送积分" min="1" max="100000000" data-validation-message="赠送积分 1~100000000" class="am-radius" value="{{if empty($data)}}1{{else /}}{{$data.give_integral}}{{/if}}" required />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>是否日/次<span class="fs-12 fw-100 cr-999">(默认当日只赠送一次)</span></label>
|
||||
<div>
|
||||
{{foreach $is_whether_list as $v}}
|
||||
<label class="am-radio-inline m-r-10">
|
||||
<input type="radio" name="is_day_once" value="{{$v.id}}" {{if isset($data['is_day_once']) and $data['is_day_once'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_day_once']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>有效时间<span class="fs-12 fw-100 cr-999">(留空则不限制)</span></label>
|
||||
<div class="form-date">
|
||||
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if !empty($data['time_start'])}}value="{{$data.time_start}}"{{/if}}/>
|
||||
<span>~</span>
|
||||
<input type="text" autocomplete="off" class="Wdate am-radius" placeholder="结束时间" name="time_end" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if !empty($data['time_end'])}}value="{{$data.time_end}}"{{/if}}/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<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 -->
|
@ -461,13 +461,10 @@ class PluginsAdminService
|
||||
}
|
||||
|
||||
// 应用主文件生成
|
||||
if(empty($params['id']))
|
||||
$ret = self::PluginsApplicationCreated($params, $app_dir);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
$ret = self::PluginsApplicationCreated($params, $app_dir);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
return DataReturn(empty($params['id']) ? '创建成功' : '更新成功', 0);
|
||||
@ -530,9 +527,14 @@ class Hook
|
||||
public function run(\$params = [])
|
||||
{
|
||||
// 是否控制器钩子
|
||||
if(isset(\$params['is_control']) && \$params['is_control'] === true)
|
||||
// is_control 当前为控制器业务处理
|
||||
// hook_name 钩子名称
|
||||
if(isset(\$params['is_control']) && \$params['is_control'] === true && !empty(\$params['hook_name']))
|
||||
{
|
||||
return [];
|
||||
// 参数一 描述
|
||||
// 参数二 0 为处理成功, 负数为失败
|
||||
// 参数三 返回数据
|
||||
return DataReturn('返回描述', 0);
|
||||
|
||||
// 默认返回视图
|
||||
} else {
|
||||
@ -641,40 +643,42 @@ h1 {
|
||||
color: #4CAF50;
|
||||
}
|
||||
php;
|
||||
// 创建文件
|
||||
if(@file_put_contents($app_dir.DS.'Admin.php', $admin) === false)
|
||||
{
|
||||
return DataReturn('应用文件创建失败[admin]', -11);
|
||||
}
|
||||
if(@file_put_contents($app_dir.DS.'Hook.php', $hook) === false)
|
||||
{
|
||||
return DataReturn('应用文件创建失败[hook]', -11);
|
||||
}
|
||||
if(@file_put_contents($app_dir.DS.'Hook.php', $hook) === false)
|
||||
{
|
||||
return DataReturn('应用文件创建失败[admin-view]', -11);
|
||||
}
|
||||
|
||||
// 应用后台视图目录不存在则创建
|
||||
$app_view_admin_dir = APP_PATH.'plugins'.DS.'view'.DS.trim($params['plugins']).DS.'admin';
|
||||
if(\base\FileUtil::CreateDir($app_view_admin_dir) !== true)
|
||||
{
|
||||
return DataReturn('应用视图目录创建失败[admin]', -10);
|
||||
}
|
||||
if(@file_put_contents($app_view_admin_dir.DS.'index.html', $admin_view) === false)
|
||||
{
|
||||
return DataReturn('应用视图文件创建失败[admin-view]', -11);
|
||||
}
|
||||
|
||||
// css创建
|
||||
// 静态文件目录
|
||||
$app_static_css_dir = ROOT.'public'.DS.'static'.DS.'plugins'.DS.'css'.DS.trim($params['plugins']);
|
||||
if(\base\FileUtil::CreateDir($app_static_css_dir) !== true)
|
||||
{
|
||||
return DataReturn('应用静态目录创建失败[css]', -10);
|
||||
}
|
||||
if(@file_put_contents($app_static_css_dir.DS.'admin.css', $admin_css) === false)
|
||||
|
||||
// 编辑模式下不生成后端文件
|
||||
if(empty($params['id']))
|
||||
{
|
||||
return DataReturn('应用静态文件创建失败[admin-css]', -11);
|
||||
// 创建文件
|
||||
if(@file_put_contents($app_dir.DS.'Admin.php', $admin) === false)
|
||||
{
|
||||
return DataReturn('应用文件创建失败[admin]', -11);
|
||||
}
|
||||
if(@file_put_contents($app_dir.DS.'Hook.php', $hook) === false)
|
||||
{
|
||||
return DataReturn('应用文件创建失败[hook]', -11);
|
||||
}
|
||||
|
||||
// 应用后台视图目录不存在则创建
|
||||
$app_view_admin_dir = APP_PATH.'plugins'.DS.'view'.DS.trim($params['plugins']).DS.'admin';
|
||||
if(\base\FileUtil::CreateDir($app_view_admin_dir) !== true)
|
||||
{
|
||||
return DataReturn('应用视图目录创建失败[admin]', -10);
|
||||
}
|
||||
if(@file_put_contents($app_view_admin_dir.DS.'index.html', $admin_view) === false)
|
||||
{
|
||||
return DataReturn('应用视图文件创建失败[admin-view]', -11);
|
||||
}
|
||||
|
||||
// css创建
|
||||
if(@file_put_contents($app_static_css_dir.DS.'admin.css', $admin_css) === false)
|
||||
{
|
||||
return DataReturn('应用静态文件创建失败[admin-css]', -11);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
namespace app\service;
|
||||
|
||||
use think\Db;
|
||||
use think\facade\Hook;
|
||||
use app\service\RegionService;
|
||||
|
||||
/**
|
||||
@ -793,7 +794,7 @@ class UserService
|
||||
|
||||
// 获取用户账户信息
|
||||
$where = array('mobile|email' => $params['accounts'], 'is_delete_time'=>0);
|
||||
$user = Db::name('User')->field(array('id', 'pwd', 'salt', 'status'))->where($where)->find();
|
||||
$user = Db::name('User')->field('id,pwd,salt,status')->where($where)->find();
|
||||
if(empty($user))
|
||||
{
|
||||
return DataReturn('帐号不存在', -3);
|
||||
@ -810,6 +811,13 @@ class UserService
|
||||
return DataReturn('密码错误', -4);
|
||||
}
|
||||
|
||||
// 用户登录前钩子
|
||||
$ret = Hook::listen('plugins_user_login_begin', ['hook_name'=>'plugins_user_login_begin', 'is_control'=>true, 'params'=>$params, 'user'=>$user]);
|
||||
if(isset($ret['code']) && $ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// 更新用户密码
|
||||
$salt = GetNumberCode(6);
|
||||
$data = array(
|
||||
@ -822,6 +830,13 @@ class UserService
|
||||
// 登录记录
|
||||
if(self::UserLoginRecord($user['id']))
|
||||
{
|
||||
// 用户登录后钩子
|
||||
$ret = Hook::listen('plugins_user_login_end', ['hook_name'=>'plugins_user_login_end', 'is_control'=>true, 'params'=>$params, 'user'=>$user]);
|
||||
if(isset($ret['code']) && $ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
return DataReturn('登录成功', 0);
|
||||
}
|
||||
}
|
||||
|
@ -41,5 +41,9 @@ return array (
|
||||
array (
|
||||
0 => 'app\\plugins\\usercentertopnotice\\Hook',
|
||||
),
|
||||
'plugins_user_login_end' =>
|
||||
array (
|
||||
0 => 'app\\plugins\\userlogingiveintegral\\Hook',
|
||||
),
|
||||
);
|
||||
?>
|
@ -15,7 +15,7 @@
|
||||
|
||||
return [
|
||||
// 开发模式
|
||||
'is_develop' => false,
|
||||
'is_develop' => true,
|
||||
|
||||
// 默认编码
|
||||
'default_charset' => 'utf-8',
|
||||
|
@ -1,20 +1,18 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
Navicat MySQL Data Transfer
|
||||
|
||||
Source Server : 本机
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50722
|
||||
Source Server Version : 50716
|
||||
Source Host : localhost
|
||||
Source Database : shopxo_test
|
||||
Source Database : shopxo_ttt
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50722
|
||||
Target Server Version : 50716
|
||||
File Encoding : utf-8
|
||||
|
||||
Date: 02/14/2019 11:31:38 AM
|
||||
Date: 02/14/2019 23:05:39 PM
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET NAMES utf8;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
@ -588,7 +586,14 @@ CREATE TABLE `s_message` (
|
||||
`add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='消息';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='消息';
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of `s_message`
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `s_message` VALUES ('4', '90', '积分变动', '登录赠送积分积分增加3', '0', '0', '0', '1', '0', '0', '1550155205'), ('5', '90', '积分变动', '登录赠送积分积分增加3', '0', '0', '0', '1', '0', '0', '1550155448'), ('6', '90', '积分变动', '登录赠送积分积分增加3', '0', '0', '0', '1', '0', '0', '1550155950'), ('7', '90', '积分变动', '登录赠送积分积分增加3', '0', '0', '0', '1', '0', '0', '1550156005'), ('8', '90', '积分变动', '登录赠送积分积分增加3', '0', '0', '0', '1', '0', '0', '1550156016'), ('9', '90', '积分变动', '登录赠送积分积分增加5', '0', '0', '0', '1', '0', '0', '1550156516');
|
||||
COMMIT;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for `s_navigation`
|
||||
@ -818,13 +823,13 @@ CREATE TABLE `s_plugins` (
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `plugins` (`plugins`),
|
||||
KEY `is_enable` (`is_enable`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='应用';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='应用';
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of `s_plugins`
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `s_plugins` VALUES ('1', 'commontopmaxpicture', '{\"images\":\"http:\\/\\/tp5-dev.com\\/static\\/upload\\/images\\/plugins_commontopmaxpicture\\/2019\\/02\\/09\\/1549671733978860.jpg\",\"bg_color\":\"#ce0000\",\"url\":\"https:\\/\\/shopxo.net\",\"is_new_window_open\":\"1\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopmaxpicture\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '0', '1550049324'), ('2', 'commontopnotice', '{\"content\":\"\\u6b22\\u8fce\\u6765\\u5230ShopXO\\u4f01\\u4e1a\\u7ea7B2C\\u5f00\\u6e90\\u7535\\u5546\\u7cfb\\u7edf\\u3001\\u6f14\\u793a\\u7ad9\\u70b9\\u8bf7\\u52ff\\u53d1\\u8d77\\u652f\\u4ed8\\u3001\\u4ee5\\u514d\\u7ed9\\u60a8\\u5e26\\u6765\\u4e0d\\u5fc5\\u8981\\u7684\\u8d22\\u4ea7\\u635f\\u5931\\u3002\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '0', '1550049314'), ('3', 'usercentertopnotice', '{\"content\":\"\\u7528\\u6237\\u4e2d\\u5fc3\\u516c\\u544a\\u6587\\u5b57\\uff0c\\u540e\\u53f0\\u914d\\u7f6e\\u4fee\\u6539\\u3002\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"usercentertopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '0', '1550049323');
|
||||
INSERT INTO `s_plugins` VALUES ('1', 'commontopmaxpicture', '{\"images\":\"http:\\/\\/tp5-dev.com\\/static\\/upload\\/images\\/plugins_commontopmaxpicture\\/2019\\/02\\/09\\/1549671733978860.jpg\",\"bg_color\":\"#ce0000\",\"url\":\"https:\\/\\/shopxo.net\",\"is_new_window_open\":\"1\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopmaxpicture\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '0', '1550049324'), ('2', 'commontopnotice', '{\"content\":\"\\u6b22\\u8fce\\u6765\\u5230ShopXO\\u4f01\\u4e1a\\u7ea7B2C\\u5f00\\u6e90\\u7535\\u5546\\u7cfb\\u7edf\\u3001\\u6f14\\u793a\\u7ad9\\u70b9\\u8bf7\\u52ff\\u53d1\\u8d77\\u652f\\u4ed8\\u3001\\u4ee5\\u514d\\u7ed9\\u60a8\\u5e26\\u6765\\u4e0d\\u5fc5\\u8981\\u7684\\u8d22\\u4ea7\\u635f\\u5931\\u3002\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '0', '1550049314'), ('3', 'usercentertopnotice', '{\"content\":\"\\u7528\\u6237\\u4e2d\\u5fc3\\u516c\\u544a\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"usercentertopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '0', '1550152363'), ('14', 'userlogingiveintegral', '{\"give_integral\":\"5\",\"is_day_once\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"userlogingiveintegral\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550151175', '1550156513');
|
||||
COMMIT;
|
||||
|
||||
-- ----------------------------
|
||||
@ -1075,7 +1080,7 @@ CREATE TABLE `s_user` (
|
||||
-- Records of `s_user`
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `s_user` VALUES ('77', '2088502175420842-', '', '', '0', '255773', '70da5937905ce1d1a8c6a8a4ab5c72b3', '', '龚哥哥', '13250814883', 'fuxiang.gong@qq.com', '2', 'https://tfs.alipayobjects.com/images/partner/T10d8lXm4dXXXXXXXX', '上海', '上海市', '1540915200', '', '967', '0', '0', '0', '0', '1545099005'), ('90', '2088502175420842', '', '', '0', '437481', '89e01b6059ab8151c32a1c6358a2f1cf', '', '魔鬼', '17602128368', '', '2', '', '上海', '上海市', '666201600', '', '0', '0', '0', '0', '1539167253', '1550048957');
|
||||
INSERT INTO `s_user` VALUES ('77', '2088502175420842-', '', '', '0', '255773', '70da5937905ce1d1a8c6a8a4ab5c72b3', '', '龚哥哥', '13250814883', 'fuxiang.gong@qq.com', '2', 'https://tfs.alipayobjects.com/images/partner/T10d8lXm4dXXXXXXXX', '上海', '上海市', '1540915200', '', '967', '0', '0', '0', '0', '1545099005'), ('90', '2088502175420842', '', '', '0', '548064', '3428ab57b8303e93c2d0190c1c99ddf0', '', '魔鬼', '17602128368', '', '2', '', '上海', '上海市', '666201600', '', '20', '0', '0', '0', '1539167253', '1550156516');
|
||||
COMMIT;
|
||||
|
||||
-- ----------------------------
|
||||
|
23
public/static/plugins/css/userlogingiveintegral/admin.css
Normal file
23
public/static/plugins/css/userlogingiveintegral/admin.css
Normal file
@ -0,0 +1,23 @@
|
||||
/**
|
||||
* 首页
|
||||
*/
|
||||
.userlogingiveintegral-content .items {
|
||||
margin: 10px 0 20px 0;
|
||||
border-bottom: 1px dashed #f1f1f1;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.userlogingiveintegral-content .edit-submit {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑页面
|
||||
*/
|
||||
.form-date input {
|
||||
width: 30% !important;
|
||||
display: -webkit-inline-box !important;
|
||||
}
|
||||
|
||||
.form-date span {
|
||||
vertical-align: middle;
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
Loading…
Reference in New Issue
Block a user