【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
项目背景
本项目经费43000元,需求文档如下,工期25天,目前已经过了8天,时间不多了,我们需要在2月27日之前完成,此前这里日期写错了,写的是17号。
技术栈要求
前端vue.js
前端客户端框架 uniapp-x
服务端 java
后台管理 java+vue
java框架选择:若依框架
数据库:mysql 版本要求5.7+ 推荐版本:8.0
JDK版本 1.8+
node版本 12+
卓伊凡的环境为jdk17,node18,mysql8.0
项目实战:
若依二次开发筹备
菜单列的开发部分 在系统管理这部分

对已经设计的数据库结构,进行转换
以下是我们在第二篇幅设计的数据库
数据库表设计
- 用户表 (users)
-
user_id(INT, PRIMARY KEY, AUTO_INCREMENT)username(VARCHAR, UNIQUE)password(VARCHAR)email(VARCHAR, UNIQUE)created_at(TIMESTAMP)
- 积分表 (points)
-
point_id(INT, PRIMARY KEY, AUTO_INCREMENT)user_id(INT, FOREIGN KEY -> users.user_id)current_points(INT)last_updated(TIMESTAMP)
- 积分来源与消耗记录表 (points_history)
-
history_id(INT, PRIMARY KEY, AUTO_INCREMENT)user_id(INT, FOREIGN KEY -> users.user_id)change_type(ENUM(‘source’, ‘consume’))source_type(VARCHAR, NULL)consume_type(VARCHAR, NULL)points_changed(INT)timestamp(TIMESTAMP)notes(VARCHAR, NULL)
- 转账记录表 (transfers)
-
transfer_id(INT, PRIMARY KEY, AUTO_INCREMENT)sender_id(INT, FOREIGN KEY -> users.user_id)receiver_id(INT, FOREIGN KEY -> users.user_id)transfer_points(INT)transfer_notes(VARCHAR)transfer_timestamp(TIMESTAMP)status(ENUM(‘pending’, ‘confirmed’, ‘failed’))
- 分佣渠道包表 (channels)
-
channel_id(INT, PRIMARY KEY, AUTO_INCREMENT)channel_name(VARCHAR)commission_rate(DECIMAL(5, 2))created_at(TIMESTAMP)
- 抽佣记录表 (commission)
-
commission_id(INT, PRIMARY KEY, AUTO_INCREMENT)channel_id(INT, FOREIGN KEY -> channels.channel_id)user_id(INT, FOREIGN KEY -> users.user_id)amount(DECIMAL(10, 2))commission_type(ENUM(‘platform’, ‘user’))status(ENUM(‘pending’, ‘completed’))timestamp(TIMESTAMP)
- 线下积分同步记录表 (offline_sync)
-
sync_id(INT, PRIMARY KEY, AUTO_INCREMENT)user_id(INT, FOREIGN KEY -> users.user_id)sync_points(INT)sync_timestamp(TIMESTAMP)status(ENUM(‘pending’, ‘completed’))
- 积分充值记录表 (recharge)
-
recharge_id(INT, PRIMARY KEY, AUTO_INCREMENT)user_id(INT, FOREIGN KEY -> users.user_id)amount(DECIMAL(10, 2))recharge_timestamp(TIMESTAMP)status(ENUM(‘pending’, ‘completed’))
- 积分提取记录表 (withdrawals)
-
withdrawal_id(INT, PRIMARY KEY, AUTO_INCREMENT)user_id(INT, FOREIGN KEY -> users.user_id)amount(DECIMAL(10, 2))withdrawal_timestamp(TIMESTAMP)status(ENUM(‘pending’, ‘completed’))
ok 我们做成为可用的数据库表sql创建表sql语句:
-- 用户表
CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255) UNIQUE,password VARCHAR(255),email VARCHAR(255) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 积分表
CREATE TABLE points (point_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT,current_points INT,last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (user_id) REFERENCES users(user_id)
);-- 积分来源与消耗记录表
CREATE TABLE points_history (history_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT,change_type ENUM('source', 'consume'),source_type VARCHAR(255),consume_type VARCHAR(255),points_changed INT,timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,notes VARCHAR(255),FOREIGN KEY (user_id) REFERENCES users(user_id)
);-- 转账记录表
CREATE TABLE transfers (transfer_id INT AUTO_INCREMENT PRIMARY KEY,sender_id INT,receiver_id INT,transfer_points INT,transfer_notes VARCHAR(255),transfer_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,status ENUM('pending', 'confirmed', 'failed'),FOREIGN KEY (sender_id) REFERENCES users(user_id),FOREIGN KEY (receiver_id) REFERENCES users(user_id)
);-- 分佣渠道包表
CREATE TABLE channels (channel_id INT AUTO_INCREMENT PRIMARY KEY,channel_name VARCHAR(255),commission_rate DECIMAL(5, 2),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 抽佣记录表
CREATE TABLE commission (commission_id INT AUTO_INCREMENT PRIMARY KEY,channel_id INT,user_id INT,amount DECIMAL(10, 2),commission_type ENUM('platform', 'user'),status ENUM('pending', 'completed'),timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (channel_id) REFERENCES channels(channel_id),FOREIGN KEY (user_id) REFERENCES users(user_id)
);-- 线下积分同步记录表
CREATE TABLE offline_sync (sync_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT,sync_points INT,sync_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,status ENUM('pending', 'completed'),FOREIGN KEY (user_id) REFERENCES users(user_id)
);-- 积分充值记录表
CREATE TABLE recharge (recharge_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT,amount DECIMAL(10, 2),recharge_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,status ENUM('pending', 'completed'),FOREIGN KEY (user_id) REFERENCES users(user_id)
);-- 积分提取记录表
CREATE TABLE withdrawals (withdrawal_id INT AUTO_INCREMENT PRIMARY KEY,user_id INT,amount DECIMAL(10, 2),withdrawal_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,status ENUM('pending', 'completed'),FOREIGN KEY (user_id) REFERENCES users(user_id)
);

在系统工具-代码生成-创建这里
对于数据库的详细设计内容还需要在下篇来分析逻辑。
设计菜单列
首先我们再来看看整理好的后台需求大纲文档
后端管理端功能需求
4.1 用户积分管理
- 查看所有用户的积分信息
- 搜索特定用户
- 积分管理功能
4.2 积分来源管理
- 来源类型
- 积分分配规则
- 调整策略
4.3 积分消耗管理
- 跟踪并记录消耗
- 消耗类型
- 积分扣除规则
- 积分消费记录
4.4 线下积分同步功能
- 线下积分更新接口
- 定期同步
- 同步记录查看
4.5 积分审计与安全
- 日志记录
- 安全性
- 异常检测
6. 积分充值与提取功能(网站系统与线下机器交互)
6.1 功能概述
- 介绍积分充值和提取功能
6.2 积分充值功能
- 系统连接
- 充值流程
6.3 积分提取功能
- 系统连接
- 提取流程
6.4 积分充值相关 API 接口详细文档
- 接口设计原则
- 接口文档内容
我们了解了菜单列如何创建,根据目前的后台需求信息,创建的菜单列分析应该为:
菜单结构
- 用户管理
-
- 查看所有用户列表
- 搜索特定用户
- 积分管理
-
- 积分来源管理
-
-
- 来源类型配置
-
-
- 积分消耗管理
-
-
- 跟踪并记录消耗
- 消耗类型
- 积分消费记录
-
- 线下积分管理
-
- 线下积分同步
-
-
- 线下积分更新接口
- 同步记录查看
-
- 积分审计与安全
-
- 积分日志记录
- 积分充值与提取
* 积分充值记录* 积分提取记录
因此,我们创建用户管理,积分管理,线下积分管理,积分审计与安全,积分充值与提取五项菜单。

主菜单列创建完成,下一篇详细构建后台管理功能以及对应数据库关联关系。
相关文章:
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java若依vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战 项目背景 本项目经费43000元,需求文档如下,工期25天,目前已经过了8天,时间不多了&#x…...
机器学习:朴素贝叶斯分类器
贝叶斯决策论是概率框架下实施决策的基本方法,对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 贝叶斯定理是贝叶斯决策论的基础,描述了如何根据新的证据更新先验概率,贝叶斯定理&…...
FlutterWeb实战:02-加载体验优化
背景 默认情况下,Flutter 打包 web 以后,首次打开页面需要加载大量的资源,这就需要做首屏加载优化。 渲染引擎 通过分析,canvaskit 和 skwasm 需要加载较大的引擎包,很难优化,目前选择 3.22 版本,故选择 HTML Render 引擎 Flutter Web 计划在 2025 开始弃用 HTML Ren…...
DeepSeek 大模型每个版本的特点以及运用场景对比
deepseek 网页地址:DeepSeek | 深度求索 1. DeepSeek-V1 发布时间:2024年1月 参数规模:预训练数据量2TB,具体参数未明确公开,推测为数十亿级别 功能特点: 编码能力:支持多种编程语言(如Python、Java、C++),可生成高质量代码框架。 长上下文处理:支持128K上下文窗口,…...
【Langchain学习笔记(一)】Langchain介绍
Langchain介绍 Langchain介绍前言1、Langchain 是什么2、为什么要用 Langchain3、Langchain 的核心4、Langchain 的底层原理5、Langchain 的应用场景 Langchain介绍 前言 想象一下,如果你能让聊天机器人不仅仅回答通用问题,还能从你自己的数据库或文件…...
VSCode中出现“#include错误,请更新includePath“问题,解决方法
1、出现的问题 在编写C程序时,想引用头文件但是出现如下提示: (1)首先检查要引用的头文件是否存在,位于哪里。 (2)如果头文件存在,在编译时提醒VSCode终端中"#include错误&am…...
【HeadFirst系列之HeadFirstJava】第2天之类与对象-拜访对象村
前言 从今日起,陆续分享《HeadFirstJava》的读书笔记,希望能够帮助大家更好的理解Java,提高自己的基础编码能力。 Java是一门面向对象的高级编程语言,常年霸占编程语言排行榜前三。 Java是目前国内的主流开发语言,基本…...
机试题——D路通信
题目描述 现在老师给了他们一个D路通信。他们面对的通信链路有如下几个性质: 高斯噪声性:如果发出一段字符串作为消息,消息的开始前和结束后可能会出现随机高斯噪声。内容完整性:该过程不会丢失任何字符,字符顺序也不…...
sqlite 查看表结构
在SQLite中,查看表结构通常有以下几种方法: 使用.schema命令 在SQLite的命令行界面中,你可以使用.schema命令加上表名来查看该表的结构。例如,如果你想查看名为your_table_name的表结构,你可以这样做: .s…...
2025清华:DeepSeek从入门到精通.pdf(附下载)
本文是一份关于如何深入理解和使用DeepSeek技术的全面指南,由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后及其团队编撰。DeepSeek是一家中国科技公司,专注于通用人工智能(AGI)的研发,其开源推…...
力扣LeetCode: 80 删除有序数组中的重复项Ⅱ
题目: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件…...
MoMask:可将文本描述作为输入并生成相应的高质量人体运动动作
该图展示了 MoMask (一种最先进的人体运动生成模型)生成的运动示例。MoMask 使用文本到运动范式进行操作,其中它将文本描述作为输入并生成相应的高质量人体运动。这种方法确保生成的动作准确反映给定的文本条件,展示了 MoMask 生成…...
PAT甲级1043、 Is It a Binary Search Tree
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the nodes key.The right subtree of a node contains only nodes with keys greater…...
【Python】元组
个人主页:GUIQU. 归属专栏:Python 文章目录 1. 元组的本质与基础概念1.1 不可变序列的意义1.2 元组与数学概念的联系 2. 元组的创建方式详解2.1 标准创建形式2.2 单元素元组的特殊处理2.3 使用 tuple() 函数进行转换 3. 元组的基本操作深入剖析3.1 索引操…...
[RabbitMQ] RabbitMQ常见面试题
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
旋转位置编码(RoPE)讲解和代码实现
旋转位置编码(Rotary Position Embedding:RoPE)讲解和代码实现 1. 什么是位置编码? 在 Transformer 模型中,位置编码的作用是为模型提供序列中每个 token 的位置信息。因为 Transformer 本身没有像 RNN 那样的顺序结构,所以需要通过位置编码来告诉模型 token 的顺序。 …...
小红书自动化:如何利用Make批量生成爆款笔记
小红书自动化:如何利用Make制作个人自媒体中心,批量生成爆款笔记 引言 在如今信息爆炸的时代,如何高效地获取和分享优质内容,成为了每位自媒体工作者必须面对的挑战。你是否想过,如果能够将这项繁复的工作实现自动化…...
计算机组成原理 | (四)存储器
🌮🌮🌮宝子们好呀,今天继续更新我的学习笔记,教我计算机组成原理的老师是SDUCS的zrh老师,感谢z老师的教导,接下来我就放上我的手写笔记,供大家学习参考,适合大家预习和复…...
Maven 版本管理与 SNAPSHOT 详解
1. Maven 版本管理概述 在 Maven 项目中,版本号(Version)是用于区分不同软件版本的重要标识。Maven 提供了一套标准的版本管理机制,包括: 正式版本(Release Version)快照版本(SNAP…...
基于 GEE 利用 SDWI 指数进行逐月水域面积提取
目录 1 SDWI指数 2 完整代码 3 运行结果 微波遥感具有全天候、全天时工作能力,能穿透云层,不受气象条件和光照水平影响,因此近年来利用微波遥感提取水体信息也备受关注。本文分享使用 Sentinel-1遥感影像通过SDWI指数来进行逐月水域面积计…...
XMind 下载与使用教程:附百度网盘地址
一、引言 在信息爆炸的时代,如何高效地整理和管理知识成为了许多人面临的挑战。XMind 作为一款功能强大的思维导图软件,能够帮助我们清晰地梳理思路、整合信息,从而提升学习和工作效率。本文将详细介绍 XMind 的下载方法 二、XMind 的下载与…...
[EAI-034] 通过在线强化学习改进VLA模型
Paper Card 论文标题:Improving Vision-Language-Action Model with Online Reinforcement Learning 论文作者:Yanjiang Guo, Jianke Zhang, Xiaoyu Chen, Xiang Ji, Yen-Jen Wang, Yucheng Hu, Jianyu Chen 论文链接:https://arxiv.org/abs/…...
Python 和 JavaScript 中 Yield 的区别
Python 和 JavaScript 中 Yield 的区别 目录 Python 和 JavaScript 中 Yield 的区别PythonyieldJavaScriptyieldPythonyield fromJavaScriptyield* 推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战 Pythonyield 在 Python 中…...
每日学习 设计模式 五种不同的单例模式
狮子大佬原文 https://blog.csdn.net/weixin_40461281/article/details/135050977 第一种 饿汉式 为什么叫饿汉,指的是"饿" 也就是说对象实例在程序启动时就已经被创建好,不管你是否需要,它都会在类加载时立即实例化,也就是说 实例化是在类加载时候完成的,早早的吃…...
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之上传头像和新增收货地址
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🚀1.上传头像 -持久…...
SSM仓库物品管理系统 附带详细运行指导视频
文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.用户登录代码:2.保存物品信息代码:3.删除仓库信息代码: 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SSM框架开发的仓库…...
C++11新特性之unique_ptr智能指针
本节继续介绍智能指针,不了解的读者可以先阅读——C11新特性之shared_ptr智能指针-CSDN博客 1.介绍 unique_ptr是C11标准提供的另一种智能指针。与shared_ptr不同的是,unique_ptr指针指向的堆内存无法同其他unique_ptr共享,也就是每一片堆内…...
模型压缩 --学习记录2
模型压缩 --学习记录2 如何找到更好的权衡方式(模型量化)方法一:寻找更好的 range方法二:寻找更好的 X-fp32(浮点数)方法三:寻找更好的 scale 和 zp方法四:寻找更好的 roundPTQ 后训练量化(离线量化)QAT 量化感知训练(在线量化)量化为什么会带来加速?三、模型稀疏技…...
车载诊断工具技巧 --- CAPL Debug 功能使用介绍
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
Sinusoidal(正弦曲线)位置编码公式详细推导过程
Sinusoidal(正弦曲线)位置编码公式推导 参考链接 Transformer升级之路:1、Sinusoidal位置编码追根溯源 1. 前置数学的基本概念 1.1 内积 定义: 内积是两个向量之间的一种运算,其结果为一个标量。公式: 对于向量 a [ a 1 , …...
