正在显示
15 个修改的文件
包含
445 行增加
和
92 行删除
CHANGELOG.md
0 → 100644
controllers/v1/user.go
0 → 100644
| 1 | +package v1 | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "encoding/json" | ||
| 5 | + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | ||
| 6 | + "opp/controllers" | ||
| 7 | + "opp/protocol" | ||
| 8 | + "opp/services/user" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +type UserController struct { | ||
| 12 | + controllers.BaseController | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | +//CheckSmsCode | ||
| 16 | +// @router /checkSmsCode [post] | ||
| 17 | +func (this *UserController) CheckSmsCode() { | ||
| 18 | + var msg *protocol.ResponseMessage | ||
| 19 | + defer func() { | ||
| 20 | + this.Resp(msg) | ||
| 21 | + }() | ||
| 22 | + var request *protocol.CheckSmsCodeRequest | ||
| 23 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
| 24 | + log.Error(err) | ||
| 25 | + msg = protocol.BadRequestParam(1) | ||
| 26 | + return | ||
| 27 | + } | ||
| 28 | + if b, m := this.Valid(request); !b { | ||
| 29 | + msg = m | ||
| 30 | + return | ||
| 31 | + } | ||
| 32 | + header := controllers.GetRequestHeader(this.Ctx) | ||
| 33 | + msg = protocol.NewReturnResponse(user.CheckSmsCode(header, request)) | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +//ChangePhone | ||
| 37 | +// @router /changePhone [post] | ||
| 38 | +func (this *UserController) ChangePhone() { | ||
| 39 | + var msg *protocol.ResponseMessage | ||
| 40 | + defer func() { | ||
| 41 | + this.Resp(msg) | ||
| 42 | + }() | ||
| 43 | + var request *protocol.ChangePhoneRequest | ||
| 44 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
| 45 | + log.Error(err) | ||
| 46 | + msg = protocol.BadRequestParam(1) | ||
| 47 | + return | ||
| 48 | + } | ||
| 49 | + if b, m := this.Valid(request); !b { | ||
| 50 | + msg = m | ||
| 51 | + return | ||
| 52 | + } | ||
| 53 | + header := controllers.GetRequestHeader(this.Ctx) | ||
| 54 | + msg = protocol.NewReturnResponse(user.ChangePhone(header, request)) | ||
| 55 | +} | ||
| 56 | + | ||
| 57 | +//ResetPassword | ||
| 58 | +// @router /resetPassword [post] | ||
| 59 | +func (this *UserController) ResetPassword() { | ||
| 60 | + var msg *protocol.ResponseMessage | ||
| 61 | + defer func() { | ||
| 62 | + this.Resp(msg) | ||
| 63 | + }() | ||
| 64 | + var request *protocol.ResetPasswordRequest | ||
| 65 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
| 66 | + log.Error(err) | ||
| 67 | + msg = protocol.BadRequestParam(1) | ||
| 68 | + return | ||
| 69 | + } | ||
| 70 | + if b, m := this.Valid(request); !b { | ||
| 71 | + msg = m | ||
| 72 | + return | ||
| 73 | + } | ||
| 74 | + header := controllers.GetRequestHeader(this.Ctx) | ||
| 75 | + msg = protocol.NewReturnResponse(user.ResetPassword(header, request)) | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +//ChangePassword | ||
| 79 | +// @router /changePassword [post] | ||
| 80 | +func (this *UserController) ChangePassword() { | ||
| 81 | + var msg *protocol.ResponseMessage | ||
| 82 | + defer func() { | ||
| 83 | + this.Resp(msg) | ||
| 84 | + }() | ||
| 85 | + var request *protocol.ChangePasswordRequest | ||
| 86 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
| 87 | + log.Error(err) | ||
| 88 | + msg = protocol.BadRequestParam(1) | ||
| 89 | + return | ||
| 90 | + } | ||
| 91 | + if b, m := this.Valid(request); !b { | ||
| 92 | + msg = m | ||
| 93 | + return | ||
| 94 | + } | ||
| 95 | + header := controllers.GetRequestHeader(this.Ctx) | ||
| 96 | + msg = protocol.NewReturnResponse(user.ChangePassword(header, request)) | ||
| 97 | +} |
internal/utils/sql.go
0 → 100644
| 1 | +package utils | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "errors" | ||
| 5 | + "fmt" | ||
| 6 | + "github.com/astaxie/beego" | ||
| 7 | + "github.com/astaxie/beego/orm" | ||
| 8 | + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | ||
| 9 | + "reflect" | ||
| 10 | +) | ||
| 11 | + | ||
| 12 | +// 更新指定表的几个列 | ||
| 13 | +func UpdateTableByMap(tabeleStruct interface{}, changeMap map[string]interface{}) error { | ||
| 14 | + if reflect.TypeOf(tabeleStruct).Kind() != reflect.Ptr { | ||
| 15 | + err := errors.New("UpdateTableByMap: tableStruct must ptr") | ||
| 16 | + beego.Error(err) | ||
| 17 | + return err | ||
| 18 | + } | ||
| 19 | + if len(changeMap) < 1 { | ||
| 20 | + beego.Info("changeMap is nil") | ||
| 21 | + return nil | ||
| 22 | + } | ||
| 23 | + o := orm.NewOrm() | ||
| 24 | + changeColumn := make([]string, 0, len(changeMap)) | ||
| 25 | + for i, v := range changeMap { | ||
| 26 | + changeColumn = append(changeColumn, i) | ||
| 27 | + if err := SetStructValueByType(tabeleStruct, i, v); err != nil { | ||
| 28 | + beego.Error(err, i, v) | ||
| 29 | + return err | ||
| 30 | + } | ||
| 31 | + } | ||
| 32 | + num, err := o.Update(tabeleStruct, changeColumn...) | ||
| 33 | + if err != nil { | ||
| 34 | + beego.Error(err) | ||
| 35 | + return err | ||
| 36 | + } | ||
| 37 | + log.Info(fmt.Sprintf("UpdateTableByMap: table:%s effect records:%d column:%v", GetTableName(tabeleStruct), num, changeColumn)) | ||
| 38 | + return nil | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +// 通过反射调用结构对应的TableName函数,达到返回表名的目的 | ||
| 42 | +func GetTableName(tableStruct interface{}) string { | ||
| 43 | + m := reflect.ValueOf(tableStruct).MethodByName("TableName") | ||
| 44 | + if m.IsValid() && m.Kind() == reflect.Func { | ||
| 45 | + re := m.Call(nil) | ||
| 46 | + for _, v := range re { | ||
| 47 | + if v.IsValid() { | ||
| 48 | + return v.String() | ||
| 49 | + } | ||
| 50 | + } | ||
| 51 | + } | ||
| 52 | + return "unknown" | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | +// 通用事物提交sql结构体 | ||
| 56 | +type SqlData struct { | ||
| 57 | + Sql string | ||
| 58 | + Param []interface{} | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +func ExecuteSqlByRoll(isCheck bool, sqlSlice ...*SqlData) bool { | ||
| 62 | + o := orm.NewOrm() | ||
| 63 | + var someError bool = false | ||
| 64 | + o.Begin() | ||
| 65 | + for i := range sqlSlice { | ||
| 66 | + if sqlSlice[i].Sql == "" { | ||
| 67 | + continue | ||
| 68 | + } | ||
| 69 | + log.Info("execute sql:", sqlSlice[i]) | ||
| 70 | + if ret, err := o.Raw(sqlSlice[i].Sql, sqlSlice[i].Param...).Exec(); err != nil { | ||
| 71 | + log.Error(err) | ||
| 72 | + someError = true | ||
| 73 | + } else { | ||
| 74 | + num, _ := ret.RowsAffected() | ||
| 75 | + log.Debug("num:", num) | ||
| 76 | + if isCheck && num < 1 { | ||
| 77 | + someError = true | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | + } | ||
| 81 | + if someError { | ||
| 82 | + log.Error("出错,回滚事物") | ||
| 83 | + o.Rollback() | ||
| 84 | + return false | ||
| 85 | + } else { | ||
| 86 | + log.Info("成功,提交事物") | ||
| 87 | + o.Commit() | ||
| 88 | + return true | ||
| 89 | + } | ||
| 90 | + return true | ||
| 91 | +} |
internal/utils/utils.go
0 → 100644
| 1 | +package utils | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "errors" | ||
| 5 | + "reflect" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +// 此函数将指定的结构体成员值更新到结构体中 | ||
| 9 | +func SetStructValueByType(s interface{}, columnType string, columnValue interface{}) error { | ||
| 10 | + columnValueV := reflect.ValueOf(columnValue) | ||
| 11 | + var setValue reflect.Value | ||
| 12 | + var flag = false | ||
| 13 | + v := reflect.ValueOf(s) | ||
| 14 | + for i, n := 0, v.Elem().NumField(); i < n; i++ { | ||
| 15 | + if v.Elem().Type().Field(i).Name == columnType { | ||
| 16 | + setValue = v.Elem().Field(i) | ||
| 17 | + flag = true | ||
| 18 | + break | ||
| 19 | + } | ||
| 20 | + } | ||
| 21 | + if !flag { | ||
| 22 | + return errors.New("struct is not type:") | ||
| 23 | + } else if !setValue.CanSet() { | ||
| 24 | + return errors.New("setValue.CanSet is false") | ||
| 25 | + } else if setValue.Kind() != columnValueV.Kind() { | ||
| 26 | + return errors.New("struct field and value of type is error") | ||
| 27 | + } | ||
| 28 | + switch columnValueV.Kind() { | ||
| 29 | + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int, reflect.Int64: | ||
| 30 | + setValue.SetInt(int64(columnValueV.Int())) | ||
| 31 | + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: | ||
| 32 | + setValue.SetUint(uint64(columnValueV.Uint())) | ||
| 33 | + case reflect.Float32, reflect.Float64: | ||
| 34 | + setValue.SetFloat(float64(columnValueV.Float())) | ||
| 35 | + case reflect.String: | ||
| 36 | + setValue.SetString(columnValueV.String()) | ||
| 37 | + default: | ||
| 38 | + return errors.New("columnValue err for:" + columnType) | ||
| 39 | + } | ||
| 40 | + return nil | ||
| 41 | +} |
| @@ -12,7 +12,6 @@ import ( | @@ -12,7 +12,6 @@ import ( | ||
| 12 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/websocket" | 12 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/websocket" |
| 13 | "opp/controllers" | 13 | "opp/controllers" |
| 14 | "opp/internal/utils" | 14 | "opp/internal/utils" |
| 15 | - "opp/protocol" | ||
| 16 | _ "opp/routers" | 15 | _ "opp/routers" |
| 17 | "opp/services/im" | 16 | "opp/services/im" |
| 18 | "time" | 17 | "time" |
| @@ -65,7 +64,6 @@ func main() { | @@ -65,7 +64,6 @@ func main() { | ||
| 65 | log.Info("app on stop!") | 64 | log.Info("app on stop!") |
| 66 | }() | 65 | }() |
| 67 | beego.InsertFilter("/*", beego.BeforeRouter, controllers.FilterComm) | 66 | beego.InsertFilter("/*", beego.BeforeRouter, controllers.FilterComm) |
| 68 | - protocol.InitMessageCode() | ||
| 69 | log.Info("app on start!") | 67 | log.Info("app on start!") |
| 70 | log.Info("Beego Run Mode:", beego.BConfig.RunMode) | 68 | log.Info("Beego Run Mode:", beego.BConfig.RunMode) |
| 71 | 69 |
| @@ -20,7 +20,7 @@ func (m ErrorMap) Search(code int) ErrorCode { | @@ -20,7 +20,7 @@ func (m ErrorMap) Search(code int) ErrorCode { | ||
| 20 | Errmsg: v, | 20 | Errmsg: v, |
| 21 | } | 21 | } |
| 22 | } | 22 | } |
| 23 | - return ErrorCode{} | 23 | + return ErrorCode{Errno: code, Errmsg: "错误码未定义"} |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | //ErrorCode 统一错误结构 | 26 | //ErrorCode 统一错误结构 |
| 1 | package protocol | 1 | package protocol |
| 2 | 2 | ||
| 3 | var errmessge ErrorMap = map[int]string{ | 3 | var errmessge ErrorMap = map[int]string{ |
| 4 | + 0: "", | ||
| 4 | 1: "系统异常", | 5 | 1: "系统异常", |
| 6 | + 2: "参数错误", | ||
| 5 | 101: "clientId或clientSecret无效", | 7 | 101: "clientId或clientSecret无效", |
| 6 | 113: "签名验证失败", | 8 | 113: "签名验证失败", |
| 7 | 1009: "验证码已超时,登录失败", | 9 | 1009: "验证码已超时,登录失败", |
| @@ -19,35 +21,3 @@ var errmessge ErrorMap = map[int]string{ | @@ -19,35 +21,3 @@ var errmessge ErrorMap = map[int]string{ | ||
| 19 | 4141: "accessToken过期或无效,需要进行重新获取令牌", | 21 | 4141: "accessToken过期或无效,需要进行重新获取令牌", |
| 20 | 4142: "Uuid已存在,请求失败", | 22 | 4142: "Uuid已存在,请求失败", |
| 21 | } | 23 | } |
| 22 | - | ||
| 23 | - | ||
| 24 | -func InitMessageCode() { | ||
| 25 | - // messages := []struct { | ||
| 26 | - // Code int | ||
| 27 | - // Msg string | ||
| 28 | - // }{ | ||
| 29 | - // {101, "clientId或clientSecret无效"}, | ||
| 30 | - // {113, "签名验证失败"}, | ||
| 31 | - // {1009, "验证码已超时,登录失败"}, | ||
| 32 | - // {1011, "短信验证码次数超过限制,请稍后重试"}, | ||
| 33 | - // {1012, "验证码错误"}, | ||
| 34 | - | ||
| 35 | - // {2001, "请输入正确的手机号码"}, | ||
| 36 | - // {2002, "后台未配置账号信息,请联系管理员配置"}, | ||
| 37 | - // {2009, "上传的文件流为空"}, | ||
| 38 | - // {2020, "帐号不存在,请联系管理员"}, | ||
| 39 | - // {2021, "登录失败,手机号或密码错误"}, | ||
| 40 | - // {2025, "短信验证码验证失败"}, | ||
| 41 | - // {2026, "两次输入的密码不一致"}, | ||
| 42 | - | ||
| 43 | - // {4139, "authCode无效或过期"}, | ||
| 44 | - // {4140, "refreshToken过期,需要重新登录授权"}, | ||
| 45 | - // {4141, "accessToken过期或无效,需要进行重新获取令牌"}, | ||
| 46 | - // {4142, "Uuid已存在,请求失败"}, | ||
| 47 | - // } | ||
| 48 | - // for i := range messages { | ||
| 49 | - // mybeego.SetMessage(messages[i].Code, messages[i].Msg) | ||
| 50 | - // } | ||
| 51 | - //// | ||
| 52 | - | ||
| 53 | -} |
| @@ -2,6 +2,7 @@ package protocol | @@ -2,6 +2,7 @@ package protocol | ||
| 2 | 2 | ||
| 3 | //短信类型 | 3 | //短信类型 |
| 4 | const ( | 4 | const ( |
| 5 | + SmsCode = "sms_code" | ||
| 5 | SmsLoginCode = "sms_login_code" | 6 | SmsLoginCode = "sms_login_code" |
| 6 | SmsChangeMobile = "sms_change_mobile" | 7 | SmsChangeMobile = "sms_change_mobile" |
| 7 | ) | 8 | ) |
| @@ -12,4 +13,5 @@ type SmsInfo struct { | @@ -12,4 +13,5 @@ type SmsInfo struct { | ||
| 12 | ErrorCount int `json:"error_count"` | 13 | ErrorCount int `json:"error_count"` |
| 13 | LastTime int64 `json:"last_time"` | 14 | LastTime int64 `json:"last_time"` |
| 14 | CreateTime int64 `json:"create_time"` | 15 | CreateTime int64 `json:"create_time"` |
| 16 | + //Checked int `json:"checked"` //0:未校验证 1:已校验 | ||
| 15 | } | 17 | } |
protocol/user.go
0 → 100644
| 1 | +package protocol | ||
| 2 | + | ||
| 3 | +/*修改手机号-验证旧手机验证码 */ | ||
| 4 | +type CheckSmsCodeRequest struct { | ||
| 5 | + Captcha string `json:"captcha" valid:"Required"` | ||
| 6 | +} | ||
| 7 | +type CheckSmsCodeResponse struct { | ||
| 8 | +} | ||
| 9 | + | ||
| 10 | +/*修改手机号*/ | ||
| 11 | +type ChangePhoneRequest struct { | ||
| 12 | + Phone string `json:"phone" valid:"Required"` | ||
| 13 | + Captcha string `json:"captcha" valid:"Required"` | ||
| 14 | +} | ||
| 15 | +type ChangePhoneResponse struct { | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +/*ResetPassword */ | ||
| 19 | +type ResetPasswordRequest struct { | ||
| 20 | + NewPwd string `json:"newPwd" valid:"Required"` | ||
| 21 | + ConfirmPwd string `json:"confirmPwd" valid:"Required"` | ||
| 22 | +} | ||
| 23 | +type ResetPasswordResponse struct { | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +/*ChangePassword */ | ||
| 27 | +type ChangePasswordRequest struct { | ||
| 28 | + NewPwd string `json:"newPwd" valid:"Required"` | ||
| 29 | + ConfirmPwd string `json:"confirmPwd" valid:"Required"` | ||
| 30 | + OldPwd string `json:"oldPwd" valid:"Required"` | ||
| 31 | +} | ||
| 32 | +type ChangePasswordResponse struct { | ||
| 33 | +} |
| @@ -9,66 +9,98 @@ func init() { | @@ -9,66 +9,98 @@ func init() { | ||
| 9 | 9 | ||
| 10 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], | 10 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], |
| 11 | beego.ControllerComments{ | 11 | beego.ControllerComments{ |
| 12 | - Method: "AccessToken", | ||
| 13 | - Router: `/accessToken`, | 12 | + Method: "AccessToken", |
| 13 | + Router: `/accessToken`, | ||
| 14 | AllowHTTPMethods: []string{"post"}, | 14 | AllowHTTPMethods: []string{"post"}, |
| 15 | - MethodParams: param.Make(), | ||
| 16 | - Params: nil}) | 15 | + MethodParams: param.Make(), |
| 16 | + Params: nil}) | ||
| 17 | 17 | ||
| 18 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], | 18 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], |
| 19 | beego.ControllerComments{ | 19 | beego.ControllerComments{ |
| 20 | - Method: "Login", | ||
| 21 | - Router: `/login`, | 20 | + Method: "Login", |
| 21 | + Router: `/login`, | ||
| 22 | AllowHTTPMethods: []string{"post"}, | 22 | AllowHTTPMethods: []string{"post"}, |
| 23 | - MethodParams: param.Make(), | ||
| 24 | - Params: nil}) | 23 | + MethodParams: param.Make(), |
| 24 | + Params: nil}) | ||
| 25 | 25 | ||
| 26 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], | 26 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], |
| 27 | beego.ControllerComments{ | 27 | beego.ControllerComments{ |
| 28 | - Method: "RefreshToken", | ||
| 29 | - Router: `/refreshToken`, | 28 | + Method: "RefreshToken", |
| 29 | + Router: `/refreshToken`, | ||
| 30 | AllowHTTPMethods: []string{"post"}, | 30 | AllowHTTPMethods: []string{"post"}, |
| 31 | - MethodParams: param.Make(), | ||
| 32 | - Params: nil}) | 31 | + MethodParams: param.Make(), |
| 32 | + Params: nil}) | ||
| 33 | 33 | ||
| 34 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], | 34 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], |
| 35 | beego.ControllerComments{ | 35 | beego.ControllerComments{ |
| 36 | - Method: "SmsCode", | ||
| 37 | - Router: `/smsCode`, | 36 | + Method: "SmsCode", |
| 37 | + Router: `/smsCode`, | ||
| 38 | AllowHTTPMethods: []string{"post"}, | 38 | AllowHTTPMethods: []string{"post"}, |
| 39 | - MethodParams: param.Make(), | ||
| 40 | - Params: nil}) | 39 | + MethodParams: param.Make(), |
| 40 | + Params: nil}) | ||
| 41 | 41 | ||
| 42 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], | 42 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], |
| 43 | beego.ControllerComments{ | 43 | beego.ControllerComments{ |
| 44 | - Method: "UpdateDevice", | ||
| 45 | - Router: `/updateDevice`, | 44 | + Method: "UpdateDevice", |
| 45 | + Router: `/updateDevice`, | ||
| 46 | AllowHTTPMethods: []string{"post"}, | 46 | AllowHTTPMethods: []string{"post"}, |
| 47 | - MethodParams: param.Make(), | ||
| 48 | - Params: nil}) | 47 | + MethodParams: param.Make(), |
| 48 | + Params: nil}) | ||
| 49 | 49 | ||
| 50 | beego.GlobalControllerRouter["opp/controllers/v1:CommendController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:CommendController"], | 50 | beego.GlobalControllerRouter["opp/controllers/v1:CommendController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:CommendController"], |
| 51 | beego.ControllerComments{ | 51 | beego.ControllerComments{ |
| 52 | - Method: "Company", | ||
| 53 | - Router: `/company`, | 52 | + Method: "Company", |
| 53 | + Router: `/company`, | ||
| 54 | AllowHTTPMethods: []string{"post"}, | 54 | AllowHTTPMethods: []string{"post"}, |
| 55 | - MethodParams: param.Make(), | ||
| 56 | - Params: nil}) | 55 | + MethodParams: param.Make(), |
| 56 | + Params: nil}) | ||
| 57 | 57 | ||
| 58 | beego.GlobalControllerRouter["opp/controllers/v1:UploadController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UploadController"], | 58 | beego.GlobalControllerRouter["opp/controllers/v1:UploadController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UploadController"], |
| 59 | beego.ControllerComments{ | 59 | beego.ControllerComments{ |
| 60 | - Method: "Image", | ||
| 61 | - Router: `/image`, | 60 | + Method: "Image", |
| 61 | + Router: `/image`, | ||
| 62 | AllowHTTPMethods: []string{"post"}, | 62 | AllowHTTPMethods: []string{"post"}, |
| 63 | - MethodParams: param.Make(), | ||
| 64 | - Params: nil}) | 63 | + MethodParams: param.Make(), |
| 64 | + Params: nil}) | ||
| 65 | 65 | ||
| 66 | beego.GlobalControllerRouter["opp/controllers/v1:UploadController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UploadController"], | 66 | beego.GlobalControllerRouter["opp/controllers/v1:UploadController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UploadController"], |
| 67 | beego.ControllerComments{ | 67 | beego.ControllerComments{ |
| 68 | - Method: "Voice", | ||
| 69 | - Router: `/voice`, | 68 | + Method: "Voice", |
| 69 | + Router: `/voice`, | ||
| 70 | AllowHTTPMethods: []string{"post"}, | 70 | AllowHTTPMethods: []string{"post"}, |
| 71 | - MethodParams: param.Make(), | ||
| 72 | - Params: nil}) | 71 | + MethodParams: param.Make(), |
| 72 | + Params: nil}) | ||
| 73 | + | ||
| 74 | + beego.GlobalControllerRouter["opp/controllers/v1:UserController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UserController"], | ||
| 75 | + beego.ControllerComments{ | ||
| 76 | + Method: "ChangePassword", | ||
| 77 | + Router: `/changePassword`, | ||
| 78 | + AllowHTTPMethods: []string{"post"}, | ||
| 79 | + MethodParams: param.Make(), | ||
| 80 | + Params: nil}) | ||
| 81 | + | ||
| 82 | + beego.GlobalControllerRouter["opp/controllers/v1:UserController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UserController"], | ||
| 83 | + beego.ControllerComments{ | ||
| 84 | + Method: "ChangePhone", | ||
| 85 | + Router: `/changePhone`, | ||
| 86 | + AllowHTTPMethods: []string{"post"}, | ||
| 87 | + MethodParams: param.Make(), | ||
| 88 | + Params: nil}) | ||
| 89 | + | ||
| 90 | + beego.GlobalControllerRouter["opp/controllers/v1:UserController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UserController"], | ||
| 91 | + beego.ControllerComments{ | ||
| 92 | + Method: "CheckSmsCode", | ||
| 93 | + Router: `/checkSmsCode`, | ||
| 94 | + AllowHTTPMethods: []string{"post"}, | ||
| 95 | + MethodParams: param.Make(), | ||
| 96 | + Params: nil}) | ||
| 97 | + | ||
| 98 | + beego.GlobalControllerRouter["opp/controllers/v1:UserController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:UserController"], | ||
| 99 | + beego.ControllerComments{ | ||
| 100 | + Method: "ResetPassword", | ||
| 101 | + Router: `/resetPassword`, | ||
| 102 | + AllowHTTPMethods: []string{"post"}, | ||
| 103 | + MethodParams: param.Make(), | ||
| 104 | + Params: nil}) | ||
| 73 | 105 | ||
| 74 | } | 106 | } |
| @@ -16,6 +16,7 @@ func init() { | @@ -16,6 +16,7 @@ func init() { | ||
| 16 | beego.NSNamespace("upload", beego.NSInclude(&v1.UploadController{})), | 16 | beego.NSNamespace("upload", beego.NSInclude(&v1.UploadController{})), |
| 17 | beego.NSNamespace("version", beego.NSInclude(&v1.VersionController{})), | 17 | beego.NSNamespace("version", beego.NSInclude(&v1.VersionController{})), |
| 18 | beego.NSNamespace("commend", beego.NSInclude(&v1.CommendController{})), | 18 | beego.NSNamespace("commend", beego.NSInclude(&v1.CommendController{})), |
| 19 | + beego.NSNamespace("user", beego.NSInclude(&v1.UserController{})), | ||
| 19 | ) | 20 | ) |
| 20 | beego.AddNamespace(nsV1) | 21 | beego.AddNamespace(nsV1) |
| 21 | beego.SetStaticPath("/file/ab", beego.AppConfig.String("source_path")) | 22 | beego.SetStaticPath("/file/ab", beego.AppConfig.String("source_path")) |
| @@ -72,7 +72,7 @@ func (s *AuthService) Login(request *protocol.LoginRequest) (rsp *protocol.Login | @@ -72,7 +72,7 @@ func (s *AuthService) Login(request *protocol.LoginRequest) (rsp *protocol.Login | ||
| 72 | } | 72 | } |
| 73 | break | 73 | break |
| 74 | case protocol.LoginTypeSmdcode: | 74 | case protocol.LoginTypeSmdcode: |
| 75 | - if result, err = CheckSmsCode(request.Phone, request.Code, protocol.SmsLoginCode); result && err == nil { | 75 | + if result, err = CheckSmsCode(request.Phone, request.Code, protocol.SmsCode); result && err == nil { |
| 76 | goto Success | 76 | goto Success |
| 77 | } else { | 77 | } else { |
| 78 | return | 78 | return |
| @@ -239,8 +239,9 @@ func (s *AuthService) SmsCode(request *protocol.SmsCodeRequest) (rsp *protocol.S | @@ -239,8 +239,9 @@ func (s *AuthService) SmsCode(request *protocol.SmsCodeRequest) (rsp *protocol.S | ||
| 239 | case protocol.SmsLoginCode: | 239 | case protocol.SmsLoginCode: |
| 240 | case protocol.SmsChangeMobile: | 240 | case protocol.SmsChangeMobile: |
| 241 | default: | 241 | default: |
| 242 | - err = common.NewErrorWithMsg(2, "send_type error.") | ||
| 243 | - return | 242 | + request.SendType = protocol.SmsCode |
| 243 | + //err = common.NewErrorWithMsg(2, "send_type error.") | ||
| 244 | + //return | ||
| 244 | } | 245 | } |
| 245 | key = request.SendType | 246 | key = request.SendType |
| 246 | //check user phone exists | 247 | //check user phone exists |
| 1 | package user | 1 | package user |
| 2 | 2 | ||
| 3 | -//import | ||
| 4 | -//( | ||
| 5 | -// "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/mybeego" | ||
| 6 | -// "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | ||
| 7 | -// "opp/models" | ||
| 8 | -//) | ||
| 9 | -// | ||
| 10 | -//func GetUserList(mobile string)*protocol.ResponseMessage{ | ||
| 11 | -// u,err:=models.GetUserByMobile(mobile) | ||
| 12 | -// if err!=nil{ | ||
| 13 | -// log.Error(err) | ||
| 14 | -// log.Error(mobile) | ||
| 15 | -// return mybeego.NewErrMessage(1) | ||
| 16 | -// } | ||
| 17 | -// msg :=protocol.ReturnResponse(0) | ||
| 18 | -// msg.Data = u | ||
| 19 | -// return msg | ||
| 20 | -//} | 3 | +import ( |
| 4 | + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | ||
| 5 | + "opp/internal/repository" | ||
| 6 | + "opp/internal/utils" | ||
| 7 | + "opp/models" | ||
| 8 | + "opp/protocol" | ||
| 9 | + "opp/services/auth" | ||
| 10 | + "strings" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +//验证smscode | ||
| 14 | +func CheckSmsCode(header *protocol.RequestHeader, request *protocol.CheckSmsCodeRequest) (rsp *protocol.CheckSmsCodeResponse, err error) { | ||
| 15 | + var ( | ||
| 16 | + user *models.User | ||
| 17 | + result bool | ||
| 18 | + ) | ||
| 19 | + //rsp =&protocol.CheckSmsCodeResponse{} | ||
| 20 | + | ||
| 21 | + if user, err = repository.User.GetUsersById(header.Uid); err != nil { | ||
| 22 | + log.Error(err) | ||
| 23 | + return | ||
| 24 | + } | ||
| 25 | + if result, err = auth.CheckSmsCode(user.Phone, request.Captcha, protocol.SmsCode); err != nil { | ||
| 26 | + log.Error(err) | ||
| 27 | + return | ||
| 28 | + } | ||
| 29 | + if !result { | ||
| 30 | + err = protocol.NewErrWithMessage(1012) | ||
| 31 | + } | ||
| 32 | + return | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +//修改手机号 | ||
| 36 | +func ChangePhone(header *protocol.RequestHeader, request *protocol.ChangePhoneRequest) (rsp *protocol.ChangePhoneResponse, err error) { | ||
| 37 | + var ( | ||
| 38 | + user *models.User | ||
| 39 | + result bool | ||
| 40 | + ) | ||
| 41 | + //rsp =&protocol.ChangePhoneResponse{} | ||
| 42 | + if user, err = repository.User.GetUsersById(header.Uid); err != nil { | ||
| 43 | + log.Error(err) | ||
| 44 | + return | ||
| 45 | + } | ||
| 46 | + if result, err = auth.CheckSmsCode(user.Phone, request.Captcha, protocol.SmsCode); err != nil { | ||
| 47 | + log.Error(err) | ||
| 48 | + return | ||
| 49 | + } | ||
| 50 | + if !result { | ||
| 51 | + err = protocol.NewErrWithMessage(1012) | ||
| 52 | + } | ||
| 53 | + err = utils.UpdateTableByMap(&models.User{Id: user.Id}, map[string]interface{}{"Phone": request.Phone}) | ||
| 54 | + return | ||
| 55 | +} | ||
| 56 | + | ||
| 57 | +//重置密码 | ||
| 58 | +func ResetPassword(header *protocol.RequestHeader, request *protocol.ResetPasswordRequest) (rsp *protocol.ResetPasswordResponse, err error) { | ||
| 59 | + var ( | ||
| 60 | + user *models.User | ||
| 61 | + ) | ||
| 62 | + //rsp =&protocol.ResetPasswordResponse{} | ||
| 63 | + if user, err = repository.User.GetUsersById(header.Uid); err != nil { | ||
| 64 | + log.Error(err) | ||
| 65 | + return | ||
| 66 | + } | ||
| 67 | + //TODO:未验证 校验码 | ||
| 68 | + if !strings.EqualFold(request.NewPwd, request.ConfirmPwd) { | ||
| 69 | + err = protocol.NewErrWithMessage(2026) | ||
| 70 | + } | ||
| 71 | + err = utils.UpdateTableByMap(&models.User{Id: user.Id}, map[string]interface{}{"Passwd": request.NewPwd}) | ||
| 72 | + return | ||
| 73 | +} | ||
| 74 | + | ||
| 75 | +//修改密码 | ||
| 76 | +func ChangePassword(header *protocol.RequestHeader, request *protocol.ChangePasswordRequest) (rsp *protocol.ChangePasswordResponse, err error) { | ||
| 77 | + var ( | ||
| 78 | + user *models.User | ||
| 79 | + ) | ||
| 80 | + //rsp =&protocol.ChangePasswordResponse{} | ||
| 81 | + if user, err = repository.User.GetUsersById(header.Uid); err != nil { | ||
| 82 | + log.Error(err) | ||
| 83 | + return | ||
| 84 | + } | ||
| 85 | + if strings.EqualFold(request.OldPwd, user.Passwd) { | ||
| 86 | + err = protocol.NewErrWithMessage(1) | ||
| 87 | + } | ||
| 88 | + if !strings.EqualFold(request.NewPwd, request.ConfirmPwd) { | ||
| 89 | + err = protocol.NewErrWithMessage(2026) | ||
| 90 | + } | ||
| 91 | + err = utils.UpdateTableByMap(&models.User{Id: user.Id}, map[string]interface{}{"Passwd": request.NewPwd}) | ||
| 92 | + return | ||
| 93 | +} |
| 1 | package tests | 1 | package tests |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "fmt" | ||
| 4 | "github.com/astaxie/beego" | 5 | "github.com/astaxie/beego" |
| 5 | _ "github.com/go-sql-driver/mysql" | 6 | _ "github.com/go-sql-driver/mysql" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/config" | 7 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/config" |
| 7 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | 8 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" |
| 8 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/orm" | 9 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/orm" |
| 9 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/redis" | 10 | "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/redis" |
| 10 | - "opp/protocol" | ||
| 11 | "os" | 11 | "os" |
| 12 | "path/filepath" | 12 | "path/filepath" |
| 13 | "runtime" | 13 | "runtime" |
| @@ -34,11 +34,18 @@ func Init() { | @@ -34,11 +34,18 @@ func Init() { | ||
| 34 | log.Fatal(err) | 34 | log.Fatal(err) |
| 35 | panic(err) | 35 | panic(err) |
| 36 | } | 36 | } |
| 37 | + dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?loc=Asia%%2FShanghai", | ||
| 38 | + beego.AppConfig.String("mysql_user"), | ||
| 39 | + beego.AppConfig.String("mysql_password"), | ||
| 40 | + beego.AppConfig.String("mysql_host"), | ||
| 41 | + beego.AppConfig.String("mysql_port"), | ||
| 42 | + beego.AppConfig.String("mysql_db_name"), | ||
| 43 | + ) | ||
| 37 | orm.NewBeeormEngine(config.Mysql{ | 44 | orm.NewBeeormEngine(config.Mysql{ |
| 38 | - DataSource: beego.AppConfig.String("data_source"), | 45 | + DataSource: dataSource, |
| 39 | MaxIdle: 100, | 46 | MaxIdle: 100, |
| 40 | MaxOpen: 100, | 47 | MaxOpen: 100, |
| 41 | }) | 48 | }) |
| 42 | - protocol.InitMessageCode() | 49 | + //protocol.InitMessageCode() |
| 43 | }) | 50 | }) |
| 44 | } | 51 | } |
-
请 注册 或 登录 后发表评论