def patch(self, request, *args, **kwargs): """ 修改工单字段 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'post参数为空', {}) request_data_dict = json.loads(json_str) ticket_id = kwargs.get('ticket_id') username = request.META.get('HTTP_USERNAME') app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') result, msg = ticket_base_service_ins.update_ticket_field_value(ticket_id, request_data_dict) if result: code, msg, data = 0, msg, {} else: code, msg, data = -1, msg, '' return api_response(code, msg, data)
def get(self, request, *args, **kwargs): request_data = request.GET ticket_id = kwargs.get('ticket_id') username = request.META.get('HTTP_USERNAME') per_page = int(request_data.get('per_page', 10)) page = int(request_data.get('page', 1)) ticket_data = int(request_data.get('ticket_data', 0)) desc = int(request_data.get('desc', 1)) # 是否降序 app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') if not username: return api_response(-1, '参数不全,请提供username', '') flag, result = ticket_base_service_ins.get_ticket_flow_log(ticket_id, username, per_page, page, ticket_data, desc) if flag is not False: paginator_info = result.get('paginator_info') data = dict(value=result.get('ticket_flow_log_restful_list'), per_page=paginator_info.get('per_page'), page=paginator_info.get('page'), total=paginator_info.get('total')) code, msg, = 0, '' else: code, data = -1, '' return api_response(code, msg, data)
def post(self, request, *args, **kwargs): """ 加签处理完成,加签完成操作后工单处理人回回到之前加签发起人 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'post参数为空', {}) request_data_dict = json.loads(json_str) ticket_id = kwargs.get('ticket_id') username = request.META.get('HTTP_USERNAME') suggestion = request_data_dict.get('suggestion', '') app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') result, msg = ticket_base_service_ins.add_node_ticket_end(ticket_id, username, suggestion) if result: code, msg, data = 0, msg, {} else: code, msg, data = -1, msg, '' return api_response(code, msg, data)
def put(self, request, *args, **kwargs): """ 修改工单状态 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'patch参数为空', {}) request_data_dict = json.loads(json_str) ticket_id = kwargs.get('ticket_id') username = request.META.get('HTTP_USERNAME') state_id = request_data_dict.get('state_id') suggestion = request_data_dict.get('suggestion', '') app_name = request.META.get('HTTP_APPNAME') # 调用来源应用是否有此工单对应工作流的权限校验 app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') # 强制修改工单状态需要对应工作流的管理员或者超级管理员 flag, result = ticket_base_service_ins.ticket_admin_permission_check(ticket_id, username) if flag is False: return api_response(-1, result, {}) flag, result = ticket_base_service_ins.update_ticket_state(ticket_id, state_id, username, suggestion) if flag is False: return api_response(-1, result, {}) else: return api_response(0, '', {})
def patch(self, request, *args, **kwargs): """ 处理工单 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') if not json_str: return api_response(-1, 'patch参数为空', {}) request_data_dict = json.loads(json_str) ticket_id = kwargs.get('ticket_id') app_name = request.META.get('HTTP_APPNAME') request_data_dict.update(dict(username=request.META.get('HTTP_USERNAME'))) app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, {}) result, msg = ticket_base_service_ins.handle_ticket(ticket_id, request_data_dict) if result or result is not False: code, data = 0, dict(value=result) else: code, data = -1, {} return api_response(code, msg, data)
def get(self, request, *args, **kwargs): """ 获取工单详情,根据用户返回不同的内容(是否有工单表单的编辑权限) :param request: :param args: :param kwargs: :return: """ request_data = request.GET ticket_id = kwargs.get('ticket_id') app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') # username = request_data.get('username', '') username = request.META.get('HTTP_USERNAME') if not username: return api_response(-1, '参数不全,请提供username', '') flag, result = ticket_base_service_ins.get_ticket_detail(ticket_id, username) if flag: code, data = 0, dict(value=result) else: code, data, msg = -1, {}, result return api_response(code, msg, data)
def post(self, request, *args, **kwargs): """ 转交操作会直接修改工单处理人,且工单状态不变,所以在使用的时候可以在前端做些提醒 避免用户把工单直接转交给下个人,从而干扰了工单的正常流转( 如用户提交了一个请假单,部门TL审批状态下,tl本来应该点击"同意",工单会自动流转到财务人员审批状态。 应该避免tl直接将工单转交给了某个财务)。这个地方后续会考虑怎么优化下,目前先在前端做提醒 :param request: :param args: :param kwargs: :return: """ json_str = request.body.decode('utf-8') request_data_dict = json.loads(json_str) ticket_id = kwargs.get('ticket_id') username = request.META.get('HTTP_USERNAME') target_username = request_data_dict.get('target_username', '') suggestion = request_data_dict.get('suggestion', '') from_admin = request_data_dict.get('from_admin', 0) app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check( app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, {}) if from_admin: flag, result = ticket_base_service_ins.ticket_admin_permission_check( ticket_id, username) if flag is False: return api_response(-1, result, {}) else: # 非管理员操作,校验用户是否有处理权限 flag, result = ticket_base_service_ins.ticket_handle_permission_check( ticket_id, username) if flag is False: return api_response(-1, result, {}) if result.get('permission') is False: return api_response(-1, result.get('msg'), {}) result, msg = ticket_base_service_ins.deliver_ticket( ticket_id, username, target_username, suggestion) if result: code, msg, data = 0, msg, result else: code, msg, data = -1, msg, '' return api_response(code, msg, data)
def get(self, request, *args, **kwargs): request_data = request.GET ticket_id = kwargs.get('ticket_id') # username = request_data.get('username', '') username = request.META.get('HTTP_USERNAME') app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(0, msg, dict(value=[])) if not username: return api_response(-1, '参数不全,请提供username', '') flag, result = ticket_base_service_ins.get_ticket_transition(ticket_id, username) if flag is False: code, data, msg = -1, {}, result else: code, data, msg = 0, dict(value=result.get('transition_dict_list')), '' return api_response(code, msg, data)
def post(self, request, *args, **kwargs): """ 重新执行工单脚本(用于脚本执行出错的情况), 也可用于hook执行失败的情况 :return: """ ticket_id = kwargs.get('ticket_id') username = request.META.get('HTTP_USERNAME') app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') if not username: api_response(-1, 'need arg username', '') result, msg = ticket_base_service_ins.retry_ticket_script(ticket_id, username) if result: code, msg, data = 0, 'Ticket script or hook retry start successful', {} else: code, msg, data = -1, msg, {} return api_response(code, msg, data)
def get(self, request, *args, **kwargs): request_data = request.GET ticket_id = kwargs.get('ticket_id') # username = request_data.get('username', '') # 可用于权限控制 username = request.META.get('HTTP_USERNAME') app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') if not username: return api_response(-1, '参数不全,请提供username', '') flag, result = ticket_base_service_ins.get_ticket_flow_step(ticket_id, username) if flag is not False: data = dict(value=result.get('state_step_dict_list'), current_state_id=result.get('current_state_id')) code, msg, = 0, '' else: code, data = -1, '' return api_response(code, msg, data)
def post(self, request, *args, **kwargs): """ 接单,当工单当前处理人实际为多个人时(角色、部门、多人都有可能, 注意角色和部门有可能实际只有一人) :param request: :param args: :param kwargs: :return: """ ticket_id = kwargs.get('ticket_id') username = request.META.get('HTTP_USERNAME') app_name = request.META.get('HTTP_APPNAME') app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id) if not app_permission_check: return api_response(-1, msg, '') result, msg = ticket_base_service_ins.accept_ticket(ticket_id, username) if result: code, msg, data = 0, msg, {} else: code, msg, data = -1, msg, '' return api_response(code, msg, data)