1、 遇到问题:文件前不显示图标,微信小程序 —微信开发者工具:

遇到这个问题,通常是由于看不到 svg 图标导致,此时可以打开 注册表 找到 “计算机\HKEY_CLASSES_ROOT\.svg”

看看此时的 Content Type 的数据,如果不是 image/svg+xml 的话需要修改下,然后重启工具看看。

win+r 调出控制台 输入:regedit

其他问题请参考:

开发者工具启动异常自助解决方案 | 微信开放社区 (qq.com)

问题 2:

微信小程序开发工具能正常请求后台数据,手机预览请求失败

url 写成:127.0.0.1,而 localhost 有时候会出现:

Component "pages/index/index" does not have a method "sendRequest" to handle event "tap".

参考:

微信小程序开发工具能正常请求后台数据,手机预览请求失败_微信开发工具预览接口无效-CSDN博客

postman 测试:GET https://api.weixin.qq.com/sns/jscode2session

2、 跳过微信支付:

参考:《苍穹外卖》电商实战项目实操笔记系列(P66~P122)【中】-CSDN博客

第一步:打开小程序端按照我提供的图片去修改注释代码

在OrderServiceImpl里加一个全局变量orders(如下图),在submitOrder方法(提交订单)中的如下位置给全局变量赋值:

第二步:修改idea中OrderServiceImpl中的订单支付payment的业务代码

添加如下代码

完善这个orderMapper下这个updateStatus方法:

测试成功:

代码实现:

/**

* 订单支付

* @param ordersPaymentDTO

* @return

*/

public OrderPaymentVO payment(OrdersPaymentDTO ordersPaymentDTO) throws Exception {

// 当前登录用户id

Long userId = BaseContext.getCurrentId();

User user = userMapper.getById(userId);

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; //订单状态,待接单

LocalDateTime check_out_time = LocalDateTime.now();//更新支付时间

orderMapper.updateStatus(OrderStatus, OrderPaidStatus, check_out_time, this.orders.getId());

return vo;

}

/**

* 用于替换微信支付更新数据库状态的问题

* @param orderStatus

* @param orderPaidStatus

* @param check_out_time

* @param orderNumber

*/

@Update("update orders set status = #{orderStatus},pay_status = #{orderPaidStatus} ,checkout_time = #{check_out_time} where id = #{id}")

void updateStatus(Integer orderStatus, Integer orderPaidStatus, LocalDateTime check_out_time, Long id);

1、 来单提醒:《苍穹外卖》电商实战项目实操笔记系列(P123~P184)【下】-CSDN博客

在sky-server的service下的OrderServiceImpl中先自动导入WebSocketServer:

@Autowired

private WebSocketServer webSocketServer;

在serviceOrderServiceImpl的payment方法中写入如下代码:

//通过websocket向客户端浏览器推送消息 type orderId content

Map map = new HashMap();

map.put("type",1);

map.put("orderId",this.orders.getId());

map.put("content","订单号:"+this.orders.getNumber());

String json = JSON.toJSONString(map);

webSocketServer.sendToAllClient(json);

如下图(在用户下单后点击支付就立即提示接单,因为在前面设置支付的时候,默认都是直接支付成功,所以跳过了paySuccess方法):

遇到问题:

1.提示音一直响,不停

提示音一直响不停是因为设置了5秒钟重复发送的缘故,只需要把注解注释掉即可或者改成 30s:

1.没办法建立连接,看不到下面语句输出:

1.Redis的服务端要开启

2.nginx.conf配置的端口必须是:80(如果不是80,也可以更改前端页面中写的URL)。

3、Stream 流

Stream 常用函数

max :方法找到流中的最大值。

List numbers = Arrays.asList(1, 3, 7, 2, 9, 4, 6);

Optional max = numbers.stream()

.max(Integer::compareTo);

if (max.isPresent()) {

System.out.println("最大值是:" + max.get());

} else {

System.out.println("列表为空,没有最大值。");

}

map:对流中的每个元素应用一个函数,并将结果映射到新的流中

forEach:对流中的每个元素执行指定操作。

filter:根据指定条件过滤流中的元素。

collect:将流中的元素收集到一个集合中。

List numbers = salesTop10.stream().map(GoodsSalesDTO::getNumber)

.collect(Collectors.toList());

reduce:将流中的元素组合成单个结果。

flatMap:将多个流合并成一个流。

sorted:对流中的元素进行排序

limit:限制流中元素的数量

skip:跳过流中的前几个元素。

distinct:去除流中重复的元素。

sum:求和

Integer totalOrderCount = orderCountList.stream().reduce(Integer::sum).get();

中间操作:

对流进行转换、过滤等操作,并返回一个新的流。中间操作是惰性求值的,只有遇到终端操作时才会执行。

Stream filteredStream = stream.filter(x -> x % 2 == 0);

Stream mappedStream = stream.map(x -> x * x);

终端操作:

对流进行最终的处理,并产生一个最终的结果。终端操作会触发中间操作的执行。

long count = stream.count();

Optional max = stream.max(Integer::compareTo);

stream.forEach(System.out::println);

4、Vue 相关的安装

1 、安装 node.js

https://nodejs.org/en

查看 node 版本: node -v

