欢迎光临
我们一直在努力

go通用查询结构体结果将stru转成map, int64自动转str,返回给前端

func (self *BeStudentController) UiQueryNoPlan(c *gin.Context) {

user := common.GetUser(c)
if !self.IfStaffCheck(c, user) {
return
}
var uireq = uistu.FindBeanUiQueryNoPlan()
if ret := self.ParseBody2Ret(c, uireq); ret.IsFailed() {
return
}
var ret = uireq.UiListNoPlan()
if ret.IsFailed() {
golog.Error(ret)
c.IndentedJSON(http.StatusOK, ret)
return
}
var retFields = []string{"id", "name", "phone", "userType,createdAt,createdBy,userNo,relRole,trialStatus", "totalCredits"}
c.IndentedJSON(http.StatusOK, ret.UiMap(retFields…))
}

func (self *PageResult[T]) UiMap(fieldsNames …string) *PageResult[map[string]any] {

var ret = NewPageResult[map[string]any]()
ret.FromPageResult(self.PageResult)
if self.ExistRecord() {
var err = gconv.Struct(self.Data, &ret.Data)
if err != nil {
golog.Error("PageResult ToPageResultMap err:", err)
} else {
if len(fieldsNames) == 0 || fieldsNames[0] == "" {
return ret
}
var fieldsName = strings.Join(fieldsNames, ",")
var fields = baseutils.FieldsFunc(fieldsName)
ret.Data = lo.Map(ret.Data, func(item map[string]any, _ int) map[string]any {
for key := range item {
if !lo.Contains(fields, key) {
delete(item, key)
}
}
return item
})
}
ret.Data = lo.Map(ret.Data, func(item map[string]any, _ int) map[string]any {

for key, value := range item {
if v, isInt := value.(int64); isInt {
item[key] = gconv.String(v)
}
if v, isInt := value.(float64); isInt {
item[key] = gconv.String(v)
}
}
return item
})
}

return ret
}

func (self *TestWebServiceSuite) Test033_UiQueryNoPlan() {
var url = "/api/v1/be/student/queryNoPlan"

var testframe = testgin.FindBeanGinTestframe().InitPost(url, webbe.UiQueryNoPlan)
var user = testframe.InitUser2MiddleWare(ginctx.ID_USER_LEIJMDAS_136_ADMIN)
var req = uistu.FindBeanUiQueryNoPlan()
req.Start = time.Now().Add(-300 * time.Hour * 24).Format(time.DateTime)
req.End = time.Now().Format(time.DateTime)
req.PageSize = 3
var ret = testframe.Post2PageRet(req)
golog.Info(user, req, ret)
}

{
     "code": 200,
     "msg": "成功",
     "data": [
          {
               "phone": "15012345678",
               "totalCredits": "100",
               "trialStatus": 100,
               "createdAt": "2025-12-30T18:09:29.065837+08:00",
               "createdBy": "0",
               "name": "测试充值按钮",
               "relRole": "S",
               "userNo": "7344081",
               "userType": 20,
               "id": "2005944319776657408"
          },
          {
               "createdAt": "2025-12-28T13:02:32.060878+08:00",
               "phone": "13678908713",
               "relRole": "S",
               "userType": 20,
               "createdBy": "1983796211232018432",
               "id": "2005142297234116608",
               "name": "S1111",
               "totalCredits": "200",
               "trialStatus": 300,
               "userNo": "7344075"
          },
          {
               "trialStatus": 300,
               "userNo": "7344104",
               "id": "2005097474217218048",
               "totalCredits": "100",
               "userType": 20,
               "createdAt": "2025-12-28T10:04:25.420277+08:00",
               "createdBy": "0",
               "name": "李文223",
               "phone": "13612121123",
               "relRole": "S"
          }
     ],
     "exist": true,
     "total": 12,
     "pageSize": 3,
     "pageCurrent": 1,
     "totalPages": 4,
     "dataAgg": null
}

type PageResult[T any] struct {
baseconfig.IchubClientDto
*page.PageResult
Data []T `json:"data"`
}

func DefaultResult[T any]() *PageResult[T] {
return NewPageResult[T]()
}

func NewPageResult[T any]() *PageResult[T] {
var m = &PageResult[T]{
PageResult: page.DefaultResult(),
}
m.InitProxy(m)
return m
}
func Map[T any](fieldsName string) *PageResult[*map[string]any] {
var ret = NewPageResult[T]()
return ret.Map(fieldsName)
}

func PageResult2UiResult[T, U any](pageRet *PageResult[T], u U) *PageResult[U] {

var uiRet = NewPageResult[U]()
uiRet.FromPageResult(pageRet.PageResult)
if pageRet.ExistRecord() {
var err = gconv.Struct(pageRet.Data, &uiRet.Data)
if err != nil {
golog.Error("PageResult2UiList err:", err)
}
}
return uiRet

}

func PageResultError[T any](err error) *PageResult[T] {

return ResultErrPageResult[T](err)

}
func PageResultFailMsg[T any](msg string) *PageResult[T] {

return ResultFailPageResult[T](msg)

}
func PageResultFailSystem[T any](msg string) *PageResult[T] {

return ResultFailPageResultCode[T](basedto.CODE_USER_ERROR_SYSTEM, msg)

}
func PageResultFailUser[T any](msg string) *PageResult[T] {

return ResultFailPageResultCode[T](basedto.CODE_USER_ERROR_START, msg)

}
func PageResult2Result[T, U any](pageRet *PageResult[T], u U) *PageResult[U] {

return PageResult2UiResult(pageRet, u)

}

func ResultErrPageResult[T any](err error) *PageResult[T] {

return ResultFailPageResult[T](err.Error())

}

func ResultOkPageResult[T any](data []T) *PageResult[T] {

var ret = DefaultResult[T]()
ret.Code = 200
ret.Msg = "成功"
ret.Data = data
return ret

}
func ResultFailPageResult[T any](msg string) *PageResult[T] {

var ret = DefaultResult[T]()
ret.Code = 500
ret.Msg = msg
return ret

}
func ResultFailPageResultCode[T any](code int, msg string) *PageResult[T] {

var ret = DefaultResult[T]()
ret.Code = code
ret.Msg = msg
return ret

}
func FromAs[T any](result *page.PageResult) *PageResult[T] {

return NewPageResult[T]().ValueOfPageResult(result)

}
func From[T schema.Tabler](result *page.PageResult) *PageResult[T] {

return NewPageResult[T]().FromPageResult(result)

}
func FromPageResult[T baseiface.IpoolObj](result *page.PageResult) *PageResult[T] {

return NewPageResult[T]().ValueOfPageResult(result)

}
func FromPageEsResult[T baseiface.IpoolObj](result *pagees.PageEsResult) *PageResult[T] {

var pageResult = NewPageResult[T]()
return pageResult.ValueOf(result)

}

func (self *PageResult[T]) ValueOf(esResult *pagees.PageEsResult) *PageResult[T] {
self.PageSize = esResult.PageSize
self.PageCurrent = esResult.PageCurrent
self.Total = esResult.Total

self.Data = make([]T, 0)
if esResult.IsSuccess() {
var err = jsonutils.Decode2StruList(esResult.Data, &self.Data)
if err != nil {
golog.Error("PageResult[T] ValueOf = ", err)
}
}
self.Exist = self.ExistRecord()
return self
}

赞(0)
未经允许不得转载:171主机测评 » go通用查询结构体结果将stru转成map, int64自动转str,返回给前端
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址