Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c648e33

Browse files
committed
一些改进或优化;增加新会员侧边栏
1 parent db8c340 commit c648e33

File tree

14 files changed

+168
-62
lines changed

14 files changed

+168
-62
lines changed

websites/code/studygolang/src/controller/ajax.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,15 @@ func OtherTopicsHandler(rw http.ResponseWriter, req *http.Request) {
4444
// uri: /websites/stat.json
4545
func StatHandler(rw http.ResponseWriter, req *http.Request) {
4646
articleTotal := service.ArticlesTotal()
47+
projectTotal := service.ProjectsTotal()
4748
topicTotal := service.TopicsTotal()
4849
cmtTotal := service.CommentsTotal(-1)
4950
resourceTotal := service.ResourcesTotal()
5051
userTotal := service.CountUsers()
5152

5253
data := map[string]int{
5354
"article": articleTotal,
55+
"project": projectTotal,
5456
"topic": topicTotal,
5557
"resource": resourceTotal,
5658
"comment": cmtTotal,
@@ -210,7 +212,7 @@ func HotNodesHandler(rw http.ResponseWriter, req *http.Request) {
210212
}
211213

212214
// 活跃会员
213-
// uri: /user/active.json
215+
// uri: /users/active.json
214216
func ActiveUserHandler(rw http.ResponseWriter, req *http.Request) {
215217
activeUsers := service.FindActiveUsers(0, 9)
216218
buf, err := json.Marshal(activeUsers)
@@ -222,6 +224,19 @@ func ActiveUserHandler(rw http.ResponseWriter, req *http.Request) {
222224
fmt.Fprint(rw, `{"ok": 1, "data":`+string(buf)+`}`)
223225
}
224226

227+
// 新加入会员
228+
// uri: /users/newest.json
229+
func NewestUserHandler(rw http.ResponseWriter, req *http.Request) {
230+
newestUsers := service.FindNewUsers(0, 9)
231+
buf, err := json.Marshal(newestUsers)
232+
if err != nil {
233+
logger.Errorln("[NewestUserHandler] json.marshal error:", err)
234+
fmt.Fprint(rw, `{"ok": 0, "error":"解析json出错"}`)
235+
return
236+
}
237+
fmt.Fprint(rw, `{"ok": 1, "data":`+string(buf)+`}`)
238+
}
239+
225240
const maxImageSize = 5 << 20 // 5M
226241

227242
func UploadImageHandler(rw http.ResponseWriter, req *http.Request) {

websites/code/studygolang/src/controller/article.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import (
1717
"util"
1818
)
1919

20-
const limit = 20
21-
2220
// 在需要评论(喜欢)且要回调的地方注册评论(喜欢)对象
2321
func init() {
2422
// 注册评论(喜欢)对象
@@ -29,6 +27,8 @@ func init() {
2927
// 网友文章列表页
3028
// uri: /articles
3129
func ArticlesHandler(rw http.ResponseWriter, req *http.Request) {
30+
limit := 20
31+
3232
lastId := req.FormValue("lastid")
3333
if lastId == "" {
3434
lastId = "0"
@@ -47,6 +47,8 @@ func ArticlesHandler(rw http.ResponseWriter, req *http.Request) {
4747
} else {
4848
util.Redirect(rw, req, "/articles")
4949
}
50+
51+
return
5052
}
5153

5254
var (
@@ -102,10 +104,12 @@ func ArticleDetailHandler(rw http.ResponseWriter, req *http.Request) {
102104
article, prevNext, err := service.FindArticlesById(vars["id"])
103105
if err != nil {
104106
util.Redirect(rw, req, "/articles")
107+
return
105108
}
106109

107110
if article == nil || article.Id == 0 || article.Status == model.StatusOffline {
108111
util.Redirect(rw, req, "/articles")
112+
return
109113
}
110114

111115
likeFlag := 0

websites/code/studygolang/src/controller/project.go

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ func init() {
2828
// 开源项目列表页
2929
// uri: /projects
3030
func ProjectsHandler(rw http.ResponseWriter, req *http.Request) {
31+
limit := 20
32+
3133
lastId := req.FormValue("lastid")
3234
if lastId == "" {
3335
lastId = "0"
@@ -39,13 +41,14 @@ func ProjectsHandler(rw http.ResponseWriter, req *http.Request) {
3941
}
4042

4143
num := len(projects)
42-
4344
if num == 0 {
4445
if lastId == "0" {
4546
util.Redirect(rw, req, "/")
4647
} else {
4748
util.Redirect(rw, req, "/projects")
4849
}
50+
51+
return
4952
}
5053

5154
var (
@@ -97,10 +100,12 @@ func ProjectsHandler(rw http.ResponseWriter, req *http.Request) {
97100
// uri: /project/new{json:(|.json)}
98101
func NewProjectHandler(rw http.ResponseWriter, req *http.Request) {
99102
vars := mux.Vars(req)
100-
name := req.FormValue("name")
103+
name := req.PostFormValue("name")
101104
// 请求新建项目页面
102105
if name == "" || req.Method != "POST" || vars["json"] == "" {
106+
project := model.NewOpenProject()
103107
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/projects/new.html")
108+
filter.SetData(req, map[string]interface{}{"project": project, "activeProjects": "active"})
104109
return
105110
}
106111

@@ -113,13 +118,40 @@ func NewProjectHandler(rw http.ResponseWriter, req *http.Request) {
113118
fmt.Fprint(rw, `{"ok": 1, "data":""}`)
114119
}
115120

121+
// 修改项目
122+
// uri: /project/modify{json:(|.json)}
123+
func ModifyProjectHandler(rw http.ResponseWriter, req *http.Request) {
124+
id := req.FormValue("id")
125+
if id == "" {
126+
util.Redirect(rw, req, "/projects")
127+
return
128+
}
129+
130+
vars := mux.Vars(req)
131+
// 请求编辑项目页面
132+
if req.Method != "POST" || vars["json"] == "" {
133+
project := service.FindProject(id)
134+
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/projects/new.html")
135+
filter.SetData(req, map[string]interface{}{"project": project, "activeProjects": "active"})
136+
return
137+
}
138+
139+
err := service.PublishProject("", req.PostForm)
140+
if err != nil {
141+
fmt.Fprint(rw, `{"ok": 0, "error":"内部服务错误!"}`)
142+
return
143+
}
144+
fmt.Fprint(rw, `{"ok": 1, "data":""}`)
145+
}
146+
116147
// 项目详情
117148
// uri: /p/{uniq}
118149
func ProjectDetailHandler(rw http.ResponseWriter, req *http.Request) {
119150
vars := mux.Vars(req)
120151
project := service.FindProject(vars["uniq"])
121-
if project == nil {
152+
if project == nil || project.Status != model.StatusOnline {
122153
util.Redirect(rw, req, "/projects")
154+
return
123155
}
124156

125157
likeFlag := 0

websites/code/studygolang/src/controller/topic.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ func TopicDetailHandler(rw http.ResponseWriter, req *http.Request) {
7474
topic, replies, err := service.FindTopicByTid(vars["tid"])
7575
if err != nil {
7676
util.Redirect(rw, req, "/topics")
77+
return
7778
}
7879

7980
service.Views.Incr(req, model.TYPE_TOPIC, util.MustInt(vars["tid"]))

websites/code/studygolang/src/model/dao.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ func (this *Dao) Persist(entity interface{}) error {
240240
return err
241241
}
242242

243-
logger.Debugln("Persist sql:", strSql)
243+
logger.Debugln("Persist sql:", strSql, ";args:", args)
244244

245245
err = this.Open()
246246
if err != nil {
@@ -334,9 +334,9 @@ func genPersistParams(entity interface{}) (string, []interface{}, error) {
334334
}
335335

336336
if pk == "1" {
337-
where = append(where, tag+"=?")
337+
where = append(where, "`"+tag+"`"+"=?")
338338
} else {
339-
set = append(set, tag+"=?")
339+
set = append(set, "`"+tag+"`"+"=?")
340340
}
341341
}
342342

websites/code/studygolang/src/model/openproject.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
// 开源项目信息
1515
type OpenProject struct {
16-
Id int `json:"id"`
16+
Id int `json:"id" pk:"1"`
1717
Name string `json:"name"`
1818
Category string `json:"category"`
1919
Uri string `json:"uri"`
@@ -29,13 +29,13 @@ type OpenProject struct {
2929
Lang string `json:"lang"`
3030
Os string `json:"os"`
3131
Tags string `json:"tags"`
32-
Username string `json:"username"`
33-
Viewnum int `json:"viewnum"`
34-
Cmtnum int `json:"cmtnum"`
35-
Likenum int `json:"likenum"`
32+
Username string `json:"username,omitempty"`
33+
Viewnum int `json:"viewnum,omitempty"`
34+
Cmtnum int `json:"cmtnum,omitempty"`
35+
Likenum int `json:"likenum,omitempty"`
3636
Status int `json:"status"`
37-
Ctime string `json:"ctime"`
38-
Mtime string `json:"mtime"`
37+
Ctime string `json:"ctime,omitempty"`
38+
Mtime string `json:"mtime,omitempty"`
3939

4040
// 数据库访问对象
4141
*Dao

websites/code/studygolang/src/server/studygolang/router.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ func initRouter() *mux.Router {
6464

6565
// 项目
6666
router.HandleFunc("/project/new{json:(|.json)}", NewProjectHandler).AppendFilterChain(loginFilterChain)
67+
router.HandleFunc("/project/modify{json:(|.json)}", ModifyProjectHandler).AppendFilterChain(loginFilterChain)
6768
router.HandleFunc("/p/{uniq}", ProjectDetailHandler)
6869
router.HandleFunc("/projects", ProjectsHandler)
6970
router.HandleFunc("/project/uri.json", ProjectUriHandler)
@@ -118,6 +119,8 @@ func initRouter() *mux.Router {
118119
router.HandleFunc("/comments/recent.json", RecentCommentHandler)
119120
// 活跃会员
120121
router.HandleFunc("/users/active.json", ActiveUserHandler)
122+
// 新会员
123+
router.HandleFunc("/users/newest.json", NewestUserHandler)
121124

122125
// 文件上传(图片)
123126
router.HandleFunc("/upload/image.json", UploadImageHandler).AppendFilterChain(loginFilterChain)

websites/code/studygolang/src/service/project.go

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,22 @@ import (
1717
"util"
1818
)
1919

20-
func PublishProject(username string, form url.Values) error {
21-
if ProjectUriExists(form.Get("uri")) {
22-
return errors.New("uri存在")
20+
func PublishProject(username string, form url.Values) (err error) {
21+
isModify := form.Get("id") != ""
22+
23+
if !isModify && ProjectUriExists(form.Get("uri")) {
24+
err = errors.New("uri存在")
25+
return
2326
}
2427

2528
project := model.NewOpenProject()
2629
util.ConvertAssign(project, form)
2730

28-
project.Username = username
29-
project.Ctime = util.TimeNow()
31+
if !isModify {
32+
project.Username = username
33+
project.Ctime = util.TimeNow()
34+
}
35+
3036
project.Uri = strings.ToLower(project.Uri)
3137

3238
github := "github.com"
@@ -35,13 +41,17 @@ func PublishProject(username string, form url.Values) error {
3541
project.Repo = project.Src[pos+len(github)+1:]
3642
}
3743

38-
_, err := project.Insert()
44+
if !isModify {
45+
_, err = project.Insert()
46+
} else {
47+
err = project.Persist(project)
48+
}
3949

4050
if err != nil {
4151
logger.Errorln("Publish Project error:", err)
4252
}
4353

44-
return err
54+
return
4555
}
4656

4757
func ProjectUriExists(uri string) bool {
@@ -62,7 +72,7 @@ func ProjectUriExists(uri string) bool {
6272
func FindProjects(lastId, limit string) []*model.OpenProject {
6373
project := model.NewOpenProject()
6474

65-
cond := "status IN(0,1)"
75+
cond := "status=" + strconv.Itoa(model.StatusOnline)
6676
if lastId != "0" {
6777
cond += " AND id<" + lastId
6878
}
@@ -114,6 +124,15 @@ func FindProjectsByIds(ids []int) []*model.OpenProject {
114124
return projects
115125
}
116126

127+
// 开源项目总数
128+
func ProjectsTotal() (total int) {
129+
total, err := model.NewOpenProject().Count()
130+
if err != nil {
131+
logger.Errorln("project service ProjectsTotal error:", err)
132+
}
133+
return
134+
}
135+
117136
// 项目评论
118137
type ProjectComment struct{}
119138

websites/code/studygolang/src/service/user.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ func FindActiveUsers(start, num int) []*model.UserActive {
230230
return activeUsers
231231
}
232232

233+
// 最新加入会员
233234
func FindNewUsers(start, num int) []*model.User {
234235
users, err := model.NewUser().Order("ctime DESC").Limit(strconv.Itoa(start) + "," + strconv.Itoa(num)).FindAll([]string{"uid", "username", "email", "avatar", "ctime"}...)
235236
if err != nil {

websites/code/studygolang/static/js/sidebar.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,16 @@ $(function(){
167167
$('.sb-content .cmt-list ul').html(content);
168168
}
169169
}
170-
170+
171171
var userActive = function(data) {
172+
userList(data, '#active-list');
173+
}
174+
175+
var userNewest = function(data) {
176+
userList(data, '#newest-list');
177+
}
178+
179+
var userList = function(data, id) {
172180
if (data.ok) {
173181
data = data.data;
174182

@@ -186,7 +194,7 @@ $(function(){
186194
'<div class="name"><a href="/user/'+data[i].username+'" title="'+data[i].username+'">'+data[i].username+'</a></div>'+
187195
'</li>';
188196
}
189-
$('.sb-content .user-list ul').html(content);
197+
$('.sb-content '+id+' ul').html(content);
190198
}
191199
}
192200

@@ -198,7 +206,8 @@ $(function(){
198206
'<li>博文数: <span>'+data.article+'</span> 篇</li>'+
199207
'<li>话题数: <span>'+data.topic+'</span> 个</li>'+
200208
'<li>评论数: <span>'+data.comment+'</span> 条</li>'+
201-
'<li>资源数: <span>'+data.resource+'</span> 个</li>';
209+
'<li>资源数: <span>'+data.resource+'</span> 个</li>'+
210+
'<li>项目数: <span>'+data.project+'</span> 个</li>';
202211

203212
$('.sb-content .stat-list ul').html(content);
204213
}
@@ -210,7 +219,8 @@ $(function(){
210219
"/projects/recent.json": {"func": projectRecent, "class": ".project-list"},
211220
"/resources/recent.json": {"func": resourceRecent, "class": ".resource-list"},
212221
"/comments/recent.json": {"func": commentRecent, "class": ".cmt-list"},
213-
"/users/active.json": {"func": userActive, "class": ".user-list"},
222+
"/users/active.json": {"func": userActive, "class": "#active-list"},
223+
"/users/newest.json": {"func": userNewest, "class": "#newest-list"},
214224
"/websites/stat.json": {"func": websiteStat, "class": ".stat-list"},
215225
};
216226

websites/code/studygolang/template/articles/detail.html

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
{{define "seo"}}<meta name="keywords" content="{{.article.Title}} Go语言博客文章, Go语言博文, Go语言, Golang, Go中文社区,Golang中文社区, Go语言社区, Go语言学习园地">
33
<meta name="description" content="{{substring .article.Txt 200 ""}}">{{end}}
44
{{define "content"}}
5-
<div class="row header_title">
6-
<div class="col-lg-12 col-md-12 col-sm-12">
7-
</div>
5+
<div class="row banner">
86
</div>
97
<div class="row">
108
<div class="col-lg-9 col-md-8 col-sm-7">
9+
<ol class="breadcrumb">
10+
<li><a href="/"><i class="glyphicon glyphicon-home"></i> 首页</a></li>
11+
<li><a href="/articles">网友博文</a></li>
12+
<li class="active">{{.article.Title}}</li>
13+
</ol>
1114
<div class="page box_white">
1215
<div class="title text-center">
1316
<h1>{{.article.Title}}</h1>

0 commit comments

Comments
 (0)