create project
This commit is contained in:
89
fund/fund.go
Normal file
89
fund/fund.go
Normal file
@@ -0,0 +1,89 @@
|
||||
/**
|
||||
* @Author: jager
|
||||
* @Email: lhj168os@gmail.com
|
||||
* @File: fund
|
||||
* @Date: 2021/12/1 3:05 下午
|
||||
* @package: fund
|
||||
* @Version: v1.0.0
|
||||
*
|
||||
* @Description:
|
||||
*
|
||||
*/
|
||||
|
||||
package fund
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/jageros/hawox/errcode"
|
||||
"github.com/jageros/hawox/httpc"
|
||||
"github.com/jageros/hawox/logx"
|
||||
"regexp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const (
|
||||
baseUrl = "http://fundgz.1234567.com.cn/js/%s.js"
|
||||
)
|
||||
|
||||
var (
|
||||
jsonStr = regexp.MustCompile(`{(.*?)}`)
|
||||
)
|
||||
|
||||
type fund struct {
|
||||
Code string `json:"fundcode"`
|
||||
Name string `json:"name"`
|
||||
UnitVal string `json:"dwjz"`
|
||||
EstimateVal string `json:"gsz"`
|
||||
RisePer string `json:"gszzl"`
|
||||
UpdateTime string `json:"gztime"`
|
||||
}
|
||||
|
||||
func (f *fund) Msg() string {
|
||||
var rise string
|
||||
last, err1 := strconv.ParseFloat(f.UnitVal, 64)
|
||||
cur, err2 := strconv.ParseFloat(f.EstimateVal, 64)
|
||||
if err1 == nil && err2 == nil {
|
||||
rise = fmt.Sprintf("%.5f", cur-last)
|
||||
}
|
||||
msg := fmt.Sprintf(msgTemplate, f.Name, f.UpdateTime, f.UnitVal, f.EstimateVal, rise, f.RisePer)
|
||||
return msg
|
||||
}
|
||||
|
||||
func FundsMsg(codes ...string) string {
|
||||
if len(codes) <= 0 {
|
||||
return ""
|
||||
}
|
||||
var msg = "基金定投估值 >>>\n"
|
||||
for _, code := range codes {
|
||||
fd, err := newFund(code)
|
||||
if err != nil {
|
||||
logx.Error(err)
|
||||
continue
|
||||
}
|
||||
msg += fd.Msg()
|
||||
}
|
||||
return msg
|
||||
}
|
||||
|
||||
func newFund(code string) (*fund, error) {
|
||||
url := fmt.Sprintf(baseUrl, code)
|
||||
result, err := httpc.Request(httpc.GET, url, httpc.FORM, nil, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ss := jsonStr.FindStringSubmatch(string(result))
|
||||
if len(ss) <= 0 {
|
||||
return nil, errcode.New(404, "找不到基金:"+code)
|
||||
}
|
||||
ff := &fund{}
|
||||
err = json.Unmarshal([]byte(ss[0]), ff)
|
||||
return ff, err
|
||||
}
|
||||
|
||||
const msgTemplate = `%s
|
||||
更新时间:%s
|
||||
单位净值:%s 估算净值:%s
|
||||
估算涨幅:(%s) %s%%
|
||||
|
||||
`
|
||||
23
fund/fund_test.go
Normal file
23
fund/fund_test.go
Normal file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* @Author: jager
|
||||
* @Email: lhj168os@gmail.com
|
||||
* @File: fund_test
|
||||
* @Date: 2021/12/1 3:23 下午
|
||||
* @package: fund
|
||||
* @Version: v1.0.0
|
||||
*
|
||||
* @Description:
|
||||
*
|
||||
*/
|
||||
|
||||
package fund
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_Fund(t *testing.T) {
|
||||
msg := FundsMsg()
|
||||
fmt.Println(msg)
|
||||
}
|
||||
Reference in New Issue
Block a user