main.go 4.4KB

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