This commit is contained in:
parent
1676d0dfdb
commit
8e77619a37
|
|
@ -29,11 +29,6 @@ func InitializeApp(configConfig *config.Config, allLogger log.AllLogger) (*serve
|
|||
publishImpl := impl.NewPublishImpl(db)
|
||||
loginRelationImpl := impl.NewLoginRelationImpl(db)
|
||||
articleTypeImpl := impl.NewArticleTypeImpl(db)
|
||||
publishBiz := biz.NewPublishBiz(configConfig, publishImpl, userImpl, platImpl, tokenImpl, loginRelationImpl)
|
||||
authBiz := biz.NewAuthBiz(configConfig, tokenImpl, userImpl)
|
||||
appService := service.NewAppService(configConfig, tokenImpl, userImpl, platImpl, publishBiz, authBiz, loginRelationImpl)
|
||||
loginService := service.NewLoginService(configConfig, publishBiz, authBiz)
|
||||
publishService := service.NewPublishService(configConfig, publishBiz, authBiz, db)
|
||||
productImpl := impl.NewProductImpl(db)
|
||||
productSourceImpl := impl.NewProductSourceImpl(db)
|
||||
oss, err := utils_oss.NewClient(configConfig)
|
||||
|
|
@ -41,6 +36,12 @@ func InitializeApp(configConfig *config.Config, allLogger log.AllLogger) (*serve
|
|||
panic(err)
|
||||
}
|
||||
productBiz := biz.NewProductBiz(productImpl, productSourceImpl, configConfig, oss)
|
||||
publishBiz := biz.NewPublishBiz(configConfig, publishImpl, userImpl, platImpl, tokenImpl, loginRelationImpl)
|
||||
authBiz := biz.NewAuthBiz(configConfig, tokenImpl, userImpl)
|
||||
appService := service.NewAppService(configConfig, tokenImpl, userImpl, platImpl, publishBiz, authBiz, loginRelationImpl, productBiz)
|
||||
loginService := service.NewLoginService(configConfig, publishBiz, authBiz)
|
||||
publishService := service.NewPublishService(configConfig, publishBiz, authBiz, db)
|
||||
|
||||
productService := service.NewProductService(configConfig, productImpl, authBiz, productBiz)
|
||||
aiBiz := biz.NewAiBiz(platImpl, articleTypeImpl)
|
||||
productSourceService := service.NewProductSourceService(configConfig, productImpl, authBiz, aiBiz, productBiz, productSourceImpl, publishBiz, articleTypeImpl)
|
||||
|
|
|
|||
|
|
@ -92,6 +92,15 @@ func (p *ProductBiz) AddSource(ctx context.Context, source *model.ProductSource)
|
|||
|
||||
func (p *ProductBiz) SourceUpload(ctx context.Context, file []byte, fileName string) (string, error) {
|
||||
url, err := p.oss.UploadBytes(p.cfg.Oss.FilePath+"source/"+fileName, file)
|
||||
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("上传文件失败: %w", err)
|
||||
}
|
||||
return url, nil
|
||||
}
|
||||
|
||||
func (p *ProductBiz) OssUpload(ctx context.Context, userIndex string, platIndex string, data []byte) (string, error) {
|
||||
url, err := p.oss.UploadBytes(fmt.Sprintf("%scookie/%s/%s.json", p.cfg.Oss.FilePath, userIndex, platIndex), data)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("上传文件失败: %w", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,9 @@ func (p *PlatImpl) GetPlatListWithLoginStatus(ctx context.Context, cond *builder
|
|||
plat.img_url,
|
||||
plat.index,
|
||||
plat.desc,
|
||||
plat.login_url,
|
||||
plat.logined_url,
|
||||
plat.logined_judge_way,
|
||||
COALESCE(login_relation.login_status, 2) as login_status
|
||||
FROM plat
|
||||
LEFT JOIN login_relation ON login_relation.plat_index COLLATE utf8mb4_unicode_ci = plat.index AND login_relation.status = 1
|
||||
|
|
|
|||
|
|
@ -24,6 +24,13 @@ type (
|
|||
UserIndex string `json:"user_index" validate:"required" zh:"用户索引"`
|
||||
}
|
||||
|
||||
SendCookieRequest struct {
|
||||
AccessToken string `json:"access_token" validate:"required" zh:"access_token"`
|
||||
UserIndex string `json:"user_index" validate:"required" zh:"用户索引"`
|
||||
CookieData string `json:"cookie_data" validate:"required" zh:"cookie_data"`
|
||||
PlatIndex string `json:"plat_index" validate:"required" zh:"平台索引"`
|
||||
}
|
||||
|
||||
PlatListRequest struct {
|
||||
AccessToken string `json:"access_token" validate:"required" zh:"access_token"`
|
||||
PlatType int `json:"plat_type" zh:"平台类型"`
|
||||
|
|
|
|||
|
|
@ -98,12 +98,12 @@ func (pm *PublishManager) getTaskLogger(publishID int, requestID string) (*log.L
|
|||
}
|
||||
|
||||
// Start 启动自动发布(支持并发worker数量)
|
||||
func (pm *PublishManager) Start(tokenID int, workerNum int) bool {
|
||||
func (pm *PublishManager) Start(workerNum int) bool {
|
||||
pm.mu.Lock()
|
||||
defer pm.mu.Unlock()
|
||||
|
||||
if pm.AutoStatus {
|
||||
log.Printf("自动发布服务已在运行中,tokenID=%d", tokenID)
|
||||
log.Printf("自动发布服务已在运行中")
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
@ -114,7 +114,6 @@ func (pm *PublishManager) Start(tokenID int, workerNum int) bool {
|
|||
workerNum = MaxWorkerNum
|
||||
}
|
||||
|
||||
pm.TokenID = tokenID
|
||||
pm.AutoStatus = true
|
||||
pm.workerNum = workerNum
|
||||
pm.stopCh = make(chan struct{})
|
||||
|
|
@ -129,7 +128,7 @@ func (pm *PublishManager) Start(tokenID int, workerNum int) bool {
|
|||
go pm.workerLoop(i)
|
||||
}
|
||||
|
||||
log.Printf("自动发布服务已启动,tokenID=%d,worker数量=%d", tokenID, workerNum)
|
||||
log.Printf("自动发布服务已启动,worker数量=%d", workerNum)
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
@ -242,8 +241,7 @@ func (pm *PublishManager) acquireTask() (*entitys.PublishTaskDetail, error) {
|
|||
SELECT p2.request_id
|
||||
FROM publish p2
|
||||
INNER JOIN plat pl ON p2.plat_index COLLATE utf8mb4_unicode_ci = pl.index
|
||||
WHERE p2.token_id = ?
|
||||
AND p2.status = ?
|
||||
WHERE p2.status = ?
|
||||
AND p2.publish_time <= ?
|
||||
AND pl.status = 1
|
||||
ORDER BY p2.publish_time ASC
|
||||
|
|
@ -253,7 +251,7 @@ func (pm *PublishManager) acquireTask() (*entitys.PublishTaskDetail, error) {
|
|||
AND p.status = ?
|
||||
`
|
||||
|
||||
result := pm.db.Client.Exec(updateSQL, StatusProcessing, uid, pm.TokenID, StatusPending, currentTime, StatusPending)
|
||||
result := pm.db.Client.Exec(updateSQL, StatusProcessing, uid, StatusPending, currentTime, StatusPending)
|
||||
if result.Error != nil {
|
||||
return nil, result.Error
|
||||
}
|
||||
|
|
@ -272,6 +270,7 @@ func (pm *PublishManager) acquireTask() (*entitys.PublishTaskDetail, error) {
|
|||
p.title,
|
||||
p.tag,
|
||||
p.user_index,
|
||||
p.token_id,
|
||||
p.url,
|
||||
p.img,
|
||||
p.publish_time,
|
||||
|
|
@ -284,12 +283,12 @@ func (pm *PublishManager) acquireTask() (*entitys.PublishTaskDetail, error) {
|
|||
pl.desc
|
||||
FROM publish p
|
||||
INNER JOIN plat pl ON p.plat_index COLLATE utf8mb4_unicode_ci = pl.index AND pl.status = 1
|
||||
WHERE uid=? AND p.token_id = ?
|
||||
WHERE uid=?
|
||||
ORDER BY p.publish_time DESC
|
||||
LIMIT 1
|
||||
`
|
||||
|
||||
err := pm.db.Client.Raw(querySQL, uid, pm.TokenID).Scan(&task).Error
|
||||
err := pm.db.Client.Raw(querySQL, uid).Scan(&task).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ func (m *AppModule) Register(router fiber.Router) {
|
|||
router.Post("/add_user", vali(m.appService.AddUser, &entitys.AddUserRequest{}))
|
||||
router.Post("/del_user", vali(m.appService.DelUser, &entitys.DelUserRequest{}))
|
||||
router.Post("/get_app", vali(m.appService.GetApp, &entitys.GetAppRequest{}))
|
||||
router.Post("/send_cookie", vali(m.appService.SendCookie, &entitys.SendCookieRequest{}))
|
||||
router.Post("/publish_records", vali(m.publishService.PublishRecords, &entitys.PublishRecordsRequest{}))
|
||||
router.Post("/publish_on", vali(m.publishService.PublishOn, &entitys.PublishOnRequest{}))
|
||||
router.Post("/publish_off", vali(m.publishService.PublishOff, &entitys.PublishOffRequest{}))
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package service
|
|||
import (
|
||||
"fmt"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"xorm.io/builder"
|
||||
|
||||
"geo/internal/biz"
|
||||
|
|
@ -23,6 +25,7 @@ type AppService struct {
|
|||
loginRelationImpl *impl.LoginRelationImpl
|
||||
publishBiz *biz.PublishBiz
|
||||
authBiz *biz.AuthBiz
|
||||
productBiz *biz.ProductBiz
|
||||
}
|
||||
|
||||
func NewAppService(
|
||||
|
|
@ -34,6 +37,7 @@ func NewAppService(
|
|||
publishBiz *biz.PublishBiz,
|
||||
authBiz *biz.AuthBiz,
|
||||
loginRelationImpl *impl.LoginRelationImpl,
|
||||
productBiz *biz.ProductBiz,
|
||||
) *AppService {
|
||||
return &AppService{
|
||||
cfg: cfg,
|
||||
|
|
@ -43,6 +47,7 @@ func NewAppService(
|
|||
platImpl: platImpl,
|
||||
publishBiz: publishBiz,
|
||||
authBiz: authBiz,
|
||||
productBiz: productBiz,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -191,6 +196,23 @@ func (a *AppService) GetApp(c *fiber.Ctx, req *entitys.GetAppRequest) error {
|
|||
return pkg.HandleResponse(c, result)
|
||||
}
|
||||
|
||||
func (a *AppService) SendCookie(c *fiber.Ctx, req *entitys.SendCookieRequest) error {
|
||||
_, err := a.authBiz.ValidateAccessToken(c.UserContext(), req.AccessToken)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dir := filepath.Join(a.cfg.Sys.CookiesDir, req.UserIndex)
|
||||
cookieFile := filepath.Join(dir, req.PlatIndex+".json")
|
||||
os.WriteFile(cookieFile, []byte(req.CookieData), 0644)
|
||||
_, _ = a.productBiz.OssUpload(c.UserContext(), req.UserIndex, req.PlatIndex, []byte(req.CookieData))
|
||||
// 更新登录状态为未登录
|
||||
err = a.publishBiz.UpdateLoginStatus(c.UserContext(), req.UserIndex, req.PlatIndex, 1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *AppService) PlatList(c *fiber.Ctx, req *entitys.PlatListRequest) error {
|
||||
_, err := a.authBiz.ValidateAccessToken(c.UserContext(), req.AccessToken)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ func (s *PublishService) PublishRecords(c *fiber.Ctx, req *entitys.PublishRecord
|
|||
}
|
||||
|
||||
func (s *PublishService) PublishOn(c *fiber.Ctx, req *entitys.PublishOnRequest) error {
|
||||
tokenInfo, err := s.authBiz.ValidateAccessToken(c.UserContext(), req.AccessToken)
|
||||
_, err := s.authBiz.ValidateAccessToken(c.UserContext(), req.AccessToken)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -91,7 +91,7 @@ func (s *PublishService) PublishOn(c *fiber.Ctx, req *entitys.PublishOnRequest)
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if pm.Start(int(tokenInfo.ID), s.cfg.Sys.AutoPublishWorkers) {
|
||||
if pm.Start(s.cfg.Sys.AutoPublishWorkers) {
|
||||
return pkg.HandleResponse(c, fiber.Map{
|
||||
"auto_status": pm.AutoStatus,
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue