123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- package controllers
- import (
- "errors"
- "fmt"
- "sparrow/pkg/rpcs"
- "sparrow/pkg/server"
- "sparrow/services/knowoapi/services"
- "strconv"
- "time"
- "github.com/kataras/iris"
- )
- // DeviceController api
- type DeviceController struct {
- Ctx iris.Context
- Service services.DeviceService
- Token
- }
- // Get 获取激活设备列表
- // GET /device?pi=&ps=&proid=&device_id=
- func (a *DeviceController) Get() {
- pi, err := a.Ctx.URLParamInt("pi")
- if err != nil {
- badRequest(a.Ctx, err)
- return
- }
- ps, err := a.Ctx.URLParamInt("ps")
- if err != nil {
- badRequest(a.Ctx, err)
- return
- }
- proid, err := a.Ctx.URLParamInt("proid")
- if err != nil {
- proid = 0
- }
- deviceid := a.Ctx.URLParam("device_id")
- vid := a.getVendorID(a.Ctx)
- datas, total, err := a.Service.GetDevices(vid, proid, pi, ps, deviceid)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- done(a.Ctx, map[string]interface{}{
- "list": datas,
- "total": total,
- })
- }
- //获取设备在线状态
- // GET /devicestatus?device_id=
- func (a *DeviceController) GetDevicestatus() {
- deviceid, err := a.Ctx.URLParamInt("device_id")
- if err != nil {
- deviceid = 0
- }
- onlineargs := rpcs.ArgsGetDeviceOnlineStatus{
- Id: uint64(deviceid),
- }
- onlinereply := rpcs.ReplyGetDeviceOnlineStatus{}
- err = server.RPCCallByName(nil, "devicemanager", "DeviceManager.GetDeviceOnlineStatus", onlineargs, &onlinereply)
- if err != nil {
- server.Log.Errorf("get devie online status error: %v", err)
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- done(a.Ctx, map[string]interface{}{
- "status": onlinereply,
- })
- }
- // GetBannerdata 获取设备激活和活跃数据
- // GET /bannerdata?proid=
- func (a *DeviceController) GetBannerdata() {
- proid, err := a.Ctx.URLParamInt("proid")
- if err != nil {
- proid = 0
- }
- var (
- //今日激活
- tact = 0
- // 今日活跃
- tlive = 0
- // 昨日激活
- yact = 0
- // 昨日活跃
- ylive = 0
- // 累计激活
- totolact = 0
- // 环比昨日激活
- comparedWithYesterdayActive = 0.00
- //活跃占比
- rateOfTodayLive = 0.00
- //环比昨日活跃
- comparedWithYesterdayLive = 0.00
- )
- vendorid := a.getVendorID(a.Ctx)
- totolact, err = a.Service.GetDeviceCount(vendorid)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- today := time.Now().Format("2006-01-02")
- yestoday := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
- tact, err = a.Service.GetActiveNumberOfDate(vendorid, today)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- tlive, err = a.Service.GetLivelyCountOfDate(vendorid, today)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- yact, err = a.Service.GetActiveNumberOfDate(vendorid, yestoday)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- ylive, err = a.Service.GetLivelyCountOfDate(vendorid, yestoday)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- if tact != 0 && yact != 0 {
- comparedWithYesterdayActive = (float64(tact) / float64(yact)) * 100
- }
- if tlive != 0 && ylive != 0 {
- comparedWithYesterdayLive = (float64(tlive) / float64(ylive)) * 100
- rateOfTodayLive = float64(tlive) / float64(totolact) * 100
- }
- //TODO 这里的productid要去掉
- result := map[string]interface{}{
- "todayAct": tact,
- "todayLive": tlive,
- "yestodayAct": yact,
- "yestodayLive": ylive,
- "totalAct": totolact,
- "comparedWithYesterdayActive": fmt.Sprintf("%s%%", strconv.FormatFloat(comparedWithYesterdayActive, 'f', 2, 64)),
- "comparedWithYesterdayLive": fmt.Sprintf("%s%%", strconv.FormatFloat(comparedWithYesterdayLive, 'f', 2, 64)),
- "rateOfTodayLive": fmt.Sprintf("%s%%", strconv.FormatFloat(rateOfTodayLive, 'f', 2, 64)),
- "productid": proid,
- }
- done(a.Ctx, result)
- }
- // GetActivechart 获取N日的激活数据趋势
- func (a *DeviceController) GetActivechart() {
- // proid, err := a.Ctx.URLParamInt("proid")
- // if err != nil {
- // proid = 0
- // }
- days, err := a.Ctx.URLParamInt("days")
- if err != nil {
- days = 7
- }
- if days > 30 {
- badRequest(a.Ctx, errors.New("非法参数"))
- return
- }
- vendorid := a.getVendorID(a.Ctx)
- datas, err := a.Service.GetActiveOfNumDays(vendorid, days)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- done(a.Ctx, map[string]interface{}{
- "chart": datas,
- })
- }
- // GetLivechart 获取N日内的活跃数据
- func (a *DeviceController) GetLivechart() {
- // proid, err := a.Ctx.URLParamInt("proid")
- // if err != nil {
- // proid = 0
- // }
- days, err := a.Ctx.URLParamInt("days")
- if err != nil {
- days = 7
- }
- if days > 30 {
- badRequest(a.Ctx, errors.New("非法参数"))
- return
- }
- vendorid := a.getVendorID(a.Ctx)
- datas, err := a.Service.GetLivelyOfNumDays(vendorid, days)
- if err != nil {
- responseError(a.Ctx, ErrDatabase, err.Error())
- return
- }
- done(a.Ctx, map[string]interface{}{
- "chart": datas,
- })
- }
|