You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
257 lines
5.9 KiB
Go
257 lines
5.9 KiB
Go
package service
|
|
|
|
import (
|
|
"joybuywork/internal/config"
|
|
"joybuywork/internal/plugins/jsonm"
|
|
"joybuywork/internal/repository/dbcheck"
|
|
"joybuywork/internal/repository/model"
|
|
"joybuywork/internal/repository/mtype"
|
|
"joybuywork/internal/repository/withdefault"
|
|
"joybuywork/internal/service/queue/producer"
|
|
"joybuywork/internal/service/queue/types"
|
|
"joybuywork/internal/utils"
|
|
"joybuywork/internal/utils/upload"
|
|
pb "joybuywork/proto/go_proto/w_common"
|
|
"joybuywork/proto/go_proto/workerr"
|
|
|
|
"gorm.io/gen"
|
|
)
|
|
|
|
type WCommon struct {
|
|
Service
|
|
}
|
|
|
|
// PolicyToken 获取阿里云token
|
|
func (s *WCommon) PolicyToken(req *pb.PolicyTokenReq, res *pb.PolicyTokenRes) (err error) {
|
|
defer s.checkErr()
|
|
policy := upload.GetPolicy(req.FileSuffix)
|
|
|
|
*res = pb.PolicyTokenRes{
|
|
AccessKeyId: config.Config.Upload.AccessKey,
|
|
Host: config.Config.Upload.Host,
|
|
UploadUrl: config.Config.Upload.UploadUrl,
|
|
Expire: policy.Expire,
|
|
Signature: policy.Signature,
|
|
Dir: policy.Directory,
|
|
Policy: policy.Policy,
|
|
Key: policy.Key,
|
|
}
|
|
return
|
|
}
|
|
|
|
// Whitelist 服务器白名单
|
|
func (s *WCommon) Whitelist(req *pb.WhitelistReq, res *pb.WhitelistRes) (err error) {
|
|
defer s.checkErr()
|
|
|
|
m := s.GetDao().ServerWhitelist
|
|
|
|
*res = pb.WhitelistRes{}
|
|
|
|
err = m.WithContext(s.ctx).Pluck(m.IP, &res.Ips)
|
|
if err != nil {
|
|
return s.BE().MysqlError(err)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// Download 下载
|
|
func (s *WCommon) Download(req *pb.DownloadReq, res *pb.DownloadRes) (err error) {
|
|
defer s.checkErr()
|
|
|
|
m := s.GetDao().ExportTask
|
|
|
|
task := withdefault.ExportTask(&model.ExportTask{
|
|
UserID: req.GetUserId(),
|
|
Mark: req.GetMark(),
|
|
Cond: "",
|
|
EptStatus: mtype.ExportTaskEptStatusDoing,
|
|
ExpiredAt: 0,
|
|
Filename: "",
|
|
FailMsg: "",
|
|
})
|
|
|
|
var data jsonm.JsonM
|
|
|
|
switch req.Mark {
|
|
case mtype.ExportTaskMarkCampaignReport:
|
|
data, _ = jsonm.Marshal(req.CampaignReport)
|
|
case mtype.ExportTaskMarkFissionUser:
|
|
data, _ = jsonm.Marshal(req.FissionUser)
|
|
case mtype.ExportTaskMarkFissionRewardRecord:
|
|
data, _ = jsonm.Marshal(req.FissionRewardRecord)
|
|
case mtype.ExportTaskMarkFissionUserStat:
|
|
data, _ = jsonm.Marshal(req.FissionUserStat)
|
|
case mtype.ExportTaskMarkAdsTable:
|
|
data, _ = jsonm.Marshal(req.AdsTable)
|
|
case mtype.ExportTaskMarkNewUserList:
|
|
data, _ = jsonm.Marshal(req.NewUserList)
|
|
case mtype.ExportTaskMarkCoinRecord:
|
|
data, _ = jsonm.Marshal(req.CoinRecord)
|
|
case mtype.ExportTaskMarkChildList:
|
|
data, _ = jsonm.Marshal(req.ChildList)
|
|
default:
|
|
err = workerr.VerifyError("not found download type")
|
|
return
|
|
}
|
|
|
|
task.Cond = data.ToString()
|
|
|
|
err = m.WithContext(s.ctx).Create(task)
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
producer.NewCampaignNotice(s.ctx).Download(types.Download{
|
|
TaskId: task.HashID,
|
|
Mark: task.Mark,
|
|
Cond: data,
|
|
})
|
|
|
|
*res = pb.DownloadRes{
|
|
HashId: task.HashID,
|
|
}
|
|
return
|
|
}
|
|
|
|
// DownloadStatus 下载状态
|
|
func (s *WCommon) DownloadStatus(req *pb.DownloadStatusReq, res *pb.DownloadStatusRes) (err error) {
|
|
defer s.checkErr()
|
|
m := s.GetDao().ExportTask
|
|
|
|
task, err := m.WithContext(s.ctx).Where(m.HashID.Eq(req.GetHashId())).Take()
|
|
if err = dbcheck.DbError(err); err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
if task == nil {
|
|
err = workerr.NotFound("not found ept task")
|
|
return
|
|
}
|
|
|
|
*res = pb.DownloadStatusRes{
|
|
Status: int32(task.EptStatus),
|
|
Url: task.Filename,
|
|
FailMsg: task.FailMsg,
|
|
Progress: "",
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// OperateLog dashboard操作日志
|
|
func (s *WCommon) OperateLog(req *pb.OperateLogReq, res *pb.OperateLogRes) (err error) {
|
|
defer s.checkErr()
|
|
|
|
_ = s.GetDao().OperateLog.WithContext(s.ctx).Create(withdefault.OperateLog(&model.OperateLog{
|
|
UserID: req.GetUserId(),
|
|
Mark: req.GetMark(),
|
|
MarkID: req.GetMarkId(),
|
|
Data: req.GetData(),
|
|
IP: req.GetIp(),
|
|
}))
|
|
|
|
*res = pb.OperateLogRes{}
|
|
return
|
|
}
|
|
|
|
// SaveMaterial 保存素材
|
|
func (s *WCommon) SaveMaterial(req *pb.SaveMaterialReq, res *pb.SaveMaterialRes) (err error) {
|
|
defer s.checkErr()
|
|
|
|
project, err := s.ProjectErrNil(req.GetProjectHashId())
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().Material
|
|
|
|
material := withdefault.Material(&model.Material{
|
|
ProjectID: project.ID,
|
|
MaterialType: int8(req.GetMaterialType()),
|
|
MaterialData: req.GetMaterialData(),
|
|
})
|
|
err = m.WithContext(s.ctx).Create(material)
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
*res = pb.SaveMaterialRes{
|
|
Id: material.ID,
|
|
}
|
|
return
|
|
}
|
|
|
|
// MaterialList 素材列表
|
|
func (s *WCommon) MaterialList(req *pb.MaterialListReq, res *pb.MaterialListRes) (err error) {
|
|
defer s.checkErr()
|
|
project, err := s.ProjectErrNil(req.GetProjectHashId())
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().Material
|
|
var cond = []gen.Condition{
|
|
m.IsDel.Eq(mtype.No),
|
|
m.ProjectID.Eq(project.ID),
|
|
}
|
|
|
|
if req.GetMaterialType() > 0 {
|
|
cond = append(cond, m.MaterialType.Value(int8(req.GetMaterialType())))
|
|
}
|
|
|
|
offset, limit := utils.PpDbLo(req.GetPage(), req.GetPerPage())
|
|
list, total, err := m.WithContext(s.ctx).Where(cond...).FindByPage(offset, limit)
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
if total == 0 {
|
|
return
|
|
}
|
|
|
|
*res = pb.MaterialListRes{
|
|
List: make([]*pb.MaterialListRes_One, 0, len(list)),
|
|
Total: total,
|
|
}
|
|
|
|
for _, v := range list {
|
|
res.List = append(res.List, &pb.MaterialListRes_One{
|
|
Id: v.ID,
|
|
MaterialType: int32(v.MaterialType),
|
|
MaterialData: v.MaterialData,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// CompanyMade 企业定制组件列表
|
|
func (s *WCommon) CompanyMade(req *pb.CompanyMadeReq, res *pb.CompanyMadeRes) (err error) {
|
|
defer s.checkErr()
|
|
m := s.GetDao().CompanyMade
|
|
list, err := m.WithContext(s.ctx).Where(m.CompanyID.Eq(req.GetCompanyId())).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
*res = pb.CompanyMadeRes{
|
|
List: make([]*pb.CompanyMadeRes_One, 0, len(list)),
|
|
}
|
|
|
|
for _, v := range list {
|
|
res.List = append(res.List, &pb.CompanyMadeRes_One{
|
|
Id: v.ID,
|
|
Mark: v.Mark,
|
|
FissionTemp: v.GetFissionTemp(),
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|