123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package model
- import (
- "encoding/json"
- "fmt"
- "go-common/app/service/openplatform/ticket-item/conf"
- "go-common/library/log"
- "io/ioutil"
- "net/http"
- "net/url"
- "reflect"
- "strconv"
- "strings"
- )
- // UT Data
- var (
- DataID = int64(75)
- DataIDs = []int64{75, 80}
- DataSIDs = []int64{90, 133, 136}
- DataTIDs = []int64{1179, 1180, 1368, 1360}
- NoDataID = int64(100000000)
- NoDataIDs = []int64{100000000, 100000001}
- NoDataSIDs = []int64{100000000, 100000001}
- NoDataTIDs = []int64{100000000, 100000001}
- )
- // JSONEncode 仿phpJSONEncode
- func JSONEncode(v interface{}) string {
- b, err := json.Marshal(v)
- if err != nil {
- log.Error("JSONEncode error(%v)", err)
- return ""
- }
- return string(b)
- }
- // String2Int64 convert string slice([]string) to int64 slice([]int64)
- func String2Int64(arr []string) (r []int64) {
- var (
- id int64
- err error
- )
- for _, v := range arr {
- if id, err = strconv.ParseInt(v, 10, 64); err != nil {
- continue
- }
- r = append(r, id)
- }
- return
- }
- // UniqueInt64 Ints returns a unique subset of the int slice provided.
- func UniqueInt64(input []int64) []int64 {
- u := make([]int64, 0, len(input))
- m := make(map[int64]bool)
- for _, val := range input {
- if _, ok := m[val]; !ok {
- m[val] = true
- u = append(u, val)
- }
- }
- return u
- }
- // Min 获取数组中最小值
- func Min(vars []int32) (minVar int32) {
- if vars != nil {
- minVar = vars[0]
- for _, v := range vars {
- if v < minVar {
- minVar = v
- }
- }
- }
- return
- }
- // Max 获取数组中最大值
- func Max(vars []int32) (maxVar int32) {
- for _, v := range vars {
- if v > maxVar {
- maxVar = v
- }
- }
- return
- }
- // GetTicketIDFromBase baseCenter获取票价id
- func GetTicketIDFromBase() (int64, error) {
- params := url.Values{}
- params.Add("count", "1")
- params.Add("biz_tag", "price")
- params.Add("app_id", conf.Conf.BASECenter.AppID)
- params.Add("app_token", conf.Conf.BASECenter.AppToken)
- reqParam := params.Encode()
- resp, err := http.Get(fmt.Sprintf(conf.Conf.BASECenter.URL+"orderid/get?%s", reqParam))
- if err != nil {
- log.Error("获取票价id HTTP REQUEST失败")
- return 0, err
- }
- defer resp.Body.Close()
- content, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- log.Error("读取HTTP RESPONSE失败")
- return 0, err
- }
- var result Response
- if err := json.Unmarshal(content, &result); err != nil {
- log.Error("json解析失败")
- }
- return result.Data[0], nil
- }
- var alphabetTable []string
- // AlphabetTable 获取票价所需symbol的字母表
- func AlphabetTable() []string {
- if alphabetTable != nil {
- return alphabetTable
- }
- result := make([]string, 52)
- var i int
- ch := 97
- for i = 0; i < 26; i++ {
- result[i] = string(ch + i)
- }
- ch = 65
- j := i
- for i = 0; i < 26; i++ {
- result[j] = string(ch + i)
- j++
- }
- alphabetTable = result
- return alphabetTable
- }
- // ClassifyIDs 获取已经存在和需要被删除的id list
- func ClassifyIDs(oldIDs []int64, newIDs []int64) (needDel []int64, existed []int64) {
- newIDsMap := make(map[int64]int64)
- for _, newID := range newIDs {
- newIDsMap[newID] = newID
- }
- for _, oldID := range oldIDs {
- if oldID == 0 {
- continue
- }
- if _, ok := newIDsMap[oldID]; !ok {
- needDel = append(needDel, oldID)
- } else {
- existed = append(existed, oldID)
- }
- }
- return
- }
- // Implode 仅支持不同类型的数组
- func Implode(glue string, list interface{}) string {
- listValue := reflect.Indirect(reflect.ValueOf(list))
- if listValue.Kind() != reflect.Slice {
- // 数组以外类型返回空字符串
- return ""
- }
- count := listValue.Len()
- listStr := make([]string, 0, count)
- for i := 0; i < count; i++ {
- str := fmt.Sprint(listValue.Index(i).Interface())
- listStr = append(listStr, str)
- }
- return strings.Join(listStr, glue)
- }
|