add ledger list
This commit is contained in:
parent
ce0d1bbe41
commit
7853c2eab0
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue