手记

go语言

         

package controllersimport (   "github.com/revel/revel"   "fmt"   "time"   "strconv"   "strings"    "database/sql"   "text/template"    _"github.com/go-sql-driver/mysql")type Spark struct {   *revel.Controller}var (   starlist = map[string]string{      "xuezhiqian":"薛之谦",      "wanghan":"汪涵",      "yangdi":"杨迪",      "guoxuefu":"郭雪芙",      "zhangyu":"张宇",      "liuwei":"刘维",      "tianyuan":"田源",      "qianfeng":"钱枫",      "shenmengchen":"沈梦辰",      "zhaosilu":"赵思璐",   }  db *sql.DB)type dbObj struct{   db *sql.DB}func (c Spark) getcase() *dbObj{   if db != nil{      return &dbObj{db:db}   }else{      var conf map[string]string      conf = c.getconf()      fmt.Println(conf)      server := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s",conf["user"],conf["pwd"],conf["host"],conf["port"],conf["db"],conf["charset"])      db, _ = sql.Open("mysql", server) //第一个参数为驱动名      db.SetMaxOpenConns( 100 )      db.SetMaxIdleConns( 10 )      return &dbObj{db}   }}func (c Spark) getdb() {   if db == nil {      var conf map[string]string      conf = c.getconf()      fmt.Println(conf)      server := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s",conf["user"],conf["pwd"],conf["host"],conf["port"],conf["db"],conf["charset"])      db, _ = sql.Open("mysql", server) //第一个参数为驱动名      db.SetMaxOpenConns( 100 )      db.SetMaxIdleConns( 10 )   }}func (c Spark) getconf() map[string]string{   var conf map[string]string   conf = make(map[string]string,10)   conf["host"],_ = revel.Config.String("host")   conf["db"],_ = revel.Config.String("db")   conf["pwd"],_ = revel.Config.String("pwd")   conf["user"],_ = revel.Config.String("user")   conf["port"],_ = revel.Config.String("port")   conf["charset"],_ = revel.Config.String("charset")   return conf}func (c Spark) Add (starname string,url string , username string,cb string) revel.Result {    starname = template.HTMLEscapeString(strings.TrimSpace(starname))    username = template.HTMLEscapeString(strings.TrimSpace(username))    url = template.HTMLEscapeString(strings.TrimSpace(url))   if starname == "" {      return c.display(1,"请填写好你支持的明星,再提交!","",cb)   }   if url == "" {      return c.display(2,"请填写好你剪辑好的视频,再提交!","",cb)   }   newlist := make(map[string]string,len(starlist))   for key,name := range starlist {      newlist[name] = key   }   _, ok := newlist[starname]   if(!ok){      return c.display(3,"填写的明星不存在","",cb)   }   t := time.Now().Unix()   tt := strconv.FormatInt(t,10)   //c.getdb()   c.getcase()   //stmt,err := db.Prepare("insert into star (starname,username,videourl,addtime,status) values (?,?,?,?,?)")   //checkErr(err)   //res,err := stmt.Exec(starname,username,url,tt,0)   //checkErr(err)   //id,err := res.LastInsertId()   //fmt.Println(id)   fmt.Println(db)   _,err := db.Exec("insert into star (starname,username,videourl,addtime,status) values (?,?,?,?,?)",starname,username,url,tt,0)   _,err = db.Exec("update info set num=num+1 where starname=?",starname)   //checkErr(err)   //id,err = res.LastInsertId()   if err == nil {      return c.display(0,"ok","提交成功,请耐心等待工作人员审核",cb)   } else {      return c.display(4,"插入数据库失败","",cb)   }}func (c Spark) Getstarlist(cb string) revel.Result{   c.getcase()   rows,err := db.Query("select id,starname, num ,imgurl,videourl ,headimg from info order by num desc")   checkErr(err)   defer rows.Close()   list := make( []map[string]interface{},0,1 )   for rows.Next() {      row := make(map[string]interface{})      var id int      var starname string      var num int      var imgurl string      var videourl string      var headimg string      err = rows.Scan(&id,&starname,&num,&imgurl,&videourl,&headimg)      row["id"] = id      row["starname"] = starname      row["num"] = num      row["imgurl"] = imgurl      row["videourl"] = videourl      row["headimg"] = headimg      checkErr(err)      list = append(list,row)   }   return c.display(0,"ok",list,cb)}func (c Spark) Getone(name string,cb string) revel.Result{   //c.getdb()   c.getcase()   stmt,err := db.Prepare("select id,starname, num ,imgurl,videourl ,headimg from info where starname=?")   checkErr(err)   var id int   var starname string   var num int   var imgurl string   var videourl string   var headimg string   error := stmt.QueryRow(name).Scan(&id,&starname,&num,&imgurl,&videourl,&headimg)   checkErr(error)   row := make(map[string]interface{})   row["id"] = id   row["starname"] = starname   row["num"] = num   row["imgurl"] = imgurl   row["videourl"] = videourl   row["headimg"] = headimg   return c.display(0,"ok",row,cb)}func checkErr(err error) {   if err != nil {      panic(err)   }}func (c Spark) display (errno int,msg string,data interface{},cb string)revel.Result{   var result = make(map[string]interface{},2)   result["errno"] = errno   result["msg"] = msg   result["data"] = data   if cb != "" {      return c.RenderJSONP( cb,result )   } else {      return c.RenderJSON( result )   }}


0人推荐
随时随地看视频
慕课网APP