Esempio n. 1
0
def subscribe(user_id, topic_id):
    conn = db.connect_torndb_proxy()
    mongo = db.connect_mongo()
    ms = conn.query("select * from topic_message where topicId=%s and active='Y' order by publishTime desc limit 200", topic_id)
    for m in ms:
        process_util.insert_user_message(user_id, m["publishTime"]+datetime.timedelta(hours=-8), topic_message_id=m["id"], _mongo=mongo)
    mongo.close()
    conn.close()
Esempio n. 2
0
def subscribe(user_id, company_id):
    conn = db.connect_torndb_proxy()
    mongo = db.connect_mongo()
    ms = conn.query(
        "select * from company_message where companyId=%s and active='Y' "
        "and publishTime>date_sub(now(),interval 30 day) "
        "order by publishTime desc ", company_id)
    for m in ms:
        process_util.insert_user_message(user_id,
                                         m["publishTime"] +
                                         datetime.timedelta(hours=-8),
                                         company_message_id=m["id"],
                                         _mongo=mongo)
    mongo.close()
    conn.close()
Esempio n. 3
0
def process_one_message(topic_message_id):
    logger.info("process_message topic_message_id: %s", topic_message_id)
    conn = db.connect_torndb_proxy()
    mongo = db.connect_mongo()
    message = conn.get("select * from topic_message where id=%s", topic_message_id)

    flag = message_valid_check(message, mongo, conn)
    if flag is False:
        logger.info("delete message: %s, relateType: %s, relateId: %s", topic_message_id,
                    message["relateType"],
                    message["relateId"])
        # 删除消息
        delete_invalid(message, conn, mongo)
    elif flag == 'A':
        conn.update("update topic_message set active='P',modifyTime=now(), modifyUser=1078"
                    " where id=%s", topic_message_id)
        mongo.message.user_message.delete_many({"topicMessageId": topic_message_id})
    else:
        if message is not None and message["active"] == 'Y':
            # topic_message_sector_rel
            patch_sector(message)

            # 推送给用户

            topic = conn.get("select * from topic where id=%s", message["topicId"])
            subscriptions = conn.query("select * from user_topic_subscription where (active is null or active='Y') and "
                                       "topicId=%s", topic["id"])
            # test_users = process_util.get_test_users()
            # for userId in test_users:
            #     subscriptions.append({"userId": userId})

            for subscription in subscriptions:
                user_id = int(subscription["userId"])
                send = True
                if topic["sectorRelevant"] == "Y":
                    send = has_sector(topic_message_id, user_id)

                if send is True:
                    valid = True
                    if topic["onlyForInvestor"] == "Y":
                        user = conn.get("select * from user where id=%s", user_id)
                        if user is None or user["verifiedInvestor"] != 'Y':
                            valid = False

                    if valid is True:
                        flag = process_util.insert_user_message(user_id, message["publishTime"] + datetime.timedelta(hours=-8),
                                                                topic_message_id=topic_message_id, _mongo=mongo)
                        if flag:
                            # 只推送10分钟之内的消息
                            n = datetime.datetime.now() + datetime.timedelta(minutes=-10)
                            if n < message["publishTime"]:
                                # process_util.send_iOS_message(user_id, message, "topic", _conn=conn)
                                # process_message.send_message(user_id, "topic")
                                process_util.send_iOS_content_available(user_id, "topic", _conn=conn)

            conn.update("update topic_message set pushStatus=1 where id=%s", topic_message_id)
        elif message is not None and message["active"] == 'P':
            delete_user_message(topic_message_id)
    mongo.close()
    conn.close()
