UserInfo.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <?php
  2. namespace common\models;
  3. use common\helpers\user\Info;
  4. use Yii;
  5. use common\libs\logging\operate\valueType\Config as ValueTypeConfig;
  6. /**
  7. * This is the model class for table "{{%USER_INFO}}".
  8. *
  9. * @property string $ID
  10. * @property string $USER_ID 会员ID
  11. * @property string $USER_NAME 会员名
  12. * @property string $ZC_PV 注册单PV
  13. * @property string $CON_UID 安置人ID
  14. * @property string $REC_UID 实际推荐人ID
  15. * @property string $REC_UID_ACTUAL 推荐人ID
  16. * @property int $CON_NUM 下级节点数量
  17. * @property int $REC_NUM 开拓会员数量
  18. * @property int $NETWORK_DEEP 安置网络深度
  19. * @property int $RELATION_DEEP 开拓网络深度
  20. * @property string $SYSTEM_ID 体系ID
  21. * @property int $IS_SYSTEM_LEADER 是否体系领导人
  22. * @property int $IS_TEAM 是否点位合作
  23. * @property int $IS_BIND 是否点位绑定
  24. * @property int $IS_TEAM_MAIN 是否点位合作主点
  25. * @property int $IS_BIND_MAIN 是否点位绑定主点
  26. * @property int $IS_AUTO_WITHDRAW 是否开启自动提现
  27. * @property int $CLOSE_LOGIN 关闭结算系统登录
  28. * @property string $REG_TYPE 注册类型
  29. * @property string $SHOULD_REG_TYPE 应注册类型
  30. * @property string $REG_NAME 注册名称
  31. * @property string $CREDIT_CODE 信用代码
  32. * @property string $PREMISES 经营场所
  33. * @property string $LEGAL_PERSON 法人
  34. * @property int $REG_EXPIRES 注册有效期
  35. * @property int $STORE_TYPE 店铺类型
  36. * @property string $INVOICE_BALANCE 发票余额
  37. * @property string $HIGHEST_EMP_LV 历史最高聘级
  38. * @property int $CREATED_AT 创建时间
  39. * @property int $UPDATED_AT 更新时间
  40. * @property int $CLOSE_LOGIN_AT 禁止登录时间
  41. * @property int $PULLED_AT 站内信拉取时间
  42. * @property int $DELETED 是否删除
  43. * @property int $DELETED_AT 删除时间
  44. * @property int $ALLOW_TRANSFER 开启转账功能
  45. * @property int $ALLOW_RECONSUME_SMS 开启复销短信提醒
  46. * @property int $ALLOW_RECONSUME_SMS_TO 开启复销短信提醒有效期
  47. * @property int $HIGHEST_EMP_LV_PERIOD 首次达到最高聘级期数
  48. * @property int $IS_GROUP_LEADER 是否团队领导人
  49. * @property int $GROUP_LEADER_AT 成为团队领导人时间
  50. * @property string $TRANSFER_PROP 单笔转账比例
  51. * @property int $LOGIN_NUMS 登录次数
  52. * @property int $FAIL_NUMS 登录失败次数
  53. * @property string $LAST_LOGIN_IP 上次登录IP
  54. * @property int $LAST_LOGIN_AT 上次登录时间
  55. * @property string $SHOW_EMP_LV 展示聘级
  56. * @property string $ZC_AMOUNT 注册单报单金额
  57. */
  58. class UserInfo extends \common\components\ActiveRecord
  59. {
  60. const STORE_TYPE_NORMAL = 0; // 一般会员无店铺标识
  61. const STORE_TYPE_GENERAL = 1; // 店铺
  62. const STORE_TYPE_IMAGE = 2; // 形象店
  63. const STORE_TYPE_SERVICE = 3; // 服务点、具有报单功能的会员
  64. const STORE_TYPE_AREA = 4; // 区级店
  65. /**
  66. * @inheritdoc
  67. */
  68. public static function tableName()
  69. {
  70. return '{{%USER_INFO}}';
  71. }
  72. /**
  73. * @inheritdoc
  74. */
  75. public function rules()
  76. {
  77. return [
  78. [['USER_ID', 'USER_NAME', 'CON_UID', 'REC_UID', 'CREATED_AT'], 'required'],
  79. [['ZC_PV', 'INVOICE_BALANCE', 'TRANSFER_PROP', 'ZC_AMOUNT'], 'number'],
  80. [['CON_NUM', 'REC_NUM', 'NETWORK_DEEP', 'RELATION_DEEP', 'IS_SYSTEM_LEADER', 'IS_TEAM', 'IS_BIND', 'IS_TEAM_MAIN', 'IS_BIND_MAIN', 'IS_AUTO_WITHDRAW', 'CLOSE_LOGIN', 'REG_EXPIRES', 'STORE_TYPE', 'CREATED_AT', 'UPDATED_AT', 'CLOSE_LOGIN_AT', 'PULLED_AT', 'DELETED', 'DELETED_AT', 'ALLOW_TRANSFER', 'HIGHEST_EMP_LV_PERIOD', 'IS_GROUP_LEADER', 'GROUP_LEADER_AT', 'ALLOW_RECONSUME_SMS', 'ALLOW_RECONSUME_SMS_TO', 'LOGIN_NUMS', 'FAIL_NUMS', 'LAST_LOGIN_AT'], 'integer'],
  81. [['ID','USER_ID', 'CON_UID', 'REC_UID', 'SYSTEM_ID', 'REG_TYPE', 'SHOULD_REG_TYPE', 'HIGHEST_EMP_LV', 'SHOW_EMP_LV'], 'string', 'max' => 32],
  82. [['USER_NAME', 'LAST_LOGIN_IP'], 'string', 'max' => 16],
  83. [['REG_NAME', 'CREDIT_CODE', 'PREMISES', 'LEGAL_PERSON'], 'string', 'max' => 255],
  84. [['USER_ID'], 'unique'],
  85. ];
  86. }
  87. /**
  88. * @inheritdoc
  89. */
  90. public function attributeLabels()
  91. {
  92. return [
  93. 'ID' => 'ID',
  94. 'USER_ID' => '会员ID',
  95. 'USER_NAME' => '会员名',
  96. 'ZC_PV' => '注册单PV',
  97. 'CON_UID' => '接点人ID',
  98. 'REC_UID' => '推荐人ID',
  99. 'CON_NUM' => '下级节点数量',
  100. 'REC_NUM' => '开拓会员数量',
  101. 'NETWORK_DEEP' => '安置网络深度',
  102. 'RELATION_DEEP' => '开拓网络深度',
  103. 'SYSTEM_ID' => '体系ID',
  104. 'IS_SYSTEM_LEADER' => '是否体系领导人',
  105. 'IS_TEAM' => '是否点位合作',
  106. 'IS_BIND' => '是否点位绑定',
  107. 'IS_TEAM_MAIN' => '是否点位合作主点',
  108. 'IS_BIND_MAIN' => '是否点位绑定主点',
  109. 'IS_AUTO_WITHDRAW' => '是否开启自动提现',
  110. 'CLOSE_LOGIN' => '关闭结算系统登录',
  111. 'REG_TYPE' => '注册类型',
  112. 'SHOULD_REG_TYPE' => '应注册类型',
  113. 'REG_NAME' => '注册名称',
  114. 'CREDIT_CODE' => '信用代码',
  115. 'PREMISES' => '经营场所',
  116. 'LEGAL_PERSON' => '法人',
  117. 'REG_EXPIRES' => '注册有效期',
  118. 'STORE_TYPE' => '店铺类型',
  119. 'INVOICE_BALANCE' => '发票余额',
  120. 'HIGHEST_EMP_LV' => '历史最高聘级',
  121. 'CREATED_AT' => '创建时间',
  122. 'UPDATED_AT' => '更新时间',
  123. 'CLOSE_LOGIN_AT' => '禁止登录时间',
  124. 'PULLED_AT' => '站内信拉取时间',
  125. 'DELETED' => '是否删除',
  126. 'DELETED_AT' => '删除时间',
  127. 'ALLOW_TRANSFER' => '开启转账功能',
  128. 'ALLOW_RECONSUME_SMS' => '开启复销短信提醒',
  129. 'ALLOW_RECONSUME_SMS_TO' => '开启复销短信提醒有效期',
  130. 'HIGHEST_EMP_LV_PERIOD' => '首次达到最高聘级期数',
  131. 'IS_GROUP_LEADER' => '是否团队领导人',
  132. 'GROUP_LEADER_AT' => '团队领导人时间',
  133. 'TRANSFER_PROP' => '单笔转账比例',
  134. 'LOGIN_NUMS' => '登录次数',
  135. 'FAIL_NUMS' => '登录失败次数',
  136. 'LAST_LOGIN_IP' => '上次登录IP',
  137. 'LAST_LOGIN_AT' => '上次登录时间',
  138. 'SHOW_EMP_LV' => '展示聘级',
  139. 'ZC_AMOUNT' => '注册单报单金额',
  140. ];
  141. }
  142. /**
  143. * 删除会员
  144. * @param $userId
  145. */
  146. public static function deleteUser($userId){
  147. static::deleteAll('USER_ID=:USER_ID', [':USER_ID'=>$userId]);
  148. UserNetwork::deleteAll('USER_ID=:USER_ID', [':USER_ID'=>$userId]);
  149. UserRelation::deleteAll('USER_ID=:USER_ID', [':USER_ID'=>$userId]);
  150. UserBonus::deleteAll('USER_ID=:USER_ID', [':USER_ID'=>$userId]);
  151. UserPerf::deleteAll('USER_ID=:USER_ID', [':USER_ID'=>$userId]);
  152. }
  153. /**
  154. * 获取会员接点人推荐人
  155. * @param $userId
  156. * @return array|null
  157. */
  158. public static function getNetByUserId($userId){
  159. return static::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId], 'CON_UID,REC_UID');
  160. }
  161. /**
  162. * 操作日志记录条件
  163. * @return array
  164. */
  165. public function attrLabelsWithLogType(){
  166. return [
  167. 'USER_ID' => '会员ID',
  168. 'USER_NAME' => '会员名',
  169. 'ZC_PV' => '注册单PV',
  170. 'CON_UID' => [
  171. 'label' => '接点人编号',
  172. 'type' => function($data){
  173. $value = $data['value'];
  174. return Info::getUserNameByUserId($value);
  175. },
  176. ],
  177. 'REC_UID' => [
  178. 'label' => '接点人编号',
  179. 'type' => function($data){
  180. $value = $data['value'];
  181. return Info::getUserNameByUserId($value);
  182. },
  183. ],
  184. 'CON_NUM' => '下级节点数量',
  185. 'REC_NUM' => '开拓会员数量',
  186. 'NETWORK_DEEP' => '安置网络深度',
  187. 'RELATION_DEEP' => '开拓网络深度',
  188. 'SYSTEM_ID' => '体系ID',
  189. 'IS_SYSTEM_LEADER' => '是否体系领导人',
  190. 'IS_TEAM' => '是否点位合作',
  191. 'IS_BIND' => '是否点位绑定',
  192. 'IS_TEAM_MAIN' => '是否点位合作主点',
  193. 'IS_BIND_MAIN' => '是否点位绑定主点',
  194. 'IS_AUTO_WITHDRAW' => [
  195. 'label' => '是否开启自动提现',
  196. 'type' => ValueTypeConfig::YES_NO_TYPE,
  197. ],
  198. 'CLOSE_LOGIN' => '关闭结算系统登录',
  199. 'REG_TYPE' => '注册类型',
  200. 'SHOULD_REG_TYPE' => '应注册类型',
  201. 'REG_NAME' => '注册名称',
  202. 'CREDIT_CODE' => '信用代码',
  203. 'PREMISES' => '经营场所',
  204. 'LEGAL_PERSON' => '法人',
  205. 'REG_EXPIRES' => '注册有效期',
  206. 'STORE_TYPE' => '店铺类型',
  207. 'INVOICE_BALANCE' => '发票余额',
  208. 'HIGHEST_EMP_LV' => '历史最高聘级',
  209. 'CREATED_AT' => '创建时间',
  210. 'UPDATED_AT' => '更新时间',
  211. 'CLOSE_LOGIN_AT' => '禁止登录时间',
  212. 'PULLED_AT' => '站内信拉取时间',
  213. 'DELETED' => '是否删除',
  214. 'DELETED_AT' => '删除时间',
  215. 'ALLOW_TRANSFER' => [
  216. 'label' => '开启转账功能',
  217. 'type' => ValueTypeConfig::YES_NO_TYPE,
  218. ],
  219. 'ALLOW_RECONSUME_SMS' => [
  220. 'label' => '开启复销短信提醒',
  221. 'type' => ValueTypeConfig::YES_NO_TYPE,
  222. ],
  223. 'ALLOW_RECONSUME_SMS_TO' => [
  224. 'label' => '开启复销短信提醒有效期',
  225. 'type' => ValueTypeConfig::DATE_TYPE,
  226. ],
  227. 'HIGHEST_EMP_LV_PERIOD' => '首次达到最高聘级期数',
  228. 'IS_GROUP_LEADER' => [
  229. 'label' => '是否团队领导人',
  230. 'type' => ValueTypeConfig::YES_NO_TYPE,
  231. ],
  232. 'GROUP_LEADER_AT' => [
  233. 'label' => '团队领导人时间',
  234. 'type' => ValueTypeConfig::DATE_TIME_TYPE,
  235. ],
  236. 'TRANSFER_PROP' => '单笔转账比例',
  237. 'SHOW_EMP_LV' => [
  238. 'label' => '前台显示聘级',
  239. 'type' => ValueTypeConfig::EMP_LV_TYPE,
  240. ],
  241. ];
  242. }
  243. /**
  244. * 查询安置网的会员
  245. * @param $userId
  246. * @return array|null
  247. */
  248. public static function getPlacementChildren($userId): ?array
  249. {
  250. return static::findAllAsArray('REC_UID=:REC_UID', [':REC_UID' => $userId], 'USER_ID,USER_NAME');
  251. }
  252. public function getRecUserName()
  253. {
  254. return $this->hasOne(UserInfo::class, ['USER_ID' => 'REC_UID']);
  255. }
  256. public function getRecRealName()
  257. {
  258. return $this->hasOne(User::class, ['ID' => 'REC_UID']);
  259. }
  260. public function getConUserName()
  261. {
  262. return $this->hasOne(UserInfo::class, ['USER_ID' => 'CON_UID']);
  263. }
  264. public function getConRealName()
  265. {
  266. return $this->hasOne(User::class, ['ID' => 'CON_UID']);
  267. }
  268. }