苍穹外卖学习指南(java的一个项目)(老师能运行,但你不行,看这里!!)
前言
这是本人在做这个项目时遇到的所有问题总和,其中有很多稀奇古怪的,也有很多是我自己马虎导致但很棘手,看了很久才解决的。我将我遇到的问题记录下来,希望可以帮助到也遇到类似问题的人。大家可以按照右侧导航栏,找到对应的章节,再看对应章节里面有没有和你遇到的一样的问题。真心希望可以帮助到大家。
Day01-12-导入接口文档(导入Apifox时导不进去)
问题描述
1:苍穹外卖yapi这个平台之前没用过(之前在javaweb的课程中用的是Apifox)。看弹幕说比较卡
2:在导入的时候,导不进去,点进去显示接口数量是0
解决:
在导入的时候按图示点击到对应界面后。在上面的部分选择yapi,再选择对应的文件夹,进行导入就可以了
导入进去后还要配置URL,不然用不了,我是又去翻了一下javaweb的网课:“100.员工管理—新增员工—批量保存员工工作经历”20:05
然后解决的
Day02-03-新增员工_功能测试(我想用Apifox解决token问题)
问题描述
我不想用他给的那个接口方法。准备使用Apifox.
解决
找到员工登录的接口,按照图片输入。发送。(如果有问题,可能是url没有配置好。问题解答的最后附上解决方法。)
然后复制生成的token。点击右上角的三条杠
再点击全局变量,默认选择Header,参数名一定要写为token,将其默认值设为上面复制的token。这样就可以正常使用了。
对了这个token只有两个小时的时限。过了这个时间就需要重新整一遍上面的操作如果要改。
如果想要更改有效时长,可以改变图片所示的位置。
关键报错:java.lang.NoSuchMethodException: com.sky.entity.Employee.setUpdateUser(long)
处理:将long改为Long
变为:
上面的也要记得改哦,不然后面用到了,又是得一点一点找错误。
Day03-06新增菜品代码开发1:
问题:实现上传图片功能时,阿里云oss的配置问题。
老师演示的是他自己的,我们不能用。那么我们自己该怎么办呢?
解决:
这四个问题分别应该这样写:
bucket-name就是你的budget的名字,直接去阿里云看
access-key-secret和access-key-id是在创建时我们自己要保存好的,找出来直接粘贴上去就可以。
endpoint:跟着我后面的内容做,就可以找到你的这个怎么填
这是黑马javaweb的飞书文档的链接,
Docshttps://heuqqdmbyk.feishu.cn/wiki/PHp6wXaNUij3bokCXWrclz5anWh直接跳到“3.文件上传”那个部分看跟着做就可以了
在黑马程序员系列网课中javaweb第107节课有详细地讲解这一块,
endpoint这个部分怎么填
1). 找到对象存储OSS服务
点击账户
在弹出的产品与服务这里搜索“对象存储oss”
点击Budget列表
点击概览,这里有我们需要的信息
这个就是我们的:endpoint要填的内容
Day03_11菜品分页查询代码成功运行但是图片加载不出来
问题:菜品分页查询代码部署完成,阿里云服务器什么的都配置好了,但是图片显示不出来。
解决:
这个显示不出来是因为本来用的是网课老师的阿里云oss,他的我们用不了,我们自己配置的oss里面又没有这些东西。
我们要在“修改”功能完成之后,重新上传。
保存成功后就可以正常显示了。注意,这个问题不解决,在后面的设计微信小程序那块的功能也不能实现。
Day06-10微信小程序开发_入门案例4:
问题:点击“发送请求”报错。在出现这个界面的时候出错了。
原因:
两个,一是redis没有启动,二是idea中的后端没有运行起来。
1:redix没有启动,需要启动。步骤如下
点到这个界面,在红框区域输入"cmd"进入命令行。
在命令行输入。这样就可以启动redis
redis-server.exe redis.windows.conf
2:idea中的后端没有运行起来。去运行起来就好了。
报错:
log writeFile err writeFile:fail the maximum size of the file storage limit is exceeded
解决:
点击工具
点击全部清理。
问题:不知道参数填什么
这是网址:小程序登录 | 微信开放文档
这里面有
报错:40013
解决:上面这些要顶格子写,不能有空格。
Day06_20导入商品浏览功能代码
问题:跟着老师在微信开发者工具测试的时候报错了。
解决:在webMvcConfiguration里面的配置改一改就好了。将“/user/**”变为:“user/**”
Day07_17添加购物车功能测试无法将购物车信息添加到数据库
问题:
无法将购物车信息添加到数据库,没有报错
解决:
原因分析:
userId为空
解决方法:
检查两处,因为我们当时做的时候,是直接复制粘贴之前的admin的配置,很有可能是相应的user我们没有改成admin导致的,也可能是我们更改了老师之前带着我们做的内容导致他可以但我们不行
1. JwtTokenUserInterceptor这个类下面的user是否写成了admin
2. 检查WebMvcConfiguration这个类下面的user是否写成了admin
3.之前将图片中这个位置的“/user/**”改成了“user/**”。我们现在再给他改回去就可以了。
Day08_11用户下单功能测试 报错“异常信息:用户地址为空,不能下单”
问题:
测试的时候,报错“异常信息:用户地址为空,不能下单”
原因分析:
根据上面的信息反馈可以知道,我们压根就没有数据传入OrdersSubmitDTO。导致的地址为空,
解决:
所以我们应该去上层找原因,问题出在controller层。并且就在这两行,我观察发现,传入的是json数据,但没用@RequestBody注解
成功
Day08_11用户下单功能测试 往orderDetail表中插入数据时,全是空的。
问题:
往orderDetail表中插入数据时,全是空的。
原因分析:
是空的说明,数据没有传进来。往上找,controller层不会有问题,因为有问题的话会在前面传入ordersSubmitDTO的时候报错。问题就在OrderServiceImpl这里,找到他的传入数据的位置检查修改就可以了。
解决:
检查发现是这里出了问题,这里应该写cart要不然。
更改为:
成功:
Day08_18订单支付 跳过微信支付功能的方法
问题:
微信支付需要公司提供相应的东西,我们没有,但希望自己的可以功能完备地走下去。
解决:
找到对应文件,在pages下的index.js的第226行,将上面的框里面的注释掉,下面的取消注释。
操作后的样子。
在OrderServiceImpl.java中注释掉图片中的内容。如图所示
在“return vo;”的上面添加代码(代码在图片后面)
JSONObject jsonObject = new JSONObject();jsonObject.put("code", "ORDERPAID");OrderPaymentVO vo = jsonObject.toJavaObject(OrderPaymentVO.class);vo.setPackageStr(jsonObject.getString("package"));//为替代微信支付成功后的数据库订单状态更新,多定义一个方法进行修改Integer OrderPaidStatus = Orders.PAID; //支付状态,已支付Integer OrderStatus = Orders.TO_BE_CONFIRMED; //订单状态,待接单//发现没有将支付时间 check_out属性赋值,所以在这里更新LocalDateTime check_out_time = LocalDateTime.now();//获取订单号码String orderNumber = ordersPaymentDTO.getOrderNumber();log.info("调用updateStatus,用于替换微信支付更新数据库状态的问题");orderMapper.updateStatus(OrderStatus, OrderPaidStatus, check_out_time, orderNumber);
在OrderMapper中添加对应的代码。(代码在后面)
@Update("update orders set status = #{orderStatus},pay_status = #{orderPaidStatus} ,checkout_time = #{check_out_time} " +"where number = #{orderNumber}")void updateStatus(Integer orderStatus, Integer orderPaidStatus, LocalDateTime check_out_time, String orderNumber);
效果展示:支付成功
苍穹外卖问题系列之 分页查询是pageHelper一直报错
问题
pageHelper一直报错,我的这个报错可能范围会很小,希望可以帮到你。
原因分析
在苍穹外卖中,所有跟分页查询相关的全部用的是com.github.pagehelper.Page,如果这部分保险错了,那么很可能是因为引用错误。注意,这个是要在OrderServiceImpl,OrderMapper
两个文件里面都改正的。我就是在第二个没有改才导致报错的。
解决
将所有用到pageHelper的文件(OrderServiceImpl,OrderMapper)里的引用都改为com.github.pagehelper.Page
改完之后报错立刻消失。
苍穹外卖问题系列之 苍穹外卖订单详情前端界面和网课给的不一样
问题
如图,我的前端界面和网课里面给的不一样,没有“申请退款”和一些其他的该有的东西。
原因分析
“合计”这一栏显示undefined说明我们的总金额没有输入进去。可以看看订单提交那块的代码,是否可以正确输出。还有就是订单详细界面展示这块的代码。
解决
1.检查订单提交那块的代码
我在上下都设置了一些输出的。
检查后得到
发现可以正常输出。
2.检查订单详细界面展示这块的代码
发现红框内的下面那句会将orderVO的内容覆盖掉。导致前端的orderVO没有数据。
将其改为就可以了,这段是我自己写的,写完以后没有对答案,跟网课里的不一样,所有大家自己写完以后一定要跟官方代码对一下,不然就有可能会出问题。
效果展示
苍穹外卖系列问题之点击催单没有反应
问题
点击催单没有反应
解决
在管理端退出登录一下,就好了
苍穹外卖系列问题之Day11_05营业额统计代码开发2 StringUtils.join(dateList,",")报错
问题
StringUtils.join(dateList,",")报错
解决
出现这个问题是上面引用出错了,我引用的是com.aliyun.oss.common.utils.StringUtils
而应该引入的是org.apache.commons.lang3.StringUtils
改完立刻就好了