def refuse_friend(self, user_id, friend_user_id): """ 拒绝添加好友 用户已经申请,并且你们不是朋友/黑名单关系,可以拒绝 :param user_id: 用户ID :param friend_user_id: 另一用户ID :return: """ if self.friend.has_valid_apply(friend_user_id, user_id): apply = self.friend.get_apply_by_user_and_friend( friend_user_id, user_id) if apply: success = self.friend.add_refuse(apply.id, user_id) if success: log_string = "%d refuse %d to be friend" % (user_id, friend_user_id) OHHOLog.print_log(log_string) self.im_friend.refuse_friend(user_id, friend_user_id, "") return Result.result_success() else: return Result.result_failed() else: return Result.result_failed("no valid friend apply!") else: return Result.result_failed("no valid friend apply!")
def refuse_meet(self, user_id, friend_user_id, apply_id, base_url): """ 拒绝见面 只要对方有申请见面,就可以拒绝见面 :param user_id: 用户ID :param friend_user_id: 另一用户ID :param meet_state: 见面状态 0未见,1见面,2 请求相见,3同意相见,4不同意相见,5 取消见面,默认为0 :return: """ # 向对方发送拒绝的推送 try: if user_id and friend_user_id and apply_id: type = PUSH_STATE_TYPE_REFUSE_MEET if not self.meet.is_meet_end(apply_id, friend_user_id): result = self.push_information(friend_user_id, user_id, apply_id, type, base_url) OHHOLog.print_log(result) # information = self.user.get_push_user_information(user_id, apply_id, base_url) # information["function"] = "refuse meet" # self.user.push_user_information(friend_user_id, PUSH_STATE_TYPE_REFUSE_MEET, information) self.meet.add_exclude(user_id, friend_user_id) self.meet.add_refuse(apply_id, user_id) return Result.result_success() else: OHHOLog.print_log( "user_id:%s, friend_user_id:%s, apply_id:%s" % (str(user_id), str(friend_user_id), str(apply_id))) return Result.result_failed("there is some id is 0") except Exception as ex: OHHOLog.print_log(ex) return Result.result_failed(ex)
def change(self, user_id, cellphone_number, code, country_code): country_code_obj = self.country_code.get_by_country_code(country_code) if country_code_obj: code_cellphone_number = country_code + cellphone_number else: return Result.result_failed("the country_code not exist") is_correct = Code.check_code(code_cellphone_number, code) if is_correct: the_user = self.user.get_by_id(user_id) if the_user: if self.user.user.exist_valid_cellphone_country_code_id( country_code_obj.id, cellphone_number): return Result.result_failed( "the cellphone number has been registered!") else: last_cellphone = the_user.cellphone cellphone = cellphone_number data = dict() data["last_cellphone"] = last_cellphone data["cellphone"] = cellphone data["country_code_id"] = country_code_obj.id success = self.user.update_user(the_user, data) if success: return Result.result_success() else: return Result.result_failed() else: return Result.result_failed("the user %d does not exist" % (int(user_id))) else: return Result.result_failed("cellphone code is incorrect!")
def add_black(self, user_id, friend_user_id): relation = self.friend.get_friend_by_user_and_friend( user_id, friend_user_id) black_relation = self.friend.get_black_by_user_and_friend( user_id, friend_user_id) if relation or black_relation: relation = relation if relation else black_relation success = self.friend.add_black(relation) if success: result = Result.result_success() else: result = Result.result_failed() else: data = dict() data["account_id"] = user_id data["friend_account_id"] = friend_user_id data["type"] = 2 success = self.friend.friend.add(data) if success: result = Result.result_success("add black successfully!") else: result = Result.result_failed("add black failed!") return result
def add(self, user_id, name, match_condition_id): """ 用户ID,名称唯一确定一条值,match_condition可以更改 :param data: name, user_id, match_condition_id :return: """ if user_id: relation = self.get_nearest_match_relation_by_user(user_id) if relation: result = Result.result_exist(USER_AND_MATCH_CONDITION_EXIST) result["data"] = relation else: data = dict() data["user_id"] = user_id data["match_condition_id"] = match_condition_id if name: data["name"] = name success = self.relation.add(data) if success: result = Result.result_success() relation = self.get_nearest_match_relation_by_user(user_id) result["data"] = relation else: result = Result.result_failed() result["data"] = None else: result = Result.result_failed(PARAMETERS_ARE_INVALID) result["data"] = None return result
def add_feedback(self, user_id, friend_user_id, apply_id, reason, content, category): data = dict() data["user_id"] = user_id data["another_user_id"] = friend_user_id data["apply_id"] = apply_id data["reason"] = reason data["message"] = content if self.apply.get_by_id(apply_id): success = self.feedback.add(data) category_list = OHHOOperation.json2list(category) impression_instance = DBOHHOUserImpression() for c in category_list: if c: temp = dict() temp["type"] = 1 temp["content_id"] = int(c) temp["apply_id"] = apply_id temp["user_id"] = user_id temp["another_user_id"] = friend_user_id impression_instance.add(temp) if success: result = Result.result_success() else: result = Result.result_failed() else: result = Result.result_failed("no valid apply!") return result
def set_device_use(self, user_id, identity_id, data_dict): user_id = int(user_id) # OHHOLog.print_log(user_id) # OHHOLog.print_log(identity_id) # OHHOLog.print_log(data_dict) self.device.set_identity(identity_id) relation = self.device.get_relation_by_device() # OHHOLog.print_log(relation.user_id) if relation and relation.user_id == user_id: type = data_dict.get("type", 0) type = int(type) OHHOLog.print_log(type) if type == 1: primary = self.device.get_primary_relation_by_user(user_id) if primary: for p in primary: OHHOLog.print_log("reset") result = self.device.relation_update(p, {"type": 0}) OHHOLog.print_log(result) success = self.device.relation_update(relation, data_dict) if success: return Result.result_success() else: return Result.result_failed() elif relation: return Result.result_device_used_by_other() else: return Result.result_failed("this is not your device!")
def apply_meet(self, user_id, friend_user_id, match_condition_id, base_url): """ 申请见面 见过面的不能申请 :param user_id: 用户ID :param friend_user_id: 另一用户ID :param match_condition_id: 配对条件ID :return: """ result = dict() if self.meet.has_valid_apply(user_id, friend_user_id): return Result.result_has_valid_meet_apply() if self.meet.is_meet(user_id, friend_user_id): return Result.result_is_meet() condition = self.condition.get_by_id(match_condition_id) if condition: success = self.meet.add_apply(user_id, friend_user_id, match_condition_id) if success: log_string = "%d apply %d to meet" % (user_id, friend_user_id) OHHOLog.print_log(log_string) message = self.user.get_user_basic_information(user_id, base_url) self.user.push(log_string, friend_user_id, DEFAULT_IM_USER_ID) return Result.result_success() else: return Result.result_failed() else: return Result.result_failed("no such condition!")
def rebind_cellphone(self, cellphone_key, cellphone_number, code, base_url, cellphone_dict, country_code): the_cellphone = country_code + cellphone_number check = Code.check_code(the_cellphone, code) if check: country_code_object = self.user.country_code.get_by_country_code(country_code) country_code_id = country_code_object.id if country_code_object else 0 # self.user.get_by_country_code_and_cellphone(country_code, cellphone_number) # user = self.user.get(cellphone_number) user = self.user.get_by_country_code_and_cellphone(country_code_id, cellphone_number) self.cellphone.set_key(cellphone_key) cellphone = self.cellphone.get() if not cellphone: success = self.cellphone.add_cellphone(cellphone_dict) if success: cellphone = self.cellphone.get() else: cellphone = None if cellphone: if not user: OHHOLog.print_log(country_code) OHHOLog.print_log(cellphone_number) result = Result.result_failed("user doest not exist") else: result = self.cellphone.bind_cellphone(cellphone.id, user.id) data = self.user.get_user_information(user.id, base_url) result["data"] = data else: result = Result.result_failed("cellphone does not exist!") else: result = Result.result_failed("code is incorrect!") return result
def agree_friend(self, user_id, friend_user_id): """ 同意添加好友 用户已经申请,并且你们不是朋友/黑名单关系,可以同意 :param user_id: 用户ID :param friend_user_id: 另一用户ID :return: """ # if self.friend.has_valid_apply(friend_user_id, user_id): apply = self.friend.get_apply_by_user_and_friend( friend_user_id, user_id) if apply: if not self.friend.is_friend_or_black(user_id, friend_user_id): result = self.friend.add_friend(user_id, friend_user_id, apply.id) success = self.friend.add_agree(apply.id) if success: log_string = "%d agree %d to be friend" % (user_id, friend_user_id) OHHOLog.print_log(log_string) self.im_friend.agree_friend(user_id, friend_user_id, "") return result else: return Result.result_failed() else: return Result.result_failed("no valid friend apply!")
def set_online_switch(self, user_id, is_online): configuration = self.configuration.get_by_user(user_id) if configuration: if is_online: success = self.configuration.open_online(configuration) if success: result = Result.result_success("open online successfully!") else: result = Result.result_failed("open online failed!") else: success = self.configuration.close_online(configuration) if success: result = Result.result_success( "close online successfully!") else: result = Result.result_failed("close online failed!") else: data_dict = dict() data_dict["user_id"] = user_id data_dict["is_online"] = is_online success = self.configuration.add(data_dict) if is_online: if success: result = Result.result_success( "add open online successfully!") else: result = Result.result_failed("add open online failed!") else: if success: result = Result.result_success( "add close online successfully!") else: result = Result.result_failed("add close online failed!") return result
def add(self, data): data_list = self.parse_parameters(data) if data_list: success = self.bulk_add(data_list) if success: return Result.result_success() else: return Result.result_failed("failed!") else: return Result.result_failed("no data")
def exist(self, country_code, cellphone): OHHOLog.print_log(country_code) OHHOLog.print_log(cellphone) country_code_object = self.country_code.get_by_country_code(country_code) if country_code_object: success = self.user.get_by_country_code_and_cellphone(country_code_object.id, cellphone) if success: return Result.result_success() else: return Result.result_failed("no such cellphone") else: return Result.result_failed("country code is invalid")
def authenticate(self, country_code, username, password, cellphone_dict, base_url, code): country_code_object = self.user.get_country_code(country_code) country_code_id = country_code_object.id if country_code_object else 0 OHHOLog.print_log("check user") user_check_result = self.user.check_user_only_by_user( username, code, country_code_id) OHHOLog.print_log(user_check_result) user = self.user.get_by_cellphone(username) cellphone_key = cellphone_dict.get("key", None) self.cellphone.set_key(cellphone_key) cellphone = self.cellphone.get() OHHOLog.print_log("check user and cellphone relation") if user and cellphone: is_bind = self.cellphone.is_bound_by_user(cellphone.id, user.id) if is_bind: cellphone_relation_result = Result.result_success() else: OHHOLog.print_log("unsafe cellphone!") cellphone_relation_result = Result.result_failed() else: OHHOLog.print_log("user or cellphone not exist!") cellphone_relation_result = Result.result_failed() if not cellphone: OHHOLog.print_log("add cellphone!") success = self.cellphone.add_cellphone(cellphone_dict) if success: add_cellphone_result = Result.result_success() else: add_cellphone_result = Result.result_failed() OHHOLog.print_log(add_cellphone_result) OHHOLog.print_log(cellphone_relation_result) if Result.is_success(user_check_result) and Result.is_success( cellphone_relation_result): result = Result.result_success() elif Result.is_password_incorrect( user_check_result) or Result.is_update_beyond_three_month( user_check_result): result = user_check_result elif Result.is_success(user_check_result): result = Result.result_unsafe() elif Result.is_not_exist(user_check_result): result = Result.result_not_exist() else: result = Result.result_failed() if user and Result.is_success(result): result["data"] = self.user.get_user_information(user.id, base_url) return result
def send_verification_code(cellphone_number): code = Code.create_code(length=4) Code.save_code(cellphone_number, code) params = "{'code':'%s'}" % (str(code)) return_data = Code.send_code(cellphone_number, params) if return_data: if return_data['Code'] == 'OK': result = Result.result_success() else: result = Result.result_failed(return_data["Code"]) else: result = Result.result_failed("send verification code failed!") return result
def add_version(self, version, name, url): instance = self.version.get_by_version(version) if instance: return Result.result_failed("version exist!") data = dict() data["version"] = version data["name"] = name data["url"] = url success = self.version.add(data) if success: return Result.result_success() else: return Result.result_failed()
def bind_cellphone(self, cellphone_id, user_id): result = dict() result["success"] = False relation = self.relation.get_by_cellphone_and_user( cellphone_id, user_id) if relation and self.relation.is_valid(relation, has_state=True): result = Result.result_success(CELLPHONE_EXIST) # else: # self.delete_relations(user_id) # restore = self.relation.restore(relation) # if restore: # result = Result.result_success(RESTORE_SUCCESS) # else: # result = Result.result_failed(RESTORE_FAILED) else: self.delete_relations(user_id) data_dict = dict() data_dict["user_id"] = user_id data_dict["cellphone_id"] = cellphone_id temp = self.relation.add(data_dict) if temp: result = Result.result_success() else: result = Result.result_failed() return result
def unbind_device(self, cellphone, code, identity, mac_address, country_code): # OHHOLog.print_log(cellphone) # OHHOLog.print_log(identity) # OHHOLog.print_log(mac_address) if country_code and cellphone: the_cellphone = country_code + cellphone else: return Result.result_parameters_are_invalid( "country_code or cellphone is empty!") success = Code.check_code(the_cellphone, code) if success: country_code_object = self.user.get_country_code(country_code) country_code_id = country_code_object.id if country_code_object else 0 user = self.user.get_by_country_code_and_cellphone( country_code_id, cellphone) if user: self.device.set_mac_address(mac_address) self.device.set_identity(identity) device = self.device.get_by_identity() if device: # OHHOLog.print_log("before delete imei") self.imei.delete_by_user_and_device(user.id, device.id) # OHHOLog.print_log("after delete imei") # query = self.imei.get_by_user_and_device(user.id, device.id) # self.imei.delete_some(query) return self.device.unbind_device(user.id) else: return Result.result_not_exist(USER_NOT_EXIST) else: return Result.result_failed(PASSWORD_IS_INCORRECT)
def meet_end(self, user_id, friend_user_id, apply_id, base_url): apply_id = int(apply_id) if apply_id: the_map = self.map.get_by_user(user_id) if the_map: address = the_map.address else: address = "" self.meet.add_meet_end(apply_id, user_id, address) type = PUSH_STATE_TYPE_END_MEET is_meet_end = self.meet.is_meet_end(apply_id, friend_user_id) if not is_meet_end: self.push_information(friend_user_id, user_id, apply_id, type, base_url) # information = dict() # information["function"] = "meet end" # self.user.push_user_information(friend_user_id, PUSH_STATE_TYPE_END_MEET, information) # self.delete_map(user_id) # self.delete_map(friend_user_id) # self.delete_sensor(user_id) # self.delete_sensor(friend_user_id) self.delete_meeting(apply_id, user_id) # self.delete_meeting(apply_id, friend_user_id) return Result.result_success() else: return Result.result_failed("apply_is is %d" % (int(apply_id)))
def add(self, user_id, another_user_id, map_information, base_url, timestamp=None): if timestamp: map_information["timestamp"] = timestamp map_information["user_id"] = user_id map_information["another_user_id"] = another_user_id success = self.map.add(map_information) if success: result = Result.result_success() else: result = Result.result_failed() # return result map_instance = self.map.get_by_user_id(another_user_id) result["data"] = dict() if map_instance: OHHOLog.print_log("has map") OHHOLog.print_log(map_instance) OHHOLog.print_log(self.map.get_information(map_instance, base_url)) result["data"]["information"] = self.map.get_information( map_instance, base_url) else: OHHOLog.print_log("not has map") result["data"]["information"] = dict() return result
def add_friend(self, user_id, friend_user_id, apply_id): friend = self.get_friend_by_user_and_friend(user_id, friend_user_id) if friend: success1 = True else: data = dict() data["account_id"] = user_id data["friend_account_id"] = friend_user_id data["apply_id"] = apply_id success1 = self.friend.add(data) friend = self.get_friend_by_user_and_friend(friend_user_id, user_id) if friend: success2 = True else: data = dict() data["account_id"] = friend_user_id data["friend_account_id"] = user_id data["apply_id"] = apply_id success2 = self.friend.add(data) if success1 and success2: return Result.result_success() else: return Result.result_failed()
def get(self, user_id, base_url=None): user = self.user.get_by_id(user_id) if user: result = Result.result_success() result["data"] = self.user.get_user_information(user_id, base_url) else: result = Result.result_failed("no such user!") return result
def update(self, instance, user_id, device_id): if instance and instance is not True: imei_by_device = self.imei.get_first_by_device_id(device_id) if not imei_by_device: data = dict() data["device_id"] = device_id data["user_id"] = user_id success = self.imei.update(instance, data) if success: return Result.result_success() else: return Result.result_failed() else: return Result.result_failed("device_id has been in imei!") else: return Result.result_parameters_are_invalid()
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(self, name): data = dict() data["name"] = name success = self.work_domain.add(data) if success: result = Result.result_success() else: result = Result.result_failed() return result
def add_user_exclude(user_id, exclude_user_ids): extension = DBOHHOUserAccuracyExtension() user = extension.get_by_user(user_id) if user: success = extension.update(user, {"exclude": exclude_user_ids}) if success: return Result.result_success("update successfully!") else: return Result.result_failed("update failed!") else: success = extension.add({ "user_id": user_id, "exclude": exclude_user_ids }) if success: return Result.result_success("add successfully!") else: return Result.result_failed("add failed!")
def open_match_switch(self, user_id): configuration = self.configuration.get_by_user(user_id) if configuration: success = self.configuration.open_match(configuration) if success: result = Result.result_success("open match successfully!") else: result = Result.result_failed("open match failed!") else: data_dict = dict() data_dict["user_id"] = user_id data_dict["is_switch"] = 1 success = self.configuration.add(data_dict) if success: result = Result.result_success("add open match successfully!") else: result = Result.result_failed("add open match failed!") return result
def bind_device(self, user_id, type=1): try: OHHOLog.print_log("bind device start") device = self.get_by_identity() if device and self.device.check_by_mac(): relation = self.relation.get_by_device(device.id) if relation and self.relation.is_valid(relation, True): if relation.user_id == int(user_id): result = Result.result_exist(RELATION_EXIST) else: user = self.user.get_by_id(relation.user_id) cellphone = user.cellphone country_code_id = user.country_code_id country_code_obj = self.countryCode.get_by_id( country_code_id) if country_code_obj: country_code = country_code_obj.country_code else: country_code = "+86" result = Result.result_device_used_by_other() result["country_code"] = country_code result["cellphone_number"] = cellphone else: success = self.relation.add_without_commit({ "device_id": device.id, "user_id": user_id, "type": type }) if success: self.relation.commit() result = Result.result_success() else: self.relation.rollback() result = Result.result_failed() else: result = Result.result_not_exist() OHHOLog.print_log("bind device end") return result except Exception as ex: OHHOLog.print_log(ex) return Result.result_failed(ex)
def delete_one_user_exclude(user_id, exclude_user_id): extension = DBOHHOUserAccuracyExtension() user = extension.get_by_user(user_id) if user: exclude = user.exclude exclude_user_id_list = exclude.split(",") exclude_user_id_list = [int(e) for e in exclude_user_id_list] if int(exclude_user_id) in exclude_user_id_list: exclude_user_id_list.remove(exclude_user_id) exclude_string = ",".join(exclude_user_id_list) success = extension.update(user, {"exclude": exclude_string}) if success: return Result.result_success("update successfully!") else: return Result.result_failed("update failed!") else: return Result.result_success("no such user in your exclude!") else: return Result.result_failed("no such user extension!")
def add(self, name): data = dict() data["name"] = name drink = self.drink success = drink.add(data) if success: result = Result.result_success() else: result = Result.result_failed() return result