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