Browse Source

实现了获取计划的收包和发包数量的函数/任务广场列表根据用户所在小组显示

bigcat 2 years ago
parent
commit
c817065209
3 changed files with 74 additions and 2 deletions
  1. 62 1
      controller/plan.go
  2. 10 0
      model/group.go
  3. 2 1
      router.go

+ 62 - 1
controller/plan.go

@@ -12,8 +12,12 @@ import (
 
 func ShowPlans(c *gin.Context) {
 	db := common.GetDB()
+	userId := c.Params.ByName("userId")
 	var plans []model.Plan
-	db.Model(&model.Plan{}).Where("plan.delete <> 1").Find(&plans)
+	//db.Model(&model.Plan{}).Where("plan.delete <> 1").Find(&plans)
+	db.Model(&model.Plan{}).Joins("left join plan_groups on plan.id = plan_id ").
+		Joins("left join group_users on plan_groups.group_id = group_users.group_id").
+		Where("user_id = ? and plan.delete <> 1", userId).Distinct().Find(&plans)
 
 	response.Success(c, gin.H{"planlists": plans}, "success")
 }
@@ -108,6 +112,9 @@ func TakePlan(c *gin.Context) {
 	response.Success(c, gin.H{"task": task}, "success")
 }
 
+// AssignPlan 分配指定Plan给GroupList
+// 方法 POST
+// 传入参数 测试计划ID、GroupIdList
 func AssignPlan(c *gin.Context) {
 	// 获取planId 以及 groupIdList
 	var groupVo vo.GroupVo
@@ -160,6 +167,9 @@ func AssignPlan(c *gin.Context) {
 	response.Success(c, gin.H{"groupIdList": groupVo}, "分配成功")
 }
 
+// GetPlanAssignedGroups 获取指定Plan被分配的小组信息
+// 方法 GET
+// 传入参数 测试计划ID
 func GetPlanAssignedGroups(c *gin.Context) {
 	db := common.GetDB()
 	planId := c.Params.ByName("planId")
@@ -176,3 +186,54 @@ func GetPlanAssignedGroups(c *gin.Context) {
 	response.Success(c, gin.H{"groupList": groupList}, "success")
 
 }
+
+func Test(c *gin.Context) {
+
+	response.Success(c, gin.H{"count": IsJoinedInCurrentPlan("TestLaboratory_V1_User_9", "TestLaboratory_V1_Plan_7")}, "success")
+}
+
+// GetPlanTotalUserAmount 获取当前计划总发包数
+// 需要参数planId
+
+func GetPlanTotalUserAmount(planId string) int {
+	totalAmount := 0
+	var plan2groups []model.Plan2Group
+	db := common.GetDB()
+	db.Model(&model.Plan2Group{}).Where("plan_id = ?", planId).Find(&plan2groups)
+	for _, group := range plan2groups {
+		totalAmount += GetGroupUserAmount(group.GroupId)
+	}
+	return totalAmount
+}
+
+// GetGroupUserAmount 获取当前组总用户数
+// 需要参数groupId
+
+func GetGroupUserAmount(groupId string) int {
+	var count int64
+	db := common.GetDB()
+	db.Model(&model.Group2Users{}).Where("group_id = ?", groupId).Count(&count)
+	return int(count)
+}
+
+// GetGroupUserAmount 获取指定计划对接包数量
+// 需要参数groupId
+
+func GetPlanTaskAmount(planId string) int {
+	var count int64
+	db := common.GetDB()
+	db.Model(&model.Task{}).Where("plan_id = ?", planId).Count(&count)
+	return int(count)
+}
+
+func IsJoinedInCurrentPlan(userId string, planId string) bool {
+	var count int64
+	db := common.GetDB()
+	db.Model(&model.Task{}).Where("plan_id = ? and executor_id = ?", planId, userId).Count(&count)
+	if count > 0 {
+		return true
+	} else {
+		return false
+	}
+
+}

+ 10 - 0
model/group.go

@@ -12,3 +12,13 @@ type Group struct {
 func (Group) TableName() string {
 	return "group"
 }
+
+type Group2Users struct {
+	ID      uint   `gorm:"primary_key;type:bigint(20) auto_increment"`
+	GroupId string `gorm:"column:group_id"`
+	UserId  string `gorm:"column:user_id"`
+}
+
+func (Group2Users) TableName() string {
+	return "group_users"
+}

+ 2 - 1
router.go

@@ -9,11 +9,12 @@ func CollectRoute(r *gin.Engine) *gin.Engine {
 
 	plan := r.Group("/api/v-go/plan")
 	{
-		plan.GET("lists", controller.ShowPlans)
+		plan.GET("lists/:userId", controller.ShowPlans)
 		plan.GET(":id", controller.ShowPlan)
 		plan.POST("take/:planId/:username", controller.TakePlan)
 		plan.POST("assign", controller.AssignPlan)
 		plan.GET("assign/:planId", controller.GetPlanAssignedGroups)
+		plan.GET("test", controller.Test)
 	}
 	return r
 }