1.缺失信息提交
This commit is contained in:
@ -31,7 +31,7 @@ class UserAddressController extends BaseApiController
|
|||||||
//获取地址列表
|
//获取地址列表
|
||||||
public function lists()
|
public function lists()
|
||||||
{
|
{
|
||||||
$user_id = $this->user_id;
|
$user_id = $this->userId;
|
||||||
$result = UserAddressLogic::infoUserAddress($user_id);
|
$result = UserAddressLogic::infoUserAddress($user_id);
|
||||||
$this->_success('获取成功', $result);
|
$this->_success('获取成功', $result);
|
||||||
}
|
}
|
||||||
@ -47,7 +47,7 @@ class UserAddressController extends BaseApiController
|
|||||||
$user_id = $this->user_id;
|
$user_id = $this->user_id;
|
||||||
$result = UserAddressLogic::getOneAddress($user_id, $get);
|
$result = UserAddressLogic::getOneAddress($user_id, $get);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$this->_success('获取成功', $result);
|
$this->success('获取成功', $result);
|
||||||
}
|
}
|
||||||
$result = '获取失败';
|
$result = '获取失败';
|
||||||
}
|
}
|
||||||
|
|||||||
93
app/api/controller/signController.php
Normal file
93
app/api/controller/signController.php
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | likeshop开源商城系统
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||||||
|
// | gitee下载:https://gitee.com/likeshop_gitee
|
||||||
|
// | github下载:https://github.com/likeshop-github
|
||||||
|
// | 访问官网:https://www.likeshop.cn
|
||||||
|
// | 访问社区:https://home.likeshop.cn
|
||||||
|
// | 访问手册:http://doc.likeshop.cn
|
||||||
|
// | 微信公众号:likeshop技术社区
|
||||||
|
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
||||||
|
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
||||||
|
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
||||||
|
// | likeshop团队版权所有并拥有最终解释权
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | author: likeshop.cn.team
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
namespace app\api\controller;
|
||||||
|
use app\api\logic\SignLogic;
|
||||||
|
use app\common\service\ConfigServer;
|
||||||
|
|
||||||
|
class signController extends BaseApiController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* showdoc
|
||||||
|
* @catalog 接口/签到
|
||||||
|
* @title 获取签到列表
|
||||||
|
* @description 获取签到列表
|
||||||
|
* @method get
|
||||||
|
* @url /sign/lists
|
||||||
|
* @return {"code":1,"msg":"获取成功","data":{"lists":[{"days":"1","sign_time":null,"status":"0","integral":"22","growth":"552"},{"days":"2","sign_time":null,"status":"0","integral":"22","growth":"552"},{"days":"3","sign_time":null,"status":"0","integral":63,"growth":563},{"days":"4","sign_time":null,"status":"0","integral":66,"growth":596},{"days":"5","sign_time":null,"status":"0","integral":"22","growth":"552"},{"days":"6","sign_time":null,"status":"0","integral":66,"growth":574}],"message":{"user_integral":"5041","days":"0"}},"show":0,"time":"0.126686","debug":{"request":{"get":[],"post":[],"header":{"connection":"keep-alive","accept-encoding":"gzip, deflate, br","host":"www.likeb2b2c.com:20002","postman-token":"75a16271-edbd-4172-a238-a7d36ed07019","accept":"*\/*","user-agent":"PostmanRuntime\/7.26.2","token":"ff0c66fe0c89fe1e9be591d82d551521","content-type":"","content-length":""}}}}
|
||||||
|
* @return_param days int 天数列表
|
||||||
|
* @return_param sign_time int 签到时间
|
||||||
|
* @return_param status int 签到状态
|
||||||
|
* @return_param integral int 积分值
|
||||||
|
* @return_param growth int 成长值
|
||||||
|
* @return_param user_integral int 用户积分
|
||||||
|
* @return_param user_growth int 用户成长值
|
||||||
|
* @remark
|
||||||
|
* @number 1
|
||||||
|
*/
|
||||||
|
public function lists(){
|
||||||
|
$sign = SignLogic::lists($this->userId);
|
||||||
|
$this->success('获取成功',$sign);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* showdoc
|
||||||
|
* @catalog 接口/签到
|
||||||
|
* @title 签到
|
||||||
|
* @description 签到
|
||||||
|
* @method get
|
||||||
|
* @url /sign/sign
|
||||||
|
* @return {"code":1,"msg":"获取成功","data":{"integral":"22","growth":"552","day":1},"show":0,"time":"0.201775","debug":{"request":{"get":[],"post":[],"header":{"connection":"keep-alive","accept-encoding":"gzip, deflate, br","host":"www.likeb2b2c.com:20002","postman-token":"1c4ef02d-b268-4ba7-a5df-c5b6a5f3d630","accept":"*\/*","user-agent":"PostmanRuntime\/7.26.2","token":"ff0c66fe0c89fe1e9be591d82d551521","content-type":"","content-length":""}}}}
|
||||||
|
* @return_param integral int 获得积分值
|
||||||
|
* @return_param growth int 获得成长值
|
||||||
|
* @return_param days int 连续天数
|
||||||
|
* @remark
|
||||||
|
* @number 1
|
||||||
|
*/
|
||||||
|
public function sign(){
|
||||||
|
$result = $this->validate(['user_id'=>$this->userId],'app\api\validate\Sign');
|
||||||
|
if($result === true){
|
||||||
|
$result = SignLogic::sign($this->userId);
|
||||||
|
if(is_array($result)){
|
||||||
|
$this->success('签到成功',$result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->fail($result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* showdoc
|
||||||
|
* @catalog 接口/签到
|
||||||
|
* @title 获取签到规则
|
||||||
|
* @description 获取签到规则
|
||||||
|
* @method get
|
||||||
|
* @url /sign/rule
|
||||||
|
* @return {"code":1,"msg":"获取成功","data":"1.每天签到可以获得每天签到奖励;\n2.每日最多可签到1次,断签则会重新计算连签天数,达到连续天数后即可获得连续奖励;\n3.活动以及奖励最终解释权归商家所有。\n","show":0,"time":"0.173280","debug":{"request":{"get":[],"post":[],"header":{"connection":"keep-alive","accept-encoding":"gzip, deflate, br","host":"www.likeb2b2c.com:20002","postman-token":"e8617112-b05d-4bea-a8d8-424a674f1c84","accept":"*\/*","user-agent":"PostmanRuntime\/7.26.2","token":"ff0c66fe0c89fe1e9be591d82d551521","content-type":"","content-length":""}}}}
|
||||||
|
* @return_param * text 规则
|
||||||
|
* @remark
|
||||||
|
* @number 1
|
||||||
|
*/
|
||||||
|
public function rule(){
|
||||||
|
$rule = ConfigServer::get('sign_rule','instructions','');
|
||||||
|
$this->_success('获取成功',$rule);
|
||||||
|
}
|
||||||
|
}
|
||||||
313
app/api/logic/SignLogic.php
Normal file
313
app/api/logic/SignLogic.php
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
<?php
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | likeshop开源商城系统
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||||||
|
// | gitee下载:https://gitee.com/likeshop_gitee
|
||||||
|
// | github下载:https://github.com/likeshop-github
|
||||||
|
// | 访问官网:https://www.likeshop.cn
|
||||||
|
// | 访问社区:https://home.likeshop.cn
|
||||||
|
// | 访问手册:http://doc.likeshop.cn
|
||||||
|
// | 微信公众号:likeshop技术社区
|
||||||
|
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
||||||
|
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
||||||
|
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
||||||
|
// | likeshop团队版权所有并拥有最终解释权
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | author: likeshop.cn.team
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
namespace app\api\logic;
|
||||||
|
use app\common\logic\AccountLogLogic;
|
||||||
|
use app\common\model\account\AccountLog;
|
||||||
|
use app\common\service\UrlServer;
|
||||||
|
use think\facade\Db;
|
||||||
|
use think\Exception;
|
||||||
|
use think\helper\Time;
|
||||||
|
use app\common\service\ConfigServer;
|
||||||
|
class SignLogic
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* note 每日签到
|
||||||
|
* create_time 2020/12/3 16:06
|
||||||
|
*/
|
||||||
|
public static function lists($user_id){
|
||||||
|
|
||||||
|
//用户信息
|
||||||
|
$user = Db::name('user')
|
||||||
|
->where(['id'=>$user_id])
|
||||||
|
->field('id,nickname,avatar,user_integral')
|
||||||
|
->find();
|
||||||
|
|
||||||
|
$user['avatar'] = UrlServer::getFileUrl($user['avatar']);
|
||||||
|
$user['today_sign'] = 0;
|
||||||
|
$today_sign = Db::name('user_sign')
|
||||||
|
->where(['del'=>0 , 'user_id'=>$user_id])
|
||||||
|
->where("state",1)
|
||||||
|
->whereTime('sign_time', 'today')
|
||||||
|
->find();
|
||||||
|
|
||||||
|
list($today_start,$today_end) = Time::today();
|
||||||
|
//今天是否已签到
|
||||||
|
$today_sign && $user['today_sign'] = 1;
|
||||||
|
//今天签到赠送的积分
|
||||||
|
$today_sign_integral = 0;
|
||||||
|
//昨天是否签到
|
||||||
|
$yester_sign = Db::name('user_sign')
|
||||||
|
->where(['del'=>0 , 'user_id'=>$user_id])
|
||||||
|
->where("state",1)
|
||||||
|
->whereTime('sign_time', 'yesterday')
|
||||||
|
->find();
|
||||||
|
//昨天没签到,则签到中断重新计算连续天数
|
||||||
|
if(!$yester_sign){
|
||||||
|
Db::name('user_sign')
|
||||||
|
->where(['del'=>0,'user_id'=>$user_id])
|
||||||
|
->where("state",1)
|
||||||
|
->where('sign_time','<',$today_start)
|
||||||
|
->update(['del'=> 1,'update_time'=>time()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//签到规则
|
||||||
|
$sign_list = Db::name('sign_daily')
|
||||||
|
->where(['del'=>0])
|
||||||
|
->order('type asc,days asc')
|
||||||
|
->column('*','days');
|
||||||
|
$sign_total_days = '';
|
||||||
|
$days_list = [];
|
||||||
|
if($sign_list){
|
||||||
|
$start_sign = current($sign_list); //第一次签到规则
|
||||||
|
$end_sign = end($sign_list); //最后一次签到规则
|
||||||
|
//每天赠送的积分
|
||||||
|
$everyday_send_integral = 0;
|
||||||
|
$start_sign['integral_status'] && $everyday_send_integral = $start_sign['integral'];
|
||||||
|
//累计签到的总天数
|
||||||
|
$sign_total_days = Db::name('user_sign')
|
||||||
|
->where(['del'=>0,'user_id'=>$user_id])
|
||||||
|
->where("state",1)
|
||||||
|
->order('id desc')
|
||||||
|
->value('days');
|
||||||
|
|
||||||
|
|
||||||
|
for($days = 1; $days <= $end_sign['days'] ;$days++){
|
||||||
|
$send_integral = $everyday_send_integral;
|
||||||
|
//连接签到赠送的积分
|
||||||
|
if(isset($sign_list[$days]) && $sign_list[$days]['integral_status'] ){
|
||||||
|
$send_integral = $everyday_send_integral + $sign_list[$days]['integral'];
|
||||||
|
}
|
||||||
|
//合并数据
|
||||||
|
$days_list[$days] = [
|
||||||
|
'days' => $days,
|
||||||
|
'status' => 0,
|
||||||
|
'integral' => $send_integral,
|
||||||
|
'growth' => 0,
|
||||||
|
];
|
||||||
|
$total_sin_days = $end_sign['days']; //可连续签到的最大天数
|
||||||
|
//更新签到天数之前的签到状态
|
||||||
|
if($days === $sign_total_days){
|
||||||
|
$today_sign_integral = $send_integral;//今天签到获得的积分
|
||||||
|
for ($sign_day = $days;$sign_day >= 1;$sign_day--){
|
||||||
|
$days_list[$sign_day]['status'] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//如果连续签到天数大于总天数,则全部标记为已签到状态
|
||||||
|
if($sign_total_days > $total_sin_days){
|
||||||
|
$days_list[$days]['status'] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
$user['days'] = $sign_total_days ?: 0;
|
||||||
|
|
||||||
|
//赚积分
|
||||||
|
$make_inegral = [];
|
||||||
|
$make_inegral[] = [
|
||||||
|
'name' => '每日签到',
|
||||||
|
'status' => $user['today_sign'],
|
||||||
|
'integral' => $today_sign_integral,
|
||||||
|
'type' => 1,//类型,主要用前端显示图标
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
$order_award_integral = ConfigServer::get('marketing','order_award_integral',0);
|
||||||
|
$invited_award_integral = ConfigServer::get('marketing','invited_award_integral',0);
|
||||||
|
//下单奖励
|
||||||
|
if($order_award_integral > 0){
|
||||||
|
|
||||||
|
$today_order_award = Db::name('account_log')
|
||||||
|
->where(['user_id'=>$user_id,'source_type'=>AccountLog::order_add_integral])
|
||||||
|
->whereTime('create_time',[$today_start,$today_end])
|
||||||
|
->find();
|
||||||
|
$make_inegral[] = [
|
||||||
|
'name' => '下单任意商品',
|
||||||
|
'status' => $today_order_award ? 1 : 0,
|
||||||
|
'integral' => $order_award_integral,
|
||||||
|
'type' => 2,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
//邀请奖励
|
||||||
|
if($invited_award_integral > 0){
|
||||||
|
$total_invited_award = Db::name('account_log')
|
||||||
|
->where(['user_id'=>$user_id,'source_type'=>AccountLog::invite_add_integral])
|
||||||
|
->whereTime('create_time',[$today_start,$today_end])
|
||||||
|
->find();
|
||||||
|
$make_inegral[] = [
|
||||||
|
'name' => '成功邀请1位好友',
|
||||||
|
'status' => $total_invited_award ? 1 : 0,
|
||||||
|
'integral' => $invited_award_integral,
|
||||||
|
'type' => 3,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'user' => $user,
|
||||||
|
'sign_list' => array_values($days_list),
|
||||||
|
'make_inegral' => $make_inegral,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
//签到接口
|
||||||
|
public static function sign($user_id){
|
||||||
|
try{
|
||||||
|
Db::startTrans();
|
||||||
|
$sign_list = Db::name('sign_daily')
|
||||||
|
->where(['del'=>0,'type'=>2])
|
||||||
|
->order('type asc,days asc')
|
||||||
|
->column('*','days');
|
||||||
|
//签到记录
|
||||||
|
$last_sign = Db::name('user_sign')
|
||||||
|
->where(['del'=>0,'user_id'=>$user_id])
|
||||||
|
->order('id desc')
|
||||||
|
->find();
|
||||||
|
$now = time();
|
||||||
|
$total_integral = 0; //签到赠送的积分
|
||||||
|
$total_growth = 0; //签到赠送的成长值
|
||||||
|
$continuous_integral = 0; //连续签到积分
|
||||||
|
$continuous_growth = 0; //连续签到成长值
|
||||||
|
|
||||||
|
$sign_day = 1; //累计签到天数
|
||||||
|
//每天签到的奖励
|
||||||
|
$everyday_sign = Db::name('sign_daily')
|
||||||
|
->where(['del'=>0,'type'=>1])
|
||||||
|
->find();
|
||||||
|
|
||||||
|
//有签到记录,说明之前有签到
|
||||||
|
if($last_sign){
|
||||||
|
|
||||||
|
$sign_day = $last_sign['days'] + 1;
|
||||||
|
$sign = $sign_list[$sign_day] ?? [];
|
||||||
|
//累计签到天数,额外奖励
|
||||||
|
if($sign){
|
||||||
|
if($sign['integral_status'] && $sign['integral'] > 0){
|
||||||
|
$total_integral+=$sign['integral'];
|
||||||
|
$continuous_integral = $sign['integral'];
|
||||||
|
}
|
||||||
|
if($sign['growth_status'] && $sign['growth'] > 0){
|
||||||
|
$total_growth+=$sign['growth'];
|
||||||
|
$continuous_growth =$sign['growth'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//每天签到奖励
|
||||||
|
if($everyday_sign){
|
||||||
|
if($everyday_sign['integral_status'] && $everyday_sign['integral'] > 0){
|
||||||
|
$total_integral+=$everyday_sign['integral'];
|
||||||
|
}
|
||||||
|
if($everyday_sign && $everyday_sign['growth_status'] && $everyday_sign['growth'] > 0){
|
||||||
|
$total_growth+=$everyday_sign['growth'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$sign_add = [
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'days' => $sign_day,
|
||||||
|
'integral' => $everyday_sign['integral'],
|
||||||
|
'growth' => $everyday_sign['growth'],
|
||||||
|
'continuous_integral' => $continuous_integral,
|
||||||
|
'continuous_growth' => $continuous_growth,
|
||||||
|
'sign_time' => $now,
|
||||||
|
'create_time' => $now,
|
||||||
|
];
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
//连续一天的奖励
|
||||||
|
$one_day_sign = $sign_list['1'] ?? [];
|
||||||
|
if($one_day_sign){
|
||||||
|
if($one_day_sign['integral_status'] && $one_day_sign['integral'] > 0){
|
||||||
|
$total_integral+=$one_day_sign['integral'];
|
||||||
|
$continuous_integral = $one_day_sign['integral'];
|
||||||
|
}
|
||||||
|
if($one_day_sign && $one_day_sign['growth_status'] && $one_day_sign['growth'] > 0){
|
||||||
|
$total_growth+=$one_day_sign['growth'];
|
||||||
|
$continuous_growth = $one_day_sign['growth'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($everyday_sign){
|
||||||
|
if($everyday_sign['integral_status'] && $everyday_sign['integral'] > 0){
|
||||||
|
$total_integral+=$everyday_sign['integral'];
|
||||||
|
}
|
||||||
|
if($everyday_sign['growth_status'] && $everyday_sign['growth'] > 0){
|
||||||
|
$total_growth+=$everyday_sign['growth'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$sign_add = [
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'days' => $sign_day,
|
||||||
|
'integral' => $everyday_sign['integral_status'] ? $everyday_sign['integral'] : 0,
|
||||||
|
'continuous_integral' => $continuous_integral,
|
||||||
|
'growth' => $everyday_sign['growth_status'] ? $everyday_sign['growth'] : 0,
|
||||||
|
'continuous_growth' => $continuous_growth,
|
||||||
|
'sign_time' => $now,
|
||||||
|
'create_time' => $now,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
if($last_sign == null){
|
||||||
|
$sign_add['qi_num'] = 1;
|
||||||
|
}else{
|
||||||
|
$last_sign_num = Db::name('user_sign')
|
||||||
|
->where(['del'=>0,'user_id'=>$user_id])
|
||||||
|
->where("state",1)
|
||||||
|
->where('qi_num',$last_sign['qi_num'])
|
||||||
|
->count();
|
||||||
|
if($last_sign_num+1 == 7){
|
||||||
|
$sign_add['qi_num'] = $last_sign['qi_num'];
|
||||||
|
$sign_add['state'] = 2;
|
||||||
|
Db::name('user_sign')
|
||||||
|
->where(['del'=>0,'user_id'=>$user_id])
|
||||||
|
->where('qi_num',$last_sign['qi_num'])
|
||||||
|
->update(['state'=>2]);
|
||||||
|
}else{
|
||||||
|
$sign_add['qi_num'] = $last_sign['qi_num'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Db::name('user_sign')->insert($sign_add);
|
||||||
|
|
||||||
|
if($total_integral){
|
||||||
|
Db::name('user')
|
||||||
|
->where(['del'=>0 , 'id'=>$user_id])
|
||||||
|
->setInc('user_integral',$total_integral);
|
||||||
|
AccountLogLogic::AccountRecord($user_id,$total_integral,1, AccountLog::sign_in_integral);
|
||||||
|
}
|
||||||
|
if($total_growth){
|
||||||
|
//用户成长值
|
||||||
|
Db::name('user')
|
||||||
|
->where(['del'=>0 , 'id'=>$user_id])
|
||||||
|
->setInc('user_growth',$total_growth);
|
||||||
|
AccountLogLogic::AccountRecord($user_id,$total_growth,1,AccountLog::sign_give_growth);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::commit();
|
||||||
|
return [
|
||||||
|
'integral' => $total_integral,
|
||||||
|
'growth' => $total_growth,
|
||||||
|
'days' => $sign_day,
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
}catch (Exception $e){
|
||||||
|
Db::rollback();
|
||||||
|
return $e->getMessage();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
203
vendor/topthink/think-helper/src/helper/Time.php
vendored
Normal file
203
vendor/topthink/think-helper/src/helper/Time.php
vendored
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
<?php
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Author: 刘志淳 <chun@engineer.com>
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
namespace think\helper;
|
||||||
|
|
||||||
|
class Time
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 返回今日开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function today()
|
||||||
|
{
|
||||||
|
list($y, $m, $d) = explode('-', date('Y-m-d'));
|
||||||
|
return [
|
||||||
|
mktime(0, 0, 0, $m, $d, $y),
|
||||||
|
mktime(23, 59, 59, $m, $d, $y)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回昨日开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function yesterday()
|
||||||
|
{
|
||||||
|
$yesterday = date('d') - 1;
|
||||||
|
return [
|
||||||
|
mktime(0, 0, 0, date('m'), $yesterday, date('Y')),
|
||||||
|
mktime(23, 59, 59, date('m'), $yesterday, date('Y'))
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回本周开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function week()
|
||||||
|
{
|
||||||
|
list($y, $m, $d, $w) = explode('-', date('Y-m-d-w'));
|
||||||
|
if($w == 0) $w = 7; //修正周日的问题
|
||||||
|
return [
|
||||||
|
mktime(0, 0, 0, $m, $d - $w + 1, $y), mktime(23, 59, 59, $m, $d - $w + 7, $y)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回上周开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function lastWeek()
|
||||||
|
{
|
||||||
|
$timestamp = time();
|
||||||
|
return [
|
||||||
|
strtotime(date('Y-m-d', strtotime("last week Monday", $timestamp))),
|
||||||
|
strtotime(date('Y-m-d', strtotime("last week Sunday", $timestamp))) + 24 * 3600 - 1
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回本月开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function month($everyDay = false)
|
||||||
|
{
|
||||||
|
list($y, $m, $t) = explode('-', date('Y-m-t'));
|
||||||
|
return [
|
||||||
|
mktime(0, 0, 0, $m, 1, $y),
|
||||||
|
mktime(23, 59, 59, $m, $t, $y)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回上个月开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function lastMonth()
|
||||||
|
{
|
||||||
|
$y = date('Y');
|
||||||
|
$m = date('m');
|
||||||
|
$begin = mktime(0, 0, 0, $m - 1, 1, $y);
|
||||||
|
$end = mktime(23, 59, 59, $m - 1, date('t', $begin), $y);
|
||||||
|
|
||||||
|
return [$begin, $end];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回今年开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function year()
|
||||||
|
{
|
||||||
|
$y = date('Y');
|
||||||
|
return [
|
||||||
|
mktime(0, 0, 0, 1, 1, $y),
|
||||||
|
mktime(23, 59, 59, 12, 31, $y)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回去年开始和结束的时间戳
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function lastYear()
|
||||||
|
{
|
||||||
|
$year = date('Y') - 1;
|
||||||
|
return [
|
||||||
|
mktime(0, 0, 0, 1, 1, $year),
|
||||||
|
mktime(23, 59, 59, 12, 31, $year)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function dayOf()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取几天前零点到现在/昨日结束的时间戳
|
||||||
|
*
|
||||||
|
* @param int $day 天数
|
||||||
|
* @param bool $now 返回现在或者昨天结束时间戳
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function dayToNow($day = 1, $now = true)
|
||||||
|
{
|
||||||
|
$end = time();
|
||||||
|
if (!$now) {
|
||||||
|
list($foo, $end) = self::yesterday();
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
mktime(0, 0, 0, date('m'), date('d') - $day, date('Y')),
|
||||||
|
$end
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回几天前的时间戳
|
||||||
|
*
|
||||||
|
* @param int $day
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static function daysAgo($day = 1)
|
||||||
|
{
|
||||||
|
$nowTime = time();
|
||||||
|
return $nowTime - self::daysToSecond($day);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回几天后的时间戳
|
||||||
|
*
|
||||||
|
* @param int $day
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static function daysAfter($day = 1)
|
||||||
|
{
|
||||||
|
$nowTime = time();
|
||||||
|
return $nowTime + self::daysToSecond($day);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 天数转换成秒数
|
||||||
|
*
|
||||||
|
* @param int $day
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static function daysToSecond($day = 1)
|
||||||
|
{
|
||||||
|
return $day * 86400;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 周数转换成秒数
|
||||||
|
*
|
||||||
|
* @param int $week
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static function weekToSecond($week = 1)
|
||||||
|
{
|
||||||
|
return self::daysToSecond() * 7 * $week;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function startTimeToEndTime()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user