#{moduleName}_proto "service/api/proto/#{moduleName}/proto" DB#{EntityName} = "#{moduleName}" COL#{EntityName} = "#{moduleName}" COL#{EntityName}IdSeq = "#{moduleName}_id_seq" // #{EntityCNName}表 func (m *Mongo) getCol#{EntityName}() *qmgo.Collection { return m.clientMix.Database(DB#{EntityName}).Collection(COL#{EntityName}) } // #{EntityCNName}IdSeq序列表 func (m *Mongo) getCol#{EntityCNName}IdSeq() *qmgo.Collection { return m.clientMix.Database(DB#{EntityName}).Collection(COL#{EntityName}IdSeq) } // #{EntityCNName}相关 func (m *Mongo) Create#{EntityName}(ctx *gin.Context, #{moduleName} *dbstruct.#{EntityName}) error { col := m.getCol#{EntityName}() _, err := col.InsertOne(ctx, #{moduleName}) return err } func (m *Mongo) Update#{EntityName}(ctx *gin.Context, #{moduleName} *dbstruct.#{EntityName}) error { col := m.getCol#{EntityName}() set := util.EntityToM(#{moduleName}) set["ut"] = time.Now().Unix() up := qmgo.M{ "$set": set, } err := col.UpdateId(ctx, #{moduleName}.Id, up) return err } func (m *Mongo) Delete#{EntityName}(ctx *gin.Context, id int64) error { col := m.getCol#{EntityName}() update := qmgo.M{ "$set": qmgo.M{ "del_flag": 1, }, } err := col.UpdateId(ctx, id, update) return err } func (m *Mongo) Get#{EntityName}List(ctx *gin.Context, req *#{moduleName}_proto.OpListReq) ([]*dbstruct.#{EntityName}, error) { list := make([]*dbstruct.#{EntityName}, 0) col := m.getCol#{EntityName}() query := qmgo.M{ "del_flag": 0, } err := col.Find(ctx, query).Sort("-ct").Skip(int64(req.Offset)).Limit(int64(req.Limit)).All(&list) if err == qmgo.ErrNoSuchDocuments { err = nil return list, err } return list, err } func (m *Mongo) Get#{EntityName}ById(ctx *gin.Context, id int64) (*dbstruct.#{EntityName}, error) { one := &dbstruct.#{EntityName}{} col := m.getCol#{EntityName}() query := qmgo.M{ "_id": id, "del_flag": 0, } err := col.Find(ctx, query).One(one) if err == qmgo.ErrNoSuchDocuments { err = nil return nil, err } return one, err } func (m *Mongo) Get#{EntityName}ListByIds(ctx *gin.Context, ids []int64) ([]*dbstruct.#{EntityName}, error) { list := make([]*dbstruct.#{EntityName}, 0) col := m.getCol#{EntityName}() query := qmgo.M{ "_id": qmgo.M{ "$in": ids, }, "del_flag": 0, } err := col.Find(ctx, query).Sort("-ct").All(&list) if err == qmgo.ErrNoSuchDocuments { err = nil return list, err } return list, err } // #{moduleName}发号器 func (m *Mongo) GetAndUpdate#{EntityName}IdSeq(ctx *gin.Context) (idSeq *dbstruct.#{EntityName}IdSeq, err error) { col := m.getCol#{EntityName}IdSeq() change := qmgo.Change{ Update: qmgo.M{"$inc": qmgo.M{"seq": 1}}, Upsert: true, ReturnNew: false, } idSeqInstance := dbstruct.#{EntityName}IdSeq{} if err = col.Find(ctx, qmgo.M{"_id": "#{moduleName}_seq_id"}).Apply(change, &idSeqInstance); err != nil { logger.Error("change error : %v", err) return } return &idSeqInstance, err }