Exemple #1
0
 def _execute_time(self):
     start_time = OHHODatetime.get_current_timestamp()
     result = func(self)
     end_time = OHHODatetime.get_current_timestamp()
     OHHOLog.print_log(end_time)
     OHHOLog.print_log(start_time)
     OHHOLog.print_log(end_time - start_time)
     return result
    def send(self, user_id, friend_user_id, content, type):
        result = Result.result_success()

        data = dict()
        data["account_id"] = user_id
        data["another_account_id"] = friend_user_id
        data["message"] = content
        success = self.message.add(data)
        if success:
            OHHOLog.print_log("add message to database successfully!")
        else:
            OHHOLog.print_log("add message to database failed!")
        result["add2db"] = success
        message = dict()
        msg = dict()
        msg["content"] = content
        msg["user_id"] = user_id
        msg["type"] = type
        msg["current_timestamp"] = OHHODatetime.get_current_timestamp()
        message["msg"] = msg
        success = self.send_message.send_attach_message(
            user_id, friend_user_id, OHHOOperation.dict2json(message))
        OHHOLog.print_log(success)
        result["send2im"] = success
        return result
Exemple #3
0
 def get_near_map(self, user_id, delta_time=5 * 1000):
     timestamp = OHHODatetime.get_current_timestamp()
     timestamp = timestamp - delta_time
     query = self.map.filter_by_user(user_id)
     query = self.map.get_great_than_equal_timestamp(query, timestamp)
     query = self.map.order_by_id_desc(query)
     return query
Exemple #4
0
 def _backstage_authenticate(self):
     OHHOLog.print_log("backstage authentication start")
     if self.current_user:
         OHHOLog.print_log("backstage authentication current user:"******"backstage authentication user")
             user_id = user.id
             token_from_db = token_instance.get_by_user_id(user_id)
             if token_from_db:
                 current_timestamp = OHHODatetime.get_current_timestamp()
                 if token_from_db.timestamp and current_timestamp - token_from_db.timestamp > 20 * 60 * 1000:
                     OHHOLog.print_log("backstage authentication timeout")
                     OHHOLog.print_log(current_timestamp)
                     OHHOLog.print_log(token_from_db.timestamp)
                     token_instance.delete(token_from_db)
                     self.clear_cookie("username")
                     return self.redirect("/backstage/login/")
                 else:
                     OHHOLog.print_log("backstage authentication success")
                     token_instance.update(token_from_db, dict())
                     result = func(self)
             else:
                 self.clear_cookie("username")
                 return self.redirect("/backstage/login/")
         else:
             self.clear_cookie("username")
             return self.redirect("/backstage/login/")
     else:
         OHHOLog.print_log("backstage authentication no username")
         return self.redirect("/backstage/login/")
     return result
Exemple #5
0
 def get(self, apply_id):
     """
     根据请求ID获取最新的配对请求,
     并且这个请求只在30分钟内有效
     :param data_dict:
     :return:
     """
     if apply_id:
         agree = self.agree
         query = agree.filter_by_apply(apply_id)
         query = agree.order_by_id_desc(query)
         query = agree.first(query)
         if query:
             # 因为配对同意只能添加不能更改(没有地方会更改),
             # 所以这里的timestamp是添加时的timestamp
             if query.timestamp + VALID_INTERVAL_MILLISECOND > OHHODatetime.get_current_timestamp(
             ):
                 return query
             else:
                 OHHOLog.print_log(VALID_FRIEND_AGREE_NOT_EXIST)
         else:
             OHHOLog.print_log(FRIEND_AGREE_NOT_EXIST)
     else:
         OHHOLog.print_log(PARAMETERS_ARE_INVALID)
     return None
