增加项目的各个功能

This commit is contained in:
qiaoxinjiu
2026-05-07 19:21:19 +08:00
parent aba1618f89
commit ee6cd4ae66
121 changed files with 9346 additions and 43 deletions

View File

@@ -0,0 +1,128 @@
# encoding: UTF-8
from .baseCrudController import BaseCrudController
from ..model.userModel import User
from ..service.userService import UserService
from ..utils.authMiddleware import TOKEN_REFRESH_THRESHOLD_SECONDS, create_token
class UserController(BaseCrudController):
def user_list(self):
filters = []
keyword = self._get(self.req_data, 'keyword')
status = self._get(self.req_data, 'status')
if keyword:
filters.append(User.username.like('%{}%'.format(keyword)))
if status not in (None, ''):
filters.append(User.status == int(status))
items, total = UserService.list_by_filters(self.session, User, filters,
self._get(self.req_data, 'pageNo', 'page', default=1),
self._get(self.req_data, 'pageSize', 'size', default=20),
User.created_time)
result_list = self.serialize_list(items, ['is_delete', 'password_hash'])
role_map = UserService.get_user_roles_map(self.session, [item.id for item in items])
for item in result_list:
role_info = role_map.get(item.get('id'), {'role_ids': [], 'role_names': []})
item['role_ids'] = role_info['role_ids']
item['role_names'] = role_info['role_names']
return {'list': result_list, 'total': total}
def user_detail(self):
user_id = self._get(self.req_data, 'userId', 'id')
if not user_id:
return {}, 'userId 为必传参数'
item = UserService.get_by_id(self.session, User, user_id)
if not item:
return {}, '未查询到对应用户!'
ret = self.serialize(item, ['is_delete', 'password_hash'])
ret['role_ids'] = UserService.get_user_role_ids(self.session, user_id)
return ret, ''
def user_create(self):
username = self._get(self.req_data, 'username')
password = self._get(self.req_data, 'password')
if not username or not password:
return 0, 'username、password 为必传参数'
return UserService.create(self.session, User, {
'username': username,
'real_name': self._get(self.req_data, 'realName', 'real_name'),
'password_hash': password,
'mobile': self._get(self.req_data, 'mobile'),
'email': self._get(self.req_data, 'email'),
'avatar': self._get(self.req_data, 'avatar'),
'status': int(self._get(self.req_data, 'status', default=1)),
'created_by': self._get(self.req_data, 'createdBy'),
'is_delete': 0
})
def user_update(self):
user_id = self._get(self.req_data, 'userId', 'id')
if not user_id:
return 0, 'userId 为必传参数'
update_info = {}
for req_key, column_key in [('username', 'username'), ('realName', 'real_name'), ('real_name', 'real_name'),
('password', 'password_hash'), ('mobile', 'mobile'), ('email', 'email'),
('avatar', 'avatar'), ('status', 'status')]:
value = self._get(self.req_data, req_key)
if value is not None:
update_info[column_key] = value
return UserService.update_by_id(self.session, User, user_id, update_info)
def user_delete(self):
user_id = self._get(self.req_data, 'userId', 'id')
if not user_id:
return 0, 'userId 为必传参数'
return UserService.delete_by_id(self.session, User, user_id)
def user_role_list(self):
user_id = self._get(self.req_data, 'userId')
if not user_id:
return {'roleIds': []}
return {'roleIds': UserService.get_user_role_ids(self.session, user_id)}
def user_role_assign(self):
user_id = self._get(self.req_data, 'userId')
role_ids = self._get(self.req_data, 'roleIds', default=[])
if not user_id:
return 0, 'userId 为必传参数'
return UserService.assign_roles(self.session, user_id, role_ids)
def register(self):
username = self._get(self.req_data, 'username')
password = self._get(self.req_data, 'password')
if not username or not password:
return 0, 'username、password 为必传参数'
exist_user = UserService.get_by_username(self.session, username)
if exist_user:
return 0, '用户名已存在!'
return UserService.create(self.session, User, {
'username': username,
'real_name': self._get(self.req_data, 'realName', 'real_name'),
'password_hash': password,
'mobile': self._get(self.req_data, 'mobile'),
'email': self._get(self.req_data, 'email'),
'avatar': self._get(self.req_data, 'avatar'),
'status': 1,
'created_by': self._get(self.req_data, 'createdBy'),
'is_delete': 0
})
def login(self):
username = self._get(self.req_data, 'username')
password = self._get(self.req_data, 'password')
if not username or not password:
return {}, 'username、password 为必传参数'
user = UserService.get_by_username(self.session, username)
if not user or user.password_hash != password:
return {}, '用户名或密码错误!'
if int(user.status) != 1:
return {}, '用户已禁用!'
UserService.update_last_login_time(self.session, user.id)
token, expire_seconds = create_token(user.id)
ret = self.serialize(user, ['is_delete', 'password_hash'])
ret['role_ids'] = UserService.get_user_role_ids(self.session, user.id)
ret['token'] = token
ret['token_type'] = 'Bearer'
ret['expires_in'] = expire_seconds
ret['refresh_threshold_seconds'] = TOKEN_REFRESH_THRESHOLD_SECONDS
ret['refresh_mechanism'] = '请求任意已登录接口时若token剩余有效期小于阈值则自动续期到完整有效期'
return ret, ''