User.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\model\user;
  12. use app\model\order\StoreOrder;
  13. use app\model\system\SystemUserLevel;
  14. use crmeb\basic\BaseModel;
  15. use crmeb\traits\ModelTrait;
  16. use think\Model;
  17. /**
  18. * Class User
  19. * @package app\model\user
  20. */
  21. class User extends BaseModel
  22. {
  23. use ModelTrait;
  24. /**
  25. * @var string
  26. */
  27. protected $pk = 'uid';
  28. protected $name = 'user';
  29. protected $insert = ['add_time', 'add_ip', 'last_time', 'last_ip'];
  30. protected $hidden = [
  31. 'add_ip', 'account', 'clean_time', 'last_ip', 'pwd'
  32. ];
  33. /**
  34. * 自动转类型
  35. * @var string[]
  36. */
  37. protected $type = [
  38. 'birthday' => 'int'
  39. ];
  40. protected $updateTime = false;
  41. protected function setAddTimeAttr($value)
  42. {
  43. return time();
  44. }
  45. protected function setAddIpAttr($value)
  46. {
  47. return app('request')->ip();
  48. }
  49. protected function setLastTimeAttr($value)
  50. {
  51. return time();
  52. }
  53. protected function setLastIpAttr($value)
  54. {
  55. return app('request')->ip();
  56. }
  57. /**
  58. * 链接会员登陆设置表
  59. * @return \think\model\relation\HasOne
  60. */
  61. public function systemUserLevel()
  62. {
  63. return $this->hasOne(SystemUserLevel::class, 'id', 'level');
  64. }
  65. /**
  66. * 关联用户分组
  67. * @return \think\model\relation\HasOne
  68. */
  69. public function userGroup()
  70. {
  71. return $this->hasOne(UserGroup::class, 'id', 'group_id');
  72. }
  73. /**
  74. * 关联自己
  75. * @return \think\model\relation\HasOne
  76. */
  77. public function spreadUser()
  78. {
  79. return $this->hasOne(self::class, 'uid', 'spread_uid');
  80. }
  81. /**
  82. * 关联自己
  83. * @return \think\model\relation\HasOne
  84. */
  85. public function spreadCount()
  86. {
  87. return $this->hasMany(User::class, 'spread_uid', 'uid');
  88. }
  89. /**
  90. * 关联用户标签关系
  91. * @return \think\model\relation\HasMany
  92. */
  93. public function LabelRelation()
  94. {
  95. return $this->hasMany(UserLabelRelation::class, 'uid', 'uid');
  96. }
  97. /**
  98. * 关联用户标签
  99. * @return \think\model\relation\HasManyThrough
  100. */
  101. public function label()
  102. {
  103. return $this->hasManyThrough(UserLabel::class, UserLabelRelation::class, 'uid', 'id', 'uid', 'label_id');
  104. }
  105. /**
  106. * 关联用户地址
  107. * @return \think\model\relation\HasMany
  108. */
  109. public function address()
  110. {
  111. return $this->hasMany(UserAddress::class, 'uid', 'uid');
  112. }
  113. /**
  114. * 关联提现
  115. * @return \think\model\relation\HasMany
  116. */
  117. public function extract()
  118. {
  119. return $this->hasMany(UserExtract::class, 'uid', 'uid');
  120. }
  121. /**
  122. * 关联订单
  123. * @return User|\think\model\relation\HasMany
  124. */
  125. public function order()
  126. {
  127. return $this->hasMany(StoreOrder::class, 'uid', 'uid');
  128. }
  129. /**
  130. * 关联佣金数据
  131. * @return \think\model\relation\HasMany
  132. */
  133. public function bill()
  134. {
  135. return $this->hasMany(UserBill::class, 'uid', 'uid');
  136. }
  137. /**
  138. * 用户uid
  139. * @param Model $query
  140. * @param $value
  141. */
  142. public function searchUidAttr($query, $value)
  143. {
  144. if (is_array($value))
  145. $query->whereIn('uid', $value);
  146. else
  147. $query->where('uid', $value);
  148. }
  149. /**
  150. * 账号搜索器
  151. * @param Model $query
  152. * @param $value
  153. */
  154. public function searchAccountAttr($query, $value)
  155. {
  156. $query->where('account', $value);
  157. }
  158. /**
  159. * 密码搜索器
  160. * @param Model $query
  161. * @param $value
  162. */
  163. public function searchPwdAttr($query, $value)
  164. {
  165. $query->where('pwd', $value);
  166. }
  167. /**
  168. * uid范围查询搜索器
  169. * @param Model $query
  170. * @param $value
  171. */
  172. public function searchUidsAttr($query, $value)
  173. {
  174. $query->whereIn('uid', $value);
  175. }
  176. /**
  177. * 模糊条件搜索器
  178. * @param Model $query
  179. * @param $value
  180. */
  181. public function searchLikeAttr($query, $value)
  182. {
  183. $query->where('account|nickname|phone|real_name|uid', 'LIKE', "%$value%");
  184. }
  185. /**
  186. * 手机号搜索器
  187. * @param Model $query
  188. * @param $value
  189. */
  190. public function searchPhoneAttr($query, $value)
  191. {
  192. $query->where('phone', $value);
  193. }
  194. /**
  195. * 分组搜索器
  196. * @param Model $query
  197. * @param $value
  198. */
  199. public function searchGroupIdAttr($query, $value)
  200. {
  201. $query->where('group_id', $value);
  202. }
  203. /**
  204. * 是否推广人搜索器
  205. * @param Model $query
  206. * @param $value
  207. */
  208. public function searchIsPromoterAttr($query, $value)
  209. {
  210. $query->where('is_promoter', $value);
  211. }
  212. /**
  213. * 状态搜索器
  214. * @param Model $query
  215. * @param $value
  216. */
  217. public function searchStatusAttr($query, $value)
  218. {
  219. $query->where('status', $value);
  220. }
  221. /**
  222. * 会员等级搜索器
  223. * @param Model $query
  224. * @param $value
  225. */
  226. public function searchLevelAttr($query, $value)
  227. {
  228. $query->where('level', $value);
  229. }
  230. /**
  231. * 推广人uid搜索器
  232. * @param Model $query
  233. * @param $value
  234. */
  235. public function searchSpreadUidAttr($query, $value)
  236. {
  237. $query->where('spread_uid', $value);
  238. }
  239. /**
  240. * 用户类型搜索器
  241. * @param Model $query
  242. * @param $value
  243. */
  244. public function searchUserTypeAttr($query, $value)
  245. {
  246. if ($value != '') $query->where('user_type', $value);
  247. }
  248. /**
  249. * 购买次数搜索器
  250. * @param Model $query
  251. * @param $value
  252. */
  253. public function searchPayCountAttr($query, $value)
  254. {
  255. $query->where('pay_count', $value);
  256. }
  257. public function searchNicknameAttr($query, $value)
  258. {
  259. $query->where('nickname', "like", "%".$value."%");
  260. }
  261. }