DoubleCopyPoolUser.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace addons\DoubleCopy\common\models;
  3. use common\enums\StatusEnum;
  4. use common\models\user\User;
  5. use Yii;
  6. use yii\db\Exception;
  7. /**
  8. * This is the model class for table "{{%addons_double_copy_pool_user}}".
  9. *
  10. * @property int $id
  11. * @property int $mall_id 商城ID
  12. * @property int $user_id 用户ID
  13. * @property int $level 等级(权重)
  14. * @property float $pool_income 分红池总收益,单位:元
  15. * @property int $upgrade_status 1条件升级,2购买指定商品升级,3手动升级
  16. * @property int $upgrade_level_at 等级升级时间
  17. * @property int $status 状态[-1:删除;0:禁用;1启用]
  18. * @property int|null $created_at 创建时间
  19. * @property int|null $updated_at 更新时间
  20. * @property float $pool_income_score 分红池总收益积分
  21. */
  22. class DoubleCopyPoolUser extends \common\models\base\BaseActiveRecord
  23. {
  24. /**
  25. * {@inheritdoc}
  26. */
  27. public static function tableName()
  28. {
  29. return '{{%addons_double_copy_pool_user}}';
  30. }
  31. /**
  32. * {@inheritdoc}
  33. */
  34. public function rules()
  35. {
  36. return [
  37. [['mall_id', 'user_id', 'level', 'upgrade_status', 'upgrade_level_at', 'status', 'created_at', 'updated_at'], 'integer'],
  38. [['pool_income','pool_income_score'], 'number'],
  39. ];
  40. }
  41. /**
  42. * {@inheritdoc}
  43. */
  44. public function attributeLabels()
  45. {
  46. return [
  47. 'id' => 'ID',
  48. 'mall_id' => '商城ID',
  49. 'user_id' => '用户ID',
  50. 'level' => '等级(权重)',
  51. 'pool_income' => '分红池总收益,单位:元',
  52. 'upgrade_status' => '1条件升级,2购买指定商品升级,3手动升级',
  53. 'upgrade_level_at' => '等级升级时间',
  54. 'status' => '状态[-1:删除;0:禁用;1启用]',
  55. 'created_at' => '创建时间',
  56. 'updated_at' => '更新时间',
  57. ];
  58. }
  59. /**
  60. * 关联用户表
  61. * @Author: lun
  62. * @DateTime: 2022/9/16 0016 16:50
  63. * @Copyright: copyright (c) 2021 广东七件事集团
  64. * @return \yii\db\ActiveQuery
  65. */
  66. public function getUser()
  67. {
  68. return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,avatar_url,parent_id');
  69. }
  70. /**
  71. * 生成用户数据
  72. * @Author: lun
  73. * @DateTime: 2022/9/16 0016 11:26
  74. * @Copyright: copyright (c) 2021 广东七件事集团
  75. * @param $params
  76. * @return array|bool
  77. */
  78. public static function create($params)
  79. {
  80. try {
  81. $model = self::findOne(['user_id' => $params['user_id'], 'status' => StatusEnum::ENABLED]);
  82. if (empty($model)) {
  83. $model = new self();
  84. $model->loadDefaultValues();
  85. } else {
  86. // 如果非升级情况则不做任何保存或处理
  87. if ($model->level >= $params['level']) return $model->toArray();
  88. }
  89. if (!$model->load($params, '') || !$model->save()) throw new Exception($model->getErrorMessage());
  90. return $model->toArray();
  91. } catch (\Exception $e) {
  92. self::setStaticError($e->getMessage());
  93. return false;
  94. }
  95. }
  96. /**
  97. * 删除分红池用户
  98. * @Author: lun
  99. * @DateTime: 2023/7/19 0019 9:26
  100. * @Copyright: copyright (c) 2021 广东七件事集团
  101. * @param $mall_id
  102. * @param $user_id
  103. * @return bool
  104. */
  105. public static function deleteUser($mall_id, $user_id)
  106. {
  107. $trans = Yii::$app->db->beginTransaction();
  108. try {
  109. // 删除用户
  110. $model = self::findOne(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => StatusEnum::ENABLED]);
  111. if (empty($model)) throw new \Exception('查无此用户');
  112. $model->status = StatusEnum::DELETE;
  113. if (!$model->save()) throw new Exception('分红池用户删除失败:'.$model->getErrorMessage());
  114. // 删除当前用户的分红记录,避免此用户再次升级导致分红记录叠加
  115. DoubleCopyPoolLog::updateAll(['status' => StatusEnum::DELETE], ['user_id' => $user_id, 'status' => StatusEnum::ENABLED]);
  116. $trans->commit();
  117. return true;
  118. } catch (\Exception $e) {
  119. $trans->rollBack();
  120. return false;
  121. }
  122. }
  123. }