コード例 #1
0
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)
コード例 #2
0
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())
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
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)
コード例 #9
0
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)
コード例 #10
0
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)
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
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)
コード例 #14
0
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)
コード例 #15
0
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)
コード例 #16
0
def getEasystaffs():
    """
    获取所有人员的简单信息
    params: request
    return: response
    """
    data = [{
        'id': staff.id,
        'name': staff.name
    } for staff in Staff.query.all()]
    return apiResponse(200, data=data)
コード例 #17
0
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)
コード例 #18
0
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)
コード例 #19
0
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)
コード例 #20
0
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)
コード例 #21
0
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})
コード例 #22
0
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})
コード例 #23
0
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)
コード例 #24
0
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)
コード例 #25
0
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})
コード例 #26
0
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})
コード例 #27
0
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)
コード例 #28
0
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})