实习日报(2026年2月6日 - 2月7日)
一、工作内容概述
本次实习主要完成了银行经理端两个核心功能的开发与修复:
| 日期 | 工作内容 | 状态 |
|---|---|---|
| 2月6日 | 银行经理绑定逻辑修复 | ✅ 完成 |
| 2月7日 | 线下领取扫码功能开发 | ✅ 完成 |
二、银行经理绑定逻辑修复(2月6日)
问题描述
用户扫码绑定后再次扫同一活动的二维码,仍然需要重新填写信息绑定,而不是直接进入首页。
问题分析
原有逻辑只检查"该二维码记录是否被我绑定",没有检查"我是否已经是该活动的银行经理"。
解决思路
扫码 → 解密获取 managerId → 查询活动ID
↓
检查用户是否已是该活动的银行经理(新增)
↓ 是
直接跳转首页
↓ 否
继续检查二维码是否被其他人绑定 → 显示绑定表单
代码修改
BankManager.java - getBindStatus 方法
java
// 1. 先检查:当前用户是否已经是该活动的银行经理
ZenResult existingManager = zenEngine.execute("get/bank_manager_uid",
ZenData.create().put("activityId", activityId).put("uid", uid));
if (!existingManager.isEmpty()) {
result.put("status", "existing"); // 直接跳转home
return ZenResult.success().setData(result);
}
// 2. 再检查该二维码是否已被其他人绑定
String boundUid = managerRes.get("uid");
if (StringKit.isNotEmpty(boundUid)) {
result.put("status", "fail"); // 已被其他人绑定
return ZenResult.success().setData(result);
}
收获
- 理解了低代码平台接口的配置方式(需要配置输出字段)
- 学习了
Objects.equals()进行空安全比较 - 掌握了通过日志调试定位数据问题的方法
三、线下领取扫码功能开发(2月7日)
需求描述
当任务的 storeType === 1(线下领取)时,银行经理展示二维码给客户扫描领取奖励。
技术方案
| 层级 | 实现 |
|---|---|
| 后端 | BankActivity.java 新增 makeLink 方法生成链接 |
| 前端 | taskList.vue 添加"扫码领取"按钮和二维码弹窗 |
| 轮询 | z-block 组件的 interval 属性实现自动刷新 |
后端实现
BankActivity.java - makeLink 方法
java
public ZenResult makeLink(ZenData data) {
String id = data.getId();
String channel = data.get("channel");
String title = data.get("title");
// 生成链接
String url = ConfigKit.get("frontDomain") + channel + "?id=" + id;
// 附加标题参数
if (StringKit.isNotEmpty(title)) {
title = StringKit.encrypt(title);
url += "&_tl_=" + title;
}
return ZenResult.success().setData(url);
}
前端实现
taskList.vue - 核心代码
java
<van-cell v-if="data.storeType && data.storeType === 1">
<z-action size="small" label="扫码领取">
<template #default>
<z-block
url="/api/bankActivity/makeLink"
:params="{ id: data.restrict.pageId, channel: 'wx', title: data.title }"
:interval="100000"
>
<template #default="linkUrl">
<z-qr v-if="linkUrl" :value="linkUrl" width="200px" height="200px" />
</template>
</z-block>
</template>
</z-action>
</van-cell>
遇到的问题与解决
| 问题 | 原因 | 解决方案 |
|---|---|---|
二维码显示 null... |
frontDomain 未配置 |
在 app.properties 添加配置 |
| 二维码不渲染 | z-block 插槽格式错误 |
改为 #default="linkUrl" |
| 第一次点击报错 | 使用 v-if + $refs.show() |
改为内嵌组件,点击自动弹出 |
收获
- 学习了
z-block组件的轮询机制(interval属性) - 理解了 Vue 插槽的不同写法(解构 vs 直接接收)
- 掌握了参考其他项目代码复用实现的方法
四、技术总结
涉及的关键组件
| 组件 | 用途 |
|---|---|
z-action |
弹窗/抽屉容器 |
z-block |
数据获取 + 轮询 |
z-qr |
二维码渲染 |
z-list |
列表数据展示 |
调试技巧
- 后端调试 :使用
System.out.println()打印关键变量 - 前端调试:Chrome DevTools Network 面板查看接口返回
- 配置问题 :检查
app.properties配置项
五、待办事项
- 继续完善银行经理端其他功能
- 测试线下领取功能在真机环境的表现