当前位置: 首页 > news >正文

上海做网站高端产品设计工具

上海做网站高端,产品设计工具,移动端网站开发的书,手机网站设计一、商品上架功能 ElasticSearch实现商城系统中全文检索的流程。 1.商品ES模型 商品的映射关系 PUT product {mappings: {properties: {skuId: {type: long},spuId: {type: ke…一、商品上架功能 ElasticSearch实现商城系统中全文检索的流程。 1.商品ES模型 商品的映射关系 PUT product {mappings: {properties: {skuId: {type: long},spuId: {type: keyword},skuTitle: {type: text,analyzer: ik_smart},skuPrice: {type: keyword},skuImg: {type: keyword,index: false,doc_values: false},saleCount: {type: long},hasStock: {type: boolean},hotScore: {type: long},brandId: {type: long},catalogId: {type: long},brandName: {type: keyword,index: false,doc_values: false},brandImg: {type: keyword,index: false,doc_values: false},catalogName: {type: keyword,index: false,doc_values: false},attrs: {type: nested,properties: {attrId: {type: long},attrName: {type: keyword,index: false,doc_values: false},attrValue: {type: keyword}}}}} } 2.netsted数据类型 参考官网地址https://www.elastic.co/guide/en/elasticsearch/reference/7.4/nested.html 3.实现上架功能 3.1 创建ESModel 点击上架功能传递spuId到后台我们需要根据SpuID查询对应的信息然后封装到自定义的Model对象中然后将该对象传递给mall-search服务所以我们需要先定义这样一个Model对象 Data public class SkuESModel {private Long skuId;private Long spuId;private String subTitle;private BigDecimal skuPrice;private String skuImg;private Long saleCount;private Boolean hasStock;private Long hotScore;private Long brandId;private Long catalogId;private String brandName;private String brandImg;private String catalogName;private ListAttrs attrs;Datapublic static class Attrs{private Long attrId;private String attrName;private String attrValue;}}3.2 上架逻辑实现 controller层 /*** spu信息**/ RestController RequestMapping(product/spuinfo) public class SpuInfoController {Autowiredprivate SpuInfoService spuInfoService;/*** app/product/spuinfo/6/up* 商品的上架功能* 传递过来一个spuID* 我们就需要根据SPUID查询出需要存储在ElasticSearch中的数据* 然后把数据存储到ELasticSearch中并修改该SPU的状态为上架*/PostMapping(/{spuId}/up)public R spuUp(PathVariable(spuId) Long spuId){spuInfoService.up(spuId);return R.ok();} }核心service层方法实现 调用了一些同moudle下的其他实现类方法忽略 /*** 实现商品上架--》商品相关数据存储到ElasticSearch中* 1.根据SpuID查询出相关的信息* 封装到对应的对象中* 2.将封装的数据存储到ElasticSearch中--》调用mall-search的远程接口* 3.更新SpuID对应的状态--》上架** param spuId*/Overridepublic void up(Long spuId) {// 1.根据spuId查询相关的信息 封装到SkuESModel对象中ListSkuESModel skuEs new ArrayList();// 根据spuID找到对应的SKU信息ListSkuInfoEntity skus skuInfoService.getSkusBySpuId(spuId);// 对应的规格参数 根据spuId来查询规格参数信息ListSkuESModel.Attrs attrsModel getAttrsModel(spuId);// 需要根据所有的skuId获取对应的库存信息---》远程调用ListLong skuIds skus.stream().map(sku - {return sku.getSkuId();}).collect(Collectors.toList());MapLong, Boolean skusHasStockMap getSkusHasStock(skuIds);// 2.远程调用mall-search的服务将SukESModel中的数据存储到ES中ListSkuESModel skuESModels skus.stream().map(item - {SkuESModel model new SkuESModel();// 先实现属性的复制BeanUtils.copyProperties(item,model);model.setSubTitle(item.getSkuTitle());model.setSkuPrice(item.getPrice());// hasStock 是否有库存 --》 库存系统查询 一次远程调用获取所有的skuId对应的库存信息if(skusHasStockMap null){model.setHasStock(true);}else{model.setHasStock(skusHasStockMap.get(item.getSkuId()));}// hotScore 热度分 -- 默认给0即可model.setHotScore(0l);// 品牌和类型的名称BrandEntity brand brandService.getById(item.getBrandId());CategoryEntity category categoryService.getById(item.getCatalogId());model.setBrandName(brand.getName());model.setBrandImg(brand.getLogo());model.setCatalogName(category.getName());// 需要存储的规格数据model.setAttrs(attrsModel);return model;}).collect(Collectors.toList());// 将SkuESModel中的数据存储到ES中R r searchFeginService.productStatusUp(skuESModels);// 3.更新SPUID对应的状态// 根据对应的状态更新商品的状态log.info(-----ES操作完成{} ,r.getCode());System.out.println(--------------r.getCode());if(r.getCode() 0){// 远程调用成功 更新商品的状态为 上架baseMapper.updateSpuStatusUp(spuId, ProductConstant.StatusEnum.SPU_UP.getCode());}else{// 远程调用失败}}Feign远程调用了其他微服务module 在当前需要调用远程微服务的模块中创建接口通过注解FeignClient(“mall-search”)找到对应被调用的微服务接着将被调用微服务的controller层的所需方法名形参路径等都全部复制过来就能完成远程调用 FeignClient(mall-search) public interface SearchFeginService {PostMapping(/search/save/product)public R productStatusUp(RequestBody ListSkuESModel skuESModels); }被调用的微服务模块Controller层 /**** 存储商城数据到ElasticSearch的服务*/ Slf4j RequestMapping(/search/save) RestController public class ElasticSearchSaveController {Autowiredprivate ElasticSearchSaveService service;/*** 存储商品上架信息到ElasticSearch服务的接口* return*/PostMapping(/product)public R productStatusUp(RequestBody ListSkuESModel skuESModels){Boolean b false;try {b service.productStatusUp(skuESModels);} catch (IOException e) {// e.printStackTrace();log.error(ElasticSearch商品上架错误{},e);return R.error(BizCodeEnume.PRODUCT_UP_EXCEPTION.getCode(), BizCodeEnume.PRODUCT_UP_EXCEPTION.getMsg());}if(b){return R.ok();}return R.error(BizCodeEnume.PRODUCT_UP_EXCEPTION.getCode(), BizCodeEnume.PRODUCT_UP_EXCEPTION.getMsg());}
http://www.hkea.cn/news/14462969/

相关文章:

  • 江门网站开发wordpress 分类调用
  • 南京哪家公司做网站farfetch 购物网站
  • 无锡网站的优化上海定制网站建设公司哪家好
  • 企业网站建设多少家seo求职信息
  • 网站建设宁波深圳建筑网站
  • 怎么做科技小制作视频网站扬中潘杰
  • 网站建设企业电话网站备案 湖北
  • 网站做城市地图推广任务平台
  • 金华市住房和城乡建设局网站深圳vi设计企业
  • 怎么在网站上做图片轮播手机模板网站开发
  • 网站的空间是什么意思网站备案证书安装
  • 织梦系统怎么做单页网站大企业服务品牌建设
  • 外贸营销型网站建设平台西安网站制作多少钱
  • 澧县网站建设wordpress 配置安装
  • 东莞网站建设教程cms网站开发网站模板
  • 网站推广资讯建设棋牌网站流程
  • 网站架设建设苏州集团网站建设
  • iis怎么做IP网站wordpress去掉尾巴
  • 个人做网站的注意事项网站建设费用表格
  • 做网站最小的字体是多少像素如何做购物网站的后台
  • 网站开发工具.晴天娃娃网易企业邮箱怎么发送文件
  • 甘肃省工程建设信息官方网站比较专业的app开发公司
  • 上海网站运营腾讯做网站上传
  • 门户网站营销特点织梦网站安装视频教程
  • 申办网站流程网站建设外出考察信息
  • 推荐做木工的视频网站面包屑 wordpress
  • 制作ppt的网站免费建站的网站99
  • 求个网站你们知道的企业网站的宣传功能体现在().
  • 做企业网站设泛微e8做网站门户
  • 建站公司咨询网站空间租