204 lines
6.5 KiB
PHP
204 lines
6.5 KiB
PHP
<?php
|
|
|
|
namespace app\api\model;
|
|
|
|
use think\Db;
|
|
use think\Model;
|
|
|
|
class UserSign extends Model
|
|
{
|
|
//用户签到
|
|
// public function user_sign($uid)
|
|
// {
|
|
// $today = strtotime(date('Y-m-d'));
|
|
// $map = [];
|
|
// $map[] = ['add_time', '>', $today];
|
|
// $map[] = ['uid', '=', $uid];
|
|
// $info = db::name('user_sign')->where($map)->find();
|
|
// if (!empty($info)) {
|
|
// return ['code' => 201, 'msg' => '今日已签到', 'data' => null];
|
|
// }
|
|
|
|
// Db::startTrans();
|
|
// try {
|
|
// //写入记录
|
|
// $sign_reward_gid = get_system_config('sign_reward_gid');
|
|
|
|
// $data = [];
|
|
// $data['uid'] = $uid;
|
|
// $data['gid'] = $sign_reward_gid;
|
|
// $data['add_time'] = time();
|
|
// $reslut = db::name('user_sign')->insert($data);
|
|
// if (!$reslut) {
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => '请重试', 'data' => null];
|
|
// }
|
|
// //放入背包
|
|
// $reslut = model('UserGiftPack')->change_user_gift_pack($uid, $sign_reward_gid, 1, 1, '每日签到获得');
|
|
// if ($reslut['code'] != 200) {
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
|
|
// } else {
|
|
// Db::commit();
|
|
// return ['code' => 200, 'msg' => '签到成功', 'data' => null];
|
|
// }
|
|
// } catch (\Exception $e) {
|
|
// // 回滚事务
|
|
// Db::rollback();
|
|
// return ['code' => 201, 'msg' => '请重试', 'data' => null];
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
//用户签到
|
|
public function user_day_sign($uid){
|
|
$sign_status = get_system_config('sign_status');
|
|
if($sign_status != 1){
|
|
return ['code' => 201, 'msg' => '签到维护中!', 'data' => null];
|
|
}
|
|
|
|
$today = date('Y-m-d');
|
|
$map = [];
|
|
$map[] = ['sign_date', '>=', $today];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['is_delete','=',1];
|
|
$info = db::name('user_sign_every_day')->where($map)->find();
|
|
if (!empty($info)) {
|
|
return ['code' => 201, 'msg' => '今日已签到', 'data' => null];
|
|
}
|
|
//查询今天是第几天签到
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['is_delete','=',1];
|
|
$sign_day_num = db::name('user_sign_every_day')->where($map)->count('sid');
|
|
if($sign_day_num > 6){
|
|
return ['code' => 201, 'msg' => '签到异常,请联系客户!', 'data' => null];
|
|
}
|
|
//发放7日奖励
|
|
if($sign_day_num + 1 == 7){
|
|
//写入记录
|
|
$sign_reward = get_system_config('sign_reward7');
|
|
$desc = "签到连续7日奖励";
|
|
}else{
|
|
$sign_reward = get_system_config('sign_reward');
|
|
$desc = "签到奖励";
|
|
}
|
|
|
|
if($sign_reward <= 0){
|
|
return ['code' => 201, 'msg' => '签到奖励异常', 'data' => null];
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
Db::startTrans();
|
|
|
|
$data = [];
|
|
$data['uid'] = $uid;
|
|
$data['sign_award'] = $sign_reward;
|
|
$data['sign_date'] = $today;
|
|
$data['add_time'] = time();
|
|
$data['is_delete'] = 1;
|
|
$reslut = db::name('user_sign_every_day')->insert($data);
|
|
if (!$reslut) {
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '请重试', 'data' => null];
|
|
}
|
|
|
|
$reslut = model('admin/User')->change_user_money_by_uid($uid, $sign_reward, 2, 62, $desc, $uid, 0, 0);
|
|
if($reslut['code'] != 200){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '奖励领取失败!', 'data' => null];
|
|
}
|
|
Db::commit();
|
|
return ['code' => 200, 'msg' => '签到成功!', 'data' => ['award'=>$sign_reward]];
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '请重试', 'data' => null];
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public function user_day_sign_log($uid){
|
|
|
|
$today = date('Y-m-d');
|
|
$map = [];
|
|
$map[] = ['sign_date', '>=', $today];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['is_delete','=',1];
|
|
$today_sign = db::name('user_sign_every_day')->where($map)->find();
|
|
if(!empty($today_sign)){
|
|
$today_sign = 1;
|
|
}else{
|
|
$today_sign = 2;
|
|
}
|
|
|
|
|
|
$sign_reward7 = get_system_config('sign_reward7');
|
|
$sign_reward = get_system_config('sign_reward');
|
|
$today = date('Y-m-d');
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['is_delete','=',1];
|
|
$info_num = db::name('user_sign_every_day')->where($map)->count('sid');
|
|
$sign_log = [];
|
|
for($i=1;$i<=7;$i++){
|
|
if($i <= $info_num){
|
|
$sign_log[] = ['is_sign'=>1,'award'=>($i==7)?$sign_reward7:$sign_reward];
|
|
}else{
|
|
$sign_log[] = ['is_sign'=>2,'award'=>($i==7)?$sign_reward7:$sign_reward];
|
|
}
|
|
}
|
|
return ['code' => 200, 'msg' => 'success', 'data' => ['sign_log'=>$sign_log,'sign_num'=>$info_num,'today_sign'=>$today_sign]];
|
|
}
|
|
|
|
|
|
|
|
|
|
public function del_user_day_sign_log(){
|
|
$today = date('Y-m-d');
|
|
// //签到超过7天的删除
|
|
$uid2_sign = db::name('user_sign_every_day')->field("uid,count('sid') as sign_num")->where(['is_delete'=>1])->group('uid')->having("sign_num >= 7")->select();
|
|
if(!empty($uid2_sign)){
|
|
$uid2_sign = array_column($uid2_sign,'uid');
|
|
db::name('user_sign_every_day')
|
|
->where(['is_delete'=>1])
|
|
->where('uid','in',$uid2_sign)
|
|
->update(['is_delete'=>2,'update_time'=>time()]);
|
|
}
|
|
|
|
|
|
//今日未签到的删除
|
|
$uid1_sign = db::name('user_sign_every_day')->where(['is_delete'=>1,'sign_date'=>$today])->column('uid');
|
|
db::name('user_sign_every_day')
|
|
->where(['is_delete'=>1])
|
|
->where("uid",'not in',$uid1_sign)
|
|
->update(['is_delete'=>2,'update_time'=>time()]);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|