Exemple #6
0
    def return_map_information(self, friend_user_id):
        result = dict()
        result["is_timeout"] = 0
        user = self.user.get_by_id(friend_user_id)
        if user:
            map_information = self.user.get_user_map_information_from_redis(user.username)
            map_information_dict = RedisDB.data2dict(map_information)
            if map_information_dict:
                map_information_dict["longitude"] = float(map_information_dict.get("longitude", 0))
                map_information_dict["latitude"] = float(map_information_dict["latitude"])
                map_information_dict["altitude"] = float(map_information_dict["altitude"])
                map_information_dict["accuracy"] = float(map_information_dict["accuracy"])
                map_information_dict["angle"] = float(map_information_dict["angle"])
                map_information_dict["satellite_number"] = int(map_information_dict["satellite_number"])

                now = OHHODatetime.get_current_timestamp()

                if map_information_dict["timestamp"] > 0 and now - map_information_dict["timestamp"] > 30000:
                    result["is_timeout"] = 1
                    result["timestamp"] = now
                    result["last_timestamp"] = map_information_dict["timestamp"]
                else:
                    information = dict()
                    information["user_id"] = friend_user_id
                    information["latitude"] = float(map_information_dict["latitude"])
                    information["longitude"] = float(map_information_dict["longitude"])
                    information["accuracy"] = float(map_information_dict["accuracy"])
                    information["supplier"] = map_information_dict["supplier"]
                    if map_information_dict.get("floor", None):
                        information["floor"] = map_information_dict["floor"]
                    information["address"] = map_information_dict["address"]
                    information["timestamp"] = now
                result["information"] = map_information_dict

        return result
Exemple #7
0
 def get(self, one_user_id, another_user_id):
     """
     根据发起人和接收人获取最新的配对请求,
     并且这个请求只在30分钟内有效
     :param data_dict:
     :return:
     """
     if one_user_id and another_user_id:
         apply = self.apply
         query = apply.get_query()
         query = apply.get_by_one_user(query, one_user_id)
         query = apply.get_by_another_user(query, another_user_id)
         query = apply.order_by_id_desc(query)
         query = apply.first(query)
         if query:
             # 因为配对请求只能添加不能更改(没有地方会更改),
             # 所以这里的timestamp是添加时的timestamp
             if query.timestamp + VALID_INTERVAL_MILLISECOND > OHHODatetime.get_current_timestamp():
                 return query
             else:
                 OHHOLog.print_log(VALID_MATCH_APPLY_NOT_EXIST)
         else:
             OHHOLog.print_log(MATCH_APPLY_NOT_EXIST)
     else:
         OHHOLog.print_log(PARAMETERS_ARE_INVALID)
     return None
 def is_valid_instance(self, instance):
     if instance:
         timestamp = OHHODatetime.get_current_timestamp()
         if instance.timestamp + VALID_INTERVAL_MILLISECOND < timestamp:
             return False
         return True
     else:
         return False
Exemple #9
0
 def get_apply_friend_list(self, user_id):
     timestamp = int(OHHODatetime.get_current_timestamp())
     query = self.apply.get_query()
     query = self.apply.get_by_another_user(query, user_id)
     # query = self.friend_get_apply_list(query)
     query = self.apply.get_great_than_equal_timestamp(
         query, timestamp - ONE_DAY_MICRO_SECONDS)
     # query = self.get_valid_relation(query)
     return query
Exemple #10
0
    def get_countdown(self, apply_id, total=TOTAL_TIME):
        result = dict()
        result["current_stamp"] = OHHODatetime.get_current_timestamp()
        duplex_agree = self.duplex_agree.get_by_apply(apply_id)
        current_timestamp = OHHODatetime.get_current_timestamp()

        if duplex_agree and duplex_agree.timestamp:
            end_timestamp = total + duplex_agree.timestamp
            passed = current_timestamp - duplex_agree.timestamp
            result["start_timestamp"] = duplex_agree.timestamp
            result["end_timestamp"] = end_timestamp
            result["countdown"] = TOTAL_TIME - passed
            result["is_both_agree"] = True
        else:
            result["start_timestamp"] = 0
            result["end_timestamp"] = 0
            result["countdown"] = 0
            result["is_both_agree"] = False
        return result
 def is_valid_instance(self, instance):
     # OHHOLog.print_log("start")
     if instance:
         # OHHOLog.print_log("start")
         # OHHOLog.print_log(instance.id)
         timestamp = OHHODatetime.get_current_timestamp()
         if instance.timestamp + VALID_INTERVAL_MILLISECOND < timestamp:
             return False
         return True
     else:
         return False
