package controllers import ( "errors" "h5-2019/models" "h5-2019/models/model" "h5-2019/utils" "net/http" "github.com/astaxie/beego" ) // H5Controller 基础controller type H5Controller struct { dao *models.H5Model BaseController } // Constructor 初始化 func (c *H5Controller) Constructor() { c.dao = new(models.H5Model) } // GetCustomer 获取用户及分享信息 func (c *H5Controller) GetCustomer() { code := c.GetString("code") link := c.GetString("link") // 已经存在的用户直接从数据库拿 userID := 0 userSesn := c.GetSession(SESSION_USER) if userSesn != nil { userID, _ = userSesn.(int) } var err error user := new(model.TaCustomer) if userID > 0 { user, err = c.dao.GetCustomer(userID) if err != nil { beego.Error("获取用户信息失败:", err.Error()) c.ResponseJson(errors.New("获取用户信息失败"), http.StatusInternalServerError) } } else { // 不存在的用户,则保存入库 if res, err := utils.GetUserInfo(code); err != nil { beego.Error("获取微信用户失败:", err.Error()) c.ResponseJson(errors.New("获取微信用户失败"), http.StatusInternalServerError) } else if user, err = c.dao.SaveCustomer(res.(map[string]interface{})); err != nil { beego.Error("校验微信用户失败:", err.Error()) c.ResponseJson(errors.New("校验微信用户失败"), http.StatusInternalServerError) } } // 获取分享 ticket res, err := utils.GetJSTicket(link) if err != nil { c.ResponseJson(errors.New("微信分享设置校验失败"), http.StatusInternalServerError) } c.SetSession(SESSION_USER, user.Id) c.ResponseJson(map[string]interface{}{ "user": user, "share": res, }) } // PutShare 更新分享记录 func (c *H5Controller) PutShare() { userSesn := c.GetSession(SESSION_USER) if userSesn == nil { c.ResponseJson(errors.New("记录分享失败, 请重新获取用户信息"), http.StatusUnauthorized) } userID, _ := userSesn.(int) if userID == 0 { c.ResponseJson(errors.New("未知错误, 请重新获取用户信息"), http.StatusUnauthorized) } if err := c.dao.SharePage(userID); err != nil { beego.Error("记录分享失败:", err.Error()) c.ResponseJson(errors.New("记录分享失败"), http.StatusInternalServerError) } c.ResponseJson("ok") } // GetTotalShare 获取分享总数 func (c *H5Controller) GetTotalShare() { total, err := c.dao.TotalShareNum() if err != nil { beego.Error("获取分享总数失败:", err.Error()) c.ResponseJson(errors.New("获取分享总数失败"), http.StatusInternalServerError) } custnum, err := c.dao.TotalCustomer() if err != nil { beego.Error("获取人数失败:", err.Error()) c.ResponseJson(errors.New("获取人数失败"), http.StatusInternalServerError) } c.ResponseJson(map[string]interface{}{ "total": total, "custnum": custnum, }) }