Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
Automat
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
冯佳佳
Automat
Commits
1b8aec4e
Commit
1b8aec4e
authored
Feb 20, 2022
by
Aeolus
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
转账接口开发
parent
d9056de0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
125 additions
and
16 deletions
+125
-16
models/models.py
+24
-1
myapps/pc_management/api/admin_portal.py
+5
-2
myapps/pc_management/api/rent_portal.py
+72
-13
service/wechat_service.py
+24
-0
utils/error_code.py
+0
-0
No files found.
models/models.py
View file @
1b8aec4e
...
...
@@ -92,6 +92,7 @@ class AdminOpenid(Base):
id
=
Column
(
INTEGER
(
11
),
primary_key
=
True
)
user_id
=
Column
(
INTEGER
(
11
),
nullable
=
False
)
user_no
=
Column
(
String
(
25
,
'utf8mb4_unicode_ci'
),
nullable
=
False
)
real_name
=
Column
(
String
(
25
,
'utf8mb4_unicode_ci'
),
nullable
=
False
)
openid
=
Column
(
String
(
40
,
'utf8mb4_unicode_ci'
),
nullable
=
False
)
status
=
Column
(
INTEGER
(
1
),
default
=
1
,
nullable
=
False
)
created_at
=
Column
(
DateTime
,
nullable
=
False
,
server_default
=
text
(
"CURRENT_TIMESTAMP"
))
...
...
@@ -155,14 +156,35 @@ class Business(Base):
updated_at
=
Column
(
TIMESTAMP
,
server_default
=
text
(
"CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"
))
class
DrawDetail
(
Base
):
__tablename__
=
'draw_detail'
id
=
Column
(
INTEGER
(
10
),
primary_key
=
True
)
draw_id
=
Column
(
INTEGER
(
11
),
nullable
=
False
)
open_id
=
Column
(
String
(
40
,
'utf8mb4_unicode_ci'
),
nullable
=
False
)
draw_no
=
Column
(
VARCHAR
(
40
),
nullable
=
False
,
index
=
True
)
payment_no
=
Column
(
VARCHAR
(
40
),
nullable
=
False
)
business_id
=
Column
(
INTEGER
(
11
),
nullable
=
False
)
draw_month
=
Column
(
VARCHAR
(
7
))
total
=
Column
(
INTEGER
(
11
))
real_total
=
Column
(
INTEGER
(
11
))
payment_time
=
Column
(
TIMESTAMP
)
status
=
Column
(
TINYINT
(
1
),
nullable
=
False
,
server_default
=
text
(
"'0'"
))
created_at
=
Column
(
TIMESTAMP
,
server_default
=
text
(
"CURRENT_TIMESTAMP"
))
updated_at
=
Column
(
TIMESTAMP
,
server_default
=
text
(
"CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"
))
class
DrawRecord
(
Base
):
__tablename__
=
'draw_record'
__table_args__
=
(
Index
(
'unique4draw_record_user_month'
,
'user_id'
,
'draw_month'
,
'business_id'
,
unique
=
True
),
)
id
=
Column
(
INTEGER
(
10
),
primary_key
=
True
)
user_id
=
Column
(
INTEGER
(
11
),
nullable
=
False
)
user_no
=
Column
(
String
(
25
,
'utf8mb4_unicode_ci'
),
nullable
=
False
)
draw_no
=
Column
(
VARCHAR
(
40
),
nullable
=
False
,
index
=
True
)
business_id
=
Column
(
INTEGER
(
1
0
))
business_id
=
Column
(
INTEGER
(
1
1
))
draw_month
=
Column
(
VARCHAR
(
7
))
total
=
Column
(
INTEGER
(
11
))
real_total
=
Column
(
INTEGER
(
11
))
...
...
@@ -171,6 +193,7 @@ class DrawRecord(Base):
status
=
Column
(
TINYINT
(
1
),
nullable
=
False
,
server_default
=
text
(
"'0'"
))
created_at
=
Column
(
TIMESTAMP
,
server_default
=
text
(
"CURRENT_TIMESTAMP"
))
updated_at
=
Column
(
TIMESTAMP
,
server_default
=
text
(
"CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"
))
check_admin_id
=
Column
(
INTEGER
(
11
))
class
Hatch
(
Base
):
...
...
myapps/pc_management/api/admin_portal.py
View file @
1b8aec4e
...
...
@@ -268,7 +268,9 @@ def run_edit_openid():
openids
=
json_data
[
'openids'
]
AdminOpenid
.
query
.
filter_by
(
user_id
=
g
.
user
.
id
)
.
update
({
"status"
:
-
1
})
for
openid
in
openids
:
for
i
in
openids
:
openid
=
i
[
"openid"
]
real_name
=
i
[
"real_name"
]
rs
=
AdminOpenid
.
query
.
filter_by
(
user_id
=
g
.
user
.
id
,
openid
=
openid
)
.
first
()
if
rs
:
rs
.
status
=
1
...
...
@@ -278,6 +280,7 @@ def run_edit_openid():
ao_model
.
user_id
=
g
.
user
.
id
ao_model
.
user_no
=
g
.
user
.
user_no
ao_model
.
openid
=
openid
ao_model
.
real_name
=
real_name
ao_model
.
status
=
1
db
.
session
.
add
(
ao_model
)
db
.
session
.
commit
()
...
...
@@ -288,6 +291,6 @@ def run_edit_openid():
def
run_openid_list
():
rs
=
AdminOpenid
.
query
.
filter_by
(
user_id
=
g
.
user
.
id
,
status
=
1
)
.
all
()
if
rs
:
return
BaseResponse
(
data
=
[
x
.
openid
for
x
in
rs
])
return
BaseResponse
(
data
=
[
{
"openid"
:
x
.
openid
,
"real_name"
:
x
.
real_name
}
for
x
in
rs
])
else
:
return
BaseResponse
(
data
=
[])
myapps/pc_management/api/rent_portal.py
View file @
1b8aec4e
...
...
@@ -10,6 +10,7 @@ author:Aeolus
"""
import
datetime
import
logging
import
random
import
time
from
flask
import
Blueprint
,
g
,
request
,
jsonify
...
...
@@ -18,11 +19,13 @@ from sqlalchemy.exc import SQLAlchemyError
from
config.commen_config
import
RENT_SALE_LOCK
from
config.wechat_config
import
platform_appid_config_list
,
pay_config_list
from
models.base_model
import
db
from
models.models
import
Rent
,
RentDetail
,
WxUser
,
Machine
,
RentRefund
,
DrawRecord
from
models.models
import
Rent
,
RentDetail
,
WxUser
,
Machine
,
RentRefund
,
DrawRecord
,
AdminAccount
,
AdminOpenid
,
\
DrawDetail
from
service.rent_service
import
RentService
from
service.wechat_service
import
WeChatPayService
from
utils.error_code
import
OPERATE_LEVEL_ERROR
,
ACTION_CODE_ERROR
,
REFUND_NOT_PRODUCTION_INFO
,
Param_Invalid_Error
,
\
REFUND_MONEY_IS_ZERO
,
REFUND_MONEY_ERROR
,
REFUND_LOCK_ERROR
REFUND_MONEY_IS_ZERO
,
REFUND_MONEY_ERROR
,
REFUND_LOCK_ERROR
,
NO_DRAW_RECORD_ERROR
,
ACCOUNT_NOT_EXISTS_ERROR
,
\
ADMIN_OPENID_NOT_EXIST_ERROR
from
utils.my_redis_cache
import
redis_client
from
utils.my_response
import
BaseResponse
...
...
@@ -418,8 +421,9 @@ def run_draw_list():
business_id
=
json_data
.
get
(
"business_id"
,
None
)
status
=
json_data
.
get
(
"status"
,
None
)
if
g
.
user
.
level
not
in
(
1
,
2
,
4
,
5
)
:
if
g
.
user
.
level
!=
1
:
return
jsonify
(
OPERATE_LEVEL_ERROR
)
select_sql
=
"""
select draw_record.draw_no,
draw_record.business_id,
...
...
@@ -475,16 +479,6 @@ def run_draw_list():
return_data
=
[]
if
result
:
for
info
in
result
:
"""
draw_record.draw_no,
draw_record.business_id,
draw_record.draw_month,
draw_record.total,
draw_record.real_total,
draw_record.rate,
draw_record.status,
business.business_name
"""
tmp
=
{
"business_id"
:
info
.
business_id
,
"draw_month"
:
info
.
draw_month
,
"total"
:
info
.
total
,
"real_total"
:
info
.
real_total
,
"rate"
:
info
.
rate
,
"status"
:
info
.
status
,
...
...
@@ -495,3 +489,68 @@ def run_draw_list():
return_data
.
append
(
tmp
)
return
BaseResponse
({
"list"
:
return_data
,
"page"
:
page
,
"pageSize"
:
page_size
,
"total_count"
:
total_count
})
@rent_route.route
(
"approve_draw"
,
methods
=
[
"POST"
])
def
run_approve_draw
():
"""
:return:
"""
json_data
=
request
.
get_json
()
draw_id
=
json_data
[
"draw_id"
]
if
g
.
user
.
level
!=
1
:
return
jsonify
(
OPERATE_LEVEL_ERROR
)
draw_record
=
DrawRecord
.
query
.
filter_by
(
id
=
draw_id
,
status
=
0
)
.
first
()
if
not
draw_record
:
return
jsonify
(
NO_DRAW_RECORD_ERROR
)
admin_account
=
AdminAccount
.
query
.
filter_by
(
id
=
draw_record
.
user_id
,
status
=
1
)
.
first
()
if
not
admin_account
:
return
jsonify
(
ACCOUNT_NOT_EXISTS_ERROR
)
admin_openid
=
AdminOpenid
.
query
.
filter_by
(
user_id
=
admin_account
.
id
,
status
=
1
)
.
all
()
if
not
admin_openid
:
return
jsonify
(
ADMIN_OPENID_NOT_EXIST_ERROR
)
openid_list
=
[
x
.
openid
for
x
in
admin_openid
]
draw_money
=
int
(
draw_record
.
real_total
/
len
(
openid_list
))
draw_money_list
=
[
draw_money
for
i
in
range
(
len
(
openid_list
)
-
1
)]
draw_money_list
.
append
(
draw_record
.
real_total
-
draw_money
*
(
len
(
openid_list
)
-
1
))
random
.
shuffle
(
draw_money_list
)
for
i
in
range
(
len
(
openid_list
)
-
1
):
draw_money
=
draw_money_list
[
i
]
open_id
=
openid_list
[
i
]
data
=
{
"user_id"
:
open_id
,
"amount"
:
draw_money
,
"out_trade_no"
:
RentService
.
create_order_no
(
prefix
=
"DR"
),
"desc"
:
draw_record
.
draw_month
+
"月份个人提现"
}
result
=
WeChatPayService
(
app_id
=
platform_appid_config_list
[
1
],
config_name
=
pay_config_list
[
1
])
.
do_transfer
(
data
)
if
result
:
draw_record
.
status
=
1
draw_record
.
check_admin_id
=
g
.
user
.
id
draw_record
.
draw_time
=
datetime
.
datetime
.
now
()
db
.
session
.
add
(
draw_record
)
db
.
session
.
commit
()
dd
=
DrawDetail
()
dd
.
draw_id
=
draw_record
.
id
dd
.
open_id
=
open_id
dd
.
draw_no
=
result
[
"out_trade_no"
]
dd
.
payment_no
=
result
[
"payment_no"
]
dd
.
payment_time
=
result
[
"payment_time"
]
dd
.
business_id
=
draw_record
.
business_id
dd
.
draw_month
=
draw_record
.
draw_month
dd
.
total
=
draw_record
.
real_total
dd
.
real_total
=
draw_money
dd
.
status
=
1
db
.
session
.
add
(
dd
)
db
.
session
.
commit
()
return
BaseResponse
(
data
=
draw_money_list
)
service/wechat_service.py
View file @
1b8aec4e
...
...
@@ -82,6 +82,30 @@ class WeChatPayService(WeChatPay):
logger
.
info
(
e
)
continue
def
do_transfer
(
self
,
refund_data
):
"""
:param
refund_data:
:return:
"""
for
i
in
range
(
3
):
try
:
result
=
self
.
transfer
.
transfer
(
**
refund_data
)
print
(
result
)
return_code
=
result
[
'return_code'
]
result_code
=
result
.
get
(
'result_code'
)
if
return_code
!=
'SUCCESS'
or
result_code
!=
'SUCCESS'
:
continue
else
:
if
result
.
get
(
"err_code"
,
None
):
continue
return
result
except
Exception
as
e
:
logger
.
info
(
e
)
continue
@staticmethod
def
get_nonce_str
():
'''
...
...
utils/error_code.py
View file @
1b8aec4e
This diff is collapsed.
Click to expand it.
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