promotion/handler/company.py

142 lines
4.1 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import absolute_import
from flask import Flask, jsonify
from flask_restful import reqparse, abort, Api, Resource
import logging
from mysql.mmysql import MysqlBase
from prod_config import mysql_promotion_config
import pdb
log = logging.getLogger(__name__)
parser = reqparse.RequestParser()
parser.add_argument('id')
parser.add_argument('name')
parser.add_argument('contact')
parser.add_argument('appid')
parser.add_argument('appkey')
parser.add_argument('status')
parser.add_argument('tel')
parser.add_argument('user')
class Company(Resource):
def __init__(self):
self.args = parser.parse_args()
self.mydb = MysqlBase(**mysql_promotion_config)
def get(self):
status = self.args['status']
id = self.args['id']
user = self.args['user']
all_data = []
try:
if status:
sql = f"select id,name,contact,tel,appid,appkey,status,user from company where status={status};"
elif id:
sql = f"select id,name,contact,tel,appid,appkey,status,user from company where id={id};"
elif user:
sql = f"select id,name,contact,tel,appid,appkey,status,user from company where user='{user}';"
else:
sql = f"select id,name,contact,tel,appid,appkey,status,user from company ;"
data = self.mydb.query(sql)
log.info(f"get data from db was {data}")
if data:
for line in data:
if line:
company = {}
company['id'], company['name'], company['contact'], company['tel'], company['appid'], company[
'appkey'], company['status'], company['user'] = line
all_data.append(company)
del company
else:
log.info(f"{data} not found in mysql !")
return jsonify({'code': 200, 'message': []})
except Exception:
log.error(f"get company status={status} failed! ", exc_info=True)
return jsonify({'code': 500})
return jsonify({'code': 200, 'message': all_data})
def delete(self):
id = self.args['id']
try:
del_sql = f'update ad set in_used=0 where id={id};'
self.mydb.change(del_sql)
except Exception:
log.error(f"remove {id} failed!", exc_info=True)
return jsonify({'code': 500})
return jsonify({'code': 200})
def get_random(self, num=8):
import random
import string
return ''.join(random.sample(string.ascii_letters + string.digits, num))
def get_appid(self):
appid = self.get_random()
# check appid not in db
check_appid = f"select appid from company where appid='{appid}'"
data = self.mydb.query(check_appid)
if data:
self.get_appid()
return appid
def get_companyid(self):
max_id = f"select id from company order by id desc limit 1"
data = self.mydb.query(max_id)
log.info(f"1 {data}")
try:
max = int(data[0][0]) + 1
log.info(f"max id was {max}!")
except Exception:
log.error(f"error with get company id ", exc_info=True)
max = 1001
return max
def post(self):
try:
company = {}
company['name'] = self.args['name']
company['contact'] = self.args['contact']
company['tel'] = self.args['tel']
company['user'] = self.args['user']
company['id'] = self.get_companyid()
company['appid'] = self.get_appid()
company['appkey'] = 'undefined'
self.mydb.insert("company", company)
except Exception:
log.error("set values to company mysql failed!", exc_info=True)
return jsonify({'code': 500})
return jsonify({'code': 200})
def put(self):
try:
company = {}
company['id'] = self.args['id']
company['name'] = self.args['name']
company['contact'] = self.args['contact']
company['tel'] = self.args['tel']
company['user'] = self.args['user']
company['status'] = self.args['status'] or 0
company['appid'] = self.args['appid']
company['appkey'] = self.args['appkey']
sel_sql = f"select name from company where id={self.args['id']};"
data = self.mydb.query(sel_sql)
if data:
condition = f"id='{self.args['id']}'"
self.mydb.update("company", company, 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 company mysql failed!", exc_info=True)
return jsonify({'code': 500})