Exemple #12
0
 def get_by_apply(self, apply_id_list):
     result = list()
     if apply_id_list:
         query = self.refuse.find_by_apply(apply_id_list)
         query = self.refuse.order_by_id_desc(query)
         query = self.refuse.first(query)
         if not self.refuse.is_empty(query):
             for q in query:
                 if q.timestamp + VALID_INTERVAL_MILLISECOND > OHHODatetime.get_current_timestamp(
                 ):
                     result.append(q)
     return result
Exemple #13
0
 def get_header():
     header = dict()
     nonce = OHHORandom.get_nonce()
     current_time = str(OHHODatetime.get_current_timestamp())
     app_secret = APP_SECRET
     app_key = APP_KEY
     check_sum = LogicHeader.get_check_sum(app_secret, nonce, current_time)
     header[HEADER_NAME_NONCE] = nonce
     header[HEADER_NAME_CURRENT_TIME] = current_time
     header[HEADER_NAME_APP_KEY] = app_key
     header[HEADER_NAME_NONCE] = nonce
     header[HEADER_NAME_CHECK_SUM] = check_sum
     return header
Exemple #14
0
 def clear_outdated_user(self):
     timestamp = OHHODatetime.get_current_timestamp()
     timestamp = timestamp - 1 * 60 * 1000
     query = self.match_online.get_query()
     delete_query = self.match_online.get_less_than_timestamp(
         query, timestamp)
     success = self.match_online.delete_some(delete_query)
     if success:
         OHHOLog.print_log(
             Result.result_success("clear online outdated user"))
     else:
         OHHOLog.print_log(
             Result.result_failed("clear online outdated user"))
Exemple #15
0
    def find_device_position(self, identity_id):
        result = dict()
        data = list()
        circle = dict()
        circle["longitude"] = -1
        circle["latitude"] = -1
        circle["radius"] = -1
        self.device.set_identity(identity_id)
        device = self.device.get_by_identity()
        if device:
            relation = self.relation.get_by_device(device.id)
            if relation:
                query = self.map.get_by_user(relation.user_id)
                query = self.map.order_by_id_desc(query)
                first = self.map.first(query)
                if first:
                    current_timestamp = OHHODatetime.get_current_timestamp()
                    if current_timestamp < first.timestamp + FIND_DEVICE_TIMESTAMP_DELTA:
                        circle["longitude"] = first.longitude
                        circle["latitude"] = first.latitude
                        sensor_query = self.sensor.get_query()
                        sensor_query = self.sensor.get_by_device(
                            sensor_query, device.id)
                        sensor_query = self.sensor.get_by_user(
                            sensor_query, relation.user_id)
                        sensor_query = self.sensor.order_by_id_desc(
                            sensor_query)
                        first = self.sensor.first(sensor_query)
                        if first:
                            if current_timestamp < first.timestamp + FIND_DEVICE_TIMESTAMP_DELTA:
                                result = Result.result_success()
                                circle["radius"] = first.distance
                            else:
                                result = Result.result_failed(
                                    "device sensor is outdated!")
                        else:
                            result = Result.result_failed("no device sensor!")
                    else:
                        result = Result.result_failed(
                            "map position is outdated!")
                else:
                    result = Result.result_failed("no map position!")
            else:
                result = Result.result_failed("no user binds the device!")
        else:
            result = Result.result_failed("no such device!")
        data.append(circle)
        result["data"] = data

        return result
    def get(self, user_id, base_url):
        data = list()
        result = Result.result_success()
        user = self.user.get_by_id(user_id)
        current_timestamp = OHHODatetime.get_current_timestamp()
        timestamp = RedisDB.hash_get(REDIS_APPLY_TIMESTAMP_NAME, user_id)

        if not timestamp:
            timestamp = current_timestamp - 5 * 60 * 1000

        OHHOLog.print_log(timestamp)
        RedisDB.hash_set(REDIS_APPLY_TIMESTAMP_NAME, user_id,
                         current_timestamp)
        # OHHOLog.print_log("start")
        # OHHOLog.print_log(user_id)
        if user:
            # OHHOLog.print_log("user")
            apply_you = self.apply.polling_get_by_another(
                user, int(timestamp), current_timestamp)
            OHHOLog.print_log(current_timestamp)
            OHHOLog.print_log(current_timestamp)
            # OHHOLog.print_log(int(timestamp))
            # OHHOLog.print_log(current_timestamp)
            # OHHOLog.print_log(self.apply.apply.is_empty(apply_you))
            if not self.apply.apply.is_empty(apply_you):
                OHHOLog.print_log("has valid apply!")
                for apply in apply_you:
                    OHHOLog.print_log(apply.id)
                    if self.meet.has_agree_apply(
                            apply.one_user_id) or self.meet.has_agree_apply(
                                apply.another_user_id):
                        # OHHOLog.print_log("has agree apply!")
                        continue

                    if self.meet.has_valid_apply(apply.one_user_id,
                                                 apply.another_user_id):
                        # OHHOLog.print_log("has valid apply 2!")
                        OHHOLog.print_log(apply.id)
                        user_dict = self.user.get_user_basic_information(
                            apply.one_user_id, base_url)
                        if user_dict:
                            data.append(user_dict)
        if data:
            # OHHOLog.print_log("has data")
            # OHHOLog.print_log(data)
            result["data"] = data
        else:
            pass
            OHHOLog.print_log("not data")
        return result
