zoukankan      html  css  js  c++  java
  • 基于Python-Flask的权限管理7:岗位管理

    一、前言

    岗位管理主要管理用户岗位信息。

    一、后端实现

    1.ORM类

    from models.BaseModel import BaseModel
    from db import db
    
    
    class Post(BaseModel):
        """
        菜单权限表
        """
        __tablename__ = "t_post"
        id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment="岗位ID")
        post_code = db.Column(db.String(50), comment="岗位编码")
        post_name = db.Column(db.String(50), comment="岗位名称")
        post_sort = db.Column(db.Integer, comment="显示顺序")
        status = db.Column(db.Integer, default=1, comment="状态(1正常 2停用)")

    2.permission下新建post.py并注册蓝图

    from permission import *
    
    
    post = Blueprint('post', __name__)

    app.register_blueprint(post.post, url_prefix='/api/post')

    3.增删改查方法的实现

    # !/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    from permission import *
    
    
    post = Blueprint('post', __name__)
    
    
    @post.route('/index', methods=["POST"])
    def index():
        '''
        获取岗位
        :return:
        '''
        res_dir = request.get_json()
        if res_dir is None:
            return NO_PARAMETER()
        post_name = res_dir.get("post_name")
        page = res_dir.get("page")
        page_size = res_dir.get("page_size")
        status = res_dir.get("status")
        order_column_name = res_dir.get("order_column_name")
        order_type = res_dir.get("order_type")
        try:
            model = Post.query
            if post_name:
                model = model.filter(Post.post_name.like("%" + post_name + "%"))
            if status is not None:
                model = model.filter(Post.status.in_((1, 2))) if status == 0 else model.filter(Post.status == status)
            if order_column_name and order_type and order_type.lower() in ['asc', 'desc']:
                model = model.order_by(text(f"{order_column_name} {order_type}"))
            if not page or page <= 0:
                page = 1
            if not page_size or page_size <= 0:
                page_size = 10
            result = model.order_by("post_sort").paginate(page, page_size, error_out=False)
            data = construct_page_data(result)
            return SUCCESS(data=data)
        except Exception as e:
            app.logger.error(f"获取岗位信息失败:{e}")
            return REQUEST_ERROR()
    
    
    @post.route('/update', methods=["POST", "PUT"])
    def update():
        '''
            更新岗位
            POST方法根据id返回数据
            PUT方法更新
            :return:
            '''
        res_dir = request.get_json()
        if res_dir is None:
            return NO_PARAMETER()
        if request.method == "POST":
            id = res_dir.get("id")
            if id:
                model = Post.query.get(id)
                if model:
                    dict_data = model_to_dict(model)
                    return SUCCESS(dict_data)
                else:
                    return ID_NOT_FOUND()
            else:
                PARAMETER_ERR()
        if request.method == "PUT":
            id = res_dir.get("id")
            post_name = res_dir.get("post_name")
            post_code = res_dir.get("post_code")
            post_sort = res_dir.get("post_sort")
            status = res_dir.get("status")
            remark = res_dir.get("remark")
    
            if id and post_name and post_code:
                model = Post.query.get(id)
                if model:
                    token = request.headers["Authorization"]
                    user = verify_token(token)
                    model.post_name = post_name
                    model.post_code = post_code
                    model.post_sort = post_sort
                    model.status = status
                    model.remark = remark
                    model.update_by = user['name']
                    try:
                        model.update()
                        return SUCCESS()
                    except Exception as e:
                        app.logger.error(f"更新岗位失败:{e}")
                        return UPDATE_ERROR()
                else:
                    return ID_NOT_FOUND()
            else:
                return NO_PARAMETER()
    
    
    @post.route('/create', methods=["PUT"])
    def create():
        '''
        创建岗位
        :return:
        '''
        res_dir = request.get_json()
        if res_dir is None:
            return NO_PARAMETER()
        post_name = res_dir.get("post_name")
        post_code = res_dir.get("post_code")
        post_sort = res_dir.get("post_sort")
        remark = res_dir.get("remark")
        status = res_dir.get("status")
        token = request.headers["Authorization"]
        user = verify_token(token)
        if post_name and post_code:
            try:
                is_exist = Post.query.filter(Post.post_name == post_name).first()
                if is_exist:
                    return CREATE_ERROR(msg="岗位名称已存在")
                model = Post()
                model.post_name = post_name
                model.post_code = post_code
                model.post_sort = post_sort
                model.remark = remark
                model.status = status
                model.create_by = user['name']
                model.save()
                return SUCCESS()
            except Exception as e:
                app.logger.error(f"新建字典失败:{e}")
                return CREATE_ERROR()
        else:
            return NO_PARAMETER()
    
    
    @post.route('/delete', methods=["DELETE"])
    def delete():
        '''
            根据ID删除岗位
            :return:
            '''
        res_dir = request.get_json()
        if res_dir is None:
            return NO_PARAMETER()
        id = res_dir.get("id")
        if id:
            try:
                model = Post.query.get(id)
                if model:
                    model.delete()
                    return SUCCESS()
                else:
                    return ID_NOT_FOUND()
            except Exception as e:
                app.logger.error(f"删除岗位失败:{e}")
                return DELETE_ERROR()
        else:
            return PARAMETER_ERR()
  • 相关阅读:
    9.11 eventbus
    9.10,,,实现new instanceof apply call 高阶函数,偏函数,柯里化
    9.9 promise实现 写完了传到gitee上面了,这里这个不完整
    9.5cors配置代码
    9.5 jsonp 实现
    9.5 http tcp https总结
    9.3 es6 class一部分 and es5 class 发布订阅
    8.30 cookie session token jwt
    8.30vue响应式原理
    warning: LF will be replaced by CRLF in renard-wx/project.config.json. The file will have its original line endings in your working directory
  • 原文地址:https://www.cnblogs.com/huguodong/p/12592397.html
Copyright © 2011-2022 走看看