查看 npm 版本: npm -v

2、配置依赖下载使用阿里镜像

npm config set registry https://registry.npmmirror.com

npm config get registry

npm config set registry https://registry.npmjs.org/

3、配置全局依赖下载后存储位置

1、在 Windows 系统上,npm 的全局依赖默认安装在 `<用户目录>\AppData\Roaming\npm` 目录下。

2、如果需要修改全局依赖的安装路径,可以按照以下步骤操作:

创建一个新的全局依赖存储目录,例如 `D:\GlobalNodeModules`。

打开命令行终端,执行以下命令来配置新的全局依赖存储路径:

npm config set prefix "D:\GlobalNodeModules"

确认配置已生效,可以使用以下命令查看当前的全局依赖存储路径:

npm config get prefix

4、升级 npm 版本

cmd 输入npm -v 查看版本

如果node中自带的npm版本过低!则需要升级至9.6.6!

npm install -g npm@9.6.6

npm i @vue/cli -g # 基于vue进行快速开发的完整系统,实现交互式的项目脚手架

npm uninstall vue-cli -g # 卸载

vue -v # 查看vue-cli版本号

npm install -g vue # 安装vue

npm list vue # 查看vue的版本号

npm config list # 查看所有信息

5、 遇到的问题

vue : 无法加载文件(因为在此系统上禁止运行脚本)

执行:(签名或运行这些脚本)

set-ExecutionPolicy RemoteSigned

vue : 无法加载文件(因为在此系统上禁止运行脚本)-CSDN博客

使用 Vue CLI 创建前端工程(基于脚手架创建工程):

注意:在管理员身份执行终端

方式 1:vue create 项目名称

方式 2:vue ui

注意:一定要以管理员身份运行且在目录下

停止:Ctrl + C

Vite 是基于原生 ES6 Modules,在生产环境下打包使用的是 Rollup。vue-cli 基于 webpack 封装,生产环境和开发环境都是基于 Webpack 打包。所以两者在生产环境下都是基于源代码文件打包。但在开发环境中,两者有所不同。Vite 在开发环境下,基于原生 ES6 ,无需对代码进行打包,浏览器可以直接调用。所以 Vite 因为基于浏览器的原生功能,省掉了打包过程,在开发环境中体验及其愉快。

启动项目 命令:npm run serve(package.json 中 serve 的名字一致)

const { defineConfig } = require('@vue/cli-service')

module.exports = defineConfig({

transpileDependencies: true,

devServer: {

port: 7070 //指定前端服务端口号

}

})

5、nodejs 不兼容问题

参考:

node.js - 【工具】用nvm管理nodejs版本切换,真香! - JavaDog程序狗 - SegmentFault 思否

苍穹外卖-前端搭建-npm install失败解决方法-CSDN博客

nvm 报错 The system cannot find the path specified. Could not download node.js v16 - 掘金 (juejin.cn)

1、nvm下载

官方github地址

Release v1.1.12 · coreybutler/nvm-windows (github.com)

接下来无脑安装就行

2、 配置环境变量

出现这个证明安装成功

#查看nvm版本

nvm -v

#查看nodejs版本

node -v

#查看nvm版本

nvm -v

# 查看可用nodejs的稳定版本

nvm list available

# 下载nodejs 20.9.0

nvm install 20.9.0

#查看已安装所有版本

nvm list

#切换版本

nvm use 20.9.0

# 卸载nodejs版本

nvm uninstall 12.22.10

#清除npm缓存

npm cache clean --force

# 查看可用nodejs的稳定版本

nvm list available

# 下载nodejs 20.9.0

nvm install 20.9.0

#查看已安装所有版本

nvm list

3、 安装苍穹外卖的 nodejs 版本

nvm install 12.22.10

#切换版本

nvm use 20.9.0

*在哪代表是哪个版本

卸载 nvm

4、node: --openssl-legacy-provider is not allowed in NODE_OPTIONS 怎么解决

node: --openssl-legacy-provider is not allowed in NODE_OPTIONS 怎么解决-CSDN博客

切换到 12.20.10 会出现

node: --openssl-legacy-provider is not allowed in NODE_OPTIONS

这个问题是因为在 Node.js 版本 16.0.0 中,不再支持使用 --openssl-legacy-provider 参数来使用 OpenSSL 库,而该参数在 NODE_OPTIONS 环境变量中被设置。要解决这个问题,有两种方法:

1.升级你的应用代码,支持新版本的node.js。

2.删除NODE_OPTIONS中的--openssl-legacy-provider选项。可以在命令行中输入以下代码来删除该选项:

SET NODE_OPTIONS=%NODE_OPTIONS:--openssl-legacy-provider=%

5、npm 与 node 不兼容

const hasLoadedNpm = npm?.config.loaded-CSDN博客

本地安装了nvm用了切换node版本 但是当安装node20.9.0的时候 不小心自己重新 全局 装了npm,在切回低版本的时候 用了全局的 npm ,所以报错了 ,重新将node 切换回20.5的版本 npm这个时候可用 再执行npm uninstall -g npm ,取消全局安装的npm ,再使用nvm切换node版本的时候就可以了 自动使用node下自带的npm 版本 成功解决

完美解决