package logger

import (
	"fmt"
	"io"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func check(e error) {
	if e != nil {
		panic(e)
	}
}
/**
 * 判断文件是否存在  存在返回 true 不存在返回false
 */
func checkFileIsExist(filename string) bool {
	var exist = true
	if _, err := os.Stat(filename); os.IsNotExist(err) {
		exist = false
	}
	return exist
}
/*
@param writeString 写入文件字符串
@param file_pre 附加文件前缀
eg: logic.Loginfo("逾期统计开始","_yuqilv_");
 */
func Log(writeString string,log_file_pre string,types int)  {
	log_file_pre  = "_"+log_file_pre
	date := time.Now().Format("2006-01-02")
	date2 := time.Now().Format("2006-01-02 15:04:05")
	path,_:=os.Getwd()
	CreateDateDir(path,"logs")
	var filename = path+"/logs/"+date+log_file_pre+".txt"
	var f *os.File
	var err1 error
	if checkFileIsExist(filename) { //如果文件存在
		f, err1 = os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE,0755)
	} else {
		f, err1 = os.Create(filename) //创建文件
	}
	check(err1)
	ss  := StrReplace("\r\n","",writeString,1) //替换多余换行
	io.WriteString(f,"\r\n"+date2+"----"+ss) //写入文件(字符串)
	if types == 1 {
		fmt.Print(writeString)
	}
	defer f.Close()
    //fmt.Print(err)
}

// CreateDateDir 根据当前日期来创建文件夹
func CreateDateDir(Path string,folderName string) string {
	if folderName == "" {
		folderName = time.Now().Format("20060102")
	}
	folderPath := filepath.Join(Path, folderName)
	if _, err := os.Stat(folderPath); os.IsNotExist(err) {
		// 必须分成两步:先创建文件夹、再修改权限
		os.Mkdir(folderPath, 0755) //0777也可以os.ModePerm
		os.Chmod(folderPath, 0755)
	}
	return folderPath
}

// StrReplace str_replace()
func StrReplace(search, replace, subject string, count int) string {
	return strings.Replace(subject, search, replace, count)
}