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

Skip to content

Commit 18f14ed

Browse files
committed
晨读:go和综合;后台管理
1 parent 456684b commit 18f14ed

File tree

17 files changed

+166
-193
lines changed

17 files changed

+166
-193
lines changed

websites/code/studygolang/src/controller/admin/reading.go

Lines changed: 11 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ package admin
88

99
import (
1010
"net/http"
11-
"strings"
11+
"strconv"
1212

1313
"filter"
1414
"logger"
15-
"model"
1615
"service"
1716
)
1817

@@ -73,61 +72,30 @@ func ReadingQueryHandler(rw http.ResponseWriter, req *http.Request) {
7372
func PublishReadingHandler(rw http.ResponseWriter, req *http.Request) {
7473
var data = make(map[string]interface{})
7574

76-
if req.PostFormValue("submit") == "1" {
77-
urls := strings.Split(req.PostFormValue("urls"), "\n")
78-
79-
var errMsg string
80-
for _, articleUrl := range urls {
81-
_, err := service.ParseArticle(strings.TrimSpace(articleUrl), false)
82-
83-
if err != nil {
84-
errMsg = err.Error()
85-
}
86-
}
87-
88-
if errMsg != "" {
89-
data["ok"] = 0
90-
data["error"] = errMsg
91-
} else {
92-
data["ok"] = 1
93-
data["msg"] = "添加成功"
94-
}
95-
} else {
96-
97-
// 设置内容模板
98-
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/article/new.html")
99-
}
100-
101-
filter.SetData(req, data)
102-
}
103-
104-
func ModifyReadingHandler(rw http.ResponseWriter, req *http.Request) {
105-
var data = make(map[string]interface{})
106-
10775
if req.PostFormValue("submit") == "1" {
10876
user, _ := filter.CurrentUser(req)
10977

110-
errMsg, err := service.ModifyArticle(user, req.PostForm)
78+
errMsg, err := service.SaveReading(req.PostForm, user["username"].(string))
11179
if err != nil {
11280
data["ok"] = 0
11381
data["error"] = errMsg
11482
} else {
11583
data["ok"] = 1
116-
data["msg"] = "修改成功"
84+
data["msg"] = "操作成功"
11785
}
11886
} else {
119-
article, err := service.FindArticleById(req.FormValue("id"))
87+
id, err := strconv.Atoi(req.FormValue("id"))
88+
if err == nil && id != 0 {
89+
data["reading"], err = service.FindReadingById(id)
12090

121-
if err != nil {
122-
rw.WriteHeader(http.StatusInternalServerError)
123-
return
91+
if err != nil {
92+
rw.WriteHeader(http.StatusInternalServerError)
93+
return
94+
}
12495
}
12596

12697
// 设置内容模板
127-
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/article/modify.html")
128-
data["article"] = article
129-
data["statusSlice"] = model.StatusSlice
130-
data["langSlice"] = model.LangSlice
98+
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/reading/modify.html")
13199
}
132100

133101
filter.SetData(req, data)

websites/code/studygolang/src/controller/admin/user.go

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func UserQueryHandler(rw http.ResponseWriter, req *http.Request) {
6666
filter.SetData(req, data)
6767
}
6868

69+
// uri: /admin/user/user/detail
6970
func UserDetailHandler(rw http.ResponseWriter, req *http.Request) {
7071
uid := req.FormValue("uid")
7172

@@ -76,7 +77,40 @@ func UserDetailHandler(rw http.ResponseWriter, req *http.Request) {
7677
}
7778

7879
user := service.FindUserByUID(uid)
80+
7981
// 设置内容模板
8082
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/user/detail.html")
81-
filter.SetData(req, map[string]interface{}{"user": user})
83+
filter.SetData(req, map[string]interface{}{"user": user, "roles": service.Roles})
84+
}
85+
86+
// uri: /admin/user/user/modify
87+
func UserModifyHandler(rw http.ResponseWriter, req *http.Request) {
88+
uidStr := req.PostFormValue("uid")
89+
90+
var (
91+
uid int
92+
err error
93+
)
94+
if uid, err = strconv.Atoi(uidStr); err != nil {
95+
logger.Errorln("[UserModifyHandler] invalid uid")
96+
rw.WriteHeader(http.StatusNotFound)
97+
return
98+
}
99+
100+
var data = make(map[string]interface{})
101+
102+
user, _ := filter.CurrentUser(req)
103+
if user["uid"].(int) == uid {
104+
data["ok"] = 0
105+
data["error"] = "不能改自己的角色!"
106+
107+
filter.SetData(req, data)
108+
return
109+
}
110+
111+
service.AllocUserRoles(uid, req.PostForm["roleids"])
112+
113+
data["ok"] = 1
114+
data["msg"] = "success"
115+
filter.SetData(req, data)
82116
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,8 @@ func genPersistParams(entity interface{}) (string, []interface{}, error) {
330330
setArgs = append(setArgs, val)
331331
}
332332
default:
333-
333+
// TODO:其他类型不处理
334+
continue
334335
}
335336

336337
if pk == "1" {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ type MorningReading struct {
2323
Id int `json:"id" pk:"1"`
2424
Content string `json:"content"`
2525
Rtype int `json:"rtype"`
26-
Inner int `json:"inner"`
26+
Inner int `json:"inner,omitempty"`
2727
Url string `json:"url"`
2828
Moreurls string `json:"moreurls"`
2929
Username string `json:"username"`
3030
Clicknum int `json:"clicknum,omitempty"`
3131
Ctime string `json:"ctime,omitempty"`
3232

3333
// 晨读日期,从 ctime 中提取
34-
Rdate string `json:"rdate"`
34+
Rdate string `json:"rdate,omitempty"`
3535

3636
Urls []string `json:"urls"`
3737

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ func initRouter() *mux.Router {
165165
subrouter.HandleFunc("/user/user/list", admin.UserListHandler)
166166
subrouter.HandleFunc("/user/user/query.html", admin.UserQueryHandler)
167167
subrouter.HandleFunc("/user/user/detail", admin.UserDetailHandler)
168+
subrouter.HandleFunc("/user/user/modify", admin.UserModifyHandler)
168169

169170
///////////////// 社区管理 //////////////////////////
170171
// 帖子管理
@@ -193,7 +194,7 @@ func initRouter() *mux.Router {
193194
// 晨读管理
194195
subrouter.HandleFunc("/reading/list", admin.ReadingListHandler)
195196
subrouter.HandleFunc("/reading/query.html", admin.ReadingQueryHandler)
196-
subrouter.HandleFunc("/admin/reading/publish", admin.PublishReadingHandler)
197+
subrouter.HandleFunc("/reading/publish", admin.PublishReadingHandler)
197198

198199
apirouter := router.PathPrefix("/api").Subrouter()
199200
apirouter.HandleFunc("/user/login", api.LoginHandler)

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
package service
88

99
import (
10+
"net/url"
1011
"strconv"
1112
"strings"
1213

1314
"logger"
1415
"model"
16+
"util"
1517
)
1618

1719
// 获取晨读列表(分页)
@@ -89,3 +91,42 @@ func FindReadingByPage(conds map[string]string, curPage, limit int) ([]*model.Mo
8991

9092
return readingList, total
9193
}
94+
95+
// 保存晨读
96+
func SaveReading(form url.Values, username string) (errMsg string, err error) {
97+
reading := model.NewMorningReading()
98+
err = util.ConvertAssign(reading, form)
99+
if err != nil {
100+
logger.Errorln("reading SaveReading error", err)
101+
errMsg = err.Error()
102+
return
103+
}
104+
105+
reading.Username = username
106+
107+
logger.Infoln(reading.Rtype, "id=", reading.Id)
108+
if reading.Id != 0 {
109+
err = reading.Persist(reading)
110+
} else {
111+
_, err = reading.Insert()
112+
}
113+
114+
if err != nil {
115+
errMsg = "内部服务器错误"
116+
logger.Errorln("reading save:", errMsg, ":", err)
117+
return
118+
}
119+
120+
return
121+
}
122+
123+
// 获取单条晨读
124+
func FindReadingById(id int) (*model.MorningReading, error) {
125+
reading := model.NewMorningReading()
126+
err := reading.Where("id=?", id).Find()
127+
if err != nil {
128+
logger.Errorln("reading service FindReadingById Error:", err)
129+
}
130+
131+
return reading, err
132+
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,3 +394,19 @@ func FindNotLoginUsers(loginTime string) (userList []*model.UserLogin, err error
394394
userList, err = userLogin.Where("login_time<" + loginTime).FindAll()
395395
return
396396
}
397+
398+
func AllocUserRoles(uid int, roleids []string) error {
399+
userRole := model.NewUserRole()
400+
userRole.Uid = uid
401+
402+
for _, roleId := range roleids {
403+
userRole.Roleid, _ = strconv.Atoi(roleId)
404+
if userRole.Roleid == 0 {
405+
continue
406+
}
407+
408+
userRole.Insert()
409+
}
410+
411+
return nil
412+
}

websites/code/studygolang/static/css/admin/revise.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,5 @@ td .emtd {
9090
.txt {padding-top: 6px;}
9191

9292
.newline {word-wrap: break-word; word-break: break-all;}
93+
94+
.blue {color: blue;}

websites/code/studygolang/static/js/admin/forms.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@
1111

1212
jQuery(document).ready(function($){
1313

14-
///// FORM TRANSFORMATION /////
15-
jQuery('input:checkbox, input:radio, select.uniformselect').uniform();
16-
17-
1814
///// DUAL BOX /////
1915
var db = jQuery('#dualselect').find('.ds_arrow .arrow'); //get arrows of dual select
2016
var sel1 = jQuery('#dualselect select:first-child'); //get first select element
@@ -104,7 +100,11 @@ jQuery(document).ready(function($){
104100
},
105101
"success" : function (data) {
106102
$('#loaders').hide();
107-
jAlert("操作成功", "信息");
103+
if (data.ok) {
104+
jAlert("操作成功", "信息");
105+
} else {
106+
jAlert(data.error, "出错");
107+
}
108108
// $('#tooltip').text("操作成功!");
109109
if (typeof formSuccCallback !== "undefined") {
110110
formSuccCallback(data);

websites/code/studygolang/static/js/admin/general.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
// jQuery.noConflict();
1414

1515
jQuery(document).ready(function(){
16-
17-
16+
17+
///// FORM TRANSFORMATION /////
18+
jQuery('input:checkbox, input:radio, select.uniformselect').uniform();
19+
1820
///// SHOW/HIDE USERDATA WHEN USERINFO IS CLICKED /////
1921

2022
jQuery('.userinfo').click(function(){

websites/code/studygolang/template/admin/reading/list.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ <h1 class="pagetitle">晨读管理</h1>
1515
<label>晨读类型</label>
1616
<span class="field">
1717
<select id="q_rtype" name="rtype" class="uniformselect">
18+
<option value="">全部</option>
1819
<option value="0">Go晨读</option>
1920
<option value="1">综合晨读</option>
2021
</select>
@@ -25,7 +26,7 @@ <h1 class="pagetitle">晨读管理</h1>
2526
<p>
2627
<label>&nbsp;</label>
2728
<span class="field"><button id="queryform_sub" class="submit radius2">查询</button></span>
28-
<span class="field"><a href="/admin/readings/publish" class="submit radius2 abtn" target="_blank">发布</a></span>
29+
<span class="field"><a href="/admin/reading/publish" class="submit radius2 abtn" target="_blank">发布</a></span>
2930
</p>
3031
</div>
3132
</form>
@@ -46,7 +47,7 @@ <h3>数据列表</h3>
4647
<script type="text/javascript">
4748
// 需要传入下面js的变量定义
4849
var GLOBAL_CONF = {
49-
"action_query" : "/admin/readings/query.html",
50+
"action_query" : "/admin/reading/query.html",
5051
"query_params" : {
5152
'id' : '#q_id',
5253
'rtype' : '#q_rtype'

0 commit comments

Comments
 (0)