作者 唐旭辉

新增

/*.exe
/*.exe~
... ...
package models
import (
"errors"
"fmt"
"reflect"
"strings"
"time"
"github.com/astaxie/beego/orm"
... ... @@ -13,6 +16,9 @@ type User struct {
Phone string `orm:"column(phone);size(40)" description:"手机号码"`
Passwd string `orm:"column(passwd);size(128)" description:"密码"`
Icon string `orm:"column(icon);size(255)" description:"头像"`
CsAccount int64 `orm:"column(cs_account)" description:"客服有话说ID"`
IsKefu int8 `orm:"column(is_kefu)" description:"是否是客服 0:否 1:是"`
ImToken string `orm:"column(im_token);size(128)" description:"网易云token"`
LastLoginTime time.Time `orm:"column(last_login_time);type(timestamp)" description:"最后一次登录时间"`
CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now_add" description:"创建时间"`
EnableStatus int8 `orm:"column(enable_status)" description:"是否有效"`
... ... @@ -45,6 +51,84 @@ func GetUserById(id int) (v *User, err error) {
return nil, err
}
// GetAllUser retrieves all User matches certain condition. Returns empty list if
// no records exist
func GetAllUser(query map[string]string, fields []string, sortby []string, order []string,
offset int64, limit int64) (ml []interface{}, err error) {
o := orm.NewOrm()
qs := o.QueryTable(new(User))
// query k=v
for k, v := range query {
// rewrite dot-notation to Object__Attribute
k = strings.Replace(k, ".", "__", -1)
if strings.Contains(k, "isnull") {
qs = qs.Filter(k, (v == "true" || v == "1"))
} else {
qs = qs.Filter(k, v)
}
}
// order by:
var sortFields []string
if len(sortby) != 0 {
if len(sortby) == len(order) {
// 1) for each sort field, there is an associated order
for i, v := range sortby {
orderby := ""
if order[i] == "desc" {
orderby = "-" + v
} else if order[i] == "asc" {
orderby = v
} else {
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
}
sortFields = append(sortFields, orderby)
}
qs = qs.OrderBy(sortFields...)
} else if len(sortby) != len(order) && len(order) == 1 {
// 2) there is exactly one order, all the sorted fields will be sorted by this order
for _, v := range sortby {
orderby := ""
if order[0] == "desc" {
orderby = "-" + v
} else if order[0] == "asc" {
orderby = v
} else {
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
}
sortFields = append(sortFields, orderby)
}
} else if len(sortby) != len(order) && len(order) != 1 {
return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
}
} else {
if len(order) != 0 {
return nil, errors.New("Error: unused 'order' fields")
}
}
var l []User
qs = qs.OrderBy(sortFields...)
if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
if len(fields) == 0 {
for _, v := range l {
ml = append(ml, v)
}
} else {
// trim unused fields
for _, v := range l {
m := make(map[string]interface{})
val := reflect.ValueOf(v)
for _, fname := range fields {
m[fname] = val.FieldByName(fname).Interface()
}
ml = append(ml, m)
}
}
return ml, nil
}
return nil, err
}
// UpdateUser updates User by Id and returns error if
// the record to be updated doesn't exist
func UpdateUserById(m *User) (err error) {
... ...
package models
import (
"errors"
"fmt"
"reflect"
"strings"
"time"
"github.com/astaxie/beego/orm"
)
type UserAuth struct {
Id int `orm:"column(id);auto"`
UserId int64 `orm:"column(user_id)" description:"表user.id "`
RefreshToken string `orm:"column(refresh_token);size(64)" description:"refresh token "`
RefreshTokenExp time.Time `orm:"column(refresh_token_exp);type(timestamp)" description:"refresh token 过期时间"`
AccessToken string `orm:"column(access_token);size(64)" description:"access_token "`
AccessTokenExp time.Time `orm:"column(access_token_exp);type(timestamp)" description:"access token 过期时间"`
AuthCode string `orm:"column(auth_code);size(64)" description:"auth_code"`
AuthCodeExp time.Time `orm:"column(auth_code_exp);type(timestamp)" description:"auth_code过期时间"`
DeviceType int8 `orm:"column(device_type)" description:"设备类型 0:ios 1:安卓 2:web "`
ClientId string `orm:"column(client_id);size(100)" description:"设备识别码 推送标识"`
DeviceToken string `orm:"column(device_token);size(100)" description:"设备识别码 推送标识"`
CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"`
UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`
}
func (t *UserAuth) TableName() string {
return "user_auth"
}
func init() {
orm.RegisterModel(new(UserAuth))
}
// AddUserAuth insert a new UserAuth into database and returns
// last inserted Id on success.
func AddUserAuth(m *UserAuth) (id int64, err error) {
o := orm.NewOrm()
id, err = o.Insert(m)
return
}
// GetUserAuthById retrieves UserAuth by Id. Returns error if
// Id doesn't exist
func GetUserAuthById(id int) (v *UserAuth, err error) {
o := orm.NewOrm()
v = &UserAuth{Id: id}
if err = o.Read(v); err == nil {
return v, nil
}
return nil, err
}
// GetAllUserAuth retrieves all UserAuth matches certain condition. Returns empty list if
// no records exist
func GetAllUserAuth(query map[string]string, fields []string, sortby []string, order []string,
offset int64, limit int64) (ml []interface{}, err error) {
o := orm.NewOrm()
qs := o.QueryTable(new(UserAuth))
// query k=v
for k, v := range query {
// rewrite dot-notation to Object__Attribute
k = strings.Replace(k, ".", "__", -1)
if strings.Contains(k, "isnull") {
qs = qs.Filter(k, (v == "true" || v == "1"))
} else {
qs = qs.Filter(k, v)
}
}
// order by:
var sortFields []string
if len(sortby) != 0 {
if len(sortby) == len(order) {
// 1) for each sort field, there is an associated order
for i, v := range sortby {
orderby := ""
if order[i] == "desc" {
orderby = "-" + v
} else if order[i] == "asc" {
orderby = v
} else {
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
}
sortFields = append(sortFields, orderby)
}
qs = qs.OrderBy(sortFields...)
} else if len(sortby) != len(order) && len(order) == 1 {
// 2) there is exactly one order, all the sorted fields will be sorted by this order
for _, v := range sortby {
orderby := ""
if order[0] == "desc" {
orderby = "-" + v
} else if order[0] == "asc" {
orderby = v
} else {
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
}
sortFields = append(sortFields, orderby)
}
} else if len(sortby) != len(order) && len(order) != 1 {
return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
}
} else {
if len(order) != 0 {
return nil, errors.New("Error: unused 'order' fields")
}
}
var l []UserAuth
qs = qs.OrderBy(sortFields...)
if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
if len(fields) == 0 {
for _, v := range l {
ml = append(ml, v)
}
} else {
// trim unused fields
for _, v := range l {
m := make(map[string]interface{})
val := reflect.ValueOf(v)
for _, fname := range fields {
m[fname] = val.FieldByName(fname).Interface()
}
ml = append(ml, m)
}
}
return ml, nil
}
return nil, err
}
// UpdateUserAuth updates UserAuth by Id and returns error if
// the record to be updated doesn't exist
func UpdateUserAuthById(m *UserAuth) (err error) {
o := orm.NewOrm()
v := UserAuth{Id: m.Id}
// ascertain id exists in the database
if err = o.Read(&v); err == nil {
var num int64
if num, err = o.Update(m); err == nil {
fmt.Println("Number of records updated in database:", num)
}
}
return
}
// DeleteUserAuth deletes UserAuth by Id and returns error if
// the record to be deleted doesn't exist
func DeleteUserAuth(id int) (err error) {
o := orm.NewOrm()
v := UserAuth{Id: id}
// ascertain id exists in the database
if err = o.Read(&v); err == nil {
var num int64
if num, err = o.Delete(&UserAuth{Id: id}); err == nil {
fmt.Println("Number of records deleted in database:", num)
}
}
return
}
... ...
package protocol
//指定的请求头字段
const (
HeaderAccessToken string = "x-mmm-accesstoken"
HeaderRefreshToken string = "x-mmm-refreshtoken"
... ... @@ -23,3 +24,21 @@ type BaseHeader struct {
Timestamp int
UID int
}
//RequestLogin 登录请求
type RequestLogin struct {
Account string `json:"account"`
Password string `json:"password"`
}
//ResponseLogin 登录响应
type ResponseLogin struct {
}
//RequestSwapCompany 切换公司
type RequestSwapCompany struct {
}
// ResponseSwapCompany ...
type ResponseSwapCompany struct {
}
... ...
... ... @@ -11,6 +11,7 @@ type RequestRoleAdd struct {
// return nil
// }
//RequestRoleDelete 删除一个角色数据
type RequestRoleDelete struct {
CompanyID int `json:"company_id"`
RoleID int `json:"role_id"`
... ... @@ -24,6 +25,26 @@ type RequestRoleEdit struct {
Descript string `json:"descript"`
}
//RequestRoleOne 获取一个角色数据
type RequestRoleOne struct {
CompanyID int `json:"company_id"`
RoleID int `json:"role_id`
}
//ResponseRoleInfo 响应数据
type ResponseRoleInfo struct {
RoleID int `json:"role_id"`
RoleName string `json:"role_name"`
Descript string `json:"descript"`
}
//RequestRoleList 分页获取角色列表
type RequestRoleList struct {
PageIndex int `json:"page_index"`
PageSize int `json:"page_size"`
keyword string `json:"keyword"` // 搜索关键字
}
type RequestRolePermission struct {
CompanyID int `json:"company_id"`
RoleID int `json:"role_id"`
... ...
... ... @@ -71,10 +71,19 @@ func RoleEdit(param protocol.RequestRoleEdit) error {
return nil
}
func RoleGetOne() error {
func RoleGetOne(param protocol.RequestRoleOne) error {
return nil
}
func RoleGetByPage(param protocol.RequestRoleList) error {
return nil
}
func RoleHasPermission() error {
return nil
}
func RoleGetByPage() error {
func PermissionHasRole() error {
return nil
}
... ...
package serveauth
import (
"crypto/sha1"
"fmt"
"io"
"oppmg/common/config"
"oppmg/common/log"
"oppmg/protocol"
"strings"
)
//GetAccessToken 获取accessToken
func GetAccessToken(param protocol.RequestCheckSmsCode) (*protocol.DataUserInfo, error) {
data := &protocol.DataUserInfo{}
err := protocol.NewErrWithMessage("00000")
... ... @@ -13,3 +18,26 @@ func GetAccessToken(param protocol.RequestCheckSmsCode) (*protocol.DataUserInfo,
log.Info("%+v", config.MConfig)
return data, err
}
//ValidatePassword ...
//from:待校验的密码;to:比对用的密文
func ValidatePassword(from, to string) bool {
//密码加密方式sha1
h := sha1.New()
io.WriteString(h, from)
str := fmt.Sprintf("%x", h.Sum(nil))
if strings.Compare(str, to) == 0 {
return true
}
return false
}
//LoginAuth 登录认证
func LoginAuth(account, password string) error {
return nil
}
//RefreshAccessToken 刷新token
func RefreshAccessToken(account string, token string) error {
return nil
}
... ...