countSign($getSignWhere, $weekBetween); $countMonth = $signModel->countSign($getSignWhere, $monthBetween); // 查询签到设置. $signSelect = [ 'sign_title', 'sign_data', 'sign_name', 'sign_type', ]; $getConfig = $signModel->signConfig($signSelect, '', ''); $weekConfig = []; $monthConfig = []; foreach ($getConfig as $v) { if ($v['sign_type'] === 1) { $weekConfig[] = $v; } else if ($v['sign_type'] === 2) { $monthConfig[] = $v; } } $return = [ 'countWeek' => $countWeek, 'countMonth' => $countMonth, 'weekConfig' => $weekConfig, 'monthConfig' => $monthConfig, ]; return toJson(1, '成功', $return); } catch (Exception $e) { echo $e->getMessage(); }//end try }//end signCount() /** * 签到 * * @access public * @param mixed $req 参数. * @return string */ public function pullSign(Request $req){ try { // 查询参数. $signModel = new Sign; $userInfoModel = new UserInfo; $uid = S('token_user_id'); // 获取当周1. $timeMonday = date('Y-m-d', (time()-((date('w',time())==0?7:date('w',time()))-1)*24*3600)); // 获取当月一号. $monthOne = date('Y-m-01'); // 时间区间. $weekBetween = [ strtotime($timeMonday), time(), ]; $monthBetween = [ strtotime($monthOne), time(), ]; $dayBetween = [ strtotime(date('Y-m-d')), time(), ]; // 查询用户ID. $getSignWhere['members_id'] = $uid; // 查询用户是否已签到. $countDay = $signModel->countSign($getSignWhere, $dayBetween); if ($countDay) { return toJson(-30004); } // 查询用户签到次数. $countWeek = $signModel->countSign($getSignWhere, $weekBetween); $countMonth = $signModel->countSign($getSignWhere, $monthBetween); // 查询设置表. $signSelect = [ 'sign_title', 'sign_data', 'sign_id', ]; $signWeekWhere = []; $signMonthWhere = []; // 根据签到天数获取查询条件. switch ($countWeek) { case 0: $signWeekWhere['sign_title'] = 'day1'; break; case 1: $signWeekWhere['sign_title'] = 'day2'; break; case 2: $signWeekWhere['sign_title'] = 'day3'; break; case 3: $signWeekWhere['sign_title'] = 'day4'; break; case 4: $signWeekWhere['sign_title'] = 'day5'; break; case 5: $signWeekWhere['sign_title'] = 'day6'; break; case 6: $signWeekWhere['sign_title'] = 'day7'; break; } switch ($countMonth) { case 4: $signMonthWhere['sign_title'] = 'accumulate1'; break; case 9: $signMonthWhere['sign_title'] = 'accumulate2'; break; case 14: $signMonthWhere['sign_title'] = 'accumulate3'; break; case 19: $signMonthWhere['sign_title'] = 'accumulate4'; break; case 24: $signMonthWhere['sign_title'] = 'accumulate5'; break; } $getWeekConfig = []; $getMonthConfig = []; // 查询周签到设置. if ($signWeekWhere) { $getWeekConfig = $signModel->signConfig($signSelect, $signWeekWhere, ''); } // 查询月签到设置. if ($signMonthWhere) { $getMonthConfig = $signModel->signConfig($signSelect, $signMonthWhere, ''); } // 查询用户余额. $getUserSelect = ['membersDetailed_cash']; $getUserWhere['members_id'] = $uid; $cash = $userInfoModel->userInfo($getUserSelect, $getUserWhere); $nowCash = $cash['membersDetailed_cash']; // 添加记录,修改用户信息. DB::beginTransaction(); $upUserInfo = 1; $receiveMoney = 0; $signId = ''; // 如果有签到奖励则修改用户余额. if ($signWeekWhere || $signMonthWhere) { $signIdArr = []; $getWeekMoney = 0; $getMonthMoney = 0; if ($getWeekConfig) { $signIdArr[] = $getWeekConfig[0]['sign_id']; $getWeekMoney = $getWeekConfig[0]['sign_data']; } if ($getMonthConfig) { $signIdArr[] = $getMonthConfig[0]['sign_id']; $getMonthMoney = $getMonthConfig[0]['sign_data']; } $signId = json_encode($signIdArr); // 计算签到后余额. $receiveMoney = intval($getWeekMoney) + intval($getMonthMoney); $nowCash += $receiveMoney; $upUserInfoWhere['members_id'] = $uid; $upUserInfoData['membersDetailed_cash'] = $nowCash; // 修改用户信息. $upUserInfo = $userInfoModel->upUserInfo($upUserInfoWhere, $upUserInfoData); } // 新增签到记录. $orderId = getOrderId(); $addSignData = [ 'getsign_identity' => $orderId, 'members_id' => $uid, 'getsign_addtime' => time(), 'getsign_mony' => $receiveMoney, 'getsign_begin_money' => $cash['membersDetailed_cash'], 'getsign_end_money' => $nowCash, 'sign_id' => $signId, ]; $addSign = $signModel->addSign($addSignData); if ($addSign && $upUserInfo) { DB::commit(); $return = [ 'money' => $nowCash, 'countWeek' => $countWeek + 1, 'countMonth' => $countMonth + 1, ]; return toJson(1, '成功', $return); } else { return toJson(-2); DB::rollBack(); } } catch (Exception $e) { echo $e->getMessage(); }//end try }//end pullSign() }