AchievementUserDelLogic.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace addons\Achievement\common\logic;
  3. use addons\Achievement\common\models\AchievementAwardLog;
  4. use addons\Achievement\common\models\AchievementGrantLog;
  5. use addons\Achievement\common\models\AchievementUser;
  6. use common\enums\StatusEnum;
  7. use common\models\user\UserPartitionRelationship;
  8. /**
  9. * 团长被删后,修正上级和下级们的业绩
  10. *
  11. */
  12. class AchievementUserDelLogic
  13. {
  14. /**
  15. * 处理开始入口
  16. *
  17. * @param $mall_id
  18. * @param $user_id
  19. * @return true|void
  20. */
  21. public static function handle($id)
  22. {
  23. $t = \Yii::$app->db->beginTransaction();
  24. try {
  25. $del_achievement_user = AchievementUser::findOne($id);//被删除的团长
  26. $grant = AchievementGrantLog::findOne(['mall_id' => $del_achievement_user['mall_id'], 'status' => StatusEnum::ENABLED, 'is_wait' => 0, 'is_create' => 0]);
  27. if (empty($grant)) {
  28. throw new \Exception('无须修改业绩');
  29. }
  30. $achievement_award_log = AchievementAwardLog::find()->where(['grant_id' => $grant['id'], 'user_id' => $del_achievement_user['user_id'],
  31. 'status' => StatusEnum::ENABLED
  32. ])->orderBy('id desc')->one();
  33. $parent_team = $achievement_award_log['parent_team'];
  34. AchievementAwardLog::updateAll(['parent_team' => $parent_team], ['parent_team' => $del_achievement_user['user_id']]);
  35. $achievement_award_log->status = StatusEnum::DELETE;
  36. $achievement_award_log->save();
  37. if (!empty($parent_team)) {
  38. $grant->award_proportion = json_decode($grant['award_proportion'], true);
  39. AchievementLogic::fixParentAchievement($grant, $parent_team);
  40. $grant['award_proportion'] = json_encode($grant['award_proportion']);
  41. AchievementOrderLogic::updateGrant($grant);
  42. }
  43. $t->commit();
  44. return true;
  45. } catch (\Exception $e) {
  46. $t->rollBack();
  47. var_dump($e->getMessage() . $e->getFile() . $e->getLine());
  48. return true;
  49. }
  50. }
  51. }