diff --git a/code/base-project/base-app/src/app/(tabs)/money/components/AddDrawer.tsx b/code/base-project/base-app/src/app/(tabs)/money/components/AddDrawer.tsx index fb188aa8..88386632 100644 --- a/code/base-project/base-app/src/app/(tabs)/money/components/AddDrawer.tsx +++ b/code/base-project/base-app/src/app/(tabs)/money/components/AddDrawer.tsx @@ -1,5 +1,6 @@ +import type { MoneyCategoryResult } from '@/request/api/money' import type { MoneyCategory } from '@/types/money' -import { useState } from 'react' +import { useEffect, useState } from 'react' import { Pressable, Text, View } from 'react-native' import { useSafeAreaInsets } from 'react-native-safe-area-context' import SegmentedTabs from '@/components/common/ao/SegmentedTabs' @@ -11,6 +12,7 @@ import { DrawerHeader, } from '@/components/ui/drawer' import { Grid, GridItem } from '@/components/ui/grid' +import { getMoneyCategoryApi } from '@/request/api/money' import MoneyCategoryIcon from './MoneyCategoryIcon' interface AddMoneyDrawerProps { @@ -23,8 +25,30 @@ export default function AddMoneyDrawer({ onClose, }: AddMoneyDrawerProps) { const insets = useSafeAreaInsets() - const [seletedIndex, setSelectedIndex] = useState(0) - const categories: MoneyCategory[] = [] + const [selectedIndex, setSelectedIndex] = useState(0) + const [selectedCategoryId, setSelectedCategoryId] = useState(null) + + const [categories, setCategories] = useState({ + income: [], + expense: [], + }) + + useEffect(() => { + if (isOpen) { + const fetchCategories = async () => { + try { + const res = await getMoneyCategoryApi() + if (res.isSuccess) { + setCategories(res.data) + } + } + catch (err) { + console.error('获取分类失败', err) + } + } + fetchCategories() + } + }, [isOpen]) return ( - + - { - setSelectedIndex(index) - }} + value={selectedIndex} + tabs={[{ label: '收入' }, { label: '支出' }]} + onChange={setSelectedIndex} style={{ width: 180 }} className="mx-auto" /> - 取消 @@ -71,20 +78,43 @@ export default function AddMoneyDrawer({ - {categories.map((item, index) => ( - - - - - - {item.label} - - - ))} + {(() => { + const list = selectedIndex === 0 ? categories.income : categories.expense + const items = list.map((item) => { + const isSelected = selectedCategoryId === item.id + return ( + + setSelectedCategoryId(item.id)} + > + + + + + {item.name} + + + + ) + }) + + const remainder = list.length % 4 + if (remainder > 0) { + const emptyCount = 4 - remainder + for (let i = 0; i < emptyCount; i++) { + items.push() + } + } + + return items + })()} diff --git a/code/base-project/base-app/src/request/index.ts b/code/base-project/base-app/src/request/index.ts index bed3e94e..d74320ab 100644 --- a/code/base-project/base-app/src/request/index.ts +++ b/code/base-project/base-app/src/request/index.ts @@ -80,7 +80,7 @@ const alovaInstance = createAlova({ return } catch (err) { - router.replace('/auth/login') + // router.replace('/auth/login') return Promise.reject(err) } } diff --git a/code/base-project/base-app/src/types/money.ts b/code/base-project/base-app/src/types/money.ts index 9fa42945..12654356 100644 --- a/code/base-project/base-app/src/types/money.ts +++ b/code/base-project/base-app/src/types/money.ts @@ -1,8 +1,7 @@ export interface MoneyCategory { - id: string + id: number user_id: number name: string - label: string icon: string sort_number: number type: number diff --git a/code/base-project/base-go-v2/internal/api/middleware/auth.go b/code/base-project/base-go-v2/internal/api/middleware/auth.go index 9fc39f41..5c177b88 100644 --- a/code/base-project/base-go-v2/internal/api/middleware/auth.go +++ b/code/base-project/base-go-v2/internal/api/middleware/auth.go @@ -4,12 +4,17 @@ import ( response "base-go-v2/internal/reponse" "base-go-v2/internal/router" "base-go-v2/internal/utils/jwtx" + "fmt" ) func AuthMiddleware() router.HandlerFunc { return func(c *router.Context) error { + fmt.Println("===请求进入===") + token := c.Header("token") if token == "" { + fmt.Println("===未提供 Token===") + c.Abort() return response.Fail(c). Code(response.HttpCode.Unauthorized). @@ -22,11 +27,13 @@ func AuthMiddleware() router.HandlerFunc { // Access Token 有效 if tokenVerify.IsValid { c.SetUserID(tokenVerify.Claims.UserID) - return nil + return c.Next() } // Access Token 失效 → 返回刷新提示 if !tokenVerify.IsValid { + fmt.Println("===Access Token 失效===") + c.Abort() return response.Fail(c). Code(response.HttpCode.RefreshToken). @@ -34,6 +41,7 @@ func AuthMiddleware() router.HandlerFunc { Send() } + fmt.Println("===请求通过===") return c.Next() } } diff --git a/code/base-project/base-go-v2/internal/api/money/index.go b/code/base-project/base-go-v2/internal/api/money/index.go index 723d6a81..2ef0fdae 100644 --- a/code/base-project/base-go-v2/internal/api/money/index.go +++ b/code/base-project/base-go-v2/internal/api/money/index.go @@ -28,7 +28,9 @@ func InitDefaultCategories(userID int64) error { fmt.Printf("系统分类数量: %d\n", len(sysCategories)) // 2. 构建批量插入数据 - userCategories := make([]mapx.M, 0, len(sysCategories)) + //userCategories := make([]mapx.M, 0, len(sysCategories)) + userCategories := mapx.NewArr(len(sysCategories)) + for i, row := range sysCategories { m := mapx.New().SetKV( "id", idgen.NextId(), @@ -52,6 +54,7 @@ func InitDefaultCategories(userID int64) error { } func getUserCategory(c *router.Context) error { + fmt.Println("请求进入了====") userId := c.GetUserID() // 查询当前用户的分类 diff --git a/code/base-project/base-go-v2/internal/api/router.go b/code/base-project/base-go-v2/internal/api/router.go index a03dd281..6799611d 100644 --- a/code/base-project/base-go-v2/internal/api/router.go +++ b/code/base-project/base-go-v2/internal/api/router.go @@ -19,6 +19,6 @@ func InitAppRouter() *router.Router { auth.InitAuthRouter(r) money.InitMoneyRouter(r) - + return r } diff --git a/code/base-project/base-go-v2/internal/utils/mapx/index.go b/code/base-project/base-go-v2/internal/utils/mapx/index.go index 7c6b8ab7..4206dccb 100644 --- a/code/base-project/base-go-v2/internal/utils/mapx/index.go +++ b/code/base-project/base-go-v2/internal/utils/mapx/index.go @@ -13,8 +13,12 @@ func New() M { return M{} } -func NewArr() { - //return make([]M, 0, len()) +func NewArr(cap ...int) []M { + c := 0 + if len(cap) > 0 { + c = cap[0] + } + return make([]M, 0, c) } // Set 设置单个键值,支持链式调用