分页和并发执行select

pull/30/head
unknown 4 years ago
parent 54a043dd1c
commit 81a0b762ad

@ -6,7 +6,9 @@ import (
"html/template"
"log"
"net/http"
"strconv"
"strings"
"sync"
)
type IndexData struct {
@ -46,15 +48,37 @@ func index(w http.ResponseWriter, r *http.Request) {
//输出列表
func list(w http.ResponseWriter, r *http.Request) {
values:=r.URL.Query()
fid:=""
currentPage:=0
if len(values["fid"])!=0{
fid=values["fid"][0]
}
if len(values["page"])!=0{
currentPage,_=strconv.Atoi(values["page"][0])
}
if fid==""{
fid="INBOX"
}
if currentPage==0{
currentPage=1
}
auth := getCookie(r, "auth")
authStrings := strings.Split(auth, "|")
render := new(IndexData)
folders := tools.GetFolders(authStrings[0], authStrings[1], authStrings[2])
render.Folders = folders
mails := tools.GetFolderMail(authStrings[0], authStrings[1], authStrings[2], "INBOX", 10)
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
folders :=tools.GetFolders(authStrings[0], authStrings[1], authStrings[2])
render.Folders = folders
}()
mails := tools.GetFolderMail(authStrings[0], authStrings[1], authStrings[2], fid,currentPage, 20)
render.Mails = mails
wg.Wait()
t, _ := template.ParseFiles("./tmpl/index.html")
t.Execute(w, render)
}

@ -24,7 +24,7 @@
<li class="list-group-item active">邮件夹</li>
{{ range $key, $value := .Folders}}
<li class="list-group-item d-flex justify-content-between align-items-center">
{{$key}}
<a href="/list?fid={{$key}}">{{$key}}</a>
{{if ne $value 0 }}<span class="badge badge-primary badge-pill">{{$value}}</span>{{end}}
</li>
{{end}}

@ -86,8 +86,9 @@ func GetFolders(server string, email string, password string)map[string]int{
log.Println(folders)
return folders
}
//获取邮件夹邮件
func GetFolderMail(server string, email string, password string,folder string,pagesize int)[]string{
func GetFolderMail(server string, email string, password string,folder string,currentPage int,pagesize int)[]string{
var c *client.Client
//defer c.Logout()
c=connect(server,email,password)
@ -96,7 +97,7 @@ func GetFolderMail(server string, email string, password string,folder string,pa
}
mbox, _ := c.Select(folder, true)
to := mbox.Messages
to := mbox.Messages-uint32((currentPage-1)*pagesize)
from := to-uint32(pagesize)
seqset := new(imap.SeqSet)
@ -107,10 +108,11 @@ func GetFolderMail(server string, email string, password string,folder string,pa
go func() {
done <- c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope}, messages)
}()
log.Println(111)
var res []string
for msg := range messages {
res=append(res,msg.Envelope.Subject)
}
log.Println(res)
return res
}
Loading…
Cancel
Save