Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f65f0213e6 | ||
|
|
2f6d8106a0 | ||
|
|
f8ba25e7d5 | ||
|
|
129fa20810 | ||
|
|
945ca2d3d0 | ||
|
|
ee0886b800 | ||
|
|
5abbf5bc18 | ||
|
|
67f44e9c35 | ||
|
|
25409f26ce | ||
|
|
fe9e1916fa | ||
|
|
09946536aa | ||
|
|
ebd4619d65 | ||
|
|
6d3b50cebc | ||
|
|
a2db220f19 | ||
|
|
40c05afb3e | ||
|
|
0f02cb7eba | ||
|
|
d5439323db | ||
|
|
d8fc82d2e4 | ||
|
|
7366ab1200 | ||
|
|
a14566122b | ||
|
|
e8563e4fda | ||
|
|
e87b823d31 | ||
|
|
4b0afb3951 | ||
|
|
0cd7ebe202 | ||
|
|
6b131e07ab | ||
|
|
d83d6d66fd |
118
README.md
@@ -1,25 +1,125 @@
|
|||||||
# 单商户积分商城
|
# 单商户积分商城
|
||||||
|
|
||||||
管理后台前端 + CRMEB 后端 API 合并仓库。
|
管理后台前端、用户端 H5(uni-app)与 CRMEB Java 后端合并仓库。项目由 **4 个子项目** 组成,对应 **2 个 jar 包** 与 **2 个前端**。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 项目架构概览
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph frontends [前端]
|
||||||
|
AdminVue[backend-adminend / frontend]
|
||||||
|
UserH5[single_uniapp22miao]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph backends [后端 JAR]
|
||||||
|
AdminJar[miao-admin-2.2.jar]
|
||||||
|
FrontJar[miao-front-2.2.jar]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph sources [源码子项目]
|
||||||
|
crmebAdmin[crmeb-admin]
|
||||||
|
crmebFront[crmeb-front]
|
||||||
|
end
|
||||||
|
|
||||||
|
AdminVue --> AdminJar
|
||||||
|
UserH5 --> FrontJar
|
||||||
|
crmebAdmin --> AdminJar
|
||||||
|
crmebFront --> FrontJar
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2 个 jar 包 ↔ 2 个前端
|
||||||
|
|
||||||
|
| jar 包 | 对应前端 | 说明 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| **miao-admin-2.2.jar** | `backend-adminend`(部分分支为 `frontend`) | 管理后台 API + 后台静态站点 |
|
||||||
|
| **miao-front-2.2.jar** | `single_uniapp22miao` | 积分商城、用户端 H5 / uni-app |
|
||||||
|
|
||||||
|
### 4 个子项目(可单独打包部署)
|
||||||
|
|
||||||
|
| 子项目 | 产出 | 说明 |
|
||||||
|
|--------|------|------|
|
||||||
|
| **crmeb-admin** | `miao-admin-2.2.jar` | 管理后台后端 |
|
||||||
|
| **crmeb-front** | `miao-front-2.2.jar` | 用户端 API |
|
||||||
|
| **backend-adminend**(或 `frontend`) | `dist/` | 管理后台 Vue 静态 |
|
||||||
|
| **single_uniapp22miao** | `unpackage/dist/build/h5` | 用户端 H5 静态 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 目录结构
|
## 目录结构
|
||||||
|
|
||||||
|
### 根目录
|
||||||
|
|
||||||
|
| 目录/文件 | 说明 |
|
||||||
|
|-----------|------|
|
||||||
|
| **backend/** | Java 后端(Maven 多模块) |
|
||||||
|
| **backend-adminend/** | 管理后台 Vue 前端(部分分支为 `frontend`) |
|
||||||
|
| **single_uniapp22miao/** | 用户端 uni-app 前端(积分商城 H5) |
|
||||||
|
| **backend/deploy.conf** | 多环境部署配置 |
|
||||||
|
| **backend/DEPLOY.md** | 打包与部署详细说明 |
|
||||||
|
|
||||||
|
### backend 子模块
|
||||||
|
|
||||||
|
| 子模块 | 产出 | 说明 |
|
||||||
|
|--------|------|------|
|
||||||
|
| **crmeb-admin** | `miao-admin-2.2.jar` | 管理后台后端 |
|
||||||
|
| **crmeb-front** | `miao-front-2.2.jar` | 用户端 API |
|
||||||
|
| **crmeb-service** | 依赖库 | 业务逻辑、Mapper |
|
||||||
|
| **crmeb-common** | 依赖库 | 公共组件 |
|
||||||
|
|
||||||
|
### single_uniapp22miao 主要目录
|
||||||
|
|
||||||
| 目录 | 说明 |
|
| 目录 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| **frontend/** | 管理后台 Vue 前端(原 single_admin22miao) |
|
| **api/** | 后台 API 调用 |
|
||||||
| **backend/** | CRMEB Java Spring Boot 后端(原 crmeb_22miao) |
|
| **components/** | 公共组件 |
|
||||||
|
| **config/** | 请求地址等配置 |
|
||||||
|
| **pages/** | 页面(含 integral 积分模块等) |
|
||||||
|
| **static/** | 静态资源 |
|
||||||
|
|
||||||
## 前端
|
### backend-adminend 主要目录
|
||||||
|
|
||||||
|
| 目录 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| **src/** | Vue 源码 |
|
||||||
|
| **public/** | 静态资源 |
|
||||||
|
| **build/** | 构建脚本 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 开发与构建
|
||||||
|
|
||||||
|
### 管理后台前端
|
||||||
|
|
||||||
- 技术栈:Vue + Vue CLI
|
- 技术栈:Vue + Vue CLI
|
||||||
- 开发:`cd frontend && npm install && npm run serve`
|
- 开发:`cd backend-adminend && npm install && npm run serve`(若仓库中为 `frontend` 目录则替换)
|
||||||
- 构建:`npm run build`
|
- 构建:`npm run build:prod`(Node 17+ 可设 `export NODE_OPTIONS="--openssl-legacy-provider"`)
|
||||||
|
- 产出:`backend-adminend/dist/`(或 `frontend/dist/`)
|
||||||
|
|
||||||
## 后端
|
### 用户端 H5 前端
|
||||||
|
|
||||||
|
- 技术栈:uni-app、Vue 2
|
||||||
|
- 开发:`cd single_uniapp22miao && npm install && npm run dev:h5`
|
||||||
|
- 构建:`npm run build:h5`
|
||||||
|
- 产出:`single_uniapp22miao/unpackage/dist/build/h5/`
|
||||||
|
|
||||||
|
### 后端
|
||||||
|
|
||||||
- 技术栈:Spring Boot 2.2.6、Maven、MyBatis Plus
|
- 技术栈:Spring Boot 2.2.6、Maven、MyBatis Plus
|
||||||
- 开发:`cd backend && mvn spring-boot:run -pl crmeb-admin`
|
- 管理后台 API:`cd backend && mvn spring-boot:run -pl crmeb-admin`
|
||||||
- 打包:`mvn clean package -pl crmeb-admin -am -DskipTests`
|
- 用户端 API:`cd backend && mvn spring-boot:run -pl crmeb-front`
|
||||||
|
- 打包、多模块命令与环境说明见 **[backend/DEPLOY.md](backend/DEPLOY.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 多环境与部署(简要)
|
||||||
|
|
||||||
|
- 环境配置:**[backend/deploy.conf](backend/deploy.conf)**(by80、miao33、miao50、shjjy153、shccd159 等)
|
||||||
|
- 部署脚本:`backend/shell/deploy-admin-*.sh`、`deploy-front-*.sh`
|
||||||
|
- 详细步骤与变量说明:**[backend/DEPLOY.md](backend/DEPLOY.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Gitea
|
## Gitea
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,12 @@ ENV = 'development'
|
|||||||
# VUE_APP_BASE_API = 'http://jfadmin.wenjinhui.com'
|
# VUE_APP_BASE_API = 'http://jfadmin.wenjinhui.com'
|
||||||
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'
|
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'
|
||||||
|
|
||||||
|
# hapr191 项目(淮安鹏然商贸)
|
||||||
|
# VUE_APP_BASE_API = 'http://jf.hapengran.com'
|
||||||
|
|
||||||
|
# shccd159 项目
|
||||||
|
# VUE_APP_BASE_API = 'http://ccd-jfadmin.cichude.com'
|
||||||
|
|
||||||
|
|
||||||
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
|
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
|
||||||
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
|
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
|
||||||
@@ -6,7 +6,14 @@ ENV = 'production'
|
|||||||
# VUE_APP_BASE_API = 'http://127.0.0.1:8080'
|
# VUE_APP_BASE_API = 'http://127.0.0.1:8080'
|
||||||
# VUE_APP_BASE_API = 'https://jf.suzhouyuqi.com'
|
# VUE_APP_BASE_API = 'https://jf.suzhouyuqi.com'
|
||||||
# miao33 项目
|
# miao33 项目
|
||||||
VUE_APP_BASE_API = 'http://jfadmin.xiashengjun.com'
|
# VUE_APP_BASE_API = 'http://jfadmin.xiashengjun.com'
|
||||||
|
|
||||||
|
# hapr191 项目(淮安鹏然商贸)
|
||||||
|
VUE_APP_BASE_API = 'http://jfadmin.hapengran.com'
|
||||||
|
|
||||||
|
# shccd159 项目
|
||||||
|
# VUE_APP_BASE_API = 'http://ccd-jfadmin.cichude.com'
|
||||||
|
|
||||||
|
|
||||||
# VUE_APP_BASE_API = 'http://jfanyueadmin.szxingming.com'
|
# VUE_APP_BASE_API = 'http://jfanyueadmin.szxingming.com'
|
||||||
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'
|
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 329 B |
|
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 331 B |
|
Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 342 B |
|
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
|
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 336 B |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 338 B |
|
Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 343 B |
|
Before Width: | Height: | Size: 321 B After Width: | Height: | Size: 321 B |
|
Before Width: | Height: | Size: 323 B After Width: | Height: | Size: 323 B |
|
Before Width: | Height: | Size: 344 B After Width: | Height: | Size: 344 B |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 338 B |
|
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 337 B |
|
Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 350 B |
|
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 336 B |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 53 B After Width: | Height: | Size: 53 B |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B |
|
Before Width: | Height: | Size: 43 B After Width: | Height: | Size: 43 B |
23
backend-adminend/src/api/integral.js
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
|
import request from '@/utils/request';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 积分记录分页列表
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
export function integralListApi(data) {
|
||||||
|
return request({
|
||||||
|
url: '/admin/user/integral/list',
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
41
backend-adminend/src/api/integralExternal.js
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
* 积分外部页面 API(免认证)
|
||||||
|
* 使用 requestNoAuth 实例,不注入 token,不拦截 401。
|
||||||
|
* 对应后端:ExternalIntegralController → api/external/integral/*
|
||||||
|
*/
|
||||||
|
import requestNoAuth from '@/utils/requestNoAuth';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 积分订单列表
|
||||||
|
*/
|
||||||
|
export function getExternalOrderList(params) {
|
||||||
|
return requestNoAuth({
|
||||||
|
url: 'external/integral/order/list',
|
||||||
|
method: 'get',
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户积分列表(含 eb_user 积分字段)
|
||||||
|
*/
|
||||||
|
export function getExternalUserList(params) {
|
||||||
|
return requestNoAuth({
|
||||||
|
url: 'external/integral/user/list',
|
||||||
|
method: 'get',
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户积分明细分页列表(page/limit 走 query,与 /admin/user/integral/list 一致)
|
||||||
|
*/
|
||||||
|
export function getExternalIntegralLog(data) {
|
||||||
|
const { page, limit, ...body } = data;
|
||||||
|
return requestNoAuth({
|
||||||
|
url: 'external/integral/log/list',
|
||||||
|
method: 'post',
|
||||||
|
params: { page, limit },
|
||||||
|
data: body,
|
||||||
|
});
|
||||||
|
}
|
||||||