add ledger list

This commit is contained in:
BaoXuebin 2021-12-04 13:12:12 +08:00
parent ce0d1bbe41
commit 7853c2eab0
3 changed files with 42 additions and 2 deletions

View File

@ -25,6 +25,7 @@ type Config struct {
StartDate string `json:"startDate"` StartDate string `json:"startDate"`
IsBak bool `json:"isBak"` IsBak bool `json:"isBak"`
OpeningBalances string `json:"openingBalances"` OpeningBalances string `json:"openingBalances"`
CreateDate string `json:"createDate,omitempty"`
} }
type Account struct { type Account struct {

View File

@ -52,6 +52,7 @@ func RegisterRouter(router *gin.Engine) {
router.POST("/api/check", service.CheckBeancount) router.POST("/api/check", service.CheckBeancount)
router.GET("/api/config", service.QueryServerConfig) router.GET("/api/config", service.QueryServerConfig)
router.POST("/api/config", service.UpdateServerConfig) router.POST("/api/config", service.UpdateServerConfig)
router.GET("/api/ledger", service.QueryLedgerList)
router.POST("/api/ledger", service.OpenOrCreateLedger) router.POST("/api/ledger", service.OpenOrCreateLedger)
authorized := router.Group("/api/auth/") authorized := router.Group("/api/auth/")
authorized.Use(AuthorizedHandler()) authorized.Use(AuthorizedHandler())

View File

@ -3,13 +3,14 @@ package service
import ( import (
"crypto/sha1" "crypto/sha1"
"encoding/hex" "encoding/hex"
"fmt"
"github.com/beancount-gs/script" "github.com/beancount-gs/script"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"io" "io"
"io/ioutil" "io/ioutil"
"os/exec" "os/exec"
"sort"
"strings" "strings"
"time"
) )
func CheckBeancount(c *gin.Context) { func CheckBeancount(c *gin.Context) {
@ -26,6 +27,41 @@ func QueryServerConfig(c *gin.Context) {
OK(c, script.GetServerConfig()) OK(c, script.GetServerConfig())
} }
type QueryLedgerResult struct {
Mail string `json:"mail"`
Title string `json:"title"`
CreateDate string `json:"createDate"`
OperatingCurrency string `json:"operatingCurrency"`
}
type LedgerSort []QueryLedgerResult
func (s LedgerSort) Len() int {
return len(s)
}
func (s LedgerSort) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s LedgerSort) Less(i, j int) bool {
return s[i].CreateDate <= s[j].CreateDate && s[i].Mail <= s[j].Mail
}
func QueryLedgerList(c *gin.Context) {
result := make([]QueryLedgerResult, 0)
for _, config := range script.GetLedgerConfigMap() {
result = append(result, QueryLedgerResult{
Title: config.Title,
Mail: config.Mail,
CreateDate: config.CreateDate,
OperatingCurrency: config.OperatingCurrency,
})
}
sort.Sort(LedgerSort(result))
OK(c, result)
}
type UpdateConfigForm struct { type UpdateConfigForm struct {
Secret string `form:"secret" binding:"required"` Secret string `form:"secret" binding:"required"`
StartDate string `form:"startDate" binding:"required"` StartDate string `form:"startDate" binding:"required"`
@ -110,7 +146,6 @@ func OpenOrCreateLedger(c *gin.Context) {
} }
ledgerId := hex.EncodeToString(t.Sum(nil)) ledgerId := hex.EncodeToString(t.Sum(nil))
fmt.Println(ledgerId)
userLedger := script.GetLedgerConfigByMail(loginForm.LedgerName) userLedger := script.GetLedgerConfigByMail(loginForm.LedgerName)
if userLedger != nil { if userLedger != nil {
if ledgerId != userLedger.Id { if ledgerId != userLedger.Id {
@ -123,6 +158,7 @@ func OpenOrCreateLedger(c *gin.Context) {
resultMap["title"] = userLedger.Title resultMap["title"] = userLedger.Title
resultMap["currency"] = userLedger.OperatingCurrency resultMap["currency"] = userLedger.OperatingCurrency
resultMap["currencySymbol"] = script.GetCommoditySymbol(userLedger.OperatingCurrency) resultMap["currencySymbol"] = script.GetCommoditySymbol(userLedger.OperatingCurrency)
resultMap["createDate"] = userLedger.CreateDate
OK(c, resultMap) OK(c, resultMap)
return return
} }
@ -138,6 +174,7 @@ func OpenOrCreateLedger(c *gin.Context) {
resultMap["title"] = userLedger.Title resultMap["title"] = userLedger.Title
resultMap["currency"] = userLedger.OperatingCurrency resultMap["currency"] = userLedger.OperatingCurrency
resultMap["currencySymbol"] = script.GetCommoditySymbol(userLedger.OperatingCurrency) resultMap["currencySymbol"] = script.GetCommoditySymbol(userLedger.OperatingCurrency)
resultMap["createDate"] = userLedger.CreateDate
OK(c, resultMap) OK(c, resultMap)
} }
@ -168,6 +205,7 @@ func createNewLedger(loginForm LoginForm, ledgerId string) (*script.Config, erro
StartDate: startDate, StartDate: startDate,
OpeningBalances: openingBalances, OpeningBalances: openingBalances,
IsBak: loginForm.IsBak, IsBak: loginForm.IsBak,
CreateDate: time.Now().Format("2006-01-02"),
} }
// init ledger files // init ledger files
err := initLedgerFiles(script.GetTemplateLedgerConfigDirPath(), ledgerConfig.DataPath, ledgerConfig) err := initLedgerFiles(script.GetTemplateLedgerConfigDirPath(), ledgerConfig.DataPath, ledgerConfig)