tp 5は毎日連続して署名することを実現する
考え方:現在時刻を取得する、現在時刻に基づいて前日時刻 を取得する.前日にカードを打ったかどうかをサイン表で判断する 前日の表に情報が見つかった場合、毎日連続してカードを打つ.情報が見つからない場合は、チェックアウトまたは初日のカード である可能性があります.トランザクション更新に必要なテーブル を使用
使用する表:1.署名表:ユーザーid署名時間ポイント獲得2.ユーザー表:連続署名日数総ポイント
コード直接
参考までに考えて、良い操作があって、みんなに提出してもらって、ありがとうございます
使用する表:1.署名表:ユーザーid署名時間ポイント獲得2.ユーザー表:連続署名日数総ポイント
コード直接
//
public static function havedata($array)
{
if (isset($array) && !empty($array)) {
return true;
} else {
return false;
}
}
//
public static function getLastTime($day,$type="before"){
$data = array();
if($type == "before"){
$str = date("Y-m-d",strtotime("-{$day} day"))." 0:0:0";
$data["start"] = strtotime($str);
$str = date("Y-m-d",strtotime("-{$day} day"))." 24:00:00";
$data["end"] = strtotime($str);
}else{
$str = date("Y-m-d",strtotime("+{$day} day"))." 0:0:0";
$data["start"] = strtotime($str);
$str = date("Y-m-d",strtotime("+{$day} day"))." 24:00:00";
$data["end"] = strtotime($str);
}
return $data;
}
$now_time = strtotime(date("Y-m-d 0:0:0",time()));//
$info = $signOn->Exist($now_time,$userId);//
$integral = 0;
$userInfo = $user->getInfoById("integral,continuity_day",$userId);//
if (Util::havedata($info)){//
dumpJson(REPERROR," ");
}else{
$yestaday = Util::getLastTime(1,'before');//
$existYestasySignOn = $signOn->checkSignOn($yestaday['start'],$yestaday['end'],$userId);//
if ($existYestasySignOn){//
//
}
}else{//
//
}
//
//
Db::startTrans();
try{
//
if (// ){
// , sql
Db::commit();
}else{
// ,
Db::rollback();
}
}catch (\Exception $e){
// ,
Db::rollback();
}
}
参考までに考えて、良い操作があって、みんなに提出してもらって、ありがとうございます