From 9d1b3b8a4550d3a5d39ae82d91662e542713c63d Mon Sep 17 00:00:00 2001 From: pengtao Date: Fri, 6 Sep 2019 17:42:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9B=BE=E7=89=87=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E5=AE=9A=E4=B9=89=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/priv_map.py | 141 ++++++++++++++++++++++++++++++++++++++++ priv_maps.md | 153 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 294 insertions(+) create mode 100644 handler/priv_map.py create mode 100644 priv_maps.md diff --git a/handler/priv_map.py b/handler/priv_map.py new file mode 100644 index 0000000..eb1dd8b --- /dev/null +++ b/handler/priv_map.py @@ -0,0 +1,141 @@ +# -*- 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}) diff --git a/priv_maps.md b/priv_maps.md new file mode 100644 index 0000000..eda54a2 --- /dev/null +++ b/priv_maps.md @@ -0,0 +1,153 @@ +### 图库管理接口文档 + + + +管理账号及图片的信息,基于账号返回图片列表 + +TODO: + + + +#### 1、获得图片列表 + +##### 接口地址 + +http://154.8.214.202:5015/interface/maps + +##### 返回格式:json + +##### 请求方式:get + +##### 请求示范 + +http://154.8.214.202:5015/maps + +http://154.8.214.202:5015/interface/maps?user=xxx + +##### 请求参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ---- | ----- | ---- | ------------------------ | +| user | vchar | 是 | 账号信息 | +| | | | 上述参数为空返回所有信息 | + +##### 返回参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------- | +| mapid | int | 否 | 自动产生的图片ID | +| user | string | 是 | 账号 | +| url | string | 是 | 图片存放的URL地址 | + +##### 返回示例 +{ + "code": 200, + "message": [ + { +“url”:'xxxx', + "user": "None" + } + ] +} + +#### 2、新增图片信息 + +##### 接口地址 + +http://154.8.214.202:5015/interface/maps + +##### 返回格式:json + +##### 请求方式:post + +##### 请求示范 + +http://154.8.214.202:5015/interface/company? + +##### 请求参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ---- | ------ | ---- | -------- | +| url | string | 是 | 联系电话 | +| user | string | 是 | 登录账号 | + +##### 返回参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ---- | ---- | ---- | -------- | +| code | int | 是 | 返回状态 | +| | | | | + +##### 返回示例 + +{ + "code": 200 +} + +#### 3、更改公司信息 + +##### 接口地址 + +http://154.8.214.202:5015/interface/mpas + +##### 返回格式:json + +##### 请求方式:put + +##### 请求示范 + +http://154.8.214.202:5015/interface/company?appid=zpoHY37u&appkey=undefined&contact=miles001&id=1006&name=kingsome&status=1&tel=17771&user=assd + +##### 请求参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | -------------- | +| user | string | 是 | 登录账号 | +| mapid | int | 是 | 图片id(唯一值) | +| url | string | 是 | 图片存放地址 | + +##### 返回参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ---- | ---- | ---- | -------- | +| code | int | 是 | 返回状态 | +| | | | | + +##### 返回示例 + +{ + "code": 200 +} + +#### 4、删除图片信息 + +##### 接口地址 + +http://154.8.214.202:5015/interface/maps + +##### 返回格式:json + +##### 请求方式:delete + +##### 请求示范 + +http://154.8.214.202:5015/interface/maps + +##### 请求参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ----- | ---- | ---- | -------------- | +| mapid | int | 是 | 图片id(唯一值) | + +##### 返回参数说明 + +| 名称 | 类型 | 必填 | 说明 | +| ---- | ---- | ---- | -------- | +| code | int | 是 | 返回状态 | +| | | | | + +##### 返回示例 + +{ + "code": 200 +} \ No newline at end of file