Exemple #17
0
 def add_without_commit(model, obj_dict):
     try:
         instance = model()
         obj_dict["created_at"] = OHHODatetime.get_utc_now()
         obj_dict["changed_at"] = OHHODatetime.get_utc_now()
         if not obj_dict.get("timestamp", None):
             obj_dict["timestamp"] = OHHODatetime.get_current_timestamp()
         for key, value in obj_dict.items():
             Operation.set_attribute(instance, key, value)
         session.add(instance)
         return instance
     except Exception as ex:
         OHHOLog.print_log(ex)
         return None
    def set_match_switch(self, user_id, is_match):
        published = self.published.get_the_last_by_user(user_id)
        if published:
            current_timestamp = OHHODatetime.get_current_timestamp()
            if published.timestamp + PUBLISHED_TIMESTAMP >= current_timestamp:
                result = Result.result_published()
                result["rest"] = PUBLISHED_TIMESTAMP - (current_timestamp -
                                                        published.timestamp)
                return result
            else:
                self.published.delete(published)

        configuration = self.configuration.get_by_user(user_id)
        if configuration:
            if is_match:
                success = self.configuration.open_match(configuration)
                if success:
                    result = Result.result_success("open match successfully!")
                else:
                    result = Result.result_failed("open match failed!")
            else:
                success = self.configuration.close_match(configuration)
                if success:
                    result = Result.result_success("close match successfully!")
                else:
                    result = Result.result_failed("close match failed!")
        else:
            data_dict = dict()
            data_dict["user_id"] = user_id
            data_dict["is_switch"] = is_match
            success = self.configuration.add(data_dict)
            if is_match:
                if success:
                    result = Result.result_success(
                        "add open match successfully!")
                else:
                    result = Result.result_failed("add open match failed!")
            else:
                if success:
                    result = Result.result_success(
                        "add close match successfully!")
                else:
                    result = Result.result_failed("add close match failed!")

        return result
    def add_icon(self, user_id, icon_id, icon, is_head_sculpture, base_url):
        # result = Result.result_failed("default failed")
        # OHHOLog.print_log(icon)
        if icon:
            now = OHHODatetime.get_now()
            path = "static/user/icon/%d/%d/%d/" % (now.year, now.month,
                                                   now.day)
            os.makedirs(path, exist_ok=True)
            img = icon[0]
            timestamp = OHHODatetime.get_current_timestamp()
            name = str(user_id) + "_" + str(timestamp) + ".png"
            thumbnail_name = str(user_id) + "_" + str(
                timestamp) + "_thumbnail.png"
            path_name = path + name
            thumbnail_path_name = path + thumbnail_name
            with open(path_name, 'wb') as f:
                f.write(img["body"])
            self.compress_icon(path_name, thumbnail_path_name)

            icon_object = self.user.user_icon.get_by_id(icon_id)
            data = dict()
            data["icon"] = path_name
            data["thumbnail"] = thumbnail_path_name
            data["is_head_sculpture"] = is_head_sculpture

            if icon_object:
                self.user.user_icon.update_without_commit(icon_object, data)
            else:
                data["user_id"] = user_id
                self.user.user_icon.add_without_commit(data)

            result = Result.result_success()
            result["url"] = base_url + path_name
            result["thumbnail_url"] = base_url + thumbnail_path_name
        else:
            result = Result.result_failed("no image file")
            result["url"] = ""
            icon_object = self.user.user_icon.get_by_id(icon_id)
            if icon_object:
                data = dict()
                data["icon"] = ""
                data["thumbnail"] = ""
                data["is_head_sculpture"] = 0
                self.user.user_icon.update_without_commit(icon_object, data)
        OHHOLog.print_log(result)
