UserSystem.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. namespace common\models;
  3. use backendApi\modules\v1\models\Admin;
  4. use common\helpers\Cache;
  5. use common\helpers\user\Info;
  6. use Yii;
  7. use common\libs\logging\operate\valueType\Config as ValueTypeConfig;
  8. /**
  9. * This is the model class for table "{{%USER_SYSTEM}}".
  10. *
  11. * @property string $ID
  12. * @property string $SYSTEM_NAME 体系名称
  13. * @property string $LEADER_UID 领导人ID
  14. * @property int $PERIOD_NUM 加入时的期数
  15. * @property int $UPDATE_PERIOD_NUM 修改期数
  16. * @property string $CREATE_ADMIN 创建人
  17. * @property string $UPDATE_ADMIN 修改人
  18. * @property string $CREATE_REMARK 备注
  19. * @property string $UPDATE_REMARK 备注
  20. * @property int $IS_DEL 是否删除
  21. * @property int $CREATED_AT 创建时间
  22. * @property int $UPDATED_AT 更新时间
  23. */
  24. class UserSystem extends \common\components\ActiveRecord {
  25. /**
  26. * @inheritdoc
  27. */
  28. public static function tableName() {
  29. return '{{%USER_SYSTEM}}';
  30. }
  31. /**
  32. * @inheritdoc
  33. */
  34. public function rules()
  35. {
  36. return [
  37. [['SYSTEM_NAME', 'LEADER_UID', 'PERIOD_NUM', 'CREATE_ADMIN', 'CREATED_AT'], 'required'],
  38. [['PERIOD_NUM', 'UPDATE_PERIOD_NUM', 'IS_DEL', 'CREATED_AT', 'UPDATED_AT'], 'integer'],
  39. [['ID', 'SYSTEM_NAME', 'LEADER_UID', 'CREATE_ADMIN', 'UPDATE_ADMIN'], 'string', 'max' => 32],
  40. [['CREATE_REMARK', 'UPDATE_REMARK'], 'string', 'max' => 4000],
  41. [['LEADER_UID'], 'unique'],
  42. [['SYSTEM_NAME'], 'unique'],
  43. [['ID'], 'unique'],
  44. ];
  45. }
  46. /**
  47. * @inheritdoc
  48. */
  49. public function attributeLabels() {
  50. return [
  51. 'ID' => 'ID',
  52. 'SYSTEM_NAME' => '体系名称',
  53. 'LEADER_UID' => '领导人ID',
  54. 'PERIOD_NUM' => '加入时的期数',
  55. 'UPDATE_PERIOD_NUM' => '修改期数',
  56. 'CREATE_ADMIN' => '创建人',
  57. 'UPDATE_ADMIN' => '修改人',
  58. 'CREATE_REMARK' => '备注',
  59. 'UPDATE_REMARK' => '备注',
  60. 'IS_DEL' => '是否删除',
  61. 'CREATED_AT' => '创建时间',
  62. 'UPDATED_AT' => '更新时间',
  63. ];
  64. }
  65. /**
  66. * 获取一个体系
  67. * @param $id
  68. * @return array|null|\yii\db\ActiveRecord
  69. */
  70. public static function getSystem($id) {
  71. return static::findUseSlaves()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  72. }
  73. /**
  74. * 通过会员ID查找体系
  75. * @param $userId
  76. * @return array|null
  77. */
  78. public static function getSystemByUserId($userId) {
  79. $userInfo = UserInfo::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId]);
  80. return static::findOneAsArray('ID=:ID', [':ID' => $userInfo['SYSTEM_ID']]);
  81. }
  82. /**
  83. * 体系下的所有会员
  84. * @param $id
  85. * @return array|null
  86. */
  87. public static function getAllChildren($id) {
  88. return UserInfo::findAllAsArray('SYSTEM_ID=:SYSTEM_ID', [':SYSTEM_ID' => $id]);
  89. }
  90. /**
  91. * 通过一个体系查找到上级体系领导人
  92. * @param $id
  93. * @return array|null|\yii\db\ActiveRecord
  94. */
  95. public static function getParentSystemFromSystem($id) {
  96. $oneSystem = static::find()->select('LEADER_UID')->where('ID=:ID', [':ID' => $id])->asArray()->one();
  97. return $oneSystem ? self::getPatentSystemLeader($oneSystem['LEADER_UID']) : null;
  98. }
  99. /**
  100. * 通过一个体系的领导会员获取上级体系
  101. * @param $userId
  102. * @return array|null
  103. */
  104. public static function getParentSystem($userId){
  105. // 联表查询安置网络的上级UID,并且是领导的会员
  106. $isSystemLeaderUser = UserRelation::find()->select('UN.*,PUI.NETWORK_DEEP,PUI.IS_SYSTEM_LEADER,PUI.SYSTEM_ID')->where('UN.USER_ID=:USER_ID AND PUI.IS_SYSTEM_LEADER=1', [':USER_ID'=>$userId])->from(UserRelation::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();
  107. // 拿到体系的ID以后,再查询体系
  108. return UserSystem::findOneAsArray('ID=:ID', [':ID'=>$isSystemLeaderUser['SYSTEM_ID']]);
  109. }
  110. /**
  111. * 通过一个体系的领导会员获取上级体系领导UID
  112. * @param $userId
  113. * @return mixed|null
  114. */
  115. public static function getPatentSystemLeader($userId) {
  116. $system = self::getParentSystem($userId);
  117. return $system ? $system['LEADER_UID'] : null;
  118. }
  119. /**
  120. * 全部体系
  121. * @return array|\yii\db\ActiveRecord[]
  122. */
  123. public static function getSystemData(){
  124. return self::find()->select('ID,SYSTEM_NAME,LEADER_UID')->where('IS_DEL=0')->indexBy('ID')->orderBy('CREATED_AT ASC')->asArray()->all();
  125. }
  126. /**
  127. * 获取全部体系
  128. * @return array|\yii\db\ActiveRecord[]
  129. */
  130. public static function getAllSystems(){
  131. return self::find()->select('ID,SYSTEM_NAME')->where('IS_DEL=0')->indexBy('ID')->orderBy('CREATED_AT ASC')->asArray()->all();
  132. }
  133. /**
  134. * 操作日志记录条件
  135. * @return array
  136. */
  137. public function attrLabelsWithLogType(){
  138. return [
  139. 'SYSTEM_NAME' => '体系名称',
  140. 'LEADER_UID' => '领导人ID',
  141. 'CREATE_ADMIN' => [
  142. 'label' => '创建人',
  143. 'type' => function($data){
  144. $value = is_array($data) && isset($data['value']) ? $data['value'] : '';
  145. $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
  146. return !empty($result) ? $result['ADMIN_NAME'] : '';
  147. },
  148. ],
  149. 'UPDATE_ADMIN' => [
  150. 'label' => '修改人',
  151. 'type' => function($data){
  152. $value = is_array($data) && isset($data['value']) ? $data['value'] : '';
  153. $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
  154. return !empty($result) ? $result['ADMIN_NAME'] : '';
  155. },
  156. ],
  157. 'CREATE_REMARK' => '备注',
  158. 'IS_DEL' => [
  159. 'label' => '是否撤销',
  160. 'type' => ValueTypeConfig::YES_NO_TYPE,
  161. ],
  162. 'CREATED_AT' => [
  163. 'label' => '创建时间',
  164. 'type' => ValueTypeConfig::DATE_TIME_TYPE,
  165. ],
  166. 'UPDATED_AT' => [
  167. 'label' => '修改时间',
  168. 'type' => ValueTypeConfig::DATE_TIME_TYPE,
  169. ],
  170. ];
  171. }
  172. }