前言:
迫于最近市场行情不错,公司又明令禁止上班进行与工作无关活动。
奈何人力终有穷,搬砖太久精神想放松下,明面摸鱼风险又太高,手上有台闲置的服务器(当然大家本地启动也行),身为掘金资深摸鱼区潜水用户🏆,便在周末撸了个本项目--功能较全面+安全摸鱼(如果你也用钉钉的话)+社交(拉上基友们在一个群,交流频率提升50%)的理财工具。
(摸鱼是不好的,一定要先完成本职工作!)
Go语言相关基础各位大神已经说得各种清楚了~,本文则不再赘述,本着实践是最好的学习方法,启动一个有意思的项目,也更有学习兴趣。便简单写了该项目,没有难点但使用到了Go语言的大部分基础运用,适用于有基本的Go语言基础的朋友,也希望给同样有摸鱼需求的同学带来帮助。
通过本项目你可以学习到:
- 启动一个http服务,注册增删改查接口
- go基本的语法实践
- go定时器、同步锁等的使用
- json的序列化与反序列化
- 文件的io处理
- 日志的输出
- 配置读取
- go爬取新浪和天天基金网站,获取基金or股票代码相关数据
- 调用钉钉机器人,推送数据
- 转换字符编码,如将gb2312编码转换为utf-8
- ......
项目说明:
该项目均使用原生Go库,无任何依赖组件,拉取即可启动,拉取基友一起摸鱼吧。
实现很粗糙,欢迎大家提出建议,一起学习,欢迎star~ 项目目录说明 碍于时间原因,不方便赘述过多,为便于阅读代码,先列个目录说明:
- loafer(项目目录)
- acl ---防腐层,此处粗糙的借鉴了领域设计,代码中有详细注释
- query_fund.go ---抓取基金数据
- query_stock.go ---抓取股票和指数
- sendmsg.go --- 发送爬取数据推送数据至dingding
- control ---控制层,编写接口和业务组合
- control.go
- run --- 启动入口,读取配置,注册接口,开启服务
- run.go
- server ---业务代码,对基金股票相关数据的增删改查
- query_fund.go
- ...... 具体实现详见代码
- share --- 定义全局共享的数据结构
- exponent.go --- 大盘指数数据的结构体
- fund.go --- 基金数据结构体
- stock.go --- 股票数据结构体
- util --- 使用到的通用工具方法
- util.go ---字符处理,编码转换等
- config.json --- 配置文件
- Dockerfile --- 编译镜像,貌似还有点问题,还在学习中...望大佬指教
- main.go ---项目启动入口
项目地址
功能
- 工作日9:00 -- 15:00 每半个小时(默认),抓取配置的基金、大盘及股票数据至钉钉机器人
- 通过Http请求实时请求爬虫和推送
- 通过Http请求,运行中添加基金或股票代码
预览
安装:
环境需求:
-
钉钉群,并创建钉钉机器人 help.aliyun.com/document_de… 注:若要安全设置,可添加"加"、"加特么的"关键字
-
go 环境
- linux 安装: www.jianshu.com/p/c43ebab25…
- windows安装 www.jianshu.com/writer#/not…
拉取本项目代码:
git clone https://github.com/stair-go/loafer.git
启动
修改了根目录的配置后(添加机器人,没有的话,可在控制台看输出),即可直接启动了
go run main.go
配置机器人地址:
注:其中"CodeAttr"为 基金代码,"Exponent"为大盘指数,"Stock"为股票代码,可在启动前配置,也可启动后,通过http接口添加;
接口说明:
默认端口为8189
查询
实时请求爬虫,并推送至dd群
- 示例: "ip:prot/" or "ip:prot/query"
添加基金代码
- 路径: "ip:prot/add/fund?code="
- 示例: 127.0.0.1:8189/add?code=213001
添加股票代码
- 路径: "ip:prot/add/stock?code="
- 示例: 127.0.0.1:8189/add/stock?code=sz002905
删除基金代码
- 路径: "ip:prot/delete/fund?code="
- 示例: 127.0.0.1:8189/delete?code=213001
删除股票代码
- 路径: "ip:prot/delete/stock?code="
- 示例: 127.0.0.1:8189/delete/stock?code=sz002905
小结
本文简单介绍了loafer项目,其使用最基础的go包实现了:
- 基金和股票数据的抓取
- 定时轮询或实时请求理财数据的推送
- 简单的增删改查,通过本地文件持久化
- 推送数据到第三方接口(钉钉机器银)
希望能帮助到想要了解和学习go语言的同学,也很高兴大家能实际用起来,更欢迎在楼下一起讨论理财知识~:
项目地址为,感谢star~ github.com/stair-go/lo…
(若有不合理处,欢迎指正,见谅,我还是Go语言菜鸡一个)