260 lines
6.2 KiB
Go
260 lines
6.2 KiB
Go
|
package unicom
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
"time"
|
||
|
|
||
|
"go-common/app/interface/main/app-wall/model"
|
||
|
"go-common/library/log"
|
||
|
xtime "go-common/library/time"
|
||
|
)
|
||
|
|
||
|
type Unicom struct {
|
||
|
Id int `json:"-"`
|
||
|
Spid int `json:"spid"`
|
||
|
CardType int `json:"cardtype"`
|
||
|
TypeInt int `json:"type"`
|
||
|
Unicomtype int `json:"unicomtype,omitempty"`
|
||
|
Ordertypes int `json:"-"`
|
||
|
Channelcode int `json:"-"`
|
||
|
Usermob string `json:"-"`
|
||
|
Cpid string `json:"-"`
|
||
|
Ordertime xtime.Time `json:"ordertime"`
|
||
|
Canceltime xtime.Time `json:"canceltime,omitempty"`
|
||
|
Endtime xtime.Time `json:"endtime,omitempty"`
|
||
|
Province string `json:"-"`
|
||
|
Area string `json:"-"`
|
||
|
Videoid string `json:"-"`
|
||
|
Time xtime.Time `json:"-"`
|
||
|
Flowbyte int `json:"flowbyte"`
|
||
|
}
|
||
|
|
||
|
type UnicomJson struct {
|
||
|
Usermob string `json:"usermob"`
|
||
|
Userphone string `json:"userphone"`
|
||
|
Cpid string `json:"cpid"`
|
||
|
Spid string `json:"spid"`
|
||
|
TypeInt string `json:"type"`
|
||
|
Ordertime string `json:"ordertime"`
|
||
|
Canceltime string `json:"canceltime"`
|
||
|
Endtime string `json:"endtime"`
|
||
|
Channelcode string `json:"channelcode"`
|
||
|
Province string `json:"province"`
|
||
|
Area string `json:"area"`
|
||
|
Ordertypes string `json:"ordertype"`
|
||
|
Videoid string `json:"videoid"`
|
||
|
Time string `json:"time"`
|
||
|
FlowbyteStr string `json:"flowbyte"`
|
||
|
}
|
||
|
|
||
|
type UnicomIpJson struct {
|
||
|
Ipbegin string `json:"ipbegin"`
|
||
|
Ipend string `json:"ipend"`
|
||
|
Provinces string `json:"province"`
|
||
|
Isopen string `json:"isopen"`
|
||
|
Opertime string `json:"opertime"`
|
||
|
Sign string `json:"sign"`
|
||
|
}
|
||
|
|
||
|
type UnicomIP struct {
|
||
|
Ipbegin int `json:"-"`
|
||
|
Ipend int `json:"-"`
|
||
|
IPStartUint uint32 `json:"-"`
|
||
|
IPEndUint uint32 `json:"-"`
|
||
|
}
|
||
|
|
||
|
type UnicomUserIP struct {
|
||
|
IPStr string `json:"ip"`
|
||
|
IsValide bool `json:"is_valide"`
|
||
|
}
|
||
|
|
||
|
type BroadbandOrder struct {
|
||
|
Usermob string `json:"userid,omitempty"`
|
||
|
Endtime string `json:"endtime,omitempty"`
|
||
|
Channel string `json:"channel,omitempty"`
|
||
|
}
|
||
|
|
||
|
type UserBind struct {
|
||
|
Usermob string `json:"usermob,omitempty"`
|
||
|
Phone int `json:"phone"`
|
||
|
Mid int64 `json:"mid"`
|
||
|
Name string `json:"name,omitempty"`
|
||
|
State int `json:"state,omitempty"`
|
||
|
Integral int `json:"integral"`
|
||
|
Flow int `json:"flow"`
|
||
|
Monthly time.Time `json:"monthly,omitempty"`
|
||
|
}
|
||
|
|
||
|
type UserPack struct {
|
||
|
ID int64 `json:"id"`
|
||
|
Type int `json:"type"`
|
||
|
Desc string `json:"desc"`
|
||
|
Amount int `json:"amount"`
|
||
|
Capped int8 `json:"capped"`
|
||
|
Integral int `json:"integral"`
|
||
|
Param string `json:"param"`
|
||
|
State int `json:"state,omitempty"`
|
||
|
}
|
||
|
|
||
|
type UserPackLimit struct {
|
||
|
IsLimit int `json:"is_limit"`
|
||
|
Count int `json:"count"`
|
||
|
}
|
||
|
|
||
|
type UnicomUserFlow struct {
|
||
|
Phone int `json:"phone"`
|
||
|
Mid int64 `json:"mid"`
|
||
|
Integral int `json:"integral"`
|
||
|
Flow int `json:"flow"`
|
||
|
Outorderid string `json:"outorderid"`
|
||
|
Orderid string `json:"orderid"`
|
||
|
Desc string `json:"desc"`
|
||
|
}
|
||
|
|
||
|
type UserPackLog struct {
|
||
|
Phone int `json:"phone,omitempty"`
|
||
|
Usermob string `json:"usermob,omitempty"`
|
||
|
Mid int64 `json:"mid,omitempty"`
|
||
|
RequestNo string `json:"request_no,omitempty"`
|
||
|
Type int `json:"pack_type"`
|
||
|
Desc string `json:"-"`
|
||
|
UserDesc string `json:"pack_desc,omitempty"`
|
||
|
Integral int `json:"integral,omitempty"`
|
||
|
}
|
||
|
|
||
|
type UserLog struct {
|
||
|
Phone int `json:"phone,omitempty"`
|
||
|
Integral int `json:"integral,omitempty"`
|
||
|
Desc string `json:"pack_desc,omitempty"`
|
||
|
Ctime string `json:"ctime,omitempty"`
|
||
|
}
|
||
|
|
||
|
type UserBindInfo struct {
|
||
|
MID int64 `json:"mid"`
|
||
|
Phone int `json:"phone"`
|
||
|
Action string `json:"action"`
|
||
|
}
|
||
|
|
||
|
// UnicomChange
|
||
|
func (u *Unicom) UnicomChange() {
|
||
|
if u.Canceltime.Time().IsZero() {
|
||
|
u.Canceltime = 0
|
||
|
}
|
||
|
if u.Endtime.Time().IsZero() {
|
||
|
u.Endtime = 0
|
||
|
}
|
||
|
switch u.Spid {
|
||
|
case 10019:
|
||
|
u.CardType = 1
|
||
|
case 10020:
|
||
|
u.CardType = 2
|
||
|
case 10021:
|
||
|
u.CardType = 3
|
||
|
case 979:
|
||
|
u.CardType = 4
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (u *UnicomJson) UnicomJSONChange() (err error) {
|
||
|
if u.Ordertypes != "" {
|
||
|
if _, err = strconv.Atoi(u.Ordertypes); err != nil {
|
||
|
log.Error("UnicomJsonChange error(%v)", u)
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (u *UnicomIP) UnicomIPChange() {
|
||
|
u.IPStartUint = u.unicomIPTOUint(u.Ipbegin)
|
||
|
u.IPEndUint = u.unicomIPTOUint(u.Ipend)
|
||
|
}
|
||
|
|
||
|
func (u *UnicomIP) unicomIPTOUint(ip int) (ipUnit uint32) {
|
||
|
var (
|
||
|
ip1, ip2, ip3, ip4 int
|
||
|
ipStr string
|
||
|
)
|
||
|
var _initIP = "%d.%d.%d.%d"
|
||
|
ip1 = ip / 1000000000
|
||
|
ip2 = (ip / 1000000) % 1000
|
||
|
ip3 = (ip / 1000) % 1000
|
||
|
ip4 = ip % 1000
|
||
|
ipStr = fmt.Sprintf(_initIP, ip1, ip2, ip3, ip4)
|
||
|
ipUnit = model.InetAtoN(ipStr)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UnicomJSONTOUincom
|
||
|
func (u *Unicom) UnicomJSONTOUincom(usermob string, ujson *UnicomJson) {
|
||
|
u.Spid, _ = strconv.Atoi(ujson.Spid)
|
||
|
u.Ordertime = timeStrToInt(ujson.Ordertime)
|
||
|
u.Canceltime = timeStrToInt(ujson.Canceltime)
|
||
|
u.Endtime = timeStrToInt(ujson.Endtime)
|
||
|
u.TypeInt, _ = strconv.Atoi(ujson.TypeInt)
|
||
|
u.Ordertypes, _ = strconv.Atoi(ujson.Ordertypes)
|
||
|
u.Channelcode, _ = strconv.Atoi(ujson.Channelcode)
|
||
|
u.Usermob = usermob
|
||
|
u.Cpid = ujson.Cpid
|
||
|
u.Province = ujson.Province
|
||
|
u.UnicomChange()
|
||
|
}
|
||
|
|
||
|
// timeStrToInt
|
||
|
func timeStrToInt(timeStr string) (timeInt xtime.Time) {
|
||
|
var err error
|
||
|
timeLayout := "20060102150405"
|
||
|
loc, _ := time.LoadLocation("Local")
|
||
|
theTime, _ := time.ParseInLocation(timeLayout, timeStr, loc)
|
||
|
if err = timeInt.Scan(theTime); err != nil {
|
||
|
log.Error("timeInt.Scan error(%v)", err)
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (u *UnicomIP) UnicomIPStrToint(ipstart, ipend string) {
|
||
|
u.Ipbegin = ipToInt(ipstart)
|
||
|
u.Ipend = ipToInt(ipend)
|
||
|
}
|
||
|
|
||
|
// ipToint
|
||
|
func ipToInt(ipString string) (ipInt int) {
|
||
|
tmp := strings.Split(ipString, ".")
|
||
|
if len(tmp) < 4 {
|
||
|
return
|
||
|
}
|
||
|
var ipStr string
|
||
|
for _, tip := range tmp {
|
||
|
var (
|
||
|
ipLen = len(tip)
|
||
|
last int
|
||
|
ip1 string
|
||
|
)
|
||
|
if ipLen < 3 {
|
||
|
last = 3 - ipLen
|
||
|
switch last {
|
||
|
case 1:
|
||
|
ip1 = "0" + tip
|
||
|
case 2:
|
||
|
ip1 = "00" + tip
|
||
|
case 3:
|
||
|
ip1 = "000"
|
||
|
}
|
||
|
} else {
|
||
|
ip1 = tip
|
||
|
}
|
||
|
ipStr = ipStr + ip1
|
||
|
}
|
||
|
ipInt, _ = strconv.Atoi(ipStr)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (t *UserLog) UserLogJSONChange(jsonData string) (err error) {
|
||
|
if err = json.Unmarshal([]byte(jsonData), &t); err != nil {
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|