格式化项目代码

pull/23/head
taoshihan1991 5 years ago
parent 2596e46821
commit 1581b69627

@ -18,6 +18,7 @@ var installCmd = &cobra.Command{
install() install()
}, },
} }
func install() { func install() {
sqlFile := config.Dir + "go-fly.sql" sqlFile := config.Dir + "go-fly.sql"
isExit, _ := tools.IsFileExist(config.MysqlConf) isExit, _ := tools.IsFileExist(config.MysqlConf)

@ -1,10 +1,12 @@
package cmd package cmd
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"os" "os"
) )
var rootCmd = &cobra.Command{ var rootCmd = &cobra.Command{
Use: "go-fly", Use: "go-fly",
Short: "go-fly", Short: "go-fly",
@ -14,6 +16,7 @@ var rootCmd = &cobra.Command{
}, },
} }
func args(cmd *cobra.Command, args []string) error { func args(cmd *cobra.Command, args []string) error {
if len(args) < 1 { if len(args) < 1 {

@ -13,6 +13,7 @@ import (
"os/exec" "os/exec"
"path/filepath" "path/filepath"
) )
var ( var (
port string port string
tcpport string tcpport string
@ -27,6 +28,7 @@ var serverCmd = &cobra.Command{
run() run()
}, },
} }
func init() { func init() {
serverCmd.PersistentFlags().StringVarP(&port, "port", "p", "8081", "监听端口号") serverCmd.PersistentFlags().StringVarP(&port, "port", "p", "8081", "监听端口号")
serverCmd.PersistentFlags().StringVarP(&tcpport, "tcpport", "t", "8082", "监听tcp端口号") serverCmd.PersistentFlags().StringVarP(&tcpport, "tcpport", "t", "8082", "监听tcp端口号")

@ -7,12 +7,14 @@ import (
"io/ioutil" "io/ioutil"
"os" "os"
) )
var ( var (
PageSize uint = 10 PageSize uint = 10
VisitorPageSize uint = 8 VisitorPageSize uint = 8
Version = "0.1.2" Version = "0.1.2"
GoflyConfig *Config GoflyConfig *Config
) )
const Dir = "config/" const Dir = "config/"
const AccountConf = Dir + "account.json" const AccountConf = Dir + "account.json"
const MysqlConf = Dir + "mysql.json" const MysqlConf = Dir + "mysql.json"
@ -21,10 +23,12 @@ const LangConf=Dir+"language.json"
const MainConf = Dir + "config.json" const MainConf = Dir + "config.json"
const WeixinToken = "" const WeixinToken = ""
const ServerJiang = "" const ServerJiang = ""
func init() { func init() {
//配置文件 //配置文件
GoflyConfig = CreateConfig() GoflyConfig = CreateConfig()
} }
type Mysql struct { type Mysql struct {
Server string Server string
Port string Port string
@ -39,6 +43,7 @@ type Config struct {
Upload string Upload string
NoticeServerJiang bool NoticeServerJiang bool
} }
func CreateConfig() *Config { func CreateConfig() *Config {
var configObj Config var configObj Config
c := &Config{ c := &Config{

@ -39,5 +39,3 @@ func CreateLanguage(lang string)*Language{
} }
return language return language
} }

@ -9,6 +9,7 @@ import (
"sort" "sort"
"time" "time"
) )
type vistor struct { type vistor struct {
conn *websocket.Conn conn *websocket.Conn
name string name string
@ -22,6 +23,7 @@ type Message struct{
content []byte content []byte
messageType int messageType int
} }
var clientList = make(map[string]*vistor) var clientList = make(map[string]*vistor)
var kefuList = make(map[string][]*websocket.Conn) var kefuList = make(map[string][]*websocket.Conn)
var message = make(chan *Message) var message = make(chan *Message)
@ -43,6 +45,7 @@ type ClientMessage struct {
ClientIp string `json:"client_ip"` ClientIp string `json:"client_ip"`
Refer string `json:"refer"` Refer string `json:"refer"`
} }
//定时检测客户端是否在线 //定时检测客户端是否在线
func init() { func init() {
upgrader = websocket.Upgrader{ upgrader = websocket.Upgrader{
@ -119,6 +122,7 @@ func SendKefuOnline(clientMsg ClientMessage, conn *websocket.Conn) {
jsonStrByte, _ := json.Marshal(sendMsg) jsonStrByte, _ := json.Marshal(sendMsg)
conn.WriteMessage(websocket.TextMessage, jsonStrByte) conn.WriteMessage(websocket.TextMessage, jsonStrByte)
} }
//发送通知 //发送通知
func SendNotice(msg string, conn *websocket.Conn) { func SendNotice(msg string, conn *websocket.Conn) {
sendMsg := TypeMessage{ sendMsg := TypeMessage{
@ -148,7 +152,7 @@ func sendPingToClient() {
var newkfConns = make([]*websocket.Conn, 0) var newkfConns = make([]*websocket.Conn, 0)
for _, kefuConn := range kfConns { for _, kefuConn := range kfConns {
if(kefuConn==nil){ if kefuConn == nil {
continue continue
} }
err := kefuConn.WriteMessage(websocket.TextMessage, str) err := kefuConn.WriteMessage(websocket.TextMessage, str)
@ -167,6 +171,7 @@ func sendPingToClient() {
}() }()
} }
//定时给更新数据库状态 //定时给更新数据库状态
func sendPingUpdateStatus() { func sendPingUpdateStatus() {
for { for {
@ -180,6 +185,7 @@ func sendPingUpdateStatus() {
time.Sleep(20 * time.Second) time.Sleep(20 * time.Second)
} }
} }
//定时推送当前在线用户 //定时推送当前在线用户
func sendPingOnlineUsers() { func sendPingOnlineUsers() {
var visitorIds []string var visitorIds []string
@ -311,6 +317,3 @@ func singleBroadcaster(){
} }
} }

@ -13,6 +13,7 @@ import (
) )
const PageSize = 20 const PageSize = 20
func GetFolders(c *gin.Context) { func GetFolders(c *gin.Context) {
fid := c.Query("fid") fid := c.Query("fid")
currentPage, _ := strconv.Atoi(c.Query("page")) currentPage, _ := strconv.Atoi(c.Query("page"))
@ -69,6 +70,7 @@ func GetFolderList(c *gin.Context) {
"result": result, "result": result,
}) })
} }
//输出列表 //输出列表
func ActionFolder(w http.ResponseWriter, r *http.Request) { func ActionFolder(w http.ResponseWriter, r *http.Request) {
fid := tools.GetUrlArg(r, "fid") fid := tools.GetUrlArg(r, "fid")

@ -5,9 +5,11 @@ import (
"github.com/taoshihan1991/imaptool/tools" "github.com/taoshihan1991/imaptool/tools"
"net/http" "net/http"
) )
func Index(c *gin.Context) { func Index(c *gin.Context) {
c.Redirect(302, "/index") c.Redirect(302, "/index")
} }
//首页跳转 //首页跳转
func ActionIndex(w http.ResponseWriter, r *http.Request) { func ActionIndex(w http.ResponseWriter, r *http.Request) {
if r.URL.RequestURI() == "/favicon.ico" { if r.URL.RequestURI() == "/favicon.ico" {

@ -5,6 +5,7 @@ import (
"github.com/taoshihan1991/imaptool/tools" "github.com/taoshihan1991/imaptool/tools"
"time" "time"
) )
// @Summary 登陆验证接口 // @Summary 登陆验证接口
// @Produce json // @Produce json
// @Accept multipart/form-data // @Accept multipart/form-data

@ -13,6 +13,7 @@ import (
"strings" "strings"
"time" "time"
) )
// @Summary 发送消息接口 // @Summary 发送消息接口
// @Produce json // @Produce json
// @Accept multipart/form-data // @Accept multipart/form-data

@ -8,6 +8,7 @@ import (
"github.com/taoshihan1991/imaptool/tools" "github.com/taoshihan1991/imaptool/tools"
"os" "os"
) )
func MysqlGetConf(c *gin.Context) { func MysqlGetConf(c *gin.Context) {
mysqlInfo := config.GetMysql() mysqlInfo := config.GetMysql()
c.JSON(200, gin.H{ c.JSON(200, gin.H{

@ -11,6 +11,7 @@ import (
"net/http" "net/http"
"time" "time"
) )
func GetNotice(c *gin.Context) { func GetNotice(c *gin.Context) {
kefuId := c.Query("kefu_id") kefuId := c.Query("kefu_id")
welcomes := models.FindWelcomesByUserId(kefuId) welcomes := models.FindWelcomesByUserId(kefuId)
@ -61,6 +62,7 @@ func DelNotice(c *gin.Context) {
"result": "", "result": "",
}) })
} }
var upgrader = websocket.Upgrader{} var upgrader = websocket.Upgrader{}
var oldFolders map[string]int var oldFolders map[string]int

@ -1,4 +1,5 @@
package controller package controller
type Response struct { type Response struct {
Code int `json:"code"` Code int `json:"code"`
Msg string `json:"msg"` Msg string `json:"msg"`

@ -16,7 +16,7 @@ func SendServerJiang(content string)string{
return "" return ""
} }
sendStr := fmt.Sprintf("%s,访客来了", content) sendStr := fmt.Sprintf("%s,访客来了", content)
desp:="[登录](https://gofly.sopans.com/main)"; desp := "[登录](https://gofly.sopans.com/main)"
url := serverJiangAPI + "?text=" + sendStr + "&desp=" + desp url := serverJiangAPI + "?text=" + sendStr + "&desp=" + desp
//log.Println(url) //log.Println(url)
res := tools.Get(url) res := tools.Get(url)

@ -5,7 +5,9 @@ import (
"log" "log"
"net" "net"
) )
var clientTcpList = make(map[string]net.Conn) var clientTcpList = make(map[string]net.Conn)
func NewTcpServer(tcpBaseServer string) { func NewTcpServer(tcpBaseServer string) {
listener, err := net.Listen("tcp", tcpBaseServer) listener, err := net.Listen("tcp", tcpBaseServer)
if err != nil { if err != nil {

@ -12,6 +12,7 @@ import (
"math/rand" "math/rand"
"strconv" "strconv"
) )
func PostVisitor(c *gin.Context) { func PostVisitor(c *gin.Context) {
name := c.PostForm("name") name := c.PostForm("name")
avator := c.PostForm("avator") avator := c.PostForm("avator")
@ -112,6 +113,7 @@ func GetVisitor(c *gin.Context) {
"result": vistor, "result": vistor,
}) })
} }
// @Summary 获取访客列表接口 // @Summary 获取访客列表接口
// @Produce json // @Produce json
// @Accept multipart/form-data // @Accept multipart/form-data
@ -135,6 +137,7 @@ func GetVisitors(c *gin.Context) {
}, },
}) })
} }
// @Summary 获取访客聊天信息接口 // @Summary 获取访客聊天信息接口
// @Produce json // @Produce json
// @Accept multipart/form-data // @Accept multipart/form-data

@ -6,10 +6,12 @@ import (
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
"github.com/taoshihan1991/imaptool/config" "github.com/taoshihan1991/imaptool/config"
) )
type Mysql struct { type Mysql struct {
SqlDB *sql.DB SqlDB *sql.DB
Dsn string Dsn string
} }
func NewMysql() *Mysql { func NewMysql() *Mysql {
mysql := config.CreateMysql() mysql := config.CreateMysql()
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", mysql.Username, mysql.Password, mysql.Server, mysql.Port, mysql.Database) dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", mysql.Username, mysql.Password, mysql.Server, mysql.Port, mysql.Database)

@ -6,6 +6,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"log" "log"
) )
func CasbinACL(c *gin.Context) { func CasbinACL(c *gin.Context) {
roleId, _ := c.Get("role_id") roleId, _ := c.Get("role_id")
sub := fmt.Sprintf("%s_%d", "role", int(roleId.(float64))) sub := fmt.Sprintf("%s_%d", "role", int(roleId.(float64)))

@ -5,6 +5,7 @@ import (
"github.com/taoshihan1991/imaptool/tools" "github.com/taoshihan1991/imaptool/tools"
"time" "time"
) )
func JwtPageMiddleware(c *gin.Context) { func JwtPageMiddleware(c *gin.Context) {
//暂时不处理 //暂时不处理
//token := c.Query("token") //token := c.Query("token")
@ -27,7 +28,7 @@ func JwtApiMiddleware(c *gin.Context){
} }
createTime := int64(userinfo["create_time"].(float64)) createTime := int64(userinfo["create_time"].(float64))
var expire int64 = 24 * 60 * 60 var expire int64 = 24 * 60 * 60
nowTime:=time.Now().Unix(); nowTime := time.Now().Unix()
if (nowTime - createTime) >= expire { if (nowTime - createTime) >= expire {
c.JSON(200, gin.H{ c.JSON(200, gin.H{
"code": 401, "code": 401,

@ -11,4 +11,3 @@ func SetLanguage(c *gin.Context){
} }
c.Set("lang", lang) c.Set("lang", lang)
} }

@ -47,4 +47,3 @@ func RbacAuth(c *gin.Context){
} }
} }
} }

@ -1,12 +1,14 @@
package models package models
var CustomConfigs []Config var CustomConfigs []Config
type Config struct { type Config struct {
ID uint `gorm:"primary_key" json:"id"` ID uint `gorm:"primary_key" json:"id"`
ConfName string `json:"conf_name"` ConfName string `json:"conf_name"`
ConfKey string `json:"conf_key"` ConfKey string `json:"conf_key"`
ConfValue string `json:"conf_value"` ConfValue string `json:"conf_value"`
} }
func UpdateConfig(key string, value string) { func UpdateConfig(key string, value string) {
c := &Config{ c := &Config{
ConfValue: value, ConfValue: value,

@ -8,6 +8,7 @@ type Ipblack struct{
KefuId string `json:"kefu_id"` KefuId string `json:"kefu_id"`
CreateAt time.Time `json:"create_at"` CreateAt time.Time `json:"create_at"`
} }
func CreateIpblack(ip string, kefuId string) uint { func CreateIpblack(ip string, kefuId string) uint {
black := &Ipblack{ black := &Ipblack{
IP: ip, IP: ip,
@ -38,6 +39,7 @@ func FindIps(query interface{},args []interface{},page uint,pagesize uint)[]Ipbl
} }
return ipblacks return ipblacks
} }
//查询条数 //查询条数
func CountIps(query interface{}, args []interface{}) uint { func CountIps(query interface{}, args []interface{}) uint {
var count uint var count uint

@ -1,4 +1,5 @@
package models package models
type Message struct { type Message struct {
Model Model
KefuId string `json:"kefu_id"` KefuId string `json:"kefu_id"`
@ -7,6 +8,7 @@ type Message struct {
MesType string `json:"mes_type"` MesType string `json:"mes_type"`
Status string `json:"status"` Status string `json:"status"`
} }
func CreateMessage(kefu_id string, visitor_id string, content string, mes_type string) { func CreateMessage(kefu_id string, visitor_id string, content string, mes_type string) {
v := &Message{ v := &Message{
KefuId: kefu_id, KefuId: kefu_id,
@ -22,6 +24,7 @@ func FindMessageByVisitorId(visitor_id string)[]Message{
DB.Where("visitor_id=?", visitor_id).Order("id asc").Find(&messages) DB.Where("visitor_id=?", visitor_id).Order("id asc").Find(&messages)
return messages return messages
} }
//修改消息状态 //修改消息状态
func ReadMessageByVisitorId(visitor_id string) { func ReadMessageByVisitorId(visitor_id string) {
message := &Message{ message := &Message{
@ -29,12 +32,14 @@ func ReadMessageByVisitorId(visitor_id string){
} }
DB.Model(&message).Where("visitor_id=?", visitor_id).Update(message) DB.Model(&message).Where("visitor_id=?", visitor_id).Update(message)
} }
//获取未读数 //获取未读数
func FindUnreadMessageNumByVisitorId(visitor_id string) uint { func FindUnreadMessageNumByVisitorId(visitor_id string) uint {
var count uint var count uint
DB.Where("visitor_id=? and status=?", visitor_id, "unread").Count(&count) DB.Where("visitor_id=? and status=?", visitor_id, "unread").Count(&count)
return count return count
} }
//查询条数 //查询条数
func CountMessage() uint { func CountMessage() uint {
var count uint var count uint

@ -6,13 +6,16 @@ import (
"github.com/taoshihan1991/imaptool/config" "github.com/taoshihan1991/imaptool/config"
"time" "time"
) )
var DB *gorm.DB var DB *gorm.DB
type Model struct { type Model struct {
ID uint `gorm:"primary_key" json:"id"` ID uint `gorm:"primary_key" json:"id"`
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"` UpdatedAt time.Time `json:"updated_at"`
DeletedAt *time.Time `sql:"index" json:"deleted_at"` DeletedAt *time.Time `sql:"index" json:"deleted_at"`
} }
func init() { func init() {
mysql := config.CreateMysql() mysql := config.CreateMysql()
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", mysql.Username, mysql.Password, mysql.Server, mysql.Port, mysql.Database) dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", mysql.Username, mysql.Password, mysql.Server, mysql.Port, mysql.Database)

@ -1,10 +1,12 @@
package models package models
type Role struct { type Role struct {
Id string `json:"role_id"` Id string `json:"role_id"`
Name string `json:"role_name"` Name string `json:"role_name"`
Method string `json:"method"` Method string `json:"method"`
Path string `json:"path"` Path string `json:"path"`
} }
func FindRoles() []Role { func FindRoles() []Role {
var roles []Role var roles []Role
DB.Order("id desc").Find(&roles) DB.Order("id desc").Find(&roles)

@ -9,6 +9,7 @@ type User_role struct{
UserId string `json:"user_id"` UserId string `json:"user_id"`
RoleId uint `json:"role_id"` RoleId uint `json:"role_id"`
} }
func FindRoleByUserId(userId interface{}) User_role { func FindRoleByUserId(userId interface{}) User_role {
var uRole User_role var uRole User_role
DB.Where("user_id = ?", userId).First(&uRole) DB.Where("user_id = ?", userId).First(&uRole)

@ -3,6 +3,7 @@ package models
import ( import (
_ "github.com/jinzhu/gorm/dialects/mysql" _ "github.com/jinzhu/gorm/dialects/mysql"
) )
type User struct { type User struct {
Model Model
Name string `json:"name"` Name string `json:"name"`
@ -12,6 +13,7 @@ type User struct {
RoleName string `json:"role_name" sql:"-"` RoleName string `json:"role_name" sql:"-"`
RoleId string `json:"role_id" sql:"-"` RoleId string `json:"role_id" sql:"-"`
} }
func CreateUser(name string, password string, avator string, nickname string) uint { func CreateUser(name string, password string, avator string, nickname string) uint {
user := &User{ user := &User{
Name: name, Name: name,

@ -12,6 +12,7 @@ type Visitor struct {
City string `json:"city"` City string `json:"city"`
ClientIp string `json:"client_ip"` ClientIp string `json:"client_ip"`
} }
func CreateVisitor(name string, avator string, sourceIp string, toId string, visitorId string, refer string, city string, clientIp string) { func CreateVisitor(name string, avator string, sourceIp string, toId string, visitorId string, refer string, city string, clientIp string) {
old := FindVisitorByVistorId(visitorId) old := FindVisitorByVistorId(visitorId)
if old.Name != "" { if old.Name != "" {
@ -61,8 +62,7 @@ func FindVisitorsOnline()[]Visitor{
return visitors return visitors
} }
func UpdateVisitorStatus(visitorId string, status uint) { func UpdateVisitorStatus(visitorId string, status uint) {
visitor:=Visitor{ visitor := Visitor{}
}
DB.Model(&visitor).Where("visitor_id = ?", visitorId).Update("status", status) DB.Model(&visitor).Where("visitor_id = ?", visitorId).Update("status", status)
} }
func UpdateVisitor(visitorId string, status uint, clientIp string, sourceIp string, refer string) { func UpdateVisitor(visitorId string, status uint, clientIp string, sourceIp string, refer string) {
@ -71,16 +71,17 @@ func UpdateVisitor(visitorId string,status uint,clientIp string,sourceIp string,
ClientIp: clientIp, ClientIp: clientIp,
SourceIp: sourceIp, SourceIp: sourceIp,
Refer: refer, Refer: refer,
} }
DB.Model(visitor).Where("visitor_id = ?", visitorId).Update(visitor) DB.Model(visitor).Where("visitor_id = ?", visitorId).Update(visitor)
} }
//查询条数 //查询条数
func CountVisitors() uint { func CountVisitors() uint {
var count uint var count uint
DB.Model(&Visitor{}).Count(&count) DB.Model(&Visitor{}).Count(&count)
return count return count
} }
//查询条数 //查询条数
func CountVisitorsByKefuId(kefuId string) uint { func CountVisitorsByKefuId(kefuId string) uint {
var count uint var count uint

@ -9,6 +9,7 @@ type Welcome struct {
IsDefault uint `json:"is_default"` IsDefault uint `json:"is_default"`
Ctime time.Time `json:"ctime"` Ctime time.Time `json:"ctime"`
} }
func CreateWelcome(userId string, content string) uint { func CreateWelcome(userId string, content string) uint {
if userId == "" || content == "" { if userId == "" || content == "" {
return 0 return 0

@ -41,6 +41,7 @@ func (obj *CommonHtml) Display(file string, data interface{}) {
t, _ := template.New(file).Parse(main) t, _ := template.New(file).Parse(main)
t.Execute(obj.Rw, data) t.Execute(obj.Rw, data)
} }
//首页 //首页
func PageIndex(c *gin.Context) { func PageIndex(c *gin.Context) {
lang := c.Query("lang") lang := c.Query("lang")

@ -9,6 +9,3 @@ import (
func PageLogin(c *gin.Context) { func PageLogin(c *gin.Context) {
c.HTML(http.StatusOK, "login.html", nil) c.HTML(http.StatusOK, "login.html", nil)
} }

@ -4,6 +4,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"net/http" "net/http"
) )
//设置界面 //设置界面
func PageSetting(c *gin.Context) { func PageSetting(c *gin.Context) {
c.HTML(http.StatusOK, "setting.html", gin.H{ c.HTML(http.StatusOK, "setting.html", gin.H{
@ -11,6 +12,7 @@ func PageSetting(c *gin.Context) {
"action": "setting", "action": "setting",
}) })
} }
//设置欢迎 //设置欢迎
func PageSettingWelcome(c *gin.Context) { func PageSettingWelcome(c *gin.Context) {
c.HTML(http.StatusOK, "setting_welcome.html", gin.H{ c.HTML(http.StatusOK, "setting_welcome.html", gin.H{
@ -18,6 +20,7 @@ func PageSettingWelcome(c *gin.Context) {
"action": "setting_welcome", "action": "setting_welcome",
}) })
} }
//设置mysql //设置mysql
func PageSettingMysql(c *gin.Context) { func PageSettingMysql(c *gin.Context) {
c.HTML(http.StatusOK, "setting_mysql.html", gin.H{ c.HTML(http.StatusOK, "setting_mysql.html", gin.H{
@ -25,6 +28,7 @@ func PageSettingMysql(c *gin.Context) {
"action": "setting_mysql", "action": "setting_mysql",
}) })
} }
//设置部署 //设置部署
func PageSettingDeploy(c *gin.Context) { func PageSettingDeploy(c *gin.Context) {
c.HTML(http.StatusOK, "setting_deploy.html", gin.H{ c.HTML(http.StatusOK, "setting_deploy.html", gin.H{
@ -32,10 +36,12 @@ func PageSettingDeploy(c *gin.Context) {
"action": "setting_deploy", "action": "setting_deploy",
}) })
} }
//前台js部署 //前台js部署
func PageWebJs(c *gin.Context) { func PageWebJs(c *gin.Context) {
c.HTML(http.StatusOK, "chat_web.js", nil) c.HTML(http.StatusOK, "chat_web.js", nil)
} }
//前台css部署 //前台css部署
func PageWebCss(c *gin.Context) { func PageWebCss(c *gin.Context) {
c.HTML(http.StatusOK, "chat_web.css", nil) c.HTML(http.StatusOK, "chat_web.css", nil)
@ -46,6 +52,7 @@ func PageKefuList(c *gin.Context) {
"action": "setting_kefu_list", "action": "setting_kefu_list",
}) })
} }
//角色列表 //角色列表
func PageRoleList(c *gin.Context) { func PageRoleList(c *gin.Context) {
c.HTML(http.StatusOK, "setting_role_list.html", gin.H{ c.HTML(http.StatusOK, "setting_role_list.html", gin.H{
@ -53,6 +60,7 @@ func PageRoleList(c *gin.Context) {
"action": "roles_list", "action": "roles_list",
}) })
} }
//角色列表 //角色列表
func PageIpblack(c *gin.Context) { func PageIpblack(c *gin.Context) {
c.HTML(http.StatusOK, "setting_ipblack.html", gin.H{ c.HTML(http.StatusOK, "setting_ipblack.html", gin.H{
@ -60,6 +68,7 @@ func PageIpblack(c *gin.Context) {
"action": "setting_ipblack", "action": "setting_ipblack",
}) })
} }
//配置项列表 //配置项列表
func PageConfig(c *gin.Context) { func PageConfig(c *gin.Context) {
c.HTML(http.StatusOK, "setting_config.html", gin.H{ c.HTML(http.StatusOK, "setting_config.html", gin.H{
@ -67,5 +76,3 @@ func PageConfig(c *gin.Context) {
"action": "setting_config", "action": "setting_config",
}) })
} }

@ -4,7 +4,7 @@ import (
"github.com/ipipdotnet/ipdb-go" "github.com/ipipdotnet/ipdb-go"
) )
func ParseIp(myip string)(*ipdb.CityInfo) { func ParseIp(myip string) *ipdb.CityInfo {
db, err := ipdb.NewCity("./config/city.free.ipdb") db, err := ipdb.NewCity("./config/city.free.ipdb")
if err != nil { if err != nil {
return nil return nil

@ -17,6 +17,7 @@ func partition(arr *[]int,left int,right int)int{
(*arr)[right] = temp (*arr)[right] = temp
return i + 1 return i + 1
} }
//递归 //递归
func QuickSort(arr *[]int, left int, right int) { func QuickSort(arr *[]int, left int, right int) {
if left >= right { if left >= right {
@ -26,6 +27,7 @@ func QuickSort(arr *[]int,left int,right int){
QuickSort(arr, left, privot-1) QuickSort(arr, left, privot-1)
QuickSort(arr, privot+1, right) QuickSort(arr, privot+1, right)
} }
//快速排序2 //快速排序2
//找到一个基准,左边是所有比它小的,右边是比它大的,分别递归左右 //找到一个基准,左边是所有比它小的,右边是比它大的,分别递归左右
func QuickSort2(arr *[]int, left int, right int) { func QuickSort2(arr *[]int, left int, right int) {
@ -52,6 +54,7 @@ func QuickSort2(arr *[]int,left int,right int){
QuickSort(arr, left, i-1) QuickSort(arr, left, i-1)
QuickSort(arr, i+1, right) QuickSort(arr, i+1, right)
} }
//冒泡排序 //冒泡排序
//比较相邻元素,较大的往右移 //比较相邻元素,较大的往右移
func BubbleSort(arr *[]int) { func BubbleSort(arr *[]int) {
@ -74,6 +77,7 @@ func BubbleSort(arr *[]int){
} }
} }
} }
//插入排序 //插入排序
//将未排序部分插入到已排序部分的适当位置 //将未排序部分插入到已排序部分的适当位置
func InsertionSort(arr *[]int) { func InsertionSort(arr *[]int) {
@ -90,6 +94,7 @@ func InsertionSort(arr *[]int){
(*arr)[j+1] = curKey (*arr)[j+1] = curKey
} }
} }
//选择排序 //选择排序
//选择一个最小值,再寻找比它还小的进行交换 //选择一个最小值,再寻找比它还小的进行交换
func SelectionSort(arr *[]int) { func SelectionSort(arr *[]int) {
@ -105,6 +110,7 @@ func SelectionSort(arr *[]int){
(*arr)[minIndex] = temp (*arr)[minIndex] = temp
} }
} }
//归并排序 //归并排序
//合久必分,分久必合,利用临时数组合并两个有序数组 //合久必分,分久必合,利用临时数组合并两个有序数组
func MergeSort(arr *[]int, left int, right int) { func MergeSort(arr *[]int, left int, right int) {

@ -1,7 +1,9 @@
package tools package tools
import ( import (
"github.com/satori/go.uuid" "github.com/satori/go.uuid"
) )
func Uuid() string { func Uuid() string {
u2 := uuid.NewV4() u2 := uuid.NewV4()
return u2.String() return u2.String()

Loading…
Cancel
Save