Beispiel #1
0
class Get(StaffAuthorizedApi):
    """角色详情"""
    request = with_metaclass(RequestFieldSet)
    request.role_id = RequestField(IntField, desc='角色id')

    response = with_metaclass(ResponseFieldSet)
    response.role_info = ResponseField(DictField,
                                       desc="角色信息",
                                       conf={
                                           'id':
                                           IntField(desc="角色id"),
                                           'name':
                                           CharField(desc="角色名称"),
                                           'parent_id':
                                           IntField(desc="上级角色id"),
                                           'describe':
                                           CharField(desc="角色描述"),
                                           'status':
                                           BooleanField(desc="角色状态(0, 1)"),
                                           'is_show_data':
                                           BooleanField(desc="是否显示下级数据(0, 1)"),
                                           'rules':
                                           CharField(desc="权限")
                                       })

    @classmethod
    def get_desc(cls):
        return "角色详情接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        role = role_middleware.get_self(request.role_id)
        return role

    def fill(self, response, role):
        response.role_info = {
            'id': role.id,
            'name': role.name,
            'parent_id': role.parent_id,
            'describe': role.describe,
            'status': role.status,
            'is_show_data': role.is_show_data,
            'rules': role.rules
        }
        return response
Beispiel #2
0
class Update(StaffAuthorizedApi):
    """修改店铺信息"""
    request = with_metaclass(RequestFieldSet)
    request.shop_id = RequestField(IntField, desc = '店铺id')
    request.shop_info = RequestField(DictField, desc = "店铺详情", conf = {
        'name': CharField(desc = "店铺名称"),
        'freight': IntField(desc = "运费/分", is_required = False),
        'channel_id': IntField(desc = "店铺渠道id", is_required = False),
        'single_repair_money': CharField(desc = "单次补单金额/分", is_required = False),
        'single_point_money': CharField(desc = "单次扣点金额/分", is_required = False),
        'is_distribution': BooleanField(desc = "是否为分销店铺(0否,1是)", is_required = False),
        'remark': CharField(desc = "备注", is_required = False),

    })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "修改店铺接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        shop = ShopServer.get(request.shop_id)
        ShopServer.is_name_exist(request.shop_info["name"], shop)

        if 'channel_id' in request.shop_info:
            channel = ChannelServer.get(request.shop_info['channel_id'])
            request.shop_info.update({'channel': channel})
        ShopServer.update(shop, **request.shop_info)
    def fill(self, response):
        return response
Beispiel #3
0
class Add(StaffAuthorizedApi):
    """添加店铺"""
    request = with_metaclass(RequestFieldSet)
    request.shop_info = RequestField(DictField, desc = "店铺详情", conf = {
        'name': CharField(desc = "店铺名称"),
        'freight': IntField(desc = "运费/分", is_required = False),
        'single_repair_money': IntField(desc = "单次补单金额/分", is_required = False),
        'single_point_money': IntField(desc = "单次扣点金额/分", is_required = False),
        'is_distribution': BooleanField(desc = "是否为分销店铺(0否,1是)", is_required = False, choices = [(0, "是"), (1, "否")]),
        'channel_id': IntField(desc = "店铺渠道id", is_required = False),
        'remark': CharField(desc = "备注", is_required = False),
    })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "店铺添加接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        ShopServer.is_name_exist(request.shop_info['name'])
        channel = ChannelServer.get(request.shop_info['channel_id'])
        request.shop_info.update({'channel': channel})
        ShopServer.generate(**request.shop_info)

    def fill(self, response):
        return response
Beispiel #4
0
class Update(StaffAuthorizedApi):
    """编辑角色"""
    request = with_metaclass(RequestFieldSet)
    request.role_id = RequestField(IntField, desc='角色id')
    request.role_info = RequestField(DictField,
                                     desc="角色信息",
                                     conf={
                                         'name':
                                         CharField(desc="角色名称"),
                                         'parent_id':
                                         IntField(desc="上级角色id"),
                                         'describe':
                                         CharField(desc="角色描述",
                                                   is_required=False),
                                         'status':
                                         BooleanField(desc="角色状态(0, 1)",
                                                      is_required=False),
                                         'is_show_data':
                                         BooleanField(desc="角色状态(0, 1)",
                                                      is_required=False),
                                         'rules':
                                         CharField(desc="权限",
                                                   is_required=False)
                                     })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "编辑角色接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        role = RoleServer.get(request.role_id)
        RoleServer.is_name_exist(request.role_info['name'], role)
        RoleServer.update(role, **request.role_info)

    def fill(self, response):
        return response
