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

            此功能还是基于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的,让胡某某插不上话,呵呵!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值