198 lines
5.9 KiB
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,
|
|
}
|
|
}
|