.NET Core6.0 MVC+layui+SqlSugar 简单增删改查

news/2024/5/19 23:43:32 标签: .netcore, mvc, layui

HTML部分:

@{
    ViewData["Title"] = "用户列表";
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>用户列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

    <link rel="stylesheet" href="~/layui/lib/layui-v2.6.3/css/layui.css" media="all">
    <link rel="stylesheet" href="~/layui/css/public.css" media="all">
    <script src="~/layui/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>

    <script src="~/learun/js/jquery/jquery-2.2.0.min.js"></script>

    <script>
        //添加用户 层
        function OpenAdd() {
            var index = layer.open({
                type: 1, //0 dialog 信息框 1; page 页面层;2 iframe 内联框架层;3 loading 加载层;4 tips 贴士层
                title: "",
                content: `
<table class="layui-table">
<tr>
        <td>账号</td>
        <td><input type="text" id="txtName" class="layui-text" /></td>
    </tr>
    <tr>
        <td>类型</td>
        <td>
                    <select id="selType" style="width:175px; height:32px;">
                <option value="0">普通用户</option>
                <option value="1">管理员</option>
            </select>
        </td>
    </tr>
</table>`,
                area: ["300px", "200px"],//弹出尺寸
                btn: ["保存"],
                btn1: function (index, layero) {
                    AddUser();
                },
                cancel: function () {
                    PageList(1);//刷新列表
                }
            });
        }
        //编辑用户 层
        function OpenEdit(id, name, type) {
            var index = layer.open({
                type: 1, //0 dialog 信息框 1; page 页面层;2 iframe 内联框架层;3 loading 加载层;4 tips 贴士层
                title: "",
                content: `
<table class="layui-table">
<tr>
        <td>ID</td>
            <td><span id="spanId"><span/></td>
    </tr>
    <tr>
        <td>账号</td>
                <td><input type="text" id="txtName" class="layui-text" value="" /></td>
    </tr>
    <tr>
        <td>类型</td>
        <td>
            <select id="selType" style="width:175px; height:32px;">
                <option value="0">普通用户</option>
                <option value="1">管理员</option>
            </select>
        </td>
    </tr>
</table>`,
                area: ["500px", "250px"],//弹出尺寸
                success: function () {
                    //回绑控件
                    $("#spanId").html(id);
                    $("#txtName").val(name);
                    $("#selType").val(type);
                },
                btn: ["保存"],
                btn1: function (index, layero) {
                    EditUser();
                },
                cancel: function () {
                    PageList(1);//刷新列表
                }
            });
        }
        //删除用户 层
        function OpenDel(id, name) {
            layer.confirm('确定删除: ' + name + ' ?', {
                btn: ['确定', '取消']
            }, function (index, layero) {//btn1
                if (name.toLowerCase() != 'admin'){
                    DelUser(id);
                }
                else{
                    layer.msg("不可以删除 admin 账号!");
                }
            }, function (index) {//btn2
                PageList(1);//刷新列表
            });
        }
    </script>

</head>
<body>
    <div class="layuimini-container" id="app">
        <div class="layuimini-main">
            <!-----查询条件----->
            <div class="layui-form-item">
                <div class="layui-inline">
                    <label class="layui-form-label">用户名</label>
                    <div class="layui-input-inline">
                        <input type="text" autocomplete="off" class="layui-input" id="txtUserName">
                    </div>
                </div>
                <div class="layui-inline">
                    <label class="layui-form-label">类型</label>
                    <div class="layui-input-inline">
                        <select id="selUserType" style="width:175px; height:32px;">
                            <option value="">全部</option>
                            <option value="0">普通用户</option>
                            <option value="1">管理员</option>
                        </select>
                    </div>
                </div>

                <div class="layui-inline">
                    <button type="button" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn" onclick="PageList()"><i class="layui-icon"></i> 搜 索</button>
                    <button type="button" class="layui-btn" style="margin-left:300px;" onclick="OpenAdd()">添加新用户</button>
                </div>
            </div>
            <!-----查询条件----->
            <!--表格-->
            <table id="table" class="layui-table" lay-filter="table"></table>
            <!--表格-->
        </div>
    </div>

    <script type="text/html" id="templetType">
        {{#  if(d.type === '1'){ }}
         管理员
        {{#  } else { }}
          普通用户
        {{#  } }}
    </script>
    <script type="text/html" id="tempCreateDate">
        {{#}}
        {{  d.createDate.replace('T',' ') }}
        {{#}}
    </script>
 
    <script type="text/javascript">
        //初始化
        $(function () {
            PageList();
        });
        $(function () {
            $("#selUserType").change(function () {
                PageList();
            });
        });
        //查询
        function PageList() {
            var name = $("#txtUserName").val();//查询条件
            var type = $("#selUserType").val();

            layui.use(['table'], function () {
                var table = layui.table;

                table.render({
                    elem: '#table'//对应着Table的ID
                    , method: 'POST'
                    , url: '/User/GetUserPage'//URL为数据接口的地址
                    , where: { //where就是ajax的data,但不包括分页条件
                        "name": name,
                        "type": type,
                    }
                    , request: {  //分页条件: page  limit
                        pageName: 'page',    //页码的参数名称,默认:page 或者 index、pageIndex
                        limitName: 'size'  //每页数据量的参数名,默认:limit 或者 size、pageSize
                    }
                    , parseData: function (res) {
                        return {
                            "code": 0,//数据类型,必须的
                            "count": res.total,//总记录数,用于分页
                            "data": res.data,//必须的
                        }
                    }
                    , cols: [[
                        { field: 'account', title: 'ID', hide: true }
                        , { field: 'name', title: '姓名', sort: true }
                        , { field: 'type', title: '类型', sort: true, templet: "#templetType" }
                        , { field: 'createBy', title: '创建者', sort: true, }
                        , { field: 'createDate', title: '创建日', sort: true, templet: "#tempCreateDate" }
                        , { title: '操作', toolbar: '#barDemo' }
                    ]],
                    page: true,//开启分页功能
                    limit: 15,//当前每页条数
                    limits: [15, 30, 50, 100],//每页条数集合
                });
            });
        }
    </script>
    <script type="text/html" id="barDemo">
        <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
    </script>
    <script>
        layui.use('table', function () {
            var table = layui.table;
            //监听工具条
            table.on('tool(table)', function (obj) {
                var data = obj.data;
                if (obj.event === 'edit') {
                    OpenEdit(data.account, data.name, data.type);
                }
                if (obj.event === 'del') {
                    OpenDel(data.account, data.name);
                }
            });
        });
    </script>
    <script>
        //添加用户ajax
        function AddUser() {
            var name = $("#txtName").val();
            var type = $("#selType").val();

            if (name) {
                $.ajax({
                    type: "POST",
                    url: "/User/AddUser",
                    data: {
                        "name": name,
                        "type": type,
                    },
                    success: function (result) {
                        if (result.success) {
                            layer.msg('添加成功!', {
                                icon: 1,
                                time: 1000 //1秒关闭(如果不配置,默认是3秒)
                            }, function () {
                                PageList(1);
                                layer.closeAll();
                            });
                        }
                        else {
                            layer.msg('添加失败!');
                        }
                    }
                });
            }
            else {
                layer.msg("请填写[账号]!");
            }
        }
    </script>

    <script>
        function EditUser() {
            var account = $("#spanId").html();
            var name = $("#txtName").val();
            var type = $("#selType").val();

            if (account) {
                if (name) {
                    $.ajax({
                        type: "POST",
                        url: "/User/EditUser",
                        data: {
                            "account": account,
                            "name": name,
                            "type": type,
                        },
                        success: function (result) {
                            if (result.success) {
                                layer.msg('保存成功!', {
                                    icon: 1,
                                    time: 1000 //1秒关闭(如果不配置,默认是3秒)
                                }, function () {
                                    PageList(1);
                                    layer.closeAll();
                                });
                            }
                            else {
                                layer.msg('保存失败!');
                            }
                        }
                    });
                }
                else {
                    layer.msg("请填写[账号]!");
                }
            }
        }
    </script>

    <script>
        function DelUser(id) {
            var account = id;
            if (id) {
                $.ajax({
                    type: "POST",
                    url: "/User/DelUser",
                    data: {
                        "account": account,
                    },
                    success: function (result) {
                        if (result.success) {
                            layer.msg('删除成功!', {
                                icon: 1,
                                time: 1000 //1秒关闭(如果不配置,默认是3秒)
                            }, function () {
                                PageList(1);
                                layer.closeAll();
                            });
                        }
                        else {
                            layer.msg('删除失败!');
                        }
                    }
                });
            }
            else {
                layer.msg("删除失败!!");
            }
        }
    </script>

</body>
</html>

MVC部分:

using Microsoft.AspNetCore.Mvc;
using VoltageInvoiceBLL;
using VoltageInvoiceModel;
using VoltageInvoiceUI.Models;

namespace VoltageInvoiceUI.Controllers
{
    public class UserController : BaseController
    {
        #region 页面
        public UserController()
        {
            if (string.IsNullOrWhiteSpace(LOGIN_USER_NAME) || string.IsNullOrWhiteSpace(LOGIN_USER_TYPE) || string.IsNullOrWhiteSpace(LOGIN_USER_ACCOUNT))
            {
                RedirectToAction("LogIn", "Home");//返回登录页面
            }
        }
        //列表页面
        public IActionResult Index()
        {
            return View();
        }
        #endregion

        #region 用户管理
        public IActionResult Edit()
        {
            return View();
        }
        /// <summary>
        /// 分页查询用户
        /// </summary>
        public IActionResult GetUserPage(string name, string type, int page, int size)
        {
            PageResponse result = new PageResponse();

            UserBLL bll = new UserBLL();
            int total = 0;//总记录数
            int allPage = 0;//总分页数

            var list = bll.GetUserPage(name, type, page, size, ref total);
            if (list != null && list.Count > 0)
            {
                allPage = GetAllPage(total, size);
                result.total = total;
                result.allPage = allPage;
                result.pageIndex = page;
                result.pageSize = size;
                result.data = list;
            }
            return Json(result);
        }

        /// <summary>
        /// 添加用户
        /// </summary>
        [HttpPost]
        public IActionResult AddUser(string name, string type)
        {
            RestFulClass rfc = new RestFulClass();

            Userinfo user = new Userinfo()
            {
                Account = Guid.NewGuid().ToString(),
                Name = name,
                PWD = "123456",
                TYPE = type,
                IsDeleted = false,
                TAX = "",
                CreateBy = LOGIN_USER_NAME,
                CreateDate = DateTime.Now,
            };
            try
            {
                UserBLL bll = new UserBLL();
                var b = bll.AddUser(user);

                if (b)
                    rfc.success = true;
                else
                    rfc.success = false;
            }
            catch (Exception ex)
            {
                rfc.success = false;
                rfc.message = ex.Message;
            }

            return Json(rfc);
        }
        /// <summary>
        /// 编辑用户
        /// </summary>
        [HttpPost]
        public IActionResult EditUser(string account, string name, string type)
        {
            RestFulClass rfc = new RestFulClass();

            Userinfo user = new Userinfo()
            {
                Account = account,
                Name = name,
                TYPE = type,
                UpdateBy = LOGIN_USER_NAME,
                UpdateDate = DateTime.Now,
            };

            try
            {
                UserBLL bll = new UserBLL();
                var b = bll.EditUser(user);

                if (b)
                    rfc.success = true;
                else
                    rfc.success = false;
            }
            catch (Exception ex)
            {
                rfc.success = false;
                rfc.message = ex.Message;
            }

            return Json(rfc);
        }

        /// <summary>
        /// 删除用户
        /// </summary>
        [HttpPost]
        public IActionResult DelUser(string account)
        {
            RestFulClass rfc = new RestFulClass();
            try
            {
                if (!string.IsNullOrWhiteSpace(account))
                {
                    UserBLL bll = new UserBLL();
                    var b = bll.DelUser(account);

                    if (b)
                        rfc.success = true;
                    else
                        rfc.success = false;
                }
                else
                {
                    rfc.success = false;
                    rfc.message = "缺少需删除的用户id";
                }
            }
            catch (Exception ex)
            {
                rfc.success = false;
                rfc.message = ex.Message;
            }

            return Json(rfc);
        }
        #endregion

    }
}

SqlSugar部分:

using SqlSugar;
using VoltageInvoiceDAL;
using VoltageInvoiceModel;

namespace VoltageInvoiceBLL
{
    public class UserBLL
    {
        SqlSugarHelper sugar = new SqlSugarHelper();

        #region 登录验证
        /// <summary>
        /// 登录验证
        /// </summary>
        public Userinfo CheckLogin(string name, string pwd)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var user = db.Queryable<Userinfo>()
                .Where(a => a.Name.Equals(name) && a.PWD.Equals(pwd) && a.IsDeleted == false)
                .ToList().FirstOrDefault();//查询

            return user;//返回登录成功的用户对象
        }

        public Userinfo CheckUser(string account, string pwdOld)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var user = db.Queryable<Userinfo>()
                .Where(a => a.Account.Equals(account) && a.PWD.Equals(pwdOld) && a.IsDeleted == false)
                .ToList().FirstOrDefault();//查询

            return user;//返回登录成功的用户对象
        }
        /// <summary>
        /// 修改密码
        /// </summary>
        public bool ChangePwd(string account, string pwdNew)
        {
            var db = sugar.SqlClient();//数据库连接对象
            string sql = $"update Userinfo set PWD='{pwdNew}' where Account='{account}'";
            int i = db.Ado.ExecuteCommand(sql);

            return i > 0;
        }

        #endregion

        #region 编辑用户
        /// <summary>
        /// 分页查询用户数据
        /// </summary>
        public List<Userinfo> GetUserPage(string name, string type, int pageNumber, int pageSize, ref int totalNumber)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var list = db.Queryable<Userinfo>()
                .Where(a => a.IsDeleted == false)
                .WhereIF(!string.IsNullOrWhiteSpace(name), (a => a.Name.Contains(name)))
                .WhereIF(!string.IsNullOrWhiteSpace(type), (a => a.TYPE.Equals(type)))
                .OrderBy(a => a.CreateDate, OrderByType.Desc)
                .ToPageList(pageNumber, pageSize, ref totalNumber);

            int total = totalNumber;
            return list;
        }

        /// <summary>
        /// 新增用户
        /// </summary>
        public bool AddUser(Userinfo userinfo)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var i = db.Insertable(userinfo).ExecuteCommand();

            return i > 0;
        }

        /// <summary>
        /// 编辑用户
        /// </summary>
        public bool EditUser(Userinfo userinfo)
        {
            var db = sugar.SqlClient();//数据库连接对象
            var i = db.Updateable(userinfo)
                .IgnoreColumns(a => a.Account)
                .IgnoreColumns(a => a.PWD)
                .IgnoreColumns(a => a.IsDeleted)
                .IgnoreColumns(a => a.TAX)
                .IgnoreColumns(a => a.CreateBy)
                .IgnoreColumns(a => a.CreateDate)
                .Where(a => a.Account == userinfo.Account)
                .ExecuteCommand();

            return i > 0;
        }
        /// <summary>
        /// 逻辑删除用户
        /// </summary>
        public bool DelUser(string account)
        {
            var db = sugar.SqlClient();//数据库连接对象
            string sql = $"update Userinfo set IsDeleted=1 where Account='{account}'";// IsDeleted=1 逻辑删除
            int i = db.Ado.ExecuteCommand(sql);

            return i > 0;
        }
        #endregion

    }
}
using SqlSugar;
using VoltageInvoiceTools;

namespace VoltageInvoiceDAL
{
    public class SqlSugarHelper
    {
        public string _connectionString = CustomConfigManager.GetConfig("ConnectionString:DB");//获取SQL连接字符串
        public SqlSugarClient _db = null;

        /// <summary>
        /// 构造函数(初始化)
        /// 调用方法:
        ///  var db = sugar.SqlClient();
        /// var user = db.Queryable<Userinfo>().Where(a => a.Name.Equals(uid) && a.PWD.Equals(pwd)).ToList().FirstOrDefault();
        /// </summary>
        public SqlSugarClient SqlClient()
        {
            if (string.IsNullOrEmpty(_connectionString))
                throw new ArgumentNullException("数据库连接字符串为空");

            _db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = _connectionString,//数据库连接字符串,见UI的appsettings.json内配置
                DbType = DbType.SqlServer,//数据库类型
                IsAutoCloseConnection = true,//自动断开连接
                MoreSettings = new ConnMoreSettings()
                {
                    IsWithNoLockQuery = true,//为true表式查询的时候默认会加上.With(SqlWith.NoLock),
                    IsAutoRemoveDataCache = true//为true自动清除缓存
                }
            });
            //输入最终SQL语句...
            _db.Aop.OnLogExecuting = (sql, pars) =>
            {
                var s1 = sql;//断点打在这里看内部生成的sql语句...
            };

            return _db;
        }

    }
}
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",

  //数据库连接字符串:
  "ConnectionString": {
    "DB": "Server=.;Database=VoltageInvoiceDB;User ID=sa;Password=123456;"
  }

}

界面预览:

本例源码下载: 

http://download.csdn.net/download/djk8888/88595401


http://www.niftyadmin.cn/n/5238238.html

相关文章

MacOS M芯片 安装MySQL5.7教程

目录 1. 安装Homebrew1.1 快速安装1.2 检查是否安装成功 2. 通过Homebrew安装MySQL2.1 搜索 MySQL 版本2.2 安装MySQL 5.72.3 位置说明2.4 启动MySQL服务2.5 检查服务状态2.6 设置环境变量2.7 重置密码 3. 测试安装 1. 安装Homebrew 1.1 快速安装 /bin/bash -c "$(curl …

Docker 简介,Docker 安装——3

目录&#xff1a; Docker 简介 什么是虚拟化、容器化&#xff1f;为什么要虚拟化、容器化&#xff1f;虚拟化实现方式 应用程序执行环境分层虚拟化常见类别 虚拟机容器JVM 之类的虚拟机常见虚拟化实现 主机虚拟化(虚拟机)实现容器虚拟化实现 容器虚拟化实现原理容器虚拟化基础…

深度学习机器视觉车道线识别与检测 -自动驾驶 计算机竞赛

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…

西南科技大学模拟电子技术实验六(BJT电压串联负反馈放大电路)预习报告

一、计算/设计过程 BJT电压串联负反馈放大电路图1-1-1-1为BJT电压串联负反馈放大实验电路,若需稳定输出电压,减小从信号源所取电流,可引入电压串联负反馈闭合开关。 图1-1-1-1 理论算法公式(1)闭环电压放大倍数 (2)反馈系数 (3)输入电阻 (4)输出电阻 计算过程。开环…

6-HBase分布式数据库

单选题 题目1&#xff1a;下列关于zookeeper描述正确的是 选项: A 无论客户端连接的是哪个Zookeeper服务器&#xff0c;其看到的服务端数据模型都是一致的 B 从同一个客户端发起的事务请求&#xff0c;最终将会严格按照其发起顺序被应用到zookeeper中 C 在一个5个节点组成的…

XC4060 40V降5V/3.3V 0.6A小电流高耐压芯片 适用于单片机供电输出、电池供电设备

XC4060器件是高效率&#xff0c;同步降压DC/DC稳压器。具有较宽的输入范围&#xff0c;它们适用于广泛的应用&#xff0c;例如来自非稳压源的功率调节。他们的特点是一个长距离(500mQ/300mQ2型) 内部开关的效率最高 (92%)。Sum od (非A选项)和PWM模式(A选项)&#xff0c;工作频…

微信小程序 纯css画仪表盘

刚看到设计稿的时候第一时间想到的就是用canvas来做这个仪表盘&#xff0c;虽然本人的画布用的不是很好但还可以写一写&#x1f600;。话不多说直接上代码。最后有纯css方法 <!--wxml--> <canvas canvas-id"circle" class"circle" >// js dat…

C#多进程通信之共享内存方式

共享内存方式应该最简单易用的 直接上代码,下面列出了2种,一种是映射视图,一种是映射流,任选一种即可 服务端: MemoryMappedFile memoryAccessor MemoryMappedFile.CreateNew("ProcessCommunicationAccessor", 500, MemoryMappedFileAccess.ReadWrite);//创建共享…