### 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项目的配置文件