|
|
@@ -0,0 +1,222 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Http\Controllers\Api;
|
|
|
+
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use App\Http\Controllers\Controller;
|
|
|
+use App\Http\Models\Sign;
|
|
|
+use App\Http\Models\UserInfo;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
+use \Exception;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 签到控制器
|
|
|
+ */
|
|
|
+class SignController extends Controller
|
|
|
+{
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 签到次数
|
|
|
+ *
|
|
|
+ * @access public
|
|
|
+ * @param mixed $req 参数.
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public function signCount(Request $req){
|
|
|
+ try {
|
|
|
+ $signModel = new Sign;
|
|
|
+ $uid = S('token_user_id');
|
|
|
+ // 查询用户ID.
|
|
|
+ $getSignWhere['members_id'] = $uid;
|
|
|
+ // 获取当周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(),
|
|
|
+ ];
|
|
|
+ // 查询用户签到次数.
|
|
|
+ $countWeek = $signModel->countSign($getSignWhere, $weekBetween);
|
|
|
+ $countMonth = $signModel->countSign($getSignWhere, $monthBetween);
|
|
|
+ $return = [
|
|
|
+ 'countWeek' => $countWeek,
|
|
|
+ 'countMonth' => $countMonth,
|
|
|
+ ];
|
|
|
+
|
|
|
+ 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()
|
|
|
+
|
|
|
+
|
|
|
+}
|