Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
P
PC后台-财务管理
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
彭熊
PC后台-财务管理
Commits
1180ae73
Commit
1180ae73
authored
Dec 16, 2020
by
pengxiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
配置
parent
7884b461
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
356 additions
and
0 deletions
+356
-0
__main__.py
app/api/__main__.py
+14
-0
app.py
app/api/app.py
+22
-0
engine.py
app/api/engine.py
+101
-0
config.yaml
app/config/config.yaml
+72
-0
errors.py
app/config/errors.py
+35
-0
errorhandler.py
app/controller/errorhandler.py
+95
-0
version1.py
app/router/version1.py
+17
-0
No files found.
app/api/__main__.py
0 → 100644
View file @
1180ae73
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : __main__.py
# @Time : 2020/11/18 下午3:17
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
from
app.api.app
import
app
from
app.api.engine
import
env
if
__name__
==
'__main__'
:
app
.
run
(
'0.0.0.0'
,
port
=
80
,
debug
=
True
)
app/api/app.py
0 → 100644
View file @
1180ae73
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : app.py
# @Time : 2020/11/18 下午12:45
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
from
flask
import
Flask
from
flask_restful
import
Api
from
app.controller.errorhandler
import
add_errorhandler
from
app.router.version1
import
add_route
app
=
Flask
(
__name__
)
app
.
config
[
"JSON_AS_ASCII"
]
=
False
app
.
config
.
update
(
RESTFUL_JSON
=
dict
(
ensure_ascii
=
False
))
api
=
Api
(
app
)
add_route
(
api
)
add_errorhandler
(
app
)
app/api/engine.py
View file @
1180ae73
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : app.py
# @Time : 2020/11/18 下午12:45
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
import
logging
import
redis
import
os
import
sys
import
yaml
from
sqlalchemy
import
create_engine
from
sqlalchemy.orm
import
sessionmaker
,
scoped_session
from
sqlalchemy.pool
import
NullPool
env
=
sys
.
argv
[
-
1
]
work_dir
=
os
.
getcwd
()
CFG_FILEPATH
=
work_dir
+
'/app/config/config.yaml'
config
=
yaml
.
load
(
open
(
CFG_FILEPATH
,
'r'
),
Loader
=
yaml
.
FullLoader
)
tamp_user_engine
=
create_engine
(
'mysql+pymysql://{user}:{password}@{host}:{port}/{db}?charset={charset}'
.
format
(
db
=
config
[
env
][
'MySQL'
][
'tamp_user_db'
],
host
=
config
[
env
][
'MySQL'
][
'host'
],
port
=
config
[
env
][
'MySQL'
][
'port'
],
user
=
config
[
env
][
'MySQL'
][
'user'
],
password
=
config
[
env
][
'MySQL'
][
'password'
],
charset
=
"utf8"
),
poolclass
=
NullPool
# max_overflow=0, # 超过连接池大小外最多创建的连接
# pool_size=10, # 连接池大小
# pool_timeout=5,
# pool_recycle=60
)
tamp_order_engine
=
create_engine
(
'mysql+pymysql://{user}:{password}@{host}:{port}/{db}?charset={charset}'
.
format
(
db
=
config
[
env
][
'MySQL'
][
'tamp_order_db'
],
host
=
config
[
env
][
'MySQL'
][
'host'
],
port
=
config
[
env
][
'MySQL'
][
'port'
],
user
=
config
[
env
][
'MySQL'
][
'user'
],
password
=
config
[
env
][
'MySQL'
][
'password'
],
charset
=
"utf8"
),
poolclass
=
NullPool
# max_overflow=0, # 超过连接池大小外最多创建的连接
# pool_size=10, # 连接池大小
# pool_timeout=5,
# pool_recycle=60
)
redis
=
redis
.
Redis
(
host
=
config
[
env
][
'redis'
][
'host'
],
port
=
config
[
env
][
'redis'
][
'port'
],
db
=
config
[
env
][
'redis'
][
'db'
],
password
=
config
[
env
][
'redis'
][
'password'
]
)
logging
.
basicConfig
(
level
=
logging
.
INFO
,
# filename=work_dir + config[env]['log']['filename'],
# filemode=config[env]['log']['filemode'],
format
=
config
[
env
][
'log'
][
'format'
],
datefmt
=
config
[
env
][
'log'
][
'datefmt'
]
)
class
TAMP_SQL
(
object
):
"""[sqlalchemy 封装]
Args:
object ([type]): [description]
Returns:
[type]: [description]
"""
def
__init__
(
self
,
db_engine
):
# 创建DBSession类型:
# self.DBSession = scoped_session(sessionmaker(bind=db_engine))
self
.
DBSession
=
sessionmaker
(
bind
=
db_engine
)
self
.
session
=
self
.
DBSession
()
def
__enter__
(
self
):
return
self
def
__exit__
(
self
,
exc_type
,
exc_val
,
exc_tb
):
try
:
self
.
session
.
commit
()
except
:
try
:
self
.
session
.
rollback
()
except
:
pass
finally
:
self
.
session
.
close
()
app/config/config.yaml
View file @
1180ae73
native
:
MySQL
:
tamp_order_db
:
tamp_order
tamp_user_db
:
tamp_user
host
:
47.101.189.151
port
:
31931
user
:
dev
password
:
qimeng123
redis
:
host
:
redis
port
:
6379
db
:
0
password
:
log
:
filename
:
/logs/financial_management.log
filemode
:
a
format
:
"
%(asctime)s
%(name)s
%(levelname)s
%(message)s"
datefmt
:
"
%Y-%m-%d
%H:%M:%S
%a"
dev
:
MySQL
:
tamp_order_db
:
tamp_order
tamp_user_db
:
tamp_user
host
:
mysql
port
:
3306
user
:
dev
password
:
qimeng123
redis
:
host
:
redis
port
:
6379
db
:
0
password
:
log
:
filename
:
/logs/financial_management.log
filemode
:
a
format
:
"
%(asctime)s
%(name)s
%(levelname)s
%(message)s"
datefmt
:
"
%Y-%m-%d
%H:%M:%S
%a"
test
:
MySQL
:
tamp_order_db
:
tamp_order
tamp_user_db
:
tamp_user
host
:
118.190.63.109
port
:
3306
user
:
root
password
:
'
@imeng123'
redis
:
host
:
redis.caixiaoquan.com
port
:
56379
db
:
0
password
:
qimeng123
log
:
filename
:
/logs/financial_management.log
filemode
:
a
format
:
"
%(asctime)s
%(name)s
%(levelname)s
%(message)s"
datefmt
:
"
%Y-%m-%d
%H:%M:%S
%a"
prod
:
MySQL
:
tamp_order_db
:
tamp_order
tamp_user_db
:
tamp_user
host
:
pc-uf666afrpfg8yj768.rwlb.rds.aliyuncs.com
port
:
3306
user
:
tamp_admin
password
:
'
@imeng123'
redis
:
host
:
r-uf6atruhdbq89enqz0.redis.rds.aliyuncs.com
port
:
6379
db
:
0
password
:
'
@imeng123'
log
:
filename
:
/logs/financial_management.log
filemode
:
a
format
:
"
%(asctime)s
%(name)s
%(levelname)s
%(message)s"
datefmt
:
"
%Y-%m-%d
%H:%M:%S
%a"
app/config/errors.py
0 → 100644
View file @
1180ae73
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : errors.py
# @Time : 2020/11/25 上午9:20
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
class
Errors
:
""""""
TOKEN_INVALID
=
'9001'
USER_ALREADY_EXISTS
=
'9002'
APPLE_VOCHER_INVALID
=
'9003'
TANGPU_BALANCE_NOT_ENOUGH
=
'9004'
APPLE_VOCHER_USED
=
'9005'
INPUT_PARAMS_ERROR
=
'9006'
REPEAT_BUY
=
'9007'
PROD_NOPRICE
=
'9008'
NO_ORDERS
=
'9009'
PARAMS_ERROR
=
'9010'
MSG
=
{
TOKEN_INVALID
:
'TOKEN失效'
,
USER_ALREADY_EXISTS
:
'用户已经存在'
,
APPLE_VOCHER_INVALID
:
'苹果证书无效'
,
TANGPU_BALANCE_NOT_ENOUGH
:
'探普币余额不足'
,
APPLE_VOCHER_USED
:
'该支付凭证已使用'
,
INPUT_PARAMS_ERROR
:
'入参错误'
,
REPEAT_BUY
:
'请勿重复购买商品'
,
PROD_NOPRICE
:
'商品未定价'
,
NO_ORDERS
:
'未找到订单'
,
PARAMS_ERROR
:
'入参错误'
}
app/controller/errorhandler.py
0 → 100644
View file @
1180ae73
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : errorhandler.py
# @Time : 2020/11/25 上午9:19
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
import
time
import
requests
from
flask
import
jsonify
,
make_response
,
request
from
app.api.engine
import
config
,
env
,
redis
from
app.config.errors
import
Errors
from
app.api.engine
import
logging
class
CustomFlaskErr
(
Exception
):
# 默认的返回码
status_code
=
200
# 自己定义了一个 return_code,作为更细颗粒度的错误代码
def
__init__
(
self
,
return_code
=
None
,
status_code
=
None
,
payload
=
None
):
Exception
.
__init__
(
self
)
self
.
return_code
=
return_code
if
status_code
is
not
None
:
self
.
status_code
=
status_code
self
.
payload
=
payload
# 构造要返回的错误代码和错误信息的 dict
def
to_dict
(
self
):
rv
=
dict
(
self
.
payload
or
())
# 增加 dict key: return code
rv
[
'statusCode'
]
=
self
.
return_code
# 增加 dict key: message, 具体内容由常量定义文件中通过 return_code 转化而来
rv
[
'message'
]
=
Errors
.
MSG
[
self
.
return_code
]
return
rv
def
add_errorhandler
(
app
):
@
app
.
errorhandler
(
CustomFlaskErr
)
def
handle_flask_error
(
error
):
# response 的 json 内容为自定义错误代码和错误信息
response
=
jsonify
(
error
.
to_dict
())
# response 返回 error 发生时定义的标准错误代码
response
.
status_code
=
error
.
status_code
return
response
@
app
.
errorhandler
(
500
)
def
handle_flask_error
(
error
):
# response 的 json 内容为自定义错误代码和错误信息
response
=
jsonify
({
'statusCode'
:
'9999'
,
'message'
:
'服务器错误'
})
# response 返回 error 发生时定义的标准错误代码
response
.
status_code
=
200
return
response
@
app
.
before_request
def
before_request
():
# token鉴权
# 安卓,ios取token
token
=
''
if
request
.
headers
.
get
(
'env'
)
in
[
'ios'
,
'android'
]:
token
=
request
.
headers
.
get
(
'tampToken'
,
''
)
elif
request
.
headers
.
get
(
'env'
)
in
[
'wechat'
,
'xcx'
]:
token
=
request
.
cookies
.
get
(
'qimsession'
,
''
)
if
request
.
path
in
[
'/tamp_order/micro_shop/topUpOrderNotify'
,
'/tamp_order/micro_shop/consumeOrderNotify'
]:
pass
else
:
user_id
=
redis
.
get
(
's:sid:'
+
token
)
if
not
user_id
:
logging
.
error
(
'鉴权失败,token:'
+
token
)
raise
CustomFlaskErr
(
Errors
.
TOKEN_INVALID
)
if
isinstance
(
user_id
,
bytes
):
request
.
user_id
=
user_id
.
decode
()
.
replace
(
'"'
,
''
)
else
:
request
.
user_id
=
user_id
.
replace
(
'"'
,
''
)
request
.
return_success
=
{
'statusCode'
:
"0000"
,
'message'
:
'ok'
}
@
app
.
after_request
def
after_request
(
response
):
response
.
headers
[
'Access-Control-Allow-Origin'
]
=
'*'
response
.
headers
[
'Access-Control-Allow-Methods'
]
=
'PUT,GET,POST,DELETE,OPTIONS'
response
.
headers
[
'Access-Control-Allow-Headers'
]
=
(
"Content-Type,Referer,Accept,Origin,User-Agent"
"field,Cache-Control,X-Requested-With"
)
return
response
app/router/version1.py
0 → 100644
View file @
1180ae73
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : version1.py
# @Time : 2020/11/18 下午3:31
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
# from app.controller.order import *
def
add_route
(
api
):
"""注册路由"""
# 充值订单
# api.add_resource(TopUpOrder, '/tamp_order/micro_shop/topUpOrder')
pass
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment