• 后台修改,订单锁定


    在后台修改订单的时候为了防止两个以上的工作人员同时修改订单,需要对订单进行锁定。

    锁定的具体方法如下:

    View Code
    1 public Order getLockOrder(String orderid, String employee){
    2 em.createQuery("update Order o set o.employee=?1 where o.orderid=?2 and o.employee is null")
    3 .setParameter(1, employee).setParameter(2, orderid).executeUpdate();
    4 em.flush();//让数据库马上提交
    5 return this.find(orderid);
    6 }



     

     在订单表(Order)中,有一个Employee属性,我们只需要更新一下这个属性,就可以锁定订单,如果该属性不为null,则说明已经有人锁定了这个订单,我们不能更新该属性,只能等待该订单解锁以后再去更新。

     

    每当工作人员试图打开订单时都会进行如下操作:

     

    View Code
     1 /**
    2 * 订单信息查看
    3 */
    4 @Controller("/control/order/view")
    5 public class OrderViewAction extends Action {
    6 @Resource OrderService orderService;
    7
    8 @Override @Permission(model="order",privilegeValue="view")
    9 public ActionForward execute(ActionMapping mapping, ActionForm form,
    10 HttpServletRequest request, HttpServletResponse response)
    11 throws Exception {
    12 OrderForm formbean = (OrderForm) form;
    13 String username = WebUtil.getEmployee(request).getUsername();
    14 Order order = orderService.getLockOrder(formbean.getOrderid(), username);
    15 if(!order.getEmployee().equals(username)){
    16 request.setAttribute("message", "该订单已被"+ order.getEmployee() + "锁定");
    17 request.setAttribute("urladdress", SiteUrl.readUrl("control.order.list"));
    18 return mapping.findForward("message");
    19 }
    20 request.setAttribute("order", order);
    21 return mapping.findForward("order");
    22 }
    23
    24 }



     

    if语句判断如果Order的Employee和username相同的话则可以继续,否则显示订单已经被锁定。

     

    订单解锁的方法

    View Code
    1 public void unLock(String orderid){
    2 em.createQuery("update Order o set o.employee=?1 where o.orderid=?2")
    3 .setParameter(1, null).setParameter(2, orderid).executeUpdate();
    4 }

     只需要将对应的order的employee设置为null就行了。



  • 相关阅读:
    WebConfig配置文件详解
    python标准库介绍——32 Queue 模块详解
    python标准库介绍——31 threading 模块详解
    python标准库介绍——30 code 模块详解
    python标准库介绍——29 zlib 模块详解
    python标准库介绍——28 sha 模块详解
    python标准库介绍——28 md5 模块详解
    python标准库介绍——27 random 模块详解
    python标准库介绍——26 getopt 模块详解
    python标准库介绍——25 errno 模块详解
  • 原文地址:https://www.cnblogs.com/jerryxing/p/2436633.html
Copyright © 2020-2023  润新知