UserTeam.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace common\models;
  3. use common\helpers\Cache;
  4. use common\helpers\user\Info;
  5. use Yii;
  6. /**
  7. * This is the model class for table "{{%USER_TEAM}}".
  8. *
  9. * @property string $ID
  10. * @property string $TEAM_NAME 团队名称
  11. * @property string $LEADER_UID 领导人ID
  12. * @property int $PERIOD_NUM 加入时的期数
  13. * @property int $UPDATE_PERIOD_NUM 修改期数
  14. * @property string $CREATE_ADMIN 创建人
  15. * @property string $UPDATE_ADMIN 修改人
  16. * @property string $CREATE_REMARK 备注
  17. * @property string $UPDATE_REMARK 备注
  18. * @property int $IS_DEL 是否删除
  19. * @property int $CREATED_AT 创建时间
  20. * @property int $UPDATED_AT 更新时间
  21. */
  22. class UserTeam extends \common\components\ActiveRecord {
  23. /**
  24. * @inheritdoc
  25. */
  26. public static function tableName() {
  27. return '{{%USER_TEAM}}';
  28. }
  29. /**
  30. * @inheritdoc
  31. */
  32. public function rules()
  33. {
  34. return [
  35. [['TEAM_NAME', 'LEADER_UID', 'PERIOD_NUM', 'CREATE_ADMIN', 'CREATED_AT'], 'required'],
  36. [['PERIOD_NUM', 'UPDATE_PERIOD_NUM', 'IS_DEL', 'CREATED_AT', 'UPDATED_AT'], 'integer'],
  37. [['ID', 'TEAM_NAME', 'LEADER_UID', 'CREATE_ADMIN', 'UPDATE_ADMIN'], 'string', 'max' => 32],
  38. [['CREATE_REMARK', 'UPDATE_REMARK'], 'string', 'max' => 4000],
  39. [['LEADER_UID'], 'unique'],
  40. [['TEAM_NAME'], 'unique'],
  41. [['ID'], 'unique'],
  42. ];
  43. }
  44. /**
  45. * @inheritdoc
  46. */
  47. public function attributeLabels() {
  48. return [
  49. 'ID' => 'ID',
  50. 'TEAM_NAME' => '团队名称',
  51. 'LEADER_UID' => '领导人ID',
  52. 'PERIOD_NUM' => '加入时的期数',
  53. 'UPDATE_PERIOD_NUM' => '修改期数',
  54. 'CREATE_ADMIN' => '创建人',
  55. 'UPDATE_ADMIN' => '修改人',
  56. 'CREATE_REMARK' => '备注',
  57. 'UPDATE_REMARK' => '备注',
  58. 'IS_DEL' => '是否删除',
  59. 'CREATED_AT' => '创建时间',
  60. 'UPDATED_AT' => '更新时间',
  61. ];
  62. }
  63. /**
  64. * 获取一个团队
  65. * @param $id
  66. * @return array|null|\yii\db\ActiveRecord
  67. */
  68. public static function getTeam($id) {
  69. return static::findUseSlaves()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  70. }
  71. /**
  72. * 通过会员ID查找团队
  73. * @param $userId
  74. * @return array|null
  75. */
  76. public static function getTeamByUserId($userId) {
  77. $userInfo = UserInfo::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId]);
  78. return static::findOneAsArray('ID=:ID', [':ID' => $userInfo['TEAM_ID']]);
  79. }
  80. /**
  81. * 团队下的所有会员
  82. * @param $id
  83. * @return array|null
  84. */
  85. public static function getAllChildren($id) {
  86. return UserInfo::findAllAsArray('TEAM_ID=:TEAM_ID', [':TEAM_ID' => $id]);
  87. }
  88. /**
  89. * 通过一个团队查找到上级团队领导人
  90. * @param $id
  91. * @return array|null|\yii\db\ActiveRecord
  92. */
  93. public static function getParentTeamFromTeam($id) {
  94. $oneTeam = static::find()->select('LEADER_UID')->where('ID=:ID', [':ID' => $id])->asArray()->one();
  95. return $oneTeam ? self::getPatentTeamLeader($oneTeam['LEADER_UID']) : null;
  96. }
  97. /**
  98. * 通过一个团队的领导会员获取上级团队
  99. * @param $userId
  100. * @return array|null
  101. */
  102. public static function getParentTeam($userId){
  103. // 联表查询安置网络的上级UID,并且是领导的会员
  104. $isTeamLeaderUser = UserNetwork::find()->select('UN.*,PUI.NETWORK_DEEP,PUI.IS_TEAM_LEADER,PUI.TEAM_ID')->where('UN.USER_ID=:USER_ID AND PUI.IS_TEAM_LEADER=1', [':USER_ID'=>$userId])->from(UserNetwork::tableName().' AS UN')->join('LEFT JOIN', UserInfo::tableName().' AS PUI', 'UN.PARENT_UID=PUI.USER_ID')->orderBy('PUI.NETWORK_DEEP DESC')->limit(1)->asArray()->one();
  105. // 拿到团队的ID以后,再查询团队
  106. return UserTeam::findOneAsArray('ID=:ID', [':ID'=>$isTeamLeaderUser['TEAM_ID']]);
  107. }
  108. /**
  109. * 通过一个团队的领导会员获取上级团队领导UID
  110. * @param $userId
  111. * @return mixed|null
  112. */
  113. public static function getPatentTeamLeader($userId) {
  114. $team = self::getParentTeam($userId);
  115. return $team ? $team['LEADER_UID'] : null;
  116. }
  117. /**
  118. * 全部团队
  119. * @return array|\yii\db\ActiveRecord[]
  120. */
  121. public static function getTeamData(){
  122. return self::find()->select('ID,TEAM_NAME,LEADER_UID')->where('IS_DEL=0')->orderBy('CREATED_AT ASC')->asArray()->all();
  123. }
  124. }