Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mancheng
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
0
Merge Requests
0
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
Administrator
mancheng
Commits
adcaf3a2
Commit
adcaf3a2
authored
Mar 08, 2022
by
dong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix20220308
parent
1d3f6d87
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1231 additions
and
1152 deletions
+1231
-1152
apps/manage/view_org.py
+702
-660
apps/models.py
+73
-32
apps/util.py
+1
-1
apps/utils/send_phone_info.py
+30
-1
apps/view_user/view.py
+355
-287
apps/view_user/view_other.py
+70
-171
No files found.
apps/manage/view_org.py
View file @
adcaf3a2
import
time
from
datetime
import
datetime
from
flask
import
request
,
jsonify
,
current_app
,
g
from
flask
import
request
,
jsonify
,
current_app
,
g
from
apps.manage
import
api_power
from
apps.manage
import
api_power
from
apps.models
import
*
from
apps.models
import
*
from
apps.utils.response_code
import
RET
from
apps.utils.response_code
import
RET
from
apps.util
import
login_required
from
apps.util
import
login_required
,
verify_token
# 获取上级或下级统筹机构 (ok)
@api_power.route
(
"/uadOrg"
,
methods
=
[
"GET"
])
@login_required
def
uad_org
():
try
:
gover
=
Government
.
query
.
all
()
data
=
[{
"label"
:
i
.
name
,
"value"
:
i
.
id
}
for
i
in
gover
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误"
)
# 获取上级机构后的统筹机构 (ok)
@api_power.route
(
"/downOrg"
,
methods
=
[
"POST"
])
@login_required
def
down_org
():
req_dict
=
request
.
get_json
()
_id
=
req_dict
.
get
(
"id"
)
# 机构名称
try
:
if
_id
:
gover
=
Government
.
query
.
all
()
data
=
[{
"label"
:
i
.
name
,
"value"
:
i
.
id
}
for
i
in
gover
if
i
.
id
!=
_id
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
else
:
gover
=
Government
.
query
.
all
()
data
=
[{
"label"
:
i
.
name
,
"value"
:
i
.
id
}
for
i
in
gover
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误"
)
# 新增机构组织
(ok)
# 新增机构组织
@api_power.route
(
"/
a
ddOrg"
,
methods
=
[
"POST"
])
@api_power.route
(
"/
A
ddOrg"
,
methods
=
[
"POST"
])
@login_required
@login_required
def
add_org
():
def
add_org
():
'''
'''
不得重名
不得重名
'''
'''
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
user_name
=
User
.
query
.
get
(
id
=
user_id
)
.
name
req_dict
=
request
.
get_json
()
req_dict
=
request
.
get_json
()
name
=
req_dict
.
get
(
"name"
)
# 机构名称
org_
name
=
req_dict
.
get
(
"name"
)
# 机构名称
forg
=
req_dict
.
get
(
"forg"
)
# 上级机构 id
#
forg = req_dict.get("forg") # 上级机构 id
charge
=
req_dict
.
get
(
"charge"
)
# 机构负责人
charge
=
req_dict
.
get
(
"charge"
)
# 机构负责人
charge_phone
=
req_dict
.
get
(
"charge_phone"
)
# 负责人电话
charge_phone
=
req_dict
.
get
(
"charge_phone"
)
# 负责人电话
sublist
=
req_dict
.
get
(
"sublist"
)
# 统筹机构id list["1","2"...]
#
sublist = req_dict.get("sublist") # 统筹机构id list["1","2"...]
# 校验参数完整性
# 校验参数完整性
if
not
all
([
name
]):
if
not
all
([
org_
name
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
try
:
gover
=
Gov
ernment
.
query
.
filter_by
(
name
=
name
)
.
first
()
gover
=
Gov
Organization
.
query
.
filter_by
(
name
=
org_
name
)
.
first
()
if
gover
:
# 机构名相同,提示其错误
if
gover
:
# 机构名相同,提示其错误
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"机构名重复"
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"机构名重复"
)
goverment
=
Gov
ernment
(
name
=
name
)
# 创建机构
goverment
=
Gov
Organization
(
name
=
org_
name
)
# 创建机构
if
charge
:
if
charge
:
goverment
.
charge
=
charge
goverment
.
charge
=
charge
if
charge_phone
:
if
charge_phone
:
goverment
.
charge_phone
=
charge_phone
goverment
.
charge_phone
=
charge_phone
if
user_name
:
goverment
.
add_person
=
user_name
add_time
=
datetime
.
now
()
goverment
.
add_time
=
add_time
db
.
session
.
add
(
goverment
)
# 添加到数据库
db
.
session
.
add
(
goverment
)
# 添加到数据库
if
forg
:
# 如果有上级机构,就让上级机构统筹新增机构
#
if forg: # 如果有上级机构,就让上级机构统筹新增机构
fgover
=
Government
.
query
.
get
(
forg
)
#
fgover = Government.query.get(forg)
fgover
.
followed
.
append
(
goverment
)
#
fgover.followed.append(goverment)
for
ctr
in
sublist
:
# 如果有统筹机构,就让新增机构统筹
#
for ctr in sublist: # 如果有统筹机构,就让新增机构统筹
sgover
=
Government
.
query
.
get
(
ctr
)
#
sgover = Government.query.get(ctr)
goverment
.
followed
.
append
(
sgover
)
#
goverment.followed.append(sgover)
db
.
session
.
commit
()
# 提交数据库
db
.
session
.
commit
()
# 提交数据库
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
except
Exception
as
e
:
except
Exception
as
e
:
...
@@ -82,121 +60,82 @@ def add_org():
...
@@ -82,121 +60,82 @@ def add_org():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
#
组织架构管理,获取机构单位数据(ok)
#
查询添加过的机构信息
@api_power.route
(
"/
organization"
,
methods
=
[
"POS
T"
])
@api_power.route
(
"/
GetOrg"
,
methods
=
[
"GE
T"
])
@login_required
@login_required
def
organization
():
def
get_org
():
req_dict
=
request
.
get_json
()
page
=
req_dict
.
get
(
"page"
)
perpage
=
req_dict
.
get
(
"perpage"
)
# 校验参数完整性
if
not
all
([
page
,
perpage
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
try
:
# goverment = Government.query.paginate(page, perpage).items
org
=
GovOrganization
.
query
.
all
()
goverment
=
Government
.
query
.
all
()
data
=
[{
"id"
:
i
.
id
,
"name"
:
i
.
name
,
"pnums"
:
i
.
pnums
,
size
=
Government
.
query
.
count
()
"charge"
:
i
.
charge
,
"charge_phone"
:
i
.
charge_phone
,
df
=
[{
"id"
:
gover
.
id
,
"add_person"
:
i
.
add_person
,
"add_time"
:
i
.
add_time
,
"name"
:
gover
.
name
,
"edit_person"
:
i
.
edit_person
,
"edit_time"
:
i
.
edit_time
}
"pnums"
:
gover
.
pnums
if
gover
.
pnums
else
0
,
for
i
in
org
]
"charge"
:
gover
.
charge
if
gover
.
charge
else
"-"
,
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
"charge_phone"
:
gover
.
charge_phone
if
gover
.
charge_phone
else
"-"
,
"cate"
:
1
}
for
gover
in
goverment
]
data
=
{
"df"
:
df
,
"size"
:
size
}
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查找成功"
,
data
=
data
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误"
,
data
=
[])
# 组织架构获取部门和组(Ok)
@api_power.route
(
"/sectionGroup"
,
methods
=
[
"POST"
])
@login_required
def
section_group
():
req_dict
=
request
.
get_json
()
_id
=
req_dict
.
get
(
"id"
)
# 当前机构或者部门的id
cate
=
req_dict
.
get
(
"cate"
)
# 分类标识,1机构,2部门
# 校验参数完整性
if
not
all
([
_id
,
cate
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
if
cate
==
1
:
# 查询当前机构下的部门
goverment
=
Government
.
query
.
get
(
_id
)
sections
=
goverment
.
sections
# 查询当前机构下的部门list
data
=
[{
"id"
:
sec
.
id
,
"name"
:
sec
.
name
,
"pnums"
:
sec
.
pnums
if
sec
.
pnums
else
0
,
"charge"
:
sec
.
charge
if
sec
.
charge
else
"-"
,
"charge_phone"
:
sec
.
charge_phone
if
sec
.
charge_phone
else
"-"
,
"cate"
:
2
}
for
sec
in
sections
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查找成功"
,
data
=
data
)
if
cate
==
2
:
# 查询当前部门下的组
section
=
Section
.
query
.
get
(
_id
)
groups
=
section
.
groups
# 查询当前部门下的组list
data
=
[{
"id"
:
group
.
id
,
"name"
:
group
.
name
,
"pnums"
:
group
.
pnums
if
group
.
pnums
else
0
,
"charge"
:
group
.
charge
if
group
.
charge
else
"-"
,
"charge_phone"
:
group
.
charge_phone
if
group
.
charge_phone
else
"-"
,
"cate"
:
3
}
for
group
in
groups
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查找成功"
,
data
=
data
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"暂无下级信息"
,
data
=
[])
except
Exception
as
e
:
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误"
,
data
=
[]
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误"
)
# 新增下级部门(ok)
# 新增下级部门(ok)
@api_power.route
(
"/
addSub
"
,
methods
=
[
"POST"
])
@api_power.route
(
"/
AddSubDepartment
"
,
methods
=
[
"POST"
])
@login_required
@login_required
def
add_sub
():
def
add_sub_department
():
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
user_name
=
User
.
query
.
get
(
id
=
user_id
)
.
name
req_dict
=
request
.
get_json
()
req_dict
=
request
.
get_json
()
_
id
=
req_dict
.
get
(
"id"
)
# 当前机构或者部门id
id
=
req_dict
.
get
(
"id"
)
# 当前机构或者部门id
cate
=
req_dict
.
get
(
"cate"
)
# 分类标识,1机构,2部门
#
cate = req_dict.get("cate") # 分类标识,1机构,2部门
name
=
req_dict
.
get
(
"name"
)
# 部门或组名称
name
=
req_dict
.
get
(
"name"
)
# 部门或组名称
pnums
=
req_dict
.
get
(
"pnums"
)
# 机构负责人
# pnums = req_dict.get("pnums") # 人数
charge
=
req_dict
.
get
(
"charge"
)
# 机构负责人
charge
=
req_dict
.
get
(
"charge"
)
# 机构负责人
charge_phone
=
req_dict
.
get
(
"charge_phone"
)
# 负责人电话
charge_phone
=
req_dict
.
get
(
"charge_phone"
)
# 负责人电话
# 校验参数完整性
# 校验参数完整性
if
not
all
([
_id
,
cate
,
name
]):
# if not all([_id, cate, name]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
if
not
all
([
id
,
name
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
try
:
if
cate
==
1
:
# 增加部门
# if cate == 1: # 增加部门
sec
=
Section
.
query
.
filter_by
(
name
=
name
,
goverment_id
=
_id
)
.
first
()
sec
=
GovDepartment
.
query
.
filter_by
(
name
=
name
,
goverment_org_id
=
id
)
.
first
()
if
sec
:
# 一个机构下部门名不能重复
if
sec
:
# 一个机构下部门名不能重复
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"部门名重复"
)
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"部门名重复"
)
goverment
=
Government
.
query
.
get
(
_id
)
gov_organization
=
GovOrganization
.
query
.
get
(
id
)
section
=
Section
(
name
=
name
,
goverment_id
=
_id
)
gov_department
=
GovDepartment
(
name
=
name
,
goverment_org_id
=
id
)
if
pnums
:
# if pnums:
section
.
pnums
=
pnums
# gov_department.pnums = pnums
if
charge
:
if
charge
:
section
.
charge
=
charge
gov_department
.
charge
=
charge
if
charge_phone
:
if
charge_phone
:
section
.
charge_phone
=
charge_phone
gov_department
.
charge_phone
=
charge_phone
db
.
session
.
add
(
section
)
# 添加部门
if
user_name
:
goverment
.
sections
.
append
(
section
)
# 外键关系添加
gov_department
.
add_person
=
user_name
db
.
session
.
commit
()
# 数据库提交
add_time
=
datetime
.
now
()
if
cate
==
2
:
# 增加组
gov_department
.
add_time
=
add_time
gro
=
Group
.
query
.
filter_by
(
name
=
name
,
section_id
=
_id
)
.
first
()
db
.
session
.
add
(
gov_department
)
# 添加部门
if
gro
:
# 一个部门下组名不能重复
gov_organization
.
government_departments
.
append
(
gov_department
)
# 外键关系添加
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"组名重复"
)
db
.
session
.
commit
()
# 数据库提交
section
=
Section
.
query
.
get
(
_id
)
# if cate == 2: # 增加组
group
=
Group
(
name
=
name
,
section_id
=
_id
)
# gro = Group.query.filter_by(name=name, gov_department_id=_id).first()
if
pnums
:
# if gro: # 一个部门下组名不能重复
group
.
pnums
=
pnums
# return jsonify(code=RET.DATAERR, msg="组名重复")
if
charge
:
# gov_department = Section.query.get(_id)
group
.
charge
=
charge
# group = Group(name=name, section_id=_id)
if
charge_phone
:
# if pnums:
group
.
charge_phone
=
charge_phone
# group.pnums = pnums
db
.
session
.
add
(
group
)
# 添加组
# if charge:
section
.
groups
.
append
(
group
)
# 添加关系
# group.charge = charge
db
.
session
.
commit
()
# 提交
# if charge_phone:
if
cate
==
3
:
# group.charge_phone = charge_phone
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"暂无下级机构,请勿继续添加"
)
# db.session.add(group) # 添加组
# section.groups.append(group) # 添加关系
# db.session.commit() # 提交
# if cate == 3:
# return jsonify(code=RET.OK, msg="暂无下级机构,请勿继续添加")
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
except
Exception
as
e
:
except
Exception
as
e
:
# 操作失败,数据回滚
# 操作失败,数据回滚
...
@@ -205,521 +144,624 @@ def add_sub():
...
@@ -205,521 +144,624 @@ def add_sub():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
# 删除组织机构或者部门和组(需要先删除人员)--------OK
@api_power.route
(
"/deleteOrg"
,
methods
=
[
"POST"
])
@login_required
def
deleteorg
():
req_dict
=
request
.
get_json
()
_id
=
req_dict
.
get
(
"id"
)
# 待删除的,部门、机构、组、id
cate
=
req_dict
.
get
(
"cate"
)
# 待删除数据的类别 1政府,2部门,3组
# 校验参数完整性
if
not
all
([
_id
,
cate
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
if
cate
==
1
:
# 删除机构
gover
=
Government
.
query
.
get
(
_id
)
# 当前机构对象
section
=
gover
.
sections
# 当前机构下的部门对象列表
if
len
(
section
)
>
0
:
# 有部门就需要先删除部门
return
jsonify
(
code
=
RET
.
REQERR
,
msg
=
"当前机构有部门存在,请清除后再操作"
)
unums
=
User
.
query
.
filter_by
(
unit
=
gover
.
name
,
status
=
1
)
.
count
()
# 当前机构下通过审核人员
if
unums
>
0
:
# 当前部门有人,先到机构详情,进行人员的删除
return
jsonify
(
code
=
RET
.
REQERR
,
msg
=
"当前机构有人员存在,请清除后再操作"
)
db
.
session
.
delete
(
gover
)
# 无人无部门,删除
db
.
session
.
commit
()
# 提交
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功"
)
if
cate
==
2
:
# 删除部门
section
=
Section
.
query
.
get
(
_id
)
gover
=
section
.
goverment
# 部门所属的机构
group
=
section
.
groups
# 当前部门的组对象list
if
len
(
group
)
>
0
:
# 如果有组先删除组
return
jsonify
(
code
=
RET
.
REQERR
,
msg
=
"当前部门有组存在,请清除后再操作"
)
unums
=
User
.
query
.
filter_by
(
unit
=
gover
.
name
,
section
=
section
.
name
,
status
=
1
)
.
count
()
# # 已经通过审核的人数
if
unums
>
0
:
# 当前部门有人,先到部门详情,进行部门人员的删除
return
jsonify
(
code
=
RET
.
REQERR
,
msg
=
"当前部门有人员存在,请清除后再操作"
)
gover
.
sections
.
remove
(
section
)
# 当前部门没有人,没有组,删除部门之前需要先删除与之相关的机构关系
db
.
session
.
delete
(
section
)
# 删除
db
.
session
.
commit
()
# 提交
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功"
)
if
cate
==
3
:
# 删除组
group
=
Group
.
query
.
get
(
_id
)
# 当前组信息
section
=
group
.
section
# 组属于的部门,单个对象
gover
=
section
.
goverment
# 部门属于的机构,单个对象
unums
=
User
.
query
.
filter_by
(
unit
=
gover
.
name
,
section
=
section
.
name
,
group
=
group
.
name
,
status
=
1
)
.
count
()
# 已经通过审核的人数
if
unums
>
0
:
# 当前组有人,先到组详情,进行组员的删除
return
jsonify
(
code
=
RET
.
REQERR
,
msg
=
"当前组有人员存在,请清除后再操作"
)
section
.
groups
.
remove
(
group
)
# 当前组没有人,删除组之前需要先删除与之相关的部门关系
db
.
session
.
delete
(
group
)
# 删除
db
.
session
.
commit
()
# 提交
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功"
)
else
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
except
Exception
as
e
:
# 操作失败,回滚数据库
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作失败"
)
''''''
# 获取机构,部门或者组详情()
@api_power.route
(
"/orgDetail"
,
methods
=
[
"POST"
])
@login_required
def
org_detail
():
req_dict
=
request
.
get_json
()
_id
=
req_dict
.
get
(
"id"
)
# id
cate
=
req_dict
.
get
(
"cate"
)
# 1机构,2部门,3组
# 校验参数完整性
if
not
all
([
_id
,
cate
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
if
cate
==
1
:
# 政府机构详情
goverment
=
Government
.
query
.
get
(
_id
)
# 政府信息
data
=
{
"id"
:
goverment
.
id
,
"name"
:
goverment
.
name
,
# 机构名
"charge"
:
goverment
.
charge
if
goverment
.
charge
else
"-"
,
# 主管
"phone"
:
goverment
.
charge_phone
if
goverment
.
charge_phone
else
"-"
,
# 电话
"pnums"
:
goverment
.
pnums
if
goverment
.
pnums
else
0
,
# 机构人数
"secnums"
:
len
(
goverment
.
sections
),
# 部门数
"func"
:
goverment
.
function
if
goverment
.
function
else
""
,
# 政府职能
"cate"
:
cate
}
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
if
cate
==
2
:
# 部门详情
section
=
Section
.
query
.
get
(
_id
)
# 政府信息
data
=
{
"id"
:
section
.
id
,
"name"
:
section
.
name
,
# 机构名
"charge"
:
section
.
charge
if
section
.
charge
else
"-"
,
# 主管
"phone"
:
section
.
charge_phone
if
section
.
charge_phone
else
"-"
,
# 电话
"pnums"
:
section
.
pnums
if
section
.
pnums
else
0
,
# 机构人数
"secnums"
:
len
(
section
.
groups
),
# 组数
"func"
:
section
.
function
if
section
.
function
else
""
,
# 部门职能
"cate"
:
cate
}
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
if
cate
==
3
:
# 组详情
group
=
Group
.
query
.
get
(
_id
)
# 政府信息
data
=
{
"id"
:
group
.
id
,
"name"
:
group
.
name
,
# 机构名
"charge"
:
group
.
charge
if
group
.
charge
else
"-"
,
# 主管
"phone"
:
group
.
charge_phone
if
group
.
charge_phone
else
"-"
,
# 电话
"pnums"
:
group
.
pnums
if
group
.
pnums
else
0
,
# 机构人数
"secnums"
:
"-"
,
"func"
:
group
.
function
if
group
.
function
else
""
,
# 部门职能
"cate"
:
cate
}
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"参数错误"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
# 编辑机构,部门或者组详情
@api_power.route
(
"/editDetail"
,
methods
=
[
"POST"
])
@login_required
def
edit_detail
():
req_dict
=
request
.
get_json
()
_id
=
req_dict
.
get
(
"id"
)
# 部门id
cate
=
req_dict
.
get
(
"cate"
)
# 1机构,2部门,3组
name
=
req_dict
.
get
(
"name"
)
# 1机构,2部门,3组 的名称
charge
=
req_dict
.
get
(
"charge"
)
# 局内领导
charge_phone
=
req_dict
.
get
(
"charge_phone"
)
# 联系方式
func
=
req_dict
.
get
(
"func"
)
# 部门职能
pnums
=
str
(
req_dict
.
get
(
"pnums"
))
# 人数
secnums
=
str
(
req_dict
.
get
(
"secnums"
))
# 部门组人数
# 校验参数完整性
if
not
all
([
_id
,
name
,
charge
,
charge_phone
,
pnums
,
secnums
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
# # 获取上级或下级统筹机构 (ok)
if
cate
==
1
:
# 机构
# @api_power.route("/uadOrg", methods=["GET"])
gover
=
Government
.
query
.
filter_by
(
name
=
name
)
.
filter
(
Government
.
id
!=
_id
)
.
first
()
if
gover
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"机构名不可重复"
)
gover
=
Government
.
query
.
get
(
_id
)
gover
.
name
=
name
gover
.
charge
=
charge
gover
.
charge_phone
=
charge_phone
gover
.
function
=
func
gover
.
pnums
=
pnums
gover
.
secnums
=
secnums
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"修改成功"
)
if
cate
==
2
:
# 部门
section
=
Section
.
query
.
get
(
_id
)
# 当前部门
gover_id
=
section
.
goverment_id
# 当前部门的机构id
sec
=
Section
.
query
.
filter_by
(
name
=
name
,
goverment_id
=
gover_id
)
.
filter
(
Section
.
id
!=
_id
)
.
first
()
if
sec
:
# 当前机构下此部门名已存在
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"部门名不可重复"
)
section
.
name
=
name
section
.
charge
=
charge
section
.
charge_phone
=
charge_phone
section
.
function
=
func
section
.
pnums
=
pnums
section
.
secnums
=
secnums
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"修改成功"
)
if
cate
==
3
:
# 组
group
=
Group
.
query
.
get
(
_id
)
# 当前组
sec_id
=
group
.
section_id
# 当前组的部门id
gro
=
Group
.
query
.
filter_by
(
name
=
name
,
section_id
=
sec_id
)
.
filter
(
Group
.
id
!=
_id
)
.
first
()
if
gro
:
# 当前部门下此组名已存在
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"组名不可重复"
)
group
.
name
=
name
group
.
charge
=
charge
group
.
charge_phone
=
charge_phone
group
.
function
=
func
group
.
pnums
=
pnums
group
.
secnums
=
secnums
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"修改成功"
)
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"cate参数错误"
)
except
Exception
as
e
:
# 操作失败,回滚数据库
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
# 获取机构,部门或者组的人员
@api_power.route
(
"/orgStaff"
,
methods
=
[
"POST"
])
@login_required
def
org_staff
():
req_dict
=
request
.
get_json
()
_id
=
req_dict
.
get
(
"id"
)
# 部门id
cate
=
req_dict
.
get
(
"cate"
)
# 1机构,2部门,3组
# 校验参数完整性
if
not
all
([
_id
,
cate
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
if
cate
==
1
:
# 政府机构详情
goverment
=
Government
.
query
.
get
(
_id
)
# 人员列表
staff
=
User
.
query
.
filter_by
(
status
=
1
,
unit
=
goverment
.
name
)
.
filter
(
User
.
role_id
.
isnot
(
None
))
.
all
()
# 通过审核的员工列表
staff
=
[{
"id"
:
i
.
id
,
"name"
:
i
.
real_name
,
"position"
:
i
.
position
,
"section"
:
i
.
section
}
for
i
in
staff
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
staff
)
if
cate
==
2
:
# 部门详情
section
=
Section
.
query
.
get
(
_id
)
# 人员列表
staff
=
User
.
query
.
filter_by
(
status
=
1
,
unit
=
section
.
goverment
.
name
,
section
=
section
.
name
)
.
filter
(
User
.
role_id
.
isnot
(
None
))
.
all
()
# 通过审核的员工列表
staff
=
[{
"id"
:
i
.
id
,
"name"
:
i
.
real_name
,
"position"
:
i
.
position
,
"section"
:
i
.
section
}
for
i
in
staff
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
staff
)
if
cate
==
3
:
# 组详情
group
=
Group
.
query
.
get
(
_id
)
# 人员列表
staff
=
User
.
query
.
filter_by
(
status
=
1
,
unit
=
group
.
section
.
goverment
.
name
,
section
=
group
.
section
.
name
,
group
=
group
.
name
)
.
filter
(
User
.
role_id
.
isnot
(
None
))
.
all
()
# 通过审核的员工列表
staff
=
[{
"id"
:
i
.
id
,
"name"
:
i
.
real_name
,
"position"
:
i
.
position
,
"section"
:
i
.
section
}
for
i
in
staff
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
staff
)
else
:
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"参数错误"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
# 机构部门或这组的待新增人员列表-------------------?
@api_power.route
(
"/listOfStaff"
,
methods
=
[
"POST"
])
# @login_required
# @login_required
def
list_Staff
():
# def uad_org():
req_dict
=
request
.
get_json
()
# try:
_id
=
req_dict
.
get
(
"id"
)
# 当前机构id
# gover = Government.query.all()
cate
=
req_dict
.
get
(
"cate"
)
# 1机构 2部门 3组
# data = [{"label": i.name, "value": i.id} for i in gover]
# return jsonify(code=RET.OK, msg="查询成功", data=data)
# 校验参数完整性
# except Exception as e:
if
not
all
([
_id
]):
# current_app.logger.error(e)
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
# return jsonify(code=RET.DBERR, msg="数据库查询错误")
try
:
#
if
cate
==
1
:
# 政府
#
gover
=
Government
.
query
.
get
(
_id
)
# # 获取上级机构后的统筹机构 (ok)
if
gover
:
# @api_power.route("/downOrg", methods=["POST"])
name
=
gover
.
name
user
=
User
.
query
.
filter_by
(
unit
=
name
)
.
filter
(
User
.
role_id
.
isnot
(
None
))
.
all
()
data
=
[{
"id"
:
i
.
id
,
"real_name"
:
i
.
real_name
if
i
.
real_name
else
i
.
id
}
for
i
in
user
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
else
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
if
cate
==
2
:
# 部门
section
=
Section
.
query
.
get
(
_id
)
if
section
:
gover
=
section
.
goverment
user
=
User
.
query
.
filter_by
(
unit
=
gover
.
name
)
.
filter
(
User
.
role_id
.
isnot
(
None
))
.
all
()
data
=
[{
"id"
:
i
.
id
,
"real_name"
:
i
.
real_name
if
i
.
real_name
else
i
.
id
}
for
i
in
user
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
else
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
if
cate
==
3
:
# 组
group
=
Group
.
query
.
get
(
_id
)
if
group
:
section
=
group
.
section
gover
=
section
.
goverment
user
=
User
.
query
.
filter_by
(
unit
=
gover
.
name
)
.
filter
(
User
.
role_id
.
isnot
(
None
))
.
all
()
data
=
[{
"id"
:
i
.
id
,
"real_name"
:
i
.
real_name
if
i
.
real_name
else
i
.
id
}
for
i
in
user
]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
else
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误"
)
# 机构部门或这组的人员 新增(人员部门调度)
@api_power.route
(
"/addStaffOrg"
,
methods
=
[
"POST"
])
# @login_required
# @login_required
def
add_staff
():
# def down_org():
req_dict
=
request
.
get_json
()
# req_dict = request.get_json()
_id
=
req_dict
.
get
(
"id"
)
# 部门机构组id
# _id = req_dict.get("id") # 机构名称
cate
=
req_dict
.
get
(
"cate"
)
# 1政府,2部门,3组
# try:
uid
=
req_dict
.
get
(
"uid"
)
# 员工id
# if _id:
level
=
req_dict
.
get
(
"level"
)
# 职级(角色id)
# gover = Government.query.all()
position
=
req_dict
.
get
(
"position"
)
# 职务,文本框随意填
# data = [{"label": i.name, "value": i.id} for i in gover if i.id != _id]
# return jsonify(code=RET.OK, msg="查询成功", data=data)
# 校验参数完整性
# else:
if
not
all
([
_id
,
level
,
position
]):
# gover = Government.query.all()
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
# data = [{"label": i.name, "value": i.id} for i in gover]
try
:
# return jsonify(code=RET.OK, msg="查询成功", data=data)
user
=
User
.
query
.
get
(
uid
)
# except Exception as e:
if
user
:
# current_app.logger.error(e)
if
cate
==
1
:
# 政府机构
# return jsonify(code=RET.DBERR, msg="数据库查询错误")
user
.
section
=
Government
.
query
.
get
(
_id
)
.
name
#
# 删除原有角色
#
role
=
Role
.
query
.
get
(
user
.
role_id
)
# # 组织架构管理,获取机构单位数据(ok)
role
.
users
.
remove
(
user
)
# @api_power.route("/organization", methods=["POST"])
# 添加新角色
# @login_required
role
=
Role
.
query
.
get
(
level
)
# def organization():
role
.
users
.
append
(
user
)
# req_dict = request.get_json()
# page = req_dict.get("page")
user
.
position
=
position
# perpage = req_dict.get("perpage")
db
.
session
.
commit
()
# # 校验参数完整性
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
# if not all([page, perpage]):
if
cate
==
2
:
# 部门调度
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
user
.
section
=
Section
.
query
.
get
(
_id
)
.
name
# try:
# 删除原有角色
# # goverment = Government.query.paginate(page, perpage).items
role
=
Role
.
query
.
get
(
user
.
role_id
)
# goverment = Government.query.all()
role
.
users
.
remove
(
user
)
# size = Government.query.count()
# 添加新角色
# df = [{"id": gover.id,
role
=
Role
.
query
.
get
(
level
)
# "name": gover.name,
role
.
users
.
append
(
user
)
# "pnums": gover.pnums if gover.pnums else 0,
# "charge": gover.charge if gover.charge else "-",
user
.
position
=
position
# "charge_phone": gover.charge_phone if gover.charge_phone else "-",
db
.
session
.
commit
()
# "cate": 1} for gover in goverment]
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
# data = {"df": df, "size": size}
if
cate
==
3
:
# 组调度
# return jsonify(code=RET.OK, msg="查找成功", data=data)
user
.
group
=
Group
.
query
.
get
(
_id
)
.
name
# except Exception as e:
# 删除原有角色
# current_app.logger.error(e)
role
=
Role
.
query
.
get
(
user
.
role_id
)
# return jsonify(code=RET.DBERR, msg="数据库查询错误", data=[])
role
.
users
.
remove
(
user
)
#
# 添加新角色
#
role
=
Role
.
query
.
get
(
level
)
# # 组织架构获取部门和组(Ok)
role
.
users
.
append
(
user
)
# @api_power.route("/sectionGroup", methods=["POST"])
# @login_required
user
.
position
=
position
# def section_group():
db
.
session
.
commit
()
# req_dict = request.get_json()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
# _id = req_dict.get("id") # 当前机构或者部门的id
# cate = req_dict.get("cate") # 分类标识,1机构,2部门
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
#
else
:
# # 校验参数完整性
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
# if not all([_id, cate]):
except
Exception
as
e
:
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# 操作失败,回滚数据库
#
db
.
session
.
rollback
()
# try:
current_app
.
logger
.
error
(
e
)
# if cate == 1: # 查询当前机构下的部门
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
# goverment = Government.query.get(_id)
# sections = goverment.sections # 查询当前机构下的部门list
# data = [{"id": sec.id,
# # 测试
# "name": sec.name,
# @api_power.route("/cs", methods=["get"])
# "pnums": sec.pnums if sec.pnums else 0,
# def ces():
# "charge": sec.charge if sec.charge else "-",
# gover = Government.query.get(18)
# "charge_phone": sec.charge_phone if sec.charge_phone else "-",
# section = Section.query.get(37)
# "cate": 2} for sec in sections]
# print(gover,section)
# return jsonify(code=RET.OK, msg="查找成功", data=data)
# # section.goverment.remove(gover)
# if cate == 2: # 查询当前部门下的组
# gover.sections.remove(section)
# section = Section.query.get(_id)
# db.session.commit()
# groups = section.groups # 查询当前部门下的组list
# return "ok"
# data = [{"id": group.id,
''''''
# "name": group.name,
# "pnums": group.pnums if group.pnums else 0,
# "charge": group.charge if group.charge else "-",
# 机构部门或这组的人员 删除(人员失去组,机构项目)
# "charge_phone": group.charge_phone if group.charge_phone else "-",
@api_power.route
(
"/deleteStaffOrg"
,
methods
=
[
"POST"
])
# "cate": 3} for group in groups]
@login_required
# return jsonify(code=RET.OK, msg="查找成功", data=data)
def
delete_staff
():
# return jsonify(code=RET.OK, msg="暂无下级信息", data=[])
req_dict
=
request
.
get_json
()
# except Exception as e:
uid
=
req_dict
.
get
(
"uid"
)
# 员工id
# current_app.logger.error(e)
cate
=
req_dict
.
get
(
"cate"
)
# 1政府,2部门,3组
# return jsonify(code=RET.DBERR, msg="数据库查询错误", data=[])
_id
=
req_dict
.
get
(
"id"
)
# 机构部门组id
#
# level = req_dict.get("level") # 职级
#
# position = req_dict.get("position") # 职务
# # 删除组织机构或者部门和组(需要先删除人员)--------OK
# @api_power.route("/deleteOrg", methods=["POST"])
# 校验参数完整性
# @login_required
if
not
all
([
uid
,
cate
,
_id
]):
# def deleteorg():
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
# req_dict = request.get_json()
try
:
# _id = req_dict.get("id") # 待删除的,部门、机构、组、id
user
=
User
.
query
.
get
(
uid
)
# cate = req_dict.get("cate") # 待删除数据的类别 1政府,2部门,3组
if
user
:
#
if
cate
==
1
:
# 政府机构
# # 校验参数完整性
role
=
Role
.
query
.
get
(
user
.
role_id
)
# if not all([_id, cate]):
role
.
users
.
remove
(
user
)
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
user
.
unit
=
""
# 机构
#
user
.
position
=
""
# 职位
# try:
user
.
section
=
""
# 部门
# if cate == 1: # 删除机构
user
.
group
=
""
# 组
# gover = Government.query.get(_id) # 当前机构对象
user
.
level
=
""
# 级别
# section = gover.sections # 当前机构下的部门对象列表
user
.
leader
=
""
# 领导者
# if len(section) > 0: # 有部门就需要先删除部门
user
.
password
=
""
# 密码
# return jsonify(code=RET.REQERR, msg="当前机构有部门存在,请清除后再操作")
db
.
session
.
commit
()
# unums = User.query.filter_by(unit=gover.name, status=1).count() # 当前机构下通过审核人员
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功"
)
# if unums > 0: # 当前部门有人,先到机构详情,进行人员的删除
if
cate
==
2
:
# 部们
# return jsonify(code=RET.REQERR, msg="当前机构有人员存在,请清除后再操作")
role
=
Role
.
query
.
get
(
user
.
role_id
)
# db.session.delete(gover) # 无人无部门,删除
# user.role_id = ""
# db.session.commit() # 提交
role
.
users
.
remove
(
user
)
# return jsonify(code=RET.OK, msg="删除成功")
user
.
position
=
""
# if cate == 2: # 删除部门
user
.
section
=
""
# section = Section.query.get(_id)
user
.
group
=
""
# gover = section.goverment # 部门所属的机构
user
.
level
=
""
# group = section.groups # 当前部门的组对象list
# user.role_id = ""
# if len(group) > 0: # 如果有组先删除组
db
.
session
.
commit
()
# return jsonify(code=RET.REQERR, msg="当前部门有组存在,请清除后再操作")
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功"
)
# unums = User.query.filter_by(unit=gover.name, section=section.name, status=1).count() # # 已经通过审核的人数
if
cate
==
3
:
# 组调度
# if unums > 0: # 当前部门有人,先到部门详情,进行部门人员的删除
user
.
group
=
""
# return jsonify(code=RET.REQERR, msg="当前部门有人员存在,请清除后再操作")
db
.
session
.
commit
()
# gover.sections.remove(section) # 当前部门没有人,没有组,删除部门之前需要先删除与之相关的机构关系
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功"
)
# db.session.delete(section) # 删除
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
# db.session.commit() # 提交
else
:
# return jsonify(code=RET.OK, msg="删除成功")
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"参数错误"
)
# if cate == 3: # 删除组
except
Exception
as
e
:
# group = Group.query.get(_id) # 当前组信息
# 操作失败,回滚数据库
# section = group.section # 组属于的部门,单个对象
db
.
session
.
rollback
()
# gover = section.goverment # 部门属于的机构,单个对象
current_app
.
logger
.
error
(
e
)
# unums = User.query.filter_by(unit=gover.name, section=section.name, group=group.name,
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
# status=1).count() # 已经通过审核的人数
# if unums > 0: # 当前组有人,先到组详情,进行组员的删除
# return jsonify(code=RET.REQERR, msg="当前组有人员存在,请清除后再操作")
# 获取统筹机构列表
# section.groups.remove(group) # 当前组没有人,删除组之前需要先删除与之相关的部门关系
@api_power.route
(
"/orgCtrl"
,
methods
=
[
"POST"
])
# db.session.delete(group) # 删除
@login_required
# db.session.commit() # 提交
def
org_ctrl
():
# return jsonify(code=RET.OK, msg="删除成功")
req_dict
=
request
.
get_json
()
# else:
_id
=
req_dict
.
get
(
"id"
)
# 机构id
# return jsonify(code=RET.DATAERR, msg="参数错误")
cate
=
req_dict
.
get
(
"cate"
)
# 1政府,2部门,3组
# except Exception as e:
# # 操作失败,回滚数据库
# 校验参数完整性
# db.session.rollback()
if
not
all
([
_id
,
cate
]):
# current_app.logger.error(e)
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
# return jsonify(code=RET.DBERR, msg="数据库操作失败")
try
:
#
if
cate
==
1
:
# 政府机构详情
#
goverment
=
Government
.
query
.
get
(
_id
)
# ''''''
# 统筹机构列表
#
ctrl
=
goverment
.
followed
#
bkpm
=
[{
"id"
:
j
.
id
,
# # 获取机构,部门或者组详情()
"name"
:
j
.
name
,
# @api_power.route("/orgDetail", methods=["POST"])
"charge"
:
j
.
charge
if
j
.
charge
else
"-"
,
# @login_required
"phone"
:
j
.
charge_phone
if
j
.
charge_phone
else
"-"
}
for
j
in
ctrl
]
# def org_detail():
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
bkpm
)
# req_dict = request.get_json()
# _id = req_dict.get("id") # id
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"参数错误"
)
# cate = req_dict.get("cate") # 1机构,2部门,3组
except
Exception
as
e
:
#
current_app
.
logger
.
error
(
e
)
# # 校验参数完整性
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作错误"
)
# if not all([_id, cate]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
#
# 获取待新增统筹机构列表
# try:
@api_power.route
(
"/getCtrl"
,
methods
=
[
"POST"
])
# if cate == 1: # 政府机构详情
@login_required
# goverment = Government.query.get(_id)
def
get_ctrl
():
# # 政府信息
req_dict
=
request
.
get_json
()
# data = {"id": goverment.id,
_id
=
req_dict
.
get
(
"id"
)
# "name": goverment.name, # 机构名
# "charge": goverment.charge if goverment.charge else "-", # 主管
# 校验参数完整性
# "phone": goverment.charge_phone if goverment.charge_phone else "-", # 电话
if
not
all
([
_id
]):
# "pnums": goverment.pnums if goverment.pnums else 0, # 机构人数
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
# "secnums": len(goverment.sections), # 部门数
try
:
# "func": goverment.function if goverment.function else "", # 政府职能
goverment
=
Government
.
query
.
get
(
_id
)
# "cate": cate}
folllowedids
=
{
i
.
id
for
i
in
goverment
.
followed
}
# 已经被管制的
# return jsonify(code=RET.OK, msg="查询成功", data=data)
folllowedids
.
add
(
_id
)
# 添加自己
# if cate == 2: # 部门详情
all_ids
=
{
i
.
id
for
i
in
Government
.
query
.
filter_by
()
.
all
()}
# 全部机构id
# section = Section.query.get(_id)
options
=
list
(
all_ids
-
folllowedids
)
# 未被当前机构统筹的机构id列表
# # 政府信息
# data = {"id": section.id,
goverments
=
Government
.
query
.
filter
(
Government
.
id
.
in_
(
options
))
.
all
()
# "name": section.name, # 机构名
data
=
[{
"id"
:
i
.
id
,
# "charge": section.charge if section.charge else "-", # 主管
"name"
:
i
.
name
}
for
i
in
goverments
]
# "phone": section.charge_phone if section.charge_phone else "-", # 电话
# "pnums": section.pnums if section.pnums else 0, # 机构人数
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查询成功"
,
data
=
data
)
# "secnums": len(section.groups), # 组数
except
Exception
as
e
:
# "func": section.function if section.function else "", # 部门职能
current_app
.
logger
.
error
(
e
)
# "cate": cate}
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"添加失败"
)
# return jsonify(code=RET.OK, msg="查询成功", data=data)
# if cate == 3: # 组详情
# group = Group.query.get(_id)
# 机构详情页添加统筹机构
# # 政府信息
@api_power.route
(
"/addBeCtrl"
,
methods
=
[
"POST"
])
# data = {"id": group.id,
@login_required
# "name": group.name, # 机构名
def
add_bectrl
():
# "charge": group.charge if group.charge else "-", # 主管
req_dict
=
request
.
get_json
()
# "phone": group.charge_phone if group.charge_phone else "-", # 电话
_id
=
req_dict
.
get
(
"id"
)
# "pnums": group.pnums if group.pnums else 0, # 机构人数
ids
=
req_dict
.
get
(
"ids"
)
# "secnums": "-",
# "func": group.function if group.function else "", # 部门职能
# 校验参数完整性
# "cate": cate}
if
not
all
([
_id
,
ids
]):
# return jsonify(code=RET.OK, msg="查询成功", data=data)
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
#
try
:
# return jsonify(code=RET.OK, msg="参数错误")
goverment
=
Government
.
query
.
get
(
_id
)
# except Exception as e:
folllowedids
=
{
i
.
id
for
i
in
goverment
.
followed
}
# current_app.logger.error(e)
ids
=
set
(
ids
)
# return jsonify(code=RET.DBERR, msg="数据库操作错误")
for
id
in
(
ids
-
folllowedids
):
#
gover
=
Government
.
query
.
get
(
id
)
#
goverment
.
followed
.
append
(
gover
)
# # 编辑机构,部门或者组详情
db
.
session
.
commit
()
# @api_power.route("/editDetail", methods=["POST"])
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"添加成功"
)
# @login_required
except
Exception
as
e
:
# def edit_detail():
# 操作失败,回滚数据库
# req_dict = request.get_json()
db
.
session
.
rollback
()
# _id = req_dict.get("id") # 部门id
current_app
.
logger
.
error
(
e
)
# cate = req_dict.get("cate") # 1机构,2部门,3组
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"添加失败"
)
# name = req_dict.get("name") # 1机构,2部门,3组 的名称
# charge = req_dict.get("charge") # 局内领导
# charge_phone = req_dict.get("charge_phone") # 联系方式
# 机构详情页删除统筹机构
# func = req_dict.get("func") # 部门职能
@api_power.route
(
"/deleteCtrl"
,
methods
=
[
"POST"
])
# pnums = str(req_dict.get("pnums")) # 人数
@login_required
# secnums = str(req_dict.get("secnums")) # 部门组人数
def
delete_bectrl
():
#
req_dict
=
request
.
get_json
()
# # 校验参数完整性
_id
=
req_dict
.
get
(
"id"
)
# if not all([_id, name, charge, charge_phone, pnums, secnums]):
bectrl_id
=
req_dict
.
get
(
"bectrl_id"
)
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
#
# 校验参数完整性
# try:
if
not
all
([
_id
,
bectrl_id
]):
# if cate == 1: # 机构
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
# gover = Government.query.filter_by(name=name).filter(Government.id != _id).first()
try
:
# if gover:
goverment
=
Government
.
query
.
get
(
_id
)
# return jsonify(code=RET.DBERR, msg="机构名不可重复")
begoverment
=
Government
.
query
.
get
(
bectrl_id
)
# gover = Government.query.get(_id)
goverment
.
followed
.
remove
(
begoverment
)
# gover.name = name
db
.
session
.
commit
()
# gover.charge = charge
# gover.charge_phone = charge_phone
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功"
)
# gover.function = func
except
Exception
as
e
:
# gover.pnums = pnums
# 操作失败,回滚数据库
# gover.secnums = secnums
db
.
session
.
rollback
()
# db.session.commit()
current_app
.
logger
.
error
(
e
)
# return jsonify(code=RET.OK, msg="修改成功")
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库操作失败"
)
# if cate == 2: # 部门
# section = Section.query.get(_id) # 当前部门
# gover_id = section.goverment_id # 当前部门的机构id
# sec = Section.query.filter_by(name=name, goverment_id=gover_id).filter(Section.id != _id).first()
# if sec: # 当前机构下此部门名已存在
# return jsonify(code=RET.DBERR, msg="部门名不可重复")
# section.name = name
# section.charge = charge
# section.charge_phone = charge_phone
# section.function = func
# section.pnums = pnums
# section.secnums = secnums
# db.session.commit()
# return jsonify(code=RET.OK, msg="修改成功")
# if cate == 3: # 组
# group = Group.query.get(_id) # 当前组
# sec_id = group.section_id # 当前组的部门id
# gro = Group.query.filter_by(name=name, section_id=sec_id).filter(Group.id != _id).first()
# if gro: # 当前部门下此组名已存在
# return jsonify(code=RET.DBERR, msg="组名不可重复")
# group.name = name
# group.charge = charge
# group.charge_phone = charge_phone
# group.function = func
# group.pnums = pnums
# group.secnums = secnums
# db.session.commit()
# return jsonify(code=RET.OK, msg="修改成功")
# return jsonify(code=RET.DATAERR, msg="cate参数错误")
# except Exception as e:
# # 操作失败,回滚数据库
# db.session.rollback()
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库操作错误")
#
#
# # 获取机构,部门或者组的人员
# @api_power.route("/orgStaff", methods=["POST"])
# @login_required
# def org_staff():
# req_dict = request.get_json()
# _id = req_dict.get("id") # 部门id
# cate = req_dict.get("cate") # 1机构,2部门,3组
#
# # 校验参数完整性
# if not all([_id, cate]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
#
# try:
# if cate == 1: # 政府机构详情
# goverment = Government.query.get(_id)
# # 人员列表
# staff = User.query.filter_by(status=1, unit=goverment.name).filter(
# User.role_id.isnot(None)).all() # 通过审核的员工列表
# staff = [{"id": i.id,
# "name": i.real_name,
# "position": i.position,
# "section": i.section} for i in staff]
# return jsonify(code=RET.OK, msg="查询成功", data=staff)
# if cate == 2: # 部门详情
# section = Section.query.get(_id)
# # 人员列表
# staff = User.query.filter_by(status=1, unit=section.goverment.name, section=section.name).filter(
# User.role_id.isnot(None)).all() # 通过审核的员工列表
# staff = [{"id": i.id,
# "name": i.real_name,
# "position": i.position,
# "section": i.section} for i in staff]
# return jsonify(code=RET.OK, msg="查询成功", data=staff)
# if cate == 3: # 组详情
# group = Group.query.get(_id)
# # 人员列表
# staff = User.query.filter_by(status=1, unit=group.section.goverment.name, section=group.section.name,
# group=group.name).filter(User.role_id.isnot(None)).all() # 通过审核的员工列表
# staff = [{"id": i.id,
# "name": i.real_name,
# "position": i.position,
# "section": i.section} for i in staff]
# return jsonify(code=RET.OK, msg="查询成功", data=staff)
# else:
# return jsonify(code=RET.OK, msg="参数错误")
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库操作错误")
#
#
# # 机构部门或这组的待新增人员列表-------------------?
# @api_power.route("/listOfStaff", methods=["POST"])
# # @login_required
# def list_Staff():
# req_dict = request.get_json()
# _id = req_dict.get("id") # 当前机构id
# cate = req_dict.get("cate") # 1机构 2部门 3组
#
# # 校验参数完整性
# if not all([_id]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# try:
# if cate == 1: # 政府
# gover = Government.query.get(_id)
# if gover:
# name = gover.name
# user = User.query.filter_by(unit=name).filter(User.role_id.isnot(None)).all()
# data = [{"id": i.id,
# "real_name": i.real_name if i.real_name else i.id} for i in user]
# return jsonify(code=RET.OK, msg="查询成功", data=data)
# else:
# return jsonify(code=RET.DATAERR, msg="参数错误")
# if cate == 2: # 部门
# section = Section.query.get(_id)
# if section:
# gover = section.goverment
# user = User.query.filter_by(unit=gover.name).filter(User.role_id.isnot(None)).all()
# data = [{"id": i.id,
# "real_name": i.real_name if i.real_name else i.id} for i in user]
# return jsonify(code=RET.OK, msg="查询成功", data=data)
# else:
# return jsonify(code=RET.DATAERR, msg="参数错误")
# if cate == 3: # 组
# group = Group.query.get(_id)
# if group:
# section = group.section
# gover = section.goverment
# user = User.query.filter_by(unit=gover.name).filter(User.role_id.isnot(None)).all()
# data = [{"id": i.id,
# "real_name": i.real_name if i.real_name else i.id} for i in user]
# return jsonify(code=RET.OK, msg="查询成功", data=data)
# else:
# return jsonify(code=RET.DATAERR, msg="参数错误")
# return jsonify(code=RET.DATAERR, msg="参数错误")
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库查询错误")
#
#
# # 机构部门或这组的人员 新增(人员部门调度)
# @api_power.route("/addStaffOrg", methods=["POST"])
# # @login_required
# def add_staff():
# req_dict = request.get_json()
# _id = req_dict.get("id") # 部门机构组id
# cate = req_dict.get("cate") # 1政府,2部门,3组
# uid = req_dict.get("uid") # 员工id
# level = req_dict.get("level") # 职级(角色id)
# position = req_dict.get("position") # 职务,文本框随意填
#
# # 校验参数完整性
# if not all([_id, level, position]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# try:
# user = User.query.get(uid)
# if user:
# if cate == 1: # 政府机构
# user.section = Government.query.get(_id).name
# # 删除原有角色
# role = Role.query.get(user.role_id)
# role.users.remove(user)
# # 添加新角色
# role = Role.query.get(level)
# role.users.append(user)
#
# user.position = position
# db.session.commit()
# return jsonify(code=RET.OK, msg="添加成功")
# if cate == 2: # 部门调度
# user.section = Section.query.get(_id).name
# # 删除原有角色
# role = Role.query.get(user.role_id)
# role.users.remove(user)
# # 添加新角色
# role = Role.query.get(level)
# role.users.append(user)
#
# user.position = position
# db.session.commit()
# return jsonify(code=RET.OK, msg="添加成功")
# if cate == 3: # 组调度
# user.group = Group.query.get(_id).name
# # 删除原有角色
# role = Role.query.get(user.role_id)
# role.users.remove(user)
# # 添加新角色
# role = Role.query.get(level)
# role.users.append(user)
#
# user.position = position
# db.session.commit()
# return jsonify(code=RET.OK, msg="添加成功")
#
# return jsonify(code=RET.DATAERR, msg="参数错误")
# else:
# return jsonify(code=RET.DATAERR, msg="参数错误")
# except Exception as e:
# # 操作失败,回滚数据库
# db.session.rollback()
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库操作错误")
#
#
# # # 测试
# # @api_power.route("/cs", methods=["get"])
# # def ces():
# # gover = Government.query.get(18)
# # section = Section.query.get(37)
# # print(gover,section)
# # # section.goverment.remove(gover)
# # gover.sections.remove(section)
# # db.session.commit()
# # return "ok"
# ''''''
#
#
# # 机构部门或这组的人员 删除(人员失去组,机构项目)
# @api_power.route("/deleteStaffOrg", methods=["POST"])
# @login_required
# def delete_staff():
# req_dict = request.get_json()
# uid = req_dict.get("uid") # 员工id
# cate = req_dict.get("cate") # 1政府,2部门,3组
# _id = req_dict.get("id") # 机构部门组id
# # level = req_dict.get("level") # 职级
# # position = req_dict.get("position") # 职务
#
# # 校验参数完整性
# if not all([uid, cate, _id]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# try:
# user = User.query.get(uid)
# if user:
# if cate == 1: # 政府机构
# role = Role.query.get(user.role_id)
# role.users.remove(user)
# user.unit = "" # 机构
# user.position = "" # 职位
# user.section = "" # 部门
# user.group = "" # 组
# user.level = "" # 级别
# user.leader = "" # 领导者
# user.password = "" # 密码
# db.session.commit()
# return jsonify(code=RET.OK, msg="删除成功")
# if cate == 2: # 部们
# role = Role.query.get(user.role_id)
# # user.role_id = ""
# role.users.remove(user)
# user.position = ""
# user.section = ""
# user.group = ""
# user.level = ""
# # user.role_id = ""
# db.session.commit()
# return jsonify(code=RET.OK, msg="删除成功")
# if cate == 3: # 组调度
# user.group = ""
# db.session.commit()
# return jsonify(code=RET.OK, msg="删除成功")
# return jsonify(code=RET.DATAERR, msg="参数错误")
# else:
# return jsonify(code=RET.DATAERR, msg="参数错误")
# except Exception as e:
# # 操作失败,回滚数据库
# db.session.rollback()
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库操作错误")
#
#
# # 获取统筹机构列表
# @api_power.route("/orgCtrl", methods=["POST"])
# @login_required
# def org_ctrl():
# req_dict = request.get_json()
# _id = req_dict.get("id") # 机构id
# cate = req_dict.get("cate") # 1政府,2部门,3组
#
# # 校验参数完整性
# if not all([_id, cate]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# try:
# if cate == 1: # 政府机构详情
# goverment = Government.query.get(_id)
# # 统筹机构列表
# ctrl = goverment.followed
# bkpm = [{"id": j.id,
# "name": j.name,
# "charge": j.charge if j.charge else "-",
# "phone": j.charge_phone if j.charge_phone else "-"} for j in ctrl]
# return jsonify(code=RET.OK, msg="查询成功", data=bkpm)
#
# return jsonify(code=RET.OK, msg="参数错误")
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库操作错误")
#
#
# # 获取待新增统筹机构列表
# @api_power.route("/getCtrl", methods=["POST"])
# @login_required
# def get_ctrl():
# req_dict = request.get_json()
# _id = req_dict.get("id")
#
# # 校验参数完整性
# if not all([_id]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# try:
# goverment = Government.query.get(_id)
# folllowedids = {i.id for i in goverment.followed} # 已经被管制的
# folllowedids.add(_id) # 添加自己
# all_ids = {i.id for i in Government.query.filter_by().all()} # 全部机构id
# options = list(all_ids - folllowedids) # 未被当前机构统筹的机构id列表
#
# goverments = Government.query.filter(Government.id.in_(options)).all()
# data = [{"id": i.id,
# "name": i.name} for i in goverments]
#
# return jsonify(code=RET.OK, msg="查询成功", data=data)
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="添加失败")
#
#
# # 机构详情页添加统筹机构
# @api_power.route("/addBeCtrl", methods=["POST"])
# @login_required
# def add_bectrl():
# req_dict = request.get_json()
# _id = req_dict.get("id")
# ids = req_dict.get("ids")
#
# # 校验参数完整性
# if not all([_id, ids]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# try:
# goverment = Government.query.get(_id)
# folllowedids = {i.id for i in goverment.followed}
# ids = set(ids)
# for id in (ids - folllowedids):
# gover = Government.query.get(id)
# goverment.followed.append(gover)
# db.session.commit()
# return jsonify(code=RET.OK, msg="添加成功")
# except Exception as e:
# # 操作失败,回滚数据库
# db.session.rollback()
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="添加失败")
#
#
# # 机构详情页删除统筹机构
# @api_power.route("/deleteCtrl", methods=["POST"])
# @login_required
# def delete_bectrl():
# req_dict = request.get_json()
# _id = req_dict.get("id")
# bectrl_id = req_dict.get("bectrl_id")
#
# # 校验参数完整性
# if not all([_id, bectrl_id]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
# try:
# goverment = Government.query.get(_id)
# begoverment = Government.query.get(bectrl_id)
# goverment.followed.remove(begoverment)
# db.session.commit()
#
# return jsonify(code=RET.OK, msg="删除成功")
# except Exception as e:
# # 操作失败,回滚数据库
# db.session.rollback()
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库操作失败")
apps/models.py
View file @
adcaf3a2
...
@@ -993,6 +993,76 @@ class Role(BaseModel, db.Model):
...
@@ -993,6 +993,76 @@ class Role(BaseModel, db.Model):
role
=
db
.
Column
(
db
.
String
(
10
),
unique
=
True
,
comment
=
'权限值 000000 0位位职级123,后面为权限01'
)
role
=
db
.
Column
(
db
.
String
(
10
),
unique
=
True
,
comment
=
'权限值 000000 0位位职级123,后面为权限01'
)
info
=
db
.
Column
(
db
.
String
(
255
),
comment
=
'权限说明'
)
info
=
db
.
Column
(
db
.
String
(
255
),
comment
=
'权限说明'
)
# 政府机构表(自关联多对多)
class
GovOrganization
(
db
.
Model
):
__tablename__
=
"government_organization"
# 基本信息
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
,
autoincrement
=
True
,
doc
=
'主键id'
,
comment
=
'主键id'
)
pnums
=
db
.
Column
(
db
.
Integer
,
doc
=
'人数'
,
comment
=
'人数'
)
charge
=
db
.
Column
(
db
.
String
(
20
),
doc
=
'机构负责人'
,
comment
=
'机构负责人'
)
charge_phone
=
db
.
Column
(
db
.
String
(
20
),
doc
=
'负责人电话'
,
comment
=
'负责人电话'
)
function
=
db
.
Column
(
db
.
Text
,
doc
=
'部门职能'
,
comment
=
'部门职能'
)
# name = db.Column(db.String(30), nullable=False, view_index=True, doc='新增时间', comment='新增时间')
name
=
db
.
Column
(
db
.
String
(
30
),
doc
=
'新增时间'
,
comment
=
'新增时间'
)
add_person
=
db
.
Column
(
db
.
String
(
20
),
doc
=
'新增人'
,
comment
=
'新增人'
)
add_time
=
db
.
Column
(
db
.
DateTime
,
doc
=
'新增时间'
,
comment
=
'新增时间'
)
edit_person
=
db
.
Column
(
db
.
String
(
20
),
doc
=
'编辑人'
,
comment
=
'编辑人'
)
edit_time
=
db
.
Column
(
db
.
DateTime
,
doc
=
'编辑时间'
,
comment
=
'编辑时间'
)
# followed 我的下级,管制谁,followers 我的上级,谁管制我
# followed = db.relationship('Government', secondary=followers, primaryjoin=(followers.c.follower_id == id),
# secondaryjoin=(followers.c.followed_id == id),
# backref=db.backref('followers', lazy='dynamic'), lazy='dynamic')
# 政府部门(政府-部门 一对多)
class
GovDepartment
(
db
.
Model
):
__tablename__
=
"government_department"
# 基本信息
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
,
autoincrement
=
True
,
doc
=
'主键id'
,
comment
=
'主键id'
)
pnums
=
db
.
Column
(
db
.
Integer
,
doc
=
'人数'
,
comment
=
'人数'
)
# 人数
charge
=
db
.
Column
(
db
.
String
(
255
),
doc
=
'部门负责人'
,
comment
=
'部门负责人'
)
# 部门负责人
charge_phone
=
db
.
Column
(
db
.
String
(
255
),
doc
=
'负责人电话'
,
comment
=
'负责人电话'
)
# 负责人电话
function
=
db
.
Column
(
db
.
Text
,
doc
=
'负责人电话'
,
comment
=
'负责人电话'
)
# 部门职能
name
=
db
.
Column
(
db
.
String
(
255
),
nullable
=
False
,
doc
=
'政府机构部门名称'
,
comment
=
'政府机构部门名称'
)
# 政府机构部门名称
# gid = db.Column(db.Integer) # 政府id
goverment_org_id
=
db
.
Column
(
db
.
Integer
,
db
.
ForeignKey
(
"government_organization.id"
),
doc
=
'外键id,机构id'
,
comment
=
'外键id,机构id'
)
goverment
=
db
.
relationship
(
'GovOrganization'
,
backref
=
db
.
backref
(
'government_departments'
))
# 政府1-N部门
# 项目列表
# 项目列表
# class Item(db.Model):
# class Item(db.Model):
# __tablename_ = "item"
# __tablename_ = "item"
...
@@ -1071,38 +1141,9 @@ class Role(BaseModel, db.Model):
...
@@ -1071,38 +1141,9 @@ class Role(BaseModel, db.Model):
# db.Column('follower_id', db.Integer, db.ForeignKey('government.id'), primary_key=True),
# db.Column('follower_id', db.Integer, db.ForeignKey('government.id'), primary_key=True),
# db.Column('followed_id', db.Integer, db.ForeignKey('government.id'), primary_key=True)
# db.Column('followed_id', db.Integer, db.ForeignKey('government.id'), primary_key=True)
# )
# )
#
#
# # 政府机构表(自关联多对多)
# class Government(db.Model):
# __tablename__ = "government"
# # 基本信息
# id = db.Column(db.Integer, primary_key=True, autoincrement=True)
# pnums = db.Column(db.Integer) # 人数
# charge = db.Column(db.String(255)) # 机构负责人
# charge_phone = db.Column(db.String(255)) # 负责人电话
# function = db.Column(db.Text) # 部门职能
# name = db.Column(db.String(255), nullable=False, view_index=True) # 政府机构单位名称
# # followed 我的下级,管制谁,followers 我的上级,谁管制我
# followed = db.relationship('Government', secondary=followers, primaryjoin=(followers.c.follower_id == id),
# secondaryjoin=(followers.c.followed_id == id),
# backref=db.backref('followers', lazy='dynamic'), lazy='dynamic')
#
#
# # 政府部门(政府-部门 一对多)
# class Section(db.Model):
# __tablename__ = "section"
# # 基本信息
# id = db.Column(db.Integer, primary_key=True, autoincrement=True)
# pnums = db.Column(db.Integer) # 人数
# charge = db.Column(db.String(255)) # 部门负责人
# charge_phone = db.Column(db.String(255)) # 负责人电话
# function = db.Column(db.Text) # 部门职能
# name = db.Column(db.String(255), nullable=False) # 政府机构部门名称
# # gid = db.Column(db.Integer) # 政府id
# goverment_id = db.Column(db.Integer, db.ForeignKey("government.id"))
# goverment = db.relationship('Government', backref=db.backref('sections')) # 政府1-N部门
#
#
#
# # 政府组(政府1-N部门1-N组)
# # 政府组(政府1-N部门1-N组)
# class Group(db.Model):
# class Group(db.Model):
...
...
apps/util.py
View file @
adcaf3a2
...
@@ -5,13 +5,13 @@ from itsdangerous import SignatureExpired, BadSignature
...
@@ -5,13 +5,13 @@ from itsdangerous import SignatureExpired, BadSignature
from
flask
import
request
,
jsonify
,
current_app
from
flask
import
request
,
jsonify
,
current_app
from
config
import
Config
from
config
import
Config
# from apps.models import User, Bstage
# from apps.models import User, Bstage
from
apps.models
import
User
import
functools
import
functools
# from flask_httpauth import HTTPBasicAuth
# from flask_httpauth import HTTPBasicAuth
#
#
# auth = HTTPBasicAuth
# auth = HTTPBasicAuth
# from models import User
class
RegexConverter
(
BaseConverter
):
class
RegexConverter
(
BaseConverter
):
...
...
apps/utils/send_phone_info.py
View file @
adcaf3a2
...
@@ -106,4 +106,33 @@ def code_new(phone, c_num):
...
@@ -106,4 +106,33 @@ def code_new(phone, c_num):
el
=
eval
(
str
(
response
,
encoding
=
'utf-8'
))
el
=
eval
(
str
(
response
,
encoding
=
'utf-8'
))
return
el
return
el
# print(send_code('15769202654', '9999'))
# 密码重置操作
def
send_reset_password_code
(
phone
,
c_num
):
client
=
AcsClient
(
'LTAI4Fkgi7DUf6jCVW3KNGwT'
,
'ynr6TWWNOnpALn3YUICUaXwpp9w4er'
,
'cn-hangzhou'
)
request
=
CommonRequest
()
request
.
set_accept_format
(
'json'
)
request
.
set_domain
(
'dysmsapi.aliyuncs.com'
)
request
.
set_method
(
'POST'
)
request
.
set_protocol_type
(
'https'
)
# https | http
request
.
set_version
(
'2017-05-25'
)
request
.
set_action_name
(
'SendSms'
)
request
.
add_query_param
(
'RegionId'
,
"cn-hangzhou"
)
request
.
add_query_param
(
'PhoneNumbers'
,
phone
)
# 签名
request
.
add_query_param
(
'SignName'
,
"中研认知产业链在线"
)
# 模板
request
.
add_query_param
(
'TemplateCode'
,
"SMS_186575190"
)
request
.
add_query_param
(
'TemplateParam'
,
"{
\"
code
\"
:
\"
"
+
c_num
+
"
\"
}"
)
response
=
client
.
do_action
(
request
)
el
=
eval
(
str
(
response
,
encoding
=
'utf-8'
))
return
el
# 密码重置操作 SMS_168827629
# 手机号码绑定 SMS_186575190
# 手机号码注册平台 SMS_187755198
# 手机号码登录平台 SMS_187752221
apps/view_user/view.py
View file @
adcaf3a2
...
@@ -12,11 +12,11 @@ from flask_mail import Mail, Message
...
@@ -12,11 +12,11 @@ from flask_mail import Mail, Message
from
flask
import
g
,
current_app
,
request
,
jsonify
,
session
from
flask
import
g
,
current_app
,
request
,
jsonify
,
session
from
apps.view_user
import
api_user
from
apps.view_user
import
api_user
from
apps
import
creat_app
from
apps
import
creat_app
from
apps.utils.send_phone_info
import
send_code_new
,
send_code
from
apps.utils.send_phone_info
import
send_code_new
,
send_code
,
send_reset_password_code
from
apps.utils.response_code
import
RET
from
apps.utils.response_code
import
RET
from
apps
import
db
,
constants
,
redis_store
from
apps
import
db
,
constants
,
redis_store
from
apps.models
import
*
from
apps.models
import
*
from
apps.util
import
create_token
from
apps.util
import
create_token
,
verify_token
,
login_required
from
werkzeug.security
import
generate_password_hash
,
check_password_hash
from
werkzeug.security
import
generate_password_hash
,
check_password_hash
from
apps
import
qiniu_store
from
apps
import
qiniu_store
from
apps.utils.vxconfig
import
WxConfig
from
apps.utils.vxconfig
import
WxConfig
...
@@ -53,12 +53,13 @@ def send_phone_code():
...
@@ -53,12 +53,13 @@ def send_phone_code():
# 生成短信验证码
# 生成短信验证码
sms_code
=
"
%06
d"
%
random
.
randint
(
0
,
999999
)
sms_code
=
"
%06
d"
%
random
.
randint
(
0
,
999999
)
data
=
''
data
=
''
if
sms_type
==
1
:
if
sms_type
==
1
:
# 验证码登录
data
=
send_code_new
(
mobile
,
sms_code
)
data
=
send_code_new
(
mobile
,
sms_code
)
if
sms_type
==
2
:
if
sms_type
==
2
:
# 手机号码绑定
data
=
send_code
(
mobile
,
sms_code
)
data
=
send_code
(
mobile
,
sms_code
)
if
sms_type
==
3
:
# 密码重置验证码
# print(data)
data
=
send_reset_password_code
(
mobile
,
sms_code
)
print
(
data
)
if
data
[
'Message'
]
==
'OK'
:
if
data
[
'Message'
]
==
'OK'
:
# 保存真实的短信验证码
# 保存真实的短信验证码
try
:
try
:
...
@@ -70,6 +71,8 @@ def send_phone_code():
...
@@ -70,6 +71,8 @@ def send_phone_code():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"保存短信验证码异常"
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"保存短信验证码异常"
)
# 发送成功
# 发送成功
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"发送成功"
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"发送成功"
)
if
data
[
'Message'
]
!=
'OK'
:
return
jsonify
(
code
=
RET
.
THIRDERR
,
msg
=
"发送次数太多,已被限流,请稍后再试!"
)
else
:
else
:
return
jsonify
(
code
=
RET
.
THIRDERR
,
msg
=
"发送失败"
)
return
jsonify
(
code
=
RET
.
THIRDERR
,
msg
=
"发送失败"
)
...
@@ -132,7 +135,7 @@ def login_bysms():
...
@@ -132,7 +135,7 @@ def login_bysms():
current_app
.
logger
.
error
(
e
)
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
# print(user.status==3)
# print(user.status==3)
if
user
.
status
==
3
:
if
user
.
status
==
0
:
return
jsonify
(
code
=
RET
.
USERERR
,
msg
=
"当前用户被禁止登录,请联系管理员"
)
return
jsonify
(
code
=
RET
.
USERERR
,
msg
=
"当前用户被禁止登录,请联系管理员"
)
# 获取用户id,传入生成token的方法,并接收返回的token
# 获取用户id,传入生成token的方法,并接收返回的token
...
@@ -145,152 +148,6 @@ def login_bysms():
...
@@ -145,152 +148,6 @@ def login_bysms():
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"登录成功"
,
data
=
{
"token"
:
token
,
"flag"
:
user
.
flag
})
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"登录成功"
,
data
=
{
"token"
:
token
,
"flag"
:
user
.
flag
})
# 用户中心-账号设置-添加账号(注册)
@api_user.route
(
"/Register"
,
methods
=
[
"POST"
])
def
register
():
"""
用户注册
:return:
"""
# 获取请求参数,转化字典
req_dict
=
request
.
get_json
()
real_name
=
req_dict
.
get
(
"real_name"
)
# 姓名
mobile
=
req_dict
.
get
(
'mobile'
)
# 联系电话
belong_organization
=
req_dict
.
get
(
"belong_organization"
)
# 所属机构
# age = req_dict.get("age") # 年龄
# sex = req_dict.get("sex") # 性别
# sms_code = req_dict.get("sms_code") # 验证码
is_organization_manager
=
req_dict
.
get
(
"is_organization_manager"
)
# 是否是机构负责人
charge_organization
=
req_dict
.
get
(
"charge_organization"
)
# 是机构负责人的话,所负责的机构
belong_department
=
req_dict
.
get
(
"belong_department"
)
# 所属部门(政府)
is_department_manager
=
req_dict
.
get
(
"is_department_manager"
)
# 是否是部门负责人
# charge_department = req_dict.get("charge_department") # 是部门负责人的话,所负责的部门
position
=
req_dict
.
get
(
"position"
)
# 职务
name
=
req_dict
.
get
(
"name"
)
# 用户名
password
=
req_dict
.
get
(
"password"
)
# 密码
password_again
=
req_dict
.
get
(
"password_again"
)
# 密码2
# 校验参数完整性
if
not
all
([
real_name
,
mobile
,
name
,
belong_organization
,
is_organization_manager
,
belong_department
,
is_department_manager
,
position
,
password
,
password_again
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
# 校验手机号格式
if
not
re
.
match
(
r"1[23456789]\d{9}$"
,
mobile
):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"手机号格式错误"
)
# # 获取短信验证码
# try:
# real_sms_code = redis_store.get('sms_code_{}'.format(mobile)).decode()
# # real_sms_code = "123456"
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.NODATA, msg="短信验证码失效")
#
# # 判断短信验证码是否失效
# if not redis_store:
# return jsonify(code=RET.NODATA, msg="短信验证码失效")
# # 删除redis中的短信验证码,防止重复校验
# try:
# redis_store.delete("sms_code_{}".format(mobile))
# except Exception as e:
# current_app.logger.error(e)
#
# # 判断用户填写短信验证码是否一致
# if real_sms_code != sms_code:
# # if "123456" != sms_code:
# return jsonify(code=RET.DATAERR, msg="短信验证码错误")
# 用户名唯一(字母开头,长度4-15)
try
:
patten
=
"^[a-zA-Z][
\
w]*[
\
w]*$"
if
re
.
match
(
patten
,
name
)
and
re
.
match
(
patten
,
name
)
.
string
==
name
:
user
=
User
.
query
.
filter_by
(
name
=
name
)
.
first
()
if
user
:
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"用户名已存在"
)
else
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"用户名格式错误"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"用户名格式错误"
)
# 校验密码
if
password
!=
password_again
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码不一致"
)
# 增加密码校验策略,20211109
# 判断密码长度是否8位,数字、字母、特殊字符同时存在,能使用用户名、连续性字母、数字、特殊字符等易猜测口令。
if
len
(
password
)
<
8
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码长度最少为8位"
)
# 密码应设置为包含大小写字母、数字、特殊符号'!@#$%^&*()_+=-'
if
not
(
re
.
search
(
r'\d+'
,
password
)
and
re
.
search
(
r'[a-z]+'
,
password
)
and
re
.
search
(
r'[A-Z]+'
,
password
)
and
re
.
search
(
r'[.!@#$
%
^&*()_+=-]+'
,
password
)):
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码应设置为包含大小写字母、数字、特殊符号'!@#$
%
^&*()_+=-'"
)
# 密码不能使用用户名
if
password
==
name
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码存在风险,不能与用户名相同!"
)
# 判断并添加用户信息
try
:
ouser
=
User
.
query
.
filter_by
(
mobile
=
mobile
)
.
first
()
print
(
ouser
)
# if ouser and ouser.flag == 1 and ouser.status != 1: # 外部访客被禁止
# return jsonify(code=RET.DATAEXIST, msg="当前用户被禁止,请联系管理员")
# if ouser and ouser.flag == 2 and ouser.status == 2: # 注册暂时未通过
# return jsonify(code=RET.DATAEXIST, msg="手机号已注册,请耐心等待审核")
if
ouser
and
ouser
.
flag
==
2
and
ouser
.
status
==
1
:
# 内部用户再次注册
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"手机号已注册,请勿重复注册"
)
if
ouser
and
ouser
.
flag
==
1
and
ouser
.
status
==
1
:
# 外部访客注册
ouser
.
real_name
=
real_name
# 姓名
ouser
.
mobile
=
mobile
# 联系电话
ouser
.
belong_organization
=
belong_organization
# 所属机构
ouser
.
is_organization_manager
=
is_organization_manager
# 是否为机构负责人
ouser
.
charge_organization
=
charge_organization
# 是机构负责人的话,所负责的机构
ouser
.
belong_department
=
belong_department
# 所属部门
ouser
.
is_department_manager
=
is_department_manager
# 是否为部门负责人
# ouser.charge_department = charge_department # 是部门负责人的话,所负责的部门
ouser
.
position
=
position
# 职务
ouser
.
name
=
name
# 用户名
ouser
.
flag
=
2
# 外部访问为1,内部人员为2
# ouser.status = 1 #
ouser
.
password
=
password
else
:
user
=
User
(
real_name
=
real_name
,
mobile
=
mobile
,
belong_organization
=
belong_organization
,
is_organization_manager
=
is_organization_manager
,
charge_organization
=
charge_organization
,
belong_department
=
belong_department
,
is_department_manager
=
is_department_manager
,
# charge_department=charge_department,
position
=
position
,
name
=
name
,
flag
=
2
,
status
=
1
,
password
=
password
)
db
.
session
.
add
(
user
)
db
.
session
.
commit
()
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
# except IntegrityError as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="手机号已被使用,请勿重复注册")
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"注册成功"
)
# 内部用户手机-密码登录
# 内部用户手机-密码登录
@api_user.route
(
"/LoginByPwd"
,
methods
=
[
"POST"
])
@api_user.route
(
"/LoginByPwd"
,
methods
=
[
"POST"
])
def
login_bypwd
():
def
login_bypwd
():
...
@@ -499,137 +356,348 @@ def binding():
...
@@ -499,137 +356,348 @@ def binding():
token
=
create_token
(
user
.
id
)
token
=
create_token
(
user
.
id
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"绑定成功,登录成功"
,
data
=
{
"token"
:
token
,
"flag"
:
user
.
flag
})
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"绑定成功,登录成功"
,
data
=
{
"token"
:
token
,
"flag"
:
user
.
flag
})
# # 异步邮箱发送信息
# def send_async_email(mail, app, msg):
"""
# with app.app_context():
用户中心
# mail.send(msg)
"""
#
#
# # 给邮箱发验证码
# 用户中心-账号设置-添加账号(注册)
# @api_user.route("/send_email_code", methods=["POST"])
@api_user.route
(
"/Register"
,
methods
=
[
"POST"
])
# def send_email_code():
def
register
():
# '''
"""
# 向邮箱送验证码
用户注册
# :return:
:return:
# '''
"""
# # 获取请求参数,转化字典
# 获取请求参数,转化字典
# req_dict = request.get_json()
req_dict
=
request
.
get_json
()
# email = req_dict.get('email') # 邮箱号
# # 校验参数完整性
real_name
=
req_dict
.
get
(
"real_name"
)
# 姓名
# if not all([email]):
mobile
=
req_dict
.
get
(
'mobile'
)
# 联系电话
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
belong_organization
=
req_dict
.
get
(
"belong_organization"
)
# 所属机构
#
# age = req_dict.get("age") # 年龄
# # 校验邮箱格式
# sex = req_dict.get("sex") # 性别
# if not re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", email):
# sms_code = req_dict.get("sms_code") # 验证码
# return jsonify(code=RET.PARAMERR, msg="邮箱格式错误")
is_organization_manager
=
req_dict
.
get
(
"is_organization_manager"
)
# 是否是机构负责人
#
charge_organization
=
req_dict
.
get
(
"charge_organization"
)
# 是机构负责人的话,所负责的机构
# # print(email)
# app = creat_app('product')
belong_department
=
req_dict
.
get
(
"belong_department"
)
# 所属部门(政府)
# mail = Mail(app)
is_department_manager
=
req_dict
.
get
(
"is_department_manager"
)
# 是否是部门负责人
# sms_code = "%06d" % random.randint(0, 999999)
# charge_department = req_dict.get("charge_department") # 是部门负责人的话,所负责的部门
#
# msg = Message("中研认知产业链在线,欢迎您!", recipients=[email])
position
=
req_dict
.
get
(
"position"
)
# 职务
# msg.body = "【中研认知产业链在线】您的验证码为:{},您正在进行邮箱绑定,如非本人操作,请忽略本邮件!".format(sms_code)
# thread = threading.Thread(target=send_async_email, args=(mail, app, msg))
name
=
req_dict
.
get
(
"name"
)
# 用户名
# thread.start()
password
=
req_dict
.
get
(
"password"
)
# 密码
# try:
password_again
=
req_dict
.
get
(
"password_again"
)
# 密码2
# redis_store.setex("ems_code_%s" % email, constants.SMS_CODE_REDIS_EXPIRES, sms_code)
# # 保存发送给这个邮箱的记录,防止用户在180s内再次出发发送短信的操作
# 校验参数完整性
# redis_store.setex("send_ems_code_%s" % email, constants.SEND_EMS_CODE_INTERVAL, 1)
if
not
all
([
real_name
,
mobile
,
name
,
belong_organization
,
is_organization_manager
,
belong_department
,
# except Exception as e:
is_department_manager
,
# current_app.logger.error(e)
position
,
password
,
password_again
]):
# return jsonify(code=RET.DBERR, msg="保存验证码异常")
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
#
# return jsonify(code=RET.OK, msg="发送成功")
# 校验手机号格式
# ''''''
if
not
re
.
match
(
r"1[23456789]\d{9}$"
,
mobile
):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"手机号格式错误"
)
# # 注册页面选择选择单位(2020-11-4)
# # 获取短信验证码
# @api_user.route('/orgs', methods=['GET'])
# try:
# def zcorgs():
# real_sms_code = redis_store.get('sms_code_{}'.format(mobile)).decode()
# '''
# # real_sms_code = "123456"
# 太原市企业条件选择导航获取
# except Exception as e:
# :return:
# current_app.logger.error(e)
# '''
# return jsonify(code=RET.NODATA, msg="短信验证码失效")
# try:
#
# gover = Government.query.all()
# # 判断短信验证码是否失效
# ty = Government.query.get(1)
# if not redis_store:
# sections = ty.sections
# return jsonify(code=RET.NODATA, msg="短信验证码失效")
# data = [{"label": i.name, "value": i.id} for i in gover]
# section = [{"label": i.name, "value": i.id} for i in sections]
# # 删除redis中的短信验证码,防止重复校验
# orgs = {"data": data, "section": section}
# try:
# return jsonify(code=RET.OK, msg="获取成功", orgs=orgs)
# redis_store.delete("sms_code_{}".format(mobile))
# except Exception as e:
# except Exception as e:
# current_app.logger.error(e)
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库查询错误")
#
#
# # 判断用户填写短信验证码是否一致
#
# if real_sms_code != sms_code:
#
# # if "123456" != sms_code:
#
# return jsonify(code=RET.DATAERR, msg="短信验证码错误")
#
# 用户名唯一(字母开头,长度4-15)
#
try
:
#
patten
=
"^[a-zA-Z][
\
w]*[
\
w]*$"
# ''''''
if
re
.
match
(
patten
,
name
)
and
re
.
match
(
patten
,
name
)
.
string
==
name
:
#
user
=
User
.
query
.
filter_by
(
name
=
name
)
.
first
()
#
if
user
:
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"用户名已存在"
)
#
else
:
#
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"用户名格式错误"
)
#
except
Exception
as
e
:
#
current_app
.
logger
.
error
(
e
)
# # 后台用户账号密码
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"用户名格式错误"
)
# @api_user.route("/backLogin", methods=["POST"])
# def back_login():
# 校验密码
# '''
if
password
!=
password_again
:
# 用户密码登录
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码不一致"
)
# :return:
# '''
# 增加密码校验策略,20211109
# # 参数获取与校验
# 判断密码长度是否8位,数字、字母、特殊字符同时存在,能使用用户名、连续性字母、数字、特殊字符等易猜测口令。
# req_dict = request.get_json()
if
len
(
password
)
<
8
:
# # 解密
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码长度最少为8位"
)
# param = req_dict.get("param") # 揭秘参数
# 密码应设置为包含大小写字母、数字、特殊符号'!@#$%^&*()_+=-'
# req_dict = json.loads(decrypt(param))
if
not
(
re
.
search
(
r'\d+'
,
password
)
and
re
.
search
(
r'[a-z]+'
,
password
)
and
re
.
search
(
r'[A-Z]+'
,
# name = req_dict.get('name')
password
)
and
re
.
search
(
# password = req_dict.get('password')
r'[.!@#$
%
^&*()_+=-]+'
,
password
)):
# # 校验参数完整性
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码应设置为包含大小写字母、数字、特殊符号'!@#$
%
^&*()_+=-'"
)
# if not all([name, password]):
# 密码不能使用用户名
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
if
password
==
name
:
#
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码存在风险,不能与用户名相同!"
)
# # 判断错误次数是否超过限制,如果超过则10分钟内禁止此IP登录
# user_ip = request.remote_addr
# 判断并添加用户信息
# # print("IP地址:", user_ip)
try
:
# try:
ouser
=
User
.
query
.
filter_by
(
mobile
=
mobile
)
.
first
()
# access_nums = redis_store.get('access_nums_{}'.format(user_ip))
print
(
ouser
)
# except Exception as e:
# if ouser and ouser.flag == 1 and ouser.status != 1: # 外部访客被禁止
# current_app.logger.error(e)
# return jsonify(code=RET.DATAEXIST, msg="当前用户被禁止,请联系管理员")
# else:
# if access_nums:
# if ouser and ouser.flag == 2 and ouser.status == 2: # 注册暂时未通过
# if int(access_nums.decode()) >= constants.LOGIN_ERROR_TIMES:
# return jsonify(code=RET.DATAEXIST, msg="手机号已注册,请耐心等待审核")
# return jsonify(code=RET.REQERR, msg="错误次数过多,请稍候重试")
#
if
ouser
and
ouser
.
flag
==
2
and
ouser
.
status
==
1
:
# 内部用户再次注册
# # 验证账户与密码
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"手机号已注册,请勿重复注册"
)
# try:
# user = Bstage.query.filter_by(name=name).first()
if
ouser
and
ouser
.
flag
==
1
and
ouser
.
status
==
1
:
# 外部访客注册
# except Exception as e:
ouser
.
real_name
=
real_name
# 姓名
# current_app.logger.error(e)
ouser
.
mobile
=
mobile
# 联系电话
# return jsonify(code=RET.DBERR, msg="获取用户信息失败")
ouser
.
belong_organization
=
belong_organization
# 所属机构
#
ouser
.
is_organization_manager
=
is_organization_manager
# 是否为机构负责人
# # 将用户名与密码验证放置在一处,若失败返回提示信息并记录次数
ouser
.
charge_organization
=
charge_organization
# 是机构负责人的话,所负责的机构
# if (not user) or (not user.check_password(password)):
# # if (not user) or (password != "123"):
ouser
.
belong_department
=
belong_department
# 所属部门
# try:
ouser
.
is_department_manager
=
is_department_manager
# 是否为部门负责人
# redis_store.incr('access_nums_{}'.format(user_ip))
# ouser.charge_department = charge_department # 是部门负责人的话,所负责的部门
# redis_store.expire('access_nums_{}'.format(user_ip), constants.LOGIN_ERROR_FORBID_TIME)
# except Exception as e:
ouser
.
position
=
position
# 职务
# current_app.logger.error(e)
ouser
.
name
=
name
# 用户名
# return jsonify(code=RET.DBERR, msg="密码错误")
ouser
.
flag
=
2
# 外部访问为1,内部人员为2
#
# ouser.status = 1 #
# # 若成功保存登录状态和管理员的角色id
ouser
.
password
=
password
# token = create_token(user.id)
else
:
#
user
=
User
(
real_name
=
real_name
,
# time = datetime.now()
mobile
=
mobile
,
# current_app.logger.error(
belong_organization
=
belong_organization
,
# '++++++++++++++++++++++++++++登录日志>>>{}:{}通过后台登录成功了!+++++++++++++++++++++++=++'.format(time, name))
is_organization_manager
=
is_organization_manager
,
#
charge_organization
=
charge_organization
,
# return jsonify(code=RET.OK, msg="登录成功", token=token, flag=3)
belong_department
=
belong_department
,
is_department_manager
=
is_department_manager
,
# charge_department=charge_department,
position
=
position
,
name
=
name
,
flag
=
2
,
status
=
1
,
password
=
password
)
db
.
session
.
add
(
user
)
db
.
session
.
commit
()
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
# except IntegrityError as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="手机号已被使用,请勿重复注册")
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"注册成功"
)
# 用户中心-个人中心初始数据展示
@api_user.route
(
"/UserInfo"
,
methods
=
[
"GET"
])
@login_required
def
detail
():
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
try
:
user_info
=
User
.
query
.
get
(
user_id
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
data
=
{
"flag"
:
user
.
flag
,
"real_name"
:
user_info
.
real_name
,
# 名字
"age"
:
user_info
.
age
,
# 年龄
"sex"
:
user_info
.
sex
,
# 性别
"mobile"
:
user_info
.
mobile
,
# 手机号
"username"
:
user_info
.
name
,
# 用户名
# "email": user_info.email, # 邮箱
"belong_organization"
:
user_info
.
belong_organization
if
user_info
.
belong_organization
else
"-"
,
# 机构
"belong_department"
:
user_info
.
belong_department
if
user_info
.
belong_department
else
"-"
,
# 部门
"position"
:
user_info
.
position
if
user_info
.
position
else
"-"
,
# 职务
# "level": user_info.level if user_info.level else "-", # 职级
# "unit": user_info.unit if user_info.unit else "-", # 所在机构
# "funct": user_info.function if user_info.function else "-", # 工作职能
# "name": user_info.name if user_info.name else "-", # 用户名
# "password": user_info.password if user_info.password else "-", # 密码
}
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查找成功"
,
data
=
data
)
# 用户中心-个人中心确认修改
@api_user.route
(
"/FixUserInfo"
,
methods
=
[
"POST"
])
@login_required
def
fix_user_info
():
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
req_dict
=
request
.
get_json
()
real_name
=
req_dict
.
get
(
"real_name"
)
age
=
req_dict
.
get
(
"age"
)
sex
=
req_dict
.
get
(
"sex"
)
name
=
req_dict
.
get
(
"name"
)
position
=
req_dict
.
get
(
"position"
)
try
:
user_information
=
User
.
query
.
get
(
user_id
)
# 姓名
if
real_name
:
user_information
.
real_name
=
real_name
# 年龄
if
age
:
user_information
.
age
=
age
# 性别 1 - 男 2 - 女
if
sex
:
user_information
.
sex
=
sex
# 职务
if
position
:
user_information
.
position
=
position
# 用户名
if
name
:
user
=
User
.
query
.
filter_by
(
name
=
name
)
.
filter
(
User
.
id
!=
user_id
)
.
first
()
if
user
:
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"用户名已经存在"
)
user_information
.
name
=
name
db
.
session
.
commit
()
except
Exception
as
e
:
db
.
session
.
rollback
()
# 回滚数据库
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"修改成功"
)
# 修改用户手机号
@api_user.route
(
"/ChangePhone"
,
methods
=
[
"POST"
])
@login_required
def
change_phone
():
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
try
:
user_info
=
User
.
query
.
get
(
user_id
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
req_dict
=
request
.
get_json
()
mobile
=
req_dict
.
get
(
"mobile"
)
sms_code
=
req_dict
.
get
(
"sms_code"
)
# 校验手机号格式
if
not
re
.
match
(
r'^1[3456789]\d{9}$'
,
user_info
.
mobile
):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"手机号格式错误"
)
if
not
redis_store
.
get
(
'sms_code_{}'
.
format
(
user_info
.
mobile
)):
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"请获取验证码"
)
# 获取短信验证码
try
:
real_sms_code
=
redis_store
.
get
(
'sms_code_{}'
.
format
(
user_info
.
mobile
))
.
decode
()
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"redis数据库异常"
)
# 判断短信验证码是否失效
if
not
redis_store
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
"短信验证码失效"
)
# 删除redis中的短信验证码,防止重复校验
try
:
redis_store
.
delete
(
"sms_code_{}"
.
format
(
user_info
.
mobile
))
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
# 判断用户填写短信验证码是否一致
if
real_sms_code
!=
sms_code
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"短信验证码错误"
)
try
:
exist
=
User
.
query
.
filter_by
(
mobile
=
mobile
)
.
first
()
if
exist
:
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"手机号已存在"
)
user
.
mobile
=
mobile
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"手机号更改成功"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
# 修改用户登录密码
@api_user.route
(
"/ChangePassword"
,
methods
=
[
"POST"
])
@login_required
def
change_password
():
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
# 原密码是否正确
req_dic
=
request
.
get_json
()
password
=
req_dic
.
get
(
"password"
)
new_password
=
req_dic
.
get
(
"new_password"
)
again_password
=
req_dic
.
get
(
"again_password"
)
try
:
user_info
=
User
.
query
.
get
(
user_id
)
if
not
check_password_hash
(
user_info
.
password_hash
,
password
):
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"原始密码错误"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
# 密码长度
if
len
(
new_password
)
<
6
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码太短,不安全"
)
# 新密码不能与原始密码一致
if
new_password
==
password
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"新密码不能与原始密码一致"
)
# 两次密码是否一致
if
new_password
!=
again_password
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"两次密码不一致"
)
# 判断密码长度是否8位,数字、字母、特殊字符同时存在,能使用用户名、连续性字母、数字、特殊字符等易猜测口令。
if
len
(
new_password
)
<
8
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码长度最少为8位"
)
# 密码应设置为包含大小写字母、数字、特殊符号'!@#$%^&*()_+=-'
if
not
(
re
.
search
(
r'\d+'
,
new_password
)
and
re
.
search
(
r'[a-z]+'
,
new_password
)
and
re
.
search
(
r'[A-Z]+'
,
new_password
)
and
re
.
search
(
r'.[!@#$
%
^&*()_+=-]+'
,
new_password
)):
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码应设置为包含大小写字母、数字、特殊符号'!@#$
%
^&*()_+=-'"
)
# 两个密码是否都存在
if
not
all
([
new_password
,
again_password
,
password
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
user_info
=
User
.
query
.
get
(
user_id
)
# if not check_password_hash(user_info.password_hash, password):
# return jsonify(code=RET.DATAERR, msg="密码错误")
user_info
.
password
=
new_password
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"更改成功"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
apps/view_user/view_other.py
View file @
adcaf3a2
...
@@ -51,108 +51,7 @@ def send_async_email(mail, app, msg):
...
@@ -51,108 +51,7 @@ def send_async_email(mail, app, msg):
mail
.
send
(
msg
)
mail
.
send
(
msg
)
@api_user.route
(
"/phoneChange"
,
methods
=
[
"POST"
])
@login_required
def
phone_change
():
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
try
:
user_information
=
User
.
query
.
get
(
user_id
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
req_dict
=
request
.
get_json
()
mobile
=
req_dict
.
get
(
"mobile"
)
sms_code
=
req_dict
.
get
(
"sms_code"
)
user_information
.
mobile
=
mobile
sms_code
=
sms_code
print
(
sms_code
)
# 校验手机号格式
if
not
re
.
match
(
r'^1[3456789]\d{9}$'
,
user_information
.
mobile
):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"手机号格式错误"
)
if
not
redis_store
.
get
(
'sms_code_{}'
.
format
(
user_information
.
mobile
)):
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"请获取验证码"
)
# 获取短信验证码
try
:
real_sms_code
=
redis_store
.
get
(
'sms_code_{}'
.
format
(
user_information
.
mobile
))
.
decode
()
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"redis数据库异常"
)
# 判断短信验证码是否失效
if
not
redis_store
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
"短信验证码失效"
)
# 删除redis中的短信验证码,防止重复校验
try
:
redis_store
.
delete
(
"sms_code_{}"
.
format
(
user_information
.
mobile
))
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
# 判断用户填写短信验证码是否一致
if
real_sms_code
!=
sms_code
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"短信验证码错误"
)
try
:
exist
=
User
.
query
.
filter_by
(
mobile
=
mobile
)
.
first
()
if
exist
:
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"手机号已存在"
)
user
.
mobile
=
mobile
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"手机号更改成功"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
@api_user.route
(
"/changepassword"
,
methods
=
[
"POST"
])
@login_required
def
change_password
():
token
=
request
.
headers
[
"token"
]
user
=
verify_token
(
token
)
user_id
=
user
.
id
# 原密码是否正确
req_dic
=
request
.
get_json
()
password
=
req_dic
.
get
(
"password"
)
re_pas
=
req_dic
.
get
(
"repassword"
)
new_pas
=
req_dic
.
get
(
"newpass"
)
# 密码长度
if
len
(
new_pas
)
<
6
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码太短,不安全"
)
# 两次密码是否一致
if
new_pas
!=
re_pas
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"两次密码不一致"
)
# 判断密码长度是否8位,数字、字母、特殊字符同时存在,能使用用户名、连续性字母、数字、特殊字符等易猜测口令。
if
len
(
new_pas
)
<
8
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码长度最少为8位"
)
# 密码应设置为包含大小写字母、数字、特殊符号'!@#$%^&*()_+=-'
if
not
(
re
.
search
(
r'\d+'
,
new_pas
)
and
re
.
search
(
r'[a-z]+'
,
new_pas
)
and
re
.
search
(
r'[A-Z]+'
,
new_pas
)
and
re
.
search
(
r'[!@#$
%
^&*()_+=-]+'
,
new_pas
)):
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码应设置为包含大小写字母、数字、特殊符号'!@#$
%
^&*()_+=-'"
)
# 两个密码是否都存在
if
not
all
([
new_pas
,
re_pas
,
password
]):
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不完整"
)
try
:
user_information
=
User
.
query
.
get
(
user_id
)
if
not
check_password_hash
(
user_information
.
password_hash
,
password
):
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
"密码错误"
)
user_information
.
password
=
new_pas
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"更改成功"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
# 给邮箱发验证码
# 给邮箱发验证码
...
@@ -248,76 +147,76 @@ def change_email():
...
@@ -248,76 +147,76 @@ def change_email():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
@api_user.route
(
"/detail"
,
methods
=
[
"GET"
])
#
@api_user.route("/detail", methods=["GET"])
@login_required
#
@login_required
def
detail
():
#
def detail():
token
=
request
.
headers
[
"token"
]
#
token = request.headers["token"]
user
=
verify_token
(
token
)
#
user = verify_token(token)
user_id
=
user
.
id
#
user_id = user.id
try
:
#
try:
user_information
=
User
.
query
.
get
(
user_id
)
#
user_information = User.query.get(user_id)
except
Exception
as
e
:
#
except Exception as e:
current_app
.
logger
.
error
(
e
)
#
current_app.logger.error(e)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
#
return jsonify(code=RET.DBERR, msg="数据库错误")
#
data
=
{
#
data = {
"flag"
:
user
.
flag
,
#
"flag": user.flag,
"real_name"
:
user_information
.
real_name
,
# 名字
#
"real_name": user_information.real_name, # 名字
"age"
:
user_information
.
age
,
# 年龄
#
"age": user_information.age, # 年龄
"sex"
:
user_information
.
sex
,
# 性别
#
"sex": user_information.sex, # 性别
"mobile"
:
user_information
.
mobile
,
# 手机号
#
"mobile": user_information.mobile, # 手机号
"username"
:
user_information
.
name
,
# 用户名
#
"username": user_information.name, # 用户名
"email"
:
user_information
.
email
,
# 邮箱
#
"email": user_information.email, # 邮箱
"section"
:
user_information
.
section
if
user_information
.
section
else
"-"
,
# 部门
#
"section": user_information.section if user_information.section else "-", # 部门
"position"
:
user_information
.
position
if
user_information
.
position
else
"-"
,
# 职务
#
"position": user_information.position if user_information.position else "-", # 职务
"level"
:
user_information
.
level
if
user_information
.
level
else
"-"
,
# 职级
#
"level": user_information.level if user_information.level else "-", # 职级
"unit"
:
user_information
.
unit
if
user_information
.
unit
else
"-"
,
# 所在机构
#
"unit": user_information.unit if user_information.unit else "-", # 所在机构
"funct"
:
user_information
.
function
if
user_information
.
function
else
"-"
,
# 工作职能
#
"funct": user_information.function if user_information.function else "-", # 工作职能
}
#
}
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"查找成功"
,
data
=
data
)
#
return jsonify(code=RET.OK, msg="查找成功", data=data)
@api_user.route
(
"/personal"
,
methods
=
[
"POST"
])
#
@api_user.route("/personal", methods=["POST"])
@login_required
#
@login_required
def
personal
():
#
def personal():
token
=
request
.
headers
[
"token"
]
#
token = request.headers["token"]
user
=
verify_token
(
token
)
#
user = verify_token(token)
user_id
=
user
.
id
#
user_id = user.id
#
req_dict
=
request
.
get_json
()
#
req_dict = request.get_json()
real_name
=
req_dict
.
get
(
"real_name"
)
#
real_name = req_dict.get("real_name")
age
=
req_dict
.
get
(
"age"
)
#
age = req_dict.get("age")
sex
=
req_dict
.
get
(
"sex"
)
#
sex = req_dict.get("sex")
name
=
req_dict
.
get
(
"name"
)
#
name = req_dict.get("name")
#
try
:
#
try:
user_information
=
User
.
query
.
get
(
user_id
)
#
user_information = User.query.get(user_id)
#
# 姓名
#
# 姓名
if
real_name
:
#
if real_name:
user_information
.
real_name
=
real_name
#
user_information.real_name = real_name
#
# 年龄
#
# 年龄
if
age
:
#
if age:
user_information
.
age
=
age
#
user_information.age = age
#
# 性别 1 - 男 2 - 女
#
# 性别 1 - 男 2 - 女
if
sex
:
#
if sex:
user_information
.
sex
=
sex
#
user_information.sex = sex
#
# 用户名
#
# 用户名
if
name
:
#
if name:
user
=
User
.
query
.
filter_by
(
name
=
name
)
.
filter
(
User
.
id
!=
user_id
)
.
first
()
#
user = User.query.filter_by(name=name).filter(User.id != user_id).first()
if
user
:
#
if user:
return
jsonify
(
code
=
RET
.
DATAEXIST
,
msg
=
"用户名已经存在"
)
#
return jsonify(code=RET.DATAEXIST, msg="用户名已经存在")
user_information
.
name
=
name
#
user_information.name = name
db
.
session
.
commit
()
#
db.session.commit()
except
Exception
as
e
:
#
except Exception as e:
db
.
session
.
rollback
()
# 回滚数据库
#
db.session.rollback() # 回滚数据库
current_app
.
logger
.
error
(
e
)
#
current_app.logger.error(e)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库错误"
)
#
return jsonify(code=RET.DBERR, msg="数据库错误")
#
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"修改成功"
)
#
return jsonify(code=RET.OK, msg="修改成功")
# 企业的收藏加个下拉列表来判断来自哪个表--是全国企业还是山西企业。返回值里面要带有status还未添加
# 企业的收藏加个下拉列表来判断来自哪个表--是全国企业还是山西企业。返回值里面要带有status还未添加
...
...
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