Exemple #20
0
    def upload_map_position(self, user_id, map_information, apply_id, base_url, timestamp=0):
        # 上传地图坐标,只保存最新的坐标
        information = dict()
        user = self.user.get_by_id(user_id)
        longitude = float(map_information.get("longitude", 0))
        latitude = float(map_information.get("latitude", 0))
        if user:
            if map_information:
                geohash_code = OHHOGeohash.get(latitude, longitude, 6)
                map_information["geohash_code"] = geohash_code
                map_information["timestamp"] = OHHODatetime.get_current_timestamp()
                map_information["user_id"] = user_id
                self.user.set_user_map_information(user.username, map_information)
                self.user.add_user_geo_position(longitude, latitude, user.username)
                self.map.add(map_information)

        self_state, apply_id = self.meet.get_user_state_by_apply_and_user(apply_id, user_id)
        friend_user_id = self.meet.get_another_user_id(apply_id, user_id)
        friend_state, apply_id = self.meet.get_user_state_by_apply_and_user(apply_id, friend_user_id)
        self_state, apply_id = self.meet.get_user_state_by_apply_and_user(apply_id, user_id)

        if friend_state == PUSH_STATE_TYPE_END_MEET or self_state == PUSH_STATE_TYPE_END_MEET:
            information["information"] = {"apply_id": int(apply_id)}
        else:
            information = self.return_map_information(friend_user_id)
            if information.get("information", ""):
                information["information"]["apply_id"] = int(apply_id)
                map_instance = Map()
                information["information"]["orientation"] = map_instance.main(user_id, friend_user_id)
                information["information"]["nearest_poi_name"] = AMAP.get_nearest_poi_name_interface(longitude,
                                                                                                     latitude)
            else:
                information["information"] = {"apply_id": int(apply_id)}

        result = Result.result_success()
        apply_id = int(apply_id)
        temp = self.meet.get_countdown(apply_id)
        result = OHHOOperation.dict_add_dict(result, temp)

        result["data"] = information

        return result
    def add_user_icon(user_id, image_file, base_url, image_sequence):
        image_sequence = int(image_sequence)
        now = OHHODatetime.get_now()
        path = "static/user/icon/%d/%d/%d/" % (now.year, now.month, now.day)
        os.makedirs(path, exist_ok=True)
        if image_file:
            img = image_file[0]
            timestamp = OHHODatetime.get_current_timestamp()
            name = str(user_id) + "_" + str(timestamp) + ".png"
            path_name = path + name
            with open(path_name, 'wb') as f:
                f.write(img["body"])
            result = Result.result_success()
            instance = DBOHHOUserIcon()
            user_icon = instance.get_by_user(user_id)
            if user_icon:
                if image_sequence == 0:
                    instance.update(user_icon, {"first": path_name})
                elif image_sequence == 1:
                    instance.update(user_icon, {"second": path_name})
                elif image_sequence == 2:
                    instance.update(user_icon, {"third": path_name})
                else:
                    instance.update(user_icon, {"fourth": path_name})
            else:
                if image_sequence == 0:
                    instance.add({"first": path_name, "user_id": user_id})
                elif image_sequence == 1:
                    instance.add({"second": path_name, "user_id": user_id})
                elif image_sequence == 2:
                    instance.add({"third": path_name, "user_id": user_id})
                else:
                    instance.add({"fourth": path_name, "user_id": user_id})

            result["url"] = base_url + path_name
            if image_sequence == 0:
                UpdateUserInfo.update_user_info(user_id, icon=base_url + path_name)
        else:
            result = Result.result_failed("no image file")
            result["url"] = ""
        return result
