From 76e6f4b8b8527e2edfd9e230c18c876136d9e6b9 Mon Sep 17 00:00:00 2001 From: pengtao Date: Thu, 8 Aug 2019 11:49:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=8E=A5=E5=8F=A3=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E7=9A=84=E4=B8=BAlist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.MD | 68 +++++++++++---------- ad_Readme.md | 1 + ad_interface_tornado.py | 67 +-------------------- handler/ad.py | 130 +++++++++++++++++++++++++++++++++++----- 4 files changed, 153 insertions(+), 113 deletions(-) diff --git a/README.MD b/README.MD index f7b52d6..0f21d47 100644 --- a/README.MD +++ b/README.MD @@ -334,22 +334,23 @@ http://154.8.214.202:5015/interface/promotion?name=abc&gameid=1003&locationid=1& ##### 请求参数说明 -| 名称 | 类型 | 必填 | 说明 | -| ---------- | -------- | ---- | ------------------------------------------------------- | -| name | string | 是 | 广告名称 | -| gameid | int | 是 | 广告投放的游戏ID | -| channelid | int | 是 | 渠道ID,默认是6001 NEW | -| locationid | int | 是 | 位置ID,通过该ID到localtion表中获得area,type,mode信息 | -| ad_title | string | 是 | 广告标题 | -| ad_body | string | 是 | 广告正文 | -| ad_image | string | 是 | 头像链接 | -| ad_url | string | 是 | 跳转链接 | -| begin_time | datetime | 否 | 开始时间,默认是1999-01-01 | -| end_time | datetime | 否 | 结束时间,默认是3000-01-01 | -| ad_num | int | 否 | 投放次数,默认是0(次数无限) | -| ad_sort | int | 否 | 优先级默认为0 | -| status | int | 否 | 默认为0(未审批),1=审批通过,2=审批未通过,3=暂停 | -| companyid | int | 是 | 广告提交公司 | +| 名称 | 类型 | 必填 | 说明 | +| ----------- | -------- | ---- | ------------------------------------------------------- | +| name | string | 是 | 广告名称 | +| gameid | int | 是 | 广告投放的游戏ID | +| channelid | int | 是 | 渠道ID,默认是6001 NEW | +| locationid | int | 是 | 位置ID,通过该ID到localtion表中获得area,type,mode信息 | +| ad_title | string | 是 | 广告标题 | +| ad_body | string | 是 | 广告正文 | +| ad_image | string | 是 | 头像链接 | +| ad_url | string | 是 | 跳转链接 | +| begin_time | datetime | 否 | 开始时间,默认是1999-01-01 | +| end_time | datetime | 否 | 结束时间,默认是3000-01-01 | +| ad_num | int | 否 | 投放次数,默认是0(次数无限) | +| ad_sort | int | 否 | 优先级默认为0 | +| status | int | 否 | 默认为0(未审批),1=审批通过,2=审批未通过,3=暂停 | +| companyid | int | 是 | 广告提交公司 | +| ad_property | json | 是 | 广告属性描述 | ##### 返回参数说明 @@ -381,23 +382,24 @@ http://154.8.214.202:5015/interface/promotion?name=abc&gameid=1003&locationid=1& ##### -| 名称 | 类型 | 必填 | 说明 | -| ---------- | -------- | ---- | --------------------------------------------------- | -| id | int | 是 | 广告ID | -| name | string | 是 | 广告名称 | -| gameid | int | 是 | 广告投放的游戏ID | -| channelid | int | 是 | 渠道ID,默认是6001 NEW | -| locationid | int | 是 | 位置ID | -| ad_title | string | 是 | 广告标题 | -| ad_body | string | 是 | 广告正文 | -| ad_image | string | 是 | 头像链接 | -| ad_url | string | 是 | 跳转链接 | -| begin_time | datetime | 是 | 开始时间,默认是1999-01-01 | -| end_time | datetime | 是 | 结束时间,默认是3000-01-01 | -| ad_num | int | 是 | 投放次数,默认是-1(无限) | -| ad_sort | int | 是 | 优先级默认为0 | -| status | int | 是 | 默认为0(未审批),1=审批通过,2=审批未通过,3=暂停 | -| companyid | int | 是 | 广告提交公司 | +| 名称 | 类型 | 必填 | 说明 | +| ----------- | -------- | ---- | --------------------------------------------------- | +| id | int | 是 | 广告ID | +| name | string | 是 | 广告名称 | +| gameid | int | 是 | 广告投放的游戏ID | +| channelid | int | 是 | 渠道ID,默认是6001 NEW | +| locationid | int | 是 | 位置ID | +| ad_title | string | 是 | 广告标题 | +| ad_body | string | 是 | 广告正文 | +| ad_image | string | 是 | 头像链接 | +| ad_url | string | 是 | 跳转链接 | +| begin_time | datetime | 是 | 开始时间,默认是1999-01-01 | +| end_time | datetime | 是 | 结束时间,默认是3000-01-01 | +| ad_num | int | 是 | 投放次数,默认是-1(无限) | +| ad_sort | int | 是 | 优先级默认为0 | +| status | int | 是 | 默认为0(未审批),1=审批通过,2=审批未通过,3=暂停 | +| companyid | int | 是 | 广告提交公司 | +| ad_property | json | 是 | 广告属性描述 | ##### 返回参数说明 diff --git a/ad_Readme.md b/ad_Readme.md index 91da393..953ac09 100644 --- a/ad_Readme.md +++ b/ad_Readme.md @@ -38,6 +38,7 @@ http://promotion.kingsome.cn/webapp/index.php?c=Ops&a=getAdList&body={"gameid":" | area | string | 是 | 区域(第一元素:1=首页,2=游戏中,3=结算页,4=关闭,第二元素:X轴第三元素:Y轴,其中X,Y取值范围(0,15))如(1,0,0)代表首页左上 | | type | int | 是 | 类型(1=icon,2=banner,3=浮窗) | | mode | int | 是 | 广告单播或轮播模式(1=单播,2=轮播) | +| ad_property | string | 是 | 广告属性描述 | ##### 返回示例 diff --git a/ad_interface_tornado.py b/ad_interface_tornado.py index 48c785c..09ee7de 100644 --- a/ad_interface_tornado.py +++ b/ad_interface_tornado.py @@ -28,69 +28,7 @@ def send_cache_data(): log.info("start update cache !") now = datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S") all = [] - # # 添加无天数限定的记录 - # get_full_data = f"""SELECT - # a.id, - # a.name, - # a.ad_num, - # a.ad_title, - # a.ad_body, - # a.ad_image, - # a.jump_param, - # a.ad_sort, - # a.companyid, - # a.gameid, - # a.channelid, - # a.jump_status, - # b.area, - # b.type, - # b.mode, - # a.locationid - # FROM - # (SELECT - # id, - # name, - # ad_num, - # ad_title, - # ad_body, - # ad_image, - # jump_param, - # ad_sort, - # companyid, - # gameid, - # channelid, - # jump_status, - # locationid - # FROM - # ad - # WHERE - # status=1 - # AND in_used=1 AND (begin_time='{BEGIN}' OR end_time='{END}')) a , - # (SELECT - # id, - # area, - # type, - # mode - # FROM - # location) b - # WHERE - # a.locationid=b.id""" - # full_data = mydb.query(get_full_data) - # - # if full_data: - # for line in full_data: - # if line: - # log.info(f"line was {line}") - # item = {} - # try: - # item['id'], item['name'], item['ad_num'], item['ad_title'], item['ad_body'], item['ad_image'], item[ - # 'jump_param'], item['ad_sort'], item['companyid'], item['gameid'], item['channelid'], item[ - # 'jump_status'], item['area'], item['type'], item['mode'], item['locationid'] = line - # all.append(item) - # except Exception: - # log.error("split data failed", exc_info=True) - # 添加有天数限定的记录 get_data_sql = f"""select a.id, a.name, @@ -104,6 +42,7 @@ def send_cache_data(): a.gameid, a.channelid, a.jump_status, + a.ad_property, b.area, b.type, b.mode, @@ -147,9 +86,7 @@ def send_cache_data(): if line: item = {} try: - item['id'], item['name'], item['ad_num'], item['ad_title'], item['ad_body'], item['ad_image'], item[ - 'jump_param'], item['ad_sort'], item['companyid'], item['gameid'], item['channelid'], item[ - 'jump_status'], item['area'], item['type'], item['mode'], item['locationid'] = line + item['id'], item['name'], item['ad_num'], item['ad_title'], item['ad_body'], item['ad_image'], item['jump_param'], item['ad_sort'], item['companyid'], item['gameid'], item['channelid'], item['jump_status'],item['ad_property'], item['area'], item['type'], item['mode'], item['locationid'] = line all.append(item) except Exception: log.error("split data failed", exc_info=True) diff --git a/handler/ad.py b/handler/ad.py index 215dfaa..7fec084 100644 --- a/handler/ad.py +++ b/handler/ad.py @@ -38,6 +38,7 @@ parser.add_argument('ad_sort') parser.add_argument('status') parser.add_argument('companyid') parser.add_argument('jump_param') +parser.add_argument('ad_property') class Ad(Resource): def __init__(self): @@ -55,23 +56,120 @@ class Ad(Resource): # now = datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S") if not id: if companyid: - sel_sql = f"select a.id,a.name,a.begin_time,a.end_time,a.ad_num,a.ad_title,a.ad_body,a.ad_image," \ - f"a.jump_param,a.ad_sort,a.status,a.companyid,a.locationid,a.gameid,a.channelid,a.jump_status," \ - f"b.area,b.type,b.mode from ad a,location b where a.locationid=b.id and a.in_used=1 and " \ - f"a.companyid={companyid};" + sel_sql = f"""select + a.id, + a.name, + a.begin_time, + a.end_time, + a.ad_num, + a.ad_title, + a.ad_body, + a.ad_image, + a.jump_param, + a.ad_sort, + a.status, + a.companyid, + a.locationid, + a.gameid, + a.channelid, + a.jump_status, + a.ad_property, + b.area, + b.type, + b.mode + from + ad a, + location b + where + a.locationid=b.id + and a.in_used=1 + and a.companyid={companyid};""" elif status or status == 0: - sel_sql = f"select a.id,a.name,a.begin_time,a.end_time,a.ad_num,a.ad_title,a.ad_body,a.ad_image," \ - f"a.jump_param,a.ad_sort,a.status,a.companyid,a.locationid,a.gameid,a.channelid,a.jump_status," \ - f"b.area,b.type,b.mode from ad a,location b where a.locationid=b.id and a.in_used=1 and \ - a.status={status};" + sel_sql = f"""select + a.id, + a.name, + a.begin_time, + a.end_time, + a.ad_num, + a.ad_title, + a.ad_body, + a.ad_image, + a.jump_param, + a.ad_sort, + a.status, + a.companyid, + a.locationid, + a.gameid, + a.channelid, + a.jump_status, + a.ad_property, + b.area, + b.type, + b.mode + from + ad a, + location b + where + a.locationid=b.id + and a.in_used=1 + and a.status={status};""" else: - sel_sql = f"SELECT a.id,a.name,a.begin_time,a.end_time,a.ad_num,a.ad_title,a.ad_body,a.ad_image," \ - f"a.jump_param,a.ad_sort,a.status,a.companyid,a.locationid,a.gameid,a.channelid,a.jump_status," \ - f"b.area,b.type,b.mode FROM ad a,location b WHERE a.locationid=b.id AND a.in_used=1 ;" + sel_sql = f"""select + a.id, + a.name, + a.begin_time, + a.end_time, + a.ad_num, + a.ad_title, + a.ad_body, + a.ad_image, + a.jump_param, + a.ad_sort, + a.status, + a.companyid, + a.locationid, + a.gameid, + a.channelid, + a.jump_status, + a.ad_property, + b.area, + b.type, + b.mode + from + ad a, + location b + where + a.locationid=b.id + and a.in_used=1 ;""" else: - sel_sql = f"select a.id,a.name,a.begin_time,a.end_time,a.ad_num,a.ad_title,a.ad_body,a.ad_image," \ - f"a.jump_param,a.ad_sort,a.status,a.companyid,a.locationid,a.gameid,a.channelid,a.jump_status,b.area," \ - f"b.type,b.mode from ad a,location b where a.locationid=b.id and a.in_used=1 and a.id={id};" + sel_sql = f"""select + a.id, + a.name, + a.begin_time, + a.end_time, + a.ad_num, + a.ad_title, + a.ad_body, + a.ad_image, + a.jump_param, + a.ad_sort, + a.status, + a.companyid, + a.locationid, + a.gameid, + a.channelid, + a.jump_status, + a.ad_property, + b.area, + b.type, + b.mode + from + ad a, + location b + where + a.locationid=b.id + and a.in_used=1 + and a.id={id}; """ data = self.mydb.query(sel_sql) log.info(f"sql={sel_sql},data={data}") if data: @@ -82,7 +180,7 @@ class Ad(Resource): ad_info['id'], ad_info['name'], ad_info['begin_time'], ad_info['end_time'], ad_info['ad_num'], \ ad_info['ad_title'], ad_info['ad_body'], ad_info['ad_image'], ad_info['jump_param'], ad_info[ 'ad_sort'], ad_info['status'], ad_info['companyid'], ad_info['locationid'], ad_info['gameid'], \ - ad_info['channelid'], ad_info['jump_status'], ad_info['area'], ad_info['type'], ad_info[ + ad_info['channelid'], ad_info['jump_status'],ad_info['ad_property'], ad_info['area'], ad_info['type'], ad_info[ 'mode'] = line all.append(ad_info) return jsonify({'code': 200, 'message': all}) @@ -110,6 +208,7 @@ class Ad(Resource): ad['jump_status'] = self.args['jump_status'] ad['ad_sort'] = self.args['ad_sort'] or 0 ad['companyid'] = self.args['companyid'] + ad['ad_property'] = self.args['ad_property'] # 检查必需有的字段 if not ( ad['name'] and ad['gameid'] and ad['locationid'] and ad['ad_image'] and ad['jump_status'] and ad['companyid']): @@ -162,6 +261,7 @@ class Ad(Resource): ad['status'] = self.args['status'] or 0 ad['companyid'] = self.args['companyid'] ad['jump_status'] = self.args['jump_status'] + ad['ad_property'] = self.args['ad_property'] sel_sql = f"select name from ad where id={self.args['id']};" data = self.mydb.query(sel_sql)