| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- namespace addons\LuckyGroup\common\logic\attend;
- use addons\LuckyGroup\common\enums\LuckyGroupEnum;
- use addons\LuckyGroup\common\models\LuckyGroupAttendTimesLog;
- use addons\LuckyGroup\common\models\LuckyGroupLevel;
- use addons\LuckyGroup\common\models\LuckyGroupUser;
- use common\enums\StatusEnum;
- use common\traits\ErrorTrait;
- class AttendTimeLogic
- {
- use ErrorTrait;
-
- /**
- * @name:
- * @msg: 每日更新参团会员的参团次数
- * @param {int} $mall_id
- * @return {*}
- */
- public static function addUserAttendTimes(int $mall_id)
- {
- $group_levels = LuckyGroupLevel::find()
- ->select('level,init_attend_times')
- ->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->indexBy('level')
- ->all();
- $group_users_query = LuckyGroupUser::find()->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED]);
- $time = time();
- foreach ($group_users_query->batch(200) as $group_users) {
- if (!empty($group_users)) {
- foreach ($group_users as $user) {
- $group_level = $group_levels[$user->level] ?? [];
- $user->clear_attend_times_at = $time;
- $user->give_attend_times_at = $time;
- $attend_times = $group_level['init_attend_times'] ?? 0;
- if ($attend_times == 0 && $user->level == 0) {
- $attend_times = \Yii::$app->services->setting->addons->get($mall_id, LuckyGroupEnum::ADDONS_NAME, 'basic.default_level_attend_times');
- }
- $before_attend_times = $user->attend_times ?? 0;
- $user->attend_times = $attend_times;
- $res = $user->save();
- if (false === $res) {
- \Yii::error('自动更新参团会员参团次数失败: errmsg => ' . $user->getErrorMessage() . ', user_id => ' . $user->user_id . ', level => ' . $user->level . ', attend_times => ' . $group_level['init_attend_times'] ?? 0);\Yii::getLogger()->flush(true);
- echo '自动更新参团会员参团次数失败: errmsg => ' . $user->getErrorMessage() . PHP_EOL;
- continue;
- }
- $insert_data[] = [$mall_id, $user->user_id, $attend_times, $before_attend_times, '系统每日重置参团会员的参团次数', 1, 1, $time, $time];
- }
- if (!empty($insert_data)) {
- $fields = ['mall_id', 'user_id', 'num', 'before_num', 'desc', 'type', 'status', 'created_at', 'updated_at'];
- $res = \Yii::$app->db->createCommand()->batchInsert(LuckyGroupAttendTimesLog::tableName(), $fields, $insert_data)->execute();
- if (empty($res)) {
- \Yii::error('自动更新参团会员参团次数失败: errmsg => 批量插入更新参团次数日志记录失败。insert_data => ' . var_export($insert_data, true));\Yii::getLogger()->flush(true);
- echo '自动更新参团会员参团次数失败: errmsg => 批量插入更新参团次数日志记录失败' . PHP_EOL;
- continue;
- }
- }
- }
- }
- return true;
- }
- }
|