Beispiel #5
0
class Add(StaffAuthorizedApi):
    """添加角色"""
    request = with_metaclass(RequestFieldSet)
    request.role_info = RequestField(DictField,
                                     desc="角色详情",
                                     conf={
                                         'name':
                                         CharField(desc="角色名称"),
                                         'parent_id':
                                         IntField(desc="上级角色id"),
                                         'rules':
                                         CharField(desc="角色权限",
                                                   is_required=False),
                                         'describe':
                                         CharField(desc="角色描述",
                                                   is_required=False),
                                         'status':
                                         BooleanField(desc="角色状态(0, 1)",
                                                      is_required=False),
                                         'is_show_data':
                                         BooleanField(desc="是否展示下级数据(0, 1)",
                                                      is_required=False)
                                     })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "添加角色接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        RoleServer.is_name_exist(request.role_info['name'])
        RoleServer.add(**request.role_info)

    def fill(self, response):
        return response
Beispiel #6
0
class List(StaffAuthorizedApi):
    """获取部门列表"""
    request = with_metaclass(RequestFieldSet)

    response = with_metaclass(ResponseFieldSet)
    response.data_list = ResponseField(
        ListField,
        desc='部门列表',
        fmt=DictField(desc="部门列表",
                      conf={
                          'id': IntField(desc="部门id"),
                          'name': CharField(desc="部门名称"),
                          'parent_id': IntField(desc="上级部门id"),
                          'parent_name': CharField(desc="上级部门名称"),
                          'describe': CharField(desc="部门描述"),
                          'status': BooleanField(desc="部门状态(0, 1)"),
                          'update_time': DatetimeField(desc="部门最后一次编辑时间"),
                      }))

    @classmethod
    def get_desc(cls):
        return "部门列表接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        department_list = department_middleware.get_all_list()
        return department_list

    def fill(self, response, department_list):
        data_list = [{
            'id': department.id,
            'name': department.name,
            'parent_id': department.parent_id,
            'parent_name': department.parent_id,
            'describe': department.describe,
            'status': department.status,
            'update_time': department.update_time,
        } for department in department_list]
        response.data_list = data_list
        return response
Beispiel #7
0
class Get(StaffAuthorizedApi):
    """获取个人中心详情"""
    request = with_metaclass(RequestFieldSet)

    response = with_metaclass(ResponseFieldSet)
    response.user_info = ResponseField(DictField,
                                       desc="用户详情",
                                       conf={
                                           'name': CharField(desc="姓名"),
                                           'identity': CharField(desc="身份证"),
                                           'gender': CharField(desc="性别"),
                                           'birthday': CharField(desc="生日"),
                                           'phone': CharField(desc="电话"),
                                           'email': CharField(desc="邮箱"),
                                           'number': CharField(desc="员工工号"),
                                           'is_admin':
                                           BooleanField(desc="是否是管理员"),
                                       })

    @classmethod
    def get_desc(cls):
        return "员工个人中心详情接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        return self.auth_user

    def fill(self, response, staff):
        response.user_info = {
            'name': staff.name,
            'identity': staff.identity,
            'gender': staff.gender,
            'birthday': staff.birthday,
            'phone': staff.phone,
            'email': staff.email,
            'number': staff.number,
            'is_admin': staff.is_admin
        }
        return response
Beispiel #8
0
class List(StaffAuthorizedApi):
    """获取角色列表"""
    request = with_metaclass(RequestFieldSet)

    response = with_metaclass(ResponseFieldSet)
    response.data_list = ResponseField(
        ListField,
        desc='角色列表',
        fmt=DictField(desc="角色列表",
                      conf={
                          'id': IntField(desc="角色id"),
                          'name': CharField(desc="角色名称"),
                          'parent_id': IntField(desc="上级角色id"),
                          'describe': CharField(desc="角色描述"),
                          'status': BooleanField(desc="角色状态(0, 1)"),
                          'update_time': DatetimeField(desc="角色最后一次编辑时间"),
                      }))

    @classmethod
    def get_desc(cls):
        return "角色列表接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        role_list = role_middleware.get_all_list()
        return role_list

    def fill(self, response, role_list):
        data_list = [{
            'id': role.id,
            'name': role.name,
            'parent_id': role.parent_id,
            'describe': role.describe,
            'status': role.status,
            'update_time': role.update_time,
        } for role in role_list]
        response.data_list = data_list
        return response
