143 lines
4.9 KiB
Python
143 lines
4.9 KiB
Python
# -*- coding: utf-8 -*-
|
||
from __future__ import absolute_import
|
||
|
||
"""
|
||
广告接口
|
||
get (返回广告明细) params(gameid,localid)output(ad_title,ad_body,ad_image,ad_url)
|
||
post(新增广告定义) params(name,gameid,localid,start_time,end_time,ad_nums,ad_title,ad_body,ad_image,ad_url,ad_sort,status=unapproved,) output(1,0)
|
||
put(更新广告配置)params(name,gameid,localid,start_time,end_time,ad_nums,ad_title,ad_body,ad_image,ad_url,ad_sort)output(1,0)
|
||
delete(删除定义的广告)params()output(1,0)
|
||
|
||
"""
|
||
|
||
from flask import Flask, jsonify
|
||
from flask_restful import reqparse, abort, Api, Resource
|
||
import logging
|
||
# from myredis.myredis import ad_redis, expire_time
|
||
from mysql.mmysql import MysqlBase
|
||
from config import mysql_promotion_config
|
||
import datetime
|
||
import pdb
|
||
|
||
log = logging.getLogger(__name__)
|
||
mydb = MysqlBase(**mysql_promotion_config)
|
||
parser = reqparse.RequestParser()
|
||
parser.add_argument('id')
|
||
parser.add_argument('gameid')
|
||
parser.add_argument('name')
|
||
parser.add_argument('locationid')
|
||
parser.add_argument('begin_time')
|
||
parser.add_argument('end_time')
|
||
parser.add_argument('ad_num')
|
||
parser.add_argument('ad_title')
|
||
parser.add_argument('ad_body')
|
||
parser.add_argument('ad_image')
|
||
parser.add_argument('ad_url')
|
||
parser.add_argument('ad_sort')
|
||
parser.add_argument('status')
|
||
|
||
|
||
class Ad(Resource):
|
||
def __init__(self):
|
||
self.args = parser.parse_args()
|
||
|
||
def get(self):
|
||
gameid = self.args['gameid']
|
||
localid = self.args['locationid']
|
||
status = self.args['status'] or 1
|
||
if not gameid or not localid:
|
||
# log.error(f"请输入必须的游戏ID和位置ID字段,当前获得是{gameid},{localid}")
|
||
return jsonify({'code': 500, "message": f"请输入必须的游戏ID和位置ID字段,当前获得是{gameid},{localid},{status}"})
|
||
|
||
now = datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S")
|
||
sel_sql = f"select id,name,begin_time,end_time,ad_num,ad_title,ad_body,ad_image,ad_url,ad_sort from ad where gameid='{gameid}' and locationid='{localid}' and status={status};"
|
||
data = mydb.query(sel_sql)
|
||
ad_info = {}
|
||
if data:
|
||
try:
|
||
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['ad_url'], ad_info['ad_sort'] = \
|
||
data[0][0]
|
||
return jsonify({'code': 200, 'message': ad_info})
|
||
except Exception:
|
||
log.error("split data from mysql failed!", exc_info=True)
|
||
else:
|
||
return jsonify({
|
||
'code': 404,
|
||
'message': f'ad not found with gameid={gameid},localid={localid},now={now},status={status}!'
|
||
})
|
||
|
||
|
||
def post(self):
|
||
ad = {}
|
||
ad['id'] = self.get_adid()
|
||
ad['name'] = self.args['name']
|
||
ad['gameid'] = self.args['gameid']
|
||
ad['locationid'] = self.args['locationid']
|
||
ad['begin_time'] = self.args['begin_time'] or '1999-01-01'
|
||
ad['end_time'] = self.args['end_time'] or '3000-01-01'
|
||
ad['ad_num'] = self.args['ad_num'] or -1
|
||
ad['ad_title'] = self.args['ad_title']
|
||
ad['ad_body'] = self.args['ad_body']
|
||
ad['ad_image'] = self.args['ad_image']
|
||
ad['ad_url'] = self.args['ad_url']
|
||
ad['ad_sort'] = self.args['ad_sort'] or 0
|
||
try:
|
||
mydb.insert('ad', ad)
|
||
return jsonify({'code': 200})
|
||
except Exception:
|
||
log.error("Insert ad to mysql failed!", exc_info=True)
|
||
return jsonify({'code': 500, 'message': f'insert {ad} failed! '})
|
||
|
||
def get_adid(self):
|
||
max_id = f"select id from ad order by id desc limit 1"
|
||
data = mydb.query(max_id)
|
||
try:
|
||
max = int(data[0][0]) + 1
|
||
log.info(f"max id was {max}!")
|
||
except Exception:
|
||
log.error(f"error with get ad id ", exc_info=True)
|
||
max = 1001
|
||
return max
|
||
|
||
def put(self):
|
||
try:
|
||
ad = {}
|
||
ad['id'] = self.args['id']
|
||
ad['name'] = self.args['name']
|
||
ad['gameid'] = self.args['gameid']
|
||
ad['locationid'] = self.args['locationid']
|
||
ad['begin_time'] = self.args['begin_time'] or '1999-01-01'
|
||
ad['end_time'] = self.args['end_time'] or '3000-01-01'
|
||
ad['ad_num'] = self.args['ad_num'] or -1
|
||
ad['ad_title'] = self.args['ad_title']
|
||
ad['ad_body'] = self.args['ad_body']
|
||
ad['ad_image'] = self.args['ad_image']
|
||
ad['ad_url'] = self.args['ad_url']
|
||
ad['ad_sort'] = self.args['ad_sort']
|
||
ad['status'] = self.args['status'] or 0
|
||
|
||
sel_sql = f"select name from ad where id={self.args['id']};"
|
||
data = mydb.query(sel_sql)
|
||
if data:
|
||
condition = f"id='{self.args['id']}'"
|
||
mydb.update("ad", ad, condition)
|
||
return jsonify({'code': 200})
|
||
else:
|
||
return jsonify({'code': 404, 'message': f"{self.args['id']} not found in mysql!"})
|
||
except Exception:
|
||
log.error("update values to ad mysql failed!", exc_info=True)
|
||
return jsonify({'code': 500})
|
||
|
||
|
||
def delete(self):
|
||
id = self.args['id'] or None
|
||
if not id:
|
||
return jsonify({'code': 404, 'message': f'{id} not found!'})
|
||
del_sql = f"delete from ad where id={id};"
|
||
try:
|
||
mydb.change(del_sql)
|
||
return jsonify({'code': 200, 'message': f'remove adid={id} success!'})
|
||
except Exception:
|
||
log.error("remove id from ad failed!", exc_info=True)
|