Commit 655ad2ed by xuzhenhao

初始化提交

0 parents
{
"host": "rm-2zeia588lj1117u37o.mysql.rds.aliyuncs.com:3306",
"username": "trump",
"password": "Trump123",
"database": "polysdk_dev"
}
\ No newline at end of file
package apis
import (
. "loginserver/models"
// "encoding/base64"
// "encoding/json"
// "github.com/tidwall/gjson"
"gopkg.in/gin-gonic/gin.v1"
// "io"
// "io/ioutil"
// "log"
"net/http"
// "net/url"
// "os"
// "reflect"
// "strconv"
// "strings"
// "time"
)
//登录接口
func UserLoginApi(c *gin.Context) {
loginType := c.Request.FormValue("login_type")
loginName := c.Request.FormValue("login_name")
loginPassword := c.Request.FormValue("login_password")
l := UserLoginInfo{
Type: loginType,
Name: loginName,
Password: loginPassword,
}
if loginType == "" || (loginType == "normal" && (loginName == "" || loginPassword == "")) {
log.Printf("%+v", l)
ReturnRespones(c, "104002", "参数错误")
return
}
result, err := l.UserLogin()
if err != nil {
ReturnRespones(c, result.(string), err.Error())
return
}
ReturnRespones(c, "0", result)
return
}
//注册接口
func UserRegisterApi(c *gin.Context) {
registerType := c.Request.FormValue("register_type")
registerName := c.Request.FormValue("register_name")
registerPassword := c.Request.FormValue("register_password")
r := UserRegisterInfo{
Type: registerType,
Name: registerName,
Password: registerPassword,
}
if registerType == "" || registerName == "" || registerPassword == "" {
log.Printf("%+v", r)
ReturnRespones(c, "104002", "参数错误")
return
}
result, err := r.UserRegister()
if err != nil {
log.Println(err)
ReturnRespones(c, result.(string), err.Error())
return
}
ReturnRespones(c, "0", result)
return
}
//校验用户名接口
func CheckUserNameRepeatApi(c *gin.Context) {
userName := c.Request.FormValue("user_name")
if userName == "" {
log.Println("用户名为空")
ReturnRespones(c, "104002", "参数错误")
return
}
result, err := CheckUserNameRepeat(userName)
if err != nil {
log.Println(err)
ReturnRespones(c, result.(string), err.Error())
return
}
ReturnRespones(c, "0", result)
return
}
//修改密码接口
func ChangeUserPasswordApi(c *gin.Context) {
userName := c.Request.FormValue("user_name")
userOriginPassword := c.Request.FormValue("user_origin_password")
userNewPassword := c.Request.FormValue("user_new_password")
if userName == "" || userOriginPassword == "" || userNewPassword == "" {
log.Println("userName:", userName, "userOriginPassword:", userOriginPassword, "userNewPassword:", userNewPassword)
ReturnRespones(c, "104002", "参数错误")
return
}
result, err := ChangeUserPassword(userName, userOriginPassword, userNewPassword)
if err != nil {
log.Println(err)
ReturnRespones(c, result.(string), err.Error())
return
}
ReturnRespones(c, "0", result)
return
}
//返回函数
func ReturnRespones(c *gin.Context, code string, result interface{}) {
c.JSON(http.StatusOK, gin.H{
"code": code,
"data": result,
})
return
}
package database
import (
"encoding/json"
_ "github.com/Go-SQL-Driver/MySQL"
"github.com/lunny/xorm"
"log"
"os"
)
var Engine *xorm.Engine
type confInfo struct {
Host string
Username string
Password string
Database string
}
func init() {
var err error
file, err := os.Open("./conf/conf.json")
if err != nil {
log.Println("配置文件打开错误!")
log.Fatal(err)
}
defer file.Close()
conf := confInfo{}
decoder := json.NewDecoder(file)
// str := `{"host":"rm-2zenjpu465r1ee1rd.mysql.rds.aliyuncs.com:3306","username":"icesimba_root","password":"Icesimba858680668866sdk121","database":"icesimbasdk_pro"}`
err = decoder.Decode(&conf)
if err != nil {
log.Println("配置文件解析错误!")
log.Fatal(err)
}
log.Printf("%+v", conf)
//测试数据库
// Engine, err = xorm.NewEngine("mysql", "trump:Trump123@(rm-2zenjpu465r1ee1rd.mysql.rds.aliyuncs.com:3306)/icesimbasdk_test?charset=utf8")
//正式数据库
Engine, err = xorm.NewEngine("mysql", conf.Username+`:`+conf.Password+`@(`+conf.Host+`)/`+conf.Database+`?charset=utf8`)
if err != nil {
log.Println("数据库连接错误")
log.Fatal(err)
}
if err = Engine.Ping(); err != nil {
log.Println("数据库连接失败")
log.Fatal(err)
}
}
package main
import (
_ "fmt"
db "loginserver/database"
_ "time"
)
func main() {
defer db.Engine.Close()
router := initRouter()
// httpsRouter := initHttpsRouter()
router.Run(":8401")
// httpsRouter.RunTLS(":443", "./yingyongbao.crt", "./yingyongbao.key")
}
package models
import (
"crypto/md5"
"encoding/hex"
"errors"
"log"
db "loginserver/database"
)
type UserLoginInfo struct {
Type string
Name string
Password string
}
type UserRegisterInfo struct {
Type string
Name string
Password string
}
func (u *UserLoginInfo) UserLogin() (result interface{}, err error) {
switch u.Type {
case "normal":
password, err := GetPasswordByUserName(u.Name)
if err != nil {
return password, err
}
if password != MD5(u.Password) {
err = errors.New("密码错误")
return "105004", err
}
break
default:
err = errors.New("不存在的登陆类型")
return "105000", err
}
log.Println(u.Name, " login success")
return nil, nil
}
func (u *UserRegisterInfo) UserRegister() (result interface{}, err error) {
switch u.Type {
case "account": //账号密码注册
res, err := CheckUserNameRepeat(u.Name)
if err != nil {
return res, err
}
errno, err := InsertUser(u.Name, u.Password)
if err != nil {
return errno, err
}
break
default:
err = errors.New("不存在的注册类型")
return "105001", err
break
}
log.Println(u.Name, " register success")
return nil, nil
}
//检查用户名是否重复
func CheckUserNameRepeat(userName string) (result interface{}, err error) {
sql := ` select user_password from icesimba_polysdk_user where user_name = ?`
r, err := db.Engine.Query(sql, userName)
if err != nil {
return "104001", err
}
if len(r) == 0 {
return false, nil
}
return true, nil
}
//获取用户密码
func GetPasswordByUserName(userName string) (result interface{}, err error) {
sql := ` select user_password from icesimba_polysdk_user where user_name = ?`
r, err := db.Engine.Query(sql, userName)
if err != nil {
return "104001", err
}
if len(r) == 0 {
err = errors.New("不存在的用户名")
return "105003", err
}
return string(r[0]["user_password"]), nil
}
//修改用户密码
func ChangeUserPassword(userName string, originPassword string, newPassword string) (result interface{}, err error) {
r, err := GetPasswordByUserName(userName)
if err != nil {
return r, err
}
if MD5(newPassword) == originPassword {
err = errors.New("新旧密码一致!无法修改")
return "105002", err
}
password := MD5(newPassword)
sql := ` update icesimba_polysdk_user set user_password = ? where user_name = ?`
err = db.Engine.Exec(sql, password, userName)
if err != nil {
return "104001", err
}
return
}
func MD5(str string) string {
w := md5.New()
w.Write([]byte(str))
has := w.Sum(nil)
str = hex.EncodeToString(has)
return str
}
package main
import (
_ "github.com/gin-gonic/autotls"
"gopkg.in/gin-gonic/gin.v1"
. "loginserver/apis"
"net/http"
// "log"
)
func initRouter() *gin.Engine {
router := gin.Default()
router.POST("user/login", UserLoginApi)
router.POST("user/register", UserRegisterApi)
router.POST("user/checkusername", CheckUserNameRepeatApi)
router.POST("user/changepassword", ChangeUserPasswordApi)
return router
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!