Przeglądaj źródła

类别管理接口第一次提交

maker 3 lat temu
rodzic
commit
84befc9212
35 zmienionych plików z 1336 dodań i 1 usunięć
  1. 2 0
      api/v1/enter.go
  2. 20 0
      api/v1/typeManage/enter.go
  3. 121 0
      api/v1/typeManage/gameChannel.go
  4. 124 0
      api/v1/typeManage/gameList.go
  5. 118 0
      api/v1/typeManage/loginType.go
  6. 116 0
      api/v1/typeManage/responsiblePerson.go
  7. 5 1
      initialize/router.go
  8. 11 0
      model/typeManage/gameChannel.go
  9. 11 0
      model/typeManage/gameList.go
  10. 36 0
      model/typeManage/localTime.go
  11. 11 0
      model/typeManage/loginType.go
  12. 6 0
      model/typeManage/option.go
  13. 9 0
      model/typeManage/response/gameListPageResult.go
  14. 7 0
      model/typeManage/response/tm_gameChannelResponse.go
  15. 7 0
      model/typeManage/response/tm_gameListResponse.go
  16. 7 0
      model/typeManage/response/tm_loginTypeResponse.go
  17. 7 0
      model/typeManage/response/tm_responsiblePersonResponse.go
  18. 15 0
      model/typeManage/responsiblePerson.go
  19. 13 0
      model/typeManage/searchGameChannelParams.go
  20. 12 0
      model/typeManage/searchGameListParams.go
  21. 10 0
      model/typeManage/searchLoginTypeParams.go
  22. 10 0
      model/typeManage/searchResponsiblePersonParams.go
  23. 2 0
      router/enter.go
  24. 10 0
      router/typeManage/enter.go
  25. 22 0
      router/typeManage/gameChannel.go
  26. 24 0
      router/typeManage/gameList.go
  27. 22 0
      router/typeManage/loginType.go
  28. 21 0
      router/typeManage/responsiblePerson.go
  29. 2 0
      service/enter.go
  30. 12 0
      service/typeManage/enter.go
  31. 114 0
      service/typeManage/tm_gameChannel.go
  32. 143 0
      service/typeManage/tm_gameList.go
  33. 122 0
      service/typeManage/tm_loginType.go
  34. 157 0
      service/typeManage/tm_responsiblePerson.go
  35. 7 0
      utils/verify.go

+ 2 - 0
api/v1/enter.go

@@ -4,12 +4,14 @@ import (
 	"log-server/api/v1/example"
 	"log-server/api/v1/log"
 	"log-server/api/v1/system"
+	"log-server/api/v1/typeManage"
 )
 
 type ApiGroup struct {
 	SystemApiGroup  system.ApiGroup
 	ExampleApiGroup example.ApiGroup
 	LogApiGroup     log.GroupLog
+	TypeApiGroup typeManage.ApiGroup
 }
 
 var ApiGroupApp = new(ApiGroup)

+ 20 - 0
api/v1/typeManage/enter.go

@@ -0,0 +1,20 @@
+package typeManage
+
+import "log-server/service"
+
+type ApiGroup struct {
+	// Code generated by github.com/flipped-aurora/gin-vue-admin/server Begin; DO NOT EDIT.
+
+	// Code generated by github.com/flipped-aurora/gin-vue-admin/server End; DO NOT EDIT.
+	GameChannelApi
+	GameListApi
+	LoginTypeApi
+	ResponsiblePersonApi
+}
+
+var(
+	gameService = service.ServiceGroupApp.TypeServiceGroup.GameChannelService
+	gameListService = service.ServiceGroupApp.TypeServiceGroup.GameListService
+	loginTypeService = service.ServiceGroupApp.TypeServiceGroup.LoginTypeService
+	responsiblePersonService = service.ServiceGroupApp.TypeServiceGroup.ResponsiblePersonService
+)

+ 121 - 0
api/v1/typeManage/gameChannel.go

@@ -0,0 +1,121 @@
+package typeManage
+
+import (
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/common/response"
+	typeManageModel "log-server/model/typeManage"
+	typeManageRes "log-server/model/typeManage/response"
+	"log-server/utils"
+)
+
+type GameChannelApi struct {}
+
+//添加游戏厂商
+func (g *GameChannelApi) CreateGameChannel(c *gin.Context)  {
+	var channel typeManageModel.GameChannel
+	_ = c.ShouldBindJSON(&channel)
+	if err := utils.Verify(channel, utils.GameChannelVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := gameService.CreateGameChannel(channel);err != nil {
+		global.GVA_LOG.Error("创建失败!", zap.Error(err))
+		response.FailWithMessage("创建失败", c)
+	} else {
+		response.OkWithMessage("创建成功", c)
+	}
+
+}
+
+//单个删除厂商信息
+func (g *GameChannelApi) DeleteGameChannel(c *gin.Context) {
+	var channel typeManageModel.GameChannel
+	_ = c.ShouldBindJSON(&channel)
+	if err := utils.Verify(channel, utils.GameChannelVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := gameService.DeleteGameChannel(channel); err != nil {
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+//批量删除厂商
+func (g *GameChannelApi) DeleteGameChannelsByIds(c *gin.Context) {
+	var ids request.IdsReq
+	_ = c.ShouldBindJSON(&ids)
+	if err := gameService.DeleteGameChannelsByIds(ids); err != nil {
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+
+
+
+
+//更新厂商信息
+func (g *GameChannelApi) UpdateGameChannel(c *gin.Context)  {
+	var channel typeManageModel.GameChannel
+	_ = c.ShouldBindJSON(&channel)
+	if err := utils.Verify(channel, utils.GameChannelVerify); err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := gameService.UpdateGameChannel(channel); err != nil {
+		global.GVA_LOG.Error("修改失败!", zap.Error(err))
+		response.FailWithMessage("修改失败", c)
+	} else {
+		response.OkWithMessage("修改成功", c)
+	}
+}
+
+
+
+//通过id获取单条数据
+func (g *GameChannelApi) GetGameChannelById(c *gin.Context) {
+	var idInfo request.GetById
+	_ = c.ShouldBindJSON(&idInfo)
+	//verify数据校验
+	if err := utils.Verify(idInfo, utils.IdVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	channel, err := gameService.GetGameChannelById(idInfo.ID);
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(typeManageRes.GameChannelResponse{GameChannel: channel}, "获取成功", c)
+	}
+}
+
+//获取所有游戏厂商列表
+func (g *GameChannelApi) GameChannelList(c *gin.Context)  {
+	var pageInfo typeManageModel.SearchGameChannelParams
+	_ = c.ShouldBindJSON(&pageInfo)
+	if err := utils.Verify(pageInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if list, total, err := gameService.GetGameChannelInfoList(pageInfo.GameChannel, pageInfo.PageInfo, pageInfo.OrderKey, pageInfo.Desc); err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(response.PageResult{
+			List:     list,
+			Total:    total,
+			Page:     pageInfo.Page,
+			PageSize: pageInfo.PageSize,
+		}, "获取成功", c)
+	}
+}
+

+ 124 - 0
api/v1/typeManage/gameList.go

@@ -0,0 +1,124 @@
+package typeManage
+
+import (
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/common/response"
+	"log-server/model/typeManage"
+	typeManageRes "log-server/model/typeManage/response"
+	"log-server/utils"
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+)
+
+type GameListApi struct{}
+
+//创造游戏列表
+func (g *GameListApi) CreateGameList(c *gin.Context) {
+	//获取前端结构体
+	var gameList typeManage.GameList
+	_ = c.ShouldBindJSON(&gameList)
+	if err := utils.Verify(gameList, utils.GameListVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := gameListService.CreateGameList(gameList); err != nil {
+		global.GVA_LOG.Error("创建失败!", zap.Error(err))
+		response.FailWithMessage("创建失败", c)
+	} else {
+		response.OkWithMessage("创建成功", c)
+	}
+}
+
+//单个删除游戏列表
+func (g *GameListApi) DeleteGameList(c *gin.Context) {
+	var game typeManage.GameList
+	_ = c.ShouldBindJSON(&game)
+	if err := utils.Verify(game, utils.GameListVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := gameListService.DeleteGameList(game); err != nil {
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+//批量删除游戏列表
+func (g *GameListApi) DeleteGameListsByIds(c *gin.Context) {
+	var ids request.IdsReq
+	_ = c.ShouldBindJSON(&ids)
+	if err := gameListService.DeleteGameListsByIds(ids); err != nil {
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+//更改游戏列表信息
+func (g *GameListApi) UpdateGameList(c *gin.Context) {
+	var game typeManage.GameList
+	_ = c.ShouldBindJSON(&game)
+	//verify数据校验
+	if err := utils.Verify(game, utils.GameListVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	//调用service
+	if err := gameListService.UpdateGameList(game); err != nil {
+		global.GVA_LOG.Error("修改失败!", zap.Error(err))
+		response.FailWithMessage("修改失败", c)
+	} else {
+		response.OkWithMessage("修改成功", c)
+	}
+
+}
+
+//获取单个游戏列表
+func (g *GameListApi) GetGameListById(c *gin.Context) {
+	var idInfo request.GetById
+	_ = c.ShouldBindJSON(&idInfo)
+	//前端校验
+	if err := utils.Verify(idInfo, utils.IdVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	gameList, err := gameListService.GetGameListById(idInfo.ID)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(typeManageRes.GameListResponse{GameList: gameList}, "获取成功", c)
+	}
+
+}
+
+//获取所有游戏列表
+func (g *GameListApi) GetGameList(c *gin.Context) {
+	//传入查询结构体
+	var pageInfo typeManage.SearchGameListParams
+	_ = c.ShouldBindJSON(&pageInfo)
+	//进行数据校验
+	if err := utils.Verify(pageInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	//访问service
+	if list, option, total, err := gameListService.GetGameList(pageInfo, pageInfo.PageInfo, pageInfo.OrderKey, pageInfo.Desc); err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		//响应结果
+		response.OkWithDetailed(typeManageRes.GameListPageResult{
+			List:       list,
+			OptionList: option,
+			Total:      total,
+			Page:       pageInfo.Page,
+			PageSize:   pageInfo.PageSize,
+		}, "获取成功", c)
+	}
+
+}

+ 118 - 0
api/v1/typeManage/loginType.go

@@ -0,0 +1,118 @@
+package typeManage
+
+import (
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/common/response"
+	"log-server/model/typeManage"
+	typeManageRes "log-server/model/typeManage/response"
+	"log-server/utils"
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+)
+
+type LoginTypeApi struct{}
+
+//创建登录类型
+func (l *LoginTypeApi) CreateLoginType(c *gin.Context) {
+	var login typeManage.LoginType
+	_ = c.ShouldBindJSON(&login)
+	if err := utils.Verify(login, utils.LoginTypeVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := loginTypeService.CreateLoginType(login);err != nil {
+		global.GVA_LOG.Error("创建失败!", zap.Error(err))
+		response.FailWithMessage("创建失败", c)
+	} else {
+		response.OkWithMessage("创建成功", c)
+	}
+
+}
+
+//单个删除登录类型
+func (l *LoginTypeApi) DeleteLoginType(c *gin.Context) {
+	var login typeManage.LoginType
+	_ = c.ShouldBindJSON(&login)
+	if err := utils.Verify(login, utils.LoginTypeVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := loginTypeService.DeleteLoginType(login);err != nil{
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+//批量删除
+func (l *LoginTypeApi) DeleteLoginTypesByIds(c *gin.Context) {
+	var ids request.IdsReq
+	_ = c.ShouldBindJSON(&ids)
+	if err := loginTypeService.DeleteLoginTypesByIds(ids);err != nil{
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+//更改登录类型信息
+func (l *LoginTypeApi) UpdateLoginType(c *gin.Context) {
+	var login typeManage.LoginType
+	_ = c.ShouldBindJSON(&login)
+	if err := utils.Verify(login, utils.LoginTypeVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := loginTypeService.UpdateLoginType(login);err != nil{
+		global.GVA_LOG.Error("修改失败!", zap.Error(err))
+		response.FailWithMessage("修改失败", c)
+	} else {
+		response.OkWithMessage("修改成功", c)
+	}
+}
+
+//通过id查询登录类型
+func (l *LoginTypeApi) GetLoginTypeById(c *gin.Context) {
+	var idInfo request.GetById
+	_ = c.ShouldBindJSON(&idInfo)
+	if err := utils.Verify(idInfo, utils.IdVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	loginType, err := loginTypeService.GetLoginTypeById(idInfo.ID)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(&typeManageRes.LoginTypeResponse {LoginType:loginType}, "获取成功", c)
+	}
+}
+
+//条件查询登录类型
+func (l *LoginTypeApi) GetLoginType(c *gin.Context) {
+	//传入查询信息
+	var pageInfo typeManage.SearchLoginTypeParams
+	_ = c.ShouldBindJSON(&pageInfo)
+	//格式校验
+	if err := utils.Verify(pageInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	//访问service
+	list, total, err := loginTypeService.GetLoginType(pageInfo.LoginType, pageInfo.PageInfo, pageInfo.OrderKey, pageInfo.Desc)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		//响应结果
+		response.OkWithDetailed(response.PageResult{
+			List:     list,
+			Total:    total,
+			Page:     pageInfo.Page,
+			PageSize: pageInfo.PageSize,
+		}, "获取成功", c)
+	}
+}

+ 116 - 0
api/v1/typeManage/responsiblePerson.go

@@ -0,0 +1,116 @@
+package typeManage
+
+import (
+	"github.com/gin-gonic/gin"
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/common/response"
+	"log-server/model/typeManage"
+	typeManageRes "log-server/model/typeManage/response"
+	"log-server/utils"
+)
+
+type ResponsiblePersonApi struct {}
+
+//增加负责人
+func (r *ResponsiblePersonApi) CreateResponsiblePerson(c *gin.Context)  {
+	var responsiblePerson typeManage.ResponsiblePerson
+	_ = c.ShouldBindJSON(&responsiblePerson)
+	if err := utils.Verify(responsiblePerson, utils.ResponsiblePersonVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := responsiblePersonService.CreateResponsiblePerson(responsiblePerson);err != nil{
+		global.GVA_LOG.Error("创建失败!", zap.Error(err))
+		response.FailWithMessage("创建失败", c)
+	} else {
+		response.OkWithMessage("创建成功", c)
+	}
+}
+
+//删除单个负责人
+func (r *ResponsiblePersonApi) DeleteResponsiblePerson(c *gin.Context)  {
+	var person typeManage.ResponsiblePerson
+	_ = c.ShouldBindJSON(&person)
+	//数据校验
+	if err := utils.Verify(person, utils.ResponsiblePersonVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := responsiblePersonService.DeleteResponsiblePerson(person);err != nil{
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+//批量删除
+func (r *ResponsiblePersonApi) DeleteResponsiblePersonsByIds(c *gin.Context)  {
+	var ids request.IdsReq
+	_ = c.ShouldBindJSON(&ids)
+	if err := responsiblePersonService.DeleteResponsiblePersonsByIds(ids);err != nil{
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+
+}
+
+//更新负责人信息
+func (r *ResponsiblePersonApi) UpdateResponsiblePerson(c *gin.Context)  {
+	var person typeManage.ResponsiblePerson
+	_ = c.ShouldBindJSON(&person)
+	if err := utils.Verify(person, utils.ResponsiblePersonVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := responsiblePersonService.UpdateResponsiblePerson(person);err != nil{
+		global.GVA_LOG.Error("修改失败!", zap.Error(err))
+		response.FailWithMessage("修改失败", c)
+	} else {
+		response.OkWithMessage("修改成功", c)
+	}
+
+}
+
+//获取单个负责人信息
+func (r *ResponsiblePersonApi) GetResponsiblePersonById(c *gin.Context)  {
+	var id request.GetById
+	_ = c.ShouldBindJSON(&id)
+	//数据校验
+	if err := utils.Verify(id, utils.IdVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if person, err := responsiblePersonService.GetResponsiblePersonById(id.ID);err != nil{
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(typeManageRes.ResponsiblePersonResponse{ResponsiblePerson: person}, "获取成功", c)
+	}
+}
+
+//条件查询所有负责人
+func (r *ResponsiblePersonApi) GetResponsiblePerson(c *gin.Context)  {
+	var pageInfo typeManage.SearchResponsiblePersonParams
+	_ = c.ShouldBindJSON(&pageInfo)
+	if err := utils.Verify(pageInfo, utils.ResponsiblePersonVerify);err != nil{
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if list, total, err := responsiblePersonService.GetResponsiblePerson(pageInfo.ResponsiblePerson, pageInfo.PageInfo, pageInfo.OrderKey, pageInfo.Desc);err != nil{
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		//响应结果
+		response.OkWithDetailed(response.PageResult{
+			List:     list,
+			Total:    total,
+			Page:     pageInfo.Page,
+			PageSize: pageInfo.PageSize,
+		}, "获取成功", c)
+	}
+}

+ 5 - 1
initialize/router.go

@@ -20,7 +20,7 @@ func Routers() *gin.Engine {
 	exampleRouter := router.RouterGroupApp.Example
 	logingRouter := router.RouterGroupApp.Loging
 	computerRouter := router.RouterGroupApp.Computer
-
+	typeManageRouter := router.RouterGroupApp.TypeManage
 	// 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的
 	// VUE_APP_BASE_API = /
 	// VUE_APP_BASE_PATH = http://localhost
@@ -54,6 +54,10 @@ func Routers() *gin.Engine {
 		logingRouter.InitLogingRouter(PublicGroup)
 		logingRouter.InitCodingLogRouter(PublicGroup)
 		computerRouter.InitComputerRouter(PublicGroup)
+		typeManageRouter.InitGameChannelRouter(PublicGroup)		//游戏渠道路由
+		typeManageRouter.InitGameListRouter(PublicGroup)		//游戏列表路由
+		typeManageRouter.InitLoginTypeRouter(PublicGroup)	//登录类型路由
+		typeManageRouter.InitResponsiblePersonRouter(PublicGroup)	//负责人路由
 	}
 	PrivateGroup := Router.Group("")
 	PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())

+ 11 - 0
model/typeManage/gameChannel.go

@@ -0,0 +1,11 @@
+package typeManage
+
+type GameChannel struct {
+	Id              int64     `gorm:"column:id;type:bigint(20);primaryKey" json:"id"`
+	ChannelName     string    `gorm:"column:channel_name;type:varchar(255);not null" json:"channelName" binding:"required"`
+	ChannelDesc     string    `gorm:"column:channel_desc;type:varchar(255);not null" json:"channelDesc" binding:"required"`
+	DisplaySequence int64     `gorm:"column:display_sequence;type:smallint" json:"displaySequence" binding:"required"`
+	GameCounts      int64     `gorm:"column:game_counts;type:int" json:"gameCounts" binding:"required"`
+	CreateTime      LocalTime `gorm:"column:create_time;type:TIMESTAMP;" json:"createTime"`
+	UpdateTime      LocalTime `gorm:"column:update_time;type:TIMESTAMP;" json:"updateTime"`
+}

+ 11 - 0
model/typeManage/gameList.go

@@ -0,0 +1,11 @@
+package typeManage
+
+type GameList struct {
+	Id        int64     `gorm:"column:id;"json:"id"`
+	GameName  string    `gorm:"column:game_name;"json:"game_name"`
+	GamePort  string    `gorm:"column:game_port;"json:"game_port"`
+	LoginType string    `gorm:"column:login_type;"json:"login_type"`
+	Remark    string    `gorm:"column:remark;"json:"remark"`
+	CreatedAt LocalTime `gorm:"column:create_time;type:TIMESTAMP;" json:"createdAt"`
+	UpdatedAt LocalTime `gorm:"column:update_time;type:TIMESTAMP;" json:"updatedAt"`
+}

+ 36 - 0
model/typeManage/localTime.go

@@ -0,0 +1,36 @@
+package typeManage
+
+import (
+	"database/sql/driver"
+	"fmt"
+	"time"
+)
+
+type LocalTime struct {
+	time.Time
+}
+
+// 2. 为 Xtime 重写 MarshaJSON 方法,在此方法中实现自定义格式的转换;
+func (t LocalTime) MarshalJSON() ([]byte, error) {
+	output := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05"))
+	return []byte(output), nil
+}
+
+// 3. 为 Xtime 实现 Value 方法,写入数据库时会调用该方法将自定义时间类型转换并写入数据库;
+func (t LocalTime) Value() (driver.Value, error) {
+	var zeroTime time.Time
+	if t.Time.UnixNano() == zeroTime.UnixNano() {
+		return nil, nil
+	}
+	return t.Time, nil
+}
+
+// 4. 为 Xtime 实现 Scan 方法,读取数据库时会调用该方法将时间数据转换成自定义时间类型;
+func (t *LocalTime) Scan(v interface{}) error {
+	value, ok := v.(time.Time)
+	if ok {
+		*t = LocalTime{Time: value}
+		return nil
+	}
+	return fmt.Errorf("can not convert %v to timestamp", v)
+}

+ 11 - 0
model/typeManage/loginType.go

@@ -0,0 +1,11 @@
+package typeManage
+
+type LoginType struct {
+	Id              int64     `gorm:"column:id;" json:"id"`
+	LoginName       string    `gorm:"column:login_name;" json:"login_name"`
+	LoginDesc       string    `gorm:"column:login_desc;" json:"login_desc"`
+	DisplaySequence int64     `gorm:"column:display_sequence;" json:"display_sequence"`
+	GameCounts      int64     `gorm:"column:game_counts;" json:"game_counts"`
+	CreatedAt       LocalTime `gorm:"column:create_time;" json:"createdAt"`
+	UpdatedAt       LocalTime `gorm:"column:update_time;" json:"updatedAt"`
+}

+ 6 - 0
model/typeManage/option.go

@@ -0,0 +1,6 @@
+package typeManage
+
+type Option struct {
+	GamePortOptions []string `column:"channel_name;"json:"channel_name"`
+	LoginTypeOptions []string `column:"login_name;"json:"login_name"`
+}

+ 9 - 0
model/typeManage/response/gameListPageResult.go

@@ -0,0 +1,9 @@
+package response
+
+type GameListPageResult struct {
+	List       interface{} `json:"list"`
+	OptionList interface{} `json:"option"`
+	Total      int64       `json:"total"`
+	Page       int         `json:"page"`
+	PageSize   int         `json:"pageSize"`
+}

+ 7 - 0
model/typeManage/response/tm_gameChannelResponse.go

@@ -0,0 +1,7 @@
+package response
+
+import "log-server/model/typeManage"
+
+type GameChannelResponse struct {
+	GameChannel typeManage.GameChannel `json:"gameChannel"`
+}

+ 7 - 0
model/typeManage/response/tm_gameListResponse.go

@@ -0,0 +1,7 @@
+package response
+
+import "log-server/model/typeManage"
+
+type GameListResponse struct {
+	GameList typeManage.GameList `json:"gameList"`
+}

+ 7 - 0
model/typeManage/response/tm_loginTypeResponse.go

@@ -0,0 +1,7 @@
+package response
+
+import "log-server/model/typeManage"
+
+type LoginTypeResponse struct {
+	LoginType typeManage.LoginType `json:"login_type"`
+}

+ 7 - 0
model/typeManage/response/tm_responsiblePersonResponse.go

@@ -0,0 +1,7 @@
+package response
+
+import "log-server/model/typeManage"
+
+type ResponsiblePersonResponse struct {
+	ResponsiblePerson typeManage.ResponsiblePerson `json:"responsible_person"`
+}

+ 15 - 0
model/typeManage/responsiblePerson.go

@@ -0,0 +1,15 @@
+package typeManage
+
+type ResponsiblePerson struct {
+	Id                int64     `json:"id"`
+	Img               string    `json:"img"`
+	Name              string    `json:"name"`
+	Nickname          string    `json:"nickname"`
+	DepartmentName    string    `json:"department_name"`
+	MobilePhoneNumber string    `json:"mobile_phone_number"`
+	GameCounts        int64     `json:"game_counts"`
+	Remark            string    `json:"remark"`
+	State             int8      `json:"state"`
+	CreateTime        LocalTime `gorm:"column:create_time;" json:"createTime"`
+	UpdateTime        LocalTime `gorm:"column:update_time;" json:"updateTime"`
+}

+ 13 - 0
model/typeManage/searchGameChannelParams.go

@@ -0,0 +1,13 @@
+package typeManage
+
+import (
+	"log-server/model/common/request"
+)
+
+// gameChannel分页条件查询及排序结构体
+type SearchGameChannelParams struct {
+	GameChannel
+	request.PageInfo
+	OrderKey string `json:"orderKey"` // 排序
+	Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+}

+ 12 - 0
model/typeManage/searchGameListParams.go

@@ -0,0 +1,12 @@
+package typeManage
+
+import "log-server/model/common/request"
+
+type SearchGameListParams struct {
+	GameList
+	request.PageInfo
+	OrderKey    string `json:"orderKey"` // 排序
+	Desc        bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+	SearchKey   string `json:"searchKey"`
+	SearchValue string `json:"searchValue"`
+}

+ 10 - 0
model/typeManage/searchLoginTypeParams.go

@@ -0,0 +1,10 @@
+package typeManage
+
+import "log-server/model/common/request"
+
+type SearchLoginTypeParams struct {
+	LoginType
+	request.PageInfo
+	OrderKey    string `json:"orderKey"` // 排序
+	Desc        bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+}

+ 10 - 0
model/typeManage/searchResponsiblePersonParams.go

@@ -0,0 +1,10 @@
+package typeManage
+
+import "log-server/model/common/request"
+
+type SearchResponsiblePersonParams struct {
+	ResponsiblePerson
+	request.PageInfo
+	OrderKey    string `json:"orderKey"` // 排序
+	Desc        bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true
+}

+ 2 - 0
router/enter.go

@@ -4,6 +4,7 @@ import (
 	"log-server/router/example"
 	"log-server/router/log"
 	"log-server/router/system"
+	"log-server/router/typeManage"
 )
 
 type RouterGroup struct {
@@ -11,6 +12,7 @@ type RouterGroup struct {
 	Example  example.RouterGroup
 	Loging   log.RouterGroup
 	Computer log.ComputerRouter
+	TypeManage typeManage.RouterGroup
 }
 
 var RouterGroupApp = new(RouterGroup)

+ 10 - 0
router/typeManage/enter.go

@@ -0,0 +1,10 @@
+package typeManage
+
+type RouterGroup struct {
+    // Code generated by github.com/flipped-aurora/gin-vue-admin/server Begin; DO NOT EDIT.
+	// Code generated by github.com/flipped-aurora/gin-vue-admin/server End; DO NOT EDIT.
+	GameChannelRouter
+	GameListRouter
+	LoginTypeRouter
+	ResponsiblePersonRouter
+}

+ 22 - 0
router/typeManage/gameChannel.go

@@ -0,0 +1,22 @@
+package typeManage
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
+)
+
+type GameChannelRouter struct{}
+
+func (g *GameChannelRouter) InitGameChannelRouter(Router *gin.RouterGroup) {
+	gameChannelRouter := Router.Group("gameChannel")
+	gameChannelApi := v1.ApiGroupApp.TypeApiGroup.GameChannelApi
+	{
+		gameChannelRouter.POST("createGameChannel",gameChannelApi.CreateGameChannel)          // 增加游戏厂商
+		gameChannelRouter.POST("deleteGameChannel",gameChannelApi.DeleteGameChannel)          // 删除单个游戏厂商
+		gameChannelRouter.POST("updateGameChannel",gameChannelApi.UpdateGameChannel)          // 更新厂商信息
+		gameChannelRouter.DELETE("deleteGameChannelsByIds", gameChannelApi.DeleteGameChannelsByIds)		//批量删除
+		gameChannelRouter.POST("getGameChannelList",gameChannelApi.GameChannelList)          // 查询所有游戏厂商
+		gameChannelRouter.POST("getGameChannelById", gameChannelApi.GetGameChannelById) 		//获取单条厂商信息
+
+	}
+}

+ 24 - 0
router/typeManage/gameList.go

@@ -0,0 +1,24 @@
+package typeManage
+
+import (
+	v1 "log-server/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type GameListRouter struct {
+
+}
+
+func (g *GameListRouter) InitGameListRouter(Router *gin.RouterGroup)  {
+	gameListRouter := Router.Group("gameList")
+	gameListApi := v1.ApiGroupApp.TypeApiGroup.GameListApi
+	{
+
+		gameListRouter.POST("createGameList",gameListApi.CreateGameList)          // 增加游戏列表
+		gameListRouter.POST("deleteGameList",gameListApi.DeleteGameList)          // 删除单个游戏列表
+		gameListRouter.POST("updateGameList",gameListApi.UpdateGameList)          // 更新游戏列表信息
+		gameListRouter.DELETE("deleteGameListsByIds", gameListApi.DeleteGameListsByIds)		//批量删除
+		gameListRouter.POST("getGameList",gameListApi.GetGameList)          // 查询所有游戏列表
+		gameListRouter.POST("getGameListById", gameListApi.GetGameListById) 		//获取单条游戏列表
+	}
+}

+ 22 - 0
router/typeManage/loginType.go

@@ -0,0 +1,22 @@
+package typeManage
+
+import (
+	v1 "log-server/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type LoginTypeRouter struct {}
+
+func (l *LoginTypeRouter) InitLoginTypeRouter(Router *gin.RouterGroup)  {
+	loginTypeRouter := Router.Group("loginType")
+	loginTypeApi := v1.ApiGroupApp.TypeApiGroup.LoginTypeApi
+	{
+
+		loginTypeRouter.POST("createLoginType",loginTypeApi.CreateLoginType)          // 增加登录类型
+		loginTypeRouter.POST("deleteLoginType",loginTypeApi.DeleteLoginType)          // 删除单个登录类型
+		loginTypeRouter.DELETE("deleteLoginTypesByIds", loginTypeApi.DeleteLoginTypesByIds)		//批量删除
+		loginTypeRouter.POST("updateLoginType",loginTypeApi.UpdateLoginType)          // 更新登录类型信息
+		loginTypeRouter.POST("getLoginTypeById", loginTypeApi.GetLoginTypeById) 		//获取单条登录类型
+		loginTypeRouter.POST("getLoginType",loginTypeApi.GetLoginType)          // 查询所有登录类型
+	}
+}

+ 21 - 0
router/typeManage/responsiblePerson.go

@@ -0,0 +1,21 @@
+package typeManage
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "log-server/api/v1"
+)
+
+type ResponsiblePersonRouter struct {}
+
+func (r *ResponsiblePersonRouter) InitResponsiblePersonRouter(Router *gin.RouterGroup)  {
+	responsiblePersonRouter := Router.Group("responsiblePerson")
+	responsiblePersonApi := v1.ApiGroupApp.TypeApiGroup.ResponsiblePersonApi
+	{
+		responsiblePersonRouter.POST("createResponsiblePerson",responsiblePersonApi.CreateResponsiblePerson)          // 增加负责人
+		responsiblePersonRouter.POST("deleteResponsiblePerson",responsiblePersonApi.DeleteResponsiblePerson)          // 删除单个负责人
+		responsiblePersonRouter.DELETE("deleteResponsiblePersonsByIds", responsiblePersonApi.DeleteResponsiblePersonsByIds)		//批量删除
+		responsiblePersonRouter.POST("updateResponsiblePerson",responsiblePersonApi.UpdateResponsiblePerson)          // 更新负责人信息
+		responsiblePersonRouter.POST("getResponsiblePersonById", responsiblePersonApi.GetResponsiblePersonById) 		//获取单个负责人信息
+		responsiblePersonRouter.POST("getResponsiblePerson",responsiblePersonApi.GetResponsiblePerson)          // 条件查询所有负责人
+	}
+}

+ 2 - 0
service/enter.go

@@ -4,12 +4,14 @@ import (
 	"log-server/service/example"
 	"log-server/service/log"
 	"log-server/service/system"
+	"log-server/service/typeManage"
 )
 
 type ServiceGroup struct {
 	SystemServiceGroup  system.ServiceGroup
 	ExampleServiceGroup example.ServiceGroup
 	LogServiceGroup     log.ServiceGroup
+	TypeServiceGroup    typeManage.ServiceGroup
 }
 
 var ServiceGroupApp = new(ServiceGroup)

+ 12 - 0
service/typeManage/enter.go

@@ -0,0 +1,12 @@
+package typeManage
+
+type ServiceGroup struct {
+    // Code generated by github.com/flipped-aurora/gin-vue-admin/server Begin; DO NOT EDIT.
+
+	// Code generated by github.com/flipped-aurora/gin-vue-admin/server End; DO NOT EDIT.
+	GameChannelService
+	GameListService
+	LoginTypeService
+	ResponsiblePersonService
+}
+

+ 114 - 0
service/typeManage/tm_gameChannel.go

@@ -0,0 +1,114 @@
+package typeManage
+
+import (
+	"errors"
+	"fmt"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/typeManage"
+)
+
+type GameChannelService struct {
+
+}
+
+
+//添加游戏渠道
+func (g *GameChannelService) CreateGameChannel(channel typeManage.GameChannel) (err error)  {
+	if !errors.Is(global.GVA_DB.Table("game_channel").Where("channel_name = ?",channel.ChannelName).First(&typeManage.GameChannel{}).Error, gorm.ErrRecordNotFound) {
+		return errors.New("已存在相同渠道,请勿重复添加")
+	}
+	return global.GVA_DB.Table("game_channel").Omit("create_time", "update_time").Create(&channel).Error
+}
+
+
+//删除游戏渠道
+func (g *GameChannelService) DeleteGameChannel(channel typeManage.GameChannel) (err error)  {
+	var entity typeManage.GameChannel
+	err = global.GVA_DB.Table("game_channel").Where("id = ?", channel.Id).First(&entity).Error
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return err
+	}
+	return global.GVA_DB.Table("game_channel").Delete(&entity).Error
+}
+
+
+//批量删除
+func (g *GameChannelService) DeleteGameChannelsByIds(ids request.IdsReq) (err error)  {
+
+	err = global.GVA_DB.Table("game_channel").Delete(&[]typeManage.GameChannel{}, "id in ?", ids.Ids).Error
+	return err
+}
+
+
+
+//更改渠道信息
+func (g *GameChannelService) UpdateGameChannel(channel typeManage.GameChannel) (err error) {
+	if !errors.Is(global.GVA_DB.Table("game_channel").Where("channel_name = ? and id != ?", channel.ChannelName, channel.Id).First(&typeManage.GameChannel{}).Error,gorm.ErrRecordNotFound) {
+		return errors.New("已存在相同渠道,无法更新")
+	}
+	return global.GVA_DB.Table("game_channel").Updates(&channel).Error
+}
+
+//通过id查询
+func (g *GameChannelService) GetGameChannelById(id int) (channel typeManage.GameChannel, err error)  {
+	err = global.GVA_DB.Table("game_channel").Where("id = ?", id).First(&channel).Error
+	return
+}
+
+//条件查询
+func (g *GameChannelService) GetGameChannelInfoList(channel typeManage.GameChannel, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error)  {
+	limit := info.PageSize
+	offset := (info.Page - 1) * info.PageSize
+
+	//先更新游戏数量的值
+	global.GVA_DB.Exec("update `game_channel` gc set game_counts = (SELECT COUNT(gl.game_port) FROM game_list gl WHERE gc.channel_name = gl.game_port);")
+
+	//对结构体进行操作
+	db := global.GVA_DB.Table("game_channel").Model(&typeManage.GameChannel{})
+	var channelList []typeManage.GameChannel
+
+	if channel.ChannelName != "" {
+		db = db.Where("channel_name like ?", "%" + channel.ChannelName + "%")
+	}
+
+	//查询是否有错误
+	err = db.Count(&total).Error
+	if err != nil {
+		return channelList, total, err
+	} else {
+		//如果没有出错,先过滤,再排序
+		db = db.Limit(limit).Offset(offset)
+		//对字段进行排序,要求是页面显示出来的所有字段,否则默认按照厂商名称来进行排序
+		//首先新建一个集合,用来防止恶意注入
+		if order != "" {
+			var orderStr string
+			orderMap := make(map[string]bool, 6)
+			orderMap["channel_name"] = true
+			orderMap["channel_desc"] = true
+			orderMap["display_sequence"] = true
+			orderMap["game_counts"] = true
+			orderMap["create_time"] = true
+			orderMap["update_time"] = true
+			//传入的排序字段在合法范围内
+			if orderMap[order] {
+				if desc {
+					orderStr = order + " desc"
+				} else {
+					orderStr = order
+				}
+			} else {
+				//传入排序字段非法
+				err = fmt.Errorf("传入非法字段 %v", order)
+				return channelList, total, err
+			}
+			//按照给定的排序字段以及排序规则来进行排序
+			err = db.Order(orderStr).Find(&channelList).Error
+		} else {
+			//没有传入排序字段,直接按照厂商名称默认排序
+			err = db.Order("channel_name").Find(&channelList).Error
+		}
+	}
+	return channelList, total, err
+}

+ 143 - 0
service/typeManage/tm_gameList.go

@@ -0,0 +1,143 @@
+package typeManage
+
+import (
+	"errors"
+	"fmt"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/typeManage"
+)
+
+type GameListService struct{}
+
+//创建游戏列表
+func (g *GameListService) CreateGameList(game typeManage.GameList) (err error)  {
+	//查询是否有同名游戏
+	if !errors.Is(global.GVA_DB.Table("game_list").Where("game_name = ? and game_port = ? and login_type = ?",game.GameName, game.GamePort, game.LoginType).First(&typeManage.GameChannel{}).Error, gorm.ErrRecordNotFound) {
+		return errors.New("已存在相同游戏,请勿重复添加")
+	}
+	return global.GVA_DB.Table("game_list").Omit("create_time", "update_time").Create(&game).Error
+}
+
+//删除游戏列表
+func (g *GameListService) DeleteGameList(game typeManage.GameList) (err error)  {
+	var entity typeManage.GameList
+	err = global.GVA_DB.Table("game_list").Where("id = ?", game.Id).First(&entity).Error
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return err
+	}
+	return global.GVA_DB.Table("game_list").Delete(&entity).Error
+}
+
+//批量删除
+func (g *GameListService) DeleteGameListsByIds(ids request.IdsReq) (err error) {
+	err = global.GVA_DB.Table("game_list").Delete(&[]typeManage.GameList{}, "id in ?", ids.Ids).Error
+	return err
+}
+
+
+//更改游戏列表
+func (g *GameListService) UpdateGameList(game typeManage.GameList) (err error) {
+	//查询是否有相同游戏
+	err = global.GVA_DB.Table("game_list").Where("id != ? and game_name = ? and game_port = ? and login_type = ?",
+		game.Id, game.GameName, game.GamePort, game.LoginType).First(&typeManage.GameList{}).Error
+	if !errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("已存在相同游戏,无法更新")
+	}
+	return global.GVA_DB.Table("game_list").Updates(&game).Error
+}
+
+
+
+
+
+
+//单个查询
+func (g *GameListService) GetGameListById(id int) (gameList typeManage.GameList, err error)  {
+	err = global.GVA_DB.Table("game_list").Where("id = ?", id).First(&gameList).Error
+	return
+}
+
+
+//条件查询
+func (g *GameListService) GetGameList(game typeManage.SearchGameListParams, info request.PageInfo, order string, desc bool) (list interface{}, options interface{}, total int64, err error) {
+	//计算limit和offset
+	limit := info.PageSize
+	offset := (info.Page - 1) * limit
+
+	//登录方式和游戏厂商获取
+	option := typeManage.Option{}
+
+	//首先判断登录方式和游戏厂商存不存在,如果不存在,就不必find了
+	//判断是否有记录,如果有就查询,如果没有,报错
+	//有记录
+	//err = global.GVA_DB.Table("game_channel").Model(&typeManage.GameChannel{}).Count(&total).Error
+	//if err != nil {
+	//
+	//}
+	global.GVA_DB.Table("game_channel").Select("channel_name").Find(&option.GamePortOptions)
+
+	//判断是否有记录,如果有就查询,如果没有,报错
+	//有记录
+	global.GVA_DB.Table("login_type").Select("login_name").Find(&option.LoginTypeOptions)
+
+
+	fmt.Println(option)
+
+
+
+
+
+	//绑定操作model
+	db := global.GVA_DB.Table("game_list").Model(&typeManage.GameList{})
+	var gameList []typeManage.GameList
+	//通过传输的前端信息进行like查询过滤,此后总记录就不会再变,只会进行分页排序等软业务。所以查找总数
+	//if game.GameName != "" {
+	//	db.Where("game_name like ?", "%"+game.GameName+"%")
+	//}
+	//if game.GamePort != "" {
+	//	db.Where("game_port like ?", "%"+game.GamePort+"%")
+	//}
+	//if game.LoginType != "" {
+	//	db.Where("login_type like ?", "%"+game.LoginType+"%")
+	//}
+	if game.SearchValue != "" {
+		db.Where(game.SearchKey + " like ?", "%"+game.SearchValue+"%")
+	}
+	//记录总数
+	err = db.Count(&total).Error
+	//分页
+	if err != nil {
+		return gameList,option, total, err
+	} else {
+		db.Limit(limit).Offset(offset)
+		//如果传入排序规则,则按照排序规则排序,否则默认按照游戏名称排序
+		if order != "" {
+			//为了防止sql注入,本次采取初始化map方法
+			var orderStr string
+			orderMap := make(map[string]bool, 3)
+			orderMap["game_name"] = true
+			orderMap["create_time"] = true
+			orderMap["update_time"] = true
+			if orderMap[order] {
+				if desc {
+					orderStr = order + " desc"
+				} else {
+					orderStr = order
+				}
+			} else {
+				//传入排序字段非法
+				err = fmt.Errorf("传入非法字段 %v", order)
+				return gameList,option, total, err
+			}
+			//通过排序规则加以排序
+			err = db.Order(orderStr).Find(&gameList).Error
+		} else {
+			//没有传入排序字段,按默认排序
+			err = db.Order("game_name").Find(&gameList).Error
+		}
+		//返回
+		return gameList,option, total, err
+	}
+}

+ 122 - 0
service/typeManage/tm_loginType.go

@@ -0,0 +1,122 @@
+package typeManage
+
+import (
+	"errors"
+	"fmt"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/typeManage"
+)
+
+type LoginTypeService struct {}
+
+
+//创建登录类型
+func (l *LoginTypeService) CreateLoginType(login typeManage.LoginType) (err error) {
+	//查找是否有同名登录名称
+	err = global.GVA_DB.Table("login_type").Where("login_name = ?", login.LoginName).First(&typeManage.LoginType{}).Error
+	if !errors.Is(err, gorm.ErrRecordNotFound){
+		//找到同名登录名称
+		return errors.New("已存在相同登录方式,请勿重复添加")
+	}
+	return global.GVA_DB.Table("login_type").Omit("create_time", "update_time").Create(&login).Error
+}
+
+//单个删除
+func (l *LoginTypeService) DeleteLoginType(login typeManage.LoginType) (err error) {
+	//单个删除的时候实例化一个实体
+	//为什么实例化一个实体,推测是以求保险
+	//先用这个实体接收合适的id值所对应的记录,再直接删除这个实体,防止误操作
+	var entity typeManage.LoginType
+	//查询是否有这条记录存在
+	err = global.GVA_DB.Table("login_type").Where("id = ?", login.Id).First(&entity).Error
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return err
+	}
+	return global.GVA_DB.Table("login_type").Delete(&entity).Error
+}
+
+
+
+
+//批量删除
+func (l *LoginTypeService) DeleteLoginTypesByIds(ids request.IdsReq) (err error)  {
+	err = global.GVA_DB.Table("login_type").Delete(&[]typeManage.LoginType{}, "id in ?", ids.Ids).Error
+	return err
+}
+
+
+
+//更改登录类型
+func (l *LoginTypeService) UpdateLoginType(login typeManage.LoginType) (err error)  {
+	err = global.GVA_DB.Table("login_type").Where("id != ? and login_name = ?", login.Id, login.LoginName).First(&typeManage.LoginType{}).Error
+	if !errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("已存在同名登录方式,修改失败")
+	}
+	return global.GVA_DB.Table("login_type").Updates(&login).Error
+}
+
+
+
+
+//通过id查询单个登录类型
+func (l *LoginTypeService) GetLoginTypeById(id int) (loginType typeManage.LoginType, err error) {
+	err = global.GVA_DB.Table("login_type").Where("id = ?", id).First(&loginType).Error
+	return
+}
+
+
+//条件查询
+func (l *LoginTypeService) GetLoginType(loginType typeManage.LoginType, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
+	//先求offset和limit
+	limit := info.PageSize
+	offset := (info.Page - 1) * info.PageSize
+
+	//先更新游戏数量的值
+	global.GVA_DB.Exec("update `login_type` lt set game_counts = (SELECT COUNT(gl.login_type) FROM game_list gl WHERE lt.login_name = gl.login_type);")
+
+
+	//确定操作的model
+	db := global.GVA_DB.Table("login_type").Model(&typeManage.LoginType{})
+	var loginList []typeManage.LoginType
+	//先过滤(查询条件)再排序
+	if loginType.LoginName != "" {
+		db.Where("login_name like ?", "%"+loginType.LoginName+"%")
+	}
+	//记录总数
+	if err = db.Count(&total).Error;err != nil {
+		//没有复合条件,直接返回
+		return loginList, total, err
+	} else {
+		//如果有符合条件的,先分页,再排序
+		db.Limit(limit).Offset(offset)
+		if order != "" {
+			//传入排序字段,为避免sql注入,需要一个数组
+			var orderStr string
+			orderMap := make(map[string]bool, 5)
+			orderMap["login_name"] = true
+			orderMap["display_sequence"] = true
+			orderMap["game_counts"] = true
+			orderMap["create_time"] = true
+			orderMap["update_time"] = true
+			//传入字符串在合法范围内
+			if orderMap[order] {
+				if desc {
+					orderStr = order + " desc"
+				} else {
+					orderStr = order
+				}
+			} else {
+				//传入排序字段非法
+				err = fmt.Errorf("传入非法字段 %v", order)
+				return loginList, total, err
+			}
+			err = db.Order(orderStr).Find(&loginList).Error
+		} else {
+			//未传入排序字段,默认按登录名称降序
+			err = db.Order("login_name desc").Find(&loginList).Error
+		}
+	}
+	return loginList, total, err
+}

+ 157 - 0
service/typeManage/tm_responsiblePerson.go

@@ -0,0 +1,157 @@
+package typeManage
+
+import (
+	"errors"
+	"fmt"
+	"gorm.io/gorm"
+	"log-server/global"
+	"log-server/model/common/request"
+	"log-server/model/typeManage"
+	"math/rand"
+)
+
+func RandomString(n int) string {
+	var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
+
+	b := make([]rune, n)
+	for i := range b {
+		b[i] = letterRunes[rand.Intn(len(letterRunes))]
+	}
+	return string(b)
+}
+
+
+type ResponsiblePersonService struct {
+}
+
+//创建负责人
+func (r *ResponsiblePersonService) CreateResponsiblePerson(person typeManage.ResponsiblePerson) (err error) {
+	//先查找是否存在同名员工
+	err = global.GVA_DB.Table("responsible_person").Where("name = ? and mobile_phone_number = ?", person.Name, person.MobilePhoneNumber).First(&typeManage.ResponsiblePerson{}).Error
+	if !errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("已存在同名员工,请勿重复添加")
+	}
+	//不存在同名员工
+	//根据image是否为空来判断是否需要图片处理
+	fmt.Println(person.Img)
+	//if person.Img != "" {
+	//	var (
+	//		enc  = base64.StdEncoding
+	//		path string
+	//	)
+	//	img := person.Img
+	//	timestamp:=strconv.Itoa(int(time.Now().UnixNano()))
+	//	randomStr := (RandomString(5))
+	//	imgId := timestamp+"_"+randomStr
+	//
+	//	if img[11] == 'j' {
+	//		img = img[23:]
+	//		path = fmt.Sprintf("/img/%s.jpg", imgId)
+	//	} else if img[11] == 'p' {
+	//		img = img[22:]
+	//		path = fmt.Sprintf("/img/%s.png", imgId)
+	//	} else if img[11] == 'g' {
+	//		img = img[22:]
+	//		path = fmt.Sprintf("/img/%s.gif", imgId)
+	//	} else {
+	//		fmt.Println("不支持该文件类型")
+	//	}
+	//
+	//	data, err := enc.DecodeString(img)
+	//	if err != nil {
+	//		log.Println(err.Error())
+	//	}
+	//	// 图片写入文件
+	//	f, _ := os.OpenFile(path, os.O_RDWR|os.O_CREATE, os.ModePerm)
+	//	defer f.Close()
+	//	if _, err := f.Write(data); err != nil {
+	//		log.Println(err)
+	//	}
+	//	//记录图片保存的地址
+	//	path = "https://qmplusimg.henrongyi.top" + path
+	//	person.Img = path
+	//
+	//}
+	//数据库插入
+	return global.GVA_DB.Table("responsible_person").Omit("create_time", "update_time").Create(&person).Error
+}
+
+
+//删除负责人
+func (r *ResponsiblePersonService) DeleteResponsiblePerson(person typeManage.ResponsiblePerson) (err error) {
+	var entity typeManage.ResponsiblePerson
+	err = global.GVA_DB.Table("responsible_person").Where("id = ?", person.Id).First(&entity).Error
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("未找到记录,删除失败")
+	}
+	return global.GVA_DB.Table("responsible_person").Delete(&entity).Error
+}
+
+//批量删除
+func (r *ResponsiblePersonService) DeleteResponsiblePersonsByIds(ids request.IdsReq) (err error) {
+	err = global.GVA_DB.Table("responsible_person").Delete(&[]typeManage.ResponsiblePerson{}, "id in ?", ids.Ids).Error
+	return err
+}
+
+
+//更改记录
+func (r *ResponsiblePersonService) UpdateResponsiblePerson(person typeManage.ResponsiblePerson) (err error)  {
+	err = global.GVA_DB.Table("responsible_person").Where("id != ? and name = ?", person.Id, person.Name).First(&typeManage.ResponsiblePerson{}).Error
+	if !errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("已存在相同名字,无法更改")
+	}
+	return global.GVA_DB.Table("responsible_person").Updates(&person).Error
+}
+
+
+//通过id查询负责人
+func (r *ResponsiblePersonService) GetResponsiblePersonById(id int) (person typeManage.ResponsiblePerson, err error)  {
+	err = global.GVA_DB.Table("responsible_person").Where("id = ?", id).First(&person).Error
+	return
+}
+
+
+
+//条件查询负责人
+func(r *ResponsiblePersonService) GetResponsiblePerson(person typeManage.ResponsiblePerson, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
+	//获取分页数据
+	limit := info.PageSize
+	offset := (info.Page - 1) * info.PageSize
+	//绑定操作结构体
+	db := global.GVA_DB.Table("responsible_person").Model(&typeManage.ResponsiblePerson{})
+	var personList []typeManage.ResponsiblePerson
+	//条件查询
+	if person.Name != "" {
+		db.Where("name like ?","%"+person.Name+"%")
+	}
+	//先过滤在排序
+	if err = db.Count(&total).Error;err != nil{
+		return personList, total, err
+	} else {
+		//分页
+		db.Limit(limit).Offset(offset)
+		//判断是否有排序字段
+		if order != ""{
+			var orderStr string
+			orderMap := make(map[string]bool, 1)
+			orderMap["create_time"] = true
+			if orderMap[order] {
+				//合法排序字符
+				if desc {
+					orderStr = order + " desc"
+				} else {
+					orderStr = order
+				}
+			} else {
+				//传入排序字段非法
+				err = fmt.Errorf("传入非法字段 %v", order)
+				return personList, total, err
+			}
+			err = db.Order(orderStr).Find(&personList).Error
+		} else {
+			//默认按照名字升序排序
+			err = db.Order("name").Find(&personList).Error
+		}
+	}
+	return personList, total, err
+}

+ 7 - 0
utils/verify.go

@@ -19,4 +19,11 @@ var (
 	LogCodingVerify        = Rules{"Coding": {NotEmpty()}, "Describe": {NotEmpty()}}
 	LogAddVerify           = Rules{"LogUuid": {NotEmpty()}, "Coding": {NotEmpty()}}
 	PcVerify               = Rules{"PcCode": {NotEmpty()}, "User": {NotEmpty()}, "Supplier": {NotEmpty()}}
+
+
+	//自己添加的校验
+	GameChannelVerify = Rules{"ChannelName": {NotEmpty()}, "ChannelDesc": {NotEmpty()}, "DisplaySequence": {NotEmpty()}}
+	GameListVerify = Rules{"GameName": {NotEmpty()}, "GamePort": {NotEmpty()}, "LoginType": {NotEmpty()}}
+	LoginTypeVerify = Rules{"LoginName": {NotEmpty()}, "LoginDesc": {NotEmpty()}}
+	ResponsiblePersonVerify = Rules{"Name": {NotEmpty()}}
 )