删除不属于聚合支付的管理后台
@ -1,4 +0,0 @@
|
||||
package common
|
||||
|
||||
const ACTIVE = "active"
|
||||
const UNACTIVE = "unactive"
|
@ -1,12 +0,0 @@
|
||||
appname = merchant
|
||||
httpport = 8080
|
||||
runmode = dev
|
||||
|
||||
dbtype = mysql
|
||||
|
||||
[legend]
|
||||
host = localhost
|
||||
port = 3306
|
||||
username = root
|
||||
password = Kyb^15273031604
|
||||
dbname = juhe_pay
|
@ -1,75 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"legend/controllers/base"
|
||||
"legend/request"
|
||||
"legend/service"
|
||||
)
|
||||
|
||||
type AreaController struct {
|
||||
base.BasicController
|
||||
}
|
||||
|
||||
func (c *AreaController) getRequestPrams() *request.AreaReq {
|
||||
req := new(request.AreaReq)
|
||||
req.AreaName = c.GetString("areaName")
|
||||
req.GroupName = c.GetString("groupName")
|
||||
req.TemplateName = c.GetString("templateName")
|
||||
req.NotifyUrl = c.GetString("notifyUrl")
|
||||
req.AttachParams = c.GetString("attachParams")
|
||||
return req
|
||||
}
|
||||
|
||||
func (c *AreaController) AreaAdd() {
|
||||
|
||||
req := c.getRequestPrams()
|
||||
|
||||
se := new(service.AreaService)
|
||||
area := se.AddArea(req)
|
||||
|
||||
c.Data["json"] = area
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *AreaController) AreaEdit() {
|
||||
req := c.getRequestPrams()
|
||||
uid := c.GetString("uid")
|
||||
|
||||
se := new(service.AreaService)
|
||||
resp := se.EditArea(req, uid)
|
||||
|
||||
c.Data["json"] = resp
|
||||
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *AreaController) AreaList() {
|
||||
page, _ := c.GetInt("page")
|
||||
limit, _ := c.GetInt("limit")
|
||||
|
||||
se := new(service.AreaService)
|
||||
list := se.AreaList(page, limit)
|
||||
|
||||
c.Data["json"] = list
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *AreaController) AreaDelete() {
|
||||
uid := c.GetString("uid")
|
||||
|
||||
se := new(service.AreaService)
|
||||
resp := se.DeleteArea(uid)
|
||||
c.Data["json"] = resp
|
||||
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *AreaController) AreaGet() {
|
||||
uid := c.GetString("uid")
|
||||
|
||||
se := new(service.AreaService)
|
||||
resp := se.GetArea(uid)
|
||||
|
||||
c.Data["json"] = resp
|
||||
_ = c.ServeJSON()
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
"legend/models/fast"
|
||||
)
|
||||
|
||||
/**
|
||||
** 基础controller插件,重写一些公共的方法
|
||||
*/
|
||||
type BasicController struct {
|
||||
web.Controller
|
||||
}
|
||||
|
||||
func (c *BasicController) Prepare() {
|
||||
|
||||
userName, ok := c.GetSession("userName").(string)
|
||||
if ok {
|
||||
logs.Info("该用户已经登录, userName:", userName)
|
||||
userInfo := fast.GetMerchantInfoByUserName(userName)
|
||||
if userInfo.LoginAccount != "" {
|
||||
c.Data["nickName"] = userInfo.MerchantName
|
||||
c.Data["merchantUid"] = userInfo.MerchantUid
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
type MainController struct {
|
||||
beego.Controller
|
||||
}
|
||||
|
||||
func (c *MainController) Get() {
|
||||
c.Data["Website"] = "beego.me"
|
||||
c.Data["Email"] = "astaxie@gmail.com"
|
||||
c.TplName = "index.tpl"
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package expection
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
"html/template"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func PageNotFind(rw http.ResponseWriter, r *http.Request) {
|
||||
t, _ := template.New("404.html").ParseFiles(web.BConfig.WebConfig.ViewsPath + "/error/404.html")
|
||||
data := make(map[string]interface{})
|
||||
t.Execute(rw, data)
|
||||
}
|
||||
|
||||
func SystemExpection(rw http.ResponseWriter, r *http.Request) {
|
||||
t, _ := template.New("503.html").ParseFiles(web.BConfig.WebConfig.ViewsPath + "/error/503.html")
|
||||
data := make(map[string]interface{})
|
||||
t.Execute(rw, data)
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"legend/controllers/base"
|
||||
"legend/service"
|
||||
)
|
||||
|
||||
type GroupController struct {
|
||||
base.BasicController
|
||||
}
|
||||
|
||||
func (c *GroupController) AddGroup() {
|
||||
groupName := c.GetString("groupName")
|
||||
|
||||
se := new(service.GroupService)
|
||||
resp := se.GroupAdd(groupName)
|
||||
|
||||
c.Data["json"] = resp
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *GroupController) ListGroup() {
|
||||
page, _ := c.GetInt("page")
|
||||
limit, _ := c.GetInt("limit")
|
||||
|
||||
se := new(service.GroupService)
|
||||
list := se.GroupList(page, limit)
|
||||
|
||||
c.Data["json"] = list
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *GroupController) DeleteGroup() {
|
||||
uid := c.GetString("uid")
|
||||
|
||||
se := new(service.GroupService)
|
||||
resp := se.GroupDelete(uid)
|
||||
|
||||
c.Data["json"] = resp
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *GroupController) EditGroup() {
|
||||
|
||||
uid := c.GetString("uid")
|
||||
groupName := c.GetString("groupName")
|
||||
|
||||
se := new(service.GroupService)
|
||||
resp := se.GroupEdit(uid, groupName)
|
||||
|
||||
c.Data["json"] = resp
|
||||
_ = c.ServeJSON()
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"legend/controllers/base"
|
||||
)
|
||||
|
||||
type IndexController struct {
|
||||
base.BasicController
|
||||
}
|
||||
|
||||
/**
|
||||
** 用户登录后跳转的页面,也是后台的整个主题框架
|
||||
*/
|
||||
func (c *IndexController) Index() {
|
||||
c.TplName = "index.html"
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
"legend/service"
|
||||
)
|
||||
|
||||
type LoginController struct {
|
||||
web.Controller
|
||||
}
|
||||
|
||||
/**
|
||||
**展示登录页面
|
||||
*/
|
||||
func (c *LoginController) LoginPage() {
|
||||
c.TplName = "login.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 处理登录逻辑
|
||||
*/
|
||||
func (c *LoginController) Login() {
|
||||
|
||||
userName := c.GetString("username")
|
||||
password := c.GetString("password")
|
||||
|
||||
logs.Info("username:"+userName, ";password: "+password)
|
||||
|
||||
loginService := new(service.LoginService)
|
||||
|
||||
loginJsonData := loginService.Login(userName, password)
|
||||
if loginJsonData.Code == 200 {
|
||||
_ = c.SetSession("userName", userName)
|
||||
}
|
||||
|
||||
c.Data["json"] = loginJsonData
|
||||
|
||||
err := c.ServeJSON()
|
||||
if err != nil {
|
||||
logs.Error("错误:", err)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
** 更新登录密码
|
||||
*/
|
||||
func (c *LoginController) PersonPassword() {
|
||||
oldPassword := c.GetString("oldpass")
|
||||
newPassword := c.GetString("newpass")
|
||||
repeatPassword := c.GetString("repass")
|
||||
|
||||
logs.Debug("用户跟换密码,旧密码:%s, 新密码:%s,确认密码:%s", oldPassword, newPassword, repeatPassword)
|
||||
|
||||
userNname := c.GetSession("userName").(string)
|
||||
|
||||
loginService := new(service.LoginService)
|
||||
loginJsonData := loginService.PersonPassword(newPassword, oldPassword, repeatPassword, userNname)
|
||||
|
||||
c.Data["json"] = loginJsonData
|
||||
_ = c.ServeJSON()
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
type LogoutController struct {
|
||||
web.Controller
|
||||
}
|
||||
|
||||
func (c *LogoutController) Logout() {
|
||||
if err := c.DelSession("username"); err != nil {
|
||||
logs.Error("用户退出登录出错,错误信息:", err)
|
||||
}
|
||||
c.Redirect("/login.html", 302)
|
||||
}
|
||||
|
||||
/**
|
||||
** 切换用户登录
|
||||
*/
|
||||
func (c *LogoutController) SwitchLogin() {
|
||||
err := c.DelSession("username")
|
||||
if err != nil {
|
||||
logs.Error("切换账号失败,错误信息:", err)
|
||||
}
|
||||
|
||||
c.Redirect("/login.html", 302)
|
||||
}
|
@ -1,164 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"legend/controllers/base"
|
||||
"legend/service"
|
||||
"legend/utils"
|
||||
)
|
||||
|
||||
type ShowPageController struct {
|
||||
base.BasicController
|
||||
}
|
||||
|
||||
func (c *ShowPageController) FaviconPage() {
|
||||
c.TplName = "favicon.png"
|
||||
}
|
||||
|
||||
/**
|
||||
** 展示后台第一个页面
|
||||
*/
|
||||
func (c *ShowPageController) WelcomePage() {
|
||||
|
||||
userName := c.GetSession("userName").(string)
|
||||
|
||||
fmt.Println(userName)
|
||||
|
||||
accountService := new(service.AccountService)
|
||||
accountInfo := accountService.GetAccountInfo(userName)
|
||||
|
||||
logs.Debug("account信息:", accountInfo)
|
||||
|
||||
c.Data["balance"] = accountInfo.Balance
|
||||
c.Data["unBalance"] = accountInfo.FreezeAmount
|
||||
c.Data["settleAmount"] = accountInfo.SettleAmount
|
||||
// 获取今天充值金额
|
||||
todayIncome := accountService.GetTodayIncome()
|
||||
logs.Debug("获取到当天充值金额:", todayIncome)
|
||||
c.Data["todayAmount"] = todayIncome
|
||||
|
||||
c.TplName = "welcome.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 展示商户密钥
|
||||
*/
|
||||
func (c *ShowPageController) MerchantKeyPage() {
|
||||
userName := c.GetSession("userName").(string)
|
||||
|
||||
merchantService := new(service.MerchantService)
|
||||
userInfo, bankInfo := merchantService.GetMerchantBankInfo(userName)
|
||||
|
||||
c.Data["currentTime"] = utils.GetNowTime()
|
||||
c.Data["userName"] = userName
|
||||
c.Data["userInfo"] = userInfo
|
||||
c.Data["bankInfo"] = bankInfo
|
||||
c.TplName = "merchant-key.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 比例模板
|
||||
*/
|
||||
func (c *ShowPageController) ScaleTemplatePage() {
|
||||
c.TplName = "scale-template.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 增加模板
|
||||
*/
|
||||
func (c *ShowPageController) TemplateAdd() {
|
||||
c.TplName = "template-add.html"
|
||||
}
|
||||
|
||||
func (c *ShowPageController) TemplateEdit() {
|
||||
templateName := c.GetString("templateName")
|
||||
fmt.Println(templateName)
|
||||
c.Data["scaleTemplateName"] = templateName
|
||||
c.TplName = "template-edit.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 分组列表
|
||||
*/
|
||||
func (c *ShowPageController) GroupListPage() {
|
||||
c.TplName = "group-list.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 分区列表
|
||||
*/
|
||||
func (c *ShowPageController) AreaListPage() {
|
||||
c.TplName = "area-list.html"
|
||||
}
|
||||
|
||||
func (c *ShowPageController) AreaEdit() {
|
||||
uid := c.GetString("uid")
|
||||
c.Data["uid"] = uid
|
||||
c.TplName = "area-edit.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 充值订单
|
||||
*/
|
||||
func (c *ShowPageController) OrderListPage() {
|
||||
c.TplName = "order-list.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 模拟充值
|
||||
*/
|
||||
func (c *ShowPageController) ImitateChargePage() {
|
||||
c.TplName = "imitate-order.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 结算管理
|
||||
*/
|
||||
func (c *ShowPageController) SettleListPage() {
|
||||
c.TplName = "settle-list.html"
|
||||
}
|
||||
|
||||
/**
|
||||
**每日充值统计
|
||||
*/
|
||||
func (c *ShowPageController) EverydayChargeCountPage() {
|
||||
c.TplName = "everyday-charge-count.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 分组充值统计
|
||||
*/
|
||||
func (c *ShowPageController) GroupChargeCountPage() {
|
||||
c.TplName = "group-charge-count.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 分区充值统计
|
||||
*/
|
||||
func (c *ShowPageController) AreaChargePage() {
|
||||
c.TplName = "area-charge-count.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 创建分区和编辑分区
|
||||
*/
|
||||
func (c *ShowPageController) AreaAddOrEdit() {
|
||||
c.TplName = "area-add.html"
|
||||
}
|
||||
|
||||
/**
|
||||
** 个人页面
|
||||
*/
|
||||
func (c *ShowPageController) PersonPage() {
|
||||
userName, ok := c.GetSession("userName").(string)
|
||||
if !ok {
|
||||
c.Abort("404")
|
||||
} else {
|
||||
merchantService := new(service.MerchantService)
|
||||
userInfo := merchantService.MerchantInfo(userName)
|
||||
c.Data["userName"] = userInfo.MerchantName
|
||||
}
|
||||
|
||||
c.TplName = "person.html"
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"legend/controllers/base"
|
||||
"legend/request"
|
||||
"legend/service"
|
||||
"legend/utils"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type TemplateController struct {
|
||||
base.BasicController
|
||||
}
|
||||
|
||||
func (c *TemplateController) TemplateAdd() {
|
||||
|
||||
addTemplate := new(request.AddTemplateReq)
|
||||
if err := c.ParseForm(addTemplate); err != nil {
|
||||
logs.Error("错误:", err)
|
||||
}
|
||||
|
||||
addTemplate.FixPrices = utils.StringToFloats(c.GetString("fixPrices"))
|
||||
addTemplate.PresentFixMoneys = utils.StringToFloats(c.GetString("presentFixMoneys"))
|
||||
addTemplate.PresentFixPresentMoneys = utils.StringToFloats(c.GetString("presentFixPresentMoneys"))
|
||||
addTemplate.PresentScaleMoneys = utils.StringToFloats(c.GetString("presentScaleMoneys"))
|
||||
addTemplate.PresentScales = utils.StringToFloats(c.GetString("presentScales"))
|
||||
|
||||
addTemplate.FixUids = strings.Split(c.GetString("fixUids"), ",")
|
||||
addTemplate.GoodsNames = strings.Split(c.GetString("goodsNames"), ",")
|
||||
addTemplate.GoodsNos = strings.Split(c.GetString("goodsNos"), ",")
|
||||
|
||||
addTemplate.PresentFixUids = strings.Split(c.GetString("presentFixUids"), ",")
|
||||
addTemplate.PresentScaleUids = strings.Split(c.GetString("presentScaleUids"), ",")
|
||||
addTemplate.Limits = utils.StringToInt(c.GetString("limits"))
|
||||
|
||||
se := new(service.TemplateService)
|
||||
merchantUid := c.Data["merchantUid"].(string)
|
||||
t := c.GetString("type")
|
||||
if t == "edit" {
|
||||
c.Data["json"] = se.UpdateTemplate(addTemplate, merchantUid)
|
||||
} else {
|
||||
c.Data["json"] = se.AddTemplate(addTemplate, merchantUid)
|
||||
}
|
||||
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *TemplateController) TemplateList() {
|
||||
|
||||
page, _ := c.GetInt("page")
|
||||
limit, _ := c.GetInt("limit")
|
||||
|
||||
se := new(service.TemplateService)
|
||||
list := se.GetTemplateList(page, limit)
|
||||
|
||||
c.Data["json"] = list
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *TemplateController) TemplateDelete() {
|
||||
templateName := c.GetString("TemplateName")
|
||||
|
||||
logs.Debug("template TemplateName :", templateName)
|
||||
|
||||
se := new(service.TemplateService)
|
||||
baseResp := se.DeleteTemplate(templateName)
|
||||
|
||||
c.Data["json"] = baseResp
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *TemplateController) TemplateAllInfo() {
|
||||
templateName := c.GetString("scaleTemplateName")
|
||||
logs.Debug("获取到的scaleTemplateName:", templateName)
|
||||
|
||||
se := new(service.TemplateService)
|
||||
allInfo := se.AllTemplateInfo(templateName)
|
||||
|
||||
logs.Debug("scale template all info:", fmt.Sprintf("%+v", allInfo))
|
||||
|
||||
c.Data["json"] = allInfo
|
||||
|
||||
_ = c.ServeJSON()
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
package filter
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/adapter/logs"
|
||||
"github.com/beego/beego/v2/server/web/context"
|
||||
"strings"
|
||||
)
|
||||
|
||||
/**
|
||||
** 对所有的用户请求进行登录判断,如果未登录跳转到登录页面
|
||||
** 但是对登录请求不进行过滤
|
||||
*/
|
||||
var LoginFilter = func(ctx *context.Context) {
|
||||
|
||||
_, ok := ctx.Input.Session("userName").(string)
|
||||
if !ok {
|
||||
if ctx.Request.RequestURI == "/login.html" {
|
||||
return
|
||||
}
|
||||
|
||||
if !strings.Contains(ctx.Request.RequestURI, "/login") {
|
||||
ctx.Redirect(302, "/login.html")
|
||||
} else {
|
||||
logs.Error("该用户没有登录.......")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
module legend
|
||||
|
||||
go 1.13
|
||||
|
||||
require github.com/beego/beego/v2 v2.0.1
|
||||
|
||||
require (
|
||||
github.com/go-sql-driver/mysql v1.5.0
|
||||
github.com/rs/xid v1.3.0
|
||||
github.com/smartystreets/goconvey v1.6.4
|
||||
)
|
285
legend/go.sum
@ -1,285 +0,0 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
|
||||
github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk=
|
||||
github.com/astaxie/beego v1.12.3 h1:SAQkdD2ePye+v8Gn1r4X6IKZM1wd28EyUOVQ3PDSOOQ=
|
||||
github.com/astaxie/beego v1.12.3/go.mod h1:p3qIm0Ryx7zeBHLljmd7omloyca1s4yu1a8kM1FkpIA=
|
||||
github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE=
|
||||
github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI=
|
||||
github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ=
|
||||
github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
|
||||
github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
|
||||
github.com/coreos/etcd v3.3.25+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U=
|
||||
github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c=
|
||||
github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs=
|
||||
github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
|
||||
github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI=
|
||||
github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk=
|
||||
github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw=
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
|
||||
github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg=
|
||||
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
|
||||
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ=
|
||||
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
|
||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
|
||||
github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=
|
||||
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
|
||||
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
||||
github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
|
||||
github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||
github.com/prometheus/client_golang v1.7.0 h1:wCi7urQOGBsYcQROHqpUUX4ct84xp40t9R9JX0FuA/U=
|
||||
github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
|
||||
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc=
|
||||
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
|
||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rs/xid v1.3.0 h1:6NjYksEUlhurdVehpc7S7dk6DAmcKv8V9gG0FsVN2U4=
|
||||
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo=
|
||||
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg=
|
||||
github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
|
||||
github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s=
|
||||
github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
|
||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
|
||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
|
||||
github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
|
||||
github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
|
||||
github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU=
|
||||
go.etcd.io/etcd v3.3.25+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI=
|
||||
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
|
||||
go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58 h1:1Bs6RVeBFtLZ8Yi1Hk07DiOqzvwLD/4hln4iahvFlag=
|
||||
golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
@ -1,48 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
"legend/controllers/expection"
|
||||
_ "legend/models"
|
||||
_ "legend/routers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
beego.BConfig.WebConfig.Session.SessionOn = true
|
||||
RegisterLogs()
|
||||
RegisterErrorHandler()
|
||||
beego.Run()
|
||||
}
|
||||
|
||||
/**
|
||||
**注册错误页面
|
||||
*/
|
||||
func RegisterErrorHandler() {
|
||||
beego.ErrorHandler("404", expection.PageNotFind)
|
||||
beego.ErrorHandler("503", expection.SystemExpection)
|
||||
}
|
||||
|
||||
/**
|
||||
** 注册日志信息
|
||||
*/
|
||||
func RegisterLogs() {
|
||||
logs.SetLogger(logs.AdapterFile,
|
||||
`{
|
||||
"filename":"../../logs/legend.log",
|
||||
"level":4,
|
||||
"maxlines":0,
|
||||
"maxsize":0,
|
||||
"daily":true,
|
||||
"maxdays":10,
|
||||
"color":true
|
||||
}`)
|
||||
|
||||
f := &logs.PatternLogFormatter{
|
||||
Pattern: "%F:%n|%w%t>> %m",
|
||||
WhenFormat: "2006-01-02",
|
||||
}
|
||||
|
||||
logs.RegisterFormatter("pattern", f)
|
||||
_ = logs.SetGlobalFormatter("pattern")
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
package fast
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type AccountInfo struct {
|
||||
Id string `orm:"pk;column(id)"`
|
||||
Status string
|
||||
AccountUid string
|
||||
AccountName string
|
||||
Balance float64
|
||||
SettleAmount float64
|
||||
LoanAmount float64
|
||||
WaitAmount float64
|
||||
FreezeAmount float64
|
||||
PayforAmount float64
|
||||
UpdateTime string
|
||||
CreateTime string
|
||||
}
|
||||
|
||||
const ACCOUNTINFO = "account_info"
|
||||
|
||||
func (c *AccountInfo) TableName() string {
|
||||
return "account_info"
|
||||
}
|
||||
|
||||
func GetAccountInfo(accountUid string) *AccountInfo {
|
||||
o := orm.NewOrm()
|
||||
|
||||
account := new(AccountInfo)
|
||||
if _, err := o.QueryTable(ACCOUNTINFO).Filter("account_uid", accountUid).All(account); err != nil {
|
||||
logs.Error("获取account信息失败:", err)
|
||||
}
|
||||
|
||||
return account
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
package fast
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type BankCardInfo struct {
|
||||
Id string `orm:"pk;column(id)"`
|
||||
Uid string
|
||||
UserName string
|
||||
BankName string
|
||||
BankCode string
|
||||
BankAccountType string
|
||||
AccountName string
|
||||
BankNo string
|
||||
IdentifyCard string
|
||||
CertificateNo string
|
||||
PhoneNo string
|
||||
BankAddress string
|
||||
CreateTime string
|
||||
UpdateTime string
|
||||
}
|
||||
|
||||
const BANKCARDINFO = "bank_card_info"
|
||||
|
||||
func (c *BankCardInfo) TableName() string {
|
||||
return BANKCARDINFO
|
||||
}
|
||||
|
||||
func GetBankCardInfoByUserNo(merchantNo string) *BankCardInfo {
|
||||
o := orm.NewOrm()
|
||||
bankCardInfo := new(BankCardInfo)
|
||||
if _, err := o.QueryTable(BANKCARDINFO).Filter("user_name", merchantNo).Limit(1).All(bankCardInfo); err != nil {
|
||||
|
||||
logs.Error("获取用户银行卡信息失败:", err)
|
||||
}
|
||||
return bankCardInfo
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
package fast
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type MerchantDeployInfo struct {
|
||||
Id string `orm:"pk;column(id)"`
|
||||
Status string
|
||||
MerchantUid string
|
||||
PayType string
|
||||
SingleRoadUid string
|
||||
SingleRoadName string
|
||||
}
|
||||
|
||||
const MERCHANTDEPLOYINFO = "merchant_deploy_info"
|
||||
|
||||
func (c *MerchantDeployInfo) TableName() string {
|
||||
return MERCHANTDEPLOYINFO
|
||||
}
|
||||
|
||||
func GetUserPayConfigByUserNo(userNo string) *MerchantDeployInfo {
|
||||
o := orm.NewOrm()
|
||||
userPayConfig := new(MerchantDeployInfo)
|
||||
_, err := o.QueryTable(MERCHANTDEPLOYINFO).Filter("user_no", userNo).All(userPayConfig)
|
||||
if err != nil {
|
||||
logs.Error("获取用户支付配置错误:", err)
|
||||
}
|
||||
|
||||
return userPayConfig
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
package fast
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type MerchantInfo struct {
|
||||
Id string `orm:"pk;column(id)"`
|
||||
Status string
|
||||
BelongAgentUid string
|
||||
BelongAgentName string
|
||||
MerchantName string
|
||||
MerchantUid string
|
||||
MerchantKey string
|
||||
MerchantSecret string
|
||||
LoginAccount string
|
||||
LoginPassword string
|
||||
AutoSettle string
|
||||
AutoPayFor string
|
||||
WhiteIps string
|
||||
Remark string
|
||||
SinglePayForRoadUid string
|
||||
SinglePayForRoadName string
|
||||
RollPayForRoadCode string
|
||||
RollPayForRoadName string
|
||||
PayforFee string
|
||||
CreateTime string
|
||||
UpdateTime string
|
||||
}
|
||||
|
||||
func (c *MerchantInfo) TableName() string {
|
||||
return "merchant_info"
|
||||
|
||||
}
|
||||
|
||||
func tableName() string {
|
||||
return "merchant_info"
|
||||
}
|
||||
|
||||
func GetMerchantInfoByUserName(userName string) *MerchantInfo {
|
||||
|
||||
o := orm.NewOrm()
|
||||
userInfo := new(MerchantInfo)
|
||||
|
||||
_, err := o.QueryTable(tableName()).Filter("login_account", userName).All(userInfo)
|
||||
|
||||
if err != nil {
|
||||
logs.Error("根据用户名从数据获取用户信息失败:", err)
|
||||
}
|
||||
|
||||
return userInfo
|
||||
}
|
||||
|
||||
/**
|
||||
** 更新用户信息
|
||||
*/
|
||||
func UpdateMerchantInfo(merchantInfo *MerchantInfo) bool {
|
||||
o := orm.NewOrm()
|
||||
|
||||
if _, err := o.Update(merchantInfo); err != nil {
|
||||
logs.Error("更新用户信息失败,错误:%s", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
package fast
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/adapter/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type OrderInfo struct {
|
||||
Id string `orm:"pk;column(id)"`
|
||||
MerchantOrderId string
|
||||
ShopName string
|
||||
OrderPeriod string
|
||||
BankOrderId string
|
||||
BankTransId string
|
||||
OrderAmount float64
|
||||
ShowAmount float64
|
||||
FactAmount float64
|
||||
RollPoolCode string
|
||||
RollPoolName string
|
||||
RoadUid string
|
||||
RoadName string
|
||||
PayProductCode string
|
||||
PayProductName string
|
||||
PayTypeCode string
|
||||
PayTypeName string
|
||||
OsType string
|
||||
Status string
|
||||
Refund string
|
||||
RefundTime string
|
||||
Freeze string
|
||||
FreezeTime string
|
||||
Unfreeze string
|
||||
UnfreezeTime string
|
||||
ReturnUrl string
|
||||
NotifyUrl string
|
||||
MerchantUid string
|
||||
MerchantName string
|
||||
AgentUid string
|
||||
AgentName string
|
||||
Response string
|
||||
UpdateTime string
|
||||
CreateTime string
|
||||
}
|
||||
|
||||
const ORDERINFO = "order_info"
|
||||
|
||||
func (c *OrderInfo) TableName() string {
|
||||
return ORDERINFO
|
||||
}
|
||||
|
||||
/**
|
||||
** 获取短时间内的充值金额
|
||||
*/
|
||||
func GetRangeDateIncome(startTime, endTime string) float64 {
|
||||
o := orm.NewOrm()
|
||||
sum := 0.00
|
||||
err := o.Raw("select sum(order_amount) from order_info where status = ? and create_time >= ? and create_time <= ?", "success", startTime, endTime).QueryRow(&sum)
|
||||
if err != nil {
|
||||
logs.Error("获取短时间内金额失败,err:", err)
|
||||
}
|
||||
|
||||
return sum
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"legend/models/fast"
|
||||
"legend/models/legend"
|
||||
"os"
|
||||
)
|
||||
|
||||
/**
|
||||
** 链接数据库,注册已经存在的数据表,进行orm映射操作
|
||||
*/
|
||||
func init() {
|
||||
initLegend()
|
||||
}
|
||||
|
||||
/**
|
||||
** 初始化传奇支付系统的mysql数据库
|
||||
*/
|
||||
func initLegend() {
|
||||
dbType, _ := web.AppConfig.String("dbtype")
|
||||
mysqlHost, _ := web.AppConfig.String("legend::host")
|
||||
mysqlPort, _ := web.AppConfig.String("legend::port")
|
||||
mysqlUserName, _ := web.AppConfig.String("legend::username")
|
||||
mysqlPassword, _ := web.AppConfig.String("legend::password")
|
||||
mysqlDbName, _ := web.AppConfig.String("legend::dbname")
|
||||
|
||||
logs.Info("host:%s, port:%s, usreName:%s, password:%s, dbname:%s", mysqlHost, mysqlPort,
|
||||
mysqlUserName, mysqlPassword, mysqlDbName)
|
||||
|
||||
pStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&loc=Local",
|
||||
mysqlUserName, mysqlPassword, mysqlHost, mysqlPort, mysqlDbName)
|
||||
|
||||
if err := orm.RegisterDataBase("default", dbType, pStr); err != nil {
|
||||
logs.Error("init legend fail:%s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
orm.SetMaxIdleConns("default", 30)
|
||||
orm.SetMaxIdleConns("default", 30)
|
||||
|
||||
orm.RegisterModel(new(fast.MerchantInfo))
|
||||
orm.RegisterModel(new(fast.MerchantDeployInfo))
|
||||
orm.RegisterModel(new(fast.BankCardInfo))
|
||||
orm.RegisterModel(new(fast.AccountInfo))
|
||||
orm.RegisterModel(new(fast.OrderInfo))
|
||||
|
||||
orm.RegisterModel(new(legend.AnyMoney))
|
||||
orm.RegisterModel(new(legend.FixMoney))
|
||||
orm.RegisterModel(new(legend.FixPresent))
|
||||
orm.RegisterModel(new(legend.ScalePresent))
|
||||
orm.RegisterModel(new(legend.ScaleTemplate))
|
||||
orm.RegisterModel(new(legend.Group))
|
||||
orm.RegisterModel(new(legend.Area))
|
||||
|
||||
logs.Info("init legend success ......")
|
||||
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
package legend
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type AnyMoney struct {
|
||||
Id int `orm:"pk;column(id)"`
|
||||
TemplateName string
|
||||
GameMoneyName string
|
||||
GameMoneyScale int
|
||||
LimitLow float64
|
||||
BaseDao
|
||||
}
|
||||
|
||||
const ANYMONEY = "legend_any_money"
|
||||
|
||||
func (c *AnyMoney) TableName() string {
|
||||
return ANYMONEY
|
||||
}
|
||||
|
||||
func InsertAnyMoney(anyMoney *AnyMoney) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Insert(anyMoney); err != nil {
|
||||
logs.Error("insert any money info err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func GetAnyMoneyByName(name string) *AnyMoney {
|
||||
o := orm.NewOrm()
|
||||
anyMoney := new(AnyMoney)
|
||||
if _, err := o.QueryTable(ANYMONEY).Filter("template_name", name).Limit(1).All(anyMoney); err != nil {
|
||||
logs.Error("get any money err:", err)
|
||||
}
|
||||
return anyMoney
|
||||
}
|
||||
|
||||
func DeleteAnyMoney(templateName string) bool {
|
||||
o := orm.NewOrm()
|
||||
_, err := o.QueryTable(ANYMONEY).Filter("template_name", templateName).Delete()
|
||||
if err != nil {
|
||||
logs.Error("delete any money err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func UpdateAnyMoney(anyMoney *AnyMoney) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Update(anyMoney); err != nil {
|
||||
logs.Error("update any money err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,92 +0,0 @@
|
||||
package legend
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type Area struct {
|
||||
Id int `orm:"pk;column(id)"`
|
||||
AreaName string
|
||||
Uid string
|
||||
GroupName string
|
||||
TemplateName string
|
||||
NotifyUrl string
|
||||
AttachParams string
|
||||
BaseDao
|
||||
}
|
||||
|
||||
const AREA = "legend_area"
|
||||
|
||||
func (c *Area) TableName() string {
|
||||
return AREA
|
||||
}
|
||||
|
||||
func InsertArea(area *Area) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Insert(area); err != nil {
|
||||
logs.Error("insert area err: ", err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func GetAreaByName(name string) *Area {
|
||||
o := orm.NewOrm()
|
||||
area := new(Area)
|
||||
if _, err := o.QueryTable(AREA).Filter("area_name", name).Limit(1).All(area); err != nil {
|
||||
logs.Error("get area by name err:", err)
|
||||
}
|
||||
|
||||
return area
|
||||
}
|
||||
|
||||
func GetAreaAllCount() int {
|
||||
o := orm.NewOrm()
|
||||
count, err := o.QueryTable(AREA).Count()
|
||||
if err != nil {
|
||||
logs.Error("get area all count err:", err)
|
||||
}
|
||||
|
||||
return int(count)
|
||||
}
|
||||
|
||||
func GetAreaList(offset, limit int) []Area {
|
||||
o := orm.NewOrm()
|
||||
var areas []Area
|
||||
if _, err := o.QueryTable(AREA).Limit(limit, offset).OrderBy("-create_time").All(&areas); err != nil {
|
||||
logs.Error(" get area list err:", err)
|
||||
}
|
||||
|
||||
return areas
|
||||
}
|
||||
|
||||
func GetAreaByUid(uid string) *Area {
|
||||
o := orm.NewOrm()
|
||||
area := new(Area)
|
||||
if _, err := o.QueryTable(AREA).Filter("uid", uid).Limit(1).All(area); err != nil {
|
||||
logs.Error(" get area by uid err : ", err)
|
||||
}
|
||||
|
||||
return area
|
||||
}
|
||||
|
||||
func UpdateArea(area *Area) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Update(area); err != nil {
|
||||
logs.Error("update area err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func DeleteAreaByUid(uid string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(AREA).Filter("uid", uid).Delete(); err != nil {
|
||||
logs.Error(" delete area by uid err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package legend
|
||||
|
||||
type BaseDao struct {
|
||||
UpdateTime string
|
||||
CreateTime string
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
package legend
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type FixMoney struct {
|
||||
Id int `orm:"pk;column(id)"`
|
||||
Uid string
|
||||
TemplateName string
|
||||
Price float64
|
||||
GoodsName string
|
||||
GoodsNo string
|
||||
BuyTimes int
|
||||
BaseDao
|
||||
}
|
||||
|
||||
const FIXMONEY = "legend_fix_money"
|
||||
|
||||
func (c *FixMoney) TableName() string {
|
||||
return FIXMONEY
|
||||
}
|
||||
|
||||
func InsertFixMoney(fixMoney *FixMoney) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Insert(fixMoney); err != nil {
|
||||
logs.Error("insert fix money err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func GetFixMoneyByName(name string) []FixMoney {
|
||||
o := orm.NewOrm()
|
||||
var fixMoneys []FixMoney
|
||||
if _, err := o.QueryTable(FIXMONEY).Filter("template_name", name).Limit(-1).All(&fixMoneys); err != nil {
|
||||
logs.Error("get fix money err:", err)
|
||||
}
|
||||
|
||||
return fixMoneys
|
||||
}
|
||||
|
||||
func GetFixMoneyByUid(uid string) *FixMoney {
|
||||
o := orm.NewOrm()
|
||||
fixMoney := new(FixMoney)
|
||||
if _, err := o.QueryTable(FIXMONEY).Filter("uid", uid).Limit(1).All(fixMoney); err != nil {
|
||||
logs.Error("get fix Money by uid err:", err)
|
||||
}
|
||||
|
||||
return fixMoney
|
||||
}
|
||||
|
||||
func DeleteFixMoney(templateName string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(FIXMONEY).Filter("template_name", templateName).Delete(); err != nil {
|
||||
logs.Error("delete fix money err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func DeleteFixMoneyByUid(uid string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(FIXMONEY).Filter("uid", uid).Delete(); err != nil {
|
||||
logs.Error("delete fix money err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func UpdateFixMoney(fixMoney *FixMoney) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Update(fixMoney); err != nil {
|
||||
logs.Error("update fix money err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
package legend
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type FixPresent struct {
|
||||
Id int `orm:"pk;column(id)"`
|
||||
Uid string
|
||||
TemplateName string
|
||||
Money float64
|
||||
PresentMoney float64
|
||||
BaseDao
|
||||
}
|
||||
|
||||
const FIXPRESENT = "legend_fix_present"
|
||||
|
||||
func (c *FixPresent) TableName() string {
|
||||
return FIXPRESENT
|
||||
}
|
||||
|
||||
func InsertFixPresent(fixPresnet *FixPresent) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Insert(fixPresnet); err != nil {
|
||||
logs.Error("insert fix present err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func GetFixPresentsByName(name string) []FixPresent {
|
||||
o := orm.NewOrm()
|
||||
var fixPresents []FixPresent
|
||||
if _, err := o.QueryTable(FIXPRESENT).Filter("template_name", name).Limit(-1).All(&fixPresents); err != nil {
|
||||
logs.Error("get fix presents err:", err)
|
||||
}
|
||||
|
||||
return fixPresents
|
||||
}
|
||||
|
||||
func GetFixPresentByUid(uid string) *FixPresent {
|
||||
o := orm.NewOrm()
|
||||
fixPresent := new(FixPresent)
|
||||
if _, err := o.QueryTable(FIXPRESENT).Filter("uid", uid).Limit(1).All(fixPresent); err != nil {
|
||||
logs.Error("get fix present err:", err)
|
||||
}
|
||||
|
||||
return fixPresent
|
||||
}
|
||||
|
||||
func DeleteFixPresent(templateName string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(FIXPRESENT).Filter("template_name", templateName).Delete(); err != nil {
|
||||
logs.Error("delete fix present err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func DeleteFixPresentByUid(uid string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(FIXPRESENT).Filter("uid", uid).Delete(); err != nil {
|
||||
logs.Error("delete fix present by uid err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func UpdatePresentFixMoney(present *FixPresent) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Update(present); err != nil {
|
||||
logs.Error("update fix present err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,90 +0,0 @@
|
||||
package legend
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type Group struct {
|
||||
Id int `orm:"pk;column(id)"`
|
||||
GroupName string
|
||||
Uid string
|
||||
BaseDao
|
||||
}
|
||||
|
||||
const GROUP = "legend_group"
|
||||
|
||||
func (c *Group) TableName() string {
|
||||
return GROUP
|
||||
}
|
||||
|
||||
func InsertGroup(group *Group) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Insert(group); err != nil {
|
||||
logs.Error("insert group err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func GetGroupAllCont() int {
|
||||
o := orm.NewOrm()
|
||||
count, err := o.QueryTable(GROUP).Limit(-1).Count()
|
||||
if err != nil {
|
||||
logs.Error(" get group all count err: ", err)
|
||||
}
|
||||
|
||||
return int(count)
|
||||
}
|
||||
|
||||
func GetGroupList(offset, limit int) []Group {
|
||||
o := orm.NewOrm()
|
||||
|
||||
var groups []Group
|
||||
if _, err := o.QueryTable(GROUP).Limit(limit, offset).OrderBy("-create_time").All(&groups); err != nil {
|
||||
logs.Error("get scale template list err : ", err)
|
||||
}
|
||||
|
||||
return groups
|
||||
}
|
||||
|
||||
func GetGroupByName(name string) *Group {
|
||||
o := orm.NewOrm()
|
||||
group := new(Group)
|
||||
if _, err := o.QueryTable(GROUP).Filter("group_name", name).Limit(1).All(group); err != nil {
|
||||
logs.Error(" get group by name err:", err)
|
||||
}
|
||||
|
||||
return group
|
||||
}
|
||||
|
||||
func GetGroupByUid(uid string) *Group {
|
||||
o := orm.NewOrm()
|
||||
group := new(Group)
|
||||
if _, err := o.QueryTable(GROUP).Filter("uid", uid).Limit(1).All(group); err != nil {
|
||||
logs.Error("get group by uid err: ", err)
|
||||
}
|
||||
|
||||
return group
|
||||
}
|
||||
|
||||
func DeleteGroupByUid(uid string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(GROUP).Filter("uid", uid).Delete(); err != nil {
|
||||
logs.Error("delete group by uid err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func UpdateGroup(group *Group) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Update(group); err != nil {
|
||||
logs.Error("update group err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
package legend
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type ScalePresent struct {
|
||||
Id int `orm:"pk;column(id)"`
|
||||
Uid string
|
||||
TemplateName string
|
||||
Money float64
|
||||
PresentScale float64
|
||||
BaseDao
|
||||
}
|
||||
|
||||
const SCALEPRESENT = "legend_scale_present"
|
||||
|
||||
func (c *ScalePresent) TableName() string {
|
||||
return SCALEPRESENT
|
||||
}
|
||||
|
||||
func InsertScalePresent(scalePresent *ScalePresent) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Insert(scalePresent); err != nil {
|
||||
logs.Error("insert scale present err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func GetScalePresentsByName(name string) []ScalePresent {
|
||||
o := orm.NewOrm()
|
||||
var scalePresents []ScalePresent
|
||||
if _, err := o.QueryTable(SCALEPRESENT).Filter("template_name", name).Limit(-1).All(&scalePresents); err != nil {
|
||||
logs.Error("get scale present err:", err)
|
||||
}
|
||||
|
||||
return scalePresents
|
||||
}
|
||||
|
||||
func GetScalePresentByUid(uid string) *ScalePresent {
|
||||
o := orm.NewOrm()
|
||||
scalePresent := new(ScalePresent)
|
||||
if _, err := o.QueryTable(SCALEPRESENT).Filter("uid", uid).Limit(1).All(scalePresent); err != nil {
|
||||
logs.Error("get scale present err:", err)
|
||||
}
|
||||
|
||||
return scalePresent
|
||||
}
|
||||
|
||||
func DeleteScalePresent(templateName string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(SCALEPRESENT).Filter("template_name", templateName).Delete(); err != nil {
|
||||
logs.Error("delete scale present err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func DeleteScalePresentByUid(uid string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(SCALEPRESENT).Filter("uid", uid).Delete(); err != nil {
|
||||
logs.Error("delete scale present by uid err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func UpdateScalePresent(present *ScalePresent) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Update(present); err != nil {
|
||||
logs.Error("update scale present err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
package legend
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
type ScaleTemplate struct {
|
||||
Id int `orm:"pk;column(id)"`
|
||||
MerchantUid string
|
||||
TemplateName string
|
||||
UserUid string
|
||||
UserWarn string
|
||||
MoneyType string
|
||||
PresentType string
|
||||
BaseDao
|
||||
}
|
||||
|
||||
const SCALETMPLETE = "legend_scale_template"
|
||||
|
||||
func (c *ScaleTemplate) TableName() string {
|
||||
return SCALETMPLETE
|
||||
}
|
||||
|
||||
func InsertScaleTemplate(scaleTemplate *ScaleTemplate) bool {
|
||||
o := orm.NewOrm()
|
||||
|
||||
if _, err := o.Insert(scaleTemplate); err != nil {
|
||||
logs.Error("insert scale template err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func IsExistsScaleTemplateByName(name string) bool {
|
||||
o := orm.NewOrm()
|
||||
return o.QueryTable(SCALETMPLETE).Filter("template_name", name).Exist()
|
||||
}
|
||||
|
||||
func GetScaleTemplateList(offset, limit int) []ScaleTemplate {
|
||||
o := orm.NewOrm()
|
||||
|
||||
var scaleTemplates []ScaleTemplate
|
||||
if _, err := o.QueryTable(SCALETMPLETE).Limit(limit, offset).OrderBy("-create_time").All(&scaleTemplates); err != nil {
|
||||
logs.Error("get scale template list err : ", err)
|
||||
}
|
||||
|
||||
return scaleTemplates
|
||||
}
|
||||
|
||||
func GetScaleTemplateAll() int {
|
||||
o := orm.NewOrm()
|
||||
count, err := o.QueryTable(SCALETMPLETE).Count()
|
||||
if err != nil {
|
||||
logs.Error("get scale template all err:", err)
|
||||
}
|
||||
return int(count)
|
||||
}
|
||||
|
||||
func GetScaleTemplateByName(name string) *ScaleTemplate {
|
||||
o := orm.NewOrm()
|
||||
scaleTemplate := new(ScaleTemplate)
|
||||
if _, err := o.QueryTable(SCALETMPLETE).Filter("template_name", name).Limit(1).All(scaleTemplate); err != nil {
|
||||
logs.Error("get scale template by name err:", err)
|
||||
}
|
||||
|
||||
return scaleTemplate
|
||||
}
|
||||
|
||||
func GetScaleTemplateByNameAndMerchantUid(name, merchantUid string) *ScaleTemplate {
|
||||
o := orm.NewOrm()
|
||||
scaleTemplate := new(ScaleTemplate)
|
||||
if _, err := o.QueryTable(SCALETMPLETE).Filter("template_name", name).
|
||||
Filter("merchant_uid", merchantUid).Limit(1).All(scaleTemplate); err != nil {
|
||||
logs.Error("get scale template by name and merchantUid err:", err)
|
||||
}
|
||||
|
||||
return scaleTemplate
|
||||
}
|
||||
|
||||
func DeleteScaleTemplate(templateName string) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.QueryTable(SCALETMPLETE).Filter("template_name", templateName).Delete(); err != nil {
|
||||
logs.Error("delete template err:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func UpdateScaleTemplate(template *ScaleTemplate) bool {
|
||||
o := orm.NewOrm()
|
||||
if _, err := o.Update(template); err != nil {
|
||||
logs.Error("update scale template err: ", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package request
|
||||
|
||||
type AreaReq struct {
|
||||
AreaName string
|
||||
GroupName string
|
||||
TemplateName string
|
||||
NotifyUrl string
|
||||
AttachParams string
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package request
|
||||
|
||||
type AddTemplateReq struct {
|
||||
ScaleTemplateName string `form:"scaleTemplateName"`
|
||||
ScaleUserName string `form:"scaleUserName"`
|
||||
ScaleUserNamePoint string `form:"scaleUserNamePoint"`
|
||||
MoneyType string `form:"moneyType"`
|
||||
GameMoneyName string `form:"gameMoneyName"`
|
||||
GameMoneyScale int `form:"gameMoneyScale"`
|
||||
LimitLowMoney float64 `form:"limitLowMoney"`
|
||||
PresentType string `form:"presentType"`
|
||||
FixPrices []float64 `form:"fixPrices"`
|
||||
GoodsNames []string `form:"goodsNames"`
|
||||
GoodsNos []string `form:"goodsNos"`
|
||||
Limits []int `form:"limits"`
|
||||
PresentFixMoneys []float64 `form:"presentFixMoneys"`
|
||||
PresentFixPresentMoneys []float64 `form:"presentFixPresentMoneys"`
|
||||
PresentScaleMoneys []float64 `form:"presentScaleMoneys"`
|
||||
PresentScales []float64 `form:"presentScales"`
|
||||
FixUids []string `form:"fixUids"`
|
||||
PresentScaleUids []string `form:"presentScaleUids"`
|
||||
PresentFixUids []string `form:"presentFixUids"`
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package response
|
||||
|
||||
import "legend/models/legend"
|
||||
|
||||
type AreaListResp struct {
|
||||
Code int `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
Count int `json:"count"`
|
||||
Data []legend.Area `json:"data"`
|
||||
}
|
||||
|
||||
type AreaInfoResp struct {
|
||||
Code int
|
||||
Msg string
|
||||
Area *legend.Area
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package response
|
||||
|
||||
type BaseResp struct {
|
||||
Code int
|
||||
Msg string
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package response
|
||||
|
||||
import "legend/models/legend"
|
||||
|
||||
type GroupListResp struct {
|
||||
Code int `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
Count int `json:"count"`
|
||||
Data []legend.Group `json:"data"`
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
package response
|
||||
|
||||
import "legend/models/legend"
|
||||
|
||||
type AddTemplateResp struct {
|
||||
Code int
|
||||
Msg string
|
||||
}
|
||||
|
||||
type TemplateListResp struct {
|
||||
Code int `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
Count int `json:"count"`
|
||||
Data []legend.ScaleTemplate `json:"data"`
|
||||
}
|
||||
|
||||
type TemplateAllInfoResp struct {
|
||||
AddTemplateResp
|
||||
TemplateInfo *legend.ScaleTemplate
|
||||
AnyMoneyInfo *legend.AnyMoney
|
||||
FixMoneyInfos []legend.FixMoney
|
||||
PresentFixMoneyInfos []legend.FixPresent
|
||||
PresentScaleMoneyInfos []legend.ScalePresent
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
package routers
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
"legend/controllers"
|
||||
"legend/filter"
|
||||
)
|
||||
|
||||
func init() {
|
||||
pageInit()
|
||||
logicInit()
|
||||
}
|
||||
|
||||
/**
|
||||
** 初始化展示页面路由器
|
||||
*/
|
||||
func pageInit() {
|
||||
|
||||
//web.Router("/favicon.ico", &controllers.ShowPageController{}, "*:FaviconPage")
|
||||
web.Router("/", &controllers.IndexController{}, "*:Index")
|
||||
web.Router("/index.html", &controllers.IndexController{}, "*:Index")
|
||||
web.Router("/login.html", &controllers.LoginController{}, "*:LoginPage")
|
||||
web.Router("/welcome.html", &controllers.ShowPageController{}, "*:WelcomePage")
|
||||
web.Router("/merchantKey.html", &controllers.ShowPageController{}, "*:MerchantKeyPage")
|
||||
web.Router("/orderList.html", &controllers.ShowPageController{}, "*:OrderListPage")
|
||||
web.Router("/scaleTemplate.html", &controllers.ShowPageController{}, "*:ScaleTemplatePage")
|
||||
web.Router("/templateAdd.html", &controllers.ShowPageController{}, "*:TemplateAdd")
|
||||
web.Router("/templateEdit.html", &controllers.ShowPageController{}, "*:TemplateEdit")
|
||||
web.Router("/groupList.html", &controllers.ShowPageController{}, "*:GroupListPage")
|
||||
web.Router("/areaList.html", &controllers.ShowPageController{}, "*:AreaListPage")
|
||||
web.Router("/imitateOrder.html", &controllers.ShowPageController{}, "*:ImitateChargePage")
|
||||
web.Router("/settleList.html", &controllers.ShowPageController{}, "*:SettleListPage")
|
||||
web.Router("/everydayChargeCount.html", &controllers.ShowPageController{}, "*:EverydayChargeCountPage")
|
||||
web.Router("/groupChargeCount.html", &controllers.ShowPageController{}, "*:GroupChargeCountPage")
|
||||
web.Router("/areaChargeCount.html", &controllers.ShowPageController{}, "*:AreaChargePage")
|
||||
web.Router("/person.html", &controllers.ShowPageController{}, "*:PersonPage")
|
||||
web.Router("areaAddOrEdit.html", &controllers.ShowPageController{}, "*:AreaAddOrEdit")
|
||||
web.Router("/areaEdit.html", &controllers.ShowPageController{}, "*:AreaEdit")
|
||||
}
|
||||
|
||||
/**
|
||||
** 业务逻辑路由
|
||||
*/
|
||||
func logicInit() {
|
||||
web.Router("/login", &controllers.LoginController{}, "*:Login")
|
||||
web.Router("/logout.html", &controllers.LogoutController{}, "*:Logout")
|
||||
web.Router("/switch/login", &controllers.LogoutController{}, "*:SwitchLogin")
|
||||
web.Router("/person/password", &controllers.LoginController{}, "*:PersonPassword")
|
||||
web.Router("/add/template", &controllers.TemplateController{}, "*:TemplateAdd")
|
||||
web.Router("/template/list", &controllers.TemplateController{}, "*:TemplateList")
|
||||
web.Router("/delete/template", &controllers.TemplateController{}, "*:TemplateDelete")
|
||||
web.Router("/template/info", &controllers.TemplateController{}, "*:TemplateAllInfo")
|
||||
web.Router("/group/list", &controllers.GroupController{}, "*:ListGroup")
|
||||
web.Router("/add/group", &controllers.GroupController{}, "*:AddGroup")
|
||||
web.Router("/delete/group", &controllers.GroupController{}, "*:DeleteGroup")
|
||||
web.Router("/edit/group", &controllers.GroupController{}, "*:EditGroup")
|
||||
web.Router("/add/area", &controllers.AreaController{}, "*:AreaAdd")
|
||||
web.Router("/area/list", &controllers.AreaController{}, "*:AreaList")
|
||||
web.Router("/delete/area", &controllers.AreaController{}, "*:AreaDelete")
|
||||
web.Router("/get/area", &controllers.AreaController{}, "*:AreaGet")
|
||||
web.Router("/edit/area", &controllers.AreaController{}, "*:AreaEdit")
|
||||
|
||||
web.InsertFilter("/*", web.BeforeRouter, filter.LoginFilter)
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"legend/models/fast"
|
||||
"legend/utils"
|
||||
)
|
||||
|
||||
type AccountService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
func (c *AccountService) GetAccountInfo(userName string) *fast.AccountInfo {
|
||||
|
||||
merchantInfo := fast.GetMerchantInfoByUserName(userName)
|
||||
|
||||
accountInfo := fast.GetAccountInfo(merchantInfo.MerchantUid)
|
||||
|
||||
return accountInfo
|
||||
}
|
||||
|
||||
/**
|
||||
** 获取当天的充值金额
|
||||
*/
|
||||
func (c *AccountService) GetTodayIncome() float64 {
|
||||
startTime := utils.GetNowDate() + " 00:00:00"
|
||||
endTime := utils.GetNowDate() + " 23:59:59"
|
||||
|
||||
todayIncome := fast.GetRangeDateIncome(startTime, endTime)
|
||||
|
||||
return todayIncome
|
||||
}
|
@ -1,98 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"github.com/rs/xid"
|
||||
"legend/models/legend"
|
||||
"legend/request"
|
||||
"legend/response"
|
||||
"legend/utils"
|
||||
)
|
||||
|
||||
type AreaService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
func (c *AreaService) AddArea(req *request.AreaReq) *response.BaseResp {
|
||||
resp := new(response.BaseResp)
|
||||
|
||||
area := new(legend.Area)
|
||||
area.AreaName = req.AreaName
|
||||
area.GroupName = req.GroupName
|
||||
area.TemplateName = req.TemplateName
|
||||
area.NotifyUrl = req.NotifyUrl
|
||||
area.AttachParams = req.AttachParams
|
||||
area.UpdateTime = utils.GetNowTime()
|
||||
area.CreateTime = utils.GetNowTime()
|
||||
area.Uid = xid.New().String()
|
||||
|
||||
if legend.InsertArea(area) {
|
||||
resp.Code = 0
|
||||
} else {
|
||||
resp.Code = -1
|
||||
resp.Msg = "添加分区失败"
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
||||
|
||||
func (c *AreaService) AreaList(page, limit int) *response.AreaListResp {
|
||||
offset := utils.CountOffset(page, limit)
|
||||
count := legend.GetAreaAllCount()
|
||||
areas := legend.GetAreaList(offset, limit)
|
||||
|
||||
for i, _ := range areas {
|
||||
areas[i].Id = offset + i + 1
|
||||
}
|
||||
|
||||
areaResp := new(response.AreaListResp)
|
||||
areaResp.Code = 0
|
||||
areaResp.Count = count
|
||||
areaResp.Data = areas
|
||||
|
||||
return areaResp
|
||||
}
|
||||
|
||||
func (c *AreaService) DeleteArea(uid string) *response.BaseResp {
|
||||
resp := new(response.BaseResp)
|
||||
|
||||
if legend.DeleteAreaByUid(uid) {
|
||||
resp.Code = 0
|
||||
} else {
|
||||
resp.Code = -1
|
||||
resp.Msg = "删除分区失败"
|
||||
}
|
||||
return resp
|
||||
}
|
||||
|
||||
func (c *AreaService) GetArea(uid string) *response.AreaInfoResp {
|
||||
resp := new(response.AreaInfoResp)
|
||||
resp.Code = 0
|
||||
resp.Msg = "请求成功"
|
||||
|
||||
area := legend.GetAreaByUid(uid)
|
||||
resp.Area = area
|
||||
|
||||
return resp
|
||||
}
|
||||
|
||||
func (c *AreaService) EditArea(req *request.AreaReq, uid string) *response.BaseResp {
|
||||
resp := new(response.BaseResp)
|
||||
resp.Code = -1
|
||||
|
||||
area := legend.GetAreaByUid(uid)
|
||||
if area == nil || area.AreaName == "" {
|
||||
resp.Msg = "更新失败"
|
||||
} else {
|
||||
area.UpdateTime = utils.GetNowTime()
|
||||
area.GroupName = req.GroupName
|
||||
area.TemplateName = req.TemplateName
|
||||
area.NotifyUrl = req.NotifyUrl
|
||||
area.AttachParams = req.AttachParams
|
||||
|
||||
if legend.UpdateArea(area) {
|
||||
resp.Msg = "更新失败"
|
||||
}
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
package service
|
||||
|
||||
type BaseService struct {
|
||||
}
|
@ -1,87 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"github.com/rs/xid"
|
||||
"legend/models/legend"
|
||||
"legend/response"
|
||||
"legend/utils"
|
||||
)
|
||||
|
||||
type GroupService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
func (c *GroupService) GroupAdd(groupName string) *response.BaseResp {
|
||||
|
||||
resp := new(response.BaseResp)
|
||||
resp.Code = -1
|
||||
|
||||
group := new(legend.Group)
|
||||
|
||||
uid := xid.New().String()
|
||||
group.GroupName = groupName
|
||||
group.Uid = uid
|
||||
group.CreateTime = utils.GetNowTime()
|
||||
group.UpdateTime = utils.GetNowTime()
|
||||
|
||||
if legend.InsertGroup(group) {
|
||||
resp.Code = 0
|
||||
resp.Msg = "添加分组成功"
|
||||
} else {
|
||||
resp.Msg = "添加分组失败"
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
||||
|
||||
func (c *GroupService) GroupList(page, limit int) *response.GroupListResp {
|
||||
|
||||
offset := utils.CountOffset(page, limit)
|
||||
count := legend.GetGroupAllCont()
|
||||
groups := legend.GetGroupList(offset, limit)
|
||||
|
||||
for i, _ := range groups {
|
||||
groups[i].Id = offset + i + 1
|
||||
}
|
||||
|
||||
groupListResp := new(response.GroupListResp)
|
||||
groupListResp.Count = count
|
||||
groupListResp.Code = 0
|
||||
groupListResp.Data = groups
|
||||
|
||||
return groupListResp
|
||||
}
|
||||
|
||||
func (c *GroupService) GroupDelete(uid string) *response.BaseResp {
|
||||
resp := new(response.BaseResp)
|
||||
resp.Code = 0
|
||||
if legend.DeleteGroupByUid(uid) {
|
||||
resp.Msg = "删除成功"
|
||||
} else {
|
||||
resp.Msg = "删除分组信息失败"
|
||||
resp.Code = -1
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
||||
|
||||
func (c *GroupService) GroupEdit(uid, groupName string) *response.BaseResp {
|
||||
resp := new(response.BaseResp)
|
||||
resp.Code = -1
|
||||
|
||||
group := legend.GetGroupByUid(uid)
|
||||
if group == nil || group.Uid == "" {
|
||||
resp.Msg = "不存在这样的分组信息"
|
||||
} else {
|
||||
group.UpdateTime = utils.GetNowTime()
|
||||
group.GroupName = groupName
|
||||
if legend.UpdateGroup(group) {
|
||||
resp.Code = 0
|
||||
resp.Msg = "更新成功"
|
||||
} else {
|
||||
resp.Msg = "更新失败"
|
||||
}
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/beego/beego/v2/adapter/logs"
|
||||
"legend/common"
|
||||
"legend/models/fast"
|
||||
"legend/utils"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type LoginService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
type LoginJsonData struct {
|
||||
Code int
|
||||
Msg string
|
||||
}
|
||||
|
||||
func (c *LoginService) Login(userName, password string) *LoginJsonData {
|
||||
|
||||
loginJsonData := new(LoginJsonData)
|
||||
loginJsonData.Code = 200
|
||||
|
||||
userInfo := fast.GetMerchantInfoByUserName(userName)
|
||||
logs.Info("登录账户信息:", fmt.Sprintf("%+v", userInfo))
|
||||
if nil == userInfo || userInfo.LoginAccount == "" {
|
||||
logs.Error("用户不存在,账户:", userName)
|
||||
loginJsonData.Code = 404
|
||||
loginJsonData.Msg = "用户不存在"
|
||||
} else {
|
||||
if strings.ToLower(userInfo.Status) == strings.ToLower(common.UNACTIVE) {
|
||||
logs.Warn("账号异常,请联系管理员,账号:", userName)
|
||||
loginJsonData.Code = 503
|
||||
loginJsonData.Msg = "账户已经被冻结"
|
||||
} else {
|
||||
md5Password := utils.EncodeMd5(password)
|
||||
logs.Info("账户密码md5后:", md5Password, ";数据库保存的为:", userInfo.LoginPassword)
|
||||
if strings.ToLower(utils.EncodeMd5(password)) != strings.ToLower(userInfo.LoginPassword) {
|
||||
logs.Error("密码错误,账户:", userName)
|
||||
loginJsonData.Code = -1
|
||||
loginJsonData.Msg = "密码错误"
|
||||
} else {
|
||||
logs.Info("登录成功")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return loginJsonData
|
||||
}
|
||||
|
||||
/**
|
||||
** 更新用户的登录密码
|
||||
*/
|
||||
func (c *LoginService) PersonPassword(newPassword, oldPassword, repeatPassword, userName string) *LoginJsonData {
|
||||
|
||||
logoutJsonData := new(LoginJsonData)
|
||||
logoutJsonData.Code = -1
|
||||
|
||||
userInfo := fast.GetMerchantInfoByUserName(userName)
|
||||
if userInfo.LoginPassword != utils.EncodeMd5(oldPassword) {
|
||||
logoutJsonData.Msg = "旧密码输入不正确"
|
||||
} else if newPassword != repeatPassword {
|
||||
logoutJsonData.Msg = "2次密码不一致"
|
||||
} else {
|
||||
passwordMd5 := utils.EncodeMd5(newPassword)
|
||||
userInfo.LoginPassword = passwordMd5
|
||||
if !fast.UpdateMerchantInfo(userInfo) {
|
||||
logoutJsonData.Msg = "密码更新失败"
|
||||
} else {
|
||||
|
||||
logoutJsonData.Code = 200
|
||||
}
|
||||
}
|
||||
|
||||
return logoutJsonData
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package service
|
||||
|
||||
type LogoutService struct {
|
||||
BaseService
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"legend/models/fast"
|
||||
)
|
||||
|
||||
type MerchantService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
func (c *MerchantService) GetMerchantBankInfo(mobile string) (*fast.MerchantInfo, *fast.BankCardInfo) {
|
||||
|
||||
merchantInfo := fast.GetMerchantInfoByUserName(mobile)
|
||||
bankInfo := fast.GetBankCardInfoByUserNo(merchantInfo.MerchantUid)
|
||||
|
||||
return merchantInfo, bankInfo
|
||||
}
|
||||
|
||||
/**
|
||||
** 获取商户的密钥等信息
|
||||
*/
|
||||
/*func (c *MerchantService) UserPayConfig(userName string) map[string]string {
|
||||
|
||||
merchantMapData := make(map[string]string)
|
||||
|
||||
userInfo := fast.GetMerchantInfoByUserName(userName)
|
||||
|
||||
if userInfo == nil || userInfo.LoginAccount == "" {
|
||||
return merchantMapData
|
||||
}
|
||||
|
||||
userNo := userInfo.LoginAccount
|
||||
|
||||
userPayConfig := fast.GetUserPayConfigByUserNo(userNo)
|
||||
if nil == userPayConfig || userPayConfig.UserNo == "" {
|
||||
return merchantMapData
|
||||
}
|
||||
|
||||
return merchantMapData
|
||||
}*/
|
||||
|
||||
/**
|
||||
** 获取商户信息
|
||||
*/
|
||||
func (c *MerchantService) MerchantInfo(mobile string) *fast.MerchantInfo {
|
||||
userInfo := fast.GetMerchantInfoByUserName(mobile)
|
||||
if nil == userInfo || userInfo.LoginAccount == "" {
|
||||
logs.Error("获取用户信息失败")
|
||||
}
|
||||
|
||||
//logs.Debug("用户信息:", userInfo)
|
||||
return userInfo
|
||||
}
|
@ -1,516 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
"legend/models/legend"
|
||||
"legend/request"
|
||||
"legend/response"
|
||||
"legend/utils"
|
||||
)
|
||||
|
||||
type TemplateService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
/**
|
||||
** 添加比例模板
|
||||
*/
|
||||
func (c *TemplateService) AddTemplate(req *request.AddTemplateReq, merchantUid string) *response.AddTemplateResp {
|
||||
|
||||
template := new(legend.ScaleTemplate)
|
||||
template.MerchantUid = merchantUid
|
||||
template.TemplateName = req.ScaleTemplateName
|
||||
template.UserUid = req.ScaleUserName
|
||||
template.UserWarn = req.ScaleUserNamePoint
|
||||
template.MoneyType = req.MoneyType
|
||||
template.PresentType = req.PresentType
|
||||
template.UpdateTime = utils.GetNowTime()
|
||||
template.CreateTime = utils.GetNowTime()
|
||||
|
||||
addTemplateResp := new(response.AddTemplateResp)
|
||||
addTemplateResp.Code = -1
|
||||
|
||||
if template.TemplateName == "" {
|
||||
addTemplateResp.Msg = "模板名称不能为空"
|
||||
return addTemplateResp
|
||||
}
|
||||
|
||||
if legend.IsExistsScaleTemplateByName(template.TemplateName) {
|
||||
addTemplateResp.Msg = "模板名称重复,请换一个名称!"
|
||||
return addTemplateResp
|
||||
}
|
||||
|
||||
if legend.InsertScaleTemplate(template) {
|
||||
addTemplateResp.Code = 0
|
||||
addTemplateResp.Msg = "添加比例模板成功"
|
||||
if !c.AddRandMoney(req) {
|
||||
addTemplateResp.Code = -1
|
||||
addTemplateResp.Msg = "随机金额添加失败,请检查参数是否合理"
|
||||
}
|
||||
if !c.AddFixMoney(req) {
|
||||
addTemplateResp.Code = -1
|
||||
addTemplateResp.Msg = "添加固定金额失败,请检查参数是否合理"
|
||||
}
|
||||
if !c.AddPresentFixMoney(req) {
|
||||
addTemplateResp.Code = -1
|
||||
addTemplateResp.Msg = "添加固定金额赠送失败,请检查参数是否合理"
|
||||
}
|
||||
if !c.AddPresentScaleMoney(req) {
|
||||
addTemplateResp.Code = -1
|
||||
addTemplateResp.Msg = "添加金额比例赠送失败,请检查参数是否合理"
|
||||
}
|
||||
|
||||
// 只要有一个添加失败,全部删除
|
||||
if addTemplateResp.Code == -1 {
|
||||
legend.DeleteScaleTemplate(template.TemplateName)
|
||||
legend.DeleteAnyMoney(template.TemplateName)
|
||||
legend.DeleteFixMoney(template.TemplateName)
|
||||
legend.DeleteFixPresent(template.TemplateName)
|
||||
legend.DeleteScalePresent(template.TemplateName)
|
||||
}
|
||||
} else {
|
||||
addTemplateResp.Msg = "添加比例模板失败"
|
||||
}
|
||||
|
||||
return addTemplateResp
|
||||
}
|
||||
|
||||
/**
|
||||
** 编辑比例模板逻辑
|
||||
*/
|
||||
func (c *TemplateService) UpdateTemplate(req *request.AddTemplateReq, merchantUid string) *response.BaseResp {
|
||||
resp := new(response.BaseResp)
|
||||
resp.Code = -1
|
||||
resp.Msg = "更新失败"
|
||||
|
||||
template := legend.GetScaleTemplateByNameAndMerchantUid(req.ScaleTemplateName, merchantUid)
|
||||
template.UserUid = req.ScaleUserName
|
||||
template.UserWarn = req.ScaleUserNamePoint
|
||||
template.MoneyType = req.MoneyType
|
||||
template.PresentType = req.PresentType
|
||||
template.UpdateTime = utils.GetNowTime()
|
||||
|
||||
if !legend.UpdateScaleTemplate(template) {
|
||||
logs.Error("更新比例模板基础数据失败")
|
||||
return resp
|
||||
}
|
||||
|
||||
if !c.updateAnyMoney(req) {
|
||||
logs.Error("更新任意金额数据失败")
|
||||
return resp
|
||||
}
|
||||
|
||||
if !c.updateFixMoney(req) {
|
||||
logs.Error("更新固定金额数据失败")
|
||||
return resp
|
||||
}
|
||||
|
||||
if !c.updateFixPresent(req) {
|
||||
logs.Error("更新赠送固定金额失败")
|
||||
return resp
|
||||
}
|
||||
|
||||
if !c.updateScalePresent(req) {
|
||||
logs.Error("更新赠送比例数据失败")
|
||||
return resp
|
||||
}
|
||||
|
||||
resp.Code = 0
|
||||
resp.Msg = "更新成功"
|
||||
|
||||
return resp
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
** 更新任意金额
|
||||
*/
|
||||
func (c *TemplateService) updateAnyMoney(req *request.AddTemplateReq) bool {
|
||||
if req.GameMoneyScale <= 0 && req.LimitLowMoney <= 0 {
|
||||
logs.Debug("任意金额的2个关键参数均小于等于0")
|
||||
anyMoney := legend.GetAnyMoneyByName(req.ScaleTemplateName)
|
||||
if anyMoney != nil && anyMoney.TemplateName != "" {
|
||||
return legend.DeleteAnyMoney(req.ScaleTemplateName)
|
||||
} else {
|
||||
logs.Error("不存在这样的任意金额")
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
anyMoney := legend.GetAnyMoneyByName(req.ScaleTemplateName)
|
||||
anyMoney.GameMoneyScale = req.GameMoneyScale
|
||||
anyMoney.GameMoneyName = req.GameMoneyName
|
||||
anyMoney.LimitLow = req.LimitLowMoney
|
||||
anyMoney.UpdateTime = utils.GetNowTime()
|
||||
anyMoney.CreateTime = utils.GetNowTime()
|
||||
|
||||
return legend.UpdateAnyMoney(anyMoney)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
** 更新固定金额
|
||||
*/
|
||||
func (c *TemplateService) updateFixMoney(req *request.AddTemplateReq) bool {
|
||||
|
||||
for _, fixMoney := range legend.GetFixMoneyByName(req.ScaleTemplateName) {
|
||||
if !c.isExist(fixMoney.Uid, req.FixUids) {
|
||||
// 假如不存在了,那么需要删除这条记录
|
||||
legend.DeleteFixMoneyByUid(fixMoney.Uid)
|
||||
}
|
||||
}
|
||||
|
||||
for i, _ := range req.FixUids {
|
||||
if req.FixUids[i] == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
fixMoney := legend.GetFixMoneyByUid(req.FixUids[i])
|
||||
|
||||
fixMoney.UpdateTime = utils.GetNowTime()
|
||||
fixMoney.Uid = req.FixUids[i]
|
||||
fixMoney.Price = req.FixPrices[i]
|
||||
fixMoney.GoodsName = req.GoodsNames[i]
|
||||
fixMoney.GoodsNo = req.GoodsNos[i]
|
||||
fixMoney.BuyTimes = req.Limits[i]
|
||||
|
||||
if fixMoney.TemplateName == "" {
|
||||
fixMoney.CreateTime = utils.GetNowTime()
|
||||
fixMoney.TemplateName = req.ScaleTemplateName
|
||||
legend.InsertFixMoney(fixMoney)
|
||||
} else {
|
||||
legend.UpdateFixMoney(fixMoney)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
** 更新固定金额赠送参数
|
||||
*/
|
||||
func (c *TemplateService) updateFixPresent(req *request.AddTemplateReq) bool {
|
||||
|
||||
for _, fixPresentMoney := range legend.GetFixPresentsByName(req.ScaleTemplateName) {
|
||||
if !c.isExist(fixPresentMoney.Uid, req.PresentFixUids) {
|
||||
legend.DeleteFixPresentByUid(fixPresentMoney.Uid)
|
||||
}
|
||||
}
|
||||
|
||||
for i, _ := range req.PresentFixUids {
|
||||
if req.PresentFixUids[i] == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
fixPresent := legend.GetFixPresentByUid(req.PresentFixUids[i])
|
||||
|
||||
fixPresent.UpdateTime = utils.GetNowTime()
|
||||
fixPresent.Uid = req.PresentFixUids[i]
|
||||
fixPresent.Money = req.PresentFixMoneys[i]
|
||||
fixPresent.PresentMoney = req.PresentFixPresentMoneys[i]
|
||||
|
||||
if fixPresent.TemplateName == "" {
|
||||
fixPresent.CreateTime = utils.GetNowTime()
|
||||
fixPresent.TemplateName = req.ScaleTemplateName
|
||||
legend.InsertFixPresent(fixPresent)
|
||||
} else {
|
||||
legend.UpdatePresentFixMoney(fixPresent)
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
** 更新比例赠送参数
|
||||
*/
|
||||
func (c *TemplateService) updateScalePresent(req *request.AddTemplateReq) bool {
|
||||
|
||||
for _, scalePresent := range legend.GetScalePresentsByName(req.ScaleTemplateName) {
|
||||
if !c.isExist(scalePresent.Uid, req.PresentScaleUids) {
|
||||
legend.DeleteScalePresentByUid(scalePresent.Uid)
|
||||
}
|
||||
}
|
||||
|
||||
for i, _ := range req.PresentScaleUids {
|
||||
if req.PresentScaleUids[i] == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
scalePresent := legend.GetScalePresentByUid(req.PresentScaleUids[i])
|
||||
|
||||
scalePresent.UpdateTime = utils.GetNowTime()
|
||||
scalePresent.Uid = req.PresentScaleUids[i]
|
||||
scalePresent.Money = req.PresentScaleMoneys[i]
|
||||
scalePresent.PresentScale = req.PresentScales[i]
|
||||
|
||||
if scalePresent.TemplateName == "" {
|
||||
scalePresent.TemplateName = req.ScaleTemplateName
|
||||
scalePresent.CreateTime = utils.GetNowTime()
|
||||
legend.InsertScalePresent(scalePresent)
|
||||
} else {
|
||||
legend.UpdateScalePresent(scalePresent)
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (c *TemplateService) isExist(j string, ss []string) bool {
|
||||
for _, s := range ss {
|
||||
if s == j {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
** 添加随机金额
|
||||
*/
|
||||
func (c *TemplateService) AddRandMoney(req *request.AddTemplateReq) bool {
|
||||
|
||||
if req.LimitLowMoney < 0 {
|
||||
logs.Error("随机金额中的最低充值金额不能小于0")
|
||||
return false
|
||||
}
|
||||
if req.GameMoneyName == "" && req.GameMoneyScale <= 0 {
|
||||
logs.Info("不需要添加随机金额选项")
|
||||
return true
|
||||
}
|
||||
|
||||
anyMoney := new(legend.AnyMoney)
|
||||
anyMoney.TemplateName = req.ScaleTemplateName
|
||||
anyMoney.GameMoneyName = req.GameMoneyName
|
||||
anyMoney.GameMoneyScale = req.GameMoneyScale
|
||||
anyMoney.LimitLow = req.LimitLowMoney
|
||||
anyMoney.UpdateTime = utils.GetNowTime()
|
||||
anyMoney.CreateTime = utils.GetNowTime()
|
||||
|
||||
if legend.InsertAnyMoney(anyMoney) {
|
||||
logs.Info("添加随机金额成功!")
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
**添加固定金额
|
||||
*/
|
||||
func (c *TemplateService) AddFixMoney(req *request.AddTemplateReq) bool {
|
||||
|
||||
l := len(req.FixUids)
|
||||
|
||||
if l == 0 || (l == 1 && req.FixUids[0] == "") {
|
||||
logs.Error("该模板没有添加固定金额选项")
|
||||
return true
|
||||
}
|
||||
|
||||
if l != len(req.GoodsNames) || l != len(req.FixPrices) || l != len(req.GoodsNos) || l != len(req.Limits) {
|
||||
logs.Error("固定金额参数有误,长度不一致")
|
||||
return false
|
||||
}
|
||||
|
||||
for i := 0; i < l; i++ {
|
||||
fixUid := req.FixUids[i]
|
||||
fixPrice := req.FixPrices[i]
|
||||
goodName := req.GoodsNames[i]
|
||||
goodNo := req.GoodsNos[i]
|
||||
limit := req.Limits[i]
|
||||
|
||||
if fixUid == "0" && fixPrice <= 0 && goodName == "0" && goodNo == "0" && limit <= 0 {
|
||||
logs.Error("固定金额4个参数都为空!")
|
||||
continue
|
||||
}
|
||||
|
||||
if fixUid == "0" || fixPrice <= 0 || goodName == "0" || goodNo == "0" || limit <= 0 {
|
||||
logs.Error("固定金额参数中有一个缺失: ", fmt.Sprintf("fixUid = %s, fixPrice = %f, goodName = %s, goodNo = %s, limit = %d",
|
||||
fixUid, fixPrice, goodName, goodNo, limit))
|
||||
return false
|
||||
}
|
||||
|
||||
fixMoney := new(legend.FixMoney)
|
||||
fixMoney.Uid = fixUid
|
||||
fixMoney.TemplateName = req.ScaleTemplateName
|
||||
fixMoney.Price = fixPrice
|
||||
fixMoney.GoodsName = goodName
|
||||
fixMoney.GoodsNo = goodNo
|
||||
fixMoney.BuyTimes = limit
|
||||
fixMoney.UpdateTime = utils.GetNowTime()
|
||||
fixMoney.CreateTime = utils.GetNowTime()
|
||||
|
||||
if !legend.InsertFixMoney(fixMoney) {
|
||||
logs.Error("该次固定金额插入数据库失败")
|
||||
}
|
||||
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
** 添加赠送固定金额赠送
|
||||
*/
|
||||
func (c *TemplateService) AddPresentFixMoney(req *request.AddTemplateReq) bool {
|
||||
|
||||
l := len(req.PresentFixUids)
|
||||
if l == 0 || (l == 1 && req.PresentScaleUids[0] == "") {
|
||||
logs.Error("该模板没有添加固定金额赠送选项")
|
||||
return true
|
||||
}
|
||||
|
||||
if l != len(req.PresentFixMoneys) || l != len(req.PresentFixPresentMoneys) {
|
||||
logs.Error("固定金额赠送选项参数个数不一致")
|
||||
return false
|
||||
}
|
||||
|
||||
for i := 0; i < l; i++ {
|
||||
uid := req.PresentFixUids[i]
|
||||
fixMoney := req.PresentFixMoneys[i]
|
||||
presentMoney := req.PresentFixPresentMoneys[i]
|
||||
|
||||
if uid == "0" && fixMoney <= 0 && presentMoney <= 0 {
|
||||
continue
|
||||
|
||||
}
|
||||
|
||||
if uid == "0" || fixMoney <= 0 || presentMoney <= 0 {
|
||||
logs.Error("固定金额参数中有一个缺失: ", fmt.Sprintf("fixUid = %s, fixPrice = %f, presentMoney = %f",
|
||||
uid, fixMoney, presentMoney))
|
||||
return false
|
||||
|
||||
}
|
||||
|
||||
fixPresent := new(legend.FixPresent)
|
||||
fixPresent.Uid = uid
|
||||
fixPresent.TemplateName = req.ScaleTemplateName
|
||||
fixPresent.Money = fixMoney
|
||||
fixPresent.PresentMoney = presentMoney
|
||||
fixPresent.UpdateTime = utils.GetNowTime()
|
||||
fixPresent.CreateTime = utils.GetNowTime()
|
||||
|
||||
if !legend.InsertFixPresent(fixPresent) {
|
||||
logs.Error("该次固定金额赠送插入数据库失败")
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
** 添加赠送金额比例
|
||||
*/
|
||||
func (c *TemplateService) AddPresentScaleMoney(req *request.AddTemplateReq) bool {
|
||||
l := len(req.PresentScaleUids)
|
||||
if l == 0 || (l == 1 && req.PresentScaleUids[0] == "") {
|
||||
logs.Error("该模板没有添加按百分比赠送")
|
||||
return true
|
||||
}
|
||||
|
||||
if l != len(req.PresentScaleMoneys) || l != len(req.PresentScales) {
|
||||
logs.Error("按百分比赠送选项参数个数不一致")
|
||||
return false
|
||||
}
|
||||
|
||||
for i := 0; i < l; i++ {
|
||||
uid := req.PresentScaleUids[i]
|
||||
money := req.PresentScaleMoneys[i]
|
||||
scale := req.PresentScales[i]
|
||||
|
||||
if money <= 0 {
|
||||
logs.Error("金额不能等于0")
|
||||
return false
|
||||
}
|
||||
|
||||
if uid == "0" && money <= 0 && scale <= 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
if uid == "0" || money <= 0 || scale <= 0 {
|
||||
logs.Error("百分比赠送缺失参数: ", fmt.Sprintf("uid = %s, money = %f, scale = %f",
|
||||
uid, money, scale))
|
||||
|
||||
return false
|
||||
|
||||
}
|
||||
|
||||
scalePresent := new(legend.ScalePresent)
|
||||
scalePresent.Uid = uid
|
||||
scalePresent.TemplateName = req.ScaleTemplateName
|
||||
scalePresent.Money = money
|
||||
scalePresent.PresentScale = scale
|
||||
scalePresent.UpdateTime = utils.GetNowTime()
|
||||
scalePresent.CreateTime = utils.GetNowTime()
|
||||
|
||||
if !legend.InsertScalePresent(scalePresent) {
|
||||
logs.Error("该次固定金额赠送插入数据库失败")
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (c *TemplateService) GetTemplateList(page, limit int) *response.TemplateListResp {
|
||||
|
||||
offset := utils.CountOffset(page, limit)
|
||||
count := legend.GetScaleTemplateAll()
|
||||
scaleTemplates := legend.GetScaleTemplateList(offset, limit)
|
||||
|
||||
for i, _ := range scaleTemplates {
|
||||
scaleTemplates[i].Id = offset + i + 1
|
||||
}
|
||||
|
||||
templateListResp := new(response.TemplateListResp)
|
||||
templateListResp.Count = count
|
||||
templateListResp.Code = 0
|
||||
templateListResp.Data = scaleTemplates
|
||||
|
||||
return templateListResp
|
||||
}
|
||||
|
||||
/**
|
||||
** 删除比例模板的所有内容
|
||||
*/
|
||||
func (c *TemplateService) DeleteTemplate(templateName string) *response.BaseResp {
|
||||
|
||||
baseResp := new(response.BaseResp)
|
||||
baseResp.Code = -1
|
||||
|
||||
b := true
|
||||
if !legend.DeleteScaleTemplate(templateName) {
|
||||
b = false
|
||||
}
|
||||
if !legend.DeleteAnyMoney(templateName) {
|
||||
b = false
|
||||
}
|
||||
if !legend.DeleteFixMoney(templateName) {
|
||||
b = false
|
||||
}
|
||||
if !legend.DeleteFixPresent(templateName) {
|
||||
b = false
|
||||
}
|
||||
if !legend.DeleteFixPresent(templateName) {
|
||||
b = false
|
||||
}
|
||||
|
||||
if b {
|
||||
baseResp.Msg = "删除成功"
|
||||
baseResp.Code = 0
|
||||
} else {
|
||||
baseResp.Msg = "删除失败"
|
||||
}
|
||||
|
||||
return baseResp
|
||||
}
|
||||
|
||||
func (c *TemplateService) AllTemplateInfo(templateName string) *response.TemplateAllInfoResp {
|
||||
|
||||
templateAllInfo := new(response.TemplateAllInfoResp)
|
||||
templateAllInfo.TemplateInfo = legend.GetScaleTemplateByName(templateName)
|
||||
templateAllInfo.AnyMoneyInfo = legend.GetAnyMoneyByName(templateName)
|
||||
templateAllInfo.FixMoneyInfos = legend.GetFixMoneyByName(templateName)
|
||||
templateAllInfo.PresentFixMoneyInfos = legend.GetFixPresentsByName(templateName)
|
||||
templateAllInfo.PresentScaleMoneyInfos = legend.GetScalePresentsByName(templateName)
|
||||
|
||||
return templateAllInfo
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"count": 10,
|
||||
"data": [
|
||||
{
|
||||
"id": 11,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 11,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 12,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 1,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 123,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 12222,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 134,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 156,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 134,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
},{
|
||||
"id": 156,
|
||||
"areaname": "星沙二区",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"scale": "20%"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,97 +0,0 @@
|
||||
{
|
||||
"code":0,
|
||||
"msg":"",
|
||||
"count":10,
|
||||
"data":[
|
||||
{
|
||||
"id": 1,
|
||||
"areaname": "狗日的1-2区",
|
||||
"usetemplate": "狗日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"areaname": "猪日1-2区",
|
||||
"usetemplate": "猪日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"areaname": "牛日1-2区",
|
||||
"usetemplate": "牛日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"areaname": "鸡日1-2区",
|
||||
"usetemplate": "鸡日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"areaname": "鸭日1-2区",
|
||||
"usetemplate": "鸭日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"areaname": "蚯蚓1-2区",
|
||||
"usetemplate": "蚯蚓日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"areaname": "蛇日1-2区",
|
||||
"usetemplate": "蛇日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"areaname": "人日1-2区",
|
||||
"usetemplate": "人日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"areaname": "苍蝇1-2区",
|
||||
"usetemplate": "苍蝇日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"areaname": "蚊子1-2区",
|
||||
"usetemplate": "蚊子日",
|
||||
"currencyname": "元宝",
|
||||
"rechargescale": 10,
|
||||
"areastatus": "开放",
|
||||
"createtime": "2021-4-6"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"count": 10,
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"currencyname": "元宝",
|
||||
"income": 100000,
|
||||
"date": "2021-4-6"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"count": 10,
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙组",
|
||||
"rechargecount": 123,
|
||||
"rechargemoney": "100",
|
||||
"income": 100000
|
||||
}
|
||||
]
|
||||
}
|
@ -1,92 +0,0 @@
|
||||
{
|
||||
"code":0,"msg":"",
|
||||
"count":20,
|
||||
"data":[
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "狗日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "猪日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "牛日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "鸡日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "鸭日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "蚯蚓日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "蛇日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "人日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "苍蝇日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "蚊子的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"groupname": "熊日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "星沙日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "长沙日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "岳麓区日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
},{
|
||||
"id": 1,
|
||||
"groupname": "开福区日的传奇",
|
||||
"createtime": "2021-4-6",
|
||||
"updatetime": "2021-4-6"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,108 +0,0 @@
|
||||
{
|
||||
"code":0,
|
||||
"msg":"",
|
||||
"count":10,
|
||||
"data":[
|
||||
{
|
||||
"id": 1,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 2,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 3,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 4,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 5,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 6,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 7,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 8,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 9,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 10,
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"ip": "127.32.12.1",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,118 +0,0 @@
|
||||
{
|
||||
"code":0,
|
||||
"msg":"",
|
||||
"count":10,
|
||||
"data":[
|
||||
{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
},{
|
||||
"id": 1,
|
||||
"notify":"已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
}, {
|
||||
"id": 1,
|
||||
"notify": "已通知",
|
||||
"orderno": "8360127282183213",
|
||||
"area": "星沙二区",
|
||||
"rechargeaccount": "枫林晚月",
|
||||
"playerqq": "1090789947",
|
||||
"money": "100",
|
||||
"googs": "钻石",
|
||||
"paytype": "微信扫码",
|
||||
"createtime": "2021-04-06 21:30:00"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,108 +0,0 @@
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"count": 10,
|
||||
"data": [
|
||||
{
|
||||
"id": 12323,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 112323,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 112323,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 123231,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 123231,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 112323,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 112323,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 112323,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 112323,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
},{
|
||||
"id": 123231,
|
||||
"settleno": "JS21030523595541164",
|
||||
"bankname": "中国工商银行",
|
||||
"accountname": "汤鸡巴剑",
|
||||
"money": 10,
|
||||
"googs": "元宝",
|
||||
"ip": "123.9.233.1",
|
||||
"paytype": "支付宝扫码",
|
||||
"createtime": "2021-4-6"
|
||||
}
|
||||
]
|
||||
}
|
1
legend/static/js/html5.min.js
vendored
@ -1 +0,0 @@
|
||||
(function(e,t){function n(e,t){var n=e.createElement("p"),i=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",i.insertBefore(n.lastChild,i.firstChild)}function i(){var e=m.elements;return"string"==typeof e?e.split(" "):e}function r(e){var t={},n=e.createElement,r=e.createDocumentFragment,o=r();e.createElement=function(e){m.shivMethods||n(e);var i;return i=t[e]?t[e].cloneNode():g.test(e)?(t[e]=n(e)).cloneNode():n(e),i.canHaveChildren&&!f.test(e)?o.appendChild(i):i},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+i().join().replace(/\w+/g,function(e){return t[e]=n(e),o.createElement(e),'c("'+e+'")'})+");return n}")(m,o)}function o(e){var t;return e.documentShived?e:(m.shivCSS&&!d&&(t=!!n(e,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),h||(t=!r(e)),t&&(e.documentShived=t),e)}function a(e){for(var t,n=e.getElementsByTagName("*"),r=n.length,o=RegExp("^(?:"+i().join("|")+")$","i"),a=[];r--;)t=n[r],o.test(t.nodeName)&&a.push(t.applyElement(s(t)));return a}function s(e){for(var t,n=e.attributes,i=n.length,r=e.ownerDocument.createElement(b+":"+e.nodeName);i--;)t=n[i],t.specified&&r.setAttribute(t.nodeName,t.nodeValue);return r.style.cssText=e.style.cssText,r}function l(e){for(var t,n=e.split("{"),r=n.length,o=RegExp("(^|[\\s,>+~])("+i().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+b+"\\:$2";r--;)t=n[r]=n[r].split("}"),t[t.length-1]=t[t.length-1].replace(o,a),n[r]=t.join("}");return n.join("{")}function c(e){for(var t=e.length;t--;)e[t].removeNode()}function u(e){var t,i,r=e.namespaces,o=e.parentWindow;return!y||e.printShived?e:(r[b]===void 0&&r.add(b),o.attachEvent("onbeforeprint",function(){for(var r,o,s,c=e.styleSheets,u=[],d=c.length,h=Array(d);d--;)h[d]=c[d];for(;s=h.pop();)if(!s.disabled&&v.test(s.media)){for(r=s.imports,d=0,o=r.length;o>d;d++)h.push(r[d]);try{u.push(s.cssText)}catch(p){}}u=l(u.reverse().join("")),i=a(e),t=n(e,u)}),o.attachEvent("onafterprint",function(){c(i),t.removeNode(!0)}),e.printShived=!0,e)}var d,h,p=e.html5||{},f=/^<|^(?:button|form|map|select|textarea|object|iframe)$/i,g=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i;(function(){var n=t.createElement("a");n.innerHTML="<xyz></xyz>",d="hidden"in n,d&&"function"==typeof injectElementWithStyles&&injectElementWithStyles("#modernizr{}",function(t){t.hidden=!0,d="none"==(e.getComputedStyle?getComputedStyle(t,null):t.currentStyle).display}),h=1==n.childNodes.length||function(){try{t.createElement("a")}catch(e){return!0}var n=t.createDocumentFragment();return n.cloneNode===void 0||n.createDocumentFragment===void 0||n.createElement===void 0}()})();var m={elements:p.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:p.shivCSS!==!1,shivMethods:p.shivMethods!==!1,type:"default",shivDocument:o};e.html5=m,o(t);var v=/^$|\b(?:all|print)\b/,b="html5shiv",y=!h&&function(){var n=t.documentElement;return t.namespaces!==void 0&&t.parentWindow!==void 0&&n.applyElement!==void 0&&n.removeNode!==void 0&&e.attachEvent!==void 0}();m.type+=" print",m.shivPrint=u,u(t)})(this,document);
|
2
legend/static/js/jquery-3.5.1.min.js
vendored
1
legend/static/js/reload.min.js
vendored
@ -1 +0,0 @@
|
||||
function b(a){var c=new WebSocket(a);c.onclose=function(){setTimeout(function(){b(a)},2E3)};c.onmessage=function(){location.reload()}}try{if(window.WebSocket)try{b("ws://localhost:12450/reload")}catch(a){console.error(a)}else console.log("Your browser does not support WebSockets.")}catch(a){console.error("Exception during connecting to Reload:",a)};
|
5
legend/static/js/respond.min.js
vendored
@ -1,5 +0,0 @@
|
||||
/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
|
||||
* Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
|
||||
* */
|
||||
|
||||
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
|
@ -1,16 +0,0 @@
|
||||
@font-face {
|
||||
font-family: 'iconfont';
|
||||
src: url('../fonts/iconfont.eot');
|
||||
src: url('../fonts/iconfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/iconfont.woff') format('woff'),
|
||||
url('../fonts/iconfont.ttf') format('truetype'),
|
||||
url('../fonts/iconfont.svg#iconfont') format('svg');
|
||||
}
|
||||
.iconfont{
|
||||
font-family:"iconfont" !important;
|
||||
font-size:16px;font-style:normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-webkit-text-stroke-width: 0.2px;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
@ -1,105 +0,0 @@
|
||||
/*
|
||||
* @Author: xuebingsi
|
||||
* @Date: 2019-04-01 13:37:17
|
||||
* @Last Modified by: zhibinm
|
||||
* @Last Modified time: 2019-04-01 13:37:19
|
||||
*/
|
||||
.login-bg{
|
||||
/*background: #eeeeee url() 0 0 no-repeat;*/
|
||||
background:url(../images/bg.png) no-repeat center;
|
||||
background-size: cover;
|
||||
overflow: hidden;
|
||||
}
|
||||
.login{
|
||||
margin: 120px auto 0 auto;
|
||||
min-height: 420px;
|
||||
max-width: 420px;
|
||||
padding: 40px;
|
||||
background-color: #ffffff;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
border-radius: 4px;
|
||||
/* overflow-x: hidden; */
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.login a.logo{
|
||||
display: block;
|
||||
height: 58px;
|
||||
width: 167px;
|
||||
margin: 0 auto 30px auto;
|
||||
background-size: 167px 42px;
|
||||
}
|
||||
.login .message {
|
||||
margin: 10px 0 0 -58px;
|
||||
padding: 18px 10px 18px 60px;
|
||||
background: #189F92;
|
||||
position: relative;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
}
|
||||
.login #darkbannerwrap {
|
||||
background: url(../images/aiwrap.png);
|
||||
width: 18px;
|
||||
height: 10px;
|
||||
margin: 0 0 20px -58px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.login input[type=text],
|
||||
.login input[type=file],
|
||||
.login input[type=password],
|
||||
.login input[type=email], select {
|
||||
border: 1px solid #DCDEE0;
|
||||
vertical-align: middle;
|
||||
border-radius: 3px;
|
||||
height: 50px;
|
||||
padding: 0px 16px;
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
outline:none;
|
||||
width:100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.login input[type=text]:focus,
|
||||
.login input[type=file]:focus,
|
||||
.login input[type=password]:focus,
|
||||
.login input[type=email]:focus, select:focus {
|
||||
border: 1px solid #27A9E3;
|
||||
}
|
||||
.login input[type=submit],
|
||||
.login input[type=button]{
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding: 12px 24px;
|
||||
margin: 0px;
|
||||
font-size: 18px;
|
||||
line-height: 24px;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
color: #ffffff;
|
||||
background-color: #189F92;
|
||||
border-radius: 3px;
|
||||
border: none;
|
||||
-webkit-appearance: none;
|
||||
outline:none;
|
||||
width:100%;
|
||||
}
|
||||
.login hr {
|
||||
background: #fff url() 0 0 no-repeat;
|
||||
}
|
||||
.login hr.hr15 {
|
||||
height: 15px;
|
||||
border: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
.login hr.hr20 {
|
||||
height: 20px;
|
||||
border: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
width: 100%;
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
body{
|
||||
background:#F2F1F2;
|
||||
}
|
||||
.container{
|
||||
background:#1A1B20;
|
||||
}
|
||||
.left-nav{
|
||||
background:#1A1B20;
|
||||
}
|
||||
|
||||
.left-nav a{
|
||||
color:rgba(255,255,255,.7);
|
||||
}
|
||||
..left-nav a.active{
|
||||
background: #009688 !important;
|
||||
color: #fff;
|
||||
}
|
||||
.left-nav a:hover{
|
||||
background: #009688 !important;
|
||||
color: #fff;
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
body{
|
||||
background:#EEF5F9;
|
||||
}
|
||||
.container{
|
||||
background:#323640;
|
||||
}
|
||||
.left-nav{
|
||||
background:#fff;
|
||||
}
|
||||
|
||||
.left-nav a{
|
||||
color:#686a76;
|
||||
}
|
||||
.left-nav a.active{
|
||||
background: #786AED !important;
|
||||
color: #fff;
|
||||
}
|
||||
.left-nav a:hover{
|
||||
background: #786AED !important;
|
||||
color: #fff;
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
body{
|
||||
background:#E8E8E8;
|
||||
}
|
||||
.container{
|
||||
background:#F34743;
|
||||
}
|
||||
|
||||
.left-nav{
|
||||
background:#F4F4F4;
|
||||
}
|
||||
|
||||
.left-nav a{
|
||||
color:#686a76;
|
||||
}
|
||||
.left-nav a.active{
|
||||
background: #FEFEFE !important;
|
||||
color: #F34743;
|
||||
}
|
||||
.left-nav a:hover{
|
||||
background: #FEFEFE !important;
|
||||
color: #F34743;
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
body{
|
||||
background:#E4E4E4;
|
||||
}
|
||||
.container{
|
||||
background:#019587;
|
||||
}
|
||||
.left-nav{
|
||||
background:#263035;
|
||||
}
|
||||
|
||||
.left-nav a{
|
||||
color:#fff;
|
||||
}
|
||||
.left-nav a.active{
|
||||
background: #212525 !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
.left-nav a:hover{
|
||||
background: #212525 !important;
|
||||
color: #fff !important;
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
body{
|
||||
background:#EEF5F9 !important;
|
||||
}
|
||||
.container{
|
||||
background:linear-gradient(to left, #7b4397, #2196f3);
|
||||
}
|
||||
|
||||
.left-nav{
|
||||
background:#fff !important;
|
||||
}
|
||||
|
||||
.left-nav a{
|
||||
color:#686a76 !important;
|
||||
}
|
||||
.left-nav a.active{
|
||||
background: linear-gradient(to left, #7c8ce4, #2196f3) !important;
|
||||
color: #fff !important;
|
||||
border-color: #7b4397 !important;
|
||||
}
|
||||
.left-nav a:hover{
|
||||
background: linear-gradient(to left, #7c8ce4, #2196f3) !important;
|
||||
color: #fff !important;
|
||||
border-color: #7b4397 !important;
|
||||
}
|
||||
.container .logo a{
|
||||
background: rgba(0,0,0,0) !important;
|
||||
}
|
@ -1,534 +0,0 @@
|
||||
@charset "utf-8";
|
||||
@import url(../lib/layui/css/layui.css);
|
||||
*{
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
a{
|
||||
text-decoration: none;
|
||||
}
|
||||
html{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-x:hidden;
|
||||
overflow-y:auto;
|
||||
}
|
||||
body{
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
background: #f1f1f1;
|
||||
/*background: #fff;*/
|
||||
}
|
||||
.x-red{
|
||||
color: red;
|
||||
}
|
||||
|
||||
.layui-form-switch{
|
||||
margin-top: 0px;
|
||||
}
|
||||
.layui-input:focus, .layui-textarea:focus {
|
||||
border-color: #189f92!important;
|
||||
}
|
||||
|
||||
.layui-fluid{
|
||||
padding:15px;
|
||||
}
|
||||
.x-nav{
|
||||
padding: 0 20px;
|
||||
position: relative;
|
||||
z-index: 99;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
line-height: 39px;
|
||||
height: 39px;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
}
|
||||
.page{
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.page a{
|
||||
display: inline-block;
|
||||
background: #fff;
|
||||
color: #888;
|
||||
padding: 5px;
|
||||
min-width: 15px;
|
||||
border: 1px solid #E2E2E2;
|
||||
|
||||
}
|
||||
.page span{
|
||||
display: inline-block;
|
||||
padding: 5px;
|
||||
min-width: 15px;
|
||||
border: 1px solid #E2E2E2;
|
||||
}
|
||||
.page span.current{
|
||||
display: inline-block;
|
||||
background: #009688;
|
||||
color: #fff;
|
||||
padding: 5px;
|
||||
min-width: 15px;
|
||||
border: 1px solid #009688;
|
||||
}
|
||||
.page .pagination li{
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
.page .pagination li.active span{
|
||||
background: #009688;
|
||||
color: #fff;
|
||||
border: 1px solid #009688;
|
||||
|
||||
}
|
||||
|
||||
/*登录样式*/
|
||||
/*头部*/
|
||||
.container{
|
||||
width: 100%;
|
||||
height: 45px;
|
||||
background-color: #222;
|
||||
}
|
||||
.container a,.layui-nav .layui-nav-item a{
|
||||
color: #fff;
|
||||
}
|
||||
.container .logo a{
|
||||
background-color: rgba(0,0,0,0);
|
||||
}
|
||||
.container .logo a{
|
||||
float: left;
|
||||
font-size: 18px;
|
||||
padding-left: 20px;
|
||||
line-height: 45px;
|
||||
width: 200px;
|
||||
}
|
||||
.container .right{
|
||||
background-color:rgba(0,0,0,0);
|
||||
float: right;
|
||||
|
||||
}
|
||||
.container .left_open{
|
||||
height: 45px;
|
||||
float: left;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.container .left_open i{
|
||||
display: block;
|
||||
background: rgba(255,255,255,0.1);
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
margin-top: 7px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.container .left_open i:hover{
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.container .left{
|
||||
background-color:rgba(0,0,0,0);
|
||||
float: left;
|
||||
|
||||
}
|
||||
.container .layui-nav-item{
|
||||
line-height: 45px;
|
||||
}
|
||||
.container .layui-nav-more{
|
||||
top: 20px;
|
||||
}
|
||||
.container .layui-nav-child{
|
||||
top: 50px;
|
||||
}
|
||||
.container .layui-nav-child i{
|
||||
margin-right: 10px;
|
||||
}
|
||||
.layui-nav .layui-nav-item a{
|
||||
cursor: pointer;
|
||||
}
|
||||
.layui-nav .layui-nav-child a{
|
||||
color: #333;
|
||||
cursor: pointer;
|
||||
}
|
||||
.left-nav{
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
bottom: 0px;
|
||||
/*bottom: 42px;*/
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
padding-top: 10px;
|
||||
background-color: #EEEEEE;
|
||||
width: 220px;
|
||||
max-width: 220px;
|
||||
overflow: auto;
|
||||
overflow-x:hidden;
|
||||
overflow: hidden;
|
||||
|
||||
/*width: 0px;*/
|
||||
}
|
||||
#side-nav{
|
||||
width: 220px;
|
||||
}
|
||||
|
||||
.left-nav #nav li:hover > a{
|
||||
/*color: blue;*/
|
||||
}
|
||||
.left-nav #nav .current{
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.left-nav #nav li a{
|
||||
font-size: 14px;
|
||||
padding: 10px 15px 10px 15px;
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
border-left: 4px solid transparent;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
.left-nav a:hover{
|
||||
background: #009688 !important;
|
||||
color: #fff;
|
||||
border-color: #04564e !important;
|
||||
}
|
||||
.left-nav a.active{
|
||||
background: #009688 !important;
|
||||
color: #fff;
|
||||
border-color: #04564e !important;
|
||||
}
|
||||
.left-nav #nav li a cite{
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.left-nav #nav li .sub-menu{
|
||||
display: none;
|
||||
}
|
||||
.left-nav #nav li .opened{
|
||||
display: block;
|
||||
}
|
||||
.left-nav #nav li .opened:hover{
|
||||
/*background: #fff ;*/
|
||||
}
|
||||
.left-nav #nav li .opened .current{
|
||||
|
||||
}
|
||||
.left-nav #nav li .sub-menu li:hover{
|
||||
/*color: blue;*/
|
||||
/*background: #fff ;*/
|
||||
}
|
||||
.left-nav #nav li .sub-menu li a{
|
||||
padding: 12px 15px 12px 30px;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.left-nav #nav li .sub-menu li .sub-menu li a{
|
||||
padding-left: 45px;
|
||||
}
|
||||
/*.left-nav #nav li .sub-menu li a:hover{
|
||||
color: #148cf1;
|
||||
}*/
|
||||
.left-nav #nav li .sub-menu li a i{
|
||||
font-size: 12px;
|
||||
}
|
||||
.left-nav #nav li a i{
|
||||
padding-right: 10px;
|
||||
line-height: 14px;
|
||||
}
|
||||
.left-nav #nav li .nav_right{
|
||||
float: right;
|
||||
font-size: 16px;
|
||||
}
|
||||
.x-slide_left {
|
||||
width: 17px;
|
||||
height: 61px;
|
||||
background: url(../images/icon.png) 0 0 no-repeat;
|
||||
position: absolute;
|
||||
top: 200px;
|
||||
left: 220px;
|
||||
cursor: pointer;
|
||||
z-index: 3;
|
||||
}
|
||||
.page-content{
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
right: 0;
|
||||
/*bottom: 42px;*/
|
||||
bottom: 0px;
|
||||
left: 220px;
|
||||
overflow: hidden;
|
||||
z-index: 1;
|
||||
}
|
||||
.page-content-bg{
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
right: 0;
|
||||
/*bottom: 42px;*/
|
||||
bottom: 0px;
|
||||
left: 220px;
|
||||
background: rgba(0,0,0,0.5);
|
||||
overflow: hidden;
|
||||
z-index: 100;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.page-content .tab{
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
/*background: #EFEEF0;*/
|
||||
margin: 0px;
|
||||
}
|
||||
.page-content .layui-tab-title{
|
||||
/*padding-top: 5px;*/
|
||||
height: 35px;
|
||||
background: #EFEEF0 ;
|
||||
position: relative;
|
||||
z-index: 100;
|
||||
}
|
||||
.page-content .layui-tab-title li.home i{
|
||||
padding-right: 5px;
|
||||
}
|
||||
.page-content .layui-tab-title li.home .layui-tab-close{
|
||||
display: none;
|
||||
}
|
||||
.page-content .layui-tab-title li{
|
||||
line-height: 35px;
|
||||
}
|
||||
.page-content .layui-tab-title .layui-this:after{
|
||||
height: 36px;
|
||||
}
|
||||
.page-content .layui-tab-title li .layui-tab-close{
|
||||
border-radius: 50%;
|
||||
}
|
||||
.page-content .layui-tab-title .layui-this{
|
||||
background: #fff ;
|
||||
}
|
||||
.page-content .layui-tab-bar{
|
||||
height:34px;
|
||||
line-height: 35px;
|
||||
}
|
||||
.page-content .layui-tab-content{
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.page-content .layui-tab-content .layui-tab-item{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
.page-content .layui-tab-content .layui-tab-item iframe{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
.x-admin-carousel,.layui-carousel,.x-admin-carousel>[carousel-item]>* {
|
||||
background-color:#fff
|
||||
}
|
||||
|
||||
.x-admin-backlog .x-admin-backlog-body {
|
||||
display:block;
|
||||
padding:10px 15px;
|
||||
background-color:#f8f8f8;
|
||||
color:#999;
|
||||
border-radius:2px;
|
||||
transition:all .3s;
|
||||
-webkit-transition:all .3s
|
||||
}
|
||||
.x-admin-backlog-body h3 {
|
||||
padding-bottom:10px;
|
||||
font-size:12px
|
||||
}
|
||||
.x-admin-backlog-body p cite {
|
||||
font-style:normal;
|
||||
font-size:30px;
|
||||
font-weight:300;
|
||||
color:#009688
|
||||
}
|
||||
.x-admin-backlog-body:hover {
|
||||
background-color:#CFCFCF;
|
||||
color:#888
|
||||
}
|
||||
|
||||
.layui-table td, .layui-table th{
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
table th, table td {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
/*404页面样式*/
|
||||
.fly-panel {
|
||||
margin-bottom: 15px;
|
||||
border-radius: 2px;
|
||||
/*background-color: #fff;*/
|
||||
box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);
|
||||
}
|
||||
.fly-none {
|
||||
min-height: 600px;
|
||||
text-align: center;
|
||||
padding-top: 50px;
|
||||
color: #999;
|
||||
}
|
||||
.fly-none .layui-icon {
|
||||
line-height: 300px;
|
||||
font-size: 300px;
|
||||
color: #393D49;
|
||||
}
|
||||
.fly-none p {
|
||||
margin-top: 50px;
|
||||
padding: 0 15px;
|
||||
font-size: 20px;
|
||||
color: #999;
|
||||
font-weight: 300;
|
||||
}
|
||||
#tab_right{
|
||||
display: none;
|
||||
width: 80px;
|
||||
position: absolute;
|
||||
top: 35px;
|
||||
left: 0px;
|
||||
}
|
||||
#tab_right dl{
|
||||
top: 0px;
|
||||
}
|
||||
#tab_show{
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
background:rgb(255, 255, 255,0);
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 768px){
|
||||
.fast-add{
|
||||
display: none;
|
||||
}
|
||||
.layui-nav .to-index{
|
||||
display: none;
|
||||
}
|
||||
.container .logo a{
|
||||
width: 140px;
|
||||
}
|
||||
.container .left_open {
|
||||
/*float: right;*/
|
||||
}
|
||||
.left-nav{
|
||||
width: 60px;
|
||||
}
|
||||
.left-nav #nav li a i{
|
||||
font-size: 18px;
|
||||
}
|
||||
.left-nav cite,.left-nav .nav_right{
|
||||
display: none;
|
||||
}
|
||||
.page-content{
|
||||
left: 60px;
|
||||
}
|
||||
.page-content .layui-tab-content .layui-tab-item{
|
||||
-webkit-overflow-scrolling: touch;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.x-so input.layui-input{
|
||||
width: 100%;
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
/*精细版样式*/
|
||||
|
||||
.x-admin-sm{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm body{
|
||||
font-size: 12px;
|
||||
}
|
||||
/*登录页面样式*/
|
||||
.x-admin-sm .login input[type=submit],.x-admin-sm .login input[type=button]{
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .login input[type=text],
|
||||
.x-admin-sm .login input[type=file],
|
||||
.x-admin-sm .login input[type=password],
|
||||
.x-admin-sm .login input[type=email], .x-admin-sm select {
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .login .message{
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-table td, .x-admin-sm .layui-table th{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-elem-field legend{
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.x-admin-sm .x-admin-backlog-body p cite{
|
||||
font-size: 24px;
|
||||
}
|
||||
.x-admin-sm .left-nav #nav li a cite{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .iconfont{
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-tab-title li{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-icon{
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-nav *{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-breadcrumb>*{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-btn,.x-admin-sm .layui-btn-xs,.x-admin-sm .layui-btn-sm{
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-laydate{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-btn{
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-btn-lg{
|
||||
height: 38px;
|
||||
line-height: 38px;
|
||||
padding: 0 18px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-layer-title,.x-admin-sm .layui-layer-dialog .layui-layer-content{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-input,.x-admin-sm .layui-select,.x-admin-sm .layui-textarea{
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-form-pane .layui-form-label{
|
||||
height: 30px;
|
||||
line-height: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-form-checkbox span{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .fly-none .layui-icon {
|
||||
line-height: 300px;
|
||||
font-size: 300px;
|
||||
color: #393D49;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 315 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 28 KiB |
4
legend/static/x-admin/js/jquery.min.js
vendored
@ -1,584 +0,0 @@
|
||||
;!function (win) {
|
||||
"use strict";
|
||||
var doc = document
|
||||
|
||||
,Xadmin = function(){
|
||||
this.v = '2.2'; //版本号
|
||||
}
|
||||
|
||||
Xadmin.prototype.init = function() {
|
||||
var tab_list = this.get_data();
|
||||
for(var i in tab_list){
|
||||
this.add_lay_tab(tab_list[i].title,tab_list[i].url,i);
|
||||
}
|
||||
element.tabChange('xbs_tab', i);
|
||||
};
|
||||
/**
|
||||
* [end 执行结束要做的]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.end = function() {
|
||||
|
||||
var cate_list = this.get_cate_data();
|
||||
|
||||
for(var i in cate_list){
|
||||
if(cate_list[i]!=null){
|
||||
$('.left-nav #nav li').eq(cate_list[i]).click();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Xadmin.prototype.add_tab = function (title,url,is_refresh) {
|
||||
var id = md5(url);//md5每个url
|
||||
|
||||
//重复点击
|
||||
for (var i = 0; i <$('.x-iframe').length; i++) {
|
||||
if($('.x-iframe').eq(i).attr('tab-id')==id){
|
||||
element.tabChange('xbs_tab', id);
|
||||
if(is_refresh)
|
||||
$('.x-iframe').eq(i).attr("src",$('.x-iframe').eq(i).attr('src'));
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
this.add_lay_tab(title,url,id);
|
||||
this.set_data(title,url,id);
|
||||
element.tabChange('xbs_tab', id);
|
||||
|
||||
}
|
||||
|
||||
Xadmin.prototype.del_tab = function (id) {
|
||||
|
||||
if(id){
|
||||
console.log(88);
|
||||
}else{
|
||||
var id = $(window.frameElement).attr('tab-id');
|
||||
parent.element.tabDelete('xbs_tab', id);
|
||||
}
|
||||
}
|
||||
|
||||
Xadmin.prototype.add_lay_tab = function(title,url,id) {
|
||||
element.tabAdd('xbs_tab', {
|
||||
title: title
|
||||
,content: '<iframe tab-id="'+id+'" frameborder="0" src="'+url+'" scrolling="yes" class="x-iframe"></iframe>'
|
||||
,id: id
|
||||
})
|
||||
}
|
||||
/**
|
||||
* [open 打开弹出层]
|
||||
* @param {[type]} title [弹出层标题]
|
||||
* @param {string} url [弹出层地址]
|
||||
* @param {[type]} w [宽]
|
||||
* @param {[type]} h [高]
|
||||
* @param {Boolean} full [全屏]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.open = function (title,url,w,h,full) {
|
||||
if (title == null || title == '') {
|
||||
var title=false;
|
||||
};
|
||||
if (url == null || url == '') {
|
||||
var url="404.html";
|
||||
};
|
||||
if (w == null || w == '') {
|
||||
var w=($(window).width()*0.9);
|
||||
};
|
||||
if (h == null || h == '') {
|
||||
var h=($(window).height() - 50);
|
||||
};
|
||||
var index = layer.open({
|
||||
type: 2,
|
||||
area: [w+'px', h +'px'],
|
||||
fix: false, //不固定
|
||||
maxmin: true,
|
||||
shadeClose: true,
|
||||
shade:0.4,
|
||||
title: title,
|
||||
content: url
|
||||
});
|
||||
if(full){
|
||||
layer.full(index);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* [close 关闭弹出层]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.close = function() {
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
};
|
||||
/**
|
||||
* [close 关闭弹出层父窗口关闭]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.father_reload = function() {
|
||||
parent.location.reload();
|
||||
};
|
||||
/**
|
||||
* [get_data 获取所有项]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.get_data = function () {
|
||||
if(typeof is_remember!="undefined")
|
||||
return false;
|
||||
return layui.data('tab_list')
|
||||
}
|
||||
/**
|
||||
* [set_data 增加某一项]
|
||||
* @param {[type]} id [description]
|
||||
*/
|
||||
Xadmin.prototype.set_data = function(title,url,id) {
|
||||
|
||||
if(typeof is_remember!="undefined")
|
||||
return false;
|
||||
|
||||
layui.data('tab_list', {
|
||||
key: id
|
||||
,value: {title:title,url:url}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* [get_data 获取所有项]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.get_cate_data = function () {
|
||||
if(typeof is_remember!="undefined")
|
||||
return false;
|
||||
return layui.data('cate')
|
||||
}
|
||||
/**
|
||||
* [set_data 增加某一项]
|
||||
* @param {[type]} id [description]
|
||||
*/
|
||||
Xadmin.prototype.set_cate_data = function(data) {
|
||||
|
||||
if(typeof is_remember!="undefined")
|
||||
return false;
|
||||
|
||||
layui.data('cate', data);
|
||||
};
|
||||
/**
|
||||
* [del_data 删除某一项]
|
||||
* @param {[type]} id [description]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.del_data = function(id) {
|
||||
if(typeof is_remember!="undefined")
|
||||
return false;
|
||||
if(typeof id!="undefined"){
|
||||
layui.data('tab_list', {
|
||||
key: id
|
||||
,remove: true
|
||||
});
|
||||
}else{
|
||||
layui.data('tab_list',null);
|
||||
}
|
||||
};
|
||||
/**
|
||||
* [del_other_data 删除其它]
|
||||
* @param {[type]} id [description]
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
Xadmin.prototype.del_other_data = function(id) {
|
||||
if(typeof is_remember!="undefined")
|
||||
return false;
|
||||
var tab_list = this.get_data();
|
||||
|
||||
layui.data('tab_list',null);
|
||||
|
||||
layui.data('tab_list', {
|
||||
key: id
|
||||
,value: tab_list[id]
|
||||
});
|
||||
};
|
||||
win.xadmin = new Xadmin();
|
||||
|
||||
}(window);
|
||||
|
||||
layui.use(['layer','element','jquery'],function() {
|
||||
layer = layui.layer;
|
||||
element = layui.element;
|
||||
$ = layui.jquery;
|
||||
|
||||
|
||||
// 打开页面初始
|
||||
xadmin.init();
|
||||
|
||||
//关闭tab清除记忆
|
||||
element.on('tabDelete(xbs_tab)', function(data){
|
||||
var id = $(this).parent().attr('lay-id');
|
||||
xadmin.del_data(id);
|
||||
});
|
||||
//左侧菜单
|
||||
$('.left-nav #nav').on('click', 'li', function(event) {
|
||||
|
||||
if($(this).parent().attr('id')=='nav'){
|
||||
xadmin.set_cate_data({key:'f1',value:$('.left-nav #nav li').index($(this))})
|
||||
xadmin.set_cate_data({key:'f2',value:null})
|
||||
xadmin.set_cate_data({key:'f3',value:null})
|
||||
}
|
||||
|
||||
if($(this).parent().parent().parent().attr('id')=='nav'){
|
||||
xadmin.set_cate_data({key:'f2',value:$('.left-nav #nav li').index($(this))})
|
||||
xadmin.set_cate_data({key:'f3',value:null})
|
||||
}
|
||||
|
||||
if($(this).parent().parent().parent().parent().parent().attr('id')=='nav'){
|
||||
xadmin.set_cate_data({key:'f3',value:$('.left-nav #nav li').index($(this))})
|
||||
}
|
||||
|
||||
|
||||
|
||||
if($('.left-nav').css('width')=='60px'){
|
||||
$('.left-nav').animate({width: '220px'}, 100);
|
||||
$('.page-content').animate({left: '220px'}, 100);
|
||||
$('.left-nav i').css('font-size','14px');
|
||||
$('.left-nav cite,.left-nav .nav_right').show();
|
||||
}
|
||||
|
||||
if($(window).width()<768){
|
||||
$('.page-content-bg').show();
|
||||
}
|
||||
|
||||
$('.left-nav').find('a').removeClass('active');
|
||||
$(this).children('a').addClass('active');
|
||||
if($(this).children('.sub-menu').length){
|
||||
if($(this).hasClass('open')){
|
||||
$(this).removeClass('open');
|
||||
$(this).find('.nav_right').html('');
|
||||
$(this).children('.sub-menu').stop(true,true).slideUp();
|
||||
$(this).siblings().children('.sub-menu').slideUp();
|
||||
}else{
|
||||
$(this).addClass('open');
|
||||
$(this).children('a').find('.nav_right').html('');
|
||||
$(this).children('.sub-menu').stop(true,true).slideDown();
|
||||
$(this).siblings().children('.sub-menu').stop(true,true).slideUp();
|
||||
$(this).siblings().find('.nav_right').html('');
|
||||
$(this).siblings().removeClass('open');
|
||||
}
|
||||
}
|
||||
event.stopPropagation();
|
||||
})
|
||||
var left_tips_index = null;
|
||||
$('.left-nav #nav').on('mouseenter', '.left-nav-li', function(event) {
|
||||
if($('.left-nav').css('width')!='220px'){
|
||||
var tips = $(this).attr('lay-tips');
|
||||
left_tips_index = layer.tips(tips, $(this));
|
||||
}
|
||||
})
|
||||
|
||||
$('.left-nav #nav').on('mouseout', '.left-nav-li', function(event) {
|
||||
layer.close(left_tips_index);
|
||||
})
|
||||
// 隐藏左侧
|
||||
$('.container .left_open i').click(function(event) {
|
||||
if($('.left-nav').css('width')=='220px'){
|
||||
$('.left-nav .open').click();
|
||||
$('.left-nav i').css('font-size','18px');
|
||||
$('.left-nav').animate({width: '60px'}, 100);
|
||||
$('.left-nav cite,.left-nav .nav_right').hide();
|
||||
$('.page-content').animate({left: '60px'}, 100);
|
||||
$('.page-content-bg').hide();
|
||||
}else{
|
||||
$('.left-nav').animate({width: '220px'}, 100);
|
||||
$('.page-content').animate({left: '220px'}, 100);
|
||||
$('.left-nav i').css('font-size','14px');
|
||||
$('.left-nav cite,.left-nav .nav_right').show();
|
||||
if($(window).width()<768){
|
||||
$('.page-content-bg').show();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$('.page-content-bg').click(function(event) {
|
||||
$('.left-nav .open').click();
|
||||
$('.left-nav i').css('font-size','18px');
|
||||
$('.left-nav').animate({width: '60px'}, 100);
|
||||
$('.left-nav cite,.left-nav .nav_right').hide();
|
||||
$('.page-content').animate({left: '60px'}, 100);
|
||||
$(this).hide();
|
||||
});
|
||||
|
||||
$(".layui-tab-title").on('contextmenu', 'li', function(event) {
|
||||
var tab_left = $(this).position().left;
|
||||
var tab_width = $(this).width();
|
||||
var left = $(this).position().top;
|
||||
var this_index = $(this).attr('lay-id');
|
||||
$('#tab_right').css({'left':tab_left+tab_width/2}).show().attr('lay-id',this_index);
|
||||
$('#tab_show').show();
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#tab_right').on('click', 'dd', function(event) {
|
||||
var data_type = $(this).attr('data-type');
|
||||
var lay_id = $(this).parents('#tab_right').attr('lay-id');
|
||||
if(data_type=='this'){
|
||||
$('.layui-tab-title li[lay-id='+lay_id+']').find('.layui-tab-close').click();
|
||||
}else if(data_type=='other'){
|
||||
$('.layui-tab-title li').eq(0).find('.layui-tab-close').remove();
|
||||
$('.layui-tab-title li[lay-id!='+lay_id+']').find('.layui-tab-close').click();
|
||||
}else if(data_type=='all'){
|
||||
$('.layui-tab-title li[lay-id]').find('.layui-tab-close').click();
|
||||
}
|
||||
$('#tab_right').hide();
|
||||
$('#tab_show').hide();
|
||||
})
|
||||
|
||||
|
||||
$('.page-content,#tab_show,.container,.left-nav').click(function(event) {
|
||||
$('#tab_right').hide();
|
||||
$('#tab_show').hide();
|
||||
});
|
||||
|
||||
// 页面加载完要做的
|
||||
xadmin.end();
|
||||
})
|
||||
// md5-----------------------------------------------------------------------------------
|
||||
/*
|
||||
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
|
||||
* to work around bugs in some JS interpreters.
|
||||
*/
|
||||
function safeAdd (x, y) {
|
||||
var lsw = (x & 0xffff) + (y & 0xffff)
|
||||
var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
|
||||
return (msw << 16) | (lsw & 0xffff)
|
||||
}
|
||||
|
||||
/*
|
||||
* Bitwise rotate a 32-bit number to the left.
|
||||
*/
|
||||
function bitRotateLeft (num, cnt) {
|
||||
return (num << cnt) | (num >>> (32 - cnt))
|
||||
}
|
||||
|
||||
/*
|
||||
* These functions implement the four basic operations the algorithm uses.
|
||||
*/
|
||||
function md5cmn (q, a, b, x, s, t) {
|
||||
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
|
||||
}
|
||||
function md5ff (a, b, c, d, x, s, t) {
|
||||
return md5cmn((b & c) | (~b & d), a, b, x, s, t)
|
||||
}
|
||||
function md5gg (a, b, c, d, x, s, t) {
|
||||
return md5cmn((b & d) | (c & ~d), a, b, x, s, t)
|
||||
}
|
||||
function md5hh (a, b, c, d, x, s, t) {
|
||||
return md5cmn(b ^ c ^ d, a, b, x, s, t)
|
||||
}
|
||||
function md5ii (a, b, c, d, x, s, t) {
|
||||
return md5cmn(c ^ (b | ~d), a, b, x, s, t)
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
||||
*/
|
||||
function binlMD5 (x, len) {
|
||||
/* append padding */
|
||||
x[len >> 5] |= 0x80 << (len % 32)
|
||||
x[((len + 64) >>> 9 << 4) + 14] = len
|
||||
|
||||
var i
|
||||
var olda
|
||||
var oldb
|
||||
var oldc
|
||||
var oldd
|
||||
var a = 1732584193
|
||||
var b = -271733879
|
||||
var c = -1732584194
|
||||
var d = 271733878
|
||||
|
||||
for (i = 0; i < x.length; i += 16) {
|
||||
olda = a
|
||||
oldb = b
|
||||
oldc = c
|
||||
oldd = d
|
||||
|
||||
a = md5ff(a, b, c, d, x[i], 7, -680876936)
|
||||
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)
|
||||
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)
|
||||
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)
|
||||
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)
|
||||
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)
|
||||
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)
|
||||
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)
|
||||
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)
|
||||
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)
|
||||
c = md5ff(c, d, a, b, x[i + 10], 17, -42063)
|
||||
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)
|
||||
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)
|
||||
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)
|
||||
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)
|
||||
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)
|
||||
|
||||
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)
|
||||
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)
|
||||
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)
|
||||
b = md5gg(b, c, d, a, x[i], 20, -373897302)
|
||||
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)
|
||||
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)
|
||||
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)
|
||||
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)
|
||||
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)
|
||||
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)
|
||||
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)
|
||||
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)
|
||||
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)
|
||||
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)
|
||||
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)
|
||||
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)
|
||||
|
||||
a = md5hh(a, b, c, d, x[i + 5], 4, -378558)
|
||||
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)
|
||||
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)
|
||||
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)
|
||||
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)
|
||||
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)
|
||||
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)
|
||||
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)
|
||||
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)
|
||||
d = md5hh(d, a, b, c, x[i], 11, -358537222)
|
||||
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)
|
||||
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)
|
||||
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)
|
||||
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)
|
||||
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)
|
||||
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)
|
||||
|
||||
a = md5ii(a, b, c, d, x[i], 6, -198630844)
|
||||
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)
|
||||
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)
|
||||
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)
|
||||
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)
|
||||
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)
|
||||
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)
|
||||
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)
|
||||
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)
|
||||
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)
|
||||
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)
|
||||
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)
|
||||
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)
|
||||
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)
|
||||
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)
|
||||
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)
|
||||
|
||||
a = safeAdd(a, olda)
|
||||
b = safeAdd(b, oldb)
|
||||
c = safeAdd(c, oldc)
|
||||
d = safeAdd(d, oldd)
|
||||
}
|
||||
return [a, b, c, d]
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert an array of little-endian words to a string
|
||||
*/
|
||||
function binl2rstr (input) {
|
||||
var i
|
||||
var output = ''
|
||||
var length32 = input.length * 32
|
||||
for (i = 0; i < length32; i += 8) {
|
||||
output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to an array of little-endian words
|
||||
* Characters >255 have their high-byte silently ignored.
|
||||
*/
|
||||
function rstr2binl (input) {
|
||||
var i
|
||||
var output = []
|
||||
output[(input.length >> 2) - 1] = undefined
|
||||
for (i = 0; i < output.length; i += 1) {
|
||||
output[i] = 0
|
||||
}
|
||||
var length8 = input.length * 8
|
||||
for (i = 0; i < length8; i += 8) {
|
||||
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the MD5 of a raw string
|
||||
*/
|
||||
function rstrMD5 (s) {
|
||||
return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the HMAC-MD5, of a key and some data (raw strings)
|
||||
*/
|
||||
function rstrHMACMD5 (key, data) {
|
||||
var i
|
||||
var bkey = rstr2binl(key)
|
||||
var ipad = []
|
||||
var opad = []
|
||||
var hash
|
||||
ipad[15] = opad[15] = undefined
|
||||
if (bkey.length > 16) {
|
||||
bkey = binlMD5(bkey, key.length * 8)
|
||||
}
|
||||
for (i = 0; i < 16; i += 1) {
|
||||
ipad[i] = bkey[i] ^ 0x36363636
|
||||
opad[i] = bkey[i] ^ 0x5c5c5c5c
|
||||
}
|
||||
hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)
|
||||
return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to a hex string
|
||||
*/
|
||||
function rstr2hex (input) {
|
||||
var hexTab = '0123456789abcdef'
|
||||
var output = ''
|
||||
var x
|
||||
var i
|
||||
for (i = 0; i < input.length; i += 1) {
|
||||
x = input.charCodeAt(i)
|
||||
output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
/*
|
||||
* Encode a string as utf-8
|
||||
*/
|
||||
function str2rstrUTF8 (input) {
|
||||
return unescape(encodeURIComponent(input))
|
||||
}
|
||||
|
||||
/*
|
||||
* Take string arguments and return either raw or hex encoded strings
|
||||
*/
|
||||
function rawMD5 (s) {
|
||||
return rstrMD5(str2rstrUTF8(s))
|
||||
}
|
||||
function hexMD5 (s) {
|
||||
return rstr2hex(rawMD5(s))
|
||||
}
|
||||
function rawHMACMD5 (k, d) {
|
||||
return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))
|
||||
}
|
||||
function hexHMACMD5 (k, d) {
|
||||
return rstr2hex(rawHMACMD5(k, d))
|
||||
}
|
||||
|
||||
function md5 (string, key, raw) {
|
||||
if (!key) {
|
||||
if (!raw) {
|
||||
return hexMD5(string)
|
||||
}
|
||||
return rawMD5(string)
|
||||
}
|
||||
if (!raw) {
|
||||
return hexHMACMD5(key, string)
|
||||
}
|
||||
return rawHMACMD5(key, string)
|
||||
}
|
@ -1,506 +0,0 @@
|
||||
$.fn.xcity = function(pName,cName,aName){
|
||||
|
||||
this.p = $(this).find('select[lay-filter=province]');
|
||||
|
||||
this.c = $(this).find('select[lay-filter=city]');
|
||||
|
||||
this.a = $(this).find('select[lay-filter=area]');
|
||||
|
||||
this.cityList = [];
|
||||
|
||||
this.reaList = [];
|
||||
|
||||
this.showP = function(provinceList) {
|
||||
|
||||
this.p.html('');
|
||||
|
||||
is_pName = false;
|
||||
|
||||
for (var i in provinceList) {
|
||||
|
||||
if(pName==provinceList[i].name){
|
||||
is_pName = true;
|
||||
this.cityList = provinceList[i].cityList;
|
||||
this.p.append("<option selected value='"+provinceList[i].name+"'>"+provinceList[i].name+"</option>")
|
||||
}else{
|
||||
this.p.append("<option value='"+provinceList[i].name+"'>"+provinceList[i].name+"</option>")
|
||||
}
|
||||
}
|
||||
if(!is_pName){
|
||||
this.cityList = provinceList[0].cityList;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.showC = function (cityList) {
|
||||
|
||||
this.c.html('');
|
||||
|
||||
is_cName = false;
|
||||
|
||||
for (var i in cityList) {
|
||||
if(cName==cityList[i].name){
|
||||
is_cName = true;
|
||||
this.areaList = cityList[i].areaList;
|
||||
this.c.append("<option selected value='"+cityList[i].name+"'>"+cityList[i].name+"</option>")
|
||||
}else{
|
||||
this.c.append("<option value='"+cityList[i].name+"'>"+cityList[i].name+"</option>")
|
||||
}
|
||||
}
|
||||
|
||||
if(!is_cName){
|
||||
this.areaList = cityList[0].areaList;
|
||||
}
|
||||
}
|
||||
|
||||
this.showA = function (areaList) {
|
||||
this.a.html('');
|
||||
|
||||
for (var i in areaList) {
|
||||
|
||||
if(aName==areaList[i]){
|
||||
this.a.append("<option selected value='"+areaList[i]+"'>"+areaList[i]+"</option>")
|
||||
}else{
|
||||
this.a.append("<option value='"+areaList[i]+"'>"+areaList[i]+"</option>")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.showP(provinceList);
|
||||
this.showC(this.cityList);
|
||||
this.showA(this.areaList);
|
||||
|
||||
form.render('select');
|
||||
|
||||
form.on('select(province)', function(data){
|
||||
var pName = data.value;
|
||||
$(data.elem).parents(".x-city").xcity(pName);
|
||||
});
|
||||
|
||||
form.on('select(city)', function(data){
|
||||
var cName = data.value;
|
||||
var pName = $(data.elem).parents(".x-city").find('select[lay-filter=province]').val();
|
||||
console.log(pName);
|
||||
$(data.elem).parents(".x-city").xcity(pName,cName);
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
var provinceList = [
|
||||
{name:'北京', cityList:[
|
||||
{name:'市辖区', areaList:['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区']},
|
||||
{name:'县', areaList:['密云县','延庆县']}
|
||||
]},
|
||||
{name:'上海', cityList:[
|
||||
{name:'市辖区', areaList:['黄浦区','卢湾区','徐汇区','长宁区','静安区','普陀区','闸北区','虹口区','杨浦区','闵行区','宝山区','嘉定区','浦东新区','金山区','松江区','青浦区','南汇区','奉贤区']},
|
||||
{name:'县', areaList:['崇明县']}
|
||||
]},
|
||||
{name:'天津', cityList:[
|
||||
{name:'市辖区', areaList:['和平区','河东区','河西区','南开区','河北区','红桥区','塘沽区','汉沽区','大港区','东丽区','西青区','津南区','北辰区','武清区','宝坻区']},
|
||||
{name:'县', areaList:['宁河县','静海县','蓟 县']}
|
||||
]},
|
||||
{name:'重庆', cityList:[
|
||||
{name:'市辖区', areaList:['万州区','涪陵区','渝中区','大渡口区','江北区','沙坪坝区','九龙坡区','南岸区','北碚区','万盛区','双桥区','渝北区','巴南区','黔江区','长寿区']},
|
||||
{name:'县', areaList:['綦江县','潼南县','铜梁县','大足县','荣昌县','璧山县','梁平县','城口县','丰都县','垫江县','武隆县','忠 县','开 县','云阳县','奉节县','巫山县','巫溪县','石柱土家族自治县','秀山土家族苗族自治县','酉阳土家族苗族自治县','彭水苗族土家族自治县']},
|
||||
{name:'市', areaList:['江津市','合川市','永川市','南川市']}
|
||||
]},
|
||||
{name:'四川', cityList:[
|
||||
{name:'成都市', areaList:['市辖区','锦江区','青羊区','金牛区','武侯区','成华区','龙泉驿区','青白江区','新都区','温江县','金堂县','双流县','郫 县','大邑县','蒲江县','新津县','都江堰市','彭州市','邛崃市','崇州市']},
|
||||
{name:'自贡市', areaList:['市辖区','自流井区','贡井区','大安区','沿滩区','荣 县','富顺县']},
|
||||
{name:'攀枝花市', areaList:['市辖区','东 区','西 区','仁和区','米易县','盐边县']},
|
||||
{name:'泸州市', areaList:['市辖区','江阳区','纳溪区','龙马潭区','泸 县','合江县','叙永县','古蔺县']},
|
||||
{name:'德阳市', areaList:['市辖区','旌阳区','中江县','罗江县','广汉市','什邡市','绵竹市']},
|
||||
{name:'绵阳市', areaList:['市辖区','涪城区','游仙区','三台县','盐亭县','安 县','梓潼县','北川羌族自治县','平武县','江油市']},
|
||||
{name:'广元市', areaList:['市辖区','市中区','元坝区','朝天区','旺苍县','青川县','剑阁县','苍溪县']},
|
||||
{name:'遂宁市', areaList:['市辖区','船山区','安居区','蓬溪县','射洪县','大英县']},
|
||||
{name:'内江市', areaList:['市辖区','市中区','东兴区','威远县','资中县','隆昌县']},
|
||||
{name:'乐山市', areaList:['市辖区','市中区','沙湾区','五通桥区','金口河区','犍为县','井研县','夹江县','沐川县','峨边彝族自治县','马边彝族自治县','峨眉山市']},
|
||||
{name:'南充市', areaList:['市辖区','顺庆区','高坪区','嘉陵区','南部县','营山县','蓬安县','仪陇县','西充县','阆中市']},
|
||||
{name:'眉山市', areaList:['市辖区','东坡区','仁寿县','彭山县','洪雅县','丹棱县','青神县']},
|
||||
{name:'宜宾市', areaList:['市辖区','翠屏区','宜宾县','南溪县','江安县','长宁县','高 县','珙 县','筠连县','兴文县','屏山县']},
|
||||
{name:'广安市', areaList:['市辖区','广安区','岳池县','武胜县','邻水县','华莹市']},
|
||||
{name:'达州市', areaList:['市辖区','通川区','达 县','宣汉县','开江县','大竹县','渠 县','万源市']},
|
||||
{name:'雅安市', areaList:['市辖区','雨城区','名山县','荥经县','汉源县','石棉县','天全县','芦山县','宝兴县']},
|
||||
{name:'巴中市', areaList:['市辖区','巴州区','通江县','南江县','平昌县']},
|
||||
{name:'资阳市', areaList:['市辖区','雁江区','安岳县','乐至县','简阳市']},
|
||||
{name:'阿坝藏族羌族自治州', areaList:['汶川县','理 县','茂 县','松潘县','九寨沟县','金川县','小金县','黑水县','马尔康县','壤塘县','阿坝县','若尔盖县','红原县']},
|
||||
{name:'甘孜藏族自治州', areaList:['康定县','泸定县','丹巴县','九龙县','雅江县','道孚县','炉霍县','甘孜县','新龙县','德格县','白玉县','石渠县','色达县','理塘县','巴塘县','乡城县','稻城县','得荣县']},
|
||||
{name:'凉山彝族自治州', areaList:['西昌市','木里藏族自治县','盐源县','德昌县','会理县','会东县','宁南县','普格县','布拖县','金阳县','昭觉县','喜德县','冕宁县','越西县','甘洛县','美姑县','雷波县']}
|
||||
]},
|
||||
{name:'贵州', cityList:[
|
||||
{name:'贵阳市', areaList:['市辖区','南明区','云岩区','花溪区','乌当区','白云区','小河区','开阳县','息烽县','修文县','清镇市']},
|
||||
{name:'六盘水市', areaList:['钟山区','六枝特区','水城县','盘 县']},
|
||||
{name:'遵义市', areaList:['市辖区','红花岗区','汇川区','遵义县','桐梓县','绥阳县','正安县','道真仡佬族苗族自治县','务川仡佬族苗族自治县','凤冈县','湄潭县','余庆县','习水县','赤水市','仁怀市']},
|
||||
{name:'安顺市', areaList:['市辖区','西秀区','平坝县','普定县','镇宁布依族苗族自治县','关岭布依族苗族自治县','紫云苗族布依族自治县']},
|
||||
{name:'铜仁地区', areaList:['铜仁市','江口县','玉屏侗族自治县','石阡县','思南县','印江土家族苗族自治县','德江县','沿河土家族自治县','松桃苗族自治县','万山特区']},
|
||||
{name:'黔西南布依族苗族自治州', areaList:['兴义市','兴仁县','普安县','晴隆县','贞丰县','望谟县','册亨县','安龙县']},
|
||||
{name:'毕节地区', areaList:['毕节市','大方县','黔西县','金沙县','织金县','纳雍县','威宁彝族回族苗族自治县','赫章县']},
|
||||
{name:'黔东南苗族侗族自治州', areaList:['凯里市','黄平县','施秉县','三穗县','镇远县','岑巩县','天柱县','锦屏县','剑河县','台江县','黎平县','榕江县','从江县','雷山县','麻江县','丹寨县']},
|
||||
{name:'黔南布依族苗族自治州', areaList:['都匀市','福泉市','荔波县','贵定县','瓮安县','独山县','平塘县','罗甸县','长顺县','龙里县','惠水县','三都水族自治县']}
|
||||
]},
|
||||
{name:'云南', cityList:[
|
||||
{name:'昆明市', areaList:['市辖区','五华区','盘龙区','官渡区','西山区','东川区','呈贡县','晋宁县','富民县','宜良县','石林彝族自治县','嵩明县','禄劝彝族苗族自治县','寻甸回族彝族自治县','安宁市']},
|
||||
{name:'曲靖市', areaList:['市辖区','麒麟区','马龙县','陆良县','师宗县','罗平县','富源县','会泽县','沾益县','宣威市']},
|
||||
{name:'玉溪市', areaList:['市辖区','红塔区','江川县','澄江县','通海县','华宁县','易门县','峨山彝族自治县','新平彝族傣族自治县','元江哈尼族彝族傣族自治县']},
|
||||
{name:'保山市', areaList:['市辖区','隆阳区','施甸县','腾冲县','龙陵县','昌宁县']},
|
||||
{name:'昭通市', areaList:['市辖区','昭阳区','鲁甸县','巧家县','盐津县','大关县','永善县','绥江县','镇雄县','彝良县','威信县','水富县']},
|
||||
{name:'丽江市', areaList:['市辖区','古城区','玉龙纳西族自治县','永胜县','华坪县','宁蒗彝族自治县']},
|
||||
{name:'思茅市', areaList:['市辖区','翠云区','普洱哈尼族彝族自治县','墨江哈尼族自治县','景东彝族自治县','景谷傣族彝族自治县','镇沅彝族哈尼族拉祜族自治县','江城哈尼族彝族自治县','孟连傣族拉祜族佤族自治县','澜沧拉祜族自治县','西盟佤族自治县']},
|
||||
{name:'临沧市', areaList:['市辖区','临翔区','凤庆县','云 县','永德县','镇康县','双江拉祜族佤族布朗族傣族自治县','耿马傣族佤族自治县','沧源佤族自治县']},
|
||||
{name:'楚雄彝族自治州', areaList:['楚雄市','双柏县','牟定县','南华县','姚安县','大姚县','永仁县','元谋县','武定县','禄丰县']},
|
||||
{name:'红河哈尼族彝族自治州', areaList:['个旧市','开远市','蒙自县','屏边苗族自治县','建水县','石屏县','弥勒县','泸西县','元阳县','红河县','金平苗族瑶族傣族自治县','绿春县','河口瑶族自治县']},
|
||||
{name:'文山壮族苗族自治州', areaList:['文山县','砚山县','西畴县','麻栗坡县','马关县','丘北县','广南县','富宁县']},
|
||||
{name:'西双版纳傣族自治州', areaList:['景洪市','勐海县','勐腊县']},
|
||||
{name:'大理白族自治州', areaList:['大理市','漾濞彝族自治县','祥云县','宾川县','弥渡县','南涧彝族自治县','巍山彝族回族自治县','永平县','云龙县','洱源县','剑川县','鹤庆县']},
|
||||
{name:'德宏傣族景颇族自治州', areaList:['瑞丽市','潞西市','梁河县','盈江县','陇川县']},
|
||||
{name:'怒江傈僳族自治州', areaList:['泸水县','福贡县','贡山独龙族怒族自治县','兰坪白族普米族自治县']},
|
||||
{name:'迪庆藏族自治州', areaList:['香格里拉县','德钦县','维西傈僳族自治县']}
|
||||
]},
|
||||
{name:'西藏', cityList:[
|
||||
{name:'拉萨市', areaList:['市辖区','城关区','林周县','当雄县','尼木县','曲水县','堆龙德庆县','达孜县','墨竹工卡县']},
|
||||
{name:'昌都地区', areaList:['昌都县','江达县','贡觉县','类乌齐县','丁青县','察雅县','八宿县','左贡县','芒康县','洛隆县','边坝县']},
|
||||
{name:'山南地区', areaList:['乃东县','扎囊县','贡嘎县','桑日县','琼结县','曲松县','措美县','洛扎县','加查县','隆子县','错那县','浪卡子县']},
|
||||
{name:'日喀则地区', areaList:['日喀则市','南木林县','江孜县','定日县','萨迦县','拉孜县','昂仁县','谢通门县','白朗县','仁布县','康马县','定结县','仲巴县','亚东县','吉隆县','聂拉木县','萨嘎县','岗巴县']},
|
||||
{name:'那曲地区', areaList:['那曲县','嘉黎县','比如县','聂荣县','安多县','申扎县','索 县','班戈县','巴青县','尼玛县']},
|
||||
{name:'阿里地区', areaList:['普兰县','札达县','噶尔县','日土县','革吉县','改则县','措勤县']},
|
||||
{name:'林芝地区', areaList:['林芝县','工布江达县','米林县','墨脱县','波密县','察隅县','朗 县']}
|
||||
]},
|
||||
{name:'河南', cityList:[
|
||||
{name:'郑州市', areaList:['市辖区','中原区','二七区','管城回族区','金水区','上街区','邙山区','中牟县','巩义市','荥阳市','新密市','新郑市','登封市']},
|
||||
{name:'开封市', areaList:['市辖区','龙亭区','顺河回族区','鼓楼区','南关区','郊 区','杞 县','通许县','尉氏县','开封县','兰考县']},
|
||||
{name:'洛阳市', areaList:['市辖区','老城区','西工区','廛河回族区','涧西区','吉利区','洛龙区','孟津县','新安县','栾川县','嵩 县','汝阳县','宜阳县','洛宁县','伊川县','偃师市']},
|
||||
{name:'平顶山市', areaList:['市辖区','新华区','卫东区','石龙区','湛河区','宝丰县','叶 县','鲁山县','郏 县','舞钢市','汝州市']},
|
||||
{name:'安阳市', areaList:['市辖区','文峰区','北关区','殷都区','龙安区','安阳县','汤阴县','滑 县','内黄县','林州市']},
|
||||
{name:'鹤壁市', areaList:['市辖区','鹤山区','山城区','淇滨区','浚 县','淇 县']},
|
||||
{name:'新乡市', areaList:['市辖区','红旗区','卫滨区','凤泉区','牧野区','新乡县','获嘉县','原阳县','延津县','封丘县','长垣县','卫辉市','辉县市']},
|
||||
{name:'焦作市', areaList:['市辖区','解放区','中站区','马村区','山阳区','修武县','博爱县','武陟县','温 县','济源市','沁阳市','孟州市']},
|
||||
{name:'濮阳市', areaList:['市辖区','华龙区','清丰县','南乐县','范 县','台前县','濮阳县']},
|
||||
{name:'许昌市', areaList:['市辖区','魏都区','许昌县','鄢陵县','襄城县','禹州市','长葛市']},
|
||||
{name:'漯河市', areaList:['市辖区','源汇区','郾城区','召陵区','舞阳县','临颍县']},
|
||||
{name:'三门峡市', areaList:['市辖区','湖滨区','渑池县','陕 县','卢氏县','义马市','灵宝市']},
|
||||
{name:'南阳市', areaList:['市辖区','宛城区','卧龙区','南召县','方城县','西峡县','镇平县','内乡县','淅川县','社旗县','唐河县','新野县','桐柏县','邓州市']},
|
||||
{name:'商丘市', areaList:['市辖区','梁园区','睢阳区','民权县','睢 县','宁陵县','柘城县','虞城县','夏邑县','永城市']},
|
||||
{name:'信阳市', areaList:['市辖区','师河区','平桥区','罗山县','光山县','新 县','商城县','固始县','潢川县','淮滨县','息 县']},
|
||||
{name:'周口市', areaList:['市辖区','川汇区','扶沟县','西华县','商水县','沈丘县','郸城县','淮阳县','太康县','鹿邑县','项城市']},
|
||||
{name:'驻马店市', areaList:['市辖区','驿城区','西平县','上蔡县','平舆县','正阳县','确山县','泌阳县','汝南县','遂平县','新蔡县']}
|
||||
]},
|
||||
{name:'湖北', cityList:[
|
||||
{name:'武汉市', areaList:['市辖区','江岸区','江汉区','乔口区','汉阳区','武昌区','青山区','洪山区','东西湖区','汉南区','蔡甸区','江夏区','黄陂区','新洲区']},
|
||||
{name:'黄石市', areaList:['市辖区','黄石港区','西塞山区','下陆区','铁山区','阳新县','大冶市']},
|
||||
{name:'十堰市', areaList:['市辖区','茅箭区','张湾区','郧 县','郧西县','竹山县','竹溪县','房 县','丹江口市']},
|
||||
{name:'宜昌市', areaList:['市辖区','西陵区','伍家岗区','点军区','猇亭区','夷陵区','远安县','兴山县','秭归县','长阳土家族自治县','五峰土家族自治县','宜都市','当阳市','枝江市']},
|
||||
{name:'襄樊市', areaList:['市辖区','襄城区','樊城区','襄阳区','南漳县','谷城县','保康县','老河口市','枣阳市','宜城市']},
|
||||
{name:'鄂州市', areaList:['市辖区','梁子湖区','华容区','鄂城区']},
|
||||
{name:'荆门市', areaList:['市辖区','东宝区','掇刀区','京山县','沙洋县','钟祥市']},
|
||||
{name:'孝感市', areaList:['市辖区','孝南区','孝昌县','大悟县','云梦县','应城市','安陆市','汉川市']},
|
||||
{name:'荆州市', areaList:['市辖区','沙市区','荆州区','公安县','监利县','江陵县','石首市','洪湖市','松滋市']},
|
||||
{name:'黄冈市', areaList:['市辖区','黄州区','团风县','红安县','罗田县','英山县','浠水县','蕲春县','黄梅县','麻城市','武穴市']},
|
||||
{name:'咸宁市', areaList:['市辖区','咸安区','嘉鱼县','通城县','崇阳县','通山县','赤壁市']},
|
||||
{name:'随州市', areaList:['市辖区','曾都区','广水市']},
|
||||
{name:'恩施土家族苗族自治州', areaList:['恩施市','利川市','建始县','巴东县','宣恩县','咸丰县','来凤县','鹤峰县']},
|
||||
{name:'省直辖行政单位', areaList:['仙桃市','潜江市','天门市','神农架林区']}
|
||||
]},
|
||||
{name:'湖南', cityList:[
|
||||
{name:'长沙市', areaList:['市辖区','芙蓉区','天心区','岳麓区','开福区','雨花区','长沙县','望城县','宁乡县','浏阳市']},
|
||||
{name:'株洲市', areaList:['市辖区','荷塘区','芦淞区','石峰区','天元区','株洲县','攸 县','茶陵县','炎陵县','醴陵市']},
|
||||
{name:'湘潭市', areaList:['市辖区','雨湖区','岳塘区','湘潭县','湘乡市','韶山市']},
|
||||
{name:'衡阳市', areaList:['市辖区','珠晖区','雁峰区','石鼓区','蒸湘区','南岳区','衡阳县','衡南县','衡山县','衡东县','祁东县','耒阳市','常宁市']},
|
||||
{name:'邵阳市', areaList:['市辖区','双清区','大祥区','北塔区','邵东县','新邵县','邵阳县','隆回县','洞口县','绥宁县','新宁县','城步苗族自治县','武冈市']},
|
||||
{name:'岳阳市', areaList:['市辖区','岳阳楼区','云溪区','君山区','岳阳县','华容县','湘阴县','平江县','汨罗市','临湘市']},
|
||||
{name:'常德市', areaList:['市辖区','武陵区','鼎城区','安乡县','汉寿县','澧 县','临澧县','桃源县','石门县','津市市']},
|
||||
{name:'张家界市', areaList:['市辖区','永定区','武陵源区','慈利县','桑植县']},
|
||||
{name:'益阳市', areaList:['市辖区','资阳区','赫山区','南 县','桃江县','安化县','沅江市']},
|
||||
{name:'郴州市', areaList:['市辖区','北湖区','苏仙区','桂阳县','宜章县','永兴县','嘉禾县','临武县','汝城县','桂东县','安仁县','资兴市']},
|
||||
{name:'永州市', areaList:['市辖区','芝山区','冷水滩区','祁阳县','东安县','双牌县','道 县','江永县','宁远县','蓝山县','新田县','江华瑶族自治县']},
|
||||
{name:'怀化市', areaList:['市辖区','鹤城区','中方县','沅陵县','辰溪县','溆浦县','会同县','麻阳苗族自治县','新晃侗族自治县','芷江侗族自治县','靖州苗族侗族自治县','通道侗族自治县','洪江市']},
|
||||
{name:'娄底市', areaList:['市辖区','娄星区','双峰县','新化县','冷水江市','涟源市']},
|
||||
{name:'湘西土家族苗族自治州', areaList:['吉首市','泸溪县','凤凰县','花垣县','保靖县','古丈县','永顺县','龙山县']}
|
||||
]},
|
||||
{name:'广东', cityList:[
|
||||
{name:'广州市', areaList:['市辖区','东山区','荔湾区','越秀区','海珠区','天河区','芳村区','白云区','黄埔区','番禺区','花都区','增城市','从化市']},
|
||||
{name:'韶关市', areaList:['市辖区','武江区','浈江区','曲江区','始兴县','仁化县','翁源县','乳源瑶族自治县','新丰县','乐昌市','南雄市']},
|
||||
{name:'深圳市', areaList:['市辖区','罗湖区','福田区','南山区','宝安区','龙岗区','盐田区']},
|
||||
{name:'珠海市', areaList:['市辖区','香洲区','斗门区','金湾区']},
|
||||
{name:'汕头市', areaList:['市辖区','龙湖区','金平区','濠江区','潮阳区','潮南区','澄海区','南澳县']},
|
||||
{name:'佛山市', areaList:['市辖区','禅城区','南海区','顺德区','三水区','高明区']},
|
||||
{name:'江门市', areaList:['市辖区','蓬江区','江海区','新会区','台山市','开平市','鹤山市','恩平市']},
|
||||
{name:'湛江市', areaList:['市辖区','赤坎区','霞山区','坡头区','麻章区','遂溪县','徐闻县','廉江市','雷州市','吴川市']},
|
||||
{name:'茂名市', areaList:['市辖区','茂南区','茂港区','电白县','高州市','化州市','信宜市']},
|
||||
{name:'肇庆市', areaList:['市辖区','端州区','鼎湖区','广宁县','怀集县','封开县','德庆县','高要市','四会市']},
|
||||
{name:'惠州市', areaList:['市辖区','惠城区','惠阳区','博罗县','惠东县','龙门县']},
|
||||
{name:'梅州市', areaList:['市辖区','梅江区','梅 县','大埔县','丰顺县','五华县','平远县','蕉岭县','兴宁市']},
|
||||
{name:'汕尾市', areaList:['市辖区','城 区','海丰县','陆河县','陆丰市']},
|
||||
{name:'河源市', areaList:['市辖区','源城区','紫金县','龙川县','连平县','和平县','东源县']},
|
||||
{name:'阳江市', areaList:['市辖区','江城区','阳西县','阳东县','阳春市']},
|
||||
{name:'清远市', areaList:['市辖区','清城区','佛冈县','阳山县','连山壮族瑶族自治县','连南瑶族自治县','清新县','英德市','连州市']},
|
||||
{name:'东莞市', areaList:['东莞市']},
|
||||
{name:'中山市', areaList:['中山市']},
|
||||
{name:'潮州市', areaList:['市辖区','湘桥区','潮安县','饶平县']},
|
||||
{name:'揭阳市', areaList:['市辖区','榕城区','揭东县','揭西县','惠来县','普宁市']},
|
||||
{name:'云浮市', areaList:['市辖区','云城区','新兴县','郁南县','云安县','罗定市']}
|
||||
]},
|
||||
{name:'广西', cityList:[
|
||||
{name:'南宁市', areaList:['市辖区','兴宁区','青秀区','江南区','西乡塘区','良庆区','邕宁区','武鸣县','隆安县','马山县','上林县','宾阳县','横 县']},
|
||||
{name:'柳州市', areaList:['市辖区','城中区','鱼峰区','柳南区','柳北区','柳江县','柳城县','鹿寨县','融安县','融水苗族自治县','三江侗族自治县']},
|
||||
{name:'桂林市', areaList:['市辖区','秀峰区','叠彩区','象山区','七星区','雁山区','阳朔县','临桂县','灵川县','全州县','兴安县','永福县','灌阳县','龙胜各族自治县','资源县','平乐县','荔蒲县','恭城瑶族自治县']},
|
||||
{name:'梧州市', areaList:['市辖区','万秀区','蝶山区','长洲区','苍梧县','藤 县','蒙山县','岑溪市']},
|
||||
{name:'北海市', areaList:['市辖区','海城区','银海区','铁山港区','合浦县']},
|
||||
{name:'防城港市', areaList:['市辖区','港口区','防城区','上思县','东兴市']},
|
||||
{name:'钦州市', areaList:['市辖区','钦南区','钦北区','灵山县','浦北县']},
|
||||
{name:'贵港市', areaList:['市辖区','港北区','港南区','覃塘区','平南县','桂平市']},
|
||||
{name:'玉林市', areaList:['市辖区','玉州区','容 县','陆川县','博白县','兴业县','北流市']},
|
||||
{name:'百色市', areaList:['市辖区','右江区','田阳县','田东县','平果县','德保县','靖西县','那坡县','凌云县','乐业县','田林县','西林县','隆林各族自治县']},
|
||||
{name:'贺州市', areaList:['市辖区','八步区','昭平县','钟山县','富川瑶族自治县']},
|
||||
{name:'河池市', areaList:['市辖区','金城江区','南丹县','天峨县','凤山县','东兰县','罗城仫佬族自治县','环江毛南族自治县','巴马瑶族自治县','都安瑶族自治县','大化瑶族自治县','宜州市']},
|
||||
{name:'来宾市', areaList:['市辖区','兴宾区','忻城县','象州县','武宣县','金秀瑶族自治县','合山市']},
|
||||
{name:'崇左市', areaList:['市辖区','江洲区','扶绥县','宁明县','龙州县','大新县','天等县','凭祥市']}
|
||||
]},
|
||||
{name:'陕西', cityList:[
|
||||
{name:'西安市', areaList:['市辖区','新城区','碑林区','莲湖区','灞桥区','未央区','雁塔区','阎良区','临潼区','长安区','蓝田县','周至县','户 县','高陵县']},
|
||||
{name:'铜川市', areaList:['市辖区','王益区','印台区','耀州区','宜君县']},
|
||||
{name:'宝鸡市', areaList:['市辖区','渭滨区','金台区','陈仓区','凤翔县','岐山县','扶风县','眉 县','陇 县','千阳县','麟游县','凤 县','太白县']},
|
||||
{name:'咸阳市', areaList:['市辖区','秦都区','杨凌区','渭城区','三原县','泾阳县','乾 县','礼泉县','永寿县','彬 县','长武县','旬邑县','淳化县','武功县','兴平市']},
|
||||
{name:'渭南市', areaList:['市辖区','临渭区','华 县','潼关县','大荔县','合阳县','澄城县','蒲城县','白水县','富平县','韩城市','华阴市']},
|
||||
{name:'延安市', areaList:['市辖区','宝塔区','延长县','延川县','子长县','安塞县','志丹县','吴旗县','甘泉县','富 县','洛川县','宜川县','黄龙县','黄陵县']},
|
||||
{name:'汉中市', areaList:['市辖区','汉台区','南郑县','城固县','洋 县','西乡县','勉 县','宁强县','略阳县','镇巴县','留坝县','佛坪县']},
|
||||
{name:'榆林市', areaList:['市辖区','榆阳区','神木县','府谷县','横山县','靖边县','定边县','绥德县','米脂县','佳 县','吴堡县','清涧县','子洲县']},
|
||||
{name:'安康市', areaList:['市辖区','汉滨区','汉阴县','石泉县','宁陕县','紫阳县','岚皋县','平利县','镇坪县','旬阳县','白河县']},
|
||||
{name:'商洛市', areaList:['市辖区','商州区','洛南县','丹凤县','商南县','山阳县','镇安县','柞水县']}
|
||||
]},
|
||||
{name:'甘肃', cityList:[
|
||||
{name:'兰州市', areaList:['市辖区','城关区','七里河区','西固区','安宁区','红古区','永登县','皋兰县','榆中县']},
|
||||
{name:'嘉峪关市', areaList:['市辖区']},
|
||||
{name:'金昌市', areaList:['市辖区','金川区','永昌县']},
|
||||
{name:'白银市', areaList:['市辖区','白银区','平川区','靖远县','会宁县','景泰县']},
|
||||
{name:'天水市', areaList:['市辖区','秦城区','北道区','清水县','秦安县','甘谷县','武山县','张家川回族自治县']},
|
||||
{name:'武威市', areaList:['市辖区','凉州区','民勤县','古浪县','天祝藏族自治县']},
|
||||
{name:'张掖市', areaList:['市辖区','甘州区','肃南裕固族自治县','民乐县','临泽县','高台县','山丹县']},
|
||||
{name:'平凉市', areaList:['市辖区','崆峒区','泾川县','灵台县','崇信县','华亭县','庄浪县','静宁县']},
|
||||
{name:'酒泉市', areaList:['市辖区','肃州区','金塔县','安西县','肃北蒙古族自治县','阿克塞哈萨克族自治县','玉门市','敦煌市']},
|
||||
{name:'庆阳市', areaList:['市辖区','西峰区','庆城县','环 县','华池县','合水县','正宁县','宁 县','镇原县']},
|
||||
{name:'定西市', areaList:['市辖区','安定区','通渭县','陇西县','渭源县','临洮县','漳 县','岷 县']},
|
||||
{name:'陇南市', areaList:['市辖区','武都区','成 县','文 县','宕昌县','康 县','西和县','礼 县','徽 县','两当县']},
|
||||
{name:'临夏回族自治州', areaList:['临夏市','临夏县','康乐县','永靖县','广河县','和政县','东乡族自治县','积石山保安族东乡族撒拉族自治县']},
|
||||
{name:'甘南藏族自治州', areaList:['合作市','临潭县','卓尼县','舟曲县','迭部县','玛曲县','碌曲县','夏河县']}
|
||||
]},
|
||||
{name:'青海', cityList:[
|
||||
{name:'西宁市', areaList:['市辖区','城东区','城中区','城西区','城北区','大通回族土族自治县','湟中县','湟源县']},
|
||||
{name:'海东地区', areaList:['平安县','民和回族土族自治县','乐都县','互助土族自治县','化隆回族自治县','循化撒拉族自治县']},
|
||||
{name:'海北藏族自治州', areaList:['门源回族自治县','祁连县','海晏县','刚察县']},
|
||||
{name:'黄南藏族自治州', areaList:['同仁县','尖扎县','泽库县','河南蒙古族自治县']},
|
||||
{name:'海南藏族自治州', areaList:['共和县','同德县','贵德县','兴海县','贵南县']},
|
||||
{name:'果洛藏族自治州', areaList:['玛沁县','班玛县','甘德县','达日县','久治县','玛多县']},
|
||||
{name:'玉树藏族自治州', areaList:['玉树县','杂多县','称多县','治多县','囊谦县','曲麻莱县']},
|
||||
{name:'海西蒙古族藏族自治州', areaList:['格尔木市','德令哈市','乌兰县','都兰县','天峻县']}
|
||||
]},
|
||||
{name:'宁夏', cityList:[
|
||||
{name:'银川市', areaList:['市辖区','兴庆区','西夏区','金凤区','永宁县','贺兰县','灵武市']},
|
||||
{name:'石嘴山市', areaList:['市辖区','大武口区','惠农区','平罗县']},
|
||||
{name:'吴忠市', areaList:['市辖区','利通区','盐池县','同心县','青铜峡市']},
|
||||
{name:'固原市', areaList:['市辖区','原州区','西吉县','隆德县','泾源县','彭阳县','海原县']},
|
||||
{name:'中卫市', areaList:['市辖区','沙坡头区','中宁县']}
|
||||
]},
|
||||
{name:'新疆', cityList:[
|
||||
{name:'乌鲁木齐市', areaList:['市辖区','天山区','沙依巴克区','新市区','水磨沟区','头屯河区','达坂城区','东山区','乌鲁木齐县']},
|
||||
{name:'克拉玛依市', areaList:['市辖区','独山子区','克拉玛依区','白碱滩区','乌尔禾区']},
|
||||
{name:'吐鲁番地区', areaList:['吐鲁番市','鄯善县','托克逊县']},
|
||||
{name:'哈密地区', areaList:['哈密市','巴里坤哈萨克自治县','伊吾县']},
|
||||
{name:'昌吉回族自治州', areaList:['昌吉市','阜康市','米泉市','呼图壁县','玛纳斯县','奇台县','吉木萨尔县','木垒哈萨克自治县']},
|
||||
{name:'博尔塔拉蒙古自治州', areaList:['博乐市','精河县','温泉县']},
|
||||
{name:'巴音郭楞蒙古自治州', areaList:['库尔勒市','轮台县','尉犁县','若羌县','且末县','焉耆回族自治县','和静县','和硕县','博湖县']},
|
||||
{name:'阿克苏地区', areaList:['阿克苏市','温宿县','库车县','沙雅县','新和县','拜城县','乌什县','阿瓦提县','柯坪县']},
|
||||
{name:'克孜勒苏柯尔克孜自治州', areaList:['阿图什市','阿克陶县','阿合奇县','乌恰县']},
|
||||
{name:'喀什地区', areaList:['喀什市','疏附县','疏勒县','英吉沙县','泽普县','莎车县','叶城县','麦盖提县','岳普湖县','伽师县','巴楚县','塔什库尔干塔吉克自治县']},
|
||||
{name:'和田地区', areaList:['和田市','和田县','墨玉县','皮山县','洛浦县','策勒县','于田县','民丰县']},
|
||||
{name:'伊犁哈萨克自治州', areaList:['伊宁市','奎屯市','伊宁县','察布查尔锡伯自治县','霍城县','巩留县','新源县','昭苏县','特克斯县','尼勒克县']},
|
||||
{name:'塔城地区', areaList:['塔城市','乌苏市','额敏县','沙湾县','托里县','裕民县','和布克赛尔蒙古自治县']},
|
||||
{name:'阿勒泰地区', areaList:['阿勒泰市','布尔津县','富蕴县','福海县','哈巴河县','青河县','吉木乃县']},
|
||||
{name:'省直辖行政单位', areaList:['石河子市','阿拉尔市','图木舒克市','五家渠市']}
|
||||
]},
|
||||
{name:'河北', cityList:[
|
||||
{name:'石家庄市', areaList:['市辖区','长安区','桥东区','桥西区','新华区','井陉矿区','裕华区','井陉县','正定县','栾城县','行唐县','灵寿县','高邑县','深泽县','赞皇县','无极县','平山县','元氏县','赵 县','辛集市','藁城市','晋州市','新乐市','鹿泉市']},
|
||||
{name:'唐山市', areaList:['市辖区','路南区','路北区','古冶区','开平区','丰南区','丰润区','滦 县','滦南县','乐亭县','迁西县','玉田县','唐海县','遵化市','迁安市']},
|
||||
{name:'秦皇岛市', areaList:['市辖区','海港区','山海关区','北戴河区','青龙满族自治县','昌黎县','抚宁县','卢龙县']},
|
||||
{name:'邯郸市', areaList:['市辖区','邯山区','丛台区','复兴区','峰峰矿区','邯郸县','临漳县','成安县','大名县','涉 县','磁 县','肥乡县','永年县','邱 县','鸡泽县','广平县','馆陶县','魏 县','曲周县','武安市']},
|
||||
{name:'邢台市', areaList:['市辖区','桥东区','桥西区','邢台县','临城县','内丘县','柏乡县','隆尧县','任 县','南和县','宁晋县','巨鹿县','新河县','广宗县','平乡县','威 县','清河县','临西县','南宫市','沙河市']},
|
||||
{name:'保定市', areaList:['市辖区','新市区','北市区','南市区','满城县','清苑县','涞水县','阜平县','徐水县','定兴县','唐 县','高阳县','容城县','涞源县','望都县','安新县','易 县','曲阳县','蠡 县','顺平县','博野县','雄 县','涿州市','定州市','安国市','高碑店市']},
|
||||
{name:'张家口市', areaList:['市辖区','桥东区','桥西区','宣化区','下花园区','宣化县','张北县','康保县','沽源县','尚义县','蔚 县','阳原县','怀安县','万全县','怀来县','涿鹿县','赤城县','崇礼县']},
|
||||
{name:'承德市', areaList:['市辖区','双桥区','双滦区','鹰手营子矿区','承德县','兴隆县','平泉县','滦平县','隆化县','丰宁满族自治县','宽城满族自治县','围场满族蒙古族自治县']},
|
||||
{name:'沧州市', areaList:['市辖区','新华区','运河区','沧 县','青 县','东光县','海兴县','盐山县','肃宁县','南皮县','吴桥县','献 县','孟村回族自治县','泊头市','任丘市','黄骅市','河间市']},
|
||||
{name:'廊坊市', areaList:['市辖区','安次区','广阳区','固安县','永清县','香河县','大城县','文安县','大厂回族自治县','霸州市','三河市']},
|
||||
{name:'衡水市', areaList:['市辖区','桃城区','枣强县','武邑县','武强县','饶阳县','安平县','故城县','景 县','阜城县','冀州市','深州市']}
|
||||
]},
|
||||
{name:'山西', cityList:[
|
||||
{name:'太原市', areaList:['市辖区','小店区','迎泽区','杏花岭区','尖草坪区','万柏林区','晋源区','清徐县','阳曲县','娄烦县','古交市']},
|
||||
{name:'大同市', areaList:['市辖区','城 区','矿 区','南郊区','新荣区','阳高县','天镇县','广灵县','灵丘县','浑源县','左云县','大同县']},
|
||||
{name:'阳泉市', areaList:['市辖区','城 区','矿 区','郊 区','平定县','盂 县']},
|
||||
{name:'长治市', areaList:['市辖区','城 区','郊 区','长治县','襄垣县','屯留县','平顺县','黎城县','壶关县','长子县','武乡县','沁 县','沁源县','潞城市']},
|
||||
{name:'晋城市', areaList:['市辖区','城 区','沁水县','阳城县','陵川县','泽州县','高平市']},
|
||||
{name:'朔州市', areaList:['市辖区','朔城区','平鲁区','山阴县','应 县','右玉县','怀仁县']},
|
||||
{name:'晋中市', areaList:['市辖区','榆次区','榆社县','左权县','和顺县','昔阳县','寿阳县','太谷县','祁 县','平遥县','灵石县','介休市']},
|
||||
{name:'运城市', areaList:['市辖区','盐湖区','临猗县','万荣县','闻喜县','稷山县','新绛县','绛 县','垣曲县','夏 县','平陆县','芮城县','永济市','河津市']},
|
||||
{name:'忻州市', areaList:['市辖区','忻府区','定襄县','五台县','代 县','繁峙县','宁武县','静乐县','神池县','五寨县','岢岚县','河曲县','保德县','偏关县','原平市']},
|
||||
{name:'临汾市', areaList:['市辖区','尧都区','曲沃县','翼城县','襄汾县','洪洞县','古 县','安泽县','浮山县','吉 县','乡宁县','大宁县','隰 县','永和县','蒲 县','汾西县','侯马市','霍州市']},
|
||||
{name:'吕梁市', areaList:['市辖区','离石区','文水县','交城县','兴 县','临 县','柳林县','石楼县','岚 县','方山县','中阳县','交口县','孝义市','汾阳市']}
|
||||
]},
|
||||
{name:'内蒙古', cityList:[
|
||||
{name:'呼和浩特市', areaList:['市辖区','新城区','回民区','玉泉区','赛罕区','土默特左旗','托克托县','和林格尔县','清水河县','武川县']},
|
||||
{name:'包头市', areaList:['市辖区','东河区','昆都仑区','青山区','石拐区','白云矿区','九原区','土默特右旗','固阳县','达尔罕茂明安联合旗']},
|
||||
{name:'乌海市', areaList:['市辖区','海勃湾区','海南区','乌达区']},
|
||||
{name:'赤峰市', areaList:['市辖区','红山区','元宝山区','松山区','阿鲁科尔沁旗','巴林左旗','巴林右旗','林西县','克什克腾旗','翁牛特旗','喀喇沁旗','宁城县','敖汉旗']},
|
||||
{name:'通辽市', areaList:['市辖区','科尔沁区','科尔沁左翼中旗','科尔沁左翼后旗','开鲁县','库伦旗','奈曼旗','扎鲁特旗','霍林郭勒市']},
|
||||
{name:'鄂尔多斯市', areaList:['东胜区','达拉特旗','准格尔旗','鄂托克前旗','鄂托克旗','杭锦旗','乌审旗','伊金霍洛旗']},
|
||||
{name:'呼伦贝尔市', areaList:['市辖区','海拉尔区','阿荣旗','莫力达瓦达斡尔族自治旗','鄂伦春自治旗','鄂温克族自治旗','陈巴尔虎旗','新巴尔虎左旗','新巴尔虎右旗','满洲里市','牙克石市','扎兰屯市','额尔古纳市','根河市']},
|
||||
{name:'巴彦淖尔市', areaList:['市辖区','临河区','五原县','磴口县','乌拉特前旗','乌拉特中旗','乌拉特后旗','杭锦后旗']},
|
||||
{name:'乌兰察布市', areaList:['市辖区','集宁区','卓资县','化德县','商都县','兴和县','凉城县','察哈尔右翼前旗','察哈尔右翼中旗','察哈尔右翼后旗','四子王旗','丰镇市']},
|
||||
{name:'兴安盟', areaList:['乌兰浩特市','阿尔山市','科尔沁右翼前旗','科尔沁右翼中旗','扎赉特旗','突泉县']},
|
||||
{name:'锡林郭勒盟', areaList:['二连浩特市','锡林浩特市','阿巴嘎旗','苏尼特左旗','苏尼特右旗','东乌珠穆沁旗','西乌珠穆沁旗','太仆寺旗','镶黄旗','正镶白旗','正蓝旗','多伦县']},
|
||||
{name:'阿拉善盟', areaList:['阿拉善左旗','阿拉善右旗','额济纳旗']}
|
||||
]},
|
||||
{name:'江苏', cityList:[
|
||||
{name:'南京市', areaList:['市辖区','玄武区','白下区','秦淮区','建邺区','鼓楼区','下关区','浦口区','栖霞区','雨花台区','江宁区','六合区','溧水县','高淳县']},
|
||||
{name:'无锡市', areaList:['市辖区','崇安区','南长区','北塘区','锡山区','惠山区','滨湖区','江阴市','宜兴市']},
|
||||
{name:'徐州市', areaList:['市辖区','鼓楼区','云龙区','九里区','贾汪区','泉山区','丰 县','沛 县','铜山县','睢宁县','新沂市','邳州市']},
|
||||
{name:'常州市', areaList:['市辖区','天宁区','钟楼区','戚墅堰区','新北区','武进区','溧阳市','金坛市']},
|
||||
{name:'苏州市', areaList:['市辖区','沧浪区','平江区','金阊区','虎丘区','吴中区','相城区','常熟市','张家港市','昆山市','吴江市','太仓市']},
|
||||
{name:'南通市', areaList:['市辖区','崇川区','港闸区','海安县','如东县','启东市','如皋市','通州市','海门市']},
|
||||
{name:'连云港市', areaList:['市辖区','连云区','新浦区','海州区','赣榆县','东海县','灌云县','灌南县']},
|
||||
{name:'淮安市', areaList:['市辖区','清河区','楚州区','淮阴区','清浦区','涟水县','洪泽县','盱眙县','金湖县']},
|
||||
{name:'盐城市', areaList:['市辖区','亭湖区','盐都区','响水县','滨海县','阜宁县','射阳县','建湖县','东台市','大丰市']},
|
||||
{name:'扬州市', areaList:['市辖区','广陵区','邗江区','郊 区','宝应县','仪征市','高邮市','江都市']},
|
||||
{name:'镇江市', areaList:['市辖区','京口区','润州区','丹徒区','丹阳市','扬中市','句容市']},
|
||||
{name:'泰州市', areaList:['市辖区','海陵区','高港区','兴化市','靖江市','泰兴市','姜堰市']},
|
||||
{name:'宿迁市', areaList:['市辖区','宿城区','宿豫区','沭阳县','泗阳县','泗洪县']}
|
||||
]},
|
||||
{name:'浙江', cityList:[
|
||||
{name:'杭州市', areaList:['市辖区','上城区','下城区','江干区','拱墅区','西湖区','滨江区','萧山区','余杭区','桐庐县','淳安县','建德市','富阳市','临安市']},
|
||||
{name:'宁波市', areaList:['市辖区','海曙区','江东区','江北区','北仑区','镇海区','鄞州区','象山县','宁海县','余姚市','慈溪市','奉化市']},
|
||||
{name:'温州市', areaList:['市辖区','鹿城区','龙湾区','瓯海区','洞头县','永嘉县','平阳县','苍南县','文成县','泰顺县','瑞安市','乐清市']},
|
||||
{name:'嘉兴市', areaList:['市辖区','秀城区','秀洲区','嘉善县','海盐县','海宁市','平湖市','桐乡市']},
|
||||
{name:'湖州市', areaList:['市辖区','吴兴区','南浔区','德清县','长兴县','安吉县']},
|
||||
{name:'绍兴市', areaList:['市辖区','越城区','绍兴县','新昌县','诸暨市','上虞市','嵊州市']},
|
||||
{name:'金华市', areaList:['市辖区','婺城区','金东区','武义县','浦江县','磐安县','兰溪市','义乌市','东阳市','永康市']},
|
||||
{name:'衢州市', areaList:['市辖区','柯城区','衢江区','常山县','开化县','龙游县','江山市']},
|
||||
{name:'舟山市', areaList:['市辖区','定海区','普陀区','岱山县','嵊泗县']},
|
||||
{name:'台州市', areaList:['市辖区','椒江区','黄岩区','路桥区','玉环县','三门县','天台县','仙居县','温岭市','临海市']},
|
||||
{name:'丽水市', areaList:['市辖区','莲都区','青田县','缙云县','遂昌县','松阳县','云和县','庆元县','景宁畲族自治县','龙泉市']}
|
||||
]},
|
||||
{name:'安徽', cityList:[
|
||||
{name:'合肥市', areaList:['市辖区','瑶海区','庐阳区','蜀山区','包河区','长丰县','肥东县','肥西县']},
|
||||
{name:'芜湖市', areaList:['市辖区','镜湖区','马塘区','新芜区','鸠江区','芜湖县','繁昌县','南陵县']},
|
||||
{name:'蚌埠市', areaList:['市辖区','龙子湖区','蚌山区','禹会区','淮上区','怀远县','五河县','固镇县']},
|
||||
{name:'淮南市', areaList:['市辖区','大通区','田家庵区','谢家集区','八公山区','潘集区','凤台县']},
|
||||
{name:'马鞍山市', areaList:['市辖区','金家庄区','花山区','雨山区','当涂县']},
|
||||
{name:'淮北市', areaList:['市辖区','杜集区','相山区','烈山区','濉溪县']},
|
||||
{name:'铜陵市', areaList:['市辖区','铜官山区','狮子山区','郊 区','铜陵县']},
|
||||
{name:'安庆市', areaList:['市辖区','迎江区','大观区','郊 区','怀宁县','枞阳县','潜山县','太湖县','宿松县','望江县','岳西县','桐城市']},
|
||||
{name:'黄山市', areaList:['市辖区','屯溪区','黄山区','徽州区','歙 县','休宁县','黟 县','祁门县']},
|
||||
{name:'滁州市', areaList:['市辖区','琅琊区','南谯区','来安县','全椒县','定远县','凤阳县','天长市','明光市']},
|
||||
{name:'阜阳市', areaList:['市辖区','颍州区','颍东区','颍泉区','临泉县','太和县','阜南县','颍上县','界首市']},
|
||||
{name:'宿州市', areaList:['市辖区','墉桥区','砀山县','萧 县','灵璧县','泗 县']},
|
||||
{name:'巢湖市', areaList:['市辖区','居巢区','庐江县','无为县','含山县','和 县']},
|
||||
{name:'六安市', areaList:['市辖区','金安区','裕安区','寿 县','霍邱县','舒城县','金寨县','霍山县']},
|
||||
{name:'亳州市', areaList:['市辖区','谯城区','涡阳县','蒙城县','利辛县']},
|
||||
{name:'池州市', areaList:['市辖区','贵池区','东至县','石台县','青阳县']},
|
||||
{name:'宣城市', areaList:['市辖区','宣州区','郎溪县','广德县','泾 县','绩溪县','旌德县','宁国市']}
|
||||
]},
|
||||
{name:'福建', cityList:[
|
||||
{name:'福州市', areaList:['市辖区','鼓楼区','台江区','仓山区','马尾区','晋安区','闽侯县','连江县','罗源县','闽清县','永泰县','平潭县','福清市','长乐市']},
|
||||
{name:'厦门市', areaList:['市辖区','思明区','海沧区','湖里区','集美区','同安区','翔安区']},
|
||||
{name:'莆田市', areaList:['市辖区','城厢区','涵江区','荔城区','秀屿区','仙游县']},
|
||||
{name:'三明市', areaList:['市辖区','梅列区','三元区','明溪县','清流县','宁化县','大田县','尤溪县','沙 县','将乐县','泰宁县','建宁县','永安市']},
|
||||
{name:'泉州市', areaList:['市辖区','鲤城区','丰泽区','洛江区','泉港区','惠安县','安溪县','永春县','德化县','金门县','石狮市','晋江市','南安市']},
|
||||
{name:'漳州市', areaList:['市辖区','芗城区','龙文区','云霄县','漳浦县','诏安县','长泰县','东山县','南靖县','平和县','华安县','龙海市']},
|
||||
{name:'南平市', areaList:['市辖区','延平区','顺昌县','浦城县','光泽县','松溪县','政和县','邵武市','武夷山市','建瓯市','建阳市']},
|
||||
{name:'龙岩市', areaList:['市辖区','新罗区','长汀县','永定县','上杭县','武平县','连城县','漳平市']},
|
||||
{name:'宁德市', areaList:['市辖区','蕉城区','霞浦县','古田县','屏南县','寿宁县','周宁县','柘荣县','福安市','福鼎市']}
|
||||
]},
|
||||
{name:'江西', cityList:[
|
||||
{name:'南昌市', areaList:['市辖区','东湖区','西湖区','青云谱区','湾里区','青山湖区','南昌县','新建县','安义县','进贤县']},
|
||||
{name:'景德镇市', areaList:['市辖区','昌江区','珠山区','浮梁县','乐平市']},
|
||||
{name:'萍乡市', areaList:['市辖区','安源区','湘东区','莲花县','上栗县','芦溪县']},
|
||||
{name:'九江市', areaList:['市辖区','庐山区','浔阳区','九江县','武宁县','修水县','永修县','德安县','星子县','都昌县','湖口县','彭泽县','瑞昌市']},
|
||||
{name:'新余市', areaList:['市辖区','渝水区','分宜县']},
|
||||
{name:'鹰潭市', areaList:['市辖区','月湖区','余江县','贵溪市']},
|
||||
{name:'赣州市', areaList:['市辖区','章贡区','赣 县','信丰县','大余县','上犹县','崇义县','安远县','龙南县','定南县','全南县','宁都县','于都县','兴国县','会昌县','寻乌县','石城县','瑞金市','南康市']},
|
||||
{name:'吉安市', areaList:['市辖区','吉州区','青原区','吉安县','吉水县','峡江县','新干县','永丰县','泰和县','遂川县','万安县','安福县','永新县','井冈山市']},
|
||||
{name:'宜春市', areaList:['市辖区','袁州区','奉新县','万载县','上高县','宜丰县','靖安县','铜鼓县','丰城市','樟树市','高安市']},
|
||||
{name:'抚州市', areaList:['市辖区','临川区','南城县','黎川县','南丰县','崇仁县','乐安县','宜黄县','金溪县','资溪县','东乡县','广昌县']},
|
||||
{name:'上饶市', areaList:['市辖区','信州区','上饶县','广丰县','玉山县','铅山县','横峰县','弋阳县','余干县','鄱阳县','万年县','婺源县','德兴市']}
|
||||
]},
|
||||
{name:'山东', cityList:[
|
||||
{name:'济南市', areaList:['市辖区','历下区','市中区','槐荫区','天桥区','历城区','长清区','平阴县','济阳县','商河县','章丘市']},
|
||||
{name:'青岛市', areaList:['市辖区','市南区','市北区','四方区','黄岛区','崂山区','李沧区','城阳区','胶州市','即墨市','平度市','胶南市','莱西市']},
|
||||
{name:'淄博市', areaList:['市辖区','淄川区','张店区','博山区','临淄区','周村区','桓台县','高青县','沂源县']},
|
||||
{name:'枣庄市', areaList:['市辖区','市中区','薛城区','峄城区','台儿庄区','山亭区','滕州市']},
|
||||
{name:'东营市', areaList:['市辖区','东营区','河口区','垦利县','利津县','广饶县']},
|
||||
{name:'烟台市', areaList:['市辖区','芝罘区','福山区','牟平区','莱山区','长岛县','龙口市','莱阳市','莱州市','蓬莱市','招远市','栖霞市','海阳市']},
|
||||
{name:'潍坊市', areaList:['市辖区','潍城区','寒亭区','坊子区','奎文区','临朐县','昌乐县','青州市','诸城市','寿光市','安丘市','高密市','昌邑市']},
|
||||
{name:'济宁市', areaList:['市辖区','市中区','任城区','微山县','鱼台县','金乡县','嘉祥县','汶上县','泗水县','梁山县','曲阜市','兖州市','邹城市']},
|
||||
{name:'泰安市', areaList:['市辖区','泰山区','岱岳区','宁阳县','东平县','新泰市','肥城市']},
|
||||
{name:'威海市', areaList:['市辖区','环翠区','文登市','荣成市','乳山市']},
|
||||
{name:'日照市', areaList:['市辖区','东港区','岚山区','五莲县','莒 县']},
|
||||
{name:'莱芜市', areaList:['市辖区','莱城区','钢城区']},
|
||||
{name:'临沂市', areaList:['市辖区','兰山区','罗庄区','河东区','沂南县','郯城县','沂水县','苍山县','费 县','平邑县','莒南县','蒙阴县','临沭县']},
|
||||
{name:'德州市', areaList:['市辖区','德城区','陵 县','宁津县','庆云县','临邑县','齐河县','平原县','夏津县','武城县','乐陵市','禹城市']},
|
||||
{name:'聊城市', areaList:['市辖区','东昌府区','阳谷县','莘 县','茌平县','东阿县','冠 县','高唐县','临清市']},
|
||||
{name:'滨州市', areaList:['市辖区','滨城区','惠民县','阳信县','无棣县','沾化县','博兴县','邹平县']},
|
||||
{name:'荷泽市', areaList:['市辖区','牡丹区','曹 县','单 县','成武县','巨野县','郓城县','鄄城县','定陶县','东明县']}
|
||||
]},
|
||||
{name:'辽宁', cityList:[
|
||||
{name:'沈阳市', areaList:['市辖区','和平区','沈河区','大东区','皇姑区','铁西区','苏家屯区','东陵区','新城子区','于洪区','辽中县','康平县','法库县','新民市']},
|
||||
{name:'大连市', areaList:['市辖区','中山区','西岗区','沙河口区','甘井子区','旅顺口区','金州区','长海县','瓦房店市','普兰店市','庄河市']},
|
||||
{name:'鞍山市', areaList:['市辖区','铁东区','铁西区','立山区','千山区','台安县','岫岩满族自治县','海城市']},
|
||||
{name:'抚顺市', areaList:['市辖区','新抚区','东洲区','望花区','顺城区','抚顺县','新宾满族自治县','清原满族自治县']},
|
||||
{name:'本溪市', areaList:['市辖区','平山区','溪湖区','明山区','南芬区','本溪满族自治县','桓仁满族自治县']},
|
||||
{name:'丹东市', areaList:['市辖区','元宝区','振兴区','振安区','宽甸满族自治县','东港市','凤城市']},
|
||||
{name:'锦州市', areaList:['市辖区','古塔区','凌河区','太和区','黑山县','义 县','凌海市','北宁市']},
|
||||
{name:'营口市', areaList:['市辖区','站前区','西市区','鲅鱼圈区','老边区','盖州市','大石桥市']},
|
||||
{name:'阜新市', areaList:['市辖区','海州区','新邱区','太平区','清河门区','细河区','阜新蒙古族自治县','彰武县']},
|
||||
{name:'辽阳市', areaList:['市辖区','白塔区','文圣区','宏伟区','弓长岭区','太子河区','辽阳县','灯塔市']},
|
||||
{name:'盘锦市', areaList:['市辖区','双台子区','兴隆台区','大洼县','盘山县']},
|
||||
{name:'铁岭市', areaList:['市辖区','银州区','清河区','铁岭县','西丰县','昌图县','调兵山市','开原市']},
|
||||
{name:'朝阳市', areaList:['市辖区','双塔区','龙城区','朝阳县','建平县','喀喇沁左翼蒙古族自治县','北票市','凌源市']},
|
||||
{name:'葫芦岛市', areaList:['市辖区','连山区','龙港区','南票区','绥中县','建昌县','兴城市']}
|
||||
]},
|
||||
{name:'吉林', cityList:[
|
||||
{name:'长春市', areaList:['市辖区','南关区','宽城区','朝阳区','二道区','绿园区','双阳区','农安县','九台市','榆树市','德惠市']},
|
||||
{name:'吉林市', areaList:['市辖区','昌邑区','龙潭区','船营区','丰满区','永吉县','蛟河市','桦甸市','舒兰市','磐石市']},
|
||||
{name:'四平市', areaList:['市辖区','铁西区','铁东区','梨树县','伊通满族自治县','公主岭市','双辽市']},
|
||||
{name:'辽源市', areaList:['市辖区','龙山区','西安区','东丰县','东辽县']},
|
||||
{name:'通化市', areaList:['市辖区','东昌区','二道江区','通化县','辉南县','柳河县','梅河口市','集安市']},
|
||||
{name:'白山市', areaList:['市辖区','八道江区','抚松县','靖宇县','长白朝鲜族自治县','江源县','临江市']},
|
||||
{name:'松原市', areaList:['市辖区','宁江区','前郭尔罗斯蒙古族自治县','长岭县','乾安县','扶余县']},
|
||||
{name:'白城市', areaList:['市辖区','洮北区','镇赉县','通榆县','洮南市','大安市']},
|
||||
{name:'延边朝鲜族自治州', areaList:['延吉市','图们市','敦化市','珲春市','龙井市','和龙市','汪清县','安图县']}
|
||||
]},
|
||||
{name:'黑龙江', cityList:[
|
||||
{name:'哈尔滨市', areaList:['市辖区','道里区','南岗区','道外区','香坊区','动力区','平房区','松北区','呼兰区','依兰县','方正县','宾 县','巴彦县','木兰县','通河县','延寿县','阿城市','双城市','尚志市','五常市']},
|
||||
{name:'齐齐哈尔市', areaList:['市辖区','龙沙区','建华区','铁锋区','昂昂溪区','富拉尔基区','碾子山区','梅里斯达斡尔族区','龙江县','依安县','泰来县','甘南县','富裕县','克山县','克东县','拜泉县','讷河市']},
|
||||
{name:'鸡西市', areaList:['市辖区','鸡冠区','恒山区','滴道区','梨树区','城子河区','麻山区','鸡东县','虎林市','密山市']},
|
||||
{name:'鹤岗市', areaList:['市辖区','向阳区','工农区','南山区','兴安区','东山区','兴山区','萝北县','绥滨县']},
|
||||
{name:'双鸭山市', areaList:['市辖区','尖山区','岭东区','四方台区','宝山区','集贤县','友谊县','宝清县','饶河县']},
|
||||
{name:'大庆市', areaList:['市辖区','萨尔图区','龙凤区','让胡路区','红岗区','大同区','肇州县','肇源县','林甸县','杜尔伯特蒙古族自治县']},
|
||||
{name:'伊春市', areaList:['市辖区','伊春区','南岔区','友好区','西林区','翠峦区','新青区','美溪区','金山屯区','五营区','乌马河区','汤旺河区','带岭区','乌伊岭区','红星区','上甘岭区','嘉荫县','铁力市']},
|
||||
{name:'佳木斯市', areaList:['市辖区','永红区','向阳区','前进区','东风区','郊 区','桦南县','桦川县','汤原县','抚远县','同江市','富锦市']},
|
||||
{name:'七台河市', areaList:['市辖区','新兴区','桃山区','茄子河区','勃利县']},
|
||||
{name:'牡丹江市', areaList:['市辖区','东安区','阳明区','爱民区','西安区','东宁县','林口县','绥芬河市','海林市','宁安市','穆棱市']},
|
||||
{name:'黑河市', areaList:['市辖区','爱辉区','嫩江县','逊克县','孙吴县','北安市','五大连池市']},
|
||||
{name:'绥化市', areaList:['市辖区','北林区','望奎县','兰西县','青冈县','庆安县','明水县','绥棱县','安达市','肇东市','海伦市']},
|
||||
{name:'大兴安岭地区', areaList:['呼玛县','塔河县','漠河县']}
|
||||
]},
|
||||
{name:'海南', cityList:[
|
||||
{name:'海口市', areaList:['市辖区','秀英区','龙华区','琼山区','美兰区']},
|
||||
{name:'三亚市', areaList:['市辖区']},
|
||||
{name:'省直辖县级行政单位', areaList:['五指山市','琼海市','儋州市','文昌市','万宁市','东方市','定安县','屯昌县','澄迈县','临高县','白沙黎族自治县','昌江黎族自治县','乐东黎族自治县','陵水黎族自治县','保亭黎族苗族自治县','琼中黎族苗族自治县','西沙群岛','南沙群岛','中沙群岛的岛礁及其海域']}
|
||||
]},
|
||||
{name:'台湾', cityList:[
|
||||
{name:'台湾', areaList:['台湾']}
|
||||
]},
|
||||
{name:'香港', cityList:[
|
||||
{name:'香港', areaList:['香港']}
|
||||
]},
|
||||
{name:'澳门', cityList:[
|
||||
{name:'澳门', areaList:['澳门']}
|
||||
]}
|
||||
];
|
@ -1,2 +0,0 @@
|
||||
/** layui-v2.4.5 MIT License By https://www.layui.com */
|
||||
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
|
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 274 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 2.9 KiB |