商品架构:商品查询API架构文档

后台-系统设置-扩展变量-手机广告位-内容正文顶部

商品查询架构文档

1包规划

  主包名为:com.enation.app.cms,下面的包皆以此为父包:

2商品查询API(商家查询和平台查询)

2.1总体类图

  GoodsQueryParam是查询所用的参数模型类,shop_cat_id是店铺分类,seller_id是卖家id,具体说明如下:

2.2查询的时序图

  在查询时通过UserContext和IStoreMemberManager鉴定相应权限,这两个类在这些包下:

  GoodsManager的查询功能可参考微服务中的此类:

  com.enation.javashop.controller.backend.GoodsBackController中的查询方法:

  @Override

  publicPagelist(GoodsQueryParamgoodsQueryParam){

  StringBuffersqlBuffer=newStringBuffer();

  sqlBuffer.append(

  "selectg.goods_id,g.goods_name,g.sn,g.thumbnail,g.seller_name,g.enable_quantity,g.quantity,g.price,g.create_time,g.market_enable,b.`name`brand_name,c.`name`category_name"

  +"fromes_goodsgleftjoines_goods_categorycong.category_id=c.category_idleftjoines_brandbong.brand_id=b.brand_id"

  +"whereg.disabled=0");

  if(goodsQueryParam.getMarket_enable()==null||(goodsQueryParam.getMarket_enable().intValue()!=1

  &&goodsQueryParam.getMarket_enable().intValue()!=2)){

  sqlBuffer.append("andg.market_enable!=2");

  }else{

  sqlBuffer.append("andg.market_enable="+goodsQueryParam.getMarket_enable());

  }

  if(goodsQueryParam.getStype().intValue()==0){

  if(!StringUtil.isEmpty(goodsQueryParam.getKeyword())){

  sqlBuffer.append("and(g.goods_namelike'%"+goodsQueryParam.getKeyword()+"%'org.snlike'%"

  +goodsQueryParam.getKeyword()+"%')");

  }

  }else{

  //高级搜索

  if(goodsQueryParam.getCategory_id()!=null){

  Categorycategory=this.daoSupport.queryForObject(

  "select*fromes_goods_categorywherecategory_id=?",Category.class,

  goodsQueryParam.getCategory_id());

  if(category!=null){

  Stringcat_path=category.getCategory_path();

  if(cat_path!=null){

  sqlBuffer.append("andg.category_idin(");

  sqlBuffer.append("selectc.category_idfromes_goods_category");

  sqlBuffer.append("cwherec.category_pathlike'"+cat_path+"%')");

  }

  }

  }

  if(!StringUtil.isEmpty(goodsQueryParam.getGoods_name())){

  sqlBuffer.append("andg.goods_namelike'%"+goodsQueryParam.getGoods_name()+"%'");

  }

  if(!StringUtil.isEmpty(goodsQueryParam.getSeller_name())){

  sqlBuffer.append("andg.seller_namelike'%"+goodsQueryParam.getSeller_name()+"%'");

  }

  if(!StringUtil.isEmpty(goodsQueryParam.getGoods_sn())){

  sqlBuffer.append("andg.snlike'%"+goodsQueryParam.getGoods_sn()+"%'");

  }

  }

  sqlBuffer.append("orderbyg.goods_iddesc");

  Pagepage=this.daoSupport.queryForPage(sqlBuffer.toString(),goodsQueryParam.getPage_no(),

  goodsQueryParam.getPage_size());

  returnpage;

  }

  但是要加入卖家id不为空,则进行相应的查询的条件

  而且不能有字串拼接,必须要用?号传参,否则有sql注入风险

  这个技术点可以参考微服务版中订单查询服务的:

  com.enation.javashop.order.manager.impl.OrderDBQueryManager#querySeller

2.3api路径

  get:/shop/seller/goods/search.do

  get:/shop/admin/goods/search.do

  上述就是关于商品架构方面的内容了,想了解更多详情,可以持续关注易族智汇javashop,有任何问题,欢迎一起探讨。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

后台-系统设置-扩展变量-手机广告位-内容正文底部
留言与评论(共有 0 条评论)
   
验证码: