package stdlib import ( elastic "app.yhyue.com/moapp/jybase/esv7" jyDocsRpcUtil "app.yhyue.com/moapp/jydocs/services/util" "errors" "gorm.io/gorm" "log" "time" ) const DocOn = 1 const DocOff = 0 // 上架文档 func ChangeDocumentOn(id string, reason int32) bool { // 查文档 docData := map[string]interface{}{} rs := jyDocsRpcUtil.GetJyDocsDB().Table("doc").Where("id=? and isDelete=0", id).Find(&docData) if rs.Error != nil { log.Println("上架文档 error:"+id,rs.Error) return false } else { if docData["id"] == nil { log.Println("上架文档 error:"+id, "文档不存在") return false } } // 上架 err := jyDocsRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error { // 更新大库状态为上架 1-上架 if err := tx.Exec("update doc set downOrUp=? where id=? ", DocOn, id).Error; err != nil { return err } // 存上架记录 date := time.Now().Local().Format("2006-01-02 15:04:05") if err := tx.Exec("insert into doc_change_record (docId,date,downOrUp,reason) values (?,?,?,?)", id, date, DocOn, reason).Error; err != nil { return err } docData["_id"]=docData["id"] // todo es加数据 索引待替换 测试 if rs := elastic.Save("doc_lib", "doc", docData); rs != true { return errors.New("发布到检索库失败") } return nil }) log.Println("上架文档 error:"+id,err) if err != nil{ return false } return true } // 下架文档 func ChangeDocumentOff(id string, reason int32) bool { // 查文档 docData := map[string]interface{}{} rs := jyDocsRpcUtil.GetJyDocsDB().Table("doc").Where("id=? and isDelete=0", id).Find(&docData) if rs.Error != nil { log.Println("下架文档 error:"+id,rs.Error) return false } else { if docData["id"] == nil { log.Println("下架文档 error:"+id, "文档不存在") return false } } // 下架 err := jyDocsRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error { // 更新大库状态为下架 0-下架 if err := tx.Exec("update doc set downOrUp=? where id=? ", DocOff, id).Error; err != nil { return err } // 存下架记录 date := time.Now().Local().Format("2006-01-02 15:04:05") if err := tx.Exec("insert into doc_change_record (docId,date,downOrUp,reason) values (?,?,?,?)", id, date, DocOff, reason).Error; err != nil { return err } //todo 从es删除数据 索引待替换 及测试 if rs := elastic.DelById("doc_lib", "doc", id); rs != true { return errors.New("从检索库删除失败") } return nil }) if err !=nil{ log.Println("上架文档 error:"+id,err) return false } return true }