main.go 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "gdyb/models"
  6. _ "gdyb/routers"
  7. "github.com/astaxie/beego"
  8. "github.com/qiniu/api.v7/auth/qbox"
  9. "github.com/qiniu/api.v7/storage"
  10. "os"
  11. "strconv"
  12. "time"
  13. )
  14. func init() {
  15. //service.ConnectDB()
  16. //org_id, _ := beego.AppConfig.Int64("org_id")
  17. //miConfig, _ := service.FindMedicalInsuranceInfo(org_id)
  18. //CreateLog(miConfig)
  19. //UploadLog(miConfig)
  20. }
  21. func main() {
  22. beego.Run()
  23. }
  24. func CreateLog(miConfig models.MedicalInsuranceOrgConfig) {
  25. Mkdir(miConfig.OrgName + "日志")
  26. //org_id,_ := beego.AppConfig.Int("org_id")
  27. month := time.Unix(1557042972, 0).Format("1")
  28. year := time.Now().Format("2006")
  29. month = time.Now().Format("01")
  30. day := time.Now().Format("02")
  31. file := strconv.FormatInt(miConfig.UserOrgId, 10) + "_" + year + month + day + "_log"
  32. file_name := file + ".txt"
  33. file_path := miConfig.OrgName + "日志" + "/" + file_name
  34. exist, _ := PathExists(file_path)
  35. if exist { //存在
  36. fmt.Println("存在")
  37. f, err := os.OpenFile(file_path, os.O_WRONLY, 0644)
  38. if err != nil {
  39. fmt.Println("read fail")
  40. }
  41. content := "\r\r\r"
  42. n, _ := f.Seek(0, 2)
  43. _, err = f.WriteAt([]byte(content), n)
  44. } else { //不存在
  45. fmt.Println("文件不存在,创建文件")
  46. f, err := os.Create(miConfig.OrgName + "日志" + "/" + file_name)
  47. defer f.Close()
  48. if err != nil {
  49. } else {
  50. _, err = f.Write([]byte("记录日志"))
  51. }
  52. }
  53. }
  54. func UploadLog(miConfig models.MedicalInsuranceOrgConfig) {
  55. //获取七牛云上的文件信息,不存在则表示没上传到七牛云,上传昨天日志信息
  56. nTime := time.Now()
  57. yesTime := nTime.AddDate(0, 0, -1)
  58. file_key := strconv.FormatInt(miConfig.UserOrgId, 10) + "_" + yesTime.Format("20060102") + "_log.txt"
  59. mac := qbox.NewMac(beego.AppConfig.String("qiniu_accesskey"), beego.AppConfig.String("qiniu_secretkey"))
  60. cfg := storage.Config{
  61. // 是否使用https域名进行资源管理
  62. UseHTTPS: true,
  63. }
  64. // 指定空间所在的区域,如果不指定将自动探测
  65. // 如果没有特殊需求,默认不需要指定
  66. //cfg.Zone=&storage.ZoneHuabei
  67. bucketManager := storage.NewBucketManager(mac, &cfg)
  68. bucket := beego.AppConfig.String("qiniu_bucket")
  69. key := file_key
  70. file, sErr := bucketManager.Stat(bucket, key)
  71. fmt.Println(file)
  72. fmt.Println(sErr)
  73. fmt.Println(miConfig.OrgName + "日志" + "/" + file_key)
  74. if sErr != nil {
  75. fmt.Println("七牛云上文件不存在,上传到七牛云")
  76. //判断本地文件是否存在,存在则执行上传操作
  77. exist, _ := PathExists(miConfig.OrgName + "日志" + "/" + file_key)
  78. if exist {
  79. upload_qiniu(miConfig.OrgName+"日志"+"/"+file_key, file_key)
  80. } else {
  81. fmt.Println("本地文件不存在")
  82. }
  83. } else {
  84. fmt.Println("七牛云文件存在")
  85. }
  86. }
  87. func Mkdir(dir string) {
  88. // 创建文件夹
  89. exist, err := PathExists(dir)
  90. if err != nil {
  91. fmt.Println(err.Error())
  92. } else {
  93. if exist {
  94. fmt.Println(dir + "文件夹已存在!")
  95. } else {
  96. // 文件夹名称,权限
  97. err := os.Mkdir(dir, os.ModePerm)
  98. if err != nil {
  99. fmt.Println(dir+"文件夹创建失败:", err.Error())
  100. } else {
  101. fmt.Println(dir + "文件夹创建成功!")
  102. }
  103. }
  104. }
  105. }
  106. func PathExists(path string) (bool, error) {
  107. _, err := os.Stat(path)
  108. if err == nil {
  109. return true, nil
  110. }
  111. if os.IsNotExist(err) {
  112. return false, nil
  113. }
  114. return false, err
  115. }
  116. func upload_qiniu(filePath string, keys string) {
  117. key := keys
  118. //上传凭证,关于凭证这块大家可以去看看官方文档
  119. putPolicy := storage.PutPolicy{
  120. Scope: beego.AppConfig.String("qiniu_bucket"),
  121. }
  122. mac := qbox.NewMac(beego.AppConfig.String("qiniu_accesskey"), beego.AppConfig.String("qiniu_secretkey"))
  123. upToken := putPolicy.UploadToken(mac)
  124. cfg := storage.Config{}
  125. //空间对应机房
  126. //其中关于Zone对象和机房的关系如下:
  127. // 机房 Zone对象
  128. // 华东 storage.ZoneHuadong
  129. // 华北 storage.ZoneHuabei
  130. // 华南 storage.ZoneHuanan
  131. // 北美 storage.ZoneBeimei
  132. //七牛云存储空间设置首页有存储区域
  133. cfg.Zone = &storage.ZoneHuadong
  134. //不启用HTTPS域名
  135. cfg.UseHTTPS = false
  136. //不使用CND加速
  137. cfg.UseCdnDomains = false
  138. //构建上传表单对象
  139. formUploader := storage.NewFormUploader(&cfg)
  140. ret := storage.PutRet{}
  141. // 可选
  142. putExtra := storage.PutExtra{
  143. Params: map[string]string{},
  144. }
  145. err := formUploader.PutFile(context.Background(), &ret, upToken, key, filePath, &putExtra)
  146. if err != nil {
  147. fmt.Println(err)
  148. return
  149. }
  150. fmt.Println(ret.Key, ret.Hash)
  151. }