精华内容
下载资源
问答
  • 审核功能实现
    万次阅读
    2016-10-15 14:41:29

    1、普通

    方案:经办时入A表,审核后从A表读取数据,然后操作目标B表;

    优势:思路简单

    劣势:对后端功能实行高度的嵌入;审核功能数据操作不统一

     

    2、弹框式

    方案:前台实现,操作时判断是否需要权限控制,如果需要,则弹出框,由审核人员进行审核,

    审核通过后,进行后续操作。

     

    优势:对后台功能无嵌入;可支持查询、导出、操作等全部功能;

    劣势:需要经办人和审核人同时在场操作

     

    3、入参缓冲时

    方案:审核功能是独立的功能,前台发起业务后,入参存入数据库。

    待审核通过后,后台触发调用相应的接口,并将执行结果通知到经办人。

    优势:对前后台功能均无嵌入;支持导出及操作类;经办人和审核人可以异步操作;审核功能数据操作统一;

    劣势:需要框架层支持;实现逻辑稍微复杂

     

    4、临时表

    方案:所有需要审核功能涉及的表均增加相应的表,该表比源表主要增加1个字段,即审核流水,其余字段命名完全一致;

    所有功能操作时先入该表,审核通过后,由后台从该表将数据同步至正表。

    优势:无需要框架支持;支持导出及操作类;经办人和审核人可以异步操作;审核功能数据操作统一;

    劣势:对后端功能实行高度的嵌入;

     

    建议1:比较倾向于方案23;方案2在操作上同银行柜台操作方式比较类似,但是不符合异步式的工作方法。

    方案3比较理想,但是需要在框架层实现。

     

    建议2:不实现审核,改用审计功能,对于中小系统而言比较合适。此外,可以和预警系统配合,整体上实现风险可控。


    建议3:当然,以上不是一成不变的,因系统性能、管理、习惯等问题,可以将以上方案进行综合,从而形成自己特有的方案。

    更多相关内容
  • 主要为大家详细介绍了Vue实现表格批量审核功能实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 前言 在团队开发中,无论是写前端(js,css,...代码格式审核工具,可以随意组合配置各种风格,用于组成团队的代码统一规范。 js-beautiful js代码整理、美化工具。 然后这三个工具互相配合就形成了以下效果: 1.项目组
  • 如何实现审核功能

    千次阅读 2019-07-28 17:42:26
    如何实现审核功能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:VS C# 作者: 撰写时间:2019.7.26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...

    如何实现审核功能

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    开发工具与关键技术:VS C#

    作者:

    撰写时间:2019.7.26

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    如何实现审核的功能呢?首先是实现弹出审核模态框和重置表单,再通过ID获取要审核的数据和使用post获取到通过ID查询的数据,用loadDatatoForm回填表单数据和returnData接收查询返回的数据。

    根据ID进行查询数据,

    根据ID完成查询和回填数据后,就可以到页面点击审核按钮就可以弹出一个模态框和模态框的数据回填。

    然后是保存审核的方法获取页面数据,再判断数据完整性验证如果数据为空会提示“请填写完整数据信息”,如果不为空就可以提交表单;再到验证码的点击切换;

    验证码的点击切换方法调用封装好的方法生成5位数随机字符串,将生成的字符串保存到session中,将生成的字符串转换成图片生成的图片返回到浏览器这样就完成了。

    再到控制器写他的保存的方法,如下面代码:判断验证码是否填写正确和判断数据,然后Linq修改在pwMember.States.Trim() == "通过"时dbBrow.States = "VIP会员",在数据判断等完成后修改成功。

    public ActionResult saveUpdateMember(PW_Member pwMember,int MemberID, string POASum)

            {

                ReturnJsonVo returnJson = new ReturnJsonVo();

                string strValidCode = Request["ValideCodeTwo"];

                string SessionValidCode = "";

                try

                {

                    SessionValidCode = Session["ValideCodeTwo"].ToString();

                }

                catch (Exception e)

                {

                    Console.Write(e);

                }

                if (SessionValidCode.Equals(strValidCode.Trim(), StringComparison.CurrentCultureIgnoreCase))

                {

                    //判断数据

                    if (!string.IsNullOrEmpty(pwMember.AuditRemark))

                    {

                        //Linq 修改

                        var ID = pwMember.MemberID;

                        PW_Member dbBrow = myModles.PW_Member.Where(S => S.MemberID == ID).Single();

                        if (pwMember.States.Trim() == "通过")

                        {

                            dbBrow.States = "VIP会员";

                        }

                        else

                        {

                            dbBrow.States = "审核失败";

                        }

     

                        dbBrow.AuditRemark = pwMember.AuditRemark;

                        PW_Member dbPaynOnA = myModles.PW_Member.Where(S => S.MemberID == MemberID).Single();

                        dbPaynOnA.StartTime = DateTime.Now;

                        dbPaynOnA.AuditTime = DateTime.Now;

                        myModles.Entry(dbPaynOnA).State = EntityState.Modified;

                        int intR = myModles.SaveChanges();

     

                        if (intR > 0)

                        {

                            returnJson.State = true;

                            returnJson.Text = "修改成功";

                        }

                        else

                        {

                            returnJson.Text = "修改失败";

                        }

                    }

                    else

                    {

                        returnJson.Text = "数据不完整";

                    }

                }

                else

                {

                    returnJson.Text = "请输入正确的验证码!";

                }

                return Json(returnJson, JsonRequestBehavior.AllowGet);

            }

    展开全文
  • 代码说明: 1)为table添加属性 @selection -change= "selsChange" @row -click= "handleChange" 2)添加一列 指定type为selection,表示该表格可选择 < el -table -column type = ...
    1 前端部分

    效果如下图所示:
    这里写图片描述

    1.1 html部分
                  <el-form-item>
                   <el-button type="success" icon="el-icon-search" @click="auditServer()" :disabled="this.sels.length === 0">批量审核</el-button>
                     <el-button @click="toggleSelection()">取消选择</el-button>
                  </el-form-item>
                </br>
                <el-table border :fit="true" ref="multipleTable" height="520" :data="listData" :highlight-current-row="true" size="small" @selection-change="selsChange" @row-click="handleChange">
                    <el-table-column type="selection" width="55"></el-table-column>
                    <el-table-column prop="applcd" label="微服务编码" show-overflow-tooltip width="130px" sortable fixed="left"></el-table-column>
                    <el-table-column prop="servcd" label="服务编码" show-overflow-tooltip width="130px" sortable fixed="left"></el-table-column>
                </el-table>

    代码说明:

    1)为table添加属性
    @selection-change="selsChange" @row-click="handleChange"
    2)添加一列 指定type为selection,表示该表格可选择
    <el-table-column type="selection" width="55"></el-table-column>
    3)当没有选择服务时,按钮不可选;
    :disabled="this.sels.length === 0"
    1.2 js部分
    export default {
      data () {
        return {
    
          sels:[],
    
    
      methods: {
    
    
        selsChange(sels) {
            this.sels = sels
        },
    
        handleChange(row, event, column) {
            this.$refs.multipleTable.toggleRowSelection(row)
        },
        auditServer () {
          var servids = this.sels.map(item => item.servid).join(",")
          var params = {
            serverIds:servids
          }
              debugger
             auditServer(params).then(
              function (res) {
              debugger
                if(res.code === 200){
                this.$message({
                         message: res.data,
                         type: 'success'
                       })
                this.dialogFormVisible = false
                }else{
                this.$message({
                      message: '错误信息:'+res.message,
                      type: 'error'
                    });
                }
                   this.loadData()
              }.bind(this)
           )
        },
    
        toggleSelection(){
        this.$refs.multipleTable.clearSelection();
        }
      }
    }
    2 后端部分
    2.1 mapper.xml

    批量修改的Mybatis实现方式,注意sql语句的书写

    <!--审核服务信息-->
        <update id="auditServers" parameterType="java.util.List">
            update sdcp_serv
            SET  ISAUDITED ='1'
            where servid in
            <foreach collection="list" index="index" item="item"
                     separator="," open="(" close=")">
                #{item,jdbcType=VARCHAR}
            </foreach>
        </update>
    2.2 mapper.java(对应的接口)
    int  auditServers(List<String> servids);
    2.3 controller
    /**   
            * @Description: 批量审核服务信息 
            * @param @param map
            * @param @return
            * @param @throws Exception   参数  
            * @return Object   返回类型    
            */ 
            @RequestMapping(value = "/auditServers", method = RequestMethod.POST)
            public Object auditServers(@RequestBody  Map<String, Object> map) throws Exception {
                if (map.get("serverIds")!=null){
                    String serverIds = (String) map.get("serverIds");
                    List<String> ids = Arrays.asList(serverIds.split(","));
                    apiServerMapper.auditServers(ids);
                }
                return ResponseData.success("服务信息修改成功");
            }

    转载请注明出处:https://blog.csdn.net/wangjie919/article/details/81103828

    展开全文
  • 在做“文章敏感词汇审核功能的时候,开始在把“审核”放在插入数据库的时候,后来想有一个功能,能在用户点击“提交”按钮的时候,给一个提示。这样相对“友好”那么点。
  • 1.只有管理员有注册审批这个权限,因此第一步是要显示待审核状态的员工 1.EmployeeDAO类 /** * 方法四:查询所有员工信息,返回到集合中 * @return */ public List<Employee> selectAllEmployee()...

    1.只有管理员有注册审批这个权限,因此第一步是要显示待审核状态的员工

    1.EmployeeDAO类

      /**
    	   * 方法四:查询所有员工信息,返回到集合中
    	   * @return
    	   */
    	  public List<Employee> selectAllEmployee(){
    			 conn=ConnectionFactory.getConnection();
    			 List<Employee> employeeslist=new ArrayList<Employee>();
    			 Employee employee=null;	
    			 try {
    				PreparedStatement st=null;
    				//只查询已注册且未审批 且 角色是员工的
    				String sql="select * from employee where role='2' and status='0'";
    		 		st = conn.prepareStatement(sql);
    				ResultSet rs =st.executeQuery(sql);
    				while(rs.next()){
    					employee=new Employee();
    					employee.setEmployeeid(rs.getInt("employeeid"));
    					employee.setEmployeename(rs.getString("employeename"));
    					employee.setUsername(rs.getString("username"));
    					employee.setPhone(rs.getString("phone"));
    					employee.setEmail(rs.getString("email"));
    					employee.setStatus(rs.getString("status"));
    					employee.setDepartmentid(rs.getInt("departmentid"));
    					employee.setPassword(rs.getString("password"));
    					employee.setRole(rs.getString("role"));
    					employeeslist.add(employee);
    				}
    			 } catch (SQLException e) {
    				    e.printStackTrace();
    			}finally{
    				//最后总要关闭连接
    				ConnectionFactory.closeConnection();
    			}
    			 return employeeslist;
    		 }

    2.修改

    新增一个

    ViewAllEmployeesServlet类

    package com.meeting.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.meeting.dao.EmployeeDAO;
    import com.meeting.vo.Employee;
    
    public class ViewAllEmployeesServlet extends HttpServlet {
    
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		doPost(request,response);
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		String code=request.getParameter("code");
    		
    		//新建一个DAO去调用刚才写的selectAllEmployee()方法
    		EmployeeDAO dao=new EmployeeDAO();
    		List<Employee> employeesList=dao.selectAllEmployee();
    		//把查询得到的集合存起来叫employeesList,并且请求转发到approveaccount.jsp
    		request.setAttribute("employeesList", employeesList);
    		
    		if(code!=null&code.equals("approve")){
    			request.getRequestDispatcher("approveaccount.jsp").forward(request, response);
    		}
    		
    	}
    
    }
    

     

    新增一个approveaccount.jsp

    <%@ page language="java" import="java.util.*,com.meeting.vo.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <html>
        <head>
            <title>CoolMeeting会议管理系统</title>
            <link rel="stylesheet" href="styles/common03.css"/>            
        </head>
        <body>
                <div class="page-content">
                    <div class="content-nav">
                        人员管理 > 注册审批
                    </div>
                    <table class="listtable">
                        <caption>所有待审批注册信息:</caption>
                        <!-- 取出刚刚存起来的待审批的员工列表 -->
                        <%List<Employee> employeesList=(List<Employee>)request.getAttribute("employeesList"); %>
                        <tr class="listheader">
                            <th>姓名</th>
                            <th>账号名</th>
                            <th>联系电话</th>
                            <th>电子邮件</th>
                            <th>操作</th>
                        </tr>
                      <!--   循环迭代这个列表 -->
                        <%for(Employee e:employeesList){ %>
                        <tr>
                            <td><%=e.getEmployeename()%></td>
                            <td><%=e.getUsername()%></td>
                            <td><%=e.getPhone()%></td>
                            <td><%=e.getEmail()%></td>
                            <td>
                                <input type="button" class="clickbutton" value="通过"/>
                                <input type="button" class="clickbutton" value="不通过"/>
                            </td>
                        </tr>
                        <%}%>
                    </table>
                </div>
        
            <div class="page-footer">
                <hr/>
                更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a>
                <img src="images/footer.png" alt="CoolMeeting"/>
            </div>
        </body>
    </html>

     

    web.xml

    	<servlet>
    		<servlet-name>ViewAllEmployeesServlet</servlet-name>
    		<servlet-class>com.meeting.servlet.ViewAllEmployeesServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>ViewAllEmployeesServlet</servlet-name>
    		<url-pattern>/ViewAllEmployeesServlet</url-pattern>
    	</servlet-mapping>

     

    测试:

    登录一个管理员的账号

    可以看到,待审批的员工会显示出来

     

    2.实现审批的操作:实现通过/不通过这个按钮

    1.修改数据逻辑EmployeeDAO

    新增一个更新用户状态的方法updateStatus()

      /**
    	   * 方法五:
    	   * 向表employee中插入记录,其中status和role使用默认值
    	   * @param employeeid 传入的员工id
    	   * @param status	传入的员工状态
    	   */
    	  public void updateStatus(int employeeid,String status){
    		  conn=ConnectionFactory.getConnection();
    		  String sql="update employee set status='"+status+"'where employeeid="+employeeid;
    		  try {		
    			PreparedStatement pstmt = conn.prepareStatement(sql);
    			pstmt.executeUpdate();	
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			ConnectionFactory.closeConnection();
    		}	  
    	  }

    2.写一个新的审批的servlet

    ApproveServlet.java

    package com.meeting.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.meeting.dao.EmployeeDAO;
    
    public class ApproveServlet extends HttpServlet {
    
    	
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request,response);
    	}
    
    	
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		//得到需要审批的员工id
    		int employeeid=Integer.parseInt(request.getParameter("employeeid"));
    		//用oper来知道审批的操作是通过还是不通过
    		String oper =request.getParameter("oper");
    		EmployeeDAO dao=new EmployeeDAO();
    		
    		if(oper!=null&&oper.equals("yes")){
    			//通过
    			dao.updateStatus(employeeid,"1");
    		}
    		
    		if(oper!=null&&oper.equals("no")){
    			//不通过
    			dao.updateStatus(employeeid,"2");
    		}
    		//请求转发跳转到
    		request.getRequestDispatcher("ViewAllEmployeesServlet?code=approve").forward(request, response);
    		
    	}
    
    }
    

     

    3.修改approveaccount.jsp

    修改通过与不通过的按钮

    测试一下:

    按通过

     

    再改回0

    按不通过按钮

     

     

    成功!

    展开全文
  • 它的目的是为了找到并且修复应用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必要的风险代码审核不是简单的检查代码,审核代码的原因是确保代码能安全的做到对信息和资源进行...
  • 仿抖音 web后台代码 支持上传下载分享、图片、视频审核功能
  • “员工”提出请假申请,如果小于“部门经理可审批时间”,经过部门经理审批通过即可。如果大于“部门经理可审批时间”,经过“部门经理”审批通过后,报送总经理审批通过 请假审批内容为:审批人、审批时间、审批...
  • 详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结。 包括程序毕设程序源代码一份,数据库一份,完美运行。配置环境里面有...
  • 1、鼠标移入某个节点可删除当前节点 2、点击添加弹出节点选项视图, 3.点击选项视图的确定按钮可增加一个节点 4.点击选项视图的取消按钮可关闭选项视图 5.会返回最终的节点结果
  • github设置代码review审核功能

    千次阅读 2020-06-25 10:19:25
    github设置代码review审核功能概述方法 概述 将Github中项目的master分支设置为不能直接合入仓库,需要review后才能合入仓库 方法 步骤一: 步骤二: 步骤三: 然后保存就OK了 PS:将自己的github的项目授权其他...
  • 文章目录背景实现技术栈小程序端基本思路主要代码云函数思考主要参考 背景 开发微信小程序的同学如果涉及了社交类目,应该都会碰到由于缺少内容审核机制导致不过审的情况。微信小程序官方实际上提供了图片、文本、...
  • layui 审核按钮 及 代码实现

    千次阅读 2020-12-31 18:19:10
    首先明确自己的功能需求,我的后台管理主要是把审核修改状态,根据这个需求只需要些一个 修改状态的代码。 其余的就是layui实现功能了。 html 我的html 里面写的script 因为在js里写了自定义 <script type=...
  • 为了满足企业团队协作开发的灵活性要求,码云的 Pull Requests 多人审核功能上线了。项目负责人可以专门指定某几个项目成员作为代码的审核人员,当其他的开发人员提交 Pull Requests 时,需要所指定的人员的某一个...
  • 中添加class即可,实现此功能的js代码如下:标签break;case '2': //待修复addClass(step2.parentNode,'active');addClass(step3.parentNode,'active');break;case '3'://已关闭addClass(step2.parentNode,'active');...
  • 如果你的团队采用了 Gitee 推荐的“Fork + Pull”协作模式,我们同时推荐通过Pull Request这个功能来进行团队中的代码审查,有如下步骤:1、仓库管理员 设置代码审查。设置指定人员为某仓库默认的代码审核/测试人员...
  • fisheye界面按钮功能详细说明以及代码评审详述,Crucible+Fisheye+JIRA
  • 今天小编给大家带来的是用代码一键实现银行卡识别与绑定功能。 银行卡识别的应用场景   介绍开发步骤前,我们先来谈谈银行卡识别的具体应用场景,银行APP、移动支付、缴费类APP、电商类APP或者其它带支付功能的...
  • 策划文档审核器+代码审核器.只有部分功能。有的功能还没开发完成。比1.0版本增加一些功能
  • gerrit用户代码审核提交流程

    千次阅读 2021-06-24 16:22:02
    gerrit代码审核提交流程简介注册gerrit用户...本文主要记录一个gerrit的用户如何拉取代码,并做修改提交,等待审核的一个过程。 如果你是一个刚接触gerrit的用户使用者,可以继续往下阅读。如果你已经是一名old bird可
  • 主要介绍了python用10行代码实现对黄色图片的检测功能,涉及Python基于图片库PIL对图片的检测技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 策划文档审核器+代码审核器.只有部分功能。有的功能还没开发完成
  • 如何基于GitLab做代码评审

    千次阅读 2020-12-22 15:27:40
    导引大家知道,Gitlab是知名的开源代码管理工具,除了云端代码托管服务外,也可以下载社区版本进行本地搭建。因此大部分研发团队都搭建Gitlab进行代码管理。但其实,gitlab也是支持代码评审流程的。如果我们研发团队...
  • 请假审核功能 C# asp

    2010-06-15 08:52:32
    面试写的简单的C#小程序 只写了请假审核,本部门审核本部人员请假,请假天数大于3天经本部审核后在经人力审核
  • git代码审核流程

    千次阅读 2017-04-07 11:31:19
    大体管理流程是,每个开发人员都有自己的仓库,并且开发功能时要在自己的仓库建立分支,功能开发完成,向主仓库的working 发起Pull Request,然后由相关人员审核代码,以下为具体审核流程 审核操作需要在origin指向...
  • 代码审查的必要性和最佳实践

    千次阅读 2021-05-20 15:17:56
    代码审查的流程 代码审查的争议 加班要累死了,完成项目都来不及,还做什么代码审查? 代码审查太费时间,改来改去无非是一些格式、注释、命名之类不痛不痒的问题。 团队的习惯和流程就是不做代码审查,大家都是...
  • 国内低代码平台功能对比

    千次阅读 2021-12-07 17:52:04
    代码开发平台一般用于功能有限的小型应用程序,如有特殊需要的请假流程,处理维修任务管理,开发大型套装软件中不包含的特定可选功能等,其功能以及与其他应用程序的集成都是比较有限的。 与无代码开发平台相反,...
  • Gerrit 代码审核(Code Review)

    千次阅读 2018-07-27 14:28:46
    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。在实践中,给大家推荐一款免费、开放源代码代码审查软件Gerrit。 1. Why Code ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,087
精华内容 32,034
关键字:

审核功能代码