def update_channel_flag(self): """ 更新 channel 的标签 参数:channel_id --> channel 的本地Id rank --> 标志 取值 rank0,rank1,rank2,rank3,rank4,rank5 (白,红,橙,绿,蓝,紫) :return: """ channel_id = self.params.get("channel_id", "") rank = self.params.get("rank", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "data": "\"channel_id\"不存在!"} if rank not in ["rank0", "rank1", "rank2", "rank3", "rank4", "rank5"]: return {"status": 0, "data": "\"rank\"参数的值不在合法值列表中"} message_handler = AliMessage(self.shop) result = message_handler.update_msg_rank(channel.origin_id, rank=rank) if result.get("isSuccess", ""): with sessionCM() as session: Channel.update(session, channel, {"flag": rank}) return { "status": 1, "data": "为channel %s 打上了 %s 标签!" % (str(channel_id), str(rank)) } else: return {"status": 0, "data": "打标签失败"}
def update_channel_state(self): """ 更新 channel 的处理状态 (已处理、未处理) 参数:channel_id --> channel 的本地Id state --> 状态 0表示未处理、 1表示已处理 :return: """ channel_id = self.params.get("channel_id", "") state = self.params.get("state", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "data": "\"channel id\"不存在!"} if state not in ["1", "0"]: return {"status": 0, "data": "\"state\"值只能是字符串0或1!"} try: with sessionCM() as session: Channel.update(session, channel, {"deal_stat", int(state)}) return {"status": 1, "data": "状态更新成功!"} except Exception, e: logger.error(traceback.format_exc(e)) return {"status": 0, "data": "状态更新失败!"}
def update_channel_read(self): """ 更新通道为已读状态 参数 channel_id --> channel 的本地ID msgSource --> 消息类型 可选参数(message_center/order_msg) :return: """ channel_id = self.params.get("channel_id", "") msgSource = self.params.get("msgSource", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "data": "\"channel_id\"不存在!"} if msgSource not in ["message_center", "order_msg"]: return {"status": 0, "data": "\"msgSource\"参数的值不在合法值列表中"} message_handler = AliMessage(self.shop) result = message_handler.update_msg_read_status(channel.origin_id, msg_source=msgSource) if result.get("isSuccess", ""): with sessionCM() as session: Channel.update(session, channel, {"read_stat", 1}) return {"status": 1, "data": "状态更新成功!"} else: return {"status": 0, "data": "状态更新失败!"}
def update_channel_flag(self): """ 更新 channel 的标签 参数:channel_id --> channel 的本地Id rank --> 标志 取值 rank0,rank1,rank2,rank3,rank4,rank5 (白,红,橙,绿,蓝,紫) :return: """ channel_id = self.params.get("channel_id", "") rank = self.params.get("rank", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "data": "\"channel_id\"不存在!"} if rank not in ["rank0", "rank1", "rank2", "rank3", "rank4", "rank5"]: return {"status": 0, "data": "\"rank\"参数的值不在合法值列表中"} try: with sessionCM() as session: Channel.update(session, channel, {"flag": rank}) return { "status": 1, "data": "为channel %s 打上了 %s 标签!" % (str(channel_id), str(rank)) } except Exception, e: logger.error(traceback.format_exc(e)) return {"status": 0, "data": "打标签失败"}
def reply_message(self): """ 回复消息,对应于最新一条消息的回复 需要的参数包括:parent_message_id (被回复的消息ID) , item_id 或是 recipient_id , body :return: """ parent_message_id = self.params.get("parent_message_id", "") channel_id = self.params.get("channel_id", "") # recipient_id = self.params.get("recipient_id", "") body = self.params.get("body", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "message": "无效的channel_id!"} handler = EbayMessage(self.shop.site_id, self.shop.account) result = handler.add_message_rtq( parent_message_id=parent_message_id, item_id=channel.relation_id, recipient_id=channel.buyer_id, body=body ) print parent_message_id, channel.relation_id, channel.buyer_id, body print result if result.get("Ack", "") == "Success": # 同步消息 with sessionCM() as session: Message.create( session, channel_id=channel.id, origin_id='async', content=body, image_urls="", receive_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), source='seller', external_message_id='' ) return {"status": 1, "message": "回复消息成功!"} else: return {"status": 0, "message": "回复消息失败!", "errors": result.get("Errors", "")}
def update_channel_state(self): """ 更新 channel 的处理状态 (已处理、未处理) 参数:channel_id --> channel 的本地Id state --> 状态 0表示未处理、 1表示已处理 :return: """ channel_id = self.params.get("channel_id", "") state = self.params.get("state", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "data": "\"channel id\"不存在!"} if state not in ["1", "0"]: return {"status": 0, "data": "\"state\"值只能是字符串0或1!"} message_handler = AliMessage(self.shop) result = message_handler.update_msg_process_status( channel.origin_id, state) if result.get("isSuccess", ""): with sessionCM() as session: Channel.update(session, channel, {"deal_stat", int(state)}) return {"status": 1, "data": "状态更新成功!"} else: return { "status": 0, "data": "状态更新失败!", "errors": result.get("Errors", "") }
def update_contacts(self): logger.info(self.params) kw = {} contacts_id = self.params.get("contacts_id", "") if not contacts_id: return {"status": 0, "message": "必填参数\"contacts_id\"缺失!"} if self.params.get("name", ""): kw["name"] = self.params.get("name", "") if self.params.get("origin_id", ""): kw["origin_id"] = self.params.get("origin_id", "") if self.params.get("group_id", ""): kw["group_id"] = self.params.get("group_id", "") if self.params.get("type", ""): kw["type"] = self.params.get("type", "") with sessionCM() as session: contacts = Contacts.find_by_id(session, contacts_id=contacts_id) if not contacts: return {"status": 0, "message": "contacts不存在!"} contacts.update(session, contacts, **kw) return {"status": 1, "message": "更新成功!"}
def save_contacts(self): logger.info(self.params) user_id = self.current_user.id # self.params.get("user_id", "") name = self.params.get("name", "") origin_id = self.params.get("origin_id") group_id = self.params.get("group_id") m_type = self.params.get("type", "normal") # 可选值 normal, black, white platform = self.params.get("platform" "") kw = dict() if not origin_id: return {"status": 0, "message": "参数:\"origin_id\"缺失!"} if not platform: return {"status": 0, "message": "参数:\"platform\"缺失!"} kw["user_id"] = user_id kw["name"] = name or "" kw["origin_id"] = origin_id kw["group_id"] = group_id or "" kw["type"] = m_type or "" kw["platform"] = platform with sessionCM() as session: contacts = Contacts.create(session, **kw) if contacts: return {"status": 1, "message": "创建成功!"} else: return {"status": 0, "message": "创建失败!"}
def leave_evaluation(self): """ 留下评价 :return: """ evaluation_id = self.params.get("evaluation_id", "") content = self.params.get("content", "") score = self.params.get("score") handler = AliEvaluation(self.shop) if not evaluation_id: return {"status": 0, "message": "缺少evaluation_id!"} if not content: return {"status": 0, "message": "缺少评价内容!"} with sessionCM() as session: evaluation = Evaluation.find_by_id(session, evaluation_id) if not evaluation: return {"status": 0, "message": "该评价不存在,无法回复!"} result = handler.reply_evaluation(evaluation.order_line_item_id, int(score), content) if result.get("isSuccess", ""): Evaluation.update(session, evaluation, seller_content=content) return {"status": 1, "message": "评价成功!"} else: return { "status": 0, "message": "评价失败!", "errors": result.get("Errors", "") }
def update_template(self): logger.info(self.params) kw = {} template_id = self.params.get("template_id", "") if not template_id: return {"status": 0, "data": "必填参数\"template_id\"缺失!"} if self.params.get("title", ""): kw["title"] = self.params.get("title", "") if self.params.get("content", ""): kw["content"] = self.params.get("content", "") if self.params.get("condition", ""): kw["condition"] = self.params.get("condition", "") with sessionCM() as session: template = Template.find_by_id(session, template_id=template_id) if not template: return {"status": 0, "data": "template不存在!"} Template.update(session, template, **kw) return {"status": 1, "data": "更新成功!"}
def select_template(self): logger.info(self.params) template_id = self.params.get("template_id", "") user_id = self.params.get("user_id", "") m_type = self.params.get("type", "") result, tmp = [], [] with sessionCM() as session: if template_id: result = Template.find_by_id(session, template_id) if user_id: result = Template.find_by_user_id(session, user_id) result = [item for item in result if item.type == m_type] if m_type else result if not isinstance(result, list): result = [result] for item in result: tmp.append({ "id": item.id, "user_id": item.user_id, "title": item.title, "content": item.content, "type": item.type, "condition": item.condition, }) return {"status": 1, "data": tmp}
def reply_message(self): """ 回复消息,对应于最新一条消息的回复 需要的参数包括:parent_message_id (被回复的消息ID) , item_id 或是 recipient_id , body :return: """ channel_id = self.params.get("channel_id", "") body = self.params.get("body", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) ticket_id = channel.origin_id handler = WishTicket(self.shop) result = handler.reply_ticket_by_id(ticket_id, body) print "回复 Ticket ID 为 %s " % channel_id print result if result.get("success", ""): # 是否同步消息 sync_handler = SyncWishCustomer(self.shop) sync_handler.execute(ticket_id=ticket_id) return {"status": 1, "message": "回复消息成功!"} else: return { "status": 0, "message": "回复消息失败!", "errors": result.get("message", "") }
def leave_evaluation(self): """ 留下评价 测试的时候 注意是否需要评分 :return: """ evaluation_id = self.params.get("evaluation_id", "") content = self.params.get("content", "") handler = EbayEvaluation(self.shop.site_id, self.shop.account) if not evaluation_id: return {"status": 0, "message": "缺少evaluation_id!"} if not content: return {"status": 0, "message": "缺少评价内容!"} with sessionCM() as session: evaluation = Evaluation.find_by_id(session, evaluation_id) if not evaluation: return {"status": 0, "message": "该评价不存在,无法回复!"} result = handler.leave_feedback( content, evaluation.buyer_id, item_id=evaluation.order_line_item_id.split('-')[0], order_line_item_id=evaluation.order_line_item_id, transaction_id=evaluation.order_line_item_id.split("-")[1] ) if result.get("Ack", "") == "Success": Evaluation.update(session, evaluation, seller_content=content) return {"status": 1, "message": "评价成功!"} else: return {"status": 0, "message": "评价失败!", "errors": result.get("Errors", "")}
def batch_reply_message(self): """ 批量回复消息 :return: """ replys = json.loads(self.params.get("replys", "[]")) handler = EbayMessage(self.shop.site_id, self.shop.account) total = len(replys) success = [] failure = [] with sessionCM() as session: for reply in replys: result = handler.add_message_rtq( parent_message_id=reply["parent_message_id"], item_id=reply["item_id"], recipient_id=reply["recipient_id"], body=reply["body"] ) if result.get("Ack", "") == "Success": success.append(reply) else: failure.append(reply) if len(success) == total: return {"status": 1, "message": "批量回复完成!"} else: return {"status": 0, "message": "部分回复成功!", "success": success, "failure": failure}
def update_configuration(self): logger.info(self.params) kw = {} configuration_id = self.params.get("configuration_id", "") if not configuration_id: return {"status": 0, "data": "必填参数\"configuration_id\"缺失!"} if self.params.get("content", ""): kw["content"] = self.params.get("content", "") if self.params.get("status", ""): kw["status"] = self.params.get("status", "") if self.params.get("condition", ""): kw["condition"] = self.params.get("condition", "") if self.params.get("count", ""): kw["count"] = self.params.get("count", "") with sessionCM() as session: configuration = Configuration.find_by_id( session, configuration_id=configuration_id) if not configuration: return {"status": 0, "data": "configuration不存在!"} configuration.update(session, configuration, **kw) return {"status": 1, "data": "更新成功!"}
def select_group(self): logger.info(self.params) group_id = self.params.get("group_id", "") user_id = self.params.get("user", "") if user_id: user_id = self.current_user.id else: user_id = False result, tmp = [], [] with sessionCM() as session: if group_id: result = Group.find_by_id(session, group_id) if user_id: result = Group.find_by_user_id(session, user_id) if not isinstance(result, list): result = [result] for item in result: tmp.append({ "id": item.id, "user_id": item.user_id, "name": item.name, }) return {"status": 1, "data": tmp}
def sync_message_detail(channel, replies): latest_date = datetime.datetime(1970, 1, 1) is_first_sync = True # 第一次同步直接记录所有信息,根据是否有这个 ticket 的信息 with sessionCM() as session: tmp_msgs = session.query(Message).filter( Message.channel_id == channel.id).all() if tmp_msgs: date_list = [ time.strptime("%Y-%m-%d %H:%M:%s", item.receive_time) for item in tmp_msgs ] latest_date = max(date_list) is_first_sync = False for reply in replies: reply = reply["Reply"] msg_date = reply['date'] msg_timestamp = time.strptime("%Y-%m-%dT%H:%M:%s", msg_date) if not is_first_sync and msg_timestamp <= latest_date: continue print "创建 Message ... " Message.create( session, channel_id=channel.id, origin_id="", external_message_id="", content=reply["message"], image_urls=";".join(reply["image_urls"]), receive_time=reply["date"], source="buyer" if reply["sender"] == "user" else "seller", ) latest_date = time.strptime("%Y-%m-%dT%H:%M:%s", reply["date"]) print "创建完成 ! "
def appeal_to_wish_support(self): """ 将消息上诉给WishSupport处理 参数仅仅需要正确的 ticket id :return: """ ticket_id = self.params.get("ticket_id", "") ticket_handler = WishTicket(self.shop) with sessionCM() as session: channel = Channel.find_by_origin_id(session, ticket_id) if not channel: return {"status": 0, "data": "\"ticket_id\"不存在!"} result = ticket_handler.appeal_support_ticket_by_id( ticket_id=ticket_id) if result.get("success", ""): return {"status": 1, "data": "处理成功!"} else: return { "status": 0, "data": "处理失败!", "errors": result.get("message", "") }
def save_template(self): logger.info(self.params) user_id = self.params.get("user_id", "") title = self.params.get("title", "") content = self.params.get("content") m_type = self.params.get("type") condition = self.params.get("condition") kw = dict() if not user_id: return {"status": 0, "data": "参数:\"user_id\"缺失!"} if not title: return {"status": 0, "data": "参数:\"title\"缺失!"} if not content: return {"status": 0, "data": "\"参数:\"content\"缺失!"} if not m_type: return {"status": 0, "data": "\"参数:\"type\"缺失!"} if not condition: return {"status": 0, "data": "\"参数:\"condition\"缺失!"} kw["user_id"] = user_id kw["title"] = title kw["content"] = content kw["type"] = m_type kw["condition"] = condition with sessionCM() as session: template = Template.create(session, **kw) if template: return {"status": 1, "data": "创建成功!"} else: return {"status": 0, "data": "创建失败!"}
def select_contacts(self): logger.info(self.params) contacts_id = self.params.get("contacts_id", "") m_type = self.params.get("type") group_id = self.params.get("group_id", "") platform = self.params.get("platform", "") result, tmp = [], [] with sessionCM() as session: if contacts_id: result = Contacts.find_by_id(session, contacts_id) else: result = Contacts.find_by_user_id(session, self.current_user.id) result = [ item for item in result if item.platform == platform ] if platform else result result = [item for item in result if item.type == m_type] if m_type else result result = [ item for item in result if item.group_id == group_id ] if group_id else result if not isinstance(result, list): result = [result] for item in result: tmp.append({ "id": item.id, "user_id": item.user_id, "name": item.name, "origin_id": item.origin_id, "group_id": item.group_id, "type": item.type }) return {"status": 1, "data": tmp, "message": ""}
def reply_message(self): """ 回复消息,对应于最新一条消息的回复 需要的参数包括:parent_message_id (被回复的消息ID) , item_id 或是 recipient_id , body :return: """ channel_id = self.params.get("channel_id", "") # recipient_id = self.params.get("buyer_id", "") body = self.params.get("body", "") # msg_source = self.params.get("msg_source", "message_center") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "message": "无对应channel!"} handler = AliMessage(self.shop) result = handler.add_msg(channel_id=channel.origin_id, buyer_id=channel.buyer_id, content=body, msg_sources=channel.msg_source) print result if result.get("isSuccess", ""): # 同步消息 sync_handler = SyncSmtCustomer(self.shop) sync_handler.sync_message_detail(channel.origin_id, msg_source=channel.msg_source) return {"status": 1, "message": "回复消息成功!"} else: return { "status": 0, "message": "回复消息失败!", "errors": result.get("Errors", "") }
def sync_message_list(self, msg_source, current_page=1, page_size=100): """ 同步订单留言 :return: """ with sessionCM() as session: while True: result = self.msg_handler.get_msg_relation_list( msg_source, current_page, page_size) print type(result), len(result) print result if not result["success"]: return # result["exception"] current_page += 1 for relation in result.get("result", []): print relation # 判断当前同步下来的Channel是否存在 chanel = Channel.find_by_origin_id(session, relation["channelId"]) # 若和上次lastMessageId相同,就不用再获取详情 if chanel and relation["lastMessageId"] == chanel[ "last_msg_id"]: continue if len(str(relation["messageTime"])) == 13: last_msg_date_timestamp = long( str(relation["messageTime"])[:-3]) else: last_msg_date_timestamp = relation["messageTime"] # seller_id 只有在卖家发送一条消息之后从summary中获取到,relation["childId"] 只是子账号ID 并不是loginId chanel = Channel.update( session, chanel, shop_id=self.shop.id, seller_id=relation["childId"], seller_name=relation["childName"], buyer_id=relation["otherLoginId"], buyer_name=relation["otherName"], read_stat=relation["readStat"], deal_stat=relation["dealStat"], open_date="", close_date="", closed_by="", flag=relation["rank"], origin_id=relation["channelId"], msg_source=msg_source, relation_type="", relation_id="", last_msg_id=relation["lastMessageId"], last_msg_date=time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime(last_msg_date_timestamp)), last_msg_content=relation["lastMessageContent"]) # sync_smt_customer_detail.delay(self, chanel.id, msg_source) print chanel.id, chanel.seller_id, chanel.seller_name, chanel.last_msg_content yield chanel.id if len(result["result"]) == 0: break
def get_current_user(self): try: user_id = self.session.get("user_id") with sessionCM() as session: user = session.query(User).filter(User.id == user_id).one() return user except Exception, e: logger.info(self.request.headers["X-Real-IP"]) logger.info(e.message)
def _deal_with_result(datas): if isinstance(datas, dict): datas = [datas] print "处理Ticket ... " for ticket in datas: print ticket ticket = ticket["Ticket"] print shop_id kw = { "shop_id": shop_id, "seller_id": ticket["merchant_id"], "seller_name": "", "buyer_id": ticket["UserInfo"]["id"], "buyer_name": ticket["UserInfo"]["name"], "read_stat": "0", "deal_stat": 0 if ticket["state_id"] == '4' else 1, "open_date": ticket["open_date"], "close_date": ticket.get("close-date", ""), "closed_by": "", "flag": "", "msg_source": "", "origin_id": ticket["id"], "relation_id": ticket["transaction_id"], "relation_type": "transaction", "last_msg_date": ticket["last_update_date"], "last_msg_id": "", "last_msg_content": ticket["subject"] + ";" + ticket["sublabel"] } with sessionCM() as session: channel = Channel.find_by_origin_id(session, ticket["id"]) print "更新/生成Ticket ... " channel = Channel.update(session, channel, **kw) print "更新Replies ... " # 直接同步消息内容 self.sync_message_detail(channel, ticket["replies"]) print "更新Replies 完成!"
def sync_awaiting_evaluation_list(self): total_page = 1 current_page = 0 page_size = 100 print "开始同步 ... " while True: current_page += 1 print "current_page: %d " % current_page print "total_pageL %d " % total_page if current_page > total_page: import time time.sleep(3) break result = self.elt_handler.get_awaiting_feedback(current_page=current_page, page_size=page_size) # print result if result.get("Ack") == "Success": items_awaiting_feed_back = result["ItemsAwaitingFeedback"] # print items_awaiting_feed_back total_page = int(items_awaiting_feed_back["PaginationResult"]["TotalNumberOfPages"]) print "tmp_total_page: %s " % total_page if not int(total_page): break transactions = items_awaiting_feed_back["TransactionArray"]["Transaction"] if isinstance(transactions, dict): transactions = [transactions] with sessionCM() as session: for transaction in transactions: t_item = transaction.get("Item", {}) buyer = transaction.get("Buyer", {}) if transaction.get("FeedbackReceived", ""): status = "seller" elif transaction.get("FeedbackLeft", ""): status = "buyer" else: status = "all" evaluation = Evaluation.find_by_order_line_id(session, transaction["OrderLineItemID"]) kw = { "shop_id": self.shop.id, "order_line_item_id": transaction["OrderLineItemID"], "item_id": t_item.get("ItemID", ""), "item_title": t_item.get("Title", ""), "status": status, "buyer_id": buyer.get("UserID", ""), "seller_content": "" } evaluation = Evaluation.update(session, evaluation, **kw) print '-'*60 print evaluation.id, evaluation.buyer_id, evaluation.status, evaluation.order_line_item_id print evaluation.item_id, evaluation.item_title, evaluation.seller_content print "同步完成!"
def _execute_result(results, shop_id): results = results.get("listResult", []) with sessionCM() as session: for result in results: evaluatioin = Evaluation.find_by_order_line_id( session, str(result.get("orderId", ""))) evaluatioin = Evaluation.update( session, evaluation=evaluatioin, order_line_item_id=str(result.get("orderId", "")), shop_id=shop_id) print evaluatioin.order_line_item_id, evaluatioin.shop_id
def delete_configuration(self): logger.info(self.params) user_id = self.params.get("user_id", "") configuration_ids = self.params.get("configuration_id", "").split(";") with sessionCM() as session: if configuration_ids: for configuration_id in configuration_ids: Configuration.remove(session, configuration_id=configuration_id) return {"status": 1, "message": "删除成功!"} return {"status": 0, "message": "删除失败!"}
def sync_smt_customer_list(task_id, shop_id, timestamp): with sessionCM() as session: task = Task.find_by_id(session, task_id) shop = Shop.find_by_id(session, shop_id) handler = SyncSmtCustomer(shop, timestamp) try: handler.execute() task.status = 1 task.remark = timestamp except Exception, e: logger.warning(traceback.format_exc(e)) task.status = -1 finally:
def update_channel_read(self): """ 更新通道为已读状态 参数 channel_id --> channel 的本地ID msgSource --> 消息类型 可选参数(message_center/order_msg) :return: """ channel_id = self.params.get("channel_id", "") with sessionCM() as session: channel = Channel.find_by_id(session, channel_id) if not channel: return {"status": 0, "data": "\"channel_id\"不存在!"} try: with sessionCM() as session: Channel.update(session, channel, {"read_stat", 1}) return {"status": 1, "data": "状态更新成功!"} except Exception, e: logger.error(traceback.format_exc(e)) return {"status": 0, "data": "状态更新失败!"}
def save_configuration(self): logger.info(self.params) shop_id = self.params.get("shop_id", "") content = self.params.get("content", "") status = self.params.get("status", 0) count = 0 condition = self.params.get("condition") m_type = self.params.get("type") kw = dict() with sessionCM() as session: configuration = session.query(Configuration).filter( and_(Configuration.shop_id == shop_id, Configuration.type == type)).one() if configuration: return {} if not shop_id: return {"status": 0, "data": "参数:\"shop_id\"缺失!"} if not content: return {"status": 0, "data": "\"参数:\"content\"缺失!"} if not condition: return {"status": 0, "data": "\"参数:\"condition\"缺失!"} kw["shop_id"] = shop_id kw["content"] = content kw["status"] = status kw["count"] = count kw["condition"] = condition kw["type"] = m_type with sessionCM() as session: configuration = Configuration.create(session, **kw) if configuration: return {"status": 1, "data": "创建成功!"} else: return {"status": 0, "data": "创建失败!"}