diff --git a/pkg/api/users.go b/pkg/api/users.go index 91c08528..f04d43e7 100644 --- a/pkg/api/users.go +++ b/pkg/api/users.go @@ -356,7 +356,7 @@ func (a *UsersApi) UserUpdateProfileHandler(c *core.Context) (any, *errs.Error) userNew.DecimalSeparator = *userUpdateReq.DecimalSeparator anythingUpdate = true } else { - userNew.DecimalSeparator = models.DECIMAL_SEPARATOR_INVALID + userNew.DecimalSeparator = core.DECIMAL_SEPARATOR_INVALID } if userUpdateReq.DigitGroupingSymbol != nil && *userUpdateReq.DigitGroupingSymbol != user.DigitGroupingSymbol { @@ -364,7 +364,7 @@ func (a *UsersApi) UserUpdateProfileHandler(c *core.Context) (any, *errs.Error) userNew.DigitGroupingSymbol = *userUpdateReq.DigitGroupingSymbol anythingUpdate = true } else { - userNew.DigitGroupingSymbol = models.DIGIT_GROUPING_SYMBOL_INVALID + userNew.DigitGroupingSymbol = core.DIGIT_GROUPING_SYMBOL_INVALID } if userUpdateReq.DigitGrouping != nil && *userUpdateReq.DigitGrouping != user.DigitGrouping { @@ -372,7 +372,7 @@ func (a *UsersApi) UserUpdateProfileHandler(c *core.Context) (any, *errs.Error) userNew.DigitGrouping = *userUpdateReq.DigitGrouping anythingUpdate = true } else { - userNew.DigitGrouping = models.DIGIT_GROUPING_TYPE_INVALID + userNew.DigitGrouping = core.DIGIT_GROUPING_TYPE_INVALID } if userUpdateReq.CurrencyDisplayType != nil && *userUpdateReq.CurrencyDisplayType != user.CurrencyDisplayType { @@ -399,15 +399,15 @@ func (a *UsersApi) UserUpdateProfileHandler(c *core.Context) (any, *errs.Error) userNew.IncomeAmountColor = models.AMOUNT_COLOR_TYPE_INVALID } - if modifyUserLanguage || userNew.DecimalSeparator != models.DECIMAL_SEPARATOR_INVALID || userNew.DigitGroupingSymbol != models.DIGIT_GROUPING_SYMBOL_INVALID { + if modifyUserLanguage || userNew.DecimalSeparator != core.DECIMAL_SEPARATOR_INVALID || userNew.DigitGroupingSymbol != core.DIGIT_GROUPING_SYMBOL_INVALID { decimalSeparator := userNew.DecimalSeparator digitGroupingSymbol := userNew.DigitGroupingSymbol - if userNew.DecimalSeparator == models.DECIMAL_SEPARATOR_INVALID { + if userNew.DecimalSeparator == core.DECIMAL_SEPARATOR_INVALID { decimalSeparator = user.DecimalSeparator } - if userNew.DigitGroupingSymbol == models.DIGIT_GROUPING_SYMBOL_INVALID { + if userNew.DigitGroupingSymbol == core.DIGIT_GROUPING_SYMBOL_INVALID { digitGroupingSymbol = user.DigitGroupingSymbol } diff --git a/pkg/models/numeral.go b/pkg/core/numeral.go similarity index 99% rename from pkg/models/numeral.go rename to pkg/core/numeral.go index 95a670fe..2433dfad 100644 --- a/pkg/models/numeral.go +++ b/pkg/core/numeral.go @@ -1,4 +1,4 @@ -package models +package core import ( "fmt" diff --git a/pkg/locales/all_locales.go b/pkg/locales/all_locales.go index f8fd5171..96533d45 100644 --- a/pkg/locales/all_locales.go +++ b/pkg/locales/all_locales.go @@ -1,6 +1,8 @@ package locales -import "github.com/mayswind/ezbookkeeping/pkg/models" +import ( + "github.com/mayswind/ezbookkeeping/pkg/core" +) // DefaultLanguage represents the default language var DefaultLanguage = en @@ -26,8 +28,8 @@ func GetLocaleTextItems(locale string) *LocaleTextItems { return DefaultLanguage } -func IsDecimalSeparatorEqualsDigitGroupingSymbol(decimalSeparator models.DecimalSeparator, digitGroupingSymbol models.DigitGroupingSymbol, locale string) bool { - if decimalSeparator == models.DECIMAL_SEPARATOR_DEFAULT && digitGroupingSymbol == models.DIGIT_GROUPING_SYMBOL_DEFAULT { +func IsDecimalSeparatorEqualsDigitGroupingSymbol(decimalSeparator core.DecimalSeparator, digitGroupingSymbol core.DigitGroupingSymbol, locale string) bool { + if decimalSeparator == core.DECIMAL_SEPARATOR_DEFAULT && digitGroupingSymbol == core.DIGIT_GROUPING_SYMBOL_DEFAULT { return false } @@ -37,11 +39,11 @@ func IsDecimalSeparatorEqualsDigitGroupingSymbol(decimalSeparator models.Decimal localeTextItems := GetLocaleTextItems(locale) - if decimalSeparator == models.DECIMAL_SEPARATOR_DEFAULT { + if decimalSeparator == core.DECIMAL_SEPARATOR_DEFAULT { decimalSeparator = localeTextItems.DefaultTypes.DecimalSeparator } - if digitGroupingSymbol == models.DIGIT_GROUPING_SYMBOL_DEFAULT { + if digitGroupingSymbol == core.DIGIT_GROUPING_SYMBOL_DEFAULT { digitGroupingSymbol = localeTextItems.DefaultTypes.DigitGroupingSymbol } diff --git a/pkg/locales/base.go b/pkg/locales/base.go index 3f511ced..c3c7d664 100644 --- a/pkg/locales/base.go +++ b/pkg/locales/base.go @@ -1,6 +1,8 @@ package locales -import "github.com/mayswind/ezbookkeeping/pkg/models" +import ( + "github.com/mayswind/ezbookkeeping/pkg/core" +) // LocaleTextItems represents all text items need to be translated type LocaleTextItems struct { @@ -10,8 +12,8 @@ type LocaleTextItems struct { } type DefaultTypes struct { - DecimalSeparator models.DecimalSeparator - DigitGroupingSymbol models.DigitGroupingSymbol + DecimalSeparator core.DecimalSeparator + DigitGroupingSymbol core.DigitGroupingSymbol } // VerifyEmailTextItems represents text items need to be translated in verify mail diff --git a/pkg/locales/en.go b/pkg/locales/en.go index de34b69b..69e596b3 100644 --- a/pkg/locales/en.go +++ b/pkg/locales/en.go @@ -1,11 +1,13 @@ package locales -import "github.com/mayswind/ezbookkeeping/pkg/models" +import ( + "github.com/mayswind/ezbookkeeping/pkg/core" +) var en = &LocaleTextItems{ DefaultTypes: &DefaultTypes{ - DecimalSeparator: models.DECIMAL_SEPARATOR_DOT, - DigitGroupingSymbol: models.DIGIT_GROUPING_SYMBOL_COMMA, + DecimalSeparator: core.DECIMAL_SEPARATOR_DOT, + DigitGroupingSymbol: core.DIGIT_GROUPING_SYMBOL_COMMA, }, VerifyEmailTextItems: &VerifyEmailTextItems{ Title: "Verify Email", diff --git a/pkg/locales/zh_hans.go b/pkg/locales/zh_hans.go index 2354dbb1..bfffa9f1 100644 --- a/pkg/locales/zh_hans.go +++ b/pkg/locales/zh_hans.go @@ -1,11 +1,13 @@ package locales -import "github.com/mayswind/ezbookkeeping/pkg/models" +import ( + "github.com/mayswind/ezbookkeeping/pkg/core" +) var zhHans = &LocaleTextItems{ DefaultTypes: &DefaultTypes{ - DecimalSeparator: models.DECIMAL_SEPARATOR_DOT, - DigitGroupingSymbol: models.DIGIT_GROUPING_SYMBOL_COMMA, + DecimalSeparator: core.DECIMAL_SEPARATOR_DOT, + DigitGroupingSymbol: core.DIGIT_GROUPING_SYMBOL_COMMA, }, VerifyEmailTextItems: &VerifyEmailTextItems{ Title: "验证邮箱", diff --git a/pkg/models/user.go b/pkg/models/user.go index 2f31e81c..4576a574 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + "github.com/mayswind/ezbookkeeping/pkg/core" "github.com/mayswind/ezbookkeeping/pkg/settings" "github.com/mayswind/ezbookkeeping/pkg/utils" ) @@ -90,20 +91,20 @@ type User struct { Salt string `xorm:"VARCHAR(10) NOT NULL"` CustomAvatarType string `xorm:"VARCHAR(10)"` DefaultAccountId int64 - TransactionEditScope TransactionEditScope `xorm:"TINYINT NOT NULL"` - Language string `xorm:"VARCHAR(10)"` - DefaultCurrency string `xorm:"VARCHAR(3) NOT NULL"` - FirstDayOfWeek WeekDay `xorm:"TINYINT NOT NULL"` - LongDateFormat LongDateFormat `xorm:"TINYINT"` - ShortDateFormat ShortDateFormat `xorm:"TINYINT"` - LongTimeFormat LongTimeFormat `xorm:"TINYINT"` - ShortTimeFormat ShortTimeFormat `xorm:"TINYINT"` - DecimalSeparator DecimalSeparator `xorm:"TINYINT"` - DigitGroupingSymbol DigitGroupingSymbol `xorm:"TINYINT"` - DigitGrouping DigitGroupingType `xorm:"TINYINT"` - CurrencyDisplayType CurrencyDisplayType `xorm:"TINYINT"` - ExpenseAmountColor AmountColorType `xorm:"TINYINT"` - IncomeAmountColor AmountColorType `xorm:"TINYINT"` + TransactionEditScope TransactionEditScope `xorm:"TINYINT NOT NULL"` + Language string `xorm:"VARCHAR(10)"` + DefaultCurrency string `xorm:"VARCHAR(3) NOT NULL"` + FirstDayOfWeek WeekDay `xorm:"TINYINT NOT NULL"` + LongDateFormat LongDateFormat `xorm:"TINYINT"` + ShortDateFormat ShortDateFormat `xorm:"TINYINT"` + LongTimeFormat LongTimeFormat `xorm:"TINYINT"` + ShortTimeFormat ShortTimeFormat `xorm:"TINYINT"` + DecimalSeparator core.DecimalSeparator `xorm:"TINYINT"` + DigitGroupingSymbol core.DigitGroupingSymbol `xorm:"TINYINT"` + DigitGrouping core.DigitGroupingType `xorm:"TINYINT"` + CurrencyDisplayType CurrencyDisplayType `xorm:"TINYINT"` + ExpenseAmountColor AmountColorType `xorm:"TINYINT"` + IncomeAmountColor AmountColorType `xorm:"TINYINT"` Disabled bool Deleted bool `xorm:"NOT NULL"` EmailVerified bool `xorm:"NOT NULL"` @@ -115,27 +116,27 @@ type User struct { // UserBasicInfo represents a view-object of user basic info type UserBasicInfo struct { - Username string `json:"username"` - Email string `json:"email"` - Nickname string `json:"nickname"` - AvatarUrl string `json:"avatar"` - AvatarProvider string `json:"avatarProvider,omitempty"` - DefaultAccountId int64 `json:"defaultAccountId,string"` - TransactionEditScope TransactionEditScope `json:"transactionEditScope"` - Language string `json:"language"` - DefaultCurrency string `json:"defaultCurrency"` - FirstDayOfWeek WeekDay `json:"firstDayOfWeek"` - LongDateFormat LongDateFormat `json:"longDateFormat"` - ShortDateFormat ShortDateFormat `json:"shortDateFormat"` - LongTimeFormat LongTimeFormat `json:"longTimeFormat"` - ShortTimeFormat ShortTimeFormat `json:"shortTimeFormat"` - DecimalSeparator DecimalSeparator `json:"decimalSeparator"` - DigitGroupingSymbol DigitGroupingSymbol `json:"digitGroupingSymbol"` - DigitGrouping DigitGroupingType `json:"digitGrouping"` - CurrencyDisplayType CurrencyDisplayType `json:"currencyDisplayType"` - ExpenseAmountColor AmountColorType `json:"expenseAmountColor"` - IncomeAmountColor AmountColorType `json:"incomeAmountColor"` - EmailVerified bool `json:"emailVerified"` + Username string `json:"username"` + Email string `json:"email"` + Nickname string `json:"nickname"` + AvatarUrl string `json:"avatar"` + AvatarProvider string `json:"avatarProvider,omitempty"` + DefaultAccountId int64 `json:"defaultAccountId,string"` + TransactionEditScope TransactionEditScope `json:"transactionEditScope"` + Language string `json:"language"` + DefaultCurrency string `json:"defaultCurrency"` + FirstDayOfWeek WeekDay `json:"firstDayOfWeek"` + LongDateFormat LongDateFormat `json:"longDateFormat"` + ShortDateFormat ShortDateFormat `json:"shortDateFormat"` + LongTimeFormat LongTimeFormat `json:"longTimeFormat"` + ShortTimeFormat ShortTimeFormat `json:"shortTimeFormat"` + DecimalSeparator core.DecimalSeparator `json:"decimalSeparator"` + DigitGroupingSymbol core.DigitGroupingSymbol `json:"digitGroupingSymbol"` + DigitGrouping core.DigitGroupingType `json:"digitGrouping"` + CurrencyDisplayType CurrencyDisplayType `json:"currencyDisplayType"` + ExpenseAmountColor AmountColorType `json:"expenseAmountColor"` + IncomeAmountColor AmountColorType `json:"incomeAmountColor"` + EmailVerified bool `json:"emailVerified"` } // UserLoginRequest represents all parameters of user login request @@ -175,25 +176,25 @@ type UserResendVerifyEmailRequest struct { // UserProfileUpdateRequest represents all parameters of user updating profile request type UserProfileUpdateRequest struct { - Email string `json:"email" binding:"omitempty,notBlank,max=100,validEmail"` - Nickname string `json:"nickname" binding:"omitempty,notBlank,max=64"` - Password string `json:"password" binding:"omitempty,min=6,max=128"` - OldPassword string `json:"oldPassword" binding:"omitempty,min=6,max=128"` - DefaultAccountId int64 `json:"defaultAccountId,string" binding:"omitempty,min=1"` - TransactionEditScope *TransactionEditScope `json:"transactionEditScope" binding:"omitempty,min=0,max=6"` - Language string `json:"language" binding:"omitempty,min=2,max=16"` - DefaultCurrency string `json:"defaultCurrency" binding:"omitempty,len=3,validCurrency"` - FirstDayOfWeek *WeekDay `json:"firstDayOfWeek" binding:"omitempty,min=0,max=6"` - LongDateFormat *LongDateFormat `json:"longDateFormat" binding:"omitempty,min=0,max=3"` - ShortDateFormat *ShortDateFormat `json:"shortDateFormat" binding:"omitempty,min=0,max=3"` - LongTimeFormat *LongTimeFormat `json:"longTimeFormat" binding:"omitempty,min=0,max=3"` - ShortTimeFormat *ShortTimeFormat `json:"shortTimeFormat" binding:"omitempty,min=0,max=3"` - DecimalSeparator *DecimalSeparator `json:"decimalSeparator" binding:"omitempty,min=0,max=3"` - DigitGroupingSymbol *DigitGroupingSymbol `json:"digitGroupingSymbol" binding:"omitempty,min=0,max=4"` - DigitGrouping *DigitGroupingType `json:"digitGrouping" binding:"omitempty,min=0,max=2"` - CurrencyDisplayType *CurrencyDisplayType `json:"currencyDisplayType" binding:"omitempty,min=0,max=11"` - ExpenseAmountColor *AmountColorType `json:"expenseAmountColor" binding:"omitempty,min=0,max=4"` - IncomeAmountColor *AmountColorType `json:"incomeAmountColor" binding:"omitempty,min=0,max=4"` + Email string `json:"email" binding:"omitempty,notBlank,max=100,validEmail"` + Nickname string `json:"nickname" binding:"omitempty,notBlank,max=64"` + Password string `json:"password" binding:"omitempty,min=6,max=128"` + OldPassword string `json:"oldPassword" binding:"omitempty,min=6,max=128"` + DefaultAccountId int64 `json:"defaultAccountId,string" binding:"omitempty,min=1"` + TransactionEditScope *TransactionEditScope `json:"transactionEditScope" binding:"omitempty,min=0,max=6"` + Language string `json:"language" binding:"omitempty,min=2,max=16"` + DefaultCurrency string `json:"defaultCurrency" binding:"omitempty,len=3,validCurrency"` + FirstDayOfWeek *WeekDay `json:"firstDayOfWeek" binding:"omitempty,min=0,max=6"` + LongDateFormat *LongDateFormat `json:"longDateFormat" binding:"omitempty,min=0,max=3"` + ShortDateFormat *ShortDateFormat `json:"shortDateFormat" binding:"omitempty,min=0,max=3"` + LongTimeFormat *LongTimeFormat `json:"longTimeFormat" binding:"omitempty,min=0,max=3"` + ShortTimeFormat *ShortTimeFormat `json:"shortTimeFormat" binding:"omitempty,min=0,max=3"` + DecimalSeparator *core.DecimalSeparator `json:"decimalSeparator" binding:"omitempty,min=0,max=3"` + DigitGroupingSymbol *core.DigitGroupingSymbol `json:"digitGroupingSymbol" binding:"omitempty,min=0,max=4"` + DigitGrouping *core.DigitGroupingType `json:"digitGrouping" binding:"omitempty,min=0,max=2"` + CurrencyDisplayType *CurrencyDisplayType `json:"currencyDisplayType" binding:"omitempty,min=0,max=11"` + ExpenseAmountColor *AmountColorType `json:"expenseAmountColor" binding:"omitempty,min=0,max=4"` + IncomeAmountColor *AmountColorType `json:"incomeAmountColor" binding:"omitempty,min=0,max=4"` } // UserProfileUpdateResponse represents the data returns to frontend after updating profile diff --git a/pkg/services/users.go b/pkg/services/users.go index 32355548..8159fea2 100644 --- a/pkg/services/users.go +++ b/pkg/services/users.go @@ -248,15 +248,15 @@ func (s *UserService) UpdateUser(c *core.Context, user *models.User, modifyUserL updateCols = append(updateCols, "short_time_format") } - if models.DECIMAL_SEPARATOR_DEFAULT <= user.DecimalSeparator && user.DecimalSeparator <= models.DECIMAL_SEPARATOR_SPACE { + if core.DECIMAL_SEPARATOR_DEFAULT <= user.DecimalSeparator && user.DecimalSeparator <= core.DECIMAL_SEPARATOR_SPACE { updateCols = append(updateCols, "decimal_separator") } - if models.DIGIT_GROUPING_SYMBOL_DEFAULT <= user.DigitGroupingSymbol && user.DigitGroupingSymbol <= models.DIGIT_GROUPING_SYMBOL_APOSTROPHE { + if core.DIGIT_GROUPING_SYMBOL_DEFAULT <= user.DigitGroupingSymbol && user.DigitGroupingSymbol <= core.DIGIT_GROUPING_SYMBOL_APOSTROPHE { updateCols = append(updateCols, "digit_grouping_symbol") } - if models.DIGIT_GROUPING_TYPE_DEFAULT <= user.DigitGrouping && user.DigitGrouping <= models.DIGIT_GROUPING_TYPE_THOUSANDS_SEPARATOR { + if core.DIGIT_GROUPING_TYPE_DEFAULT <= user.DigitGrouping && user.DigitGrouping <= core.DIGIT_GROUPING_TYPE_THOUSANDS_SEPARATOR { updateCols = append(updateCols, "digit_grouping") }