where(['store_id' => $store_id, 'user_id' => $user_id])->orderBy('created_at DESC')->asArray()->one(); $setting = IntegralSetting::find()->where(['store_id' => get_store_id()])->asArray()->one(); if (!$setting) { return $this->asJson([ 'code' => 1, 'msg' => '签到未设置' ]); } if (intval($setting['register_status']) === 0) { return $this->asJson([ 'code' => 1, 'msg' => '签到未开启' ]); } $day1 = $first_day['continuation']; $first_day['register_time'] = strtotime(date('Y-m-d', strtotime($first_day['register_time']))); $date = strtotime(date('Y-m-d', time())); if ($date == $first_day['register_time']) { return $this->asJson([ 'code' => 1, 'msg' => '已签到' ]); } $day = ($date - $first_day['register_time']) / 86400; if ($day >= 1 && $day < 2) { $day1++; } else { $day1 = 1; } $register_integral = rand($setting['register_integral'] ?? 1, $setting['register_integral_end'] ?? 5); $register_reward = rand($setting['register_reward'] ?? 1, $setting['register_reward'] ?? 5); if ($day1 >= $setting['register_continuation']) { $score = $register_reward + $register_integral; } else { $score = $register_integral; } $today_date = date('Y-m-d'); $register->store_id = get_store_id(); $register->user_id = get_user_id(); $register->register_time = $today_date; $register->created_at = time(); $register->continuation = $day1; $register->integral = $score; if ($register->save()) { // 每日签到送积分 AccountLog::saveLog($user_id, $score, AccountLog::TYPE_INTEGRAL, AccountLog::LOG_TYPE_INCOME, AccountLog::TYPE_REGISTER_INTEGRAL, 0, $today_date . "签到赠送积分"); // 签到获取成长值 $setting = Option::get('growth_setting',$store_id,'level',''); if(!empty($setting)){ $setting['value'] = json_decode($setting['value'],true); } // 未设置 或者 设置消费成长值为0 的时候直接返回 if($setting && $setting['value']['sign_give'] > 0){ $amount = $setting['value']['sign_give']; UserGrowthValueLog::setLog($store_id,$user_id,UserGrowthValueLog::LOG_TYPE_ADD,$amount,UserGrowthValueLog::TYPE_SIGN,"签到获赠{$amount}成长值"); } return $this->asJson([ 'code' => 0, 'msg' => '签到成功', 'data' => [ 'continuation' => $register->continuation ] ]); } else { return $this->asJson([ 'code' => 1, 'msg' => '签到失败', ]); } } /** * 签到首页 * @return \yii\web\Response */ public function actionIndex() { $today_day = date('Y-m-d'); $store_id = get_store_id(); $user_id = get_user_id(); $setting = IntegralSetting::find()->where(['store_id' => $store_id])->asArray()->one(); $today = Register::find()->where(['register_time' => $today_day, 'store_id' => $store_id, 'user_id' => $user_id])->asArray()->one(); $register = Register::find()->where(['store_id' => $store_id, 'user_id' => $user_id])->orderBy('created_at DESC')->asArray()->one(); $date_arr = Tools::getDate(); $registerTime = Register::find()->where(['store_id' => $store_id, 'user_id' => $user_id])->asArray()->all(); $register_day = count($registerTime); $time = []; foreach ($date_arr['date'] as $key => $value) { $reg = Register::find()->where(['register_time' => $value, 'store_id' => $store_id, 'user_id' => $user_id])->asArray()->one(); $time[] = [ 'register_time' => $value, 'day' => $value === date('Y-m-d',time()) ? '今天' : date('n.j',strtotime($value)) , 'is_register' => $reg ? 1 : 0 ]; } // 积分记录 $account_log = AccountLog::find()->where(['store_id' => get_store_id(), 'order_type' => AccountLog::TYPE_REGISTER_INTEGRAL])->limit(10)->orderBy('id DESC')->select('user_id, amount')->asArray()->all(); $log = []; if (!empty($account_log)) { foreach ($account_log as &$a_log) { $saas_user = SaasUser::findOne(['mobile' => User::findOne($a_log['user_id'])->binding]); $log[] = ($saas_user->name ? Tools::substr_cut($saas_user->name) : '某**') . '获得' . intval($a_log['amount']) . '积分奖励'; } } $setting['register_integral_end'] = $setting['register_integral_end'] ?? '5'; $setting['register_reward_end'] = $setting['register_reward_end'] ?? '5'; return $this->asJson([ 'code' => 0, 'data' => [ 'setting' => $setting, 'today' => $today ? 1 : 0, 'total_register_day' => $register_day, 'register' => $register ? $register['continuation'] : 0, 'registerTime' => $time, 'account_log' => $log ], ]); } }