promotion/handler/company.py
2019-07-09 11:08:25 +08:00

133 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
from __future__ import absolute_import
from flask import Flask, jsonify
from flask_restful import reqparse, abort, Api, Resource
import logging
from myredis.myredis import company_redis, expire_time
from mysql.mmysql import MysqlBase
from config import mysql_promotion_config
import pdb
log = logging.getLogger(__name__)
mydb = MysqlBase(**mysql_promotion_config)
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')
# # 操作put / get / delete单一资源Todo
# shows a single todo item and lets you delete a todo item
class Company(Resource):
def get(self, comp_id):
try:
data = company_redis.hmget(comp_id, ['id', 'name', 'contact', 'appid', 'appkey'])
log.info(f"get data from redis was {data}")
_,name,_,_,_=data
if not name:
sql = f"select id,name,contact,appid,appkey from company where id={comp_id};"
data = mydb.query(sql)
log.info(f"get data from db was {data}")
if data:
company = {}
company['id'], company['name'], company['contact'], company['appid'], company['appkey'] = data[0]
company_redis.hmset(company['id'], company)
company_redis.expire(company['id'], expire_time)
else:
log.error(f"{comp_id} not found in mysql !")
return jsonify({'code': 404})
except Exception:
log.error(f"get company id {comp_id} failed! ", exc_info=True)
return jsonify({'code': 500})
return jsonify({'code': 200, 'body': data})
def delete(self, comp_id):
try:
company_redis.expire(comp_id, 0)
del_sql = f'delete from company where id={comp_id};'
mydb.query(del_sql)
except Exception:
log.error(f"remove {comp_id} failed!", exc_info=True)
return jsonify({'code': 500})
return jsonify({'code': 200})
def post(self, comp_id):
args = parser.parse_args()
try:
company = {}
company['id'] = comp_id
company['name'] = args.name
company['contact'] = args.contact
company['appid'] = args.appid
company['appkey'] = args.appkey
# insert to mysql
mydb.insert("company", company)
# insert to redsi
company_redis.hmset(company['id'], company)
company_redis.expire(company['id'], expire_time)
except Exception:
log.error("set values to company mysql/redis failed!", exc_info=True)
return jsonify({'code': 500})
return jsonify({'code': 200})
def put(self, comp_id):
args = parser.parse_args()
try:
company = {}
company['id'] = comp_id
company['name'] = args['name']
company['contact'] = args['contact']
company['appid'] = args['appid']
company['appkey'] = args['appkey']
company['status'] = args['status']
# insert to mysql
# update_sql = f"update company set id='{company['id']}',name='{company['name']}',contact='{company[
# 'contact']}',appid='{company['appid']}',appkey='{company['appkey']}' where id='{comp_id}';"
condition = f"id='{comp_id}'"
# log.info(f"update sql was {update_sql}")
mydb.update("company", company, condition)
# update redsi
company_redis.hmset(company['id'], company)
company_redis.expire(company['id'], expire_time)
except Exception:
log.error("update values to company redis,mysql failed!", exc_info=True)
return jsonify({'code': 500})
return jsonify({'code': 200})
# # 操作post / get资源列表TodoList
# shows a list of all todos, and lets you POST to add new tasks
class CompanyList(Resource):
def get(self):
companys = self.get_company()
if companys:
return jsonify({'code': 200, 'body': companys})
else:
return jsonify({'code': 500})
def post(self):
companys = self.get_company()
if companys:
return jsonify({'code': 200, 'body': companys})
else:
return jsonify({'code': 500})
def get_company(self):
sel_sql = "select id from company where 1;"
data = mydb.query(sel_sql)
company_list = []
if data:
for item in data:
try:
company_list.append(item[0])
except Exception:
log.error("split data from db failed!", exc_info=True)
return company_list