@@ -9,13 +9,15 @@ package logic
9
9
import (
10
10
"errors"
11
11
"fmt"
12
- "github.com/studygolang/studygolang/model"
13
- "github.com/studygolang/studygolang/util"
14
12
"math/rand"
15
13
"net/url"
14
+ "strconv"
16
15
"strings"
17
16
"time"
18
17
18
+ "github.com/studygolang/studygolang/model"
19
+ "github.com/studygolang/studygolang/util"
20
+
19
21
"github.com/polaris1119/times"
20
22
21
23
"github.com/polaris1119/slices"
@@ -788,3 +790,62 @@ func (UserLogic) doCreateUser(ctx context.Context, session *xorm.Session, user *
788
790
789
791
return nil
790
792
}
793
+
794
+ func (UserLogic ) DeleteUserContent (ctx context.Context , uid int ) error {
795
+ user := & model.User {}
796
+ _ , err := MasterDB .ID (uid ).Get (user )
797
+ if err != nil || user .Username == "" {
798
+ return err
799
+ }
800
+
801
+ feedResult , feedErr := MasterDB .Exec ("DELETE FROM `feed` WHERE uid=?" , uid )
802
+ topicResult , topicErr := MasterDB .Exec ("DELETE t,tex FROM `topics` as t LEFT JOIN `topics_ex` as tex USING(tid) WHERE uid=?" , uid )
803
+ resourceResult , resourceErr := MasterDB .Exec ("DELETE r,rex FROM `resource` as r LEFT JOIN `resource_ex` as rex USING(id) WHERE uid=?" , uid )
804
+ articleResult , articleErr := MasterDB .Exec ("DELETE FROM `articles` WHERE author_txt=?" , user .Username )
805
+
806
+ if feedErr == nil {
807
+ affected , _ := feedResult .RowsAffected ()
808
+ if affected > 0 {
809
+ feed := & model.Feed {}
810
+ MasterDB .Desc ("id" ).Get (feed )
811
+ if feed .Id > 0 {
812
+ MasterDB .Exec (`ALTER TABLE feed auto_increment=` + strconv .Itoa (feed .Id + 1 ))
813
+ }
814
+ }
815
+ }
816
+
817
+ if topicErr == nil {
818
+ affected , _ := topicResult .RowsAffected ()
819
+ if affected > 0 {
820
+ topic := & model.Topic {}
821
+ MasterDB .Desc ("tid" ).Get (topic )
822
+ if topic .Tid > 0 {
823
+ MasterDB .Exec (`ALTER TABLE topics auto_increment=` + strconv .Itoa (topic .Tid + 1 ))
824
+ }
825
+ }
826
+ }
827
+
828
+ if resourceErr == nil {
829
+ affected , _ := resourceResult .RowsAffected ()
830
+ if affected > 0 {
831
+ resource := & model.Resource {}
832
+ MasterDB .Desc ("id" ).Get (resource )
833
+ if resource .Id > 0 {
834
+ MasterDB .Exec (`ALTER TABLE resource auto_increment=` + strconv .Itoa (resource .Id + 1 ))
835
+ }
836
+ }
837
+ }
838
+
839
+ if articleErr == nil {
840
+ affected , _ := articleResult .RowsAffected ()
841
+ if affected > 0 {
842
+ article := & model.Article {}
843
+ MasterDB .Desc ("id" ).Get (article )
844
+ if article .Id > 0 {
845
+ MasterDB .Exec (`ALTER TABLE articles auto_increment=` + strconv .Itoa (article .Id + 1 ))
846
+ }
847
+ }
848
+ }
849
+
850
+ return nil
851
+ }
0 commit comments