@@ -70,9 +70,22 @@ func (ud *TestDao) GetTestOptionsByPracticeID(practiceid int) ([]models.TestOpti
7070 return options , nil
7171}
7272func (ud * TestDao ) SaveTopRecord (top models.Top ) error {
73- err := database .DB .Create (& top ).Error
74- if err != nil {
75- return fmt .Errorf ("保存成绩记录失败: %w" , err )
73+ var origintop models.Top
74+ err := database .DB .Where ("testid = ? and userid = ?" , top .Testid , top .Userid ).First (& origintop ).Error
75+ if err == gorm .ErrRecordNotFound {
76+ err := database .DB .Create (& top ).Error
77+ if err != nil {
78+ return fmt .Errorf ("保存成绩记录失败: %w" , err )
79+ }
80+ return nil
81+ }else if err != nil {
82+ return fmt .Errorf ("获取成绩记录失败: %w" , err )
83+ }
84+ if err == nil && origintop .Correctnum < top .Correctnum {
85+ err := database .DB .Model (& origintop ).Updates (models.Top {Correctnum : top .Correctnum , Time : top .Time }).Error
86+ if err != nil {
87+ return fmt .Errorf ("更新成绩记录失败: %w" , err )
88+ }
7689 }
7790 return nil
7891}
@@ -114,21 +127,23 @@ func (ud *TestDao) RecommentTest(circle string) ([]models.Test){
114127 }
115128 return test
116129}
117- func (ud * TestDao ) HotTest (circle string ) ([]models.Test ){
130+ func (ud * TestDao ) HotTest (circle string , page int ) ([]models.Test ){
118131 var test []models.Test
132+ offset := (page - 1 )* 6
119133 if circle == "" {
120- _ = database .DB .Order ("good desc" ).Limit (6 ).Find (& test ).Error
134+ _ = database .DB .Order ("good desc" ).Offset ( offset ). Limit (6 ).Find (& test ).Error
121135 }else {
122- _ = database .DB .Where ("circle = ?" , circle ).Order ("good desc" ).Limit (6 ).Find (& test ).Error
136+ _ = database .DB .Where ("circle = ?" , circle ).Order ("good desc" ).Offset ( offset ). Limit (6 ).Find (& test ).Error
123137 }
124138 return test
125139}
126- func (ud * TestDao ) NewTest (circle string ) ([]models.Test ){
140+ func (ud * TestDao ) NewTest (circle string , page int ) ([]models.Test ){
127141 var test []models.Test
142+ offset := (page - 1 )* 6
128143 if circle == "" {
129- _ = database .DB .Order ("createtime desc" ).Limit (6 ).Find (& test ).Error
144+ _ = database .DB .Order ("createtime desc" ).Offset ( offset ). Limit (6 ).Find (& test ).Error
130145 }else {
131- _ = database .DB .Where ("circle = ?" , circle ).Order ("createtime desc" ).Limit (6 ).Find (& test ).Error
146+ _ = database .DB .Where ("circle = ?" , circle ).Order ("createtime desc" ).Offset ( offset ). Limit (6 ).Find (& test ).Error
132147 }
133148 return test
134149}
@@ -138,7 +153,7 @@ func (ud *TestDao) FollowCircleTest(userid int) ([]models.Test){
138153 var circlename []string
139154 _ = database .DB .Model (& models.FollowCircle {}).Where ("userid = ?" , userid ).Pluck ("circleid" , & circleid ).Error //pluck表示查询单个数据
140155 _ = database .DB .Model (& models.Circle {}).Where ("id in (?)" , circleid ).Pluck ("name" , & circlename ).Error
141- _ = database .DB .Where ("circle in (?)" , circlename ).Order ("RAND()" ).Limit (10 ).Find (& test ).Error //in表示查询多个数据
156+ _ = database .DB .Where ("circle in (?)" , circlename ).Order ("RAND()" ).Limit (6 ).Find (& test ).Error //in表示查询多个数据
142157 return test
143158}
144159func (ud * TestDao ) GetIdByUser (name string ) (int , error ) {
0 commit comments