起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7986|回复: 13

[结贴] 如何在后台组织一个数组,来监控前台各个用户操作?

[复制链接]

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
发表于 2014-12-17 08:52:57 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
本帖最后由 爱我刺鳌 于 2014-12-17 08:58 编辑

为了防止多用户同时操作发生冲突,我想要在用户查询某个公司数据时候,对该公司加锁。这个能在后台通过维护一个数组来实现吗?
如果能,求给些基本代码,数组要有被加锁公司和加锁人两列。
前台通过调用function,后台感知,增加和删除相应记录。
前台调用function,获取到后台数组中有没有对应的记录,返回加锁人。





另外还有一个问题就是,如果用户直接把浏览器关了或者断网了,服务器该如获知。
获知到之后要对被它锁定的公司解锁,应如何实现?



我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。

99

主题

546

帖子

629

积分

高级会员

Rank: 4

积分
629
QQ
发表于 2014-12-17 09:41:52 | 显示全部楼层
你说的监控 就是操作日志吧   用户对前台操作了以后   另外一张表存操作的记录

这个我前几天刚做了   你看bizData1 里面有事件    新增后    删除前  和保存后

我做的就在这3个地方加入日志     你再建立一张表   在这三个事件自己写  JS  触发ACTION

我是在ACTION里面写的  插入数据  JS 上 可以获取前台数据ID的  传ACTION 就可以了
回复 支持 反对

使用道具 举报

99

主题

546

帖子

629

积分

高级会员

Rank: 4

积分
629
QQ
发表于 2014-12-17 09:43:02 | 显示全部楼层
可以参考下我代码  

//alert("新增日志");
      if("new"==dongzuo){
      dongzuo="";
      var inputData = justep.xbl("bizData1").getCurrentID();
            var actionParam = new justep.Request.ActionParam();
            //alert(inputData+"删除数据了");
      actionParam.setString("orderID",inputData);
      justep.Request.sendBizRequest2({
          action:"addCzrzAction",
          dataType: "json",
          parameters :actionParam,
          callback: function(result) {
          if(result.state){
          }else{
          }
         }
         });
         }       

这个JS的
回复 支持 反对

使用道具 举报

99

主题

546

帖子

629

积分

高级会员

Rank: 4

积分
629
QQ
发表于 2014-12-17 09:44:34 | 显示全部楼层
java 部分

