{"id":25972317,"url":"https://github.com/torchcc/mk-api","last_synced_at":"2026-05-05T16:01:56.687Z","repository":{"id":144419337,"uuid":"264602909","full_name":"torchcc/mk-api","owner":"torchcc","description":null,"archived":false,"fork":false,"pushed_at":"2021-03-21T05:30:55.000Z","size":600,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-05T13:58:11.356Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/torchcc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-17T06:58:41.000Z","updated_at":"2022-05-17T04:28:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"8003f5d1-55b5-469a-9968-6b441778b409","html_url":"https://github.com/torchcc/mk-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/torchcc/mk-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torchcc%2Fmk-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torchcc%2Fmk-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torchcc%2Fmk-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torchcc%2Fmk-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/torchcc","download_url":"https://codeload.github.com/torchcc/mk-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torchcc%2Fmk-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32656654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-05T00:33:05.128Z","updated_at":"2026-05-05T16:01:56.682Z","avatar_url":"https://github.com/torchcc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mk-api\n微信公众号\n\n## 编程规范：参考阿里java开发手册，一下挑几点和以往习惯不同的\n\n- 数据库名用名词单数！\n- 包名用名词单数！\n\n\n\n## ORM\n- 可以使用GORM， 也可以不用，看自己喜好， 可以混着用。\n\n\n## 项目结构\n\n```\n.\n├── FAQ.md\n├── README.md\n├── deployment\n│   ├── const.go\n│   ├── const_test.go\n│   ├── local\n│   │   ├── Dockerfile\n│   │   ├── deploy.json\n│   │   └── superconf.json\n│   ├── prod\n│   │   ├── Dockerfile\n│   │   ├── deploy.json\n│   │   └── superconf.json\n│   └── test\n│       ├── Dockerfile\n│       ├── deploy.json\n│       └── superconf.json\n├── docs\n│   ├── docs.go\n│   ├── swagger.json\n│   └── swagger.yaml\n├── go.mod\n├── go.sum\n├── library\n│   ├── README.md\n│   ├── ecode\n│   │   ├── common_ecode.go\n│   │   ├── ecode.go\n│   │   └── ecode_test.go\n│   ├── superconf\n│   │   └── config.go\n│   └── util\n│       ├── conf\n│       │   ├── conf.go\n│       │   └── conf_test.go\n│       ├── cos\n│       │   ├── client.go\n│       │   ├── client_test.go\n│       │   ├── gg.jpeg\n│       │   └── mm.jpeg\n│       ├── json_util.go\n│       └── sms\n│           ├── sms.go\n│           └── sms_test.go\n├── main.go\n└── server\n    ├── conf\n    │   ├── config.go\n    │   └── config_test.go\n    ├── controller    // 也叫resource 层\n    │   └── user_controller.go\n    ├── dao     // 数据库连接池\n    │   ├── dao.go\n    │   ├── redis.go\n    │   ├── redis_test.go\n    │   ├── sql.go\n    │   ├── sql_test.go\n    │   └── sqlx.go\n    ├── dto   // Data transfer object,  接收的参数获， 或者返回的结构体都可以在这里定义。\n    │   └── common.go\n    ├── middleware   /// 中间件\n    │   ├── logger.go\n    │   ├── middleware.go\n    │   └── response.go\n    ├── model          // 模型层， data access object(DAO) 定义在这里\n    │   └── user_model.go\n    ├── mq\n    │   └── kafka\n    │       ├── kafka.go\n    │       └── kafka_test.go\n    ├── router  // 路由层\n    │   └── router.go\n    ├── service   // 业务逻辑层， 也叫logic, operation 层\n    │   └── user_service.go\n    └── util\n        ├── const.go\n        ├── log.go\n        └── log_test.go\n\n\n```\n\n- doc: api文档， 用[go-swagger](https://goswagger.io/tutorial/todo-list.html)写文档\n    - [自动生成文档](https://juejin.im/post/5b05138cf265da0ba7701a37)\n\n## 日志：\n- 使用[logrus](https://github.com/sohlich/elogrus)记录日志\n- 尽量使用`WithFields`打印日志, Feild中的字段要和当前打印日志的上下文相关， 如订单相关的日志如下打印\n\n```go\nLog.WithFields(logrus.Fields{\"order_id\": 123456, \"user_id\": 1}).Errorf(\"订单付款失败: err: %s\", err)\n```\n\n## 单元测试：\n \n- 所有单元测试要不能依赖其他包，需要单独可以运行（见阿里java开发手册）。 \n\n## 配置和地址:\n\n- mongo, mysql, redis的主机， 端口， 账户， 密码 见zookeeper 的`superconf/union`\n\n# go web 项目模版\n - https://github.com/eddycjy/go-gin-example\n - https://github.com/Keegan-y/gin_scaffold#%E6%96%87%E4%BB%B6%E5%88%86%E5%B1%82\n - https://github.com/e421083458/gin_scaffold\n - https://github.com/e421083458/go_gateway (这个项目的路由，和controller分层很值得学习)\n \n \n# 运行： \n```bash\ngo get -u github.com/swaggo/swag/cmd/swag \nswag init\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorchcc%2Fmk-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftorchcc%2Fmk-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorchcc%2Fmk-api/lists"}