138 lines
3.0 KiB
Go
138 lines
3.0 KiB
Go
|
package service
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"crypto/md5"
|
||
|
"encoding/hex"
|
||
|
"fmt"
|
||
|
"math/rand"
|
||
|
"time"
|
||
|
|
||
|
"go-common/app/admin/main/vip/model"
|
||
|
"go-common/library/ecode"
|
||
|
"go-common/library/log"
|
||
|
|
||
|
"github.com/pkg/errors"
|
||
|
)
|
||
|
|
||
|
// BusinessList business list.
|
||
|
func (s *Service) BusinessList(c context.Context, pn, ps, status int) (res []*model.VipBusinessInfo, count int64, err error) {
|
||
|
if count, err = s.dao.BussinessCount(c, status); err != nil {
|
||
|
log.Error("%+v", err)
|
||
|
return
|
||
|
}
|
||
|
if count == 0 {
|
||
|
return
|
||
|
}
|
||
|
if res, err = s.dao.BussinessList(c, pn, ps, status); err != nil {
|
||
|
log.Error("%+v", err)
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UpdateBusinessInfo update business info.
|
||
|
func (s *Service) UpdateBusinessInfo(c context.Context, req *model.VipBusinessInfo) (err error) {
|
||
|
var (
|
||
|
business *model.VipBusinessInfo
|
||
|
appkey string
|
||
|
businessName string
|
||
|
)
|
||
|
if business, err = s.dao.SelBusiness(c, req.ID); err != nil {
|
||
|
err = errors.WithStack(err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if business == nil {
|
||
|
err = ecode.VipBusinessNotExitErr
|
||
|
return
|
||
|
}
|
||
|
req.Secret = business.Secret
|
||
|
|
||
|
appkey = business.AppKey
|
||
|
businessName = business.BusinessName
|
||
|
arg := new(model.QueryBusinessInfo)
|
||
|
if appkey != req.AppKey {
|
||
|
|
||
|
arg.Appkey = req.AppKey
|
||
|
|
||
|
if business, err = s.dao.SelBusinessByQuery(c, arg); err != nil {
|
||
|
err = errors.WithStack(err)
|
||
|
return
|
||
|
}
|
||
|
if business != nil {
|
||
|
err = ecode.VipAppkeyExitErr
|
||
|
return
|
||
|
}
|
||
|
req.Secret = s.makeSecret(req.AppKey)
|
||
|
}
|
||
|
if businessName != req.BusinessName {
|
||
|
arg = new(model.QueryBusinessInfo)
|
||
|
arg.Name = req.BusinessName
|
||
|
if business, err = s.dao.SelBusinessByQuery(c, arg); err != nil {
|
||
|
err = errors.WithStack(err)
|
||
|
return
|
||
|
}
|
||
|
if business != nil {
|
||
|
err = ecode.VipBusinessNameExitErr
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if _, err = s.dao.UpdateBusiness(c, req); err != nil {
|
||
|
log.Error("%+v", err)
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// AddBusinessInfo add business info.
|
||
|
func (s *Service) AddBusinessInfo(c context.Context, req *model.VipBusinessInfo) (err error) {
|
||
|
var (
|
||
|
business *model.VipBusinessInfo
|
||
|
)
|
||
|
arg := new(model.QueryBusinessInfo)
|
||
|
arg.Appkey = req.AppKey
|
||
|
if business, err = s.dao.SelBusinessByQuery(c, arg); err != nil {
|
||
|
err = errors.WithStack(err)
|
||
|
return
|
||
|
}
|
||
|
if business != nil {
|
||
|
err = ecode.VipAppkeyExitErr
|
||
|
return
|
||
|
}
|
||
|
arg = new(model.QueryBusinessInfo)
|
||
|
arg.Name = req.BusinessName
|
||
|
if business, err = s.dao.SelBusinessByQuery(c, arg); err != nil {
|
||
|
err = errors.WithStack(err)
|
||
|
return
|
||
|
}
|
||
|
if business != nil {
|
||
|
err = ecode.VipBusinessNameExitErr
|
||
|
return
|
||
|
}
|
||
|
req.Secret = s.makeSecret(req.AppKey)
|
||
|
if _, err = s.dao.AddBusiness(c, req); err != nil {
|
||
|
log.Error("%+v", err)
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) makeSecret(appkey string) string {
|
||
|
key := fmt.Sprintf("%v,%v,%v", appkey, time.Now().UnixNano(), rand.Intn(100000000))
|
||
|
hash := md5.New()
|
||
|
hash.Write([]byte(key))
|
||
|
sum := hash.Sum(nil)
|
||
|
return hex.EncodeToString(sum)
|
||
|
}
|
||
|
|
||
|
// BusinessInfo business info
|
||
|
func (s *Service) BusinessInfo(c context.Context, id int) (r *model.VipBusinessInfo, err error) {
|
||
|
if r, err = s.dao.SelBusiness(c, id); err != nil {
|
||
|
log.Error("%+v", err)
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|