JooLun Plus 百科 ⬇ 源码下载

02.08 项目结构说明

102353 于 2026-10-17 14:14:33 +08:00 修改了此页面

### java后端服务结构

joolun-plus
├── db -- 数据库脚本
├── docker-files -- docker配置文件
├── joolun-codegen -- 代码生成器服务
├── joolun-auth -- 授权服务
├── joolun-common -- 系统公共模块 
├    ├── joolun-common-core -- 公共工具类包
├    ├── joolun-common-data -- 数据包
├    ├── joolun-common-datasource -- 动态数据源
├    ├── joolun-common-email -- 邮件服务
├    ├── joolun-common-log -- 日志
├    ├── joolun-common-job -- 定时任务
├    ├── joolun-common-security -- 安全工具类
├    ├── joolun-common-sms -- 短信服务
├    ├── joolun-common-storage -- 文件存储
├    ├── joolun-common-swagger -- Swagger文档
├    └── joolun-common-transaction -- 分布式事务
├── joolun-gateway -- Spring Cloud Gateway网关服务
├── joolun-upms -- 后台管理模块
├    ├── joolun-upms-common -- 后台管理公共模块
├    └── joolun-upms-admin -- 后台管理业务处理模块服务
├── joolun-weixin  -- 微信模块 
├    ├── joolun-weixin-common -- 微信公共模块
├    └── joolun-weixin-admin -- 微信业务模块服务
├── joolun-pay -- 支付模块
├    ├── joolun-pay-common -- 支付公共模块
├    └── joolun-pay-admin --支付管理模块服务
├── joolun-mall  -- 商城模块 
├    ├── joolun-mall-common -- 商城公共模块
├    ├── joolun-mall-api -- 商城用户端api模块服务
├    └── joolun-mall-admin -- 商城后台管理模块服务
├── joolun-live -- 直播模块
├    ├── joolun-live-common -- 直播公共模块
├    └── joolun-live-admin --直播管理模块服务
└── server -- 第三方程序包
     ├── nacos-server -- nacos配置中心、注册中心
     └── seata-server -- seata分布式事务

后台管理页面结构

joolun-plus-ui
├── .husky  # 代码提交前校验配置文件
├── .vscode  # IDE 工具推荐配置文件
│   │   ├── extensions.json  # 一键安装平台推荐的 vscode 插件
│   │   ├── settings.json  # 设置扩展程序或 vscode 编辑器的一些属性
│   │   ├── vue3.0.code-snippets  # vue3.0 代码片段
│   │   └── vue3.2.code-snippets  # vue3.2 代码片段
├── build  # 构建工具
│   │   ├── cdn.ts  # 打包时采用 cdn 模式
│   │   ├── compress.ts  # 打包时启用 gzip 压缩或 brotli 压缩
│   │   ├── info.ts  # 输出打包信息(大小、用时)
│   │   ├── optimize.ts  # vite 依赖预构建配置项
│   │   ├── plugins.ts  # vite 相关插件存放处
│   │   ├── utils.ts  # 导出环境变量、跨域代理函数
├── mock  # mock 模拟后台数据
│   │   ├── asyncRoutes.ts  # 模拟后台返回动态路由
│   │   ├── ...
├── node_modules  # 模块依赖
├── public  # 静态资源
│   │   ├── cdn  # 静态js库
│   │   ├── img  # 图片
│   │   ├── static  # 装修页面用的图片保存目录, 该目录路径和移动端路径保持一致
│   │   ├── view  # html文件, 微信授权时的中转页面
│   │   ├── AppVersion.json  # 商户App更新拉取的版本信息数据
│   │   ├── AppVersionMall.json  # 商城App更新拉取的版本信息数据
│   │   ├── favicon.ico  # favicon
│   │   ├── logo.svg  # logo
│   │   ├── platform-config.json  # 全局配置文件(打包后修改也可生效)
│   │   ├── template-batch-goods.xlsx  # 批量导入商品模板
├── src
│   ├── api  # 接口请求统一管理
│   ├── assets  # 字体、图片等静态资源
│   ├── components  # 自定义组件(该目录下的组件会自动全局注册, 页面文件无需手动引入)
│   │   ├── amount-text  # 金额文字组件
│   │   ├── app-page-select  # 商城端页面选择组件
│   │   ├── basic-container  # 基本容器
│   │   ├── code-phone  # 输入手机号并发送验证码
│   │   ├── editor  # 富文本编辑器
│   │   ├── error-page  # 错误页面
│   │   ├── goods  # 商品相关
│   │   ├── iframe  # 内联框架
│   │   ├── mall-user  # 商城用户
│   │   ├── material  # 素材: 图片/视频
│   │   ├── pay  # 付款组件
│   │   ├── re-icon  # pure-admin的图标显示组件
│   │   ├── re-segmented  # pure-admin的重新分割组件
│   │   ├── re-text  # pure-admin的文本组件
│   │   ├── shop  # 店铺相关
│   │   ├── sku  # 商品SKU
│   │   ├── wx-ma-media  # 微信小程序媒体上传组件,注意接口是否支持
│   │   ├── wx-ma-qrcode-down  # 微信小程序二维码下载
│   │   ├── wx-material-select  # 微信公众号素材选择
│   │   ├── wx-menu  # 微信公众号菜单
│   │   ├── wx-msg  # 微信公众号消息
│   │   ├── wx-news  # 微信公众号文章
│   │   ├── wx-reply  # 微信公众号回复
│   │   ├── wx-video-play  # 微信公众号视频播放
│   │   └── wx-voice-play  # 微信公众号语音播放
│   ├── config  # 平台全局配置
│   ├── const  # 常量
│   │   ├── crud  # avue 的 crud 配置
│   │   ├── clientType  # 商城端类型
│   │   └── errorCode  # 错误码
│   ├── directives  # 自定义指令
│   │   ├── copy  # 复制
│   │   ├── elResizeDetector  # 监听容器改变指令
│   │   ├── optimize  # 防抖(v-optimize或v-optimize:debounce)、节流(v-optimize:throttle)指令
│   │   ├── ripple  #  涟漪效果
│   ├── layout  # 主要页面布局,包括登录页面、菜单布局、主布局
│   │   ├── components  # 页面布局组件
│   │   ├── error  # 错误页面
│   │   ├── hooks  # 公共方法相关
│   │   ├── login  # 登录页面
│   │   ├── theme  # 主题
│   │   ├── frameView.vue  # 菜单中如果有地址是http时 显示的页面
│   │   ├── index.vue  # 主体布局
│   │   └── redirect.vue  # 跳转页面
│   ├── locales  # 国际化语言相关
│   ├── plugins  # 处理一些库或插件,导出更方便的 api
│   │   ├── echarts  # echarts
│   ├── router  # 路由配置
│   ├── store  # pinia 状态管理(包括当前的 用户信息、租户信息、权限)
│   ├── style  # 全局样式(原有pure-admin框架的样式都没有改动,jl只新增了scss文件然后进行了覆盖css操作)
│   │   ├── dark.scss  # 暗黑模式样式适配文件
│   │   ├── element-plus.scss  # 全局覆盖 element-plus 样式文件
│   │   ├── reset.scss  # 全局重置样式文件
│   │   ├── sidebar.scss  # layout 布局样式文件
│   │   ├── tailwind.css  # tailwindcss 自定义样式配置文件
│   │   ├── ...
│   │   ├── joolun.scss  # jl: 自定义的样式文件
│   │   ├── avue.scss  # jl: 覆盖avue 某些样式文件
│   │   ├── sidebarpro.scss  # jl: 覆盖 sidebar 某些样式文件
│   ├── utils  # 全局工具方法
│   │   ├── http  # 封装 axios 文件
│   │   ├── progress  # 封装 nprogress
│   │   └── auth.ts  # 处理用户信息和 token 相关
│   │   └── chinaArea.ts  # 汉字转区域码
│   │   └── globalPolyfills.ts  # 解决项目可能因为安装某个依赖出现 `global is not defined` 报错
│   │   └── message.ts  # 消息提示函数
│   │   ├── mitt.ts  # 触发公共事件,类似 EventBus
│   │   ├── print.ts  # 打印函数
│   │   ├── propTypes.ts  # 二次封装 vue 的 propTypes
│   │   ├── responsive.ts  # 全局响应式 storage 配置
│   │   ├── sso.ts  # 前端单点登录逻辑处理
│   │   ├── tree.ts  # 树结构相关处理函数
│   │   ├── util.ts  # jl 工具类(加密、判断当前页面是否是平台系统页面、哪些页面的接口不需要传token等)
│   ├── views  # 存放编写业务代码页面(菜单划分与目录模块没有强关联)
│   │   ├── bigscreen  # 数据大屏
│   │   ├── gen  # 代码生成器
│   │   ├── im  # 客服模块
│   │   ├── live  # 直播模块
│   │   ├── mall  # 商城模块
│   │   ├── pay  # 支付配置模块
│   │   ├── upms  # 系统和平台模块
│   │   ├── welcome  # 首页
│   │   ├── wxcomponent  # 微信第三方平台配置
│   │   ├── wxma  # 微信小程序模块
│   │   ├── wxmp  # 微信公众号模块
│   ├── App.vue  # 入口页面
│   ├── main.ts  # 入口文件
├── types  # 全局 TS 类型配置
│   │   ├── auto-components.d.ts  # 自动引入 src/components 目录下的组件类型声明文件
│   │   ├── global.d.ts  # 全局类型声明文件
│   │   ├── index.d.ts  # 全局类型声明文件
│   │   ├── index.ts  # 全局类型声明文件
│   │   ├── shims-tsx.d.ts  # 该文件是为了给 .tsx 文件提供类型支持,在编写时能正确识别语法
│   │   └── shims-vue.d.ts  # .vue、.scss 文件不是常规的文件类型,typescript 无法识别,所以我们需要通过下图的代码告诉 typescript 这些文件的类型,防止类型报错
├── .editorconfig  # 编辑器读取文件格式及样式定义配置 https://editorconfig.org/
├── .env  # 全局环境变量配置(当 .env 文件与 .env.development、.env.production、.env.staging 这三个文件之一存在相同的配置 key 时,.env 优先级更低)
├── .env.development  # 开发环境变量配置
├── .env.production  # 生产环境变量配置
├── .env.staging  # 预发布环境变量配置
├── .eslintignore  # eslint 语法检查忽略文件
├── .eslintrc.js  # eslint 语法检查配置
├── .gitignore  # git 提交忽略文件
├── .gitpod.yml  # gitpod 部署配置
├── .markdownlint.json  # markdown 格式检查配置
├── .npmrc  # npm 配置文件
├── .prettierrc.js  # prettier 插件配置
├── .stylelintignore  # stylelint 插件检查忽略文件
├── commitlint.config.js  # git 提交前检查配置
├── index.html  # html 主入口
├── package.json  # 依赖包管理以及命令配置
├── pnpm-lock.yaml  # 依赖包版本锁定文件
├── postcss.config.js  # postcss 插件配置
├── README.md  # 项目说明
├── stylelint.config.js  # stylelint 配置
├── tailwind.config.js  # tailwindcss 配置
├── tsconfig.json  # typescript 配置
└── vite.config.ts  # vite 配置

uniapp商城用户移动端结构,可编译成微信小程序、H5、安卓、IOS

joolun-plus-uniapp  -- 主目录
├── components -- 业务组件
├    ├── chat-message -- 自定义的聊天消息类型
├    ├── coupon -- 优惠券相关
├    ├    ├── coupon-info -- 优惠券详情
├    ├    ├── coupon-receive -- 店铺优惠券弹框
├    ├    ├── coupon-user-info -- 个人优惠券
├    ├── goods -- 商品相关
├    ├    ├── goods-card -- 商品卡片展示类型
├    ├    ├── goods-ensure -- 商品服务说明
├    ├    ├── goods-recommend -- 商品推荐组件
├    ├    ├── goods-row -- 商品列表展示类型
├    ├    ├── goods-sku -- 商品规格选择
├    ├    ├── goods-waterfall -- 商品瀑布流展示类型
├    ├── graph-code -- 验证码图片
├    ├── lang-change -- 国际化切换
├    ├── order -- 订单相关
├    ├    ├── address -- 收货地址选择
├    ├    ├── bill -- 发票选择
├    ├    ├── order-operate -- 订单操作按钮(付款,取消等操作)
├    ├── page-devise -- 用来存放装修页面组件的目录
├    ├    ├── components -- 单个装修组件
├    ├    ├── view -- 装修页面组件(普通页面和店铺页面装修组件是不相同的,所以这里区分)
├    ├── privacy-policy -- 隐私政策的弹框
├    ├── share-component -- 分享组件弹框显示: 分享给微信好友 和 分享海报生成
├    ├── share-friends -- 分享给好友组件
├    ├── shop -- 店铺详情
├    ├    ├── shop-info -- 店铺详情
├    ├    ├── shop-store-info -- 店铺门店详情
├    ├    ├── shop-store-select -- 店铺门店选择
├── config -- 一些公共配置文件
├── libs -- 基础组件库,不与接口业务数据等关联(该目录非必要不建议修改)
├    ├── common # 公共方法事件的统一处理
├    ├    ├── mixins # 全局组件的公用方法,只要是vue文件就可以调用这个里面的所有方法和属性
├    ├    ├── page # 页面常用的一些方法
├    ├    ├── router-h5 # h5端路由处理
├    ├    ├── storage # uni.StorageSync 事件的统一处理和方法提供,因为是多租户的所以所有的存储都要加租户id
├    ├    ├── theme # 主题颜色数据的统一处理
├    ├── components # 页面UI组件
├    ├    ├── checkbox # 复选框
├    ├    ├── count-down # 倒计时
├    ├    ├── empty-data #  空数据
├    ├    ├── header # 顶部导航栏
├    ├    ├── main # 主体内容
├    ├    ├── mp-html # 富文本
├    ├    ├── pd-container # 容器
├    ├    ├── popover # 点击文字弹出框提示
├    ├    ├── rade #  评分组件
├    ├    ├── radio # 单选框
├    ├    ├── radio-group # 单选框组
├    ├    ├── skeleton # 骨架屏
├    ├    ├── stepper # 数字输入框
├    ├    ├── tabbar # 自定义底部导航栏
├    ├── public # 第三方库
├    ├    ├── APPUpdate # App端版本检查升级
├    ├    ├── colorui # ui样式库
├    ├    ├── open-im-sdk # IM客服
├    ├    ├── tki-qrcode # 二维码
├    ├    ├── video-player # 视频播放
├    ├    ├── wxa-plugin-canvas # 海报生成
├    ├── index.ts # 引入的入口文件
├── locale -- 国际化配置文件
├── package-live -- 直播功能模块存放的目录(v1.0.5+)
├── pages -- 业务页面文件存放的目录
├    ├── appraises -- 商品评价
├    ├── article -- 文章
├    ├── bargain -- 砍价
├    ├── base -- 搜索
├    ├── coupon -- 优惠券
├    ├── customer-service -- 客服聊天
├    ├── distribution -- 分销相关
├    ├── goods -- 商品
├    ├── groupon -- 拼团列表
├    ├── home -- 首页
├    ├── launch -- 开屏页面
├    ├── live -- 微信小程序直播(仅微信小程序使用)
├    ├── login -- 登录
├    ├── message -- 消息列表
├    ├── order -- 订单
├    ├── page-devise -- 自定义装修页面
├    ├── pay -- 支付页面(订单支付、余额充值、付费会员)
├    ├── public -- 公共页面(查看协议详情、查看http连接)
├    ├── seckill -- 秒杀
├    ├── shop -- 店铺相关
├    ├── shopping-cart -- 购物车
├    ├── signrecord -- 签到
├    ├── user -- 个人信息相关
├    ├── user-balance -- 余额(钱包)
├    └── user-vip -- 付费会员
├── static -- 图片资源文件
├── utils -- 常用工具方法js
├    ├── api.js -- 接口地址及接口调用
├    ├── baseImgSrc.js -- base64转图片
├    ├── date-util.js -- 时间工具
├    ├── ican-H5Api.js -- 所有只在H5运行的方法都可在此js定义
├    ├── jim-util.js -- OpenIM方法封装
├    ├── jweixin.js -- 微信公众号h5支持方法封装
├    ├── number-util.js -- 数字计算或格式转换
├    ├── order-util.js -- 订单计算操作集合工具
├    ├── theme.js -- 装修主题数据获取和设置
├    ├── util.js -- 一般常用方法
├    └── validate.js -- 校验数据
├── androidPrivacy.json -- 安卓打包App时上架应用市场的隐私协议弹框内容设置
├── app.css -- 项目自定义css
├── App.vue -- 项目入口:包括App自定义数据,更新,页面初始化,登录触发,全局样式初始化,IM、购物车数量刷新等。
├── main.js -- 项目入口:全局组件引入
├── manifest.json -- UniApp配置文件
├── package.json -- npm安装的第三方库
├── pages.json -- UniApp页面设置和路由等
└── vite.config.js -- vite项目配置文件(h5的本地开发访问接口可在此设置)

uniapp商城用户PC端结构

joolun-plus-uniapp-pc  -- 主目录
├── components -- 自定义组件
├    ├── chat-message -- 自定义的聊天消息类型
├    ├── coupon -- 优惠券相关
├    ├    ├── coupon-info -- 优惠券详情
├    ├    ├── coupon-receive -- 店铺优惠券弹框
├    ├    ├── coupon-user-info -- 个人优惠券
├    ├── goods -- 商品相关
├    ├    ├── goods-card -- 商品卡片展示类型
├    ├    ├── goods-row -- 商品列表展示类型
├    ├    ├── goods-sku -- 商品规格选择
├    ├── graph-code -- 验证码图片
├    ├── order -- 订单相关
├    ├    ├── address -- 收货地址选择
├    ├    ├── bill -- 发票选择
├    ├    ├── order-operate -- 订单操作按钮(付款,取消等操作)
├    ├── page-devise -- 用来存放装修页面组件的目录
├    ├    ├── components -- 单个装修组件
├    ├    ├── view -- 装修页面组件(普通页面和店铺页面装修组件是不相同的,所以这里区分)
├    ├── scan-pay-code -- 微信支付二维码弹框
├    ├── share-component -- 分享组件弹框显示: 分享海报生成
├    ├── shop -- 店铺详情
├    ├    ├── shop-info -- 店铺详情
├    ├    ├── shop-store-info -- 店铺门店详情
├    ├    ├── shop-store-select -- 店铺门店选择
├── config -- 小程序配置文件
├── libs -- 基础组件库,不与接口业务数据等关联(该目录非必要不建议修改)
├    ├── common # 公共方法事件的统一处理
├    ├    ├── mixins # 全局组件的公用方法,只要是vue文件就可以调用这个里面的所有方法和属性
├    ├    ├── page # 页面常用的一些方法
├    ├    ├── router-h5 # h5端路由处理
├    ├    ├── storage # uni.StorageSync 事件的统一处理和方法提供,因为是多租户的所以所有的存储都要加租户id
├    ├    ├── theme # 主题颜色数据的统一处理
├    ├── components # 页面UI组件
├    ├    ├── checkbox # 复选框
├    ├    ├── count-down # 倒计时
├    ├    ├── empty-data #  空数据
├    ├    ├── header # 顶部导航栏
├    ├    ├── main # 主体内容
├    ├    ├── mp-html # 富文本
├    ├    ├── pd-container # 容器
├    ├    ├── popover # 点击文字弹出框提示
├    ├    ├── rade #  评分组件
├    ├    ├── radio # 单选框
├    ├    ├── radio-group # 单选框组
├    ├    ├── skeleton # 骨架屏
├    ├    ├── stepper # 数字输入框
├    ├    ├── tabbar # 自定义底部导航栏
├    ├── public # 第三方库
├    ├    ├── APPUpdate # App端版本检查升级
├    ├    ├── colorui # ui样式库
├    ├    ├── open-im-sdk # IM客服
├    ├    ├── tki-qrcode # 二维码
├    ├    ├── video-player # 视频播放
├    ├    ├── wxa-plugin-canvas # 海报生成
├    ├── index.ts # 引入的入口文件
├── locale -- 国际化配置文件
├── pages -- 业务页面文件存放的目录
├    ├── appraises -- 商品评价
├    ├── article -- 文章
├    ├── bargain -- 砍价
├    ├── base -- 搜索
├    ├── coupon -- 优惠券
├    ├── customer-service -- 客服聊天
├    ├── distribution -- 分销相关
├    ├── goods -- 商品
├    ├── groupon -- 拼团列表
├    ├── home -- 首页
├    ├── login -- 登录
├    ├── message -- 消息列表
├    ├── order -- 订单
├    ├── page-devise -- 自定义装修页面
├    ├── pay -- 支付页面(订单支付、余额充值、付费会员)
├    ├── public -- 公共页面(查看协议详情、查看http连接)
├    ├── seckill -- 秒杀
├    ├── shop -- 店铺相关
├    ├── shopping-cart -- 购物车
├    ├── signrecord -- 签到
├    ├── user -- 个人信息相关
├    ├── user-balance -- 余额(钱包)
├    └── user-vip -- 付费会员
├── router -- 路由文件
├── static -- 静态资源文件
├── store -- pinia
├── utils -- 常用工具方法js
├    ├── api.js -- 接口地址及接口调用
├    ├── baseImgSrc.js -- base64转图片
├    ├── date-util.js -- 时间工具
├    ├── ican-H5Api.js -- 所有只在H5运行的方法都可在此js定义
├    ├── jim-util.js -- OpenIM方法封装
├    ├── jweixin.js -- 微信公众号h5支持方法封装
├    ├── number-util.js -- 数字计算或格式转换
├    ├── order-util.js -- 订单计算操作集合工具
├    ├── theme.js -- 装修主题数据获取和设置
├    ├── util.js -- 一般常用方法
├    └── validate.js -- 校验数据
├── app.css -- 项目自定义css
├── App.vue -- 项目入口:包括App自定义数据,更新,全局样式设置,IM,购物车数量等。
├── main.js -- 项目入口:全局组件引入,路由跳转等。
├── manifest.json -- UniApp配置文件
├── package.json -- npm安装的第三方库
├── pages.json -- UniApp页面设置和路由等
└── vite.config.js -- vite项目配置文件(h5的本地开发访问接口可在此设置)

uniapp商户端app结构

joolun-plus-app  -- 主目录
├── api -- 后端交互的接口(跟后端的调用方式类似,可直接复制web后端相应文件稍作修改后进行使用)
├    ├── mall -- 所有商城接口
├    ├── upms -- 用户信息接口
├    └── api.js -- 所有接口具体调用的地方
├── components -- 自定义组件
├    ├── basic-components -- 非业务组件 
├    		├── privacy-policy -- 展示用户协议和隐私政策弹框组件 
├    		└──float-btn -- 右下角浮动按钮组件,滑动页面时会隐藏
├    ├── chat-message -- 自定义的聊天消息类型(与用户端相同)
├    ├── graph-code -- 验证码图片弹框显示和输入组件(与用户端相同)
├    ├── lang-change -- 国际化切换组件(与用户端相同)
├    ├── mescroll-uni -- 第三方下拉刷新
├    ├── notice -- 本地通知栏的调用显示组件
├    ├── shop-store-info -- 门店信息展示组件
├    ├── shopinfo -- 店铺信息展示组件
├    └── watch-login -- 登录的输入组件
├── config -- app配置文件
├── locale -- 国际化
├── package-live -- 直播功能模块存放的目录(v1.0.5+)
├── pages -- 小程序页面(目录结构跟后端类似)
├    ├── home -- 主页
├    ├── login -- 登录
├    ├── mall -- 商城
├    ├── message -- 消息聊天
├    ├── public -- 公共组件
├    		├── agreement -- 协议详情展示页面(如用户协议内容获取)
├    		└──webview -- 可打开http地址的页面
├    └── user -- 个人信息
├── public -- 第三方资源的JS_SDK
├    ├── app-plus -- App权限统一申请库, 比如: 在使用相机时需要请求相机权限
├    ├── APPUpdate -- App自动更新
├    ├── colorui -- UI库(顶部导航组件也在这个目录)
├    └── open-im-sdk -- OpenIM (v2版本)的js库
├── static -- 静态资源文件
├── store -- 目前用于存储本地数据工具方法,如个人信息,个人设置,日志等。
├── utils -- IM连接和常用工具方法
├── App.vue -- 项目入口:包括App自定义数据,更新,全局样式设置,IM,自动登录等。
├── main.js -- 项目入口:全局组件引入等。
├── manifest.json -- UniApp配置文件
├── package.json -- npm安装的第三方库(只有: crypto-js 和 moment)
├── pages.json -- UniApp页面设置
└── vite.config.js -- vite项目的配置文件