后台-系统设置-扩展变量-手机广告位-内容正文顶部 |
商品查询架构文档
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,有任何问题,欢迎一起探讨。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。