def login(): """ 登录账号 params: request return: response """ username = request.get_json().get('username') password = request.get_json().get('password') if not username or not password: return apiResponse(204) auth = Auth.query.filter_by(username=username).first() if auth is None: return apiResponse(403) if encrypt(password) == auth.password: token = encrypt(str(auth.id) + str(int(time.time() * 1000))) logintoken = cache.get(token) if logintoken is None: cache.set(token, auth.id, 24 * 60 * 60) res = make_response(apiResponse(200, data=token)) res.set_cookie('token', token, 24 * 60 * 60) auth.last_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') auth.last_ip = request.remote_addr db.session.commit() return res else: return apiResponse(403)
def getStaffinfo(): """ 获取员工信息 params: request return: response """ sid = request.args.get('id') or '' if not sid: return apiResponse(204) staffinfo = StaffInfo.query.get(sid) if not staffinfo: return apiResponse(204) return apiResponse(200, data=staffinfo.to_dict())
def deluser(): """ 删除账号 params: request return: response """ authid = request.get_json().get('authid') if not authid or int(authid) == 1: return apiResponse(204) auth = Auth.query.filter_by(id=authid).first() if not auth: return apiResponse(204, '用户不存在!') db.session.delete(auth) db.session.commit() return apiResponse(200)
def deljob(): """ 删除岗位 params: request return: response """ jobid = request.get_json().get('jobid') job = Job.query.get(jobid) if not job: return apiResponse(204, '岗位不存在') if job.to_dict()['staffcounts'] != 0: return apiResponse(204, '该岗位有绑定人员') db.session.delete(job) db.session.commit() return apiResponse(200)
def addjob(): """ 添加岗位 params: request return: response """ name = request.get_json().get('name') title = request.get_json().get('title') level = request.get_json().get('level') sublevel = request.get_json().get('sublevel') if not name and not title and not level and not sublevel: return apiResponse(204) jobdata = Job(name, title, level, sublevel) db.session.add(jobdata) db.session.commit() return apiResponse(200)
def staffRegistration(): """ 员工自己填写的部分信息 params: request return: response """ password = request.get_json().get('password') if password != 'saddtaff': return apiResponse(403, '验证失败') data = request.get_json() data['gender'] = True if data.get('gender') == '1' else False data['marriage'] = True if data.get('marriage') == '1' else False staffinfo = StaffInfo(**request.get_json()) db.session.add(staffinfo) db.session.commit() return apiResponse(200)
def getRegisdata(): """ 获取所有职位部门等简单的信息 params: request return: response """ v = request.args.get('v') or '' jobs = [{'id': job.id, 'name': job.name} for job in Job.query.all()] companys = [{ 'id': company.id, 'name': company.name } for company in Company.query.all()] staffs = [{ 'id': staff.id, 'name': staff.name } for staff in Staff.query.all()] departs = [{ 'id': depart.id, 'name': depart.name } for depart in Department.query.all()] data = { 'jobs': jobs, 'companys': companys, 'staffs': staffs, 'departs': departs } if v in ['jobs', 'companys', 'staffs', 'departs']: data = {v: data[v]} return apiResponse(200, data=data)
def getcard(): """ 获取首页card数据 params: request return: response """ untreated = StaffInfo.query.filter(StaffInfo.finished == 0).count() stafftotal = Staff.query.count() lastmonth = (datetime.date.today() + datetime.timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S") leavetotal = Staff.query.filter(Staff.leavetime.between(datetime.datetime.now()\ .strftime("%Y-%m-%d %H:%M:%S"), lastmonth)).count() warning = StaffInfo.query.group_by( StaffInfo.name).having(func.count(StaffInfo.id) >= 2).count() is_worker = Staff.query.filter(Staff.is_leave == 0).count() not_worker = Staff.query.filter(Staff.is_leave == 1).count() data = { 'untreated': untreated, 'stafftotal': stafftotal, 'leavetotal': leavetotal, 'warning': warning, 'is_worker': is_worker, 'not_worker': not_worker, } return apiResponse(200, data=data)
def resetpassword(): """ 重置密码 params: request return: response """ authid = request.get_json().get('authid') newpassword = request.get_json().get('newpassword') if not authid or not newpassword: return apiResponse(204) auth = Auth.query.filter_by(id=authid).first() if auth is None: return apiResponse(405, '账号不存在!') encrypt_newpassword = encrypt(newpassword) auth.password = encrypt_newpassword db.session.commit() return apiResponse(200)
def gettitles(): """ 获取所有职能 params: request return: response """ data = [job[0] for job in Job.query.with_entities(Job.title).distinct().all()] return apiResponse(200, data=data)
def deldepart(): """ 删除部门 params: request return: response """ depid = request.get_json().get('depid') if not depid: return apiResponse(204) depart = Department.query.get(depid) if not depart: return apiResponse(204, '部门不存在') if depart.to_dict()['staffcounts'] > 0: return apiResponse(204, '该部门有绑定员工') db.session.delete(depart) db.session.commit() return apiResponse(200)
def changeStaff(): """ 更改员工信息 params: request return: response """ uid = request.get_json().get('id') column = request.get_json().get('column') value = request.get_json().get('value') if uid == None or column == None or value == None: return apiResponse(204) staff = Staff.query.get(uid) if not staff: return apiResponse(204) # 这里有问题,以后再优化 source = getattr(staff, column) now = value if column == 'phone': source = staff.staffinfo_to.name if column == 'job': source = staff.job_to.name now = Job.query.get(value).name if column == 'department': source = staff.department_to.name now = Department.query.get(value).name if column == 'company': source = staff.company_to.name now = Company.query.get(value).name if column == 'leader': source = Staff.query.get(staff.leader).name now = Staff.query.get(value).name message = templates[column].format(column=column, source=source, now=now) if column == 'is_leave': value = True if value == 1 else False message = templates[column] logdata = Log(uid, message, cache.get(request.cookies.get('token'))) db.session.add(logdata) if column == 'phone': setattr(staff.staffinfo_to, column, value) else: setattr(staff, column, value) db.session.commit() return apiResponse(200)
def adddepart(): """ 添加部门 params: request return: response """ name = request.get_json().get('name') parent = request.get_json().get('parent') leader = request.get_json().get('leader') vp = request.get_json().get('vp') hrbp = request.get_json().get('hrbp') level = request.get_json().get('level') if not name or not leader or not vp or not hrbp or not level: return apiResponse(204) depart = Department(name, parent, leader, vp, hrbp, level) db.session.add(depart) db.session.commit() return apiResponse(200)
def delcompany(): """ 删除公司 params: request return: response """ comid = request.get_json().get('comid') if not comid: return apiResponse(204) company = Company.query.get(comid) if not company: return apiResponse(204, '公司不存在') db.session.delete(company) if company.is_default == 1: ocom = Company.query.first() ocom.is_default = True Staff.query.filter_by(job=comid).update({'job': ocom.id}) db.session.commit() return apiResponse(200)
def addcompany(): """ 添加公司 params: request return: response """ name = request.get_json().get('name') is_default = request.get_json().get('is_default') or '0' if not name: return apiResponse(204) company = Company.query.filter_by(name=name).first() if company: return apiResponse(204, '公司已存在') if int(is_default) == 1: Company.query.update({'is_default': False}) comdata = Company(name=name, is_default=(int(is_default) == 1)) db.session.add(comdata) db.session.commit() return apiResponse(200)
def getEasystaffs(): """ 获取所有人员的简单信息 params: request return: response """ data = [{ 'id': staff.id, 'name': staff.name } for staff in Staff.query.all()] return apiResponse(200, data=data)
def adduser(): """ 注册账号 params: request return: response """ username = request.get_json().get('username') password = request.get_json().get('password') is_active = request.get_json().get('is_active') or 0 if not username or not password: return apiResponse(204) auth = Auth.query.filter_by(username=username).first() if auth: return apiResponse(204, '用户已存在!') encrypt_password = encrypt(password) userdata = Auth(username=username, password=encrypt_password, is_active=(int(is_active) == 1)) db.session.add(userdata) db.session.commit() return apiResponse(200)
def staffhrRegistration(): """ HR填写的部分信息 params: request return: response """ data = request.get_json() staffdata = Staff(**data) StaffInfo.query.filter(StaffInfo.id == data.get('staffinfo')).update( {'finished': True}) db.session.add(staffdata) db.session.commit() return apiResponse(200)
def getnews(): """ 获取填写员工入职表的员工 params: request return: response """ data = [{ 'id': info.id, 'name': info.name, 'phone': info.phone, 'create_time': info.create_time.strftime('%Y-%m-%d %H:%M:%S') } for info in StaffInfo.query.filter(StaffInfo.finished == 0).all()] return apiResponse(200, data=data)
def changecompany(): """ 修改公司名称或者状态 params: request return: response """ comid = request.get_json().get('comid') name = request.get_json().get('name') is_default = request.get_json().get('is_default') or '0' if not comid: return apiResponse(204) company = Company.query.get(comid) ocom = Company.query.first() if not company: return apiResponse(204) if int(is_default) == 1: Company.query.update({'is_default': False}) company.name = name company.is_default = int(is_default) == 1 if ocom == company: company.is_default = True db.session.commit() return apiResponse(200)
def getusers(): """ 获取登录账号 params: request return: response """ size = request.args.get('size') or 10 page = request.args.get('page') or 1 username = request.args.get('username') or '' _query = Auth.query.filter( Auth.username.like('%' + username + '%')).paginate( int(page), int(size), False) data = [u.to_dict() for u in _query.items] return apiResponse(200, data={'data': data, 'total': _query.total})
def getcompanys(): """ 获取所有公司名称 params: request return: response """ name = request.args.get('name') or '' size = request.args.get('size') or 10 page = request.args.get('page') or 1 _query = Company.query.filter( Company.name.like('%' + name + '%')).paginate(int(page), int(size), False) data = [u.to_dict() for u in _query.items] return apiResponse(200, data={'data': data, 'total': _query.total})
def getOrganization(): """ 获取部门树型架构 params: request return: response """ departs = Department.query.filter(Department.level == 1).all() data = [] for depart in departs: data.append({ 'id': depart.id, 'label': depart.name, 'children': getchildren(depart.id) }) return apiResponse(200, data=data)
def getleaders(): """ 获取所有领导信息 params: request return: response """ size = request.args.get('size') or 10 page = request.args.get('page') or 1 data = Department.query.with_entities(Department.leader, Department.vp, Department.hrbp).distinct().all() staffids = set([]) for staff in data: staffids.update(list(staff)) staffs = Staff.query.filter(Staff.id.in_(list(staffids))).paginate(int(page), int(size), False) data = [{'id': staff.id, 'name': staff.name} for staff in staffs.items] return apiResponse(200, data=data)
def getjobs(): """ 获取所有岗位名称 params: request return: response """ name = request.args.get('name') or '' title = request.args.get('title') or '' size = request.args.get('size') or 10 page = request.args.get('page') or 1 params = [] if name: params.append(Job.name.like('%'+name+'%')) if title: params.append(Job.title == title) _query = Job.query.filter(*params).paginate(int(page), int(size), False) data = [u.to_dict() for u in _query.items] return apiResponse(200, data={'data': data, 'total': _query.total})
def getStaffs(): """ 获取所有员工 params: request return: response """ sid = request.args.get('id') or None name = request.args.get('name') or '' page = request.args.get('page') or 1 size = request.args.get('size') or 10 params = [] if sid: params.append(Staff.id == sid) if name: params.append(Staff.name.like('%' + name + '%')) _query = Staff.query.filter(*params).paginate(int(page), int(size), False) data = [u.to_dict() for u in _query.items] return apiResponse(200, data={'data': data, 'total': _query.total})
def getChartdata(): """ 获取图表数据 params: request return: response """ data = {'staff': {}} data['staff']['is_worker'] = Staff.query.filter( Staff.is_leave == True).count() data['staff']['not_worker'] = Staff.query.filter( Staff.is_leave == False).count() data['staff']['total_worker'] = data['staff']['is_worker'] + data['staff'][ 'not_worker'] data['department'] = [{ 'name': department.name, 'value': len(department.staff_of_department) } for department in Department.query.all()] data['company'] = [{ 'name': company.name, 'value': len(company.staff_of_company) } for company in Company.query.all()] return apiResponse(200, data=data)
def getdeparts(): """ 获取所有部门 params: request return: response """ name = request.args.get('name') or '' leader = request.args.get('leader') or '' size = request.args.get('size') or 10 page = request.args.get('page') or 1 params = [] if name: departs = Department.query.filter(Department.name.like('%'+name+'%')).with_entities(Department.id).all() depids = [dep.id for dep in departs] params.append(or_(Department.name.like('%'+name+'%'), Department.parent.in_(depids))) if leader: params.append(or_( Department.leader == leader, Department.vp == leader, Department.hrbp == leader )) _query = Department.query.filter(*params).paginate(int(page), int(size), False) data = [u.to_dict() for u in _query.items] return apiResponse(200, data={'data': data, 'total': _query.total})