初始上传
This commit is contained in:
137
app/model/member/MemberSignin.php
Executable file
137
app/model/member/MemberSignin.php
Executable file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\member;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use Carbon\Carbon;
|
||||
use think\db\exception\DbException;
|
||||
|
||||
/**
|
||||
* 会员签到
|
||||
*/
|
||||
class MemberSignin extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 获取签到奖励规则
|
||||
*/
|
||||
public function getAward($site_id)
|
||||
{
|
||||
$award = event('MemberSigninAward', [ 'site_id' => $site_id ], true);
|
||||
return $this->success($award);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否已经签到
|
||||
* @param $member_id
|
||||
* @return array
|
||||
*/
|
||||
public function isSign($member_id)
|
||||
{
|
||||
$member_info = model("member")->getInfo([ [ 'member_id', '=', $member_id ] ], 'sign_time');
|
||||
if ($member_info[ 'sign_time' ] != 0) {
|
||||
$compare_time = Carbon::today()->timestamp;
|
||||
if ($member_info[ 'sign_time' ] < $compare_time) {
|
||||
$is_sign = 0;
|
||||
} else {
|
||||
$is_sign = 1;
|
||||
}
|
||||
|
||||
//纠正连签天数
|
||||
$compare_yesterday = Carbon::yesterday()->timestamp;
|
||||
if ($compare_yesterday > $member_info[ 'sign_time' ]) {
|
||||
model("member")->update([ 'sign_days_series' => 0, 'sign_time' => 0 ], [ [ 'member_id', '=', $member_id ] ]);
|
||||
}
|
||||
|
||||
} else {
|
||||
$is_sign = 0;
|
||||
}
|
||||
return $this->success($is_sign);
|
||||
}
|
||||
|
||||
/**
|
||||
* 签到
|
||||
* @param $member_id
|
||||
* @param $site_id
|
||||
* @return array|\multitype
|
||||
* @throws DbException
|
||||
*/
|
||||
public function signin($member_id, $site_id)
|
||||
{
|
||||
$member_info = model("member")->getInfo([ [ 'member_id', '=', $member_id ] ], 'sign_time,sign_days_series');
|
||||
if ($member_info[ 'sign_time' ] != 0) {
|
||||
$compare_time = Carbon::today()->timestamp;
|
||||
if ($member_info[ 'sign_time' ] < $compare_time) {
|
||||
$is_sign = 0;
|
||||
} else {
|
||||
$is_sign = 1;
|
||||
}
|
||||
} else {
|
||||
$is_sign = 0;
|
||||
}
|
||||
if ($is_sign == 1) {
|
||||
return $this->error('', "SIGNED_IN");
|
||||
} else {
|
||||
$data_log = [
|
||||
'member_id' => $member_id,
|
||||
'action' => 'membersignin',
|
||||
'action_name' => '会员签到',
|
||||
'create_time' => time(),
|
||||
'remark' => '会员签到'
|
||||
];
|
||||
model("member_log")->add($data_log);
|
||||
|
||||
//连续签到
|
||||
$compare_yesterday = Carbon::yesterday()->timestamp;
|
||||
if ($compare_yesterday < $member_info[ 'sign_time' ]) {
|
||||
model("member")->setInc([ [ 'member_id', '=', $member_id ] ], 'sign_days_series');
|
||||
model("member")->update([ 'sign_time' => time() ], [ [ 'member_id', '=', $member_id ] ]);
|
||||
} else {
|
||||
model("member")->update([ 'sign_days_series' => 1, 'sign_time' => time() ], [ [ 'member_id', '=', $member_id ] ]);
|
||||
}
|
||||
|
||||
//执行签到奖励
|
||||
$res = event("MemberSignin", [ 'member_id' => $member_id, 'site_id' => $site_id ], true);
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签到记录
|
||||
* @param array $condition
|
||||
* @param string $field
|
||||
* @param string $order
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberSigninList($condition = [], $field = '*', $order = 'create_time asc')
|
||||
{
|
||||
$list = model('member_log')->getList($condition, $field, $order);
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取连续签到天数
|
||||
* @param $member_id
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberSignDaysSeries($member_id)
|
||||
{
|
||||
$member_info = model("member")->getInfo([ [ 'member_id', '=', $member_id ] ], 'sign_time,sign_days_series');
|
||||
$sign_days_series = 0;
|
||||
if(!empty($member_info)){
|
||||
$compare_yesterday = Carbon::yesterday()->timestamp;
|
||||
if ($compare_yesterday < $member_info[ 'sign_time' ]) {
|
||||
$sign_days_series = $member_info['sign_days_series'];
|
||||
}
|
||||
}
|
||||
return $this->success($sign_days_series);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user