利用位移运算,做出按地区展示功能。

来源:互联网 发布:世界历史地图软件 编辑:程序博客网 时间:2024/06/14 18:27

首先完成页面。编写多个地区的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")@ResponseBodypublic 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> 


0 0