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

Skip to content

Commit c0a8c8e

Browse files
committed
增加活跃用户功能
修正mac编译不成功bug
1 parent 2179b86 commit c0a8c8e

File tree

10 files changed

+62
-42
lines changed

10 files changed

+62
-42
lines changed

websites/code/studygolang/src/filter/login.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package filter
88

99
import (
10+
"config"
1011
"github.com/gorilla/context"
1112
"github.com/gorilla/sessions"
1213
"github.com/studygolang/mux"
@@ -72,8 +73,7 @@ func setUser(req *http.Request, user map[string]interface{}) {
7273
context.Set(req, userkey, user)
7374
}
7475

75-
// TODO:cookie secret key
76-
var Store = sessions.NewCookieStore([]byte("fwe323"))
76+
var Store = sessions.NewCookieStore([]byte(config.Config["cookie_secret"]))
7777

7878
// 获得当前登录用户
7979
func CurrentUser(req *http.Request) (map[string]interface{}, bool) {

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,18 @@ func (this *User) colFieldMap() map[string]interface{} {
205205
}
206206

207207
// 活跃用户信息
208+
// 活跃度规则:
209+
// 1、注册成功后 +2
210+
// 2、登录一次 +1
211+
// 3、修改资料 +1
212+
// 4、发帖子 + 10
213+
// 5、评论 +5
208214
type UserActive struct {
209215
Uid int `json:"uid"`
210216
Username string `json:"username"`
211217
Email string `json:"email"`
212218
Avatar string `json:"avatar"`
219+
Weight int `json:"weight"`
213220
Mtime string `json:"mtime"`
214221

215222
// 内嵌
@@ -285,8 +292,8 @@ func (this *UserActive) Order(order string) *UserActive {
285292
}
286293

287294
func (this *UserActive) prepareInsertData() {
288-
this.columns = []string{"uid", "username", "email", "avatar"}
289-
this.colValues = []interface{}{this.Uid, this.Username, this.Email, this.Avatar}
295+
this.columns = []string{"uid", "username", "email", "avatar", "weight"}
296+
this.colValues = []interface{}{this.Uid, this.Username, this.Email, this.Avatar, this.Weight}
290297
}
291298

292299
func (this *UserActive) colFieldMap() map[string]interface{} {
@@ -295,6 +302,7 @@ func (this *UserActive) colFieldMap() map[string]interface{} {
295302
"username": &this.Username,
296303
"email": &this.Email,
297304
"avatar": &this.Avatar,
305+
"weight": &this.Weight,
298306
"mtime": &this.Mtime,
299307
}
300308
}

websites/code/studygolang/src/process/die.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

websites/code/studygolang/src/process/exec_linux.go

Lines changed: 0 additions & 12 deletions
This file was deleted.

websites/code/studygolang/src/process/exec_windows.go

Lines changed: 0 additions & 14 deletions
This file was deleted.

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,8 @@ func PostComment(objid, objtype, uid int, content string, objname string) error
8686
go commenter.UpdateComment(cid, objid, uid, time.Now().Format("2006-01-02 15:04:05"))
8787
}
8888

89+
// 发评论,活跃度+5
90+
go IncUserWeight("uid="+strconv.Itoa(uid), 5)
91+
8992
return nil
9093
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ func PublishTopic(topic *model.Topic) (errMsg string, err error) {
3131
logger.Errorln(errMsg, ":", err)
3232
return
3333
}
34+
35+
// 发布帖子,活跃度+10
36+
go IncUserWeight("uid="+strconv.Itoa(topic.Uid), 10)
37+
3438
return
3539
}
3640

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

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ func CreateUser(form url.Values) (errMsg string, err error) {
2020
user := model.NewUser()
2121
err = util.ConvertAssign(user, form)
2222
if err != nil {
23+
logger.Errorln("user ConvertAssign error", err)
2324
errMsg = err.Error()
2425
return
2526
}
@@ -58,10 +59,23 @@ func CreateUser(form url.Values) (errMsg string, err error) {
5859
}
5960
userRole.Roleid = roleId
6061
userRole.Uid = uid
61-
userRole.Insert()
62+
if _, err = userRole.Insert(); err != nil {
63+
logger.Errorln("userRole insert Error:", err)
64+
}
65+
66+
// 存用户活跃信息,初始活跃+2
67+
userActive := model.NewUserActive()
68+
userActive.Uid = uid
69+
userActive.Username = user.Username
70+
userActive.Email = user.Email
71+
userActive.Weight = 2
72+
if _, err = userActive.Insert(); err != nil {
73+
logger.Errorln("UserActive insert Error:", err)
74+
}
6275
return
6376
}
6477

78+
// 修改用户资料
6579
func UpdateUser(form url.Values) (errMsg string, err error) {
6680
fields := []string{"name", "open", "city", "company", "github", "weibo", "website", "status", "introduce"}
6781
setClause := GenSetClause(form, fields)
@@ -72,6 +86,10 @@ func UpdateUser(form url.Values) (errMsg string, err error) {
7286
errMsg = "对不起,服务器内部错误,请稍后再试!"
7387
return
7488
}
89+
90+
// 修改用户资料,活跃度+1
91+
go IncUserWeight("username="+username, 1)
92+
7593
return
7694
}
7795

@@ -236,6 +254,10 @@ func Login(username, passwd string) (*model.UserLogin, error) {
236254
logger.Infof("用户名 %s 填写的密码错误", username)
237255
return nil, ErrPasswd
238256
}
257+
258+
// 登录,活跃度+1
259+
go IncUserWeight("uid="+strconv.Itoa(userLogin.Uid), 1)
260+
239261
return userLogin, nil
240262
}
241263

