84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
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)
|
|
}
|