go-common/app/interface/main/creative/dao/appeal/workflow.go
2019-04-22 18:49:16 +08:00

198 lines
6.1 KiB
Go

package appeal
import (
"context"
"net/url"
"strconv"
"go-common/app/interface/main/creative/model/appeal"
"go-common/library/ecode"
"go-common/library/log"
"github.com/pkg/errors"
)
// appeal url
const (
_list = "/x/internal/workflow/appeal/list"
_detail = "/x/internal/workflow/appeal/info"
_addappeal = "/x/internal/workflow/appeal/add"
_addreply = "/x/internal/workflow/appeal/reply/add"
_appealstar = "/x/internal/workflow/appeal/extra/up"
_appealstate = "/x/internal/workflow/appeal/state"
_appealStarInfo = "/x/internal/workflow/appeal/extra/info"
)
// AppealList appeal list .
func (d *Dao) AppealList(c context.Context, mid int64, business int, ip string) (as []*appeal.AppealMeta, err error) {
params := url.Values{}
params.Set("mid", strconv.FormatInt(mid, 10))
params.Set("business", strconv.Itoa(business))
var res struct {
Code int `json:"code"`
Data []*appeal.AppealMeta `json:"data"`
}
if err = d.client.Get(c, d.list, ip, params, &res); err != nil {
err = errors.Wrap(err, "appeal list api")
return
}
if res.Code != 0 {
log.Error("appeal list url(%s) mid(%d) res(%v)", d.list+"?"+params.Encode(), mid, res)
err = ecode.Int(res.Code)
return
}
as = res.Data
return
}
// AppealDetail appeal detail.
func (d *Dao) AppealDetail(c context.Context, mid, id int64, business int, ip string) (a *appeal.AppealMeta, err error) {
params := url.Values{}
params.Set("mid", strconv.FormatInt(mid, 10))
params.Set("id", strconv.FormatInt(id, 10))
params.Set("business", strconv.Itoa(business))
var res struct {
Code int `json:"code"`
Data *appeal.AppealMeta `json:"data"`
}
if err = d.client.Get(c, d.detail, ip, params, &res); err != nil {
err = errors.Wrap(err, "appeal api")
return
}
if res.Code != 0 {
log.Error("appeal url(%s) mid(%d) res(%v)", d.detail+"?"+params.Encode(), mid, res)
err = ecode.Int(res.Code)
return
}
a = res.Data
return
}
// AddAppeal add appeal.
func (d *Dao) AddAppeal(c context.Context, tid, aid, mid, business int64, qq, phone, email, desc, attachments, ip string, ap *appeal.BusinessAppeal) (apID int64, err error) {
params := url.Values{}
params.Set("tid", strconv.FormatInt(tid, 10))
params.Set("oid", strconv.FormatInt(aid, 10))
params.Set("mid", strconv.FormatInt(mid, 10))
params.Set("business", strconv.FormatInt(business, 10))
params.Set("qq", qq)
params.Set("phone", phone)
params.Set("email", email)
params.Set("description", desc)
params.Set("attachments", attachments)
params.Set("business_typeid", strconv.FormatInt(ap.BusinessTypeID, 10))
params.Set("business_mid", strconv.FormatInt(ap.BusinessMID, 10))
params.Set("business_title", ap.BusinessTitle)
params.Set("business_content", ap.BusinessContent)
params.Set("business_state", strconv.FormatInt(appeal.StateCreate, 10))
var res struct {
Code int `json:"code"`
Data struct {
ChallengeNo int64 `json:"challengeNo"`
} `json:"data"`
}
log.Info("AddAppeal params(%v)", params)
if err = d.client.Post(c, d.addappeal, ip, params, &res); err != nil {
err = errors.Wrap(err, "appeal api")
return
}
if res.Code != 0 {
log.Error("add appeal url(%s) mid(%d) res(%v)", d.addappeal+"?"+params.Encode(), mid, res)
err = ecode.Int(res.Code)
}
apID = res.Data.ChallengeNo
return
}
// AddReply add appeal reply .
func (d *Dao) AddReply(c context.Context, cid, event int64, content, attachments, ip string) (err error) {
params := url.Values{}
params.Set("cid", strconv.FormatInt(cid, 10))
params.Set("content", content)
params.Set("attachments", attachments)
params.Set("event", strconv.FormatInt(event, 10))
var res struct {
Code int `json:"code"`
}
if err = d.client.Post(c, d.addreply, ip, params, &res); err != nil {
err = errors.Wrap(err, "appeal reply api")
return
}
if res.Code != 0 {
log.Error("add appeal url(%s) res(%v)", d.addreply+"?"+params.Encode(), res)
err = ecode.Int(res.Code)
}
return
}
// AppealExtra modify appeal extra.
func (d *Dao) AppealExtra(c context.Context, mid, cid, business, val int64, key, ip string) (err error) {
params := url.Values{}
params.Set("mid", strconv.FormatInt(mid, 10))
params.Set("cid", strconv.FormatInt(cid, 10))
params.Set("business", strconv.FormatInt(business, 10))
params.Set("key", key)
params.Set("val", strconv.FormatInt(val, 10))
var res struct {
Code int `json:"code"`
}
log.Info("AppealExtra params(%v)", params)
if err = d.client.Post(c, d.appealstar, ip, params, &res); err != nil {
err = errors.Wrap(err, "appeal star api")
return
}
if res.Code != 0 {
log.Error("appeal start url(%s) res(%v)", d.appealstar+"?"+params.Encode(), res)
err = ecode.Int(res.Code)
}
return
}
// AppealState modify appeal state .
func (d *Dao) AppealState(c context.Context, mid, id, business, state int64, ip string) (err error) {
params := url.Values{}
params.Set("id", strconv.FormatInt(id, 10))
params.Set("mid", strconv.FormatInt(mid, 10))
params.Set("business", strconv.FormatInt(business, 10))
params.Set("business_state", strconv.FormatInt(state, 10))
var res struct {
Code int `json:"code"`
}
if err = d.client.Post(c, d.appealstate, ip, params, &res); err != nil {
err = errors.Wrap(err, "appeal state api")
return
}
if res.Code != 0 {
log.Error("appeal state url(%s) res(%v)", d.appealstate+"?"+params.Encode(), res)
err = ecode.Int(res.Code)
}
return
}
// AppealStarInfo appeal star detail.
func (d *Dao) AppealStarInfo(c context.Context, mid, cid int64, business int, ip string) (star, etime string, err error) {
params := url.Values{}
params.Set("mid", strconv.FormatInt(mid, 10))
params.Set("cid", strconv.FormatInt(cid, 10))
params.Set("business", strconv.Itoa(business))
var res struct {
Code int `json:"code"`
Data struct {
Star string `json:"star"`
ETime string `json:"etime"`
} `json:"data"`
}
if err = d.client.Get(c, d.appealStarInfo, ip, params, &res); err != nil {
err = errors.Wrap(err, "appeal api")
return
}
if res.Code != 0 {
log.Error("appeal url(%s) mid(%d) res(%v)", d.detail+"?"+params.Encode(), mid, res)
err = ecode.Int(res.Code)
return
}
star = res.Data.Star
etime = res.Data.ETime
return
}