76 lines
2.5 KiB
Go
76 lines
2.5 KiB
Go
package test
|
||
|
||
import (
|
||
"context"
|
||
"testing"
|
||
|
||
"github.com/gogf/gf/v2/container/gvar"
|
||
"github.com/gogf/gf/v2/util/gconv"
|
||
"github.com/samber/lo"
|
||
"github.com/tiger1103/gfast/v3/internal/app/system/dao"
|
||
"github.com/tiger1103/gfast/v3/internal/app/system/model/do"
|
||
"github.com/tiger1103/gfast/v3/internal/app/system/model/entity"
|
||
wxDao "github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
|
||
"github.com/tiger1103/gfast/v3/library/liberr"
|
||
richtext "github.com/tiger1103/gfast/v3/third/richText"
|
||
)
|
||
|
||
// 获取所有的后台项目公告,同步一份给App
|
||
func TestSyncIntro(t *testing.T) {
|
||
intructID := []entity.SysProjectIntroduce{}
|
||
if err := dao.SysProjectIntroduce.Ctx(context.Background()).Scan(&intructID); err != nil {
|
||
t.Error(err)
|
||
}
|
||
|
||
ctx := context.Background()
|
||
|
||
var notificationsList []do.NotificationRecipients
|
||
|
||
for _, v := range intructID {
|
||
// imags := richtext.ExtractImageURLs(v.RichText)
|
||
data := entity.Notifications{
|
||
Title: v.Headline,
|
||
NotificationText: richtext.RemoveRichText(v.RichText),
|
||
NotificationTime: v.CreatedAt.Format("2006-01-02 15:04:05"),
|
||
IsApp: 2,
|
||
Initiator: gconv.Int(v.CreatedBy),
|
||
ProjectId: int(v.ProjectId),
|
||
IntroduceId: int(v.ID),
|
||
}
|
||
notifiID, err := dao.Notifications.Ctx(ctx).InsertAndGetId(data)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
// 获取项目下的所有用户
|
||
projectUserIDs, err := wxDao.SysUserProjectRelevancy.Ctx(ctx).
|
||
Where(wxDao.SysUserProjectRelevancy.Columns().ProjectId, int(v.ProjectId)).
|
||
Fields(wxDao.SysUserProjectRelevancy.Columns().UserId).Distinct().Array()
|
||
liberr.ErrIsNil(ctx, err)
|
||
|
||
constructionUserIDs, err := dao.BusConstructionUser.Ctx(ctx).As("bcs").
|
||
InnerJoin("sys_user as su", "bcs.phone = su.mobile").
|
||
Where("bcs.project_id", int(v.ProjectId)).
|
||
Fields("su.id").Distinct().Array()
|
||
liberr.ErrIsNil(ctx, err)
|
||
|
||
// 将两个用户ID列表合并并去重
|
||
Users := lo.Uniq(lo.Map(append(projectUserIDs, constructionUserIDs...), func(item *gvar.Var, _ int) int {
|
||
return item.Int()
|
||
}))
|
||
|
||
lo.ForEach(Users, func(item int, _ int) {
|
||
notificationsList = append(notificationsList, do.NotificationRecipients{
|
||
NotificationId: notifiID, // 通知ID
|
||
RecipientId: item, // 接收者ID
|
||
NotificationStatus: 0, // 0 未读
|
||
IntroduceId: int(v.ID), // 关联的PC 端项目新闻ID
|
||
})
|
||
})
|
||
}
|
||
|
||
if _, err := dao.NotificationRecipients.Ctx(ctx).Insert(notificationsList); err != nil {
|
||
t.Error(err)
|
||
}
|
||
}
|