Beispiel #9
0
class UpdateByAdmin(StaffAuthorizedApi):
    """修改员工账号信息"""
    request = with_metaclass(RequestFieldSet)
    request.user_id = RequestField(IntField, desc='员工id')
    request.user_info = RequestField(DictField,
                                     desc="员工详情",
                                     conf={
                                         'name':
                                         CharField(desc="姓名"),
                                         'birthday':
                                         DateField(desc="生日",
                                                   is_required=False),
                                         'phone':
                                         CharField(desc="手机",
                                                   is_required=False),
                                         'email':
                                         CharField(desc="邮箱",
                                                   is_required=False),
                                         'gender':
                                         CharField(desc="性别(man,woman)",
                                                   is_required=False),
                                         'identity':
                                         CharField(desc="身份证",
                                                   is_required=False),
                                         'emergency_contact':
                                         CharField(desc="紧急联系人",
                                                   is_required=False),
                                         'emergency_phone':
                                         CharField(desc="紧急联系人电话",
                                                   is_required=False),
                                         'address':
                                         CharField(desc="家庭住址",
                                                   is_required=False),
                                         'entry_time':
                                         DateField(desc="入职时间",
                                                   is_required=False),
                                         'education':
                                         CharField(desc="学历",
                                                   is_required=False),
                                         'bank_number':
                                         CharField(desc="招行卡号",
                                                   is_required=False),
                                         'contract_b':
                                         CharField(desc="合同编号(必)",
                                                   is_required=False),
                                         'contract_l':
                                         CharField(desc="合同编号(立)",
                                                   is_required=False),
                                         'expire_time':
                                         DateField(desc="到期时间",
                                                   is_required=False),
                                         'is_working':
                                         BooleanField(desc="是否在职(0离职,1在职)",
                                                      is_required=False),
                                         'role_ids':
                                         ListField(desc='所属角色',
                                                   is_required=False,
                                                   fmt=IntField(desc="角色ID")),
                                         'department_ids':
                                         ListField(desc='所属部门',
                                                   is_required=False,
                                                   fmt=IntField(desc="部门ID")),
                                     })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "修改员工接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        '''获得员工信息'''
        staff = StaffServer.get(request.user_id)
        """判断身份证号是否存在"""
        if "identity" in request.user_info:
            StaffServer.check_exist(request.user_info['identity'], staff)

        StaffServer.update(staff, **request.user_info)
        '''更新账号信息
        account = StaffAccountServer.get_account_bystaff(staff)
        StaffAccountServer.update(account, **request.user_info)
        '''
        '''更新权限信息'''
        StaffPermiseServer.update_staff_access(request.user_info['role_ids'],
                                               "role", staff)
        StaffPermiseServer.update_staff_access(
            request.user_info['department_ids'], "department", staff)

    def fill(self, response):
        return response
