Bläddra i källkod

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	model/typeManage/responsiblePerson.go
#	router/log/loging.go
wangbin 3 år sedan
förälder
incheckning
7105913864

+ 1 - 0
api/v1/log/enter.go

@@ -18,4 +18,5 @@ var (
 	ServiceReportPointsLog = service.ServiceGroupApp.LogServiceGroup.ServiceReportPointsLog
 	ServiceStatisticsLog   = service.ServiceGroupApp.LogServiceGroup.ServiceStatisticsLog
 	ServiceComputer        = service.ServiceGroupApp.LogServiceGroup.ServiceComputer
+	ServiceIpLog		   = service.ServiceGroupApp.LogServiceGroup.ServiceIpLog
 )

+ 30 - 0
api/v1/log/loging.go

@@ -130,6 +130,36 @@ func (s *ApiLoging) GetReportPointsLogList(c *gin.Context) {
 }
 
 // @Tags loging
+// @Summary 获取iplog
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body request.IpLogListRequest true "获取iplog"
+// @Success 200 {object} response.Response{data=log2.IpLog} "获取iplog列表"
+// @Router /loging/getIpLogList [post]
+func (s *ApiLoging) GetIpLogList(c *gin.Context) {
+	var paramsInfo request.IpLogListRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	list, total, err := ServiceIpLog.GetIpLogList(paramsInfo.IpLogRequest, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
+	if err != nil {
+		global.GVA_LOG.Error("获取失败!", zap.Error(err))
+		response.FailWithMessage("获取失败", c)
+	} else {
+		response.OkWithDetailed(response.PageResult{
+			List:     list,
+			Total:    total,
+			Page:     paramsInfo.Page,
+			PageSize: paramsInfo.PageSize,
+		}, "获取成功", c)
+	}
+}
+
+
+// @Tags loging
 // @Summary 获取统计节点log
 // @Security ApiKeyAuth
 // @accept application/json

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

@@ -7,6 +7,7 @@ import (
 	"log-server/model/common/request"
 	"log-server/model/common/response"
 	"log-server/model/typeManage"
+	typeManageReq "log-server/model/typeManage/request"
 	typeManageRes "log-server/model/typeManage/response"
 	"log-server/utils"
 )
@@ -17,6 +18,14 @@ type ResponsiblePersonApi struct{}
 func (r *ResponsiblePersonApi) CreateResponsiblePerson(c *gin.Context) {
 	var responsiblePerson typeManage.ResponsiblePerson
 	_ = c.ShouldBindJSON(&responsiblePerson)
+	//推送状态和启用状态默认赋予1
+	if responsiblePerson.PushStatus == 0 {
+		responsiblePerson.PushStatus = 1
+	}
+	if responsiblePerson.State == 0 {
+		responsiblePerson.State = 1
+	}
+
 	if err := utils.Verify(responsiblePerson, utils.ResponsiblePersonVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
 		return
@@ -63,6 +72,11 @@ func (r *ResponsiblePersonApi) DeleteResponsiblePersonsByIds(c *gin.Context) {
 func (r *ResponsiblePersonApi) UpdateResponsiblePerson(c *gin.Context) {
 	var person typeManage.ResponsiblePerson
 	_ = c.ShouldBindJSON(&person)
+	//获取托管状态, 1是托管, -1不需要托管
+	//不需要托管
+	//if person.ManagedStatus == -1 {
+	//	person.Custodians = ""
+	//}
 	if err := utils.Verify(person, utils.ResponsiblePersonVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
 		return
@@ -143,3 +157,43 @@ func (r *ResponsiblePersonApi) SelectResponsiblePerson(c *gin.Context) {
 		response.OkWithDetailed(list, "获取成功", c)
 	}
 }
+
+//更改负责人启用状态
+func (r *ResponsiblePersonApi) StatusChange(c *gin.Context) {
+	var paramsInfo typeManageReq.UpdateResponsibleStatusRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	if paramsInfo.State == 0 {
+		response.FailWithMessage("状态值不能为空", c)
+		return
+	}
+	if paramsInfo.Id == 0 {
+		response.FailWithMessage("Id不能为空", c)
+		return
+	}
+	if err := responsiblePersonService.UpdateResponsibleStatus(paramsInfo); err != nil {
+		global.GVA_LOG.Error("修改失败!", zap.Error(err))
+		response.FailWithMessage(err.Error(), c)
+	} else {
+		response.OkWithMessage("修改成功", c)
+	}
+}
+
+//更改负责人推送状态
+func (r *ResponsiblePersonApi) PushStatusChange(c *gin.Context) {
+	var paramsInfo typeManageReq.UpdatePushStatusRequest
+	_ = c.ShouldBindJSON(&paramsInfo)
+	if paramsInfo.PushStatus == 0 {
+		response.FailWithMessage("状态值不能为空", c)
+		return
+	}
+	if paramsInfo.Id == 0 {
+		response.FailWithMessage("Id不能为空", c)
+		return
+	}
+	if err := responsiblePersonService.UpdatePushStatus(paramsInfo); err != nil {
+		global.GVA_LOG.Error("修改失败!", zap.Error(err))
+		response.FailWithMessage(err.Error(), c)
+	} else {
+		response.OkWithMessage("修改成功", c)
+	}
+}

+ 37 - 0
model/log/log_ip.go

@@ -0,0 +1,37 @@
+package log
+
+type IpLog struct {
+	Id         	uint    `json:"id"`
+	Ip     		string  `json:"ip"`	//模拟器ip
+	LogUuid   	string 	`json:"log_uuid"`	//日志UUID
+	GameId		int 	`json:"game_id"`	//游戏id
+	Account 	string 	`json:"account"`	//账号
+	PcCode 		string 	`json:"pc_code"`	//电脑编号
+	CreateDate  string 	`json:"create_date"` // 创建日期
+	CreateTime  string 	`json:"create_time"` // 创建时间
+}
+
+type IpLogRequest struct {
+	Id         	uint    `json:"id"`
+	Ip     		string  `json:"ip"`	//模拟器ip
+	Date		[]string	`json:"date"`
+	LogUuid   	string 	`json:"log_uuid"`	//日志UUID
+	GameId		int 	`json:"game_id"`	//游戏id
+	Account 	string 	`json:"account"`	//账号
+	PcCode 		string 	`json:"pc_code"`	//电脑编号
+	CreateDate  string 	`json:"create_date"` // 创建日期
+	CreateTime  string 	`json:"create_time"` // 创建时间
+}
+
+type IpLogResponse struct {
+	Ip     		string  `json:"ip"`	//模拟器ip
+	PcCode 		string 	`json:"pc_code"`	//电脑编号
+	GameId		int 	`json:"game_id"`	//游戏id
+	CreateDate  string 	`json:"create_date"` // 创建日期
+	CountTotal  int		`json:"count_total"`	//总数
+	CountDistinctIp	int	`json:"count_distinct_ip"`
+}
+
+func (IpLog) TableName() string {
+	return "ip_log"
+}

+ 10 - 0
model/log/request/log_ip.go

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

+ 11 - 0
model/typeManage/request/responsible_status.go

@@ -0,0 +1,11 @@
+package request
+
+type UpdateResponsibleStatusRequest struct {
+	State int `json:"state"` // 状态-1关闭,1开启
+	Id int `json:"id"`
+}
+
+type UpdatePushStatusRequest struct {
+	PushStatus int `json:"state"` // 状态-1关闭,1开启
+	Id int `json:"id"`
+}

+ 2 - 0
model/typeManage/responsiblePerson.go

@@ -12,8 +12,10 @@ type ResponsiblePerson struct {
 	DepartmentName    string    `json:"department_name"`
 	MobilePhoneNumber string    `json:"mobile_phone_number"`
 	GameCounts        int64     `json:"game_counts"`
+	Custodians		  string	`json:"custodians"`
 	Remark            string    `json:"remark"`
 	State             int8      `json:"state"`
+	PushStatus		  int8		`json:"push_status"`
 	CreateTime        LocalTime `gorm:"column:create_time;" json:"createTime"`
 	UpdateTime        LocalTime `gorm:"column:update_time;" json:"updateTime"`
 }

+ 2 - 0
router/log/loging.go

@@ -28,5 +28,7 @@ func (e *LogingRouter) InitLogingRouter(Router *gin.RouterGroup) {
 		excelRouter.POST("getLogScanningList", logApi.GetLogScanningList)
 		excelRouter.POST("computerRateExport", logApi.ComputerRateExport)
 		excelRouter.POST("computerSevenRate", logApi.ComputerSevenRate)
+		excelRouter.POST("getIpLogList", logApi.GetIpLogList)	//获取ip日志列表
+
 	}
 }

+ 2 - 0
router/typeManage/responsiblePerson.go

@@ -19,5 +19,7 @@ func (r *ResponsiblePersonRouter) InitResponsiblePersonRouter(Router *gin.Router
 		responsiblePersonRouter.POST("getResponsiblePerson", responsiblePersonApi.GetResponsiblePerson)                     // 条件查询所有负责人
 		responsiblePersonRouter.POST("getDirectorList", responsiblePersonApi.GetResponsiblePersonAll)                       // 查询所有负责人
 		responsiblePersonRouter.POST("selectResponsiblePerson", responsiblePersonApi.SelectResponsiblePerson)
+		responsiblePersonRouter.POST("statusChange", responsiblePersonApi.StatusChange) // 更改负责人启用状态
+		responsiblePersonRouter.POST("pushStatusChange", responsiblePersonApi.PushStatusChange) // 更改负责人推送状态
 	}
 }

+ 1 - 0
service/log/enter.go

@@ -8,4 +8,5 @@ type ServiceGroup struct {
 	ServiceLogList
 	ServiceStatisticsLog
 	ServiceComputer
+	ServiceIpLog
 }

+ 73 - 0
service/log/log_ip.go

@@ -0,0 +1,73 @@
+package log
+
+import (
+	"go.uber.org/zap"
+	"log-server/global"
+	"log-server/model/log"
+	"log-server/model/log/request"
+	"time"
+)
+
+type ServiceIpLog struct {
+}
+
+func (s *ServiceIpLog) GetIpLogList(api log.IpLogRequest, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
+	limit := info.PageSize
+	offset := info.PageSize * (info.Page - 1)
+	db := global.GVA_DB.Model(&log.IpLog{})
+	var apiList []log.IpLogResponse
+	startDate := time.Now().Format("2006-01-02")
+	endDate := time.Now().Format("2006-01-02")
+	if len(api.Date) == 2 {
+		startDate = api.Date[0]
+		endDate = api.Date[1]
+	}
+	db = db.Where("create_date >= ? and create_date <= ?", startDate, endDate)
+	if api.GameId != 0 {
+		db = db.Where("game_id = ?", api.GameId)
+	}
+	if api.PcCode != "" {
+		db = db.Where("pc_code = ?", api.PcCode)
+	}
+	if api.Ip != "" {
+		db = db.Where("ip = ?", api.Ip)
+	}
+
+
+	db = db.Select("create_date,ip,pc_code,game_id,count(*) as count_total,count(distinct(ip)) as count_distinct_ip")
+	db = db.Group("pc_code, game_id, create_date")
+	//db.Select("count(*)").Count(&countTotal)
+	//db.Select("count(distinct(ip))").Count(&countDistinctIp)
+	err = db.Count(&total).Error
+	if err != nil {
+		return apiList, total, err
+	} else {
+		db = db.Limit(limit).Offset(offset)
+		if order != "" {
+			var OrderStr string
+			// 设置有效排序key 防止sql注入
+			// 感谢 Tom4t0 提交漏洞信息
+			orderMap := make(map[string]bool, 1)
+			orderMap["game_id"] = true
+			if orderMap[order] {
+				if desc {
+					OrderStr = order + " desc"
+				} else {
+					OrderStr = order
+				}
+			} else { // didn't matched any order key in `orderMap`
+				global.GVA_LOG.Error("获取失败!", zap.Error(err))
+				return apiList, total, err
+			}
+
+			err = db.Order(OrderStr).Find(&apiList).Error
+		} else {
+			err = db.Order("id").Find(&apiList).Error
+		}
+	}
+	//遍历更改日期格式
+	for i, _ := range apiList {
+		apiList[i].CreateDate = apiList[i].CreateDate[:10]
+	}
+	return apiList, total, err
+}

+ 22 - 1
service/typeManage/tm_responsiblePerson.go

@@ -7,6 +7,7 @@ import (
 	"log-server/global"
 	"log-server/model/common/request"
 	"log-server/model/typeManage"
+	typeReq "log-server/model/typeManage/request"
 	"math/rand"
 )
 
@@ -97,7 +98,7 @@ func (r *ResponsiblePersonService) UpdateResponsiblePerson(person typeManage.Res
 	if !errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("已存在相同名字,无法更改")
 	}
-	return global.GVA_DB.Table("responsible_person").Updates(&person).Error
+	return global.GVA_DB.Table("responsible_person").Omit("create_time, update_time").Save(&person).Error
 }
 
 // 通过id查询负责人
@@ -168,3 +169,23 @@ func (r *ResponsiblePersonService) SelectResponsiblePersonList() (list interface
 	err = db.Find(&personList).Error
 	return personList, err
 }
+
+//更改负责人启用状态
+func (r *ResponsiblePersonService) UpdateResponsibleStatus(c typeReq.UpdateResponsibleStatusRequest) (err error) {
+	err = global.GVA_DB.Table("responsible_person").Where("id = ?", c.Id).Error
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("请传入正确的Id")
+	}
+	err = global.GVA_DB.Table("responsible_person").Where("id = ?", c.Id).Update("state", c.State).Error
+	return err
+}
+
+//更改负责人推送状态
+func (r *ResponsiblePersonService) UpdatePushStatus(c typeReq.UpdatePushStatusRequest) (err error) {
+	err = global.GVA_DB.Table("responsible_person").Where("id = ?", c.Id).Error
+	if errors.Is(err, gorm.ErrRecordNotFound) {
+		return errors.New("请传入正确的Id")
+	}
+	err = global.GVA_DB.Table("responsible_person").Where("id = ?", c.Id).Update("push_status", c.PushStatus).Error
+	return err
+}

+ 1 - 1
utils/verify.go

@@ -24,7 +24,7 @@ var (
 	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()}}
+	ResponsiblePersonVerify = Rules{"Name": {NotEmpty()} }
 	AccountTypeVerify       = Rules{"TypeName": {NotEmpty()}}
 	GameTaskVerify          = Rules{"TaskId": {NotEmpty()}, "TaskName": {NotEmpty()}, "User": {NotEmpty()}, "NewRetained": {NotEmpty()}, "GamePortId": {NotEmpty()}}
 	TaskIdVerify            = Rules{"TaskId": {NotEmpty()}}