123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- package main
- import (
- "fmt"
- "log"
- "reflect"
- "strconv"
- "strings"
- "time"
- "unicode/utf8"
- "go.mongodb.org/mongo-driver/bson/primitive"
- "gopkg.in/mgo.v2/bson"
- util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils/redis"
- )
- // @Description 字段验证、处理
- // @Author J 2022/10/8 17:16
- func verifyF(f string, v interface{}, tmp1 interface{}) (interface{}, bool) {
- tmp := tmp1.(map[string]interface{})
- stype := util.ObjToString(tmp["stype"])
- vt := reflect.TypeOf(v).String()
- if strings.Contains(vt, stype) {
- switch stype {
- case "string":
- v1 := util.ObjToString(v)
- lens := util.IntAll(tmp["length"])
- if tmp["intercept"].(bool) {
- if utf8.RuneCountInString(v1) > lens {
- return string(([]rune(v1))[:lens]), true
- } else {
- return v1, false
- }
- } else {
- if utf8.RuneCountInString(v1) > lens {
- return "", true
- } else {
- return v1, false
- }
- }
- case "float":
- v1 := util.Float64All(v)
- min := util.Float64All(tmp["mix"])
- max := util.Float64All(tmp["max"])
- if min != 0 && v1 < min {
- return nil, true
- }
- if max != 0 && v1 >= max {
- return nil, true
- }
- dm := util.IntAll(tmp["decimal"]) //小数点位数
- v2, err := util.FormatFloat(v1, dm)
- if err != nil {
- return nil, true
- }
- return v2, false
- default:
- break
- }
- }
- return nil, true
- }
- func IsMarkInterfaceArr(t interface{}) []string {
- sub_list := []string{}
- if list_3, ok_3 := t.([]string); ok_3 {
- sub_list = list_3
- return sub_list
- }
- if list_1, ok_1 := t.(primitive.A); ok_1 {
- sub_list = util.ObjArrToStringArr(list_1)
- } else {
- if list_2, ok_2 := t.([]interface{}); ok_2 {
- sub_list = util.ObjArrToStringArr(list_2)
- }
- }
- return sub_list
- }
- func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
- p_list := []map[string]interface{}{}
- if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
- p_list = util.ObjArrToMapArr(yl_list_1)
- } else {
- if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
- p_list = util.ObjArrToMapArr(yl_list_2)
- }
- }
- return p_list
- }
- //获取企业的nameId
- //GetRedisKey 获取entname的key
- func GetRedisKey(name string) string {
- return fmt.Sprintf("nameId_%s", name)
- }
- //
- func GetNameId(name string) string {
- nameId := redis.GetStr("other", GetRedisKey(name))
- if nameId != "" {
- return nameId
- }
- info := MysqlTool.FindOne("dws_f_ent_baseinfo", map[string]interface{}{"name": name}, "name_id", "")
- if info != nil && (*info)["name_id"] != nil {
- name_id := util.ObjToString((*info)["name_id"])
- //存储redis
- redis.Put("other", GetRedisKey(name), name_id, 600)
- return name_id
- } else {
- return ""
- }
- }
- func GetNameIdByCompanyId(comapnyId string) string {
- info := MysqlTool.FindOne("dws_f_ent_baseinfo", map[string]interface{}{"company_id": comapnyId}, "name_id", "")
- if info != nil && (*info)["name_id"] != nil {
- return util.ObjToString((*info)["name_id"])
- } else {
- return ""
- }
- }
- // 转换时间
- func TransferDateTimeInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string) {
- for _, v := range keys {
- if t := util.Int64All(tmp[v]); t > 0 {
- key := "d_" + v
- (*info)[key] = util.FormatDateByInt64(&t, util.Date_Full_Layout)
- }
- }
- }
- // 转换金额费用
- func TransferMoneyRateInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string, maxs []float64) {
- for k, v := range keys {
- key := "f_" + v
- if value, b := CleanFloat64(util.Float64All(tmp[v]), maxs[k]); tmp[v] != nil && b {
- (*info)[key] = value
- }
- }
- }
- // 通用长度清洗
- func CleanLength(name string, l int) string {
- if l == -1 {
- return name
- }
- new_name := name
- if utf8.RuneCountInString(name) > l {
- new_name = string(([]rune(new_name))[:l])
- }
- return new_name
- }
- // 通用浮点清洗
- func CleanFloat64(value float64, max float64) (float64, bool) {
- if value <= max {
- return value, true
- }
- return float64(0), false
- }
- func GetObjectId() {
- sid := bson.NewObjectIdWithTime(time.Unix(1700537100, 0))
- eid := bson.NewObjectIdWithTime(time.Unix(1700580300, 0))
- log.Println(sid)
- log.Println(eid)
- return
- }
- //判断是否varchar类型超过字符串
- func VarcharCheck(str string, length int) bool {
- return utf8.RuneCountInString(str) > length
- }
- //获取每天0点数据
- func GetCurTimePiInfo() (string, string) {
- now := time.Now()
- start := time.Date(now.Year(), now.Month(), now.Day()-1, 0, 0, 0, 0, time.Local).Unix()
- end := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).Unix()
- gteid := strconv.FormatInt(start, 16) + "0000000000000000"
- ltid := strconv.FormatInt(end, 16) + "0000000000000000"
- log.Println("curtime:", gteid, ltid, "==", start, end)
- return gteid, ltid
- }
|