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
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
174 additions
and
205 deletions
+174
-205
apps/manage/view_org.py
+0
-0
apps/models.py
+73
-32
apps/util.py
+1
-1
apps/utils/send_phone_info.py
+30
-1
apps/view_user/view.py
+0
-0
apps/view_user/view_other.py
+70
-171
No files found.
apps/manage/view_org.py
View file @
adcaf3a2
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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