签到和积分管理


?>














连续签到天数 获得星星数量 获得的积分 最后一次签到时间

=1){?>












$v){?>







编号 商品名称 所需积分 操作
兑换





namespace frontend\models;

use yii\base\Model;
use common\models\User;

/**
* Signup form
*/
class SignupForm extends Model
{
public $username;
public $email;
public $password;


/**
* @inheritdoc
*/
public function rules()
{
return [
['username', 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
['username', 'string', 'min' => 2, 'max' => 255],

['email', 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'string', 'max' => 255],
['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'],

['password', 'required'],
['password', 'string', 'min' => 6],
];
}

/**
* Signs user up.
*
* @return User|null the saved model or null if saving fails
*/
public function signup()
{
if (!$this->validate()) {
return null;
}

$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();

return $user->save() ? $user : null;
}
}




namespace frontend\controllers;

use Yii;
use yii\web\Controller;
use app\models\Sign;
use app\models\Goods;

/**
* Site controller
*/
class SignController extends Controller
{
public function actionIndex(){
$sign=new Sign();
$good=new Goods();
$goods=$good->_get();
$data=$sign->_getWhere('user_id=1');
return $this->render('index',['data'=>$data,'goods'=>$goods]);
}

public function actionIntegral(){
$id=\Yii::$app->request->post('id');
$integral=\Yii::$app->request->post('integral');
$sign=new Sign();
$integralOld=$sign->_getWhere('user_id = '.$id);
if(intval($integral) > intval($integralOld['integral'])){
$result=2;
}else{
$result=$sign->_deduct($integral,'user_id = '.$id);
}
return $result;
}

public function actionAjax(){
$id=\Yii::$app->request->post('id');
$sign=new Sign();
$data=$sign->_getWhere('user_id='.$id);
if(!$data){
$result=$sign->_set($id);
}else{
if($data['sign_num']>=4){
$sign_num=0;
$start=$data['start_num']+1;
}else{
$sign_num=$data['sign_num']+1;
$start=0;
}
$integral=(intval($data['integral'])+10);
$signDay=$this->getTime($data['sign_time']);
$thisDay=$this->getTime(date('Y-m-d H:i:s',time()));
if($thisDay-$signDay==24*3600){
$result=$sign->_save('user_id='.$id,$sign_num,$start,$integral);
}else if($thisDay-$signDay > 24*3600){
$result=$sign->_save('user_id='.$id,1,$data['start_num'],$integral);
if($result){
$result=2;
}
}else{
$result=3;
}
}
echo json_encode($result);
}

public function getTime($data){
$str=strtotime(date('Ymd',strtotime($data)));
return $str;
}
}


namespace app\models;

use Yii;


class Sign extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'signIn';
}

/**
* @inheritdoc
*/
public function _get()
{
$connection = \Yii::$app->db;
$command = $connection->createCommand('SELECT * FROM '.$this->tableName());
$data = $command->queryAll();
return $data;
}

/**
* @inheritdoc
*/
public function _getWhere($where)
{
$connection = \Yii::$app->db;
$command = $connection->createCommand('SELECT * FROM '.$this->tableName().' where '.$where);
$data = $command->queryOne();
return $data;
}
/**
* @inheritdoc
*/
public function _set($user_id,$sign=1,$start=0)
{
$connection = \Yii::$app->db;
$command = $connection->createCommand('insert into '.$this->tableName().' values(\'\','.$sign.','.$start.',"'.date('Y-m-d H:i:s',time()).'", '.$user_id.',10)');
$data = $command->execute();
return $data;
}

/**
* @inheritdoc
*/
public function _deduct($integral,$where)
{
$connection = \Yii::$app->db;
$command = $connection->createCommand('update '.$this->tableName().' set integral=integral-'.$integral.' where '.$where);
$result = $command->execute();
return $result;
}
/**
* @inheritdoc
*/
public function _save($where,$sign=1,$start=0,$integral=10)
{
$connection = \Yii::$app->db;
$command=$connection->createCommand('update '.$this->tableName().' set sign_num='.$sign.',start_num='.$start.',sign_time="'.date('Y-m-d H:i:s',time()).'",integral='.$integral.' where '.$where);
if($start==0){
$command = $connection->createCommand('update '.$this->tableName().' set sign_num='.$sign.',sign_time="'.date('Y-m-d H:i:s',time()).'",integral='.$integral.' where '.$where);
}
$data = $command->execute();
return $data;
}
}

转载于:https://www.cnblogs.com/xingchen89119/p/6369052.html

你可能感兴趣的:(签到和积分管理)