@@ -1,6 +1,6 @@ | |||||
# 多重构建,减少镜像大小 | # 多重构建,减少镜像大小 | ||||
# 构建:使用golang:1.18版本 | # 构建:使用golang:1.18版本 | ||||
FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.18.4 as build | |||||
FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.19 as build | |||||
# 容器环境变量添加,会覆盖默认的变量值 | # 容器环境变量添加,会覆盖默认的变量值 | ||||
ENV GO111MODULE=on | ENV GO111MODULE=on | ||||
@@ -1,6 +1,6 @@ | |||||
# 多重构建,减少镜像大小 | # 多重构建,减少镜像大小 | ||||
# 构建:使用golang:1.18版本 | # 构建:使用golang:1.18版本 | ||||
FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.18.4 as build | |||||
FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.19 as build | |||||
# 容器环境变量添加,会覆盖默认的变量值 | # 容器环境变量添加,会覆盖默认的变量值 | ||||
ENV GO111MODULE=on | ENV GO111MODULE=on | ||||
@@ -1,6 +1,6 @@ | |||||
# 多重构建,减少镜像大小 | # 多重构建,减少镜像大小 | ||||
# 构建:使用golang:1.18版本 | # 构建:使用golang:1.18版本 | ||||
FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.18.4 as build | |||||
FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.19 as build | |||||
# 容器环境变量添加,会覆盖默认的变量值 | # 容器环境变量添加,会覆盖默认的变量值 | ||||
ENV GO111MODULE=on | ENV GO111MODULE=on | ||||
@@ -20,6 +20,145 @@ import ( | |||||
type BusinessExtServer struct{} | type BusinessExtServer struct{} | ||||
func (s *BusinessExtServer) ViewGroupNotice(ctx context.Context, req *pb.ViewGroupNoticeReq) (*pb.ViewGroupNoticeResp, error) { | |||||
userId, _, err := grpclib.GetCtxData(ctx) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
groupNotice, err := repo2.GroupNoticeDao.Get(req.GroupId) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if groupNotice == nil { | |||||
return &pb.ViewGroupNoticeResp{ | |||||
GroupId: 0, | |||||
UserId: 0, | |||||
Content: "", | |||||
LikeNums: 0, | |||||
ReadNums: 0, | |||||
PublishType: 0, | |||||
PublishTime: "", | |||||
IsLike: false, | |||||
}, nil | |||||
} | |||||
groupNoticeWithLikeRecords, err := repo2.GroupNoticeWithLikeRecordsDao.Get(userId, req.GroupId) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
return &pb.ViewGroupNoticeResp{ | |||||
GroupId: groupNotice.GroupId, | |||||
UserId: groupNotice.UserId, | |||||
Content: groupNotice.Content, | |||||
LikeNums: int64(groupNotice.LikeNums), | |||||
ReadNums: int64(groupNotice.ReadNums), | |||||
PublishType: pb.GroupNoticePublishType(groupNotice.PublishType), | |||||
PublishTime: groupNotice.CreateTime.Format("2006-01-02 15:04:05"), | |||||
IsLike: func() bool { | |||||
if groupNoticeWithLikeRecords == nil { | |||||
return false | |||||
} | |||||
return true | |||||
}(), | |||||
}, nil | |||||
} | |||||
func (s *BusinessExtServer) LikeGroupNotice(ctx context.Context, req *pb.LikeGroupNoticeReq) (*pb.Empty, error) { | |||||
userId, _, err := grpclib.GetCtxData(ctx) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
groupNoticeWithLikeRecords, err := repo2.GroupNoticeWithLikeRecordsDao.Get(userId, req.GroupId) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if groupNoticeWithLikeRecords != nil { | |||||
return nil, errors.New("请勿重复点赞!") | |||||
} | |||||
groupNotice, err := repo2.GroupNoticeDao.Get(req.GroupId) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if groupNotice == nil { | |||||
return nil, errors.New("群公告记录不存在!") | |||||
} | |||||
err = repo2.GroupNoticeWithLikeRecordsDao.Save(&model.GroupNoticeWithLikeRecords{ | |||||
GroupId: req.GroupId, | |||||
UserId: userId, | |||||
}) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
groupNotice.LikeNums++ | |||||
return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice) | |||||
} | |||||
func (s *BusinessExtServer) CancelLikeGroupNotice(ctx context.Context, req *pb.CancelLikeGroupNoticeReq) (*pb.Empty, error) { | |||||
userId, _, err := grpclib.GetCtxData(ctx) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
groupNoticeWithLikeRecords, err := repo2.GroupNoticeWithLikeRecordsDao.Get(userId, req.GroupId) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if groupNoticeWithLikeRecords == nil { | |||||
return nil, errors.New("不存在的点赞记录!") | |||||
} | |||||
groupNotice, err := repo2.GroupNoticeDao.Get(req.GroupId) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if groupNotice == nil { | |||||
return nil, errors.New("群公告记录不存在!") | |||||
} | |||||
err = repo2.GroupNoticeWithLikeRecordsDao.Delete(userId, req.GroupId) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
err = repo2.GroupNoticeWithLikeRecordsDao.Save(&model.GroupNoticeWithLikeRecords{ | |||||
GroupId: req.GroupId, | |||||
UserId: userId, | |||||
}) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
groupNotice.LikeNums-- | |||||
return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice) | |||||
} | |||||
func (s *BusinessExtServer) PublishGroupNotice(ctx context.Context, req *pb.PublishGroupNoticeReq) (*pb.Empty, error) { | |||||
now := time.Now() | |||||
userId, _, err := grpclib.GetCtxData(ctx) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
//1、判断是否可以进行发布群公告 | |||||
groupUser, err := repo2.GroupUserRepo.Get(req.GroupId, userId) | |||||
if groupUser.MemberType == int(pb.MemberType_GMT_MEMBER) { | |||||
return nil, errors.New("普通成员不能发布群公告") | |||||
} | |||||
groupComplain := model.GroupNotice{ | |||||
GroupId: req.GroupId, | |||||
UserId: userId, | |||||
PublishType: int32(req.PublishType), | |||||
Content: req.Content, | |||||
LikeNums: 0, | |||||
ReadNums: 0, | |||||
CreateTime: now, | |||||
UpdateTime: now, | |||||
} | |||||
return new(pb.Empty), repo2.GroupNoticeDao.Save(&groupComplain) | |||||
} | |||||
func (s *BusinessExtServer) ComplainGroup(ctx context.Context, req *pb.ComplainGroupReq) (*pb.Empty, error) { | func (s *BusinessExtServer) ComplainGroup(ctx context.Context, req *pb.ComplainGroupReq) (*pb.Empty, error) { | ||||
now := time.Now() | now := time.Now() | ||||
userId, _, err := grpclib.GetCtxData(ctx) | userId, _, err := grpclib.GetCtxData(ctx) | ||||
@@ -4,14 +4,14 @@ import ( | |||||
"time" | "time" | ||||
) | ) | ||||
type GroupComplain struct { | |||||
Id int64 // 自增主键 | |||||
GroupId int64 // 群组id | |||||
UserId int64 // 用户id | |||||
ComplainType int // 投诉类型(1:存在赌博行为 2:存在骗钱行为 3:不当信息骚扰 4:传播谣言 5:发布假冒商品信息 6:侵犯未成年人权益 7:其他) | |||||
Text string // 投诉内容 | |||||
ImageList string // 图片 | |||||
Status int // 状态 | |||||
CreateTime time.Time // 创建时间 | |||||
UpdateTime time.Time // 更新时间 | |||||
type GroupNotice struct { | |||||
Id int64 // 自增主键 | |||||
GroupId int64 // 群组id | |||||
UserId int64 // 发布用户id | |||||
Content string // 公告内容 | |||||
LikeNums int // 点赞数量 | |||||
ReadNums int // 阅读数量 | |||||
PublishType int32 // 发布方式(1:仅发布 2:发布并通知 3:通知并置顶) | |||||
CreateTime time.Time // 创建时间 | |||||
UpdateTime time.Time // 更新时间 | |||||
} | } |
@@ -1,17 +1,7 @@ | |||||
package model | package model | ||||
import ( | |||||
"time" | |||||
) | |||||
type GroupNotice struct { | |||||
Id int64 // 自增主键 | |||||
GroupId int64 // 群组id | |||||
UserId int64 // 用户id | |||||
Content string // 公告内容 | |||||
LikeNums int // 点赞数量 | |||||
ReadNums int // 阅读数量 | |||||
PublishType int32 // 发布方式(1:仅发布 2:发布并通知 3:通知并置顶) | |||||
CreateTime time.Time // 创建时间 | |||||
UpdateTime time.Time // 更新时间 | |||||
type GroupNoticeWithLikeRecords struct { | |||||
Id int64 // 自增主键 | |||||
GroupId int64 // 群组id | |||||
UserId int64 // 点赞用户id | |||||
} | } |
@@ -8,13 +8,13 @@ import ( | |||||
"github.com/jinzhu/gorm" | "github.com/jinzhu/gorm" | ||||
) | ) | ||||
type groupComplainDao struct{} | |||||
type groupNoticeDao struct{} | |||||
var GroupComplainDao = new(groupComplainDao) | |||||
var GroupNoticeDao = new(groupNoticeDao) | |||||
// Get 获取群组信息 | |||||
func (*groupComplainDao) Get(id int64) (*model.GroupComplain, error) { | |||||
var group = model.GroupComplain{Id: id} | |||||
// Get 获取群组公告信息 | |||||
func (*groupNoticeDao) Get(groupId int64) (*model.GroupNotice, error) { | |||||
var group = model.GroupNotice{GroupId: groupId} | |||||
err := db.DB.First(&group).Error | err := db.DB.First(&group).Error | ||||
if err != nil && err != gorm.ErrRecordNotFound { | if err != nil && err != gorm.ErrRecordNotFound { | ||||
return nil, gerrors.WrapError(err) | return nil, gerrors.WrapError(err) | ||||
@@ -26,8 +26,25 @@ func (*groupComplainDao) Get(id int64) (*model.GroupComplain, error) { | |||||
} | } | ||||
// Save 插入一条群组 | // Save 插入一条群组 | ||||
func (*groupComplainDao) Save(group *model.GroupComplain) error { | |||||
err := db.DB.Save(&group).Error | |||||
func (g *groupNoticeDao) Save(groupNotice *model.GroupNotice) error { | |||||
mm, err := g.Get(groupNotice.GroupId) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
if mm != nil { | |||||
mm.Content = groupNotice.Content | |||||
mm.LikeNums = groupNotice.LikeNums | |||||
mm.ReadNums = groupNotice.ReadNums | |||||
mm.PublishType = groupNotice.PublishType | |||||
mm.UpdateTime = groupNotice.UpdateTime | |||||
//清除群组点赞记录 | |||||
err = GroupNoticeWithLikeRecordsDao.Clean(groupNotice.GroupId) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
} | |||||
err = db.DB.Save(&groupNotice).Error | |||||
if err != nil { | if err != nil { | ||||
return gerrors.WrapError(err) | return gerrors.WrapError(err) | ||||
} | } | ||||
@@ -8,16 +8,16 @@ import ( | |||||
"github.com/jinzhu/gorm" | "github.com/jinzhu/gorm" | ||||
) | ) | ||||
type groupNoticeDao struct{} | |||||
type groupNoticeWithLikeRecords struct{} | |||||
var GroupNoticeDao = new(groupNoticeDao) | |||||
var GroupNoticeWithLikeRecordsDao = new(groupNoticeWithLikeRecords) | |||||
// Get 获取群组公告信息 | |||||
func (*groupNoticeDao) Get(groupId int64) (*model.GroupNotice, error) { | |||||
var group = model.GroupNotice{GroupId: groupId} | |||||
err := db.DB.First(&group).Error | |||||
// Get 获取用户点赞信息 | |||||
func (*groupNoticeWithLikeRecords) Get(userId, groupId int64) (*model.GroupNoticeWithLikeRecords, error) { | |||||
group := model.GroupNoticeWithLikeRecords{} | |||||
err := db.DB.First(&group, "user_id = ? and group_id = ?", userId, groupId).Error | |||||
if err != nil && err != gorm.ErrRecordNotFound { | if err != nil && err != gorm.ErrRecordNotFound { | ||||
return nil, gerrors.WrapError(err) | |||||
return nil, err | |||||
} | } | ||||
if err == gorm.ErrRecordNotFound { | if err == gorm.ErrRecordNotFound { | ||||
return nil, nil | return nil, nil | ||||
@@ -26,10 +26,30 @@ func (*groupNoticeDao) Get(groupId int64) (*model.GroupNotice, error) { | |||||
} | } | ||||
// Save 插入一条群组 | // Save 插入一条群组 | ||||
func (*groupNoticeDao) Save(groupNotice *model.GroupNotice) error { | |||||
err := db.DB.Save(&groupNotice).Error | |||||
func (*groupNoticeWithLikeRecords) Save(groupNoticeWithLikeRecords *model.GroupNoticeWithLikeRecords) error { | |||||
err := db.DB.Save(&groupNoticeWithLikeRecords).Error | |||||
if err != nil { | if err != nil { | ||||
return gerrors.WrapError(err) | return gerrors.WrapError(err) | ||||
} | } | ||||
return nil | return nil | ||||
} | } | ||||
// Delete 取消点赞 | |||||
func (*groupNoticeWithLikeRecords) Delete(userId, groupId int64) (err error) { | |||||
group := model.GroupNoticeWithLikeRecords{} | |||||
err = gerrors.WrapError(db.DB.Where("user_id = ? and group_id = ?", userId, groupId).Delete(&group).Error) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
return nil | |||||
} | |||||
// Clean 清除群组点赞记录 | |||||
func (*groupNoticeWithLikeRecords) Clean(groupId int64) (err error) { | |||||
group := model.GroupNoticeWithLikeRecords{} | |||||
err = gerrors.WrapError(db.DB.Where("group_id = ?", groupId).Delete(&group).Error) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
return nil | |||||
} |