Exemple #22
0
 def add_group_and_page(self, permission_dict, group_id):
     timestamp = OHHODatetime.get_current_timestamp()
     permission_dict["timestamp"] = timestamp
     OHHOLog.print_log(permission_dict)
     if not self.page_permission.get_by_timestamp(timestamp) and group_id:
         success = self.page_permission.add(permission_dict)
         if success:
             permission = self.page_permission.get_by_timestamp(timestamp)
             if permission:
                 data = dict()
                 data["group_id"] = group_id
                 data["page_permission_id"] = permission.id
                 success = self.group_and_page.add(data)
                 if success:
                     return "添加成功"
                 else:
                     return "添加页面权限成功,但未绑定(请重新添加)"
         else:
             return "添加失败"
     else:
         return "参数不正确或者其他人和你同时添加,请重新添加"
Exemple #23
0
 def update_match_online(self, user_id):
     timestamp = OHHODatetime.get_current_timestamp()
     instance = self.match_online.get_by_user(user_id)
     if instance:
         success = self.match_online.update(instance,
                                            {"timestamp": timestamp})
         if success:
             OHHOLog.print_log(
                 Result.result_success("update online for user %d" %
                                       (int(user_id))))
         else:
             OHHOLog.print_log(
                 Result.result_failed("update online for user %d" %
                                      (int(user_id))))
     else:
         success = self.match_online.add({"user_id": user_id})
         if success:
             OHHOLog.print_log(
                 Result.result_success("add online for user %d" %
                                       (int(user_id))))
         else:
             OHHOLog.print_log(
                 Result.result_failed("add online for user %d" %
                                      (int(user_id))))
 def get_valid_timestamp(self):
     timestamp = OHHODatetime.get_current_timestamp()
     return timestamp - VALID_INTERVAL_MILLISECOND
    def parse_parameters(self, data):
        """
        数据结构
        {
            "list": [
                {
                    "adCode": "110105",
                    "adName": "朝阳区",
                    "businessArea": "酒仙桥",
                    "cityCode": "010",
                    "distance": 32,
                    "img1": "http://store.is.autonavi.com/showpic/1c14d394cf5036a4418c92ec8d1bcbe7",
                    "img2": "http://store.is.autonavi.com/showpic/21122e8fcbca2e979b9089068b3a1c8e",
                    "img3": "http://store.is.autonavi.com/showpic/ce8c7fe35460bc58c4b37f59ff2b0812",
                    "poiId": "B0FFHVITFC",
                    "provinceCode": "110000",
                    "provinceName": "北京市",
                    "snippet": "酒仙桥路18号颐堤港LG层LG-12",
                    "tel": "010-64318399",
                    "title": "美希亚弁当(颐堤港)",
                    "typeCode": "050202",
                    "typeDes": "餐饮服务;外国餐厅;日本料理"
                },
                {
                    "adCode": "110105",
                    "adName": "朝阳区",
                    "businessArea": "酒仙桥",
                    "cityCode": "010",
                    "distance": 34,
                    "poiId": "B0FFI2DTOL",
                    "provinceCode": "110000",
                    "provinceName": "北京市",
                    "snippet": "颐堤港2层L273",
                    "tel": "",
                    "title": "弗萨塔可",
                    "typeCode": "050100",
                    "typeDes": "餐饮服务;中餐厅;中餐厅"
                }
            ],
            "name": "颐提港",
           "longitude": 116.490807
            "latitude": 39.97005
        }
        :param rssi_parameters:
        :return:
        """
        data_dict = OHHOOperation.json2dict(data)
        data = list()
        if data_dict:
            name = data_dict["name"]
            longitude = data_dict["longitude"]
            latitude = data_dict["latitude"]
            phone = data_dict["phone"]
            the_list = data_dict["list"]
            for d in the_list:
                temp = d
                temp["name"] = name
                temp["longitude"] = longitude
                temp["latitude"] = latitude
                temp["phone"] = phone
                temp["timestamp"] = OHHODatetime.get_current_timestamp()

                data.append(temp)

        return data
