feat(calendar): 更新日历接口并优化记录流程

- 将GetRecords接口替换为GetCalendar接口获取日历数据
- 重构首页日历数据显示逻辑,支持年月维度的数据获取
- 优化打卡记录流程,合并选酒和记量步骤为单一添加酒水步骤
- 移除登录页面的游客模式选项,简化首次启动逻辑
- 调整引导页逻辑,移除登录跳转改为直接进入首页
- 优化记录页面UI布局,添加状态栏安全距离适配
- 新增酒水列表管理功能,支持添加和删除已选酒水
- 更新依赖包HaveADrink至v1.0.3版本,同步API变更
This commit is contained in:
cg
2026-07-17 23:51:43 +08:00
parent a73bd79eb5
commit adf6b684b9
13 changed files with 520 additions and 451 deletions
+55 -10
View File
@@ -14,7 +14,7 @@
* 6. 社交模块 - 朋友圈动态、点赞
**版本:** v1.0.2
**版本:** v1.0.3
## 安装
@@ -816,18 +816,12 @@ client.DeleteRecord(req).then(...).catch(...)
#### 返回值
|名称|类型|说明|
|:-|:-:|:-|
|data|`CalendarData`| 日历数据<br>|
|year|`number`| 年份<br>|
|month|`number`| 月份<br>|
|days|`Array<CalendarDayData>`| 每天的打卡数据,null表示当天无记录<br>|
**CalendarData**
|名称|类型|说明|
|:-|:-|:-|
|year|`number`| 年份|
|month|`number`| 月份|
|days|`Array<CalendarDayData>`| 每天的打卡数据,null表示当天无记录|
**CalendarDayData**
|名称|类型|说明|
|:-|:-|:-|
@@ -835,6 +829,57 @@ client.DeleteRecord(req).then(...).catch(...)
|hasRecord|`boolean`| 是否有记录|
|mode|`Mode`| 打卡模式|
|standardCupsTotal|`number`| 标准杯总数|
|id|`string\|number`| 记录ID|
|drinks|`Array<DrinkItem>`| 酒水列表|
|food|`FoodInfo`| 配餐信息|
|feeling|`Feeling`| 感受|
|photos|`Array<string>`| 照片URL数组|
|visibility|`Visibility`| 可见范围|
|quote|`string`| 酒言酒语|
|createdAt|`string`| 创建时间|
**Mode**
|名称|值|类型|说明|
|:-|:-:|:-|:-|
|Drank|"drank"|`Mode`|今日喝了|
|Abstain|"abstain"|`Mode`|今日未喝|
**DrinkItem**
|名称|类型|说明|
|:-|:-|:-|
|category|`Category`| 酒类分类ID|
|brand|`string`| 品牌名称|
|product|`string`| 产品名|
|amount|`number`| 饮用量数值|
|unit|`Unit`| 单位|
|degree|`number`| 酒精度数(%)|
|standardCups|`number`| 标准杯数(前端计算,后端应校验)|
**FoodInfo**
|名称|类型|说明|
|:-|:-|:-|
|category|`FoodCategory`| 配餐分类ID|
|name|`string`| 具体菜名|
**Feeling**
|名称|值|类型|说明|
|:-|:-:|:-|:-|
|Tipsy|"tipsy"|`Feeling`|微醺|
|Buzzed|"buzzed"|`Feeling`|到位|
|Drunk|"drunk"|`Feeling`|醉了|
|Blackout|"blackout"|`Feeling`|断片|
**Visibility**
|名称|值|类型|说明|
|:-|:-:|:-|:-|
|Public|"public"|`Visibility`|公开|
|Friends|"friends"|`Visibility`|仅好友|
|Private|"private"|`Visibility`|仅自己|
+66 -6
View File
@@ -1594,14 +1594,54 @@ export declare class CalendarDayData {
* 标准杯总数
*/
standardCupsTotal: number;
/**
* 记录ID
*/
id: string|number;
/**
* 酒水列表
*/
drinks: Array<DrinkItem>;
/**
* 配餐信息
*/
food: FoodInfo;
/**
* 感受
*/
feeling: Feeling;
/**
* 照片URL数组
*/
photos: Array<string>;
/**
* 可见范围
*/
visibility: Visibility;
/**
* 酒言酒语
*/
quote: string;
/**
* 创建时间
*/
createdAt: string;
/**
* @param date string 日期YYYY-MM-DD
* @param hasRecord boolean 是否有记录
* @param mode Mode 打卡模式
* @param standardCupsTotal number 标准杯总数
* @param id string|number 记录ID
* @param drinks Array<DrinkItem> 酒水列表
* @param food FoodInfo 配餐信息
* @param feeling Feeling 感受
* @param photos Array<string> 照片URL数组
* @param visibility Visibility 可见范围
* @param quote string 酒言酒语
* @param createdAt string 创建时间
*/
constructor(date: string,hasRecord: boolean,mode: Mode,standardCupsTotal: number,);
constructor(date: string,hasRecord: boolean,mode: Mode,standardCupsTotal: number,id: string|number,drinks: Array<DrinkItem>,food: FoodInfo,feeling: Feeling,photos: Array<string>,visibility: Visibility,quote: string,createdAt: string,);
/**
* 从对象创建 CalendarDayData
*
@@ -1610,6 +1650,14 @@ export declare class CalendarDayData {
* - hasRecord: boolean, // 是否有记录
* - mode: Mode, // 打卡模式
* - standardCupsTotal: number, // 标准杯总数
* - id: string|number, // 记录ID
* - drinks: Array<DrinkItem>, // 酒水列表
* - food: FoodInfo, // 配餐信息
* - feeling: Feeling, // 感受
* - photos: Array<string>, // 照片URL数组
* - visibility: Visibility, // 可见范围
* - quote: string, // 酒言酒语
* - createdAt: string, // 创建时间
*/
static fromObject(o: Object): CalendarDayData;
}
@@ -1620,19 +1668,31 @@ export declare class CalendarDayData {
export declare class GetCalendarResp {
[key: string]: any;
/**
* 日历数据
* 年份
*/
data: CalendarData;
year: number;
/**
* 月份
*/
month: number;
/**
* 每天的打卡数据,null表示当天无记录
*/
days: Array<CalendarDayData>;
/**
* @param data CalendarData 日历数据
* @param year number 年份
* @param month number 月份
* @param days Array<CalendarDayData> 每天的打卡数据,null表示当天无记录
*/
constructor(data: CalendarData,);
constructor(year: number,month: number,days: Array<CalendarDayData>,);
/**
* 从对象创建 GetCalendarResp
*
* @param o Object
* - data: CalendarData, // 日历数据
* - year: number, // 年份
* - month: number, // 月份
* - days: Array<CalendarDayData>, // 每天的打卡数据,null表示当天无记录
*/
static fromObject(o: Object): GetCalendarResp;
}
+26 -6
View File
@@ -1165,16 +1165,32 @@ export class CalendarDayData {
* @param hasRecord: boolean 是否有记录
* @param mode: Mode 打卡模式
* @param standardCupsTotal: number 标准杯总数
* @param id: string|number 记录ID
* @param drinks: Array<DrinkItem> 酒水列表
* @param food: FoodInfo 配餐信息
* @param feeling: Feeling 感受
* @param photos: Array<string> 照片URL数组
* @param visibility: Visibility 可见范围
* @param quote: string 酒言酒语
* @param createdAt: string 创建时间
*/
constructor(date,hasRecord,mode,standardCupsTotal,) {
constructor(date,hasRecord,mode,standardCupsTotal,id,drinks,food,feeling,photos,visibility,quote,createdAt,) {
this.date = date;
this.hasRecord = hasRecord;
this.mode = mode;
this.standardCupsTotal = standardCupsTotal;
this.id = id;
this.drinks = drinks;
this.food = food;
this.feeling = feeling;
this.photos = photos;
this.visibility = visibility;
this.quote = quote;
this.createdAt = createdAt;
}
static fromObject(o) {
return new CalendarDayData(o.date,o.hasRecord,o.mode,o.standardCupsTotal,);
return new CalendarDayData(o.date,o.hasRecord,o.mode,o.standardCupsTotal,o.id,o.drinks,o.food,o.feeling,o.photos,o.visibility,o.quote,o.createdAt,);
}
}
@@ -1183,14 +1199,18 @@ export class CalendarDayData {
*/
export class GetCalendarResp {
/**
* @param data: CalendarData 日历数据
* @param year: number 年份
* @param month: number 月份
* @param days: Array<CalendarDayData> 每天的打卡数据,null表示当天无记录
*/
constructor(data,) {
this.data = data;
constructor(year,month,days,) {
this.year = year;
this.month = month;
this.days = days;
}
static fromObject(o) {
return new GetCalendarResp(o.data,);
return new GetCalendarResp(o.year,o.month,o.days,);
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "HaveADrink",
"type": "module",
"version": "v1.0.2",
"version": "v1.0.3",
"description": "喝酒了么 API 服务",
"main": "index.js",
"scripts": {