Files
mier-php/application/api/model/UserSign.php
2025-08-11 10:22:05 +08:00

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()]);
}
}