苍穹外卖遇到问题(包括跳过微信支付、nodejs不兼容等)

 

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

 

b809d048bd3ecaa3fcdd4d785a069603.png

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

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

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

 

33ef06e73bcad9c5c39a7b7517d4b081.png

 

d414c19b5340d9bb013c115c11c109bf.png

其他问题请参考:

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

问题 2:

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

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

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

参考:

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

 

4b369b85ce73593e91270c272a56764b.png

 

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

 

9c8a60789fca437a2f18e7a351bd918f.png

 

2、 跳过微信支付:

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

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

 

a0f3453a0398812f9bdedbd51d31b84e.png

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

 

3bee1d00606c1e982eb30b82db89953e.png

 

b763baa5442d5a618fbfcffcd659e976.png

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

 

1f124a9d8297bc991decdfecf3f79ed5.png

添加如下代码

 

41df7ff117e03f9f6ae7565192d05f62.png

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

 

335c057e3c2e63e2845784c1c17e6de2.png

测试成功:

 

1c2278e4e83135e63c2005466c671652.png

代码实现:

/**
* 订单支付
* @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方法):

 

6f6a280c2da10b4ca9fc97e2270f81e6.png

遇到问题:

1.提示音一直响,不停

 

20a16195f1b8832ee16bd2fd6c891866.png

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

 

800ab5e28aa305b166302e9743a1a903.png

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

 

ef37d576fb13a94c9924b02f03815723.png

1.Redis的服务端要开启

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

 

50e7537776c49a99094edac444529944.png

3、Stream 流

Stream 常用函数

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

 List<Integer> numbers = Arrays.asList(1, 3, 7, 2, 9, 4, 6);
        
        Optional<Integer> max = numbers.stream()
                                       .max(Integer::compareTo);
        if (max.isPresent()) {
            System.out.println("最大值是:" + max.get());
        } else {
            System.out.println("列表为空,没有最大值。");
        }

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

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

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

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

List<Integer> 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<Integer> filteredStream = stream.filter(x -> x % 2 == 0);
Stream<Integer> mappedStream = stream.map(x -> x * x);

终端操作:

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

long count = stream.count();
Optional<Integer> 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 : 无法加载文件(因为在此系统上禁止运行脚本)

 

7a1b1414bd2580cdb9cc386877ba75e7.png

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

set-ExecutionPolicy RemoteSigned

 

32118c2a8c548edb923dc810e7e7e4b7.png

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

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

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

方式 1:vue create 项目名称

方式 2:vue ui

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

 

6fe10dd4b2e57faf2d53d2afe25d134c.png

停止: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)

 

af3349a8f9762dba7bb62119b12a3f86.png

 

98cdd6923b857c06dab5b66b627e9577.png

接下来无脑安装就行

2、 配置环境变量

 

3e933f84c86d73517682f88722862558.png

 

4d9fe83d7eb968de153afe615c8aa3f4.png

出现这个证明安装成功

#查看nvm版本
nvm -v

 

859001154541273599614491105a98ca.png

 

 

12534afd7dd6accc057f867a6b38b6ad.png

#查看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 

 

4c40baa11fc928e2a314af1655cecec6.png

# 下载nodejs 20.9.0
nvm install 20.9.0

 

d12d715da6f090f4e01474841ea48d9f.png

#查看已安装所有版本
nvm list 

 

580033710bfa10a6e18d95285d373240.png

 

49c29ff60b63fcfe44ef055058c0f770.png

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

nvm install 12.22.10

 

faf1b948b295284c8a570da4bb2f64c7.png

#切换版本
nvm use 20.9.0
*在哪代表是哪个版本

 

f8b1230352adde75d0da679aeccd7c88.png

 

卸载 nvm

 

eb7f02b2017d304c2ba6fb992cb3b298.png

 

1a517fb07ece49e90ff729596c97861e.png

 

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=%

 

 

f7bca49735818403f6096c857e55ce62.png

 

7d6b8b4bf88f5a8c9042c82fd4a2e2db.png

 

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 版本 成功解决

完美解决

 

fedaef1b590cf1fda141b3aaafc15a42.png

 

 

苍穹外卖项目可以使用Postman进行API接口的测试和调试。Postman是一款常用的API开发工具,它可以帮助开发人员发送HTTP请求并查看响应结果,方便进行接口的测试和调试。 在苍穹外卖项目中,可以使用Postman发送各种类型的HTTP请求,比如GET、POST、PUT、DELETE等,来模拟用户操作和测试接口功能。通过Postman,可以验证接口的正确性、查看接口返回的数据、调试接口的参数等。 为了使用Postman进行苍穹外卖项目的接口测试,您需要以下步骤: 1. 下载并安装Postman:您可以从Postman官网(https://www.postman.com/)上下载并安装适合您的操作系统的版本。 2. 打开Postman并创建一个新的请求:打开Postman应用,在界面上选择"New"来创建一个新的请求。 3. 输入接口URL和选择请求方法:在新建请求的界面中,输入苍穹外卖项目的接口URL,并选择适当的请求方法,比如GET或POST。 4. 添加请求参数和请求头:根据需要,您可以添加请求参数和请求头,以便于模拟不同的请求情况。 5. 发送请求并查看响应:点击发送按钮,Postman会向服务器发送请求,并在界面上显示响应结果。您可以查看接口返回的数据、响应状态码等信息。 通过以上步骤,您可以使用Postman进行苍穹外卖项目的接口测试。这样可以帮助您确保接口的正确性和稳定性,提高项目的质量和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值