class Update(StaffAuthorizedApi): """修改员工绩效信息""" request = with_metaclass(RequestFieldSet) request.measure_staff_id = RequestField(IntField, desc = '员工绩效id') request.measure_staff_info = RequestField(DictField, desc = "员工绩效详情", conf = { 'staff_id': IntField(desc = "客服id"), 'new_number': IntField(desc = "当日新分数据,", is_required = False), 'exhale_number': IntField(desc = "当日呼出数", is_required = False), 'call_number': IntField(desc = "当日接通数", is_required = False), 'wechat_number': IntField(desc = "添加微信数", is_required = False), 'report_date': DateField(desc = "报表日期"), '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): MeasureStaffServer.update(request.measure_staff_id, **request.measure_staff_info) def fill(self, response): return response
class Update(StaffAuthorizedApi): """编辑销售机会""" request = with_metaclass(RequestFieldSet) request.sale_chance_id = RequestField(IntField, desc="销售机会id") request.sale_chance_info = RequestField(DictField, desc="员工绩效详情", conf={ 'end_time': DateField(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): page_list = SaleChanceServer.update(request.sale_chance_id, **request.sale_chance_info) def fill(self, response, page_list): return response
class Add(StaffAuthorizedApi): """添加员工绩效""" request = with_metaclass(RequestFieldSet) request.measure_staff_info = RequestField(DictField, desc = "员工绩效", conf = { 'staff_id': IntField(desc = "客服id"), 'new_number': IntField(desc = "当日新分数据,", is_required = False), 'exhale_number': IntField(desc = "当日呼出数", is_required = False), 'call_number': IntField(desc = "当日接通数", is_required = False), 'wechat_number': IntField(desc = "添加微信数", is_required = False), 'report_date': DateField(desc = "报表日期"), '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): record_staff = self.auth_user staff = StaffServer.get(request.measure_staff_info["staff_id"]) request.measure_staff_info.update({'record': record_staff, 'staff':staff}) MeasureStaffServer.generate(**request.measure_staff_info) def fill(self, response): return response
class Get(StaffAuthorizedApi): """获取店铺绩效详情""" request = with_metaclass(RequestFieldSet) request.report_id = RequestField(IntField, desc='店铺绩效id') response = with_metaclass(ResponseFieldSet) response.report_info = ResponseField(DictField, desc="店铺绩效详情", conf={ 'id': IntField(desc="报表id"), 'shop_id': IntField(desc="店铺id"), 'total_sales': IntField(desc="销售总数"), 'add_order_number': IntField(desc="补单数量"), 'through_number': IntField(desc="直通车成交单数"), 'through_money': IntField(desc="直通车总花费/分"), 'record_date': DateField(desc="报表日期"), 'remark': CharField(desc="备注"), }) @classmethod def get_desc(cls): return "店铺绩效详情接口" @classmethod def get_author(cls): return "fsy" def execute(self, request): report = MeasureShopServer.get(request.report_id) return report def fill(self, response, report): response.report_info = { 'id': report.id, 'shop_id': report.shop.id, 'total_sales': report.total_sales, 'add_order_number': report.add_order_number, 'through_number': report.through_number, 'through_money': report.through_money, 'record_date': report.record_date, 'remark': report.remark, } return response
class Get(StaffAuthorizedApi): """获取员工绩效详情""" request = with_metaclass(RequestFieldSet) request.measure_staff_id = RequestField(IntField, desc = '员工绩效id') response = with_metaclass(ResponseFieldSet) response.measure_staff_info = ResponseField(DictField, desc = "员工绩效详情", conf = { 'id':IntField(desc = "绩效id"), 'staff_id': IntField(desc = "员工id"), 'staff_name': CharField(desc = "员工姓名"), 'new_number': IntField(desc = "当日新分数据"), 'exhale_number': IntField(desc = "当日呼出数"), 'call_number': IntField(desc = "当日接通数"), 'wechat_number': IntField(desc = "添加微信数"), 'report_date': DateField(desc = "报表日期"), 'remark': CharField(desc = "备注"), }) @classmethod def get_desc(cls): return "员工绩效详情接口" @classmethod def get_author(cls): return "fsy" def execute(self, request): measure_staff = MeasureStaffServer.get(request.measure_staff_id) return measure_staff def fill(self, response, measure_staff): response.measure_staff_info = { 'id':measure_staff.id, 'staff_id': measure_staff.staff.id, 'staff_name': measure_staff.staff.name, 'new_number': measure_staff.new_number, 'exhale_number': measure_staff.exhale_number, 'call_number': measure_staff.call_number, 'wechat_number': measure_staff.wechat_number, 'report_date': measure_staff.report_date, 'remark': measure_staff.remark, } return response
class Update(StaffAuthorizedApi): """修改店铺绩效信息""" request = with_metaclass(RequestFieldSet) request.report_id = RequestField(IntField, desc='店铺绩效id') request.report_info = RequestField(DictField, desc="店铺绩效详情", conf={ 'shop_id': IntField(desc="店铺id"), 'total_sales': IntField(desc="销售总数"), 'add_order_number': IntField(desc="补单数量"), 'through_number': IntField(desc="直通车成交单数"), 'through_money': IntField(desc="直通车总花费/分"), 'record_date': DateField(desc="报表日期"), '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.report_info["shop_id"]) request.report_info.update({"shop": shop}) MeasureShopServer.update(request.report_id, **request.report_info) def fill(self, response): return response
class Add(StaffAuthorizedApi): """添加店铺绩效""" request = with_metaclass(RequestFieldSet) request.report_info = RequestField(DictField, desc="店铺绩效", conf={ 'shop_id': IntField(desc="店铺id"), 'total_sales': IntField(desc="销售总数"), 'add_order_number': IntField(desc="补单数量"), 'through_number': IntField(desc="直通车成交单数"), 'through_money': IntField(desc="直通车总花费/分"), 'record_date': DateField(desc="报表日期(Y-m-d)"), '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): staff = self.auth_user shop = ShopServer.get(request.report_info["shop_id"]) request.report_info.update({'shop': shop, 'staff': staff}) MeasureShopServer.generate(**request.report_info) def fill(self, response): return response
class Update(StaffAuthorizedApi): """修改个人中心详情""" request = with_metaclass(RequestFieldSet) request.user_info = RequestField(DictField, desc="用户详情", conf={ 'name': CharField(desc="姓名", is_required=False), 'gender': CharField(desc="性别", is_required=False), 'birthday': DateField(desc="生日", is_required=False), 'phone': CharField(desc="电话", is_required=False), 'email': 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): staff = self.auth_user StaffServer.update(staff, **request.user_info) def fill(self, response): return response
class Add(StaffAuthorizedApi): """添加销售机会""" request = with_metaclass(RequestFieldSet) request.sale_chance_info = RequestField(DictField, desc="添加销售机会", conf={ 'customer_ids': ListField( desc='客户ids', fmt=IntField(desc='客户id')), 'staff_id': IntField(desc="员工id"), 'goods_id': IntField(desc="商品id"), 'end_time': DateField(desc="截至时间"), }) 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.sale_chance_info["staff_id"]) goods = GoodsServer.get(request.sale_chance_info["goods_id"]) customer_list = CustomerServer.search_qs( id__in=request.sale_chance_info["customer_ids"]) for customer in customer_list: SaleChanceServer.generate(customer = customer, staff = staff, goods = goods, shop = goods.shop, \ end_time = request.sale_chance_info["end_time"]) def fill(self, response): return response
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
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
class Search(StaffAuthorizedApi): """客户返利数据列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前查询页码") request.search_info = RequestField( DictField, desc='搜索条件', conf={ 'code': CharField(desc="客户编码", is_required=False), 'status': CharField(desc="执行状态(初始化:init,执行中:excutting,已完成:finish,失败:failed)", is_required=False), 'create_time_start': DatetimeField(desc="上传开始时间", is_required=False), 'create_time_end': DatetimeField(desc="上传终止时间", is_required=False), }) response = with_metaclass(ResponseFieldSet) response.data_list = ResponseField(ListField, desc='客户返利数据列表', fmt=DictField( desc="客户返利数据列表", conf={ 'id': IntField(desc="id"), 'agent_id': CharField(desc="代理商ID"), 'agent_name': CharField(desc="代理商名称"), 'code': CharField(desc="客户编码"), 'name': CharField(desc="客户名称"), 'phone': CharField(desc="注册手机号"), 'activity_type': CharField(desc="活动类型"), 'device_code': CharField(desc="设备编码"), 'register_time': DatetimeField(desc="注册时间"), 'bind_time': DatetimeField(desc="绑定时间"), 'month': DateField(desc="交易月份"), 'transaction_amount': IntField(desc="交易金额/分"), 'effective_amount': IntField(desc="有效金额/分"), 'accumulate_amount': IntField(desc="当月累计交易金额/分"), 'history_amount': IntField(desc="历史累计交易金额/分"), 'type': CharField(desc="号段类型"), 'is_rebate': CharField(desc="是否返利"), 'status': CharField(desc="状态"), 'remark': CharField(desc="备注"), 'create_time': DatetimeField(desc="创建时间"), 'error_text': 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): page_list = import_rebate_middleware.search(request.current_page, **request.search_info) return page_list def fill(self, response, page_list): response.data_list = [{ 'id': rebate.id, 'agent_id': rebate.agent_id, 'agent_name': rebate.agent_name, 'code': rebate.code, 'name': rebate.name, 'phone': rebate.phone, 'activity_type': rebate.activity_type, 'device_code': rebate.device_code, 'register_time': rebate.register_time, 'bind_time': rebate.bind_time, 'month': rebate.month, 'transaction_amount': rebate.transaction_amount, 'effective_amount': rebate.effective_amount, 'accumulate_amount': rebate.accumulate_amount, 'history_amount': rebate.history_amount, 'type': rebate.type, 'is_rebate': rebate.is_rebate, 'status': rebate.status, 'remark': rebate.remark, 'create_time': rebate.create_time, 'error_text': rebate.error_text, } for rebate in page_list.data] response.total = page_list.total response.total_page = page_list.total_page return response
class Search(StaffAuthorizedApi): """日志搜索""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前页码") request.search_info = RequestField(DictField, desc="日志搜索条件", conf={ 'active_name': CharField(desc="搜索主动方名称", is_required=False), 'active_type': CharField(desc="搜索主动方类型", is_required=False), 'passive_name': CharField(desc="搜索被动方名称", is_required=False), 'passive_type': CharField(desc="搜索被动方类型", is_required=False), 'journal_type': CharField(desc="搜索日志类型", is_required=False), 'start_time': DateField(desc="搜索开始时间", is_required=False), 'end_time': DateField(desc="搜搜结束时间", is_required=False) }) response = with_metaclass(ResponseFieldSet) response.data_list = ResponseField(ListField, desc='日志列表', fmt=DictField( desc="日志数据", conf={ 'id': IntField(desc="日志id"), 'active_name': CharField(desc="主动方名称"), 'active_type': CharField(desc="主动方类型"), 'passive_name': CharField(desc="被动方名称"), 'passive_type': CharField(desc="被动方类型"), 'journal_type': CharField(desc="日志类型"), 'record_detail': CharField(desc="详情"), 'create_time': DatetimeField(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): if 'start_time' in request.search_info: start_time = request.search_info.pop('start_time') request.search_info['create_time__gte'] = start_time if 'end_time' in request.search_info: end_time = request.search_info.pop('end_time') request.search_info['create_time__lt'] = end_time journal_pages = JournalMiddleware.search(request.current_page, **request.search_info) return journal_pages def fill(self, response, journal_pages): data_list = [{ 'id': journal.id, 'active_name': journal.active_name, 'active_type': journal.active_type, 'passive_name': journal.passive_name, 'passive_type': journal.passive_type, 'journal_type': journal.journal_type, 'record_detail': journal.record_detail, 'create_time': journal.create_time, } for journal in journal_pages.data] response.data_list = data_list response.total = journal_pages.total response.total_page = journal_pages.total_page return response
class Update(StaffAuthorizedApi): """员工导入数据修改""" request = with_metaclass(RequestFieldSet) request.staff_id = RequestField(IntField, desc='员工导入数据id') request.staff_info = RequestField(DictField, desc="员工导入数据信息详情", conf={ 'name': CharField(desc="姓名", is_required=False), 'position': CharField(desc="职位", is_required=False), 'department': CharField(desc="部门", is_required=False), 'phone': CharField(desc="手机号", is_required=False), 'gender': CharField(desc="性别", is_required=False), 'identity': CharField(desc="身份证号", is_required=False), 'birthday': DateField(desc="生日", is_required=False), 'age': IntField(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_on_job': CharField(desc="是否在职", is_required=False), 'quit_time': DateField(desc="离职时间", 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): import_staff_middleware.update(request.staff_id, **request.staff_info) def fill(self, response): return response
class Search(StaffAuthorizedApi): """设备入库数据列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前查询页码") request.search_info = RequestField( DictField, desc='搜索条件', conf={ 'add_time': DateField(desc="添加日期", is_required=False), 'status': CharField(desc="执行状态(初始化:init,执行中:excutting,已完成:finish,失败:failed)", is_required=False), 'create_time_start': DatetimeField(desc="上传开始时间", is_required=False), 'create_time_end': DatetimeField(desc="上传终止时间", is_required=False), }) response = with_metaclass(ResponseFieldSet) response.data_list = ResponseField(ListField, desc='客户返利数据列表', fmt=DictField( desc="客户返利数据列表", conf={ 'id': IntField(desc="id"), 'add_time': CharField(desc="添加时间"), 'agent_name': CharField(desc="代理商名称"), 'product_type': CharField(desc="产品类型"), 'product_model': CharField(desc="产品型号"), 'min_number': CharField(desc="起始号段"), 'max_number': CharField(desc="终止号段"), 'quantity': CharField(desc="入库数量"), 'status': CharField(desc="状态"), 'remark': CharField(desc="备注"), 'create_time': DatetimeField(desc="创建时间"), 'error_text': 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): page_list = import_equipment_in_middleware.search( request.current_page, **request.search_info) return page_list def fill(self, response, page_list): response.data_list = [{ 'id': equipmentin.id, 'add_time': equipmentin.add_time, 'agent_name': equipmentin.agent_name, 'product_type': equipmentin.product_type, 'product_model': equipmentin.product_model, 'min_number': equipmentin.min_number, 'max_number': equipmentin.max_number, 'quantity': equipmentin.quantity, 'status': equipmentin.status, 'remark': equipmentin.remark, 'create_time': equipmentin.create_time, 'error_text': equipmentin.error_text } for equipmentin in page_list.data] response.total = page_list.total response.total_page = page_list.total_page return response
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
class Search(StaffAuthorizedApi): """店铺绩效列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前查询页码") request.search_info = RequestField(DictField, desc='搜索条件', conf={ 'shop_name': CharField(desc="店铺名称", is_required=False), 'begin_time': DateField(desc="开始时间", is_required=False), 'end_time': DateField(desc="结束时间", is_required=False), }) response = with_metaclass(ResponseFieldSet) response.sum_data = ResponseField(DictField, desc="店铺绩效统计", conf={ 'total_sales': IntField(desc="销售总数"), 'add_order_number': IntField(desc="补单数量"), 'add_order_total_money': IntField(desc="补单费用/分"), 'single_point_total_money': IntField(desc="扣点费用/分"), 'through_number': IntField(desc="直通车成交单数"), 'through_money': IntField(desc="直通车总花费/分"), 'total_freight': IntField(desc="运费/分"), 'total_spend': IntField(desc="总推广花费/分"), 'average_spend': IntField(desc="平均推广花费/分"), }) response.data_list = ResponseField(ListField, desc='店铺绩效列表', fmt=DictField( desc="店铺绩效列表", conf={ 'id': IntField(desc="报表id"), 'shop_id': IntField(desc="店铺id"), 'shop_name': CharField(desc="店铺名称"), 'channel_id': IntField(desc="店铺渠道id"), 'channel_name': CharField(desc="店铺渠道名称"), 'staff_name': CharField(desc="添加员工姓名"), 'total_sales': IntField(desc="销售总数"), 'add_order_number': IntField(desc="补单数量"), 'add_order_total_money': IntField(desc="补单费用/分"), 'single_point_total_money': IntField(desc="扣点费用/分"), 'through_number': IntField(desc="直通车成交单数"), 'through_money': IntField(desc="直通车总花费/分"), 'total_freight': IntField(desc="运费/分"), 'record_date': DateField(desc="报表日期"), 'total_spend': IntField(desc="总推广花费/分"), 'average_spend': IntField(desc="平均推广花费/分"), 'remark': 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): if "shop_name" in request.search_info: shop_name = request.search_info.pop("shop_name") shop_list = ShopServer.search_all(name=shop_name) request.search_info.update({"shop__in": shop_list}) measure_shop_qs = MeasureShopServer.search_qs(**request.search_info) sum_data = MeasureShopServer.summing(measure_shop_qs) measure_shop_page = MeasureShopServer.search(request.current_page, measure_shop_qs) measure_shop_page.data = ChannelServer.hung_channel_forshops( measure_shop_page.data) MeasureShopServer.calculation(measure_shop_page.data) return sum_data, measure_shop_page def fill(self, response, sum_data, measure_shop_page): response.sum_data = { 'total_sales': sum_data.total_sales, 'add_order_number': sum_data.add_order_number, 'add_order_total_money': sum_data.add_order_total_money, 'single_point_total_money': sum_data.single_point_total_money, 'through_number': sum_data.through_number, 'through_money': sum_data.through_money, 'total_freight': sum_data.total_freight, 'total_spend': sum_data.total_spend, 'average_spend': sum_data.average_spend, } response.data_list = [{ 'id': report.id, 'shop_id': report.shop.id, 'shop_name': report.shop.name, 'channel_id': report.channel.id if report.channel else 0, 'channel_name': report.channel.name if report.channel else "", 'staff_name': report.staff.name, 'total_sales': report.total_sales, 'add_order_number': report.add_order_number, 'add_order_total_money': report.add_order_total_money, 'single_point_total_money': report.single_point_total_money, 'through_number': report.through_number, 'through_money': report.through_money, 'total_freight': report.total_freight, 'record_date': report.record_date, 'total_spend': report.total_spend, 'average_spend': report.average_spend, 'remark': report.remark, } for report in measure_shop_page.data] response.total = measure_shop_page.total response.total_page = measure_shop_page.total_page return response
class Search(StaffAuthorizedApi): """销售机会列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前查询页码") request.search_info = RequestField( DictField, desc='搜索条件', conf={'name': 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="员工姓名"), 'customer_id': IntField(desc="客户id"), 'name': CharField(desc="姓名"), 'gender': CharField(desc="性别"), 'birthday': DatetimeField(desc="出身年月"), 'email': CharField(desc="邮箱"), 'phone': CharField(desc="手机号"), 'wechat': CharField(desc="微信号"), 'city': CharField(desc="城市"), 'address': CharField(desc="详细地址"), 'good_name': CharField(desc="偏好商品名称"), 'good_id': CharField(desc="偏好商品id"), 'remark': CharField(desc="备注"), 'end_time': DateField(desc="截至时间"), 'create_time': DateField(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 page_list = SaleChanceServer.search(request.current_page, **request.search_info) return page_list def fill(self, response, page_list): response.data_list = [{ 'id': sale_chance.id, 'staff_id': sale_chance.staff.id if sale_chance.id else 0, 'staff_name': sale_chance.staff.name if sale_chance.staff else "", 'customer_id': sale_chance.customer.id, 'name': sale_chance.customer.name, 'gender': sale_chance.customer.gender, 'birthday': sale_chance.customer.birthday, 'email': sale_chance.customer.email, 'phone': sale_chance.customer.phone, 'wechat': sale_chance.customer.wechat, 'city': sale_chance.customer.city, 'address': sale_chance.customer.address, 'good_name': sale_chance.goods.name if sale_chance.goods else "", 'good_id': sale_chance.goods.id if sale_chance.goods else 0, 'remark': sale_chance.remark, 'end_time': sale_chance.end_time, 'create_time': sale_chance.create_time, } for sale_chance in page_list.data] response.total = page_list.total response.total_page = page_list.total_page return response
class GetByadmin(StaffAuthorizedApi): """获取员工账号及个人信息""" request = with_metaclass(RequestFieldSet) request.user_id = RequestField(IntField, desc='员工id') response = with_metaclass(ResponseFieldSet) response.user_info = ResponseField( DictField, desc='员工详情', conf={ 'id': IntField(desc="员工id"), 'name': CharField(desc="姓名"), 'gender': CharField(desc="性别"), 'number': CharField(desc="工号"), 'phone': CharField(desc="手机号"), 'email': CharField(desc="邮箱"), 'birthday': DateField(desc="生日"), 'identity': CharField(desc="身份证"), 'emergency_contact': CharField(desc="紧急联系人"), 'emergency_phone': CharField(desc="紧急联系人电话"), 'address': 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在职)"), '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="部门名称"), })), }) @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) staff = StaffServer.get(request.user_id) staff = StaffPermiseServer.hung_permise_bystaff(staff) # staff_list = StaffAccountServer.hung_account_forstaffs(staff_list) return staff def fill(self, response, staff): response.user_info = { 'id': staff.id, 'name': staff.name, 'gender': staff.gender, 'number': staff.number, 'phone': staff.phone, 'email': staff.email, 'birthday': staff.birthday, 'identity': staff.identity, 'emergency_contact': staff.emergency_contact, 'emergency_phone': staff.emergency_phone, 'address': staff.address, 'entry_time': staff.entry_time, 'education': staff.education, 'bank_number': staff.bank_number, 'contract_b': staff.contract_b, 'contract_l': staff.contract_l, 'expire_time': staff.expire_time, 'is_working': staff.is_working, '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] } return response
class Search(StaffAuthorizedApi): """员工绩效列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc = "当前查询页码") request.search_info = RequestField(DictField, desc = '搜索条件', conf = { 'staff_name': CharField(desc = "员工姓名", is_required = False), 'begin_time': DateField(desc = "开始时间", is_required = False), 'end_time': DateField(desc = "结束时间", is_required = False), }) response = with_metaclass(ResponseFieldSet) response.sum_data = ResponseField(DictField, desc = "员工绩效统计", conf = { 'new_number': IntField(desc = "当日新分数据"), 'exhale_number': IntField(desc = "当日呼出数"), 'call_number': IntField(desc = "当日接通数"), 'wechat_number': IntField(desc = "添加微信数"), 'call_rate': CharField(desc = "当日接通率"), 'volume': IntField(desc = "当日成交量"), 'conversion_rate': CharField(desc = "当日转化率"), 'open_number': IntField(desc = "当日开通人数"), 'open_rate': CharField(desc = "当日开通率"), 'activation_number': IntField(desc = "当日激活人数"), 'activation_rate': CharField(desc = "当日激活率"), }) response.data_list = ResponseField(ListField, desc = '员工绩效列表', fmt = DictField(desc = "员工绩效列表", conf = { 'id':IntField(desc = "绩效id"), 'staff_id': IntField(desc = "员工id"), 'staff_name': CharField(desc = "员工姓名"), 'record_id': IntField(desc = "记录人id"), 'record_name': CharField(desc = "记录人姓名"), 'new_number': IntField(desc = "当日新分数据"), 'exhale_number': IntField(desc = "当日呼出数"), 'call_number': IntField(desc = "当日接通数"), 'call_rate': CharField(desc = "当日接通率"), 'wechat_number': IntField(desc = "添加微信数"), 'report_date': DateField(desc = "报表日期"), 'create_time': DatetimeField(desc = "添加日期"), 'remark': CharField(desc = "备注"), 'volume': IntField(desc = "当日成交量"), 'conversion_rate': CharField(desc = "当日转化率"), 'open_number': IntField(desc = "当日开通人数"), 'open_rate': CharField(desc = "当日开通率"), 'activation_number': IntField(desc = "当日激活人数"), 'activation_rate': 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): if "staff_name" in request.search_info: staff_name = request.search_info.pop("staff_name") staff_list = StaffServer.search_all(name = staff_name) request.search_info.update({"staff__in":staff_list}) cur_user = self.auth_user user_pro = UserRightServer(cur_user) request.search_info['cur_user'] = user_pro measure_staff_qs = MeasureStaffServer.search_qs(**request.search_info) sum_data = MeasureStaffServer.summing(measure_staff_qs) page_list = MeasureStaffServer.search(request.current_page, measure_staff_qs) MeasureStaffServer.calculation(page_list.data) sum_measure_data = ServiceItemServer.summing(sum_data, **request.search_info) ServiceItemServer.huang_serviceitem_rate(page_list.data) return sum_data, sum_measure_data, page_list def fill(self, response, sum_data, sum_measure_data, page_list): response.sum_data = { 'new_number': sum_data.new_number, 'exhale_number': sum_data.exhale_number, 'call_number': sum_data.call_number, 'wechat_number': sum_data.wechat_number, 'call_rate': sum_data.call_rate, 'volume': sum_measure_data.volume_total, 'conversion_rate': sum_measure_data.conversion_rate_total, 'open_number': sum_measure_data.open_number_total, 'open_rate': sum_measure_data.open_rate_total, 'activation_number': sum_measure_data.activation_number_total, 'activation_rate': sum_measure_data.activation_rate_total, } response.data_list = [{ 'id':measure_staff.id, 'staff_id': measure_staff.staff.id if measure_staff.staff else 0, 'staff_name': measure_staff.staff.name if measure_staff.staff else "", 'record_id': measure_staff.record.id if measure_staff.record else 0, 'record_name': measure_staff.record.name if measure_staff.record else "", 'new_number': measure_staff.new_number, 'exhale_number': measure_staff.exhale_number, 'call_number': measure_staff.call_number, 'call_rate': measure_staff.call_rate, 'wechat_number': measure_staff.wechat_number, 'report_date': measure_staff.report_date, 'create_time': measure_staff.create_time, 'remark': measure_staff.remark, 'volume': measure_staff.volume, 'conversion_rate': measure_staff.conversion_rate, 'open_number': measure_staff.open_number, 'open_rate': measure_staff.open_rate, 'activation_number': measure_staff.activation_number, 'activation_rate': measure_staff.activation_rate, } for measure_staff in page_list.data] response.total = page_list.total response.total_page = page_list.total_page return response
class Search(StaffAuthorizedApi): """客户流水数据列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前查询页码") request.search_info = RequestField( DictField, desc='搜索条件', conf={ 'code': CharField(desc="客户编码", is_required=False), 'status': CharField(desc="执行状态(初始化:init,执行中:excutting,已完成:finish,失败:failed)", is_required=False), 'create_time_start': DatetimeField(desc="上传开始时间", is_required=False), 'create_time_end': DatetimeField(desc="上传终止时间", is_required=False), }) response = with_metaclass(ResponseFieldSet) response.data_list = ResponseField(ListField, desc='客户流水数据列表', fmt=DictField( desc="客户流水数据列表", conf={ 'id': IntField(desc="id"), 'agent_name': CharField(desc="代理商名称"), 'service_code': CharField(desc="服务编码"), 'code': CharField(desc="客户编码"), 'phone': CharField(desc="手机号"), 'transaction_year': DateField(desc="交易日期"), 'transaction_day': CharField(desc="交易时间"), 'transaction_code': CharField(desc="流水编号"), 'transaction_money': IntField(desc="交易金额"), 'fee': IntField(desc="手续费/分"), 'rate': IntField(desc="客户费率"), 'other_fee': IntField(desc="其他手续费/分"), 'transaction_status': CharField(desc="交易状态"), 'type': CharField(desc="号段类型"), 'status': CharField(desc="状态"), 'create_time': DatetimeField(desc="创建时间"), 'error_text': 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): page_list = import_transaction_middleware.search( request.current_page, **request.search_info) return page_list def fill(self, response, page_list): response.data_list = [{ 'id': transaction.id, 'agent_name': transaction.agent_name, 'service_code': transaction.service_code, 'code': transaction.code, 'phone': transaction.phone, 'transaction_year': transaction.transaction_year, 'transaction_day': transaction.transaction_day, 'transaction_code': transaction.transaction_code, 'transaction_money': transaction.transaction_money, 'fee': transaction.fee, 'rate': transaction.rate, 'other_fee': transaction.other_fee, 'transaction_status': transaction.transaction_status, 'type': transaction.type, 'status': transaction.status, 'create_time': transaction.create_time, 'error_text': transaction.error_text, } for transaction in page_list.data] response.total = page_list.total response.total_page = page_list.total_page return response
class Statistics(StaffAuthorizedApi): """数据统计""" request = with_metaclass(RequestFieldSet) request.search_info = RequestField(DictField, desc='搜索条件', conf={ 'search_time': DateField(desc="搜索时间", is_required=False), }) response = with_metaclass(ResponseFieldSet) response.data_list = ResponseField(ListField, desc='数据统计列表', fmt=DictField( desc="数据统计统计列表", conf={ 'calculation_date': CharField(desc="计算日期"), 'new_number': IntField(desc="当日新分数据"), 'exhale_number': IntField(desc="当日呼出数"), 'call_number': IntField(desc="当日接通数"), 'call_rate': CharField(desc="当日接通率"), 'wechat_number': IntField(desc="当日添加微信数"), 'volume': IntField(desc="当日成交量"), 'conversion_rate': CharField(desc="当日转化率"), 'open_number': IntField(desc="当日开通人数"), 'open_rate': CharField(desc="当日开通率"), 'activation_number': IntField(desc="当日激活人数"), 'activation_rate': CharField(desc="当日激活率"), })) @classmethod def get_desc(cls): return "数据统计列表接口" @classmethod def get_author(cls): return "fsy" def execute(self, request): search_time = None cur_user = self.auth_user user_pro = UserRightServer(cur_user) if "search_time" in request.search_info: search_time = request.search_info.pop("search_time") search_info = {'search_time': search_time, 'cur_user': user_pro} measure_staff_mapping = MeasureStaffServer.Statistics(search_info) staff_order_event_list = StaffOrderEventServer.get_event_bystaff( user_pro._staff_id_list) search_time = search_info['search_time'] if search_time is None: current_time = datetime.datetime.now() else: current_time = search_time cur_date_first = datetime.datetime(current_time.year, current_time.month, 1) cur_date_last = datetime.datetime(current_time.year, current_time.month + 1, 1, 23, 59, 59) - datetime.timedelta(1) service_item_list = ServiceItemServer.search_qs( order__pay_time__gte=cur_date_first, order__pay_time__lte=cur_date_last, service__seller_id__in=user_pro._staff_id_list) statistics_list = ServiceItemServer.Statistics(measure_staff_mapping, service_item_list) return statistics_list def fill(self, response, statistics_list): response.data_list = [{ 'calculation_date': item["calculation_date"], 'new_number': item["new_number"], 'exhale_number': item["exhale_number"], 'call_number': item["call_number"], 'call_rate': item["call_rate"], 'wechat_number': item["wechat_number"], 'volume': item["volume"], 'conversion_rate': item["conversion_rate"], 'open_number': item["open_number"], 'open_rate': item["open_rate"], 'activation_number': item["activation_number"], 'activation_rate': item["activation_rate"] } for item in statistics_list] return response
class Search(StaffAuthorizedApi): """员工导入数据列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前查询页码") request.search_info = RequestField( DictField, desc='搜索条件', conf={ 'name': CharField(desc="员工姓名", is_required=False), 'status': CharField(desc="执行状态(初始化:init,执行中:excutting,已完成:finish,失败:failed)", is_required=False), 'create_time_start': DatetimeField(desc="上传开始时间", is_required=False), 'create_time_end': DatetimeField(desc="上传终止时间", is_required=False), }) response = with_metaclass(ResponseFieldSet) response.data_list = ResponseField(ListField, desc='员工数据列表', fmt=DictField( desc="员工数据列表", conf={ 'id': IntField(desc="id"), 'name': CharField(desc="姓名"), 'position': CharField(desc="职位"), 'department': CharField(desc="部门"), 'phone': CharField(desc="手机号"), 'gender': CharField(desc="性别"), 'identity': CharField(desc="身份证号"), 'birthday': DateField(desc="生日"), 'age': IntField(desc="年龄"), 'emergency_contact': CharField(desc="紧急联系人"), 'emergency_phone': CharField(desc="紧急联系人电话"), 'address': 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="到期时间"), 'is_on_job': CharField(desc="是否在职"), 'quit_time': DateField(desc="离职时间"), 'status': CharField(desc="状态"), 'remark': CharField(desc="备注"), 'create_time': DatetimeField(desc="创建时间"), 'error_text': 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): page_list = import_staff_middleware.search(request.current_page, **request.search_info) return page_list def fill(self, response, page_list): response.data_list = [{ 'id': staff.id, 'name': staff.name, 'position': staff.position, 'department': staff.department, 'phone': staff.phone, 'gender': staff.gender, 'identity': staff.identity, 'birthday': staff.birthday, 'age': staff.age, 'emergency_contact': staff.emergency_contact, 'emergency_phone': staff.emergency_phone, 'address': staff.address, 'entry_time': staff.entry_time, 'education': staff.education, 'bank_number': staff.bank_number, 'contract_b': staff.contract_b, 'contract_l': staff.contract_l, 'expire_time': staff.expire_time, 'is_on_job': staff.is_on_job, 'quit_time': staff.quit_time, 'status': staff.status, 'remark': staff.remark, 'create_time': staff.create_time, 'error_text': staff.error_text, } for staff in page_list.data] response.total = page_list.total response.total_page = page_list.total_page return response
class Search(StaffAuthorizedApi): """售后服务单产品列表""" request = with_metaclass(RequestFieldSet) request.current_page = RequestField(IntField, desc="当前查询页码") request.search_info = RequestField(DictField, desc='搜索条件', conf={ "equipment_code": CharField(desc="设备编码", is_required=False), "seller_staff_id": IntField(desc="售前客服id", is_required=False), "server_staff_id": IntField(desc="售后客服id", is_required=False), "shop_id": CharField(desc="店铺id", is_required=False), "buy_date_start": DateField(desc="购买起始时间", is_required=False), "buy_date_end": DateField(desc="购买结束时间", is_required=False), }) response = with_metaclass(ResponseFieldSet) response.data_list = ResponseField(ListField, desc='售后服务单产品列表', fmt=DictField( desc="售后服务单产品列表", conf={ 'id': IntField(desc="id"), 'name': CharField(desc="购买人"), 'phone': CharField(desc="购买人电话"), 'code': CharField(desc="SN码"), 'pre_id': IntField(desc="售前客服id"), 'pre_name': CharField(desc="售前客服"), 'after_id': IntField(desc="售后客服id"), 'after_name': CharField(desc="售后客服"), 'shop_id': IntField(desc="店铺id"), 'shop_name': CharField(desc="店铺名称"), 'buy_time': DatetimeField(desc="购买时间"), 'create_time': DatetimeField(desc="录入时间"), 'buyinfo_status': CharField(desc="购买信息状态"), 'dsinfo_status': CharField(desc="电刷信息状态"), 'rebate_status': CharField(desc="激活信息状态"), 'sn_status': 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.update( {"service__seller_id__in": user_pro._staff_id_list}) page_list = ServiceItemServer.search(request.current_page, **request.search_info) # 挂载售前售后客服 ServiceServer.hung_staff_forservice(page_list.data) # 挂载店铺 OrderServer.hung_shop_forservice(page_list.data) return page_list def fill(self, response, page_list): response.data_list = [{ 'id': service_item.id, 'name': service_item.customer.name if service_item.customer else "", 'phone': service_item.customer.phone if service_item.customer else "", 'code': service_item.equipment.code, 'pre_id': service_item.pre_staff.id if service_item.pre_staff else 0, 'pre_name': service_item.pre_staff.name if service_item.pre_staff else "", 'after_id': service_item.after_staff.id if service_item.after_staff else 0, 'after_name': service_item.after_staff.name if service_item.after_staff else "", 'shop_id': service_item.shop.id if service_item.shop else 0, 'shop_name': service_item.shop.name if service_item.shop else "", 'buy_time': service_item.order.pay_time if service_item.order else "", 'create_time': service_item.create_time, 'buyinfo_status': service_item.buyinfo_status, 'dsinfo_status': service_item.dsinfo_status, 'rebate_status': service_item.rebate_status, 'sn_status': service_item.sn_status, } for service_item in page_list.data] response.total = page_list.total response.total_page = page_list.total_page return response