@@ -274,3 +296,10 @@ func GenSetClause(form url.Values, fields []string) string {
274296
}
275297
return ""
276298
}
299+
300+
// 增加或减少用户活跃度
301+
func IncUserWeight(where string, weight int) {
302+
if err := model.NewUserActive().Where(where).Increment("weight", weight); err != nil {
303+
logger.Errorln("UserActive update Error:", err)
304+
}
305+
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ <h1 class="entry-title">{{.topic.title}}</h1>
2929
</div>
3030
</div>
3131
<div class="body entry-content">{{.topic.content}}</div>
32+
<!--
3233
<div class="tools pull-right">
3334
<a href="#" data-followed="false" data-id="{{.topic.tid}}" onclick="return Topics.follow(this);" rel="twipsy" data-original-title=""><i class="icon small_follow"></i> 关注</a>
3435
<a href="#" class="likeable" data-count="1" data-id="{{.topic.tid}}" data-state="" data-type="Topic" onclick="return App.likeable(this);" rel="twipsy" data-original-title="喜欢"><i class="icon small_like"></i> <span>1人喜欢</span></a>
3536
<a href="#" class="icon small_bookmark" data-id="{{.topic.tid}}" onclick="return Topics.favorite(this);" rel="twipsy" data-original-title="收藏"></a>
3637
<a href="/topics/9274/edit" class="icon small_edit" title="修改本帖"></a>
3738
</div>
39+
-->
3840
<div class="social-share-button" data-title="{{.topic.title}} | Golang China | Golang中文社区 | Go语言学习园地 via: @studygolang " data-img="" data-url="">
3941
<a href="#" class="social-share-button-weibo" data-site="weibo" onclick="return SocialShareButton.share(this);" rel="nofollow " title="分享到新浪微博"></a>
4042
<a href="#" class="social-share-button-tqq" data-site="tqq" onclick="return SocialShareButton.share(this);" rel="nofollow " title="分享到腾讯微博"></a>
@@ -77,6 +79,7 @@ <h1 class="entry-title">{{.topic.title}}</h1>
7779
</div>
7880
</div>
7981
{{end}}
82+
{{if .me}}
8083
<div id="reply" class="form box">
8184
<form accept-charset="UTF-8" action="/comment/{{.topic.tid}}.json" class="new_reply" data-remote="true" id="new_reply" method="post">
8285
<div style="margin:0;padding:0;display:inline">
@@ -118,6 +121,13 @@ <h4>格式说明</h4>
118121
</span>
119122
</form>
120123
</div>
124+
{{else}}
125+
<div id="reply" class="form box">
126+
<div style="padding:20px;">
127+
需要 <a href="/account/login" class="btn btn-primary">登录</a> 后方可回复, 如果你还没有账号你可以 <a href="/account/register" class="btn btn-danger">注册</a> 一个帐号。
128+
</div>
129+
</div>
130+
{{end}}
121131
</div>
122132

123133
<div class="sidebar">
@@ -156,6 +166,8 @@ <h2>节点下其他话题</h2>
156166
<script type="text/javascript" src="/static/js/social-share-button.js"></script>
157167
<script type="text/javascript">
158168
(function () {
169+
{{if .me}}
170+
// 评论框
159171
var topicConverter = Markdown.getSanitizingConverter();
160172

161173
topicConverter.hooks.chain("preBlockGamut", function (text, rbg) {
@@ -167,6 +179,7 @@ <h2>节点下其他话题</h2>
167179
var topicEditor = new Markdown.Editor(topicConverter);
168180

169181
topicEditor.run();
182+
{{end}}
170183
// 转换主帖
171184
var converter = new Markdown.Converter();
172185
$('.entry-content').html(converter.makeHtml($('.entry-content').html()));

0 commit comments

Comments
 (0)