|
@@ -91,12 +91,10 @@ func TestList(c *gin.Context, apictx *ApiSession) (interface{}, error) {
|
|
return result, err
|
|
return result, err
|
|
}
|
|
}
|
|
|
|
|
|
-// 获取随机试题
|
|
|
|
|
|
+// 获取随机试题 客户端接口
|
|
func TestRandList(c *gin.Context, apictx *ApiSession) (interface{}, error) {
|
|
func TestRandList(c *gin.Context, apictx *ApiSession) (interface{}, error) {
|
|
- // bankId number type map
|
|
|
|
_bankId := c.Query("bankId")
|
|
_bankId := c.Query("bankId")
|
|
_number := c.Query("number")
|
|
_number := c.Query("number")
|
|
- _type := c.Query("type")
|
|
|
|
|
|
|
|
bankId, err := primitive.ObjectIDFromHex(_bankId)
|
|
bankId, err := primitive.ObjectIDFromHex(_bankId)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -107,35 +105,56 @@ func TestRandList(c *gin.Context, apictx *ApiSession) (interface{}, error) {
|
|
if err != nil {
|
|
if err != nil {
|
|
number = 10
|
|
number = 10
|
|
}
|
|
}
|
|
- fmt.Println(number)
|
|
|
|
-
|
|
|
|
- tsType, err := strconv.Atoi(_type)
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, errors.New("题型错误")
|
|
|
|
- }
|
|
|
|
tests := []*model.Test{}
|
|
tests := []*model.Test{}
|
|
repo.RepoDocsSearch(apictx.CreateRepoCtx(), &repo.PageSearchOptions{
|
|
repo.RepoDocsSearch(apictx.CreateRepoCtx(), &repo.PageSearchOptions{
|
|
CollectName: repo.CollectionTest,
|
|
CollectName: repo.CollectionTest,
|
|
- Query: repo.Map{"bankId": bankId, "type": tsType, "state": 1},
|
|
|
|
|
|
+ Query: repo.Map{"bankId": bankId, "state": 1},
|
|
}, &tests)
|
|
}, &tests)
|
|
- if len(tests) <= number {
|
|
|
|
- return tests, nil
|
|
|
|
|
|
+ if len(tests) < 1 {
|
|
|
|
+ return map[string]interface{}{
|
|
|
|
+ "list1": []interface{}{},
|
|
|
|
+ "list2": []interface{}{},
|
|
|
|
+ }, nil
|
|
}
|
|
}
|
|
// 放入map中,利用map特性随机得到试题
|
|
// 放入map中,利用map特性随机得到试题
|
|
- sets := make(map[primitive.ObjectID]*model.Test)
|
|
|
|
|
|
+ type1Sets := make(map[primitive.ObjectID]*model.Test)
|
|
|
|
+ type2Sets := make(map[primitive.ObjectID]*model.Test)
|
|
for _, ts := range tests {
|
|
for _, ts := range tests {
|
|
- sets[ts.Id] = ts
|
|
|
|
|
|
+ if ts.Type == 1 {
|
|
|
|
+ type1Sets[ts.Id] = ts
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ if ts.Type == 2 {
|
|
|
|
+ type2Sets[ts.Id] = ts
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ list1 := []*model.Test{}
|
|
|
|
+ list2 := []*model.Test{}
|
|
|
|
+ fmt.Println("type1----------------")
|
|
|
|
+ for _, ts1 := range type1Sets {
|
|
|
|
+ if len(list1) < number {
|
|
|
|
+ fmt.Println(ts1.Id)
|
|
|
|
+ list1 = append(list1, ts1)
|
|
|
|
+ } else {
|
|
|
|
+ break
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- list := []*model.Test{}
|
|
|
|
- for _, ts := range sets {
|
|
|
|
- if len(list) < number {
|
|
|
|
- list = append(list, ts)
|
|
|
|
|
|
+ fmt.Println("type2------------------")
|
|
|
|
+ for _, ts2 := range type2Sets {
|
|
|
|
+ if len(list2) < number {
|
|
|
|
+
|
|
|
|
+ fmt.Println(ts2.Id)
|
|
|
|
+ list2 = append(list2, ts2)
|
|
} else {
|
|
} else {
|
|
break
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- return list, nil
|
|
|
|
|
|
+ return map[string]interface{}{
|
|
|
|
+ "list1": list1,
|
|
|
|
+ "list2": list2,
|
|
|
|
+ }, nil
|
|
}
|
|
}
|
|
|
|
|
|
// 更新
|
|
// 更新
|