首先完成页面。编写多个地区的checkbox 勾选后形成一个数组传给controller
<div id="editArea" class="modal-window"> <form id="form2" action="/admin/product/editArea.do" enctype="multipart/form-data" method="post" class="form-horizontal"> <input type="hidden" name="id"> <div class="form-group"> <label class="col-md-push-1 col-md-2">全选</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" id="area10" > </div> <label class="col-md-push-1 col-md-2">华北地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area1" value="1"> </div> <label class="col-md-push-1 col-md-2">东北地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area2" value="2"> </div> </div> <div class="form-group"> <label class="col-md-push-1 col-md-2">华东地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area3" value="3"> </div> <label class="col-md-push-1 col-md-2">华中地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area4" value="4"> </div> <label class="col-md-push-1 col-md-2">西南地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area5" value="5"> </div> </div> <div class="form-group"> <label class="col-md-push-1 col-md-2">西北地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area6" value="6"> </div> <label class="col-md-push-1 col-md-2">台湾地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area7" value="7"> </div> <label class="col-md-push-1 col-md-2">港澳地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area8" value="8"> </div> </div> <div class="form-group"> <label class="col-md-push-1 col-md-2">华南地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area9" value="9"> </div> <label class="col-md-push-1 col-md-2">其他地区</label> <div class="col-md-push-1 col-md-2"> <input type="checkbox" class="areas" name="areas" id="area0" value="0"> </div> </div> <br> <div class="form-group"> <div class="col-md-push-4 col-md-3"> <button type="submit" class="btn btn-success btn-block">提交</button> </div> </div> </form> </div>
编写controller,进行位移运算
@RequestMapping("editArea.do") @ResponseBody public JsonResult editAreaAction(Long id,Integer areas[]) { Long count=0L; if(areas!=null){ for (Integer a : areas) { count|=1<<a; } } Product product = new Product(id); product.setArea(count); service.save(product, "area"); return json().setSuccess(true); }
最后进行查询
通过阿里巴巴提供的接口,获取地区码
public static Integer areaCode() { Integer code = (Integer) getSession().getAttribute("AREACODE"); if (code == null) { String url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + getRequestIp(); try { String result = ClientUtil.sendGet(url); AreaResults area = JSONObject.parseObject(result, AreaResults.class); if (area != null) if (area.getCode() == 0) if ("CN".equals(area.getData().getCountry_id()) || "86".equals(area.getData().getCountry_id())) { Long areaId = area.getData().getArea_id(); if (areaId != null) code = Integer.parseInt(areaId.toString().substring(0, 1)); getSession().setAttribute("AREACODE", code); } else { code = 0; getSession().setAttribute("AREACODE", code); } } catch (Exception e) { return 3; } } return code; }
最后根据获取的地区码,展示属于当前地区的数据
<sql-query name="selectSortProduct" resultset-ref="product"> <![CDATA[ SELECT * FROM lc_products t1 LEFT JOIN lcv2_brand t2 ON t1.brand_id = t2.id WHERE (t1.area&(1<<?))>0 ORDER BY sort DESC LIMIT 0,12 ]]> </sql-query>