//新增日志
        public static void addCzrz(String orderID) {
                String dataModel = "/YT_CXDA/YT_CXDAXT/data";
                String ksql2 = "select a.sName  from SA_OPPerson a where a = :currentPersonID()";
                //System.out.println("语句"+ksql+"语句");
                Table table2 = KSQL.select(ksql2, null, dataModel, null);
                Iterator<Row> rows2 = table2.iterator();
                Row rs2 = null;
                if (rows2.hasNext()) {
                        rs2 = rows2.next();
                }
                String loginname = (String) rs2.getValue("sName");

                String ksql3 = "select a.fFL as fFL, a.fMXL as fMXL, a.fQY as fQY, a.fKHJLXM as fKHJLXM, a.fYGH as fYGH, a.fXSDD as fXSDD,a.fCNRQ as fCNRQ,a.fSJRQ as fSJRQ, a.fBZ as fBZ from YT_CXDA_SJWH a where a ='"
                                + orderID + "'";
                Table table = KSQL.select(ksql3, null, dataModel, null);
                ;
               
                Iterator<Row> rows = table.iterator();
                Row row = null;
                if (rows.hasNext()) {
                        row = rows.next();
                        //String id = (String) row.getValue("YT_CXDA_SJWH");
                        // String a=BizUtils.createNextSequenceString("CDRS"+date,"0000");   
                        // row.setValue("fDX",a); //给列赋值

                        String fFL = (String) row.getValue("fFL");
                        String fMXL = (String) row.getValue("fMXL");
                        String fQY = (String) row.getValue("fQY");
                        String fKHJLXM = (String) row.getValue("fKHJLXM");
                        String fYGH = (String) row.getValue("fYGH");
                        String fXSDD = (String) row.getValue("fXSDD");
                        Date fCNRQ1 = (Date) row.getValue("fCNRQ");
                        System.out.println(fFL + "我进到新增日志了吗?");
                        Date fSJRQ1 = null;
                        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
                        String fSJRQ = "";
                        if (!"".equals((Date) row.getValue("fSJRQ")) && null != (Date) row.getValue("fSJRQ")) {
                                fSJRQ1 = (Date) row.getValue("fSJRQ");
                                fSJRQ = sdf2.format(fSJRQ1);
                        }

                        String fBZ = (String) row.getValue("fBZ");
                        Date now = new Date();
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

                        String nowdate = sdf.format(now);
                        String fCNRQ = sdf2.format(fCNRQ1);

                        KSQL.executeUpdate(
                                        "insert into YT_CXDA_CZRZ bb(bb,bb.version,bb.fZXCZ,bb.fZXCZR,bb.fRZFL,bb.fRZMXL,bb.fRZJLXM,bb.fRZQY,bb.fRZYGH,bb.fRZCNRQ,bb.fRZSJRQ,bb.fRZXSDD,bb.fZXCZRQ,bb.fRZBZ,bb.fRZDYXXID) values "
                                                        + "(:guid(),0,'新增数据','"
                                                        + loginname
                                                        + "','"
                                                        + fFL
                                                        + "','"
                                                        + fMXL
                                                        + "','"
                                                        + fKHJLXM
                                                        + "','"
                                                        + fQY
                                                        + "','"
                                                        + fYGH
                                                        + "','"
                                                        + fCNRQ
                                                        + "','"
                                                        + fSJRQ
                                                        + "','" + fXSDD + "','" + nowdate + "','" + fBZ + "','" + orderID + "')", null, dataModel, null);

                }
        }
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-12-17 09:45:53 | 显示全部楼层
ooopopdj 发表于 2014-12-17 09:41
你说的监控 就是操作日志吧   用户对前台操作了以后   另外一张表存操作的记录

这个我前几天刚做了   你看 ...

谢谢,但不是操作日志,我就是想防止多个用户同时修改同一条记录,所以一个用户查询该记录,就锁定,其余用户不能查询。。
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-12-17 09:47:00 | 显示全部楼层
ooopopdj 发表于 2014-12-17 09:44
java 部分

//新增日志

不过这个操作日志似乎也挺好,学习了,嘿嘿。
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2014-12-17 10:37:55 | 显示全部楼层
概念中的version关系就是控制不能多人同时修改一条记录的
version在新增时,默认是0,每修改一下,自动加1
例如两个同时修改,取到的version都是0,第一个人修改后保存,数据库里面version变成1,第二个人修改保存时,系统发现数据库里面version是1,而这个人的version是0,说明记录已经被更新,提示记录已被更新,需要刷新数据
就是用这种方式控制的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-12-17 11:32:37 | 显示全部楼层
jishuang 发表于 2014-12-17 10:37
概念中的version关系就是控制不能多人同时修改一条记录的
version在新增时,默认是0,每修改一下,自动加1
...

那后台能维护数组吗?断开连接后台如何感知?
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2014-12-17 13:22:03 | 显示全部楼层
用version就可以,如果要自己实现,可以到网上查看标准的web应用怎么控制,x5中就怎么控制
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

212

主题

1033

帖子

1456

积分

金牌会员

Rank: 6Rank: 6

积分
1456
QQ
 楼主| 发表于 2014-12-17 13:58:30 | 显示全部楼层
jishuang 发表于 2014-12-17 13:22
用version就可以,如果要自己实现,可以到网上查看标准的web应用怎么控制,x5中就怎么控制 ...

......那断开连接的如何获知呢?
我真不相信起步论坛里有比我更帅的男人,信不信由你,反正我不信。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-16 04:31 , Processed in 0.092506 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表