133 lines
4.3 KiB
Python
133 lines
4.3 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 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': 0})
|
||
except Exception:
|
||
log.error(f"get company id {comp_id} failed! ", exc_info=True)
|
||
return jsonify({'code': 0})
|
||
return jsonify({'code': 1, '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': 0})
|
||
return jsonify({'code': 1})
|
||
|
||
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': 0})
|
||
return jsonify({'code': 1})
|
||
|
||
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': 0})
|
||
return jsonify({'code': 1})
|
||
|
||
|
||
# # 操作(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': 1, 'body': companys})
|
||
else:
|
||
return jsonify({'code': 0})
|
||
|
||
def post(self):
|
||
companys = self.get_company()
|
||
if companys:
|
||
return jsonify({'code': 1, 'body': companys})
|
||
else:
|
||
return jsonify({'code': 0})
|
||
|
||
|
||
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
|