Esempio n. 4
0
def _process(investor_message_id, _mongo=None, _conn=None):
    if _conn is None:
        conn = db.connect_torndb_proxy()
    else:
        conn = _conn

    if _mongo is None:
        mongo = db.connect_mongo()
    else:
        mongo = _mongo

    logger.info("investor_message_id: %s", investor_message_id)
    message = conn.get("select * from investor_message where id=%s",
                       investor_message_id)
    flag = message_valid_check(message, mongo, conn)
    if flag is False:
        logger.info("should delete message: %s, relateType: %s, relateId: %s",
                    investor_message_id, message["relateType"],
                    message["relateId"])
        # 删除消息
        # delete(company_message_id, _mongo=mongo)
        # conn.update("update company_message set active='N', pushStatus=1 where id=%s", company_message_id)
    else:
        if message["active"] == 'P':
            flag = publish_check(message, mongo, conn)
            if flag:
                message["active"] = 'Y'
                conn.update(
                    "update investor_message set active='Y',modifyTime=now() where id=%s",
                    investor_message_id)

        if message["active"] == 'Y':
            logger.info("publish investor_message_id: %s", investor_message_id)
            # 推送给用户
            subscriptions = conn.query(
                "select * from user_investor_subscription where (active is null or active='Y') and "
                "investorId=%s", message["investorId"])
            test_users = process_util.get_test_users()
            for userId in test_users:
                subscriptions.append({"userId": userId})

            for subscription in subscriptions:
                user_id = int(subscription["userId"])
                flag = process_util.insert_user_message(
                    user_id,
                    message["publishTime"] + datetime.timedelta(hours=-8),
                    investor_message_id=investor_message_id,
                    _mongo=mongo)
                if flag:
                    n = datetime.datetime.now() + datetime.timedelta(
                        minutes=-10)
                    if n < message["publishTime"]:
                        process_util.send_iOS_content_available(user_id,
                                                                "investor",
                                                                _conn=conn)

            # 推送给user_message2
            track_investor_message.process(conn, mongo, investor_message_id)

            conn.update("update investor_message set pushStatus=1 where id=%s",
                        investor_message_id)
        else:
            # logger.info("delete company_message_id: %s", company_message_id)
            # TODO 重复删除
            # delete(company_message_id, _mongo=mongo)
            pass

    if _mongo is None:
        mongo.close()
    if _conn is None:
        conn.close()
Esempio n. 5
0
def _process(company_message_id, _mongo=None, _conn=None):
    if _conn is None:
        conn = db.connect_torndb_proxy()
    else:
        conn = _conn

    message = conn.get("select * from company_message where id=%s",
                       company_message_id)
    if message is None or message["relateType"] == 60:
        if _conn is None:
            conn.close()
        return

    if _mongo is None:
        mongo = db.connect_mongo()
    else:
        mongo = _mongo

    flag = message_valid_check(message, mongo, conn)
    if flag is False:
        logger.info("should delete message: %s, relateType: %s, relateId: %s",
                    company_message_id, message["relateType"],
                    message["relateId"])
        # 删除消息
        # delete(company_message_id, _mongo=mongo)
        # conn.update("update company_message set active='N', pushStatus=1 where id=%s", company_message_id)
    else:
        process_util.audit_company_from_company_message(
            message["companyId"],
            message["trackDimension"],
            message["id"],
            message["relateType"],
            message["createTime"],
            _mongo=mongo,
            _conn=conn)
        # if message["relateType"] == 60:
        #     process_util.audit_companies(message["relateId"], message["trackDimension"], message["id"],
        #                                  message["relateType"], message["createTime"], _mongo=mongo, _conn=conn)

        if message["active"] == 'P':
            flag = publish_check(message, mongo, conn)
            if flag:
                message["active"] = 'Y'
                publish_time = message["publishTime"]
                #7天内publishTime更新为现在,7天外的不变
                # if publish_time + datetime.timedelta(days=7) > datetime.datetime.now():
                #     publish_time = datetime.datetime.now()
                #     message["publishTime"] = publish_time
                conn.update(
                    "update company_message set active='Y',modifyTime=now(), publishTime=%s where id=%s",
                    publish_time, company_message_id)

        if message["active"] == 'Y':
            logger.info("publish company_message_id: %s", company_message_id)
            # 推送给用户
            if message["relateType"] == 80:
                subscriptions = []
                test_users = process_util.get_test_users()
                for userId in test_users:
                    subscriptions.append({"userId": userId})
            else:
                subscriptions = conn.query(
                    "select * from user_company_subscription where (active is null or active='Y') and "
                    "companyId=%s", message["companyId"])

            for subscription in subscriptions:
                user_id = int(subscription["userId"])
                flag = process_util.insert_user_message(
                    user_id,
                    message["publishTime"] + datetime.timedelta(hours=-8),
                    company_message_id=company_message_id,
                    _mongo=mongo)
                if flag:
                    n = datetime.datetime.now() + datetime.timedelta(
                        minutes=-10)
                    if n < message["publishTime"]:
                        # process_util.send_iOS_message(user_id, message, "company", _conn=conn)
                        # process_message.send_message(user_id, "company")
                        process_util.send_iOS_content_available(user_id,
                                                                "company",
                                                                _conn=conn)

            # 推送给user_message2
            track_company_message.process(conn, mongo, company_message_id)

            conn.update("update company_message set pushStatus=1 where id=%s",
                        company_message_id)

            # if message["relateType"] == 80:
            #     exit(0)  # Test
        else:
            # logger.info("delete company_message_id: %s", company_message_id)
            # TODO 重复删除
            # delete(company_message_id, _mongo=mongo)
            pass

    if _mongo is None:
        mongo.close()
    if _conn is None:
        conn.close()