package srv import ( "os" ) var baseDIR = string("/.source") // FileInfo 文件信息 type FileInfo struct { FileData []byte FileName string } // WXFileMgr 文件管理器 type WXFileMgr struct { fileInfoChan chan *FileInfo currentDirName string endChan chan bool } // NewWXFileMgr 新建文件管理器 func NewWXFileMgr() *WXFileMgr { // 先创建文件夹 os.Mkdir(baseDIR, os.ModePerm) return &WXFileMgr{ fileInfoChan: make(chan *FileInfo, 10000), currentDirName: "", endChan: make(chan bool, 1), } } // Start 开启 func (wxfg *WXFileMgr) Start() { // go wxfg.doDeal() } // Stop 关闭 func (wxfg *WXFileMgr) Stop() { // wxfg.endChan <- true } // AddGroupQrcodeData 添加群二维码 func (wxfg *WXFileMgr) AddGroupQrcodeData(fileData []byte, fileName string) { // newFileInfo := &FileInfo{} // newFileInfo.FileData = fileData // newFileInfo.FileName = fileName // wxfg.fileInfoChan <- newFileInfo } func (wxfg *WXFileMgr) makeSureDir() { // if wxfg.currentDirName == time.Now().Format("2006-01-02") { // return // } // wxfg.currentDirName = time.Now().Format("2006-01-02") // subDirPath := baseDIR + "/" + wxfg.currentDirName // os.Mkdir(subDirPath, os.ModePerm) } func (wxfg *WXFileMgr) doDeal() { // for { // select { // case fileInfo := <-wxfg.fileInfoChan: // wxfg.writeToFile(fileInfo) // case <-wxfg.endChan: // return // } // } } // writeToFile 写入文件 func (wxfg *WXFileMgr) writeToFile(fileInfo *FileInfo) { // // 确保目录存在 // wxfg.makeSureDir() // tmpFilePath := baseDIR + "/" + wxfg.currentDirName + "/" + fileInfo.FileName // // 如果文件存在 // _, err := os.Lstat(tmpFilePath) // if err == nil { // return // } // baseutils.WriteToFile(fileInfo.FileData, tmpFilePath) }