系统采用Java SpringBoot+Vue.js的分离架构,包含五大核心功能模块:1)基于Spring Security的多层次账户安全体系;2)智能质押收益系统,通过定时任务自动计算收益;3)三级邀请返利机制,实现多层级分销;4)基于Redis的红包奖励系统;5)具有事务保障的资金管理体系。系统通过Docker容器化部署,并采用AES加密、API限流等安全措施,在保证金融安全性的同时提供了良好的用户体验。

系统架构概览
本系统采用前后端分离架构,后端基于Java SpringBoot框架,前端使用Vue.js配合H5技术实现跨平台兼容,数据库选用MySQL,移动端通过混合开发技术实现原生体验。
技术栈组成:
-
后端:Java SpringBoot + MyBatis + MySQL
-
前端:Vue.js + Node.js + H5
-
移动端:混合开发框架
-
部署:Docker容器化部署
核心功能模块技术实现
1. 用户账户与安全体系
系统采用多层次安全验证机制,确保用户资金安全:
java
// SpringSecurity配置示例
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/api/sign_in").permitAll()
.antMatchers("/api/deposit/**").authenticated()
.and()
.formLogin()
.loginPage("/sign_in")
.and()
.csrf().disable();
}
}
用户登录采用手机号+密码双因素验证,支持记住登录状态,会话管理通过Redis实现分布式存储。

2. 智能质押收益系统
系统核心的理财功能通过"金矿项目"实现,技术特点包括:
数据库设计:
sql
CREATE TABLE investment_projects (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
project_name VARCHAR(100) NOT NULL, -- 项目名称
cycle_days INT NOT NULL, -- 投资周期
daily_income DECIMAL(10,2), -- 日收益
total_income DECIMAL(10,2), -- 总收益
investment_amount DECIMAL(15,2), -- 投资金额
available_slots INT, -- 可用名额
status TINYINT DEFAULT 1, -- 项目状态
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
收益计算服务:
java
@Service
public class IncomeCalculationService {
@Scheduled(cron = "0 0 0 * * ?") // 每日凌晨执行
public void calculateDailyIncome() {
// 计算用户当日收益
List<Investment> activeInvestments = investmentMapper.selectActiveInvestments();
for (Investment investment : activeInvestments) {
BigDecimal dailyProfit = investment.getPrincipal()
.multiply(investment.getDailyRate());
// 更新用户余额
walletService.addBalance(investment.getUserId(), dailyProfit);
// 记录收益账单
billService.recordIncomeBill(investment.getUserId(), dailyProfit);
}
}
}
3. 多层级的邀请返利体系
系统实现了三级返利机制,技术实现要点:
关系链存储设计:
java
@Entity
@Table(name = "user_relation")
public class UserRelation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId; // 用户ID
private Long parentId; // 上级用户ID
private Integer level; // 关系层级
private BigDecimal rebateRate; // 返利比例
// getters and setters
}
返利计算逻辑:
java
@Service
public class RebateService {
public void distributeRebate(Long userId, BigDecimal amount) {
List<UserRelation> relations = relationMapper.findParentChain(userId);
for (UserRelation relation : relations) {
if (relation.getLevel() == 1) {
// 一级返利10%
BigDecimal rebate = amount.multiply(new BigDecimal("0.1"));
walletService.addBalance(relation.getParentId(), rebate);
} else if (relation.getLevel() == 2) {
// 二级返利2%
BigDecimal rebate = amount.multiply(new BigDecimal("0.02"));
walletService.addBalance(relation.getParentId(), rebate);
} else if (relation.getLevel() == 3) {
// 三级返利1%
BigDecimal rebate = amount.multiply(new BigDecimal("0.01"));
walletService.addBalance(relation.getParentId(), rebate);
}
}
}
}
4. 红包与奖励系统
系统通过定时任务和事件驱动机制实现红包发放:
java
@Component
public class RedPacketService {
@Autowired
private RedisTemplate redisTemplate;
public void sendRedPacket(Long userId, BigDecimal amount) {
String key = "red_packet:" + userId;
// 使用Redis保证并发安全
redisTemplate.opsForValue().set(key, amount, 24, TimeUnit.HOURS);
// 发送推送通知
pushNotificationService.send(userId, "您有新的红包可领取!");
}
@EventListener
public void handleUserAction(UserActionEvent event) {
if (event.getActionType().equals("FIRST_DEPOSIT")) {
// 首次充值赠送红包
sendRedPacket(event.getUserId(), new BigDecimal("1000"));
}
}
}
5. 资金管理与账单系统
完整的资金流水记录,确保财务透明:
账单实体设计:
java
@Entity
@Table(name = "balance_bills")
public class BalanceBill {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId;
private String billType; // 账单类型:充值、提现、收益、返利等
private BigDecimal amount;
private BigDecimal balanceAfter;
private String description;
private String orderNo;
@CreationTimestamp
private Timestamp createTime;
}
事务性资金操作:
java
@Service
@Transactional
public class WalletService {
public boolean withdraw(Long userId, BigDecimal amount) {
// 检查余额
BigDecimal balance = getBalance(userId);
if (balance.compareTo(amount) < 0) {
throw new InsufficientBalanceException("余额不足");
}
// 扣减余额
int rows = walletMapper.deductBalance(userId, amount);
if (rows == 0) {
throw new ConcurrentUpdateException("并发更新失败");
}
// 记录提现账单
billService.recordWithdrawBill(userId, amount);
return true;
}
}

前端技术特色
Vue.js状态管理
javascript
// Vuex状态管理
const store = new Vuex.Store({
state: {
userInfo: null,
balance: 0,
investments: []
},
mutations: {
SET_USER_INFO(state, userInfo) {
state.userInfo = userInfo
},
UPDATE_BALANCE(state, balance) {
state.balance = balance
}
},
actions: {
async loadUserData({ commit }) {
const response = await api.getUserInfo()
commit('SET_USER_INFO', response.data)
commit('UPDATE_BALANCE', response.data.balance)
}
}
})
响应式H5布局
采用Flexible.js + REM布局方案,确保在不同设备上的完美显示效果。
安全与性能优化
-
数据加密:敏感数据使用AES加密存储
-
SQL防护:MyBatis参数化查询防止注入
-
API限流:Guava RateLimiter控制接口访问频率
-
缓存策略:Redis缓存热点数据
-
数据库优化:分库分表 + 读写分离


