| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <?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()
- }
|