UserDealer.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * 用户经销商关联模型(对应表:user_dealer)
  4. * 作用:管理用户与经销商等级的关联数据查询、等级操作等
  5. */
  6. namespace app\admin\model\user;
  7. use app\admin\model\system\SystemDealerLevel;
  8. use app\admin\model\user\User;
  9. use crmeb\traits\ModelTrait;
  10. use crmeb\basic\BaseModel;
  11. class UserDealer extends BaseModel
  12. {
  13. /**
  14. * 数据表主键
  15. * @var string
  16. */
  17. protected $pk = 'id';
  18. /**
  19. * 模型关联的数据表名
  20. * @var string
  21. */
  22. protected $name = 'user_dealer';
  23. use ModelTrait;
  24. /**
  25. * add_time 字段获取器:时间戳转格式化时间
  26. * @param int $value 时间戳
  27. * @return string 格式化时间
  28. */
  29. public static function getAddTimeAttr($value)
  30. {
  31. return $value ? date('Y-m-d H:i:s', $value) : '';
  32. }
  33. /**
  34. * 查询用户经销商列表(带分页、关联用户信息)
  35. * @param array $where 分页及筛选条件
  36. * @return array
  37. */
  38. public static function getUserDealerList($where)
  39. {
  40. $query = self::alias('ud')
  41. ->join('eb_user u', 'ud.uid = u.uid')
  42. ->where('ud.is_del', 0)
  43. ->when(isset($where['nickname']) && $where['nickname'], function ($query) use ($where) {
  44. $query->where('u.nickname', 'like', "%{$where['nickname']}%");
  45. })
  46. ->when(isset($where['level_id']) && $where['level_id'] !== '', function ($query) use ($where) {
  47. $query->where('ud.level_id', $where['level_id']);
  48. })
  49. ->field('ud.*, u.nickname, u.avatar')
  50. ->order('ud.add_time desc');
  51. $data = $query->page((int)$where['page'], (int)$where['limit'])->select();
  52. $data = $data ? $data->toArray() : [];
  53. // 补充经销商等级名称
  54. foreach ($data as &$item) {
  55. $levelInfo = SystemDealerLevel::where('id', $item['level_id'])->find();
  56. if ($levelInfo) {
  57. $item['level_name'] = $levelInfo['name'];
  58. } else {
  59. $item['level_name'] = '未知';
  60. }
  61. }
  62. $count = self::alias('ud')
  63. ->join('eb_user u', 'ud.uid = u.uid')
  64. ->where('ud.is_del', 0)
  65. ->when(isset($where['nickname']) && $where['nickname'], function ($query) use ($where) {
  66. $query->where('u.nickname', 'like', "%{$where['nickname']}%");
  67. })
  68. ->when(isset($where['level_id']) && $where['level_id'] !== '', function ($query) use ($where) {
  69. $query->where('ud.level_id', $where['level_id']);
  70. })
  71. ->count();
  72. return compact('data', 'count');
  73. }
  74. /**
  75. * 清除用户经销商等级(软删除 + 更新用户表标识)
  76. * @param int $uid 用户ID
  77. * @return bool
  78. */
  79. public static function cleanUpDealerLevel($uid)
  80. {
  81. self::startTrans();
  82. try {
  83. $delRes = self::where('uid', $uid)->update(['is_del' => 1]);
  84. if ($delRes !== false) {
  85. User::where('uid', $uid)->update(['dealer' => 0]);
  86. self::commit();
  87. return true;
  88. } else {
  89. self::rollback();
  90. return false;
  91. }
  92. } catch (\Exception $e) {
  93. self::rollback();
  94. return false;
  95. }
  96. }
  97. }