TimestampBehavior::class ] ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => '', 'store_id' => '', 'name' => '姓名', 'mobile' => '手机号', 'user_id' => '商城用户iD', 'team_grades_level' => '申请等级', 'total_price' => '累计分红金额', 'price' => '可提现分红金额', 'province_id' => '省ID', 'city_id' => '市ID', 'district_id' => '区ID', 'address' => '详细地址', 'is_delete' => '', 'created_at' => '', 'updated_at' => '', 'level_expires' => '等级有效期', 'level_expires_ext' => '等级有效期备注信息' ]; } public function beforeSave($insert) { if (parent::beforeSave($insert)) { if ($insert) { $teamGrades = self::findOne(['user_id' => $this->user_id, 'is_delete' => 0]); if ($teamGrades) { $this->addError('user', '操作失败,用户已经存在'); return false; } } return true; } return false; } public function afterSave($insert, $changedAttributes) { if (isset($changedAttributes['team_grades_level']) || $insert) { $teamGrades = self::findOne($this->id); $level = TeamGradesLevel::findOne(['level' => $teamGrades->team_grades_level, 'store_id' => $this->store_id, 'is_delete' => 0]); $result = self::handleUserLevelExpires($level, $teamGrades); $teamGrades->level_expires_ext = json_encode($result['level_expires_ext'], JSON_UNESCAPED_UNICODE); $teamGrades->level_expires = $result['expires_in']; $teamGrades->save(); } parent::afterSave($insert, $changedAttributes); // TODO: Change the autogenerated stub } public static function getUserTeamGrades($user_id) { $team_grades = self::find()->where(['user_id' => $user_id, 'is_delete' => 0]) ->select('id, user_id, store_id, name, mobile, team_grades_level, price, total_price')->asArray()->one(); if (empty($team_grades)) { $store_id = User::findOne($user_id)->store_id; return [ 'id' => 0, 'user_id' => $user_id, 'store_id' => $store_id, 'price' => 0, 'total_price' => 0, 'name' => '', 'mobile' => '', 'team_grades_level' => 0, 'team_grades_level_name' => '无等级', 'tiered_bonus' => 0, ]; } $team_grades['team_grades_level_name'] = TeamGradesLevel::getLevelInfo($team_grades['team_grades_level'], $team_grades['store_id'], 'level_name') ?: '无等级'; $team_grades['tiered_bonus'] = TeamGradesLevel::getLevelInfo($team_grades['team_grades_level'], $team_grades['store_id'], 'tiered_bonus') ?: 0; return $team_grades; } //处理团队等级有效期 public static function handleUserLevelExpires($level, $teamGrades) { if (!$level || !$teamGrades) { return ['level_expires_ext' => [], 'expires_in' => 0]; } // 会员等级新增有效期时间 $expires_in = 0; //购买会员有限期 0为永久 if ($level->expires_in > 0) { $expires_in = strtotime('+' . $level->expires_in . ' day'); if ($level->expires_type) { $expires_in = strtotime('+' . $level->expires_in . ' month');//月 } } $level_expires_ext = [['level' => $teamGrades->team_grades_level, 'expires_in' => $expires_in]]; if ($teamGrades->level_expires_ext) { $level_expires_ext = json_decode($teamGrades->level_expires_ext, true); //给新的加上 排序(按等级) 并且 去除已经过期的 作为新的一个json array_push($level_expires_ext, ['level' => $teamGrades->team_grades_level, 'expires_in' => $expires_in]); //排序 $last_names = array_column($level_expires_ext, 'level'); array_multisort($last_names, SORT_DESC, $level_expires_ext); //去除已经过期的 foreach ($level_expires_ext as $user_level_index => $user_level_item) { // 去除已经过期的 if ($user_level_item['expires_in'] > 0 && $user_level_item['expires_in'] <= time()) { unset($level_expires_ext[$user_level_index]); } } $level_expires_ext = array_values($level_expires_ext); } return ['level_expires_ext' => $level_expires_ext, 'expires_in' => $expires_in]; } }