苍穹外卖项目启动
本文最后更新于254 天前,其中的信息可能已经过时,如有错误请发送邮件到2067863254@qq.com

用户端是微信小程序的

管理端是用nginx打包起来了的,注意的是nginx文件夹的路径不要有中文的出现

建议在nginx的文件夹下新建temp文件夹 -> 然后再在temp文件夹下新建client_body_temp文件夹,重新启动nginx,解决问题。

项目的swagger接口地址:http://localhost:8080/doc.html

管理端前端启动:

直接在 nginx.conf 配置文件里面修改端口号

双击Nginx.exe启动(不推荐)

通过命令启动:在nginx安装目录的绝对路径的框框内输入 cmd;s

直接输入 nginx 或者 start nginx,然后回车,就可以启动nginx了;

然后在浏览器地址栏输入 localhost:81 ,然后再回车

需要注意微信小程序不能弹出登入请求弹窗问题解决方案

将调试基础库的版本改为2.26.2或以下版本,就会弹出登入申请弹窗了

苍穹外卖菜品图片保存本地代码修改

今天学习苍穹外卖时,不想开通阿里云(但是阿里云的方法建议要学会),就搜集资料实现了本地存储图片,具体方法如下:

1.先在server文件夹中的\src\main\resources中创建一个存放图片的upload文件夹,你也可以存放在别的地方,只要修改路径即可

2.修改WebMvcConfiguration里的 addResourceHandlers 方法。

修改server文件夹中的WebMvcConfiguration文件里的addResourceHandlers 方法,路径改为自己的绝对路径即可

   protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        //配置好静态资源路径(有改动的地方)
        registry.addResourceHandler("/static/**")
                .addResourceLocations("file:C:/Users/Abola/Desktop/cq/资料/资料/day01/后端初始工程/sky-take-out/sky-server/src/main/resources/upload/");
    }

3.修改CommonController,直接把下面代码全部复制替换掉原来的

package com.sky.controller.admin;

import com.sky.constant.MessageConstant;
import com.sky.result.Result;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.UUID;

/**
 * ClassName: CommonController
 * Package: com.sky.controller.admin
 * Description:
 * 
 * @Author Abola
 * @Create 2025/4/16 11:07
 * @Version 1.0
 */
@RestController
@RequestMapping("/admin/common")
@Api(tags = "文件上传")
@Slf4j
public class CommonController {
    private static String FILE_UPLOAD_PATH = "C:\\Users\\Abola\\Desktop\\cq\\资料\\资料\\day01\\后端初始工程\\sky-take-out\\sky-server\\src\\main\\resources\\upload\\";

    @PostMapping("/upload")
    @ResponseBody
    public Result uploadfile(@RequestParam("file") MultipartFile file) throws IOException {
        if (file.isEmpty()) {
            return Result.error("文件不能为空");
        }

        File dir = new File(FILE_UPLOAD_PATH);
        if (!dir.exists() || !dir.isDirectory()) {
            boolean created = dir.mkdirs();
            if(created) {
                log.info("创建文件夹成功: {}", FILE_UPLOAD_PATH);
            } else {
                log.warn("创建文件夹失败或已经存在: {}", FILE_UPLOAD_PATH);
            }
        }

        String originalFilename = file.getOriginalFilename();
        if (originalFilename == null || originalFilename.isEmpty()) {
            return Result.error("文件名无效");
        }
        // 获取后缀
        String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
        if (!extension.equalsIgnoreCase(".png") && !extension.equalsIgnoreCase(".jpg") && !extension.equalsIgnoreCase(".jpeg")) {
            return Result.error("文件格式不支持");
        }
        // 拼接新的随机名称
        originalFilename = UUID.randomUUID().toString() + extension;


        // 确保文件路径安全,避免路径遍历攻击
        Path targetLocation = Paths.get(FILE_UPLOAD_PATH).resolve(originalFilename).normalize();
        try {
            Files.copy(file.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);
            log.info("文件上传成功: {}", originalFilename);
        } catch (IOException e) {
            log.error("文件上传失败: {}", originalFilename, e);
            return Result.error(MessageConstant.UPLOAD_FAILED);
        }

        // 你可以根据实际情况调整返回的文件访问链接
        String fileUrl = "http://localhost:8080/static/" + originalFilename;
        return Result.success(fileUrl);
    }
}

 测试:添加后可以立即回显,无需开通阿里云

解决服务器错误,无法接收实时报警信息

使用IDEA启动springboot项目苍穹外卖后,http://localhost:8071/ 能够正常访问登录,但是网页右上角始终显示“服务器错误,无法接收实时报警信息”:

在网上搜索找到:https://blog.csdn.net/qq_65032048/article/details/132077097,发现可能是修改了nginx端口号为8071导致。

解决办法:
在nginx下面的html 目录中搜索文件内容 ws://localhost。找到包含 ws://localhost 的文件后,编辑该文件(路径如下),将其中的 ws://localhost/ 修改为与 nginx 启动的http服务的端口号一致,比如
ws://localhost:8071/

包含 ws://localhost 的文件,根据具体环境而不同:
r:\SpringBootProj\sky-take-out-nginx-1.20.2\html\sky\js\app.d0aa4eb3.js

修改后,结束nginx进程和IDEA,再重新启动项目,http://localhost:8071/ 登录后,不再显示显示错误信息,问题成功解决:

问题描述:

服务端报警消息无法接收,nginx自定义listen端口号后无法获取websocket信息

解决方法:

修改前端代码(Windows端如果自定义了nginx端口号应该也是,不过可能需要去找一下前端代码,放到nginx的www目录下)

找到app.d0aa4eb3.js、与app.d0aa4eb3.js.map两个文件,对应修改

苍穹外卖前端代码的话可以在这个链接下载(来源:黑马程序员)

GitHub – chenyuancqu/sky: 苍穹外卖前端代码(修改websocket监听端口号后版本)

前端项目的部署:将sky文件放到nginx的html文件夹下

1、app.d0aa4eb3.js

修改为:

ws://localhost:8088/ws/
AI写代码
bash
这里8088是我的nginx的监听端口号,需要改成自己的

2、app.d0aa4eb3.js.map

这里的process.env.VUE_APP_SOCKET_URL

同样改为:

ws://localhost:8088/ws/
AI写代码
bash
3、重启nginx
mac端:
如果食用homebrew安装的nginx,执行命令:

brew services restart nginx
AI写代码
bash
如果是从官网安装的,进入安装目录的终端下执行:

./nginx -s reload
AI写代码
bash
Windows端:
进入安装目录的终端执行

nginx.exe -s reload
AI写代码
bash
4、关键
如果以上试了不行,清除浏览器缓存即可!

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