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

昌平区网站建设怎么使自己做的网站有音乐

昌平区网站建设,怎么使自己做的网站有音乐,网站开发费摊销多少年,wordpress 只有内页能打开人生在世如身处荆棘之中#xff0c;心不动#xff0c;人不妄动#xff0c;不动则不伤#xff1b;如心动则人妄动#xff0c;伤其身痛其骨#xff0c;于是体会到世间诸般痛苦。 1、购物车需求 1#xff09;、需求描述#xff1a; - 用户可以在登录状态下将商品添加到购… 人生在世如身处荆棘之中心不动人不妄动不动则不伤如心动则人妄动伤其身痛其骨于是体会到世间诸般痛苦。 1、购物车需求 1、需求描述 - 用户可以在登录状态下将商品添加到购物车【用户购物车/在线购物车】 - 放入数据库 - mongodb - 放入 redis采用 登录以后会将临时购物车的数据全部合并过来并清空临时购物车 - 用户可以在未登录状态下将商品添加到购物车【游客购物车/离线购物车/临时购物车】 - 放入 localstorage客户端存储后台不存 - cookie - WebSQL - 放入 redis采用 浏览器即使关闭下次进入临时购物车数据都在 - 用户可以使用购物车一起结算下单 - 给购物车添加商品 - 用户可以查询自己的购物车 - 用户可以在购物车中修改购买商品的数量。 - 用户可以在购物车中删除商品。 - 选中不选中商品 - 在购物车中展示商品优惠信息 - 提示购物车商品价格变化 2、数据结构  因此每一个购物项信息都是一个对象基本字段包括  另外购物车中不止一条数据因此最终会是对象的数组。即  Redis 有 5 种不同数据结构这里选择哪一种比较合适呢 - 首先不同用户应该有独立的购物车因此购物车应该以用户的作为 key 来存储Value 是 用户的所有购物车信息。这样看来基本的k-v结构就可以了。 - 但是我们对购物车中的商品进行增、删、改操作基本都需要根据商品 id 进行判断 为了方便后期处理我们的购物车也应该是k-v结构key 是商品 idvalue 才是这个商品的 购物车信息。 综上所述我们的购物车结构是一个双层 MapMastring,mapstring,string - 第一层 MapKey 是用户 id - 第二层 MapKey 是购物车中商品 id值是购物项数据 3、流程  参照京东 user-key 是随机生成的 id不管有没有登录都会有这个 cookie 信息。  两个功能新增商品到购物车、查询购物车。 新增商品判断是否登录 - 是则添加商品到后台 Redis 中把 user 的唯一标识符作为 key。 - 否则添加商品到后台 redis 中使用随机生成的 user-key 作为 key。 查询购物车列表判断是否登录  - 否直接根据 user-key 查询 redis 中数据并展示 - 是已登录则需要先根据 user-key 查询 redis 是否有数据。 - 有需要提交到后台添加到 redis合并数据而后查询。 - 否直接去后台查询 redis而后返回。 2、临时购物车  /*** 获取到我们要操作的购物车* return*/private BoundHashOperationsString, Object, Object getCartOps() {UserInfoTo userInfoTo CartInterceptor.threadLocal.get();//1.String cartKey ;if (userInfoTo.getUserId() ! null) {cartKey CART_PREFIX userInfoTo.getUserId();} else {cartKey CART_PREFIX userInfoTo.getUserKey();}BoundHashOperationsString, Object, Object operations redisTemplate.boundHashOps(cartKey);return operations;} 3、登录购物车  Overridepublic CartItem addToCart(Long skuId, Integer num) {BoundHashOperationsString, Object, Object cartOps getCartOps();String res (String) cartOps.get(skuId.toString());if(StringUtils.isEmpty(res)){CartItem cartItem new CartItem();// 1.运程查询当前要添加的商品信息CompletableFutureVoid getSkuInfoTask CompletableFuture.runAsync(() - {//2.商品添加到购物车(新商品)R skuInfo productFeignService.getSkuInfo(skuId);SkuInfoVo data skuInfo.getData(skuInfo, new TypeReferenceSkuInfoVo() {});cartItem.setCheck(true);cartItem.setCount(1);cartItem.setImage(data.getSkuDefaultImg());cartItem.setTitle(data.getSkuTitle());cartItem.setPrice(data.getPrice());cartItem.setSkuId(data.getSkuId());},executor);CompletableFutureVoid getSkuSaleAttr CompletableFuture.runAsync(() - {//运程查询sku的组合信息ListString values productFeignService.getSkuSaleAttrValues(skuId);cartItem.setSkuAttr(values);}, executor);CompletableFutureVoid allOf CompletableFuture.allOf(getSkuInfoTask, getSkuSaleAttr);try {allOf.get();} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}String s JSON.toJSONString(cartItem);cartOps.put(skuId.toString(),s);return cartItem;}else{//购物车有这个商品CartItem cartItem JSON.parseObject(res, CartItem.class);cartItem.setCount(cartItem.getCount()num);cartOps.put(skuId.toString(),JSON.toJSONString(cartItem));return cartItem;}}Overridepublic CartItem getCartItem(Long skuId) {BoundHashOperationsString, Object, Object cartOps getCartOps();String str (String) cartOps.get(skuId.toString());CartItem cartItem JSON.parseObject(str, CartItem.class);return cartItem;}Overridepublic Cart getCart() {UserInfoTo userInfoTo CartInterceptor.threadLocal.get();Cart cart new Cart();if(userInfoTo.getUserId()!null){//登录String cartKey CART_PREFIXuserInfoTo.getUserId();//如果临时购物车的数据还没有合并【合并购物车】String tempCartKey CART_PREFIX userInfoTo.getUserKey();ListCartItem tempCartItems getCartItems(tempCartKey);if(tempCartItems!null){//合并for (CartItem item : tempCartItems) {addToCart(item.getSkuId(),item.getCount());}}//3.获取登录后的数据ListCartItem cartItems getCartItems(cartKey);cart.setItems(cartItems);//清除临时购物车数据clearCart(tempCartKey);}else {//没登陆String cartKey CART_PREFIXuserInfoTo.getUserKey();//获取临时购物车的所有购物项ListCartItem cartItems getCartItems(cartKey);cart.setItems(cartItems);}return cart;} Overridepublic void checkItem(Long skuId, Integer check) {BoundHashOperationsString, Object, Object cartOps getCartOps();CartItem cartItem getCartItem(skuId);cartItem.setCheck(check1?true:false);String s JSON.toJSONString(cartItem);cartOps.put(skuId.toString(),s);}Overridepublic void changeItemCount(Long skuId, Integer num) {BoundHashOperationsString, Object, Object cartOps getCartOps();CartItem cartItem getCartItem(skuId);cartItem.setCount(num);String s JSON.toJSONString(cartItem);cartOps.put(skuId.toString(),s);}Overridepublic void deleteItem(Long skuId) {BoundHashOperationsString, Object, Object cartOps getCartOps();cartOps.delete(skuId.toString());} 人生在世如身处荆棘之中心不动人不妄动不动则不伤如心动则人妄动伤其身痛其骨于是体会到世间诸般痛苦。
http://www.dnsts.com.cn/news/253879.html

相关文章:

  • 网站推广怎么弄开发网站现实网络传输失败
  • 网站建设需求有哪些建筑行业资讯网站
  • 北京旅游网站排名saas 做网站
  • 专业网站设计制作百度帐号申请注册
  • 上海的加盟网站建设滁州注册公司流程和费用
  • 网站建设访问人群wordpress 关于我们页面
  • 网站名称如何设置免费建站工具有哪些
  • 淘宝客网站做的好的万江区网站建设公司
  • 外贸网站建设模板下载余姚专业网站建设公司
  • 网站建设推广培训网站项目宣传片
  • 网站开发可以当程序员怎么开网站平台
  • 商城网站 搭建北京 网站 公司
  • 中国网站建设公司百强深圳制作网站建设的企业
  • 长春火车站在哪网站开发培训好学吗
  • 网站工具查询pc官网 和手机网站
  • 网站快速建站seo推广网站有哪
  • 企业品牌网站建设定制开发wordpress数据库链接地址
  • 中山网站建设招聘本地的上海网站建设公
  • 哈尔滨企业建站系统网站开发的流程是怎样的
  • 烟台建设科技网站页面设置
  • 网站关键词之间用什么符号隔开一起做网店吧
  • 做网站是学什么专业wordpress 菜单间隔
  • 齐河县城乡建设局官方网站使用云主机做网站教程
  • 优秀企业展示网站聚名网备案
  • 安徽建站网站自适应网站开发工具
  • 卖水果做哪个网站好行业网站渠道选择和内容运营
  • 做网站备案需要多长时间开启wordpress mu
  • 建设网站需要什么基础学院宣传网站制作
  • iis发布网站的教程live wordpress主题
  • 免费申请二级域名网站优化设计方案