关于批量选择新增成员到群组列表的实现方法。

原创 2015年11月19日 15:26:36

            此功能还是基于myeclipse+tomcat+oracle来实现的,框架还是:springmvc+mybatis持久数据。

如下,我会在贴代码的同时,作一些简单的说明(不贴代码的程序员都是耍流氓偷笑):

(1)Controller:

/**
     * 新增成员
     * @param request
     * @return
     */
    @RequestMapping("/addGroupPeer")
    @ResponseBody
    public Object addGroupPeer(HttpServletRequest request){
        Map<String, String> param = super.getParamValues(request);
        param.put("gid",request.getParameter("gid"));
        List<String> errorList = groupService.addGroupPeer(param);
        return errorList;
    }

备注:errorList是新增时的错误信息回调到前台json数据,展示给用户,下面先把前台ajax的部分贴出来:

(2)jsp

$.ajax({
                       type: "POST",
                       url: $("#formId").attr("action"),
                       data: {gid:gid,uids:uids,admins:admins},
                       dataType: "JSON",
                       error: function(){alert("服务器出错!");},
                       success: function(data){
                               if(data == ""){
                                parent.showTip('保存成功!');
                                parent.closeDialogPeer(currentPage);
                               }else{
                                   parent.showTipPeer(data+',保存失败!');
                               }
                       }
                });

备注:data就是后台errorList传过来的json数据,直接以弹框的样式展示出来,此处弹框用到的是:artdialog 6,有兴趣可以研究下。

(3)serviceImpl

/**
     * 新增成员
     */
    @Transactional("txManager_1")
    @Override
    public List<String> addGroupPeer(Map<String, String> param) {
        List<String> errorList = new ArrayList<String>();
        
        String gid = param.get("gid")==null? "": param.get("gid");
        String uids = param.get("uids")==null? "": param.get("uids");
        String admins = param.get("admins")==null? "": param.get("admins");
        String[] uidsArray = uids.split(",");
        List<Map<String, String>> paramList = new ArrayList<Map<String, String>>();
        int len = uidsArray.length;
        StringBuffer errorInfo = new StringBuffer();// 错误信息
        Map<String, String> tempPeer = null;// 数据临时存放成员Map
                for(int i=0;i<len;i++ ){
                    tempPeer = new HashMap<String,String>();
                    tempPeer.put("gid", gid);
                    tempPeer.put("userid", uidsArray[i]);
                    if (admins.contains(uidsArray[i])) {
                        tempPeer.put("right", "1");
                    }else{
                        tempPeer.put("right", "0");
                    }
                    paramList.add(tempPeer);// 添加记录到List
                }
                
                if (paramList.size() > 0) {
                    // 查询是否已存在成员
                    List<Map<String, String>> existList = groupMapper.selectExitUserid(paramList);
                    for (Map<String, String> m : existList) {
                        for (Iterator ite = paramList.iterator(); ite.hasNext();) {
                            Map<String, String> temp = (Map<String, String>) ite.next();
                            if (m.get("USERID") != null && m.get("USERID").equals(temp.get("userid"))) {
                                errorInfo.append("成员").append(temp.get("userid")).append("已存在");
                                errorList.add(errorInfo.toString());
                                errorInfo.setLength(0);// 清空错误信息
                                ite.remove();
                            }
                        }
                    }
                    if (errorList.size()==0) {
                        //新增成员
                        groupMapper.addGroupPeer(paramList);
                    }
                }
        return errorList;
    }

备注:此处用到了事务控制,当errorList为null时,直接跳出addGroupPeer方法,将错误的errorList信息反馈给用户。

(4)mapper.xml

<!-- 查询已存在的成员 -->
    <select id="selectExitUserid" parameterType="List" resultType="Map">
        select userid from tp_im_group_peer where userid in
        <foreach collection="list" item="item" index="idx" open="(" separator="," close=")">
            #{item.userid,jdbcType=VARCHAR}
        </foreach>
        and    gid in
        <foreach collection="list" item="item" index="idx" open="(" separator="," close=")">
            #{item.gid,jdbcType=VARCHAR}
        </foreach>
    </select>

备注:此处用到了foreach标签,之前博客有介绍,此处不再阐述了,需要注意的几点,list是service里面查询出来的existList集合,遍历时where后面的条件

一定要带上item(item.userid),这个写法要感谢胡某某,让我没掉进坑。

好了,这篇文章就到这了,下次要去写篇Go的,让胡某某插不上话,呵呵!




IM 开源项目 群组服务 缓存设计实现之 成员属性

时序: 接上文,不啰嗦了。 【定义】:   /* CLASS_BEGIN ***************************************************** ...

discuz x 个人空间及群组地址实现二级域名的方法(APACHE独立主机)

按以下操作 1. 在域名控制面板添加A解析,增加一个主机头为 * 的纪录解析到你的论坛所在服务器,即做下域名泛解析。 2. 修改服务器上的apache/conf/httpd.conf 或 apach...

iOS-OC-融云会话列表设置群组昵称和头像相关

我在我的一篇博文里面也详细介绍了自定义融云的会话列表,没看过的小伙伴可以点击进去看看;-  [置顶] iOS-OC-自定义融云会话列表(自定义cell)这里面我主要介绍在我们自定义的会话列表里面如何设...

ios环信-由自定义列表获取群组聊天窗体

第 1 步:集成环信SDK方式一: 推荐使用Cocoapods集成环信SDK。Cocoapods提供了一个简单的依赖管理系统,避免手动导入产生的错误(首先需要确认已经安装了Cocoapods)。 ...

维护通讯录的方法及群组通讯录 管理平台

本发明公开了一种维护通讯录的方法及平台,属于通讯录技术领域。方法包括 :建立一个或多个群组通讯录,并为所建立的群组通讯录分配群组 ID ;当接收到用户端发送的下载更新用户端通讯录的请求时,根据所建立的...

一种即时通信中群组邮件通信的方法、装置及系统

即时通信(Instant Messaging,IM)系统,是一种能够即时发送和接收互联 网消息的系统。通过即时通信系统用户可以向其他用户发送文本消息、传送文 件、或者与其他用户进行音频对话、视频对话等...

通过Tooz在python中实现分布式群组和锁管理

基于过去的一年中Openstack越来越多的使用Tooz库,所以我觉得现在是很好的时机去写一点Tooz相关的文章。 Tooz的历史背景 在过去的一年多时间里,和我在e'Novance的Yassin...

C#实现环信用户和群组操作

最近项目中使用了环信,根据官方文档,自己封装了一个类,可以实现 用户注册 群组创建 发送文本消息 using System.Collections.Generic; using Sys...
  • 5653325
  • 5653325
  • 2017年04月29日 17:22
  • 1153
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于批量选择新增成员到群组列表的实现方法。
举报原因:
原因补充:

(最多只允许输入30个字)