plugai_updsrv/pkg/controllers/controller_customer.go

190 lines
4.3 KiB
Go

package controllers
import (
"intent-system/pkg/itypes"
"intent-system/pkg/middleware"
"intent-system/pkg/privilege"
"intent-system/pkg/proto"
"intent-system/pkg/sessions"
"github.com/civet148/log"
"github.com/gin-gonic/gin"
)
// 客户列表(需权限检查)
func (m *Controller) CustomerList(c *gin.Context) {
var req proto.CustomerListReq
if err := m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
ctx, ok := m.ContextPlatformPrivilege(c, privilege.CustomerAccess)
if !ok {
log.Errorf("user authentication context is nil or privilege check failed")
return
}
resp, total, code := m.CustomerCore.CustomerList(ctx, &req)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, len(resp.List), total)
}
func (m *Controller) CustomerRegister(c *gin.Context) {
var req proto.CustomerRegisterReq
if err := m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
resp, code := m.CustomerCore.UserRegister(&req)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, 1, 1)
}
func (m *Controller) CustomerURegister(c *gin.Context) {
var req proto.CustomerURegisterReq
if err := m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
resp, code := m.CustomerCore.UserNameRegister(&req)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, 1, 1)
}
func (m *Controller) CustomerLogin(c *gin.Context) {
var err error
var req proto.CustomerLoginReq
if err = m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
strIP := m.GetClientIP(c)
do, code := m.CustomerCore.CustomerLogin(&req, strIP)
if !code.Ok() {
m.Error(c, code)
return
}
sub, code := m.CustomerCore.CustomerSubscriber(do.Email)
if !code.Ok() {
m.Error(c, code)
return
}
s := &itypes.Session{
UserId: do.GetId(),
UserName: do.GetUserName(),
Alias: do.GetUserAlias(),
PhoneNumber: do.GetPhoneNumber(),
Email: do.GetEmail(),
IsAdmin: false,
IsCustomer: true,
LoginIP: strIP,
}
if s.AuthToken, err = middleware.GenerateToken(s); err != nil {
err = log.Errorf("generate token error [%s]", err.Error())
m.Error(c, itypes.NewBizCode(itypes.CODE_INVALID_PARAMS, err.Error()))
return
}
_ = sessions.NewContext(s) // create and save user context
log.Debugf("customer [%v] login successful, customer id [%v] token [%s]", s.UserName, s.UserId, s.AuthToken)
var resp = proto.CustomerLoginResp{
Id: do.Id,
Version: m.cfg.Version,
UserName: do.UserName,
AuthToken: s.AuthToken,
LoginTime: do.LoginTime,
LoginIp: do.LoginIp,
FirstName: do.FirstName,
LastName: do.LastName,
Title: do.Title,
Company: do.Company,
IsSubscribed: do.IsSubscribed,
SubTags: sub.Tags,
Privileges: make([]string, 0),
}
m.OK(c, &resp, 1, 1)
}
func (m *Controller) CustomerEdit(c *gin.Context) {
var err error
var req proto.CustomerEditReq
if err = m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
ctx := sessions.GetContext(c)
resp, code := m.CustomerCore.CustomerEdit(ctx, &req)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, 1, 1)
}
func (m *Controller) CustomerLogout(c *gin.Context) {
resp, code := m.CustomerCore.CustomerLogout(c)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, 1, 1)
}
func (m *Controller) CustomerSubInfo(c *gin.Context) {
var err error
var req proto.CustomerSubInfoReq
if err = m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
ctx := sessions.GetContext(c)
resp, code := m.CustomerCore.CustomerSubInfo(ctx, &req)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, 1, 1)
}
func (m *Controller) CustomerSubscribe(c *gin.Context) {
var err error
var req proto.CustomerSubscribeReq
if err = m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
ctx := sessions.GetContext(c)
resp, code := m.CustomerCore.CustomerSubscribe(ctx, &req)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, 1, 1)
}
func (m *Controller) CustomerUnsubscribe(c *gin.Context) {
var err error
var req proto.CustomerUnsubscribeReq
if err = m.bindJSON(c, &req); err != nil {
log.Errorf("%s", err)
return
}
ctx := sessions.GetContext(c)
resp, code := m.CustomerCore.CustomerUnsubscribe(ctx, &req)
if !code.Ok() {
m.Error(c, code)
return
}
m.OK(c, resp, 1, 1)
}