| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- /**
- * 用户经销商关联模型(对应表:user_dealer)
- * 作用:管理用户与经销商等级的关联数据查询、等级操作等
- */
- namespace app\admin\model\user;
- use app\admin\model\system\SystemDealerLevel;
- use app\admin\model\user\User;
- use crmeb\traits\ModelTrait;
- use crmeb\basic\BaseModel;
- class UserDealer extends BaseModel
- {
- /**
- * 数据表主键
- * @var string
- */
- protected $pk = 'id';
- /**
- * 模型关联的数据表名
- * @var string
- */
- protected $name = 'user_dealer';
- use ModelTrait;
- /**
- * add_time 字段获取器:时间戳转格式化时间
- * @param int $value 时间戳
- * @return string 格式化时间
- */
- public static function getAddTimeAttr($value)
- {
- return $value ? date('Y-m-d H:i:s', $value) : '';
- }
- /**
- * 查询用户经销商列表(带分页、关联用户信息)
- * @param array $where 分页及筛选条件
- * @return array
- */
- public static function getUserDealerList($where)
- {
- $query = self::alias('ud')
- ->join('eb_user u', 'ud.uid = u.uid')
- ->where('ud.is_del', 0)
- ->when(isset($where['nickname']) && $where['nickname'], function ($query) use ($where) {
- $query->where('u.nickname', 'like', "%{$where['nickname']}%");
- })
- ->when(isset($where['level_id']) && $where['level_id'] !== '', function ($query) use ($where) {
- $query->where('ud.level_id', $where['level_id']);
- })
- ->field('ud.*, u.nickname, u.avatar')
- ->order('ud.add_time desc');
- $data = $query->page((int)$where['page'], (int)$where['limit'])->select();
- $data = $data ? $data->toArray() : [];
- // 补充经销商等级名称
- foreach ($data as &$item) {
- $levelInfo = SystemDealerLevel::where('id', $item['level_id'])->find();
- if ($levelInfo) {
- $item['level_name'] = $levelInfo['name'];
- } else {
- $item['level_name'] = '未知';
- }
- }
- $count = self::alias('ud')
- ->join('eb_user u', 'ud.uid = u.uid')
- ->where('ud.is_del', 0)
- ->when(isset($where['nickname']) && $where['nickname'], function ($query) use ($where) {
- $query->where('u.nickname', 'like', "%{$where['nickname']}%");
- })
- ->when(isset($where['level_id']) && $where['level_id'] !== '', function ($query) use ($where) {
- $query->where('ud.level_id', $where['level_id']);
- })
- ->count();
- return compact('data', 'count');
- }
- /**
- * 清除用户经销商等级(软删除 + 更新用户表标识)
- * @param int $uid 用户ID
- * @return bool
- */
- public static function cleanUpDealerLevel($uid)
- {
- self::startTrans();
- try {
- $delRes = self::where('uid', $uid)->update(['is_del' => 1]);
- if ($delRes !== false) {
- User::where('uid', $uid)->update(['dealer' => 0]);
- self::commit();
- return true;
- } else {
- self::rollback();
- return false;
- }
- } catch (\Exception $e) {
- self::rollback();
- return false;
- }
- }
- }
|