H1d3rOne
|
7e3f534ef4
|
feat: 塔罗牌添加AI解读功能
- 后端添加HunYuanAiService调用生成AI解读
- 添加DeductRecord保存测算记录
- 前端传递userId参数
|
2026-03-10 20:46:03 +08:00 |
|
H1d3rOne
|
e7df1479ab
|
feat: 塔罗牌测算添加AI解读
- 添加generateAiAnalysis方法生成AI解读内容
- 包含牌面分析、综合解读和建议
- 支持单张、三张、凯尔特十字牌阵
|
2026-03-10 20:38:08 +08:00 |
|
H1d3rOne
|
cd2a47e00b
|
feat: 塔罗牌测算添加AI解读功能
- 引入HunYuanAiService调用AI服务
- 添加buildAiPrompt方法构建AI提示词
- 返回结果中添加aiAnalysis字段
|
2026-03-10 20:29:21 +08:00 |
|
H1d3rOne
|
5b885652ac
|
feat: 测算失败标题改为红色
|
2026-03-10 20:20:30 +08:00 |
|
H1d3rOne
|
6061d54365
|
feat: 修改金币提示样式
- 移除金币emoji图标
- '金币-1'和'金币-0'显示为金色粗体
- 成功时标题为绿色,失败时标题为白色
|
2026-03-10 20:10:29 +08:00 |
|
H1d3rOne
|
c8879fc04e
|
feat: 创建自定义金币toast组件
- 添加coin-toast组件,- bazi.vue使用自定义toast
- 金币图标金色,数字金色加粗
|
2026-03-10 19:59:59 +08:00 |
|
H1d3rOne
|
064606fd0f
|
feat: 使用金币emoji图标显示金币变化
- 测算成功:显示'测算成功 🪙-1'
- 测算失败:显示'测算失败 🪙-0'
- 使用emoji替代文字'金币'
|
2026-03-10 19:50:04 +08:00 |
|
H1d3rOne
|
bd00bd1443
|
feat: 测算成功/失败时显示金币变化提示
- 测算成功:显示'测算成功,金币-1'
- 测算失败:显示'测算失败,金币-0'
- 修改所有测算模块:八字、紫微、占星、塔罗、奇门、六爻、梅花、大六壬
|
2026-03-10 18:29:56 +08:00 |
|
H1d3rOne
|
e36195279a
|
fix: 老用户登录时不更新用户名和头像
- loginOrRegister方法:老用户直接返回,不更新用户名和头像
- 只有新用户才使用微信传入的用户名和头像
- 保证用户修改后的信息不会被覆盖
|
2026-03-10 17:52:31 +08:00 |
|
H1d3rOne
|
25036a7761
|
fix: 退出登录时保留deviceId
- logout时先保存deviceId,清除缓存后恢复
- 确保同一设备退出登录后再次登录不会创建新用户
|
2026-03-10 17:29:25 +08:00 |
|
H1d3rOne
|
6574279fce
|
fix: 添加deviceId作为登录备选方案
- 后端:微信API失败时使用deviceId作为openId
- 前端:生成并缓存唯一deviceId
- 确保同一设备登录时用户身份一致
|
2026-03-10 17:00:00 +08:00 |
|
H1d3rOne
|
7b6df6426c
|
fix: 改进登录流程的错误处理和日志
- 添加详细的登录日志输出
- 获取openId失败时返回错误而非创建guest用户
- 避免重复创建用户账号
|
2026-03-10 16:39:18 +08:00 |
|
H1d3rOne
|
f3b084a72f
|
refactor: 始终上传头像到服务器
- 前端始终上传头像到服务器,不再判断是否为临时路径
- 后端移除downloadAvatar方法
- 数据库avatar_url始终存储服务器路径
|
2026-03-10 07:34:00 +08:00 |
|
H1d3rOne
|
8249514262
|
fix: 修复微信头像上传到服务器功能
- auth-modal.vue: 登录前先上传微信临时头像到服务器
- uploadAvatar接口支持临时上传(temp参数)
- 数据库avatar_url存储服务器路径而非临时路径
|
2026-03-10 07:25:24 +08:00 |
|
H1d3rOne
|
2667098632
|
refactor: 统一变量名为username
- login方法中将nickname变量改名为username
- 保持前端传入参数名不变(nickname)
- 后端统一使用username变量名
|
2026-03-10 07:20:38 +08:00 |
|
H1d3rOne
|
096c3e544c
|
refactor: 删除nickname字段,统一使用username
- UserInfo实体类删除nickname字段
- UserInfoService.loginOrRegister使用username
- UserController删除nickname相关代码
- 前端所有页面统一使用username
- auth-modal.vue登录时使用username
|
2026-03-10 07:08:03 +08:00 |
|
H1d3rOne
|
41a959f298
|
fix: 修复头像和昵称同步更新问题
- mine.vue: 上传头像后正确处理URL
- account.vue: 加载用户信息时同步更新本地存储
- 确保我的页面和账号页面信息实时同步
|
2026-03-10 06:41:27 +08:00 |
|
H1d3rOne
|
492b337ddd
|
feat: 头像文件存储到服务器
- 登录时自动下载微信头像到服务器
- 手动上传头像保存到服务器
- 数据库存储服务器上的头像路径
- 添加downloadAvatar方法处理头像下载
|
2026-03-10 06:34:28 +08:00 |
|
H1d3rOne
|
467895a9c0
|
fix: 修复金币操作时coins为null的问题
- consumeCoins方法处理coins为null的情况
- addCoins方法处理coins为null的情况
- deductCoins方法处理coins为null的情况
|
2026-03-10 06:02:34 +08:00 |
|
H1d3rOne
|
04882156c4
|
fix: 修改按钮放在头像内部,修复账号信息同步
- 修改按钮放在头像内部正下方,更小
- 修改用户名时同步更新nickname字段
- account.vue加载时处理头像URL
|
2026-03-10 05:47:32 +08:00 |
|
H1d3rOne
|
1a48452ccd
|
feat: 添加头像下方修改按钮和头像上传功能
- mine.vue: 头像下方添加灰色修改按钮
- api.js: 添加getBaseUrl方法
- UserController.java: 添加uploadAvatar接口
- WebConfig.java: 配置静态文件服务
- 支持修改用户名和上传头像
|
2026-03-10 05:28:24 +08:00 |
|
H1d3rOne
|
a10be4ca13
|
feat: 消费金币时保存消费记录
- UserInfoService.consumeCoins方法添加消费记录保存
- 记录包含:用户ID、消费金额、消费类型、描述、关联ID
- 消费详情页面可查看每次测算的金币消耗记录
|
2026-03-10 05:12:07 +08:00 |
|
H1d3rOne
|
98d63115a4
|
feat: 修改签到奖励金币数量
- 第1天: +2金币
- 第2天: +3金币
- 第3天: +4金币
- 第4天: +2金币
- 第5天: +2金币
- 第6天: +3金币
- 第7天: +10金币
|
2026-03-10 05:05:20 +08:00 |
|
H1d3rOne
|
365a01f5e8
|
feat: 签到中断或超过7天重置为第1天
- 签到中断时重置连续签到天数为1
- 连续签到超过7天时重置为第1天
- 优化签到进度显示逻辑
|
2026-03-10 04:59:35 +08:00 |
|
H1d3rOne
|
df562f9a52
|
feat: 优化签到进度显示
- 连续签到几天,前几个图标变亮
- 下面的星期几显示对应签到日期的星期
- 添加currentStreak计算属性
|
2026-03-10 04:53:30 +08:00 |
|
H1d3rOne
|
db22cd87a4
|
fix: 修复邀请好友分享功能
- 使用button组件的open-type=share触发分享
- 移除uni.showShareMenu调用
- 添加button样式重置
|
2026-03-10 04:46:58 +08:00 |
|
H1d3rOne
|
1f999b2ea8
|
fix: 修复recordId变量作用域问题
- qimen.vue: 将recordId移到try块外部
- daliuren.vue: 将recordId移到try块外部
- meihua.vue: 将recordId移到try块外部
- liuyao.vue: 将recordId移到try块外部
|
2026-03-10 04:37:34 +08:00 |
|
H1d3rOne
|
fbb155643d
|
fix: 修复记录页面和签到功能
- records.vue: 加载记录时传递userId参数
- coins.vue: 签到后同步金币数据到数据库
|
2026-03-10 04:30:36 +08:00 |
|
H1d3rOne
|
879eb05052
|
fix: 测算成功后才保存记录
- 所有测算页面添加测算结果验证
- 测算失败时不保存记录,不消耗金币
- 统一错误处理逻辑
|
2026-03-10 04:14:55 +08:00 |
|
H1d3rOne
|
4eb434b9ec
|
feat: 注销账号时级联删除用户记录
- 注销账号时删除用户的所有测算记录
- 添加@Transactional注解确保事务一致性
|
2026-03-10 04:04:47 +08:00 |
|
H1d3rOne
|
9967e5008c
|
fix: 未登录时提示用户先登录
- 在checkCoinsAndConsume中添加登录提示
- 未登录用户点击测算时弹出登录提示框
|
2026-03-10 03:57:36 +08:00 |
|
H1d3rOne
|
7950a087ed
|
fix: 修复新用户金币默认值为3
- 在@PrePersist中设置coins默认值为3
- 确保新用户注册时获得3个金币
|
2026-03-10 03:35:56 +08:00 |
|
H1d3rOne
|
1508898cbf
|
fix: 移除所有金币硬编码,改为API操作
- mine.vue: coins默认值改为0
- coins.vue: 添加API调用更新金币
- 新增addCoins API接口用于金币奖励
- 观看视频奖励通过API更新数据库
|
2026-03-10 03:26:08 +08:00 |
|
H1d3rOne
|
f5f214a100
|
refactor: 金币默认值改为数据库层面设置
- UserInfo实体类coins字段添加默认值DEFAULT 3
- 移除前后端硬编码的金币默认值
- 新增consumeCoins API接口用于金币消耗
- coinUtils.js改为从服务器获取金币数据
- 所有测算页面checkCoinsAndConsume改为异步调用
- VIP用户测算不消耗金币
|
2026-03-10 03:19:40 +08:00 |
|
H1d3rOne
|
b9a4a9150e
|
fix: 修复测算模块金币消耗逻辑
- 修改coinUtils.js默认金币为3
- 所有测算页面添加recordId变量
- 测算成功后才消耗金币和保存记录
- 测算失败不消耗金币
- VIP用户测算不消耗金币
- 金币不足时弹出提示
|
2026-03-10 03:09:56 +08:00 |
|
H1d3rOne
|
a101643de0
|
fix: 修改新用户默认金币为3个
- 修改UserInfo实体类@PrePersist中coins默认值为3
- 确保新注册用户获得3个金币
|
2026-03-10 02:42:46 +08:00 |
|
H1d3rOne
|
c48517aeac
|
fix: 修改数据库配置为create模式,确保新用户默认3金币
- 修改ddl-auto为create,每次启动重建表
- 修改BASE_URL为localhost进行本地测试
- 确保注销账号后重新登录获得3金币
|
2026-03-10 02:07:38 +08:00 |
|
H1d3rOne
|
6561e9034b
|
feat: 完善微信授权登录功能
- 新增半屏授权登录窗口,从底部滑出
- 支持微信头像和昵称选择
- 新用户注册默认3个金币
- 新增注销账号功能,从数据库删除用户
- 删除旧的授权登录页面
- 退出登录和注销后跳转首页
- 优化登录交互体验
|
2026-03-10 01:37:24 +08:00 |
|
H1d3rOne
|
832f282ff9
|
实现全局点击拦截,未登录时任何点击都弹出提示框
功能实现:
1. 全局点击监听
- 在App.vue的template最外层view添加@click事件
- 监听所有点击操作
- 未登录时立即弹出提示框
2. 智能拦截机制
- 检查登录状态:使用authCheck.isLoggedIn()
- 防止重复弹窗:使用isCheckingClick标志
- 授权窗口打开时不拦截:检查showAuthModal状态
3. 用户交互流程
- 用户点击屏幕任何位置
- 未登录状态立即弹出"未登录"提示框
- 提示框内容:"请先登录后再使用"
- 点击"去登录":显示授权窗口
- 点击"取消":关闭提示框
4. 优化体验
- 已登录用户不受影响
- 授权窗口打开时不重复拦截
- 防止连续点击导致多次弹窗
特点:
- 全局统一拦截
- 即时响应
- 用户友好
- 无需在每个页面单独处理
|
2026-03-09 22:01:35 +08:00 |
|
H1d3rOne
|
ea7752f554
|
优化全局未登录拦截,点击任何地方弹出登录窗口
功能改进:
1. 全局事件监听
- App.vue添加setupGlobalListeners方法
- 监听showAuthModal和hideAuthModal事件
- 在onHide时移除监听器
2. 统一的登录拦截机制
- authCheck.js使用uni.$emit触发全局事件
- 点击"去登录"按钮触发showAuthModal事件
- App.vue接收事件后显示授权窗口
3. 用户体验优化
- 未登录时点击任何功能都会弹出提示
- 提示框包含"去登录"按钮
- 点击"去登录"后从底部滑出授权窗口
- 授权窗口占据屏幕70%
工作流程:
1. 用户点击功能模块
2. 检查登录状态
3. 未登录弹出提示框
4. 点击"去登录"
5. 触发showAuthModal事件
6. App.vue显示授权窗口
7. 用户完成授权
8. 继续使用功能
|
2026-03-09 21:56:03 +08:00 |
|
H1d3rOne
|
0d30d40794
|
实现全局未登录拦截功能,覆盖所有tabBar页面
功能实现:
1. 首页(index.vue)
- 所有测算功能模块添加登录检查
- 未登录时弹出提示框
- 引导用户完成登录
2. 记录页面(records.vue)
- 页面显示时检查登录状态
- 未登录时弹出提示框
- 阻止未登录用户查看记录
3. 工具页面(tools.vue)
- 所有工具项添加登录检查
- 未登录时弹出提示框
- 引导用户完成登录
4. 我的页面(mine.vue)
- 页面显示时检查登录状态
- 未登录时弹出提示框
- 阻止未登录用户查看个人信息
实现方式:
- 导入authCheck工具
- 使用authCheck.requireLogin()检查登录状态
- 使用authCheck.isLoggedIn()判断是否已登录
- 未登录时弹出"未登录,无法使用"提示
- 提示框包含"去登录"按钮
特点:
- 全局统一的登录检查机制
- 友好的用户提示
- 引导用户完成登录流程
- 保护用户隐私和数据安全
|
2026-03-09 21:50:48 +08:00 |
|
H1d3rOne
|
6790df0f72
|
优化授权窗口样式和实现全局未登录拦截
问题:
1. 授权窗口只占屏幕一半,显示不够突出
2. 取消登录后点击功能模块没有弹出未登录提示
解决方案:
1. 优化授权窗口样式
- 高度从auto改为70vh,占据屏幕70%
- 使用flex布局,内容垂直居中
- 增加header和content的padding
- 整体更加美观和突出
2. 实现全局未登录拦截
- 在首页index.vue中导入authCheck工具
- 所有功能模块的点击方法添加登录检查
- 未登录时弹出"未登录,无法使用"提示
- 提示框包含"去登录"按钮
- 点击"去登录"触发授权流程
改进:
- 授权窗口更加醒目
- 未登录用户无法使用功能
- 引导用户完成登录
- 提升用户体验
|
2026-03-09 21:43:33 +08:00 |
|
H1d3rOne
|
a537fc0b23
|
修复chooseAvatar取消错误
问题:
- 用户点击取消选择头像时出现错误
- 错误信息:chooseAvatar:fail cancel
解决方案:
- 添加@error事件处理
- 新增onChooseAvatarError方法
- 区分用户取消和其他错误
- 用户取消时不显示错误提示
- 其他错误显示友好提示
改进:
- 更好的错误处理
- 避免控制台报错
- 提升用户体验
|
2026-03-09 21:37:44 +08:00 |
|
H1d3rOne
|
ad47ee11e6
|
新增从顶部滑入的授权登录模态窗口组件
功能实现:
1. 模态窗口动画
- 从顶部平滑滑入效果
- 使用cubic-bezier缓动函数实现弹性动画
- 背景遮罩淡入效果
- 支持点击遮罩关闭
2. 微信授权流程
- 集成微信chooseAvatar API
- 点击按钮选择微信头像或从相册选择
- 选择头像后弹出昵称输入框
- 自动完成授权登录
3. 用户信息获取
- 获取微信头像URL
- 获取用户输入的昵称
- 调用uni.login获取code
- 后端生成唯一用户ID
4. 数据处理
- 本地缓存:userId、userInfo、userCoins、vipLevel、username、userAvatar
- 后端保存:通过API提交用户信息到数据库
- 数据同步:确保前后端数据一致
5. 错误处理
- 授权失败友好提示
- 用户取消授权确认对话框
- 网络错误处理
- 详细日志记录
6. 安全性
- 使用微信官方API
- 符合微信开放平台安全规范
- 不直接暴露敏感信息
7. 用户体验
- 操作流程简洁直观
- 状态反馈清晰
- 授权成功自动关闭模态窗口
- 支持取消登录操作
组件特点:
- 可复用的模态窗口组件
- 支持v-model双向绑定
- 提供success、cancel、error事件
- 优雅的动画效果
- 完善的错误处理
|
2026-03-09 17:29:13 +08:00 |
|
H1d3rOne
|
d5ea80766f
|
简化授权登录页面, requires_approval
|
2026-03-09 17:19:45 +08:00 |
|
H1d3rOne
|
7eb1ae7f52
|
简化授权登录页面,一键授权获取微信昵称和头像
优化内容:
1. 简化页面布局
- 移除复杂的步骤引导
- 采用居中卡片式设计
- 紫色渐变背景,更加美观
2. 精简交互流程
- 头像选择:点击头像按钮直接选择
- 昵称输入:点击输入框自动获取微信昵称
- 一键授权:填写完成后点击按钮即可
3. 优化视觉效果
- Logo图标:🔮水晶球
- 应用名称:玄机排盘
- 白色卡片配紫色渐变背景
- 圆形头像带紫色边框
4. 简化代码
- 移除冗余的提示文字
- 精简样式代码
- 优化错误处理逻辑
页面特点:
- 简洁美观的界面设计
- 一键授权的便捷流程
- 良好的用户体验
|
2026-03-09 17:11:54 +08:00 |
|
H1d3rOne
|
e0446bffc8
|
修复微信小程序代码依赖分析错误
问题原因:
- 微信开发者工具的代码依赖分析功能会过滤无依赖文件
- 新增的auth页面可能被误判为无依赖文件
- 导致页面无法正常加载
解决方案:
1. 修改project.config.json
- 添加editorSetting配置
- 设置tabIndent和tabSize
2. 修改manifest.json
- 添加ignoreDevUnusedFiles: false
- 添加ignoreUploadUnusedFiles: false
- 禁用开发者工具过滤无依赖文件功能
3. 确保auth页面正确注册
- 在pages.json中注册auth页面
- 设置正确的导航栏样式
解决方法:
- 在微信开发者工具中:设置 → 项目设置 → 取消勾选"过滤无依赖文件"
- 或在配置文件中设置ignoreDevUnusedFiles为false
|
2026-03-09 17:03:08 +08:00 |
|
H1d3rOne
|
a7efc92f2a
|
修复首次打开小程序未自动跳转授权页面的问题
问题原因:
1. 授权页面pages/auth/auth未在pages.json中注册
2. uni.redirectTo无法跳转到未注册的页面
3. 缺少详细的日志输出
解决方案:
1. 在pages.json中添加授权页面配置
- 路径:pages/auth/auth
- 导航栏标题:授权登录
- 导航栏背景色:#10B981(绿色)
- 导航栏文字颜色:white
2. 优化App.vue跳转逻辑
- 使用uni.navigateTo替代uni.redirectTo
- 添加navigateTo失败后的redirectTo备用方案
- 添加详细的console.log日志输出
- 在跳转前设置hasShownAuth标记
3. 增强调试信息
- 输出用户授权状态检查结果
- 输出hasUserInfo和hasShownAuth的值
- 输出跳转成功/失败的详细信息
测试要点:
- 首次打开小程序自动跳转到授权页面
- 授权页面正常显示
- 授权成功后跳转到首页
|
2026-03-09 16:51:04 +08:00 |
|
H1d3rOne
|
28848d541d
|
优化真机测试环境下的用户授权流程
问题分析:
1. 微信已废弃自动弹出授权框功能
2. 用户不清楚如何选择头像和昵称
3. 授权流程引导不清晰
解决方案:
1. 优化授权页面布局
- 分步骤引导:第一步选择头像,第二步输入昵称
- 添加清晰的步骤标签和提示文字
- 头像选择后显示"已选择"状态
- 昵称输入框添加提示文字
2. 增强交互体验
- 选择头像成功后显示Toast提示
- 按钮状态根据是否填写完整显示不同样式
- 未填写完整时按钮半透明不可点击
- 授权成功后延长Toast显示时间
3. 完善错误处理
- 添加详细的错误提示信息
- 区分头像和昵称为空的提示
- 授权失败时显示具体原因
4. 优化提示说明
- 更新授权说明内容
- 说明如何获取微信昵称
- 说明可以手动输入自定义昵称
测试要点:
- 首次使用自动跳转到授权页面
- 点击头像按钮可选择微信头像或相册图片
- 点击昵称输入框可自动填充微信昵称
- 授权成功后"我的"页面显示头像和昵称
|
2026-03-09 16:31:37 +08:00 |
|
xuan-bot
|
75d4901476
|
fix: 添加spring-boot-starter-validation依赖解决编译错误
|
2026-03-09 16:20:31 +08:00 |
|