|
@@ -31,35 +31,54 @@ def is_contains_region(val1, val2):
|
|
|
region long[] 可选 地域 传值为[]表示不限;传递上一级ID时,childrenID可以不传;不允许同时传parentID和childrenID;
|
|
|
仅计划的campaign_type为5时,支持设置三级地域(例:山西-大同-左云,左云是三级地域)
|
|
|
|
|
|
- :param val1:
|
|
|
- :param val2:
|
|
|
+ :param val1: 推荐的城市等级组合,如 "一线城市|新一线城市|二线城市|三线城市" , "不限"
|
|
|
+ :param val2: 从账户配置信息表里读取的地区信息
|
|
|
:return:
|
|
|
"""
|
|
|
- is_contains = False
|
|
|
- val = None
|
|
|
- city_lst = []
|
|
|
- sql = """
|
|
|
- select t1.city_name, t2.level, t2.region_id from ctop_kuaishou_city_level t1
|
|
|
- left join ctop_kuaishou_region_list_parent t2
|
|
|
- on t1.city_name = t2.name
|
|
|
- where t1.city_level in %s
|
|
|
- """ % (tuple(val1.split('|')),)
|
|
|
- city_df = pd.read_sql(sql, None)
|
|
|
-
|
|
|
- # level1
|
|
|
- if city_df[city_df.level == 1].region_id.values in eval(val2):
|
|
|
- val.extend(city_df[city_df.level == 1].region_id.values)
|
|
|
+ if val1 == '不限' or val1 is None:
|
|
|
+ if val2 is None:
|
|
|
+ return True, {'region': None}
|
|
|
+ else:
|
|
|
+ return False, -1
|
|
|
else:
|
|
|
- return False, -1
|
|
|
-
|
|
|
- # level2
|
|
|
- while not is_contains:
|
|
|
- pass
|
|
|
-
|
|
|
-
|
|
|
- # level3
|
|
|
- pass
|
|
|
-
|
|
|
+ val = []
|
|
|
+ sql = """
|
|
|
+ select t1.city_name, t2.level, t2.region_id, t2.parent from ctop_kuaishou_city_level t1
|
|
|
+ left join ctop_kuaishou_region_list_parent t2
|
|
|
+ on t1.city_name = t2.name
|
|
|
+ where t1.city_level in %s
|
|
|
+ """ % (tuple(val1.split('|')),)
|
|
|
+ city_df = pd.read_sql(sql, None)
|
|
|
+
|
|
|
+ # level1
|
|
|
+ if city_df[city_df.level == 1].region_id.values in eval(val2):
|
|
|
+ val.extend(city_df[city_df.level == 1].region_id.values)
|
|
|
+ else:
|
|
|
+ return False, -1
|
|
|
+
|
|
|
+ # level2
|
|
|
+ # 元素的父级是否存在于 val2,如果存在则为包含于的关系
|
|
|
+ # 元素本身是否存在于 val2 ,如果存在则为包含于的关系
|
|
|
+ # 以上都不满足,val1 不包含于 val2
|
|
|
+ for item in city_df[city_df.level == 2].region_id.values:
|
|
|
+ parent = city_df[city_df.region_id == item].parent.values[0]
|
|
|
+ if parent in eval(val2):
|
|
|
+ val.append(item)
|
|
|
+ elif item in eval(val2):
|
|
|
+ val.append(item)
|
|
|
+ else:
|
|
|
+ return False, -1
|
|
|
+
|
|
|
+ # level3
|
|
|
+ for item in city_df[city_df.level == 3].region_id.values:
|
|
|
+ parent = city_df[city_df.region_id == item].parent.values[0]
|
|
|
+ if parent in eval(val2):
|
|
|
+ val.append(item)
|
|
|
+ elif item in eval(val2):
|
|
|
+ val.append(item)
|
|
|
+ else:
|
|
|
+ return False, -1
|
|
|
+ return True, {'region': val}
|
|
|
|
|
|
|
|
|
def is_contains_gender(val1, val2):
|