Esempio n. 1
0
    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": "打标签失败"}
Esempio n. 2
0
    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": "状态更新失败!"}
Esempio n. 3
0
    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": "状态更新失败!"}
Esempio n. 4
0
    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": "打标签失败"}
Esempio n. 5
0
    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", "")}
Esempio n. 6
0
    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", "")
            }
Esempio n. 7
0
    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": "更新成功!"}
Esempio n. 8
0
    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": "创建失败!"}
Esempio n. 9
0
    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", "")
                }
Esempio n. 10
0
    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": "更新成功!"}
Esempio n. 11
0
    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}
Esempio n. 12
0
    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", "")
            }
Esempio n. 13
0
    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", "")}
Esempio n. 14
0
    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}
Esempio n. 15
0
    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": "更新成功!"}
Esempio n. 16
0
    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}
Esempio n. 17
0
    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 "创建完成 ! "
Esempio n. 18
0
    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", "")
            }
Esempio n. 19
0
    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": "创建失败!"}
Esempio n. 20
0
    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": ""}
Esempio n. 21
0
    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", "")
            }
Esempio n. 22
0
    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
Esempio n. 23
0
 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)
Esempio n. 24
0
 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 完成!"
Esempio n. 25
0
    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 "同步完成!"
Esempio n. 26
0
 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
Esempio n. 27
0
    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": "删除失败!"}
Esempio n. 28
0
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:
Esempio n. 29
0
    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": "状态更新失败!"}
Esempio n. 30
0
    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": "创建失败!"}