Browse Source

fix: 1.time对比 2.权限验证调整

hsun 3 năm trước cách đây
mục cha
commit
8d70fb8ca2

+ 1 - 140
controller/activity/activity.go

@@ -3,7 +3,6 @@ package activity
 import (
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
-	activity2 "hongze/hongze_yb/models/request/activity"
 	"hongze/hongze_yb/services/activity"
 	"hongze/hongze_yb/services/user"
 	"hongze/hongze_yb/utils"
@@ -58,7 +57,7 @@ func _handleListQuery(c *gin.Context) (string, []interface{}, string) {
 		weekStart := utils.GetNowWeekMonday()
 		weekEnd := utils.GetNowWeekLastDay()
 		// 比对本周开始时间和当前时间
-		timeNow, _ := time.Parse("2006-01-02 15:04:05", nowTime)
+		timeNow, _ := time.ParseInLocation("2006-01-02 15:04:05", nowTime, time.Local)
 		queryStart := timeNow
 		if timeNow.Before(weekStart) {
 			queryStart = weekStart
@@ -91,144 +90,6 @@ func _handleListQuery(c *gin.Context) (string, []interface{}, string) {
 	return condition, pars, order
 }
 
-// AddRemind 添加提醒
-// @Tags 活动模块
-// @Summary  添加提醒
-// @Description 添加提醒
-// @Security ApiKeyAuth
-// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
-// @Accept  json
-// @Product json
-// @Param activity_id query int true "活动ID"
-// @Success 200 {string} string "操作成功"
-// @failure 400 {string} string "操作失败"
-// @failure 4001 {object} activity.RemindCheckInfo "指定错误"
-// @Router /activity/addRemind [post]
-func AddRemind(c *gin.Context) {
-	var req activity2.RemindReq
-	if c.ShouldBind(&req) != nil {
-		response.Fail("参数异常", c)
-		return
-	}
-	userInfo := user.GetInfoByClaims(c)
-	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
-	if !ok {
-		response.AuthError(permissionCheckInfo, "暂无权限", c)
-		return
-	}
-	err, remindCheck := activity.CreateRemind(req.ActivityID, userInfo)
-	if err != nil {
-		if remindCheck.Specific == 1 {
-			response.SpecificFail(remindCheck, remindCheck.Msg, c)
-		} else {
-			response.Fail(err.Error(), c)
-		}
-		return
-	}
-	response.OkData("操作成功", "", c)
-}
-
-// CancelRemind 取消提醒
-// @Tags 活动模块
-// @Summary  取消提醒
-// @Description 取消提醒
-// @Security ApiKeyAuth
-// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
-// @Accept  json
-// @Product json
-// @Param activity_id query int true "活动ID"
-// @Success 200 {string} string "操作成功"
-// @failure 400 {string} string "操作失败"
-// @Router /activity/cancelRemind [post]
-func CancelRemind(c *gin.Context) {
-	var req activity2.RemindReq
-	if c.ShouldBind(&req) != nil {
-		response.Fail("参数异常", c)
-		return
-	}
-	userInfo := user.GetInfoByClaims(c)
-	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
-	if !ok {
-		response.AuthError(permissionCheckInfo, "暂无权限", c)
-		return
-	}
-	err = activity.CancelRemind(req.ActivityID, userInfo)
-	if err != nil {
-		response.Fail(err.Error(), c)
-		return
-	}
-	response.OkData("操作成功", "", c)
-}
-
-// RegisterActivity 报名活动
-// @Tags 活动模块
-// @Summary  报名活动
-// @Description 报名活动
-// @Security ApiKeyAuth
-// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
-// @Accept  json
-// @Product json
-// @Param activity_id query int true "活动ID"
-// @Success 200 {string} string "操作成功"
-// @failure 400 {string} string "操作失败"
-// @failure 4001 {object} activity.RegisterCheckInfo "指定错误"
-// @Router /activity/registerActivity [post]
-func RegisterActivity(c *gin.Context) {
-	var req activity2.RegisterReq
-	if c.ShouldBind(&req) != nil {
-		response.Fail("参数异常", c)
-		return
-	}
-	userInfo := user.GetInfoByClaims(c)
-	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
-	if !ok {
-		response.AuthError(permissionCheckInfo, "暂无权限", c)
-		return
-	}
-	err, registerCheck := activity.CreateRegister(req.ActivityID, userInfo)
-	if err != nil {
-		if registerCheck.Specific == 1 {
-			response.SpecificFail(registerCheck, registerCheck.Msg, c)
-		} else {
-			response.Fail(err.Error(), c)
-		}
-		return
-	}
-	response.OkData("操作成功", "", c)
-}
-
-// CancelRegister 取消报名
-// @Tags 活动模块
-// @Summary  取消报名
-// @Description 取消报名
-// @Security ApiKeyAuth
-// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
-// @Accept  json
-// @Product json
-// @Param activity_id query int true "活动ID"
-// @Success 200 {string} string "操作成功"
-// @failure 400 {string} string "操作失败"
-// @Router /activity/cancelRegister [post]
-func CancelRegister(c *gin.Context) {
-	var req activity2.RegisterReq
-	if c.ShouldBind(&req) != nil {
-		response.Fail("参数异常", c)
-		return
-	}
-	userInfo := user.GetInfoByClaims(c)
-	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
-	if !ok {
-		response.AuthError(permissionCheckInfo, "暂无权限", c)
-		return
-	}
-	err = activity.CancelRegister(req.ActivityID, userInfo)
-	if err != nil {
-		response.Fail(err.Error(), c)
-		return
-	}
-	response.OkData("操作成功", "", c)
-}
-
 // GetActivityDetail 获取活动详情
 // @Tags 活动模块
 // @Summary  获取活动详情

+ 78 - 0
controller/activity/activity_register.go

@@ -0,0 +1,78 @@
+package activity
+
+import (
+	"github.com/gin-gonic/gin"
+	"hongze/hongze_yb/controller/response"
+	activity2 "hongze/hongze_yb/models/request/activity"
+	"hongze/hongze_yb/services/activity"
+	"hongze/hongze_yb/services/user"
+)
+
+// RegisterActivity 报名活动
+// @Tags 活动模块
+// @Summary  报名活动
+// @Description 报名活动
+// @Security ApiKeyAuth
+// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
+// @Accept  json
+// @Product json
+// @Param activity_id query int true "活动ID"
+// @Success 200 {string} string "操作成功"
+// @failure 400 {string} string "操作失败"
+// @failure 4001 {object} activity.RegisterCheckInfo "指定错误"
+// @Router /activity/registerActivity [post]
+func RegisterActivity(c *gin.Context) {
+	var req activity2.RegisterReq
+	if c.ShouldBind(&req) != nil {
+		response.Fail("参数异常", c)
+		return
+	}
+	userInfo := user.GetInfoByClaims(c)
+	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
+	if !ok {
+		response.AuthError(permissionCheckInfo, "暂无权限", c)
+		return
+	}
+	err, registerCheck := activity.CreateRegister(req.ActivityID, userInfo)
+	if err != nil {
+		if registerCheck.Specific == 1 {
+			response.SpecificFail(registerCheck, registerCheck.Msg, c)
+		} else {
+			response.Fail(err.Error(), c)
+		}
+		return
+	}
+	response.OkData("操作成功", "", c)
+}
+
+// CancelRegister 取消报名
+// @Tags 活动模块
+// @Summary  取消报名
+// @Description 取消报名
+// @Security ApiKeyAuth
+// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
+// @Accept  json
+// @Product json
+// @Param activity_id query int true "活动ID"
+// @Success 200 {string} string "操作成功"
+// @failure 400 {string} string "操作失败"
+// @Router /activity/cancelRegister [post]
+func CancelRegister(c *gin.Context) {
+	var req activity2.RegisterReq
+	if c.ShouldBind(&req) != nil {
+		response.Fail("参数异常", c)
+		return
+	}
+	userInfo := user.GetInfoByClaims(c)
+	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
+	if !ok {
+		response.AuthError(permissionCheckInfo, "暂无权限", c)
+		return
+	}
+	err = activity.CancelRegister(req.ActivityID, userInfo)
+	if err != nil {
+		response.Fail(err.Error(), c)
+		return
+	}
+	response.OkData("操作成功", "", c)
+}

+ 78 - 0
controller/activity/activity_remind.go

@@ -0,0 +1,78 @@
+package activity
+
+import (
+	"github.com/gin-gonic/gin"
+	"hongze/hongze_yb/controller/response"
+	activity2 "hongze/hongze_yb/models/request/activity"
+	"hongze/hongze_yb/services/activity"
+	"hongze/hongze_yb/services/user"
+)
+
+// AddRemind 添加提醒
+// @Tags 活动模块
+// @Summary  添加提醒
+// @Description 添加提醒
+// @Security ApiKeyAuth
+// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
+// @Accept  json
+// @Product json
+// @Param activity_id query int true "活动ID"
+// @Success 200 {string} string "操作成功"
+// @failure 400 {string} string "操作失败"
+// @failure 4001 {object} activity.RemindCheckInfo "指定错误"
+// @Router /activity/addRemind [post]
+func AddRemind(c *gin.Context) {
+	var req activity2.RemindReq
+	if c.ShouldBind(&req) != nil {
+		response.Fail("参数异常", c)
+		return
+	}
+	userInfo := user.GetInfoByClaims(c)
+	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
+	if !ok {
+		response.AuthError(permissionCheckInfo, "暂无权限", c)
+		return
+	}
+	err, remindCheck := activity.CreateRemind(req.ActivityID, userInfo)
+	if err != nil {
+		if remindCheck.Specific == 1 {
+			response.SpecificFail(remindCheck, remindCheck.Msg, c)
+		} else {
+			response.Fail(err.Error(), c)
+		}
+		return
+	}
+	response.OkData("操作成功", "", c)
+}
+
+// CancelRemind 取消提醒
+// @Tags 活动模块
+// @Summary  取消提醒
+// @Description 取消提醒
+// @Security ApiKeyAuth
+// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
+// @Accept  json
+// @Product json
+// @Param activity_id query int true "活动ID"
+// @Success 200 {string} string "操作成功"
+// @failure 400 {string} string "操作失败"
+// @Router /activity/cancelRemind [post]
+func CancelRemind(c *gin.Context) {
+	var req activity2.RemindReq
+	if c.ShouldBind(&req) != nil {
+		response.Fail("参数异常", c)
+		return
+	}
+	userInfo := user.GetInfoByClaims(c)
+	ok, permissionCheckInfo, err := activity.CheckActivityPermission(userInfo, req.ActivityID)
+	if !ok {
+		response.AuthError(permissionCheckInfo, "暂无权限", c)
+		return
+	}
+	err = activity.CancelRemind(req.ActivityID, userInfo)
+	if err != nil {
+		response.Fail(err.Error(), c)
+		return
+	}
+	response.OkData("操作成功", "", c)
+}

+ 9 - 0
models/tables/yb_activity_permission/query.go

@@ -0,0 +1,9 @@
+package yb_activity_permission
+
+import "hongze/hongze_yb/global"
+
+// GetPermissionsByActivityId 根据活动ID获取权限集合
+func GetPermissionsByActivityId(activityId int) (permissions []*YbActivityPermission, err error) {
+	err = global.DEFAULT_MYSQL.Model(YbActivityPermission{}).Where("activity_id", activityId).Scan(&permissions).Error
+	return
+}

+ 14 - 5
services/activity/activity.go

@@ -1,9 +1,9 @@
 package activity
 
 import (
-	"fmt"
 	"gorm.io/gorm"
 	"hongze/hongze_yb/models/tables/yb_activity"
+	"hongze/hongze_yb/models/tables/yb_activity_permission"
 	"hongze/hongze_yb/models/tables/yb_activity_register"
 	"hongze/hongze_yb/models/tables/yb_activity_remind"
 	"hongze/hongze_yb/models/tables/yb_activity_voice"
@@ -39,7 +39,6 @@ func PageList(condition string, pars []interface{}, page, limit int, order strin
 		for _, voice := range voices{
 			voiceMap[int(voice.ActivityID)] = 1
 		}
-		fmt.Println("录音Map", voiceMap)
 		// 提醒
 		reminds, queryErr := yb_activity_remind.GetRemindsByUserIdAndActivityIds(int(userInfo.UserID), activityIds)
 		if queryErr != nil {
@@ -95,7 +94,7 @@ func getActivityStateByTime(startTime, endTime time.Time) (state int) {
 	weekStart := utils.GetNowWeekMonday()
 	weekEnd := utils.GetNowWeekLastDay()
 	nowTime := time.Now().Format("2006-01-02 15:04:05")
-	timeNow, _ := time.Parse("2006-01-02 15:04:05", nowTime)
+	timeNow, _ := time.ParseInLocation("2006-01-02 15:04:05", nowTime, time.Local)
 	if timeNow.Before(endTime) && timeNow.After(startTime) {
 		// 进行中
 		state = 2
@@ -139,7 +138,7 @@ func GetActivityDetail(activityId, userId int) (detail *yb_activity.ActivityDeta
 	return
 }
 
-// 验证活动参与权限
+// CheckActivityPermission 验证用户的活动参与权限
 func CheckActivityPermission(userInfo user.UserInfo, activityId int) (ok bool, permissionCheckInfo company.PermissionCheckInfo, err error) {
 	companyId := userInfo.CompanyID
 	activity, err := yb_activity.GetOneById(activityId)
@@ -151,6 +150,16 @@ func CheckActivityPermission(userInfo user.UserInfo, activityId int) (ok bool, p
 	if activity == nil {
 		return
 	}
-	ok, permissionCheckInfo, err = company.CheckPermissionByFicc(companyId, activity.ChartPermissionID)
+	// 查询活动权限集合
+	permissions, err := yb_activity_permission.GetPermissionsByActivityId(activityId)
+	if err != nil {
+		return
+	}
+	var permissionIds []int
+	for _, item := range permissions {
+		pid := int(item.PermissionID)
+		permissionIds = append(permissionIds, pid)
+	}
+	ok, permissionCheckInfo, err = company.CheckPermissionByPermissionIdList2Ficc(companyId, permissionIds)
 	return
 }

+ 15 - 4
services/activity/activity_register.go

@@ -70,7 +70,7 @@ func CreateRegister(activityId int, userInfo user.UserInfo) (err error, register
 
 // checkRegisterOk 验证是否可以报名
 func checkRegisterOk(userId, activityId int) (ok bool, msg string, registerCheck RegisterCheckInfo) {
-	activity, err := yb_activity.GetOneById(activityId)
+	activityInfo, err := yb_activity.GetOneById(activityId)
 	if err == gorm.ErrRecordNotFound {
 		msg = "活动信息有误"
 		return
@@ -85,11 +85,22 @@ func checkRegisterOk(userId, activityId int) (ok bool, msg string, registerCheck
 		msg = "请勿重复报名"
 		return
 	}
-	if activity.ActivityTypeID != 3 {
+	// 验证可报名类型
+	activityTypeIds, _ := GetTypeIdsByPid(3)
+	activityTypeIds = append(activityTypeIds, 3)
+	registerOk := false
+	for _, typeId := range activityTypeIds {
+		if activityInfo.ActivityTypeID == typeId {
+			registerOk = true
+			break
+		}
+	}
+	if !registerOk {
 		msg = "仅线下沙龙可报名"
+		return
 	}
-	if activity.IsLimitPeople == 1 {
-		limitNum := activity.LimitPeopleNum
+	if activityInfo.IsLimitPeople == 1 {
+		limitNum := activityInfo.LimitPeopleNum
 		registedNum, err := yb_activity_register.CountRegistedNumByActivityId(activityId)
 		if err != nil {
 			log.Print(err.Error())

+ 1 - 1
services/company/permission.go

@@ -146,7 +146,7 @@ func CheckPermissionByPermissionIdList2Ficc(companyId int64, permissionIdList []
 		// 校验在有效的权限id列表中是否存在该权限
 		for _, validPermissionId := range validPermissionIdList {
 			//如果有该权限id,那么直接返回校验通过
-			if _, ok := permissionMap[validPermissionId]; ok {
+			if _, validOk := permissionMap[validPermissionId]; validOk {
 				ok = true
 				return
 			}