kra/internal/server/handler/example/exa_customer.go

198 lines
5.9 KiB
Go

package example
import (
"kra/internal/biz/example"
"kra/pkg/response"
"kra/pkg/utils"
"github.com/gin-gonic/gin"
)
type CustomerApi struct{}
// CreateExaCustomer
// @Tags ExaCustomer
// @Summary 创建客户
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body CustomerRequest true "客户用户名, 客户手机号码"
// @Success 200 {object} response.Response{msg=string} "创建客户"
// @Router /customer/customer [post]
func (api *CustomerApi) CreateExaCustomer(c *gin.Context) {
var req CustomerRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
customer := &example.Customer{
CustomerName: req.CustomerName,
CustomerPhoneData: req.CustomerPhoneData,
SysUserID: utils.GetUserID(c),
SysUserAuthorityID: utils.GetUserAuthorityId(c),
}
if err := customerUsecase.CreateExaCustomer(c.Request.Context(), customer); err != nil {
response.FailWithMessage("创建失败: "+err.Error(), c)
return
}
response.OkWithMessage("创建成功", c)
}
// DeleteExaCustomer
// @Tags ExaCustomer
// @Summary 删除客户
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body DeleteCustomerRequest true "客户ID"
// @Success 200 {object} response.Response{msg=string} "删除客户"
// @Router /customer/customer [delete]
func (api *CustomerApi) DeleteExaCustomer(c *gin.Context) {
var req DeleteCustomerRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := customerUsecase.DeleteExaCustomer(c.Request.Context(), req.ID); err != nil {
response.FailWithMessage("删除失败: "+err.Error(), c)
return
}
response.OkWithMessage("删除成功", c)
}
// UpdateExaCustomer
// @Tags ExaCustomer
// @Summary 更新客户信息
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body CustomerRequest true "客户ID, 客户信息"
// @Success 200 {object} response.Response{msg=string} "更新客户信息"
// @Router /customer/customer [put]
func (api *CustomerApi) UpdateExaCustomer(c *gin.Context) {
var req CustomerRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
customer := &example.Customer{
ID: req.ID,
CustomerName: req.CustomerName,
CustomerPhoneData: req.CustomerPhoneData,
}
if err := customerUsecase.UpdateExaCustomer(c.Request.Context(), customer); err != nil {
response.FailWithMessage("更新失败: "+err.Error(), c)
return
}
response.OkWithMessage("更新成功", c)
}
// GetExaCustomer
// @Tags ExaCustomer
// @Summary 获取单一客户信息
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query GetCustomerRequest true "客户ID"
// @Success 200 {object} response.Response{data=CustomerResponse,msg=string} "获取单一客户信息,返回包括客户详情"
// @Router /customer/customer [get]
func (api *CustomerApi) GetExaCustomer(c *gin.Context) {
var req GetCustomerRequest
if err := c.ShouldBindQuery(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
customer, err := customerUsecase.GetExaCustomer(c.Request.Context(), req.ID)
if err != nil {
response.FailWithMessage("获取失败: "+err.Error(), c)
return
}
response.OkWithDetailed(toCustomerResponse(customer), "获取成功", c)
}
// GetExaCustomerList
// @Tags ExaCustomer
// @Summary 分页获取权限客户列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query GetCustomerListRequest true "页码, 每页大小"
// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取权限客户列表,返回包括列表,总数,页码,每页数量"
// @Router /customer/customerList [get]
func (api *CustomerApi) GetExaCustomerList(c *gin.Context) {
var req GetCustomerListRequest
if err := c.ShouldBindQuery(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
authorityId := utils.GetUserAuthorityId(c)
list, total, err := customerUsecase.GetCustomerInfoList(c.Request.Context(), authorityId, req.Page, req.PageSize)
if err != nil {
response.FailWithMessage("获取失败: "+err.Error(), c)
return
}
respList := make([]CustomerResponse, len(list))
for i, cust := range list {
respList[i] = *toCustomerResponse(cust)
}
response.OkWithDetailed(response.PageResult{
List: respList,
Total: total,
Page: req.Page,
PageSize: req.PageSize,
}, "获取成功", c)
}
// Request/Response 结构
type CustomerRequest struct {
ID uint `json:"ID"`
CustomerName string `json:"customerName"`
CustomerPhoneData string `json:"customerPhoneData"`
}
type DeleteCustomerRequest struct {
ID uint `json:"ID"`
}
type GetCustomerRequest struct {
ID uint `form:"ID"`
}
type GetCustomerListRequest struct {
Page int `form:"page"`
PageSize int `form:"pageSize"`
}
type CustomerResponse struct {
ID uint `json:"ID"`
CustomerName string `json:"customerName"`
CustomerPhoneData string `json:"customerPhoneData"`
SysUserID uint `json:"sysUserId"`
SysUserAuthorityID uint `json:"sysUserAuthorityID"`
SysUserName string `json:"sysUserName"`
}
func toCustomerResponse(c *example.Customer) *CustomerResponse {
return &CustomerResponse{
ID: c.ID,
CustomerName: c.CustomerName,
CustomerPhoneData: c.CustomerPhoneData,
SysUserID: c.SysUserID,
SysUserAuthorityID: c.SysUserAuthorityID,
SysUserName: c.SysUserName,
}
}