Beispiel #10
0
class Search(StaffAuthorizedApi):
    """员工搜索列表"""
    request = with_metaclass(RequestFieldSet)
    request.current_page = RequestField(IntField, desc="当前查询页码")
    request.search_info = RequestField(DictField,
                                       desc='搜索条件',
                                       conf={
                                           'keyword':
                                           CharField(desc="关键词",
                                                     is_required=False),
                                           'department':
                                           IntField(desc="部门查询",
                                                    is_required=False),
                                           'role':
                                           IntField(desc="角色查询",
                                                    is_required=False),
                                           'is_working':
                                           BooleanField(desc="是否在职",
                                                        is_required=False),
                                       })

    response = with_metaclass(ResponseFieldSet)
    response.data_list = ResponseField(
        ListField,
        desc='员工列表',
        fmt=DictField(desc="员工列表",
                      conf={
                          'id':
                          IntField(desc="员工id"),
                          'username':
                          CharField(desc="账号"),
                          'name':
                          CharField(desc="姓名"),
                          'gender':
                          CharField(desc="性别"),
                          'number':
                          CharField(desc="工号"),
                          'phone':
                          CharField(desc="手机号"),
                          'email':
                          CharField(desc="邮箱"),
                          'status':
                          CharField(desc="账号状态"),
                          'birthday':
                          DateField(desc="生日"),
                          'identity':
                          CharField(desc="身份证"),
                          'address':
                          CharField(desc="家庭住址"),
                          'emergency_contact':
                          CharField(desc="紧急联系人"),
                          'emergency_phone':
                          CharField(desc="紧急联系人电话"),
                          'entry_time':
                          DateField(desc="入职时间"),
                          'education':
                          CharField(desc="学历"),
                          'bank_number':
                          CharField(desc="招行卡号"),
                          'contract_b':
                          CharField(desc="合同编号(必)"),
                          'contract_l':
                          CharField(desc="合同编号(立)"),
                          'expire_time':
                          DateField(desc="到期时间"),
                          'quit_time':
                          DateField(desc="离职时间"),
                          'is_working':
                          IntField(desc="是否在职(0离职,1在职)"),
                          'last_login_time':
                          DatetimeField(desc="最后登陆时间"),
                          'last_login_ip':
                          CharField(desc="最后登陆ip"),
                          'role_list':
                          ListField(desc='所属角色',
                                    fmt=DictField(desc="角色信息",
                                                  conf={
                                                      'role_id':
                                                      IntField(desc="角色id"),
                                                      'role_name':
                                                      CharField(desc="角色名称"),
                                                  })),
                          'department_list':
                          ListField(desc='所属部门',
                                    fmt=DictField(desc="部门信息",
                                                  conf={
                                                      'department_id':
                                                      IntField(desc="部门id"),
                                                      'department_name':
                                                      CharField(desc="部门名称"),
                                                  })),
                      }))
    response.total = ResponseField(IntField, desc="数据总数")
    response.total_page = ResponseField(IntField, desc="总页码数")

    @classmethod
    def get_desc(cls):
        return "员工列表接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        cur_user = self.auth_user
        user_pro = UserRightServer(cur_user)
        request.search_info['cur_user'] = user_pro
        staff_pages = StaffServer.search(request.current_page,
                                         **request.search_info)
        staff_list = StaffPermiseServer.hung_permise_forstaffs(
            staff_pages.data)
        staff_list = StaffAccountServer.hung_account_forstaffs(staff_list)
        staff_pages.data = staff_list
        return staff_pages

    def fill(self, response, staff_pages):
        response.data_list = [{
            'id':
            staff.id,
            'username':
            staff.account.username if staff.account else "",
            'name':
            staff.name,
            'gender':
            staff.gender,
            'number':
            staff.number,
            'phone':
            staff.phone,
            'email':
            staff.email,
            'status':
            staff.account.status if staff.account else "",
            'birthday':
            staff.birthday if staff.birthday else "",
            'identity':
            staff.identity,
            'emergency_contact':
            staff.emergency_contact,
            'emergency_phone':
            staff.emergency_phone,
            'address':
            staff.address,
            'entry_time':
            staff.entry_time if staff.entry_time else "",
            'education':
            staff.education,
            'bank_number':
            staff.bank_number,
            'contract_b':
            staff.contract_b,
            'contract_l':
            staff.contract_l,
            'expire_time':
            staff.expire_time if staff.expire_time else "",
            'quit_time':
            staff.quit_time if staff.quit_time else "",
            'is_working':
            staff.is_working,
            'last_login_time':
            staff.account.last_login_time
            if staff.account and staff.account.last_login_time else "",
            'last_login_ip':
            staff.account.last_login_ip if staff.account else "",
            'role_list': [{
                'role_id': role.id,
                'role_name': role.name
            } for role in staff.role_list],
            'department_list': [{
                'department_id': department.id,
                'department_name': department.name
            } for department in staff.department_list]
        } for staff in staff_pages.data]
        response.total = staff_pages.total
        response.total_page = staff_pages.total_page
        return response
Beispiel #11
0
class Add(StaffAuthorizedApi):
    """添加员工"""
    request = with_metaclass(RequestFieldSet)
    request.user_info = RequestField(DictField,
                                     desc="员工详情",
                                     conf={
                                         'name':
                                         CharField(desc="姓名"),
                                         'birthday':
                                         DateField(desc="生日",
                                                   is_required=False),
                                         'phone':
                                         CharField(desc="手机",
                                                   is_required=False),
                                         'email':
                                         CharField(desc="邮箱",
                                                   is_required=False),
                                         'gender':
                                         CharField(desc="性别(man,woman)",
                                                   is_required=False),
                                         'identity':
                                         CharField(desc="身份证",
                                                   is_required=False),
                                         'emergency_contact':
                                         CharField(desc="紧急联系人",
                                                   is_required=False),
                                         'emergency_phone':
                                         CharField(desc="紧急联系人电话",
                                                   is_required=False),
                                         'address':
                                         CharField(desc="家庭住址",
                                                   is_required=False),
                                         'entry_time':
                                         DateField(desc="入职时间",
                                                   is_required=False),
                                         'education':
                                         CharField(desc="学历",
                                                   is_required=False),
                                         'bank_number':
                                         CharField(desc="招行卡号",
                                                   is_required=False),
                                         'contract_b':
                                         CharField(desc="合同编号(必)",
                                                   is_required=False),
                                         'contract_l':
                                         CharField(desc="合同编号(立)",
                                                   is_required=False),
                                         'expire_time':
                                         DateField(desc="到期时间",
                                                   is_required=False),
                                         'is_working':
                                         BooleanField(desc="是否在职(0离职,1在职)",
                                                      is_required=False),
                                         'role_ids':
                                         ListField(desc='所属角色',
                                                   is_required=False,
                                                   fmt=IntField(desc="角色ID")),
                                         'department_ids':
                                         ListField(desc='所属部门',
                                                   is_required=False,
                                                   fmt=IntField(desc="部门ID")),
                                     })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "添加员工接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        """判断是否为管理员"""
        staff_admin = self.auth_user
        StaffServer.judge_staff_role(staff_admin)
        """身份证号是否存在"""
        StaffServer.check_exist(request.user_info['identity'])
        """创建员工"""
        staff = StaffServer.register(**request.user_info)
        """添加权限关系"""
        if 'role_ids' in request.user_info:
            StaffPermiseServer.generate_staff_access(
                request.user_info['role_ids'], "role", staff)

        if 'department_ids' in request.user_info:
            StaffPermiseServer.generate_staff_access(
                request.user_info['department_ids'], "department", staff)

    def fill(self, response):
        return response
Beispiel #12
0
class Login(NoAuthrizedApi):
    """登录"""
    request = with_metaclass(RequestFieldSet)
    request.username = RequestField(CharField, desc = "登录名")
    request.password = RequestField(CharField, desc = "登录密码")
    request._ip = RequestField(CharField, desc = "登陆IP")

    response = with_metaclass(ResponseFieldSet)
    response.auth_token = ResponseField(CharField, desc = "用户访问令牌")
    response.renew_flag = ResponseField(CharField, desc = "续签访问令牌标识")
    response.role_list = ResponseField(ListField, desc = '角色列表', fmt = DictField(desc = "角色列表", conf = {
        'id': IntField(desc = "角色id"),
        'name': CharField(desc = "角色名称"),
        'parent_id': IntField(desc = "上级角色id"),
        'describe': CharField(desc = "角色描述"),
        'status': BooleanField(desc = "角色状态(0, 1)"),
        'update_time': CharField(desc = "角色最后一次编辑时间"),
    }))
    response.department_list = ResponseField(ListField, desc = '部门列表', fmt = DictField(desc = "部门列表", conf = {
        'id': IntField(desc = "部门id"),
        'name': CharField(desc = "部门名称"),
        'parent_id': IntField(desc = "上级部门id"),
        'parent_name': CharField(desc = "上级部门名称"),
        'describe': CharField(desc = "部门描述"),
        'status': BooleanField(desc = "部门状态(0, 1)"),
        'update_time': CharField(desc = "部门最后一次编辑时间"),
    }))
    response.rule_list = ResponseField(ListField, desc = '功能列表', fmt = DictField(desc = "功能列表", conf = {
        'flag': CharField(desc = "功能名称"),
    }))

    @classmethod
    def get_desc(cls):
        return "员工登录接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        staff_account = StaffAccountServer.login(request.username, request.password, request._ip)
        token = UserServer.generate_token(staff_account.staff)

        role_list = role_middleware.get_all_list()
        department_list = department_middleware.get_all_list()
        rule_list = StaffPermiseServer.get_rules_bystaff(staff_account.staff)
        rule_list = list(set(rule_list))

        return token, role_list, department_list, rule_list

    def fill(self, response, token, role_list, department_list, rule_list):
        response.auth_token = token.auth_token
        response.renew_flag = token.renew_flag
        role_list = [{
            'id': role.id,
            'name': role.name,
            'parent_id': role.parent_id,
            'describe': role.describe,
            'status': role.status,
            'update_time': role.update_time,
        } for role in role_list]
        response.role_list = role_list
        department_list = [{
            'id': department.id,
            'name': department.name,
            'parent_id': department.parent_id,
            'parent_name': department.parent_id,
            'describe': department.describe,
            'status': department.status,
            'update_time': department.update_time,
        } for department in department_list]
        response.department_list = department_list
        rule_list = [{
            'flag': rule,
        } for rule in rule_list]
        response.rule_list = rule_list
        return response
Beispiel #13
0
class Search(StaffAuthorizedApi):
    """手机列表"""
    request = with_metaclass(RequestFieldSet)
    request.current_page = RequestField(IntField, desc="当前查询页码")
    request.search_info = RequestField(DictField,
                                       desc='搜索条件',
                                       conf={
                                           'keyword':
                                           CharField(desc="关键词(姓名或手机号)",
                                                     is_required=False),
                                           'mobile_code':
                                           CharField(desc="设备码",
                                                     is_required=False),
                                       })

    response = with_metaclass(ResponseFieldSet)
    response.data_list = ResponseField(
        ListField,
        desc='手机列表',
        fmt=DictField(
            desc="手机列表",
            conf={
                'id':
                IntField(desc="手机id"),
                'staff_id':
                IntField(desc="员工id"),
                'staff_name':
                CharField(desc="员工姓名"),
                'is_working':
                BooleanField(desc="是否在职"),
                'identity':
                CharField(desc="身份证"),
                'mobile_devices_id':
                CharField(desc="手机设备id"),
                'mobile_devices_code':
                CharField(desc="手机设备编号"),
                'phone_number':
                CharField(desc="手机号"),
                'operator':
                CharField(desc="运营商"),
                'rent':
                IntField(desc="租金"),
                'phone_remark':
                CharField(desc="手机号备注"),
                'tag':
                CharField(desc="标签"),
                'flow_card_number':
                CharField(desc="流量卡号"),
                'card_password':
                CharField(desc="手机卡密码"),
                'phone_change':
                CharField(desc="手机号变更信息"),
                'wechat_nick':
                CharField(desc="微信昵称"),
                'wechat_number':
                CharField(desc="微信号"),
                'wechat_password':
                CharField(desc="微信密码"),
                'wechat_remark':
                CharField(desc="微信备注"),
                'pay_password':
                CharField(desc="支付密码"),
                'status':
                CharField(
                    desc=
                    "手机号状态(normal:正常,frozen:冻结,seal:封号,arrears:欠费,discontinuation:停用,other:其它)"
                ),
                'create_time':
                DatetimeField(desc="添加时间"),
                'department_list':
                ListField(desc='所属部门',
                          fmt=DictField(desc="部门信息",
                                        conf={
                                            'department_id':
                                            IntField(desc="部门id"),
                                            'department_name':
                                            CharField(desc="部门名称"),
                                        })),
            }))
    response.total = ResponseField(IntField, desc="数据总数")
    response.total_page = ResponseField(IntField, desc="总页码数")

    @classmethod
    def get_desc(cls):
        return "注册手机列表接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        mobilephone_page = MobilephoneServer.search(request.current_page,
                                                    **request.search_info)
        for mobilephone in mobilephone_page.data:
            if mobilephone.staff is not None:
                mobilephone.staff = StaffPermiseServer.hung_permise_bystaff(
                    mobilephone.staff)

        return mobilephone_page

    def fill(self, response, mobilephone_page):
        response.data_list = [{
            'id':
            mobilephone.id,
            'staff_id':
            mobilephone.staff.id if mobilephone.staff else 0,
            'staff_name':
            mobilephone.name,
            'is_working':
            mobilephone.staff.is_working if mobilephone.staff else "",
            'identity':
            mobilephone.identity,
            'mobile_devices_id':
            mobilephone.devices.id if mobilephone.devices else 0,
            'mobile_devices_code':
            mobilephone.devices.code if mobilephone.devices else "",
            'phone_number':
            mobilephone.phone_number,
            'operator':
            mobilephone.operator,
            'rent':
            mobilephone.rent,
            'phone_remark':
            mobilephone.phone_remark,
            'tag':
            mobilephone.tag,
            'flow_card_number':
            mobilephone.flow_card_number,
            'card_password':
            mobilephone.card_password,
            'phone_change':
            mobilephone.phone_change,
            'wechat_nick':
            mobilephone.wechat_nick,
            'wechat_number':
            mobilephone.wechat_number,
            'wechat_password':
            mobilephone.wechat_password,
            'wechat_remark':
            mobilephone.wechat_remark,
            'pay_password':
            mobilephone.pay_password,
            'status':
            mobilephone.status,
            'create_time':
            mobilephone.create_time,
            'department_list': [{
                'department_id': department.id,
                'department_name': department.name
            } for department in mobilephone.staff.department_list]
            if mobilephone.staff else []
        } for mobilephone in mobilephone_page.data]
        response.total = mobilephone_page.total
        response.total_page = mobilephone_page.total_page
        return response