Exemple #26
0
    def agree_meet(self, user_id, friend_user_id, apply_id, base_url):
        """
        同意见面
        1. 两个人都没有同意的申请
        2. 对方有有效的申请
        :param user_id: 用户ID
        :param friend_user_id: 另一用户ID
        :return:
        """
        user_id = int(user_id)
        friend_user_id = int(friend_user_id)
        apply_id = int(apply_id)

        function = "agree meet"
        apply = self.meet.get_apply_by_id(apply_id)

        result = Result.result_success()
        result["current_timestamp"] = OHHODatetime.get_current_timestamp()

        if apply:
            # 是否有有效的申请
            is_apply_agreeable = self.meet.is_apply_agreeable(apply, user_id)
            if is_apply_agreeable:
                # 本人同意见面
                self.meet.add_agree(apply_id, user_id)

                # 获取另一人的user_id
                another_user_id = apply.one_user_id if apply.another_user_id == user_id else apply.another_user_id
                # 另一人是否同意
                is_another_agreed = self.meet.is_apply_agreed(
                    apply_id, another_user_id)

                if is_another_agreed:
                    OHHOLog.print_log("another agreed: %d" % (another_user_id))
                    one_user_map_data = self.user.get_user_map_information(
                        user_id)
                    another_user_map_data = self.user.get_user_map_information(
                        another_user_id)
                    if one_user_map_data and another_user_map_data:
                        self.meet.add_duplex_agree(one_user_map_data,
                                                   another_user_map_data,
                                                   apply_id)
                    # 另一人是否有空(是否见面结束)
                    # is_another_not_free = self.meet.get_apply_id_list_by_user_from_meeting(another_user_id)
                    state, nothing_id = self.meet.get_user_state(
                        another_user_id)
                    OHHOLog.print_log("user state: %d" % (int(state)))
                    if state != PUSH_STATE_TYPE_END_MEET:

                        OHHOLog.print_log("the user is %d, and he is busy" %
                                          (another_user_id))
                        OHHOLog.print_log("and his state is %d" % state)
                        # 没空 就把对方的ID写入到双方都同意的redis缓存中
                        self.meet.add_duplex_agree2redis(
                            user_id, another_user_id, apply_id)
                        # self.meet.add_duplex_agree2redis(another_user_id, str(user_id) + "," + str(apply_id))
                    else:
                        OHHOLog.print_log("both agree")
                        # 有空 向双方发送推送
                        type = PUSH_STATE_TYPE_AGREE_MEET
                        OHHOLog.print_log("push %d to %d, apply id is %d" %
                                          (another_user_id, user_id, apply_id))
                        result = self.push_agree(user_id, another_user_id,
                                                 apply_id, base_url, function,
                                                 type)
                        OHHOLog.print_log(result)

                        OHHOLog.print_log("push %d to %d, apply id is %d" %
                                          (user_id, another_user_id, apply_id))
                        result = self.push_agree(another_user_id, user_id,
                                                 apply_id, base_url, function,
                                                 type)
                        OHHOLog.print_log(result)

                        # 添加两个人的状态为见面中
                        self.meet.add_meeting(apply_id, user_id)
                        self.meet.add_meeting(apply_id, another_user_id)
                else:
                    OHHOLog.print_log("single agree")
                    type = PUSH_STATE_TYPE_SINGLE_AGREE_MEET
                    OHHOLog.print_log("push %d to %d, apply id is %d" %
                                      (user_id, another_user_id, apply_id))
                    result = self.push_agree(another_user_id, user_id,
                                             apply_id, base_url, function,
                                             type)
                    OHHOLog.print_log(result)

        return result