02 2020 档案
摘要:把之前的默认的地址改为非默认的,选中的地址改为默认的地址。 service层 这里使用select和selectOne都可以。 这里我们使用select。然后返回一个list,这里我们使用for循环,以防万一数据库出现数据的紊乱。 修改默认的地址 controller 测试 maven instal
阅读全文
摘要:删除 先来看前端的代码 删除按钮的事件。把地址的id传进来。 后端代码 service层定义的方法 通过addressId和userId删除,初始化pojo类,会自动做sql的拼接。 controller接口 这个判断如果不加的话。数据库内也是删除不了任何的内容的。但是这个时候数据库是会被用户请求到
阅读全文
摘要:修改地址在前端只不过多了个addressId service层 service层实现 可以选择以一个对象的形式去更新,。updateByPrimaryKeySelective根据主键去更新。 也可以选择一个以Example的形式去更新 使用这个空的属性会覆盖数据库的内容。 control
阅读全文
摘要:编写新增收货地址的接口 先看下前端 前端保存按钮的事件 前面是对表单的元素做判断。 根据AddressId来判断是更新还是新增,新增和更新这两个接口为了避免耦合,在后端的我们是定义成两个接口。 后端新增的接口地址 更新多了个AddressId 后端代码 接口里面接受这个BO再传递到service,然
阅读全文
摘要:发起请求获取收货地址 渲染部分的代码 默认地址的选中 有一项的地址默认为1 click点击事件触发切换选中的地址 下面要是去实现这个路由对应的接口 service层 复制一个CarouselService 实现类再复制一下复制CarouselServiceImpl改名AddressServiceIm
阅读全文
摘要:结算页面让用户确认信息,选择收货地址 还需要开发的是整理的收货地址 生产环境上的效果 默认选中的地址 新增一个测试的地址 这就是新增的地址 用户初次进入到订单结算页面,默认选中的是默认地址 和地址相关的数据库 省市区,都是在js里面进行维护的 其实就是一个json的数组,包含了很多的内容。 创建co
阅读全文
摘要:结算,提交到订单页面 没有选中商品直接结算。 勾选商品以后就有价格了。 如果没有登陆 点击确定后会跳转到登陆页面 注意跳转的url 点击登陆 登陆后跳转到购物车的页面 用户登陆成功会判断 全选点击结算 点击结算跳到结算页面 goPay方法 判断用户是否登陆 支付页面的声明周期函数 最终的商品数据 结
阅读全文
摘要:购物车内商品的删除,考虑两种情况,一个是用户未登陆,一个是用户已登录。 如果未登陆直接在前端删除,如果用户已登录,那么就要拿着这条数据到后端的购物车里面删除。这样也是保证我们前后端数据的同步。 前端代码分析 删除的方法传入的是商品的规格id。购物车里面,商品是以规格作为单位的。 删除前端对象中的这个
阅读全文
摘要:结算前,选择要结算的商品,选择一件后,结算这里会显示出商品的数量 和合计的价格。 优惠过后的价格乘以数量。 当然用户也可以进行全选 前端代码分析 深度的watcher监听数据的变化。 变量specIds就是选中的商品的规则。也就是在我们的页面里面每一项都是以规格为单位。 随着我们的购物车对象做渲染
阅读全文
摘要:把sql复制到自定义的mapper里面 我们要返回的BO类型和之前写好的ShopcartBO基本是一样的,除了bugCounts这个属性没有。 把ShopcartBO对应复制到VO的包内改成ShopcartVO这个名字。 重命名 我们只需要把 buyCounts字段删除,然后把重写的toString
阅读全文
摘要:点击到购物车的页面 点击数字后,页面发生跳转到购物车页面。购物车的数据应该要在这展示的。 cookie中的数据拿出来在页面上做渲染是可以的吗?答案是不可以。这是因为我们的数据保存在前端,它只是一种临时的数据。购物车里面的数据,它不可能马上去结算去买单的。他有可能明天后天甚至过一个礼拜再打开。那么再打
阅读全文
摘要:前期我们是单体项目,所以采用cookie,等讲完redis相关的课程后,我们再把涉及到redis的地方整合到项目里面去。包括会话和现在所涉及到的购物车。在编写相应的代码之前,我们先来参考下京东。我们随便找一个商品把它加入到购物车。 打开购物车结算页面 F12浏览器,这里把cookie都clear掉
阅读全文
摘要:在商品详情页加入购物车 本课程使用的是cookie+redis的形式,用户未登陆用的是cookie,登陆后用的cookie+redis相互结合。 结束
阅读全文
摘要:service层 增加方法 方法和上面的方法基本一样 。只有这两个地方需要改一下。 controller层 maven install 测试 重启服务 前端页面测试 排序正常 结束
阅读全文
摘要:前端搜索的form表单 首页的子分类 通过的是分类id查询分类下的所有商品。和产品搜索的结果页面,其实是同一个页面。 也包含了排序 拼接三级分类 会打开一个新的页面。 通过app.getUrlParam获取上个页面传递的参数 这是通过关键字查询的方法 判断根据分类去查询的 后面的参数和查询的接口是一
阅读全文
摘要:实现自定义sql 在下面新增select标签 搜索结果需要一个对应的VO对象的 复制VO对象改个名字 价格是int类型,存的是分为单位的int类型的,转换成元 是前端来转换的。很多的电商系统都是这样以分为单位存储的。如果用元为单位,它会用到小数点。有时候计算的时候可能会有四舍五入的问题。在绝大数情况
阅读全文
摘要:输入关键字进行搜索 每个商品展示的信息。涉及到多表的关联查询。 商品图片表,主要用到图片的地址、通过is_main字段判断是不是主图。 每个商品至少有一个规则,可以有多个规格,没一个规格都对应有一个单独的价格。在我们搜索的页面里面,我们要展示最低的价格。 页面里面还有排序的功能。默认是根据文字进行排
阅读全文
摘要:
阅读全文
摘要:头像和用户名还没有展示,这里主要是数据库的问题。 把这个user_id复制出来。 复制到这里 打勾,保存 更新的是users表 刷新前端,头像和名称都出来了。 用户昵称脱敏。 后端准备了工具类 运行main方法 测试 maven install,然后重启服务器 刷新前端页面。 结束
阅读全文
摘要:使用这个插件来实现分页 准备好的文档 文档就是整合PageHelper的步骤 首先引入依赖 放到聚合工程的pom.xml内 配置yml文件 api这个服务下的application.yml 设置数据类型为MySql。 suppertMethodsArguments:是否支持分页参数的传参 使用分页
阅读全文
摘要:从传递进来的参数拿到具体的商品编号 传进来的levlel可能会为空。判断不能null也不为空 定义resultType 定义好属性,生成getter和setter 前面加上报名 然后这个方法,我们需要在ItemsMapperCustom这个接口去定义。 使用一个注解。@Param 和xml内参数的名
阅读全文
摘要:展示相应的评价内容。从列表可以看出来,评价涉及到了多表关联。评价表、用户的头条、用户的昵称虽然是脱敏的但是也要查询出来。然后再去做脱敏。 编写sql语句 评论表和用户表的关联 查询好评的 查询的时候 不用*,用到什么就去查询什么这样的一个原则。select * 一般是在做测试的时候才去会用,查询到所
阅读全文
摘要:实现好评度和不同等级的评价 评价是和商品相关的,所以在ItemService里面 定义VO 在pojo层 四种类型的评价 生成get和set 这里返回的类型改成我们新增加的这个VO对象 impl实现service 由于是查询,事务我们使用 supports就可以了。 这里面我应该就要进行三次查询。好
阅读全文
摘要:上篇的评价,使用的这个商品id 整个订单的流程全部走完了,在用户中心可以进行相应的评价 分为了两个部分,第一个部分是好评度,下面部分是所有的评价 最下面是分页。 用户的昵称做了脱敏,就是不展示用户的全称 差评的数量比较少。 评价表 用户id、商品id、商品规格id是外键。 评价登记包含了这三种 数据
阅读全文
摘要:编写Controller和前端对应起来。 前端商品的详情也爱你item.html 拿到Itemid做页面数据的渲染 这里发起 了一个get请求, 创建controller 复制IndexController改名叫做ItemsController 这里返回了四个对象 创建一个新的VO对象。复制Simp
阅读全文
摘要:编写后端代码,最先从service层开始编写。 我们要查询的表全部是和商品相关的,都是单表查询。这里我们使用通用的Mapper就可以了。 service层 拷贝一个改名ItemServiceImpl 实现的类改一下 先把service请求的四个方法都写好。 serviceImpl实现类 Ctrl+A
阅读全文
摘要:首页的分类、轮播图、下方根据一级分给,类别加载最新的6条记录 点击查看商品的详情 根据商品的id 商品的展示图片就是图片表 商品表 不同口味价格不同 这是商品的规格表 不同口味优惠力度也是不一样的 没有折扣促销价就不需要计算。有折扣才需要计算。 产品参数 数据库内的表 详情页面的请求,在一次请求内完
阅读全文
摘要:后端代码编写,从下往上书写, 然后实现service的方法 编写mapper 先定义接口中的方法。传一个Map类型的到自定义的sql文件里面。value是Object类型的,因为它的值可能是int也可能是String @Param作为参数所传进去的Map Mapper映射文件 把之前写好的sql直接
阅读全文
摘要:下面关于新商品一些商家的推荐。 下面这些每一个都是一个分类,滚动条向上滚动,下面的一个个分类数据都展示出来。判断页面的滚动,实现懒加载。 滚动条触底后,会把下一个要展示的商品分类懒加载。 前端的代码 scroll的滚动的监听, index就是我们的vue的对象。在页面的最上方定义的 首先获取当前的分
阅读全文
摘要:以ios为,顶部有刘海 底部有操作的虚拟键 这是原来的main.dart 为了让文字一个在顶部,一个在底部,所以设置Y轴上为SpaceBetween 运行效果。这是没有加任何适配的情况。 直接外层套SafeArea MediaQuery的方式 先获取到padding 设置顶部的padding和底部的
阅读全文
摘要:ios项目的启动屏的解决。 有需要的时候再看。
阅读全文
摘要:点击flutter的app。在打开的时候有持续1到3秒的白屏 白屏 白屏后才会显示首页 flutter应用在启动的时候,首先会启动flutter SDK,然后会将flutter的代码加载到内存里面。然后完成渲染。在这个过程中,它是没有内容可以显示的,所以就只能显示这样的一个白屏 添加欢迎页 开源的插
阅读全文
摘要:实现下拉刷新,下拉加载更多,打开页面loading的效果。 首先来移除顶部的padding 使用MediaQuery.removePadding 这样就去除了。 全局loading 加一个loading变量 数据加载完成之后,loading变为false 失败了也设置为false 默认加载有一个lo
阅读全文
摘要:文字需要设置成单行显示,这样才不会换行 设置文字显示的形式,和样式 运行测试看效果 实现图片下的描述信息 底部放一个方法 _infoText用来封装最下面的左右布局 希望最左边和最右边,中间是空白的 左边头像圆角,用PhysicalModel。裁切的行为clipBehavior 图片的直径要是裁切的
阅读全文
摘要:实现这样的卡片 上节课我们创建了 _TravelItem。一个TravelItem就代表了一个卡片。 卡片可以点击跳转到详情页面 所以最外层我们放一个手势的检测器 满足这种情况,我们才让他跳转到详情页 实现卡片的布局 带有圆角底部阴影的卡片 裁切效果 封装一个ItemImage生成上面的图片 底部是
阅读全文
摘要:瀑布流布局的组件。 看官方的使用说明 在Scoffold脚手架下直接用组件。 创建一个通用的方法来返回我们的类。 接收这么几个参数 名字修改为_TravelItem 这两个参数不需要 删除掉。 使用这个TabPage 运行测试 没有效果 double不能转换成int类型。 debug调试 勾选所有的
阅读全文
摘要:实现瀑布流的布局 定义请求数据的url和每页显示的数据量 定义两个变量。 这是一个构造方法:super这种方式是可以直接调用父类的构造方法, 等价于后面加个大括号的这种形式。会有个提示 这个方法体为空的 建议移除。构造方法前面的修饰符去掉 方法体移除后就成这样了。 如果我们的方法体不是空的话。比如里
阅读全文
摘要:实现tab,可以点击切换 首先来实现一个tab框架。首先创建travel_page 定义成员变量,用到TabView,所以需要先定义TabController。然后定义本页的数据TravelModel 默认为空数组 还有TravelTabModel 在initState内请求接口数据 这个this我
阅读全文
摘要:根据这些接口,实现dao层 旅拍类的接口 首先创建travel_tab的model 接口返回这样的字段 根据json用工具来生成 生成的名字需要改一下 Tab页接口 根据json生成代码 只保留需要的字段 改成叫做TravelItem 这里这个字段不需要,这里删除掉 删除 旅拍类别dao 创建 旅拍
阅读全文
摘要:这是最终要实现的效果 顶部的tab可以滑动 旅拍模块的接口细分 接口返回的字段 通过模型转换工具进行转换。 结束
阅读全文
摘要:现在只欠调用我们的plugin完成语音识别。以及跳转到搜索页面,把识别的结果带过去。完成一个语音搜索的功能 定义语音识别的结果的变量 判断识别的结果如果不为空那么就设置识别结果的变量。 彩蛋 页面跳转,并把识别的结果带过去,首先要关闭当前页面。 彩蛋:一定要关闭当前页面,才能进行跳转。不然你会看到无
阅读全文
摘要:如何实现了一个循环执行的动画呢? 调用reverse()方法,反向执行。 重写dispose的声明周期。controller调用dispose释放资源。 下面这里就可以用anmiation 右边删除按钮 使用绝对定位。点击按钮的时候关闭页面。 设置Icon 上方布局实现 外层用一个Container
阅读全文
摘要:调用语音识别,首先打开我们的首页 这里我们提供了_jumpToSpeak的方法 创建语音识别页面 复制一个my_page.dart 取名叫做speak_page 首先先来实现这个界面。中间有一段话,下面有三行文字。 下面是一个动画的按钮。点击就会变小。右边还有一个关闭的按钮 这里就用到了之前讲到的动
阅读全文
摘要:重点实现AsrPlugin, 需要打印log。就需要一个TAG,这里定义了一个TAG 然后来添加一个方法 在里面实例化MethodChannel和我们的Dart端进行关联,参数接收一个BinaryMessager 用register.messager()获取到Message 然后来实例化Plugin
阅读全文
摘要:建议先学 已经实现好了这几个类。 首先以安卓模式来打开我们的项目 在asr这个目录下,导入几个类 这几个类其实是下载的百度AI语音demo里面所提供的,里面已经提供了对百度AI的使用 首先复制这个IRecogListener IRecogListener复制过来改个名字叫做OnasrListener
阅读全文
摘要:开发flutter的插件,首先来定义Dart端的接口。 创建plugin目录 创建类 这里需要用到dart端和native端通讯的channel。首先需要导入services的包 指定channe的名字要和native端统一,否则找不到 提供几个接口。 首先是start方法,参数params为可选的
阅读全文
摘要:点击话筒的图标 点击,提示识别中。进行说话 说一个上海。这样就自动搜索了上海 说一个长城,自动识别为长城 引入安卓SDK 以百度AI只能语音为例 首先下载安卓的SDK 下载的文件,进行解压 这里有个扎包,导入到我们的项目里面去。 安卓的模拟器只支持X86的结构。所以这里引入x86的架构。主要是为了我
阅读全文
摘要:https://pub.dev/ 比如说我们需要一个图片选择插件。我们输入image进行搜索 随便点击一个进去,首先观察文档是否健全 看他的ChangeLog。发布的越多表示越活跃 再看他的github的仓库 看github的start的数量。 找一个第三方的插件 看他的issues 官方提供的用例
阅读全文
摘要:插件的地址:https://github.com/crazycodeboy/flutter_color_plugin 编写代码 推到dart的官方仓库上去 以上一节课常见的这个插件项目为例 传递字符串,插件将字符串解析成flutter的Color类型的颜色 实现dart部分的代码 直接过来了这段代码
阅读全文
摘要:创建插件 点击完成后,就会创建一个flutter的插件 这样插件包,就创建好了 lib目录是flutter插件的dart代码。这里用到了MethodChannel 声明依赖和说明 两个比较重要的目录安卓和ios的目录 安卓目录存放的是这个插件安卓的代码 ios目录存放的是这个插件ios的代码 这个就
阅读全文
摘要:本节实现了searchBar 默认样式,滚动条下滑的样式,还有点击的样式 搜索页面没有返回按钮 富文本的展示 结束
阅读全文
摘要:实现左侧item的动态图片。item的类型不同,它的图片是不一样的。再就是实现富文本的展现。 首先把静态图片导入到我们的项目里面去 把图片放到我们的项目根目录下 配置文件内声明图片 搜索的结果item内加上图片。由于图片是动态的 封装一个_typeItem来加载图片 如果为空,返回一个默认的图片 图
阅读全文
摘要:来实现搜索的item,以及item的跳转 ,还有索索详情页的实现。 跳转的详情页 首先我们的item需要点击事件,就用GestureDetector包裹一下。点击的事件通过webView打开item的url的地址 item具体显示的内容。底部是实线,用border 左边图片,右边是标题。标题下面是计
阅读全文
摘要:在dao的基础上实现实时搜索的功能。 首先在搜索页面,把接口的地址定义一个常量放在页面的最上面 首先把Scaffold的appBar删除掉。 自定义来实现我们的AppBar 我们来提供一个方法来实现appBar 把这段代码提取到_appBar的方法去。 提取过来,先注释,我们对代码做一些处理 首先是
阅读全文
摘要:这个类里面其实就返回了查询接口的地址 接口返回的结果数据 创建SearchModel 字段,生成构造函数,然后用大括号括起来。 实现工厂方法 把这个类改名字叫做SearchItem 然后再新建SearchModel的类。里面是searchItem类。 实现dao 搜索页面调用接口 上面定义showT
阅读全文