李哲 4 years ago
parent
commit
1e0939aca3
3 changed files with 72 additions and 10 deletions
  1. 1 1
      rpc/userlib/etc/userlib.yaml
  2. 12 0
      services/model/stdlib.go
  3. 59 9
      services/userlib/userDocService.go

+ 1 - 1
rpc/userlib/etc/userlib.yaml

@@ -11,7 +11,7 @@ FileSystemConf:
     Key: integral.rpc
 JyDocsMysqlDB:
   DriverName: "mysql"
-  DataSourceName: "root:Topnet123@tcp(192.168.3.11:3366)/jydocs?charset=utf8mb4&parseTime=true&loc=Local"
+  DataSourceName: "root:root@tcp(127.0.0.1:3306)/jydocs?charset=utf8mb4&parseTime=true&loc=Local"
   MaxOpenConn: 20
   MaxIdleConn: 10
   MaxConnLifeTime: 100

+ 12 - 0
services/model/stdlib.go

@@ -72,3 +72,15 @@ type DocActivity struct {
 func (ud *DocActivity) TableName() string {
 	return "doc_activity"
 }
+
+type UserDocData struct {
+	Id          string `json:"id"`
+	UserId      string `json:"user_id"  gorm:"column:userId"`
+	DocId       string `json:"doc_id" gorm:"column:docId"`
+	DocCategory int    `json:"doc_category" gorm:"column:docCategory"`
+	IsDelete    int    `json:"is_delete" gorm:"column:isDelete"`
+}
+
+func (ud *UserDocData) TableName() string {
+	return "user_doc"
+}

+ 59 - 9
services/userlib/userDocService.go

@@ -13,22 +13,72 @@ import (
 	"time"
 )
 
+//文档收藏
 func UserDocCollect(userDoc *model.UserDoc, cost int) bool {
 	log.Println("UserDocCollect exec ......")
-	err := docRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
-		//用户文库表添加记录(需要检查是否重复)
-		err := docRpcUtil.GetJyDocsDB().Create(userDoc).Error
-		if err != nil {
-			log.Println("userDocCollect error:", err)
-			tx.Rollback()
-			return err
+	orm := docRpcUtil.GetJyDocsDB()
+	docData := model.UserDocData{}
+	err := orm.Transaction(func(tx *gorm.DB) error {
+		err0 := orm.Select("id,userId,docId,docCategory,isDelete").
+			Where("userId = ? AND docId = ? AND (isDelete = 0 OR isDelete = 1)",userDoc.UserId,userDoc.DocId).
+			Find(&docData)
+		if err0.Error != nil {
+			log.Println("查询已存在收藏记录失败")
+			return nil
+		}
+		//已下载数据处理
+		if docData.DocCategory == 1 {
+			log.Println("该文档已下载,无法收藏")
+			return  nil
+		}
+
+		//已收藏数据处理
+		if docData.IsDelete == 0 && docData.UserId != "" {
+			log.Println("此文档,该用户已收藏,不可重复收藏")
+			return nil
+		}
+		//已取消收藏,再次进行收藏
+		if docData.IsDelete == 1 && docData.UserId != "" {
+			err := orm.Exec("UPDATE user_doc SET isDelete = 0 WHERE id = ?",docData.Id).Error
+			if err != nil {
+				log.Println("文档再次收藏失败")
+				tx.Rollback()
+				return nil
+			}
+			//无收藏记录,新增收藏
+		}else{
+			//用户文库表添加记录(需要检查是否重复)
+			err := docRpcUtil.GetJyDocsDB().Create(userDoc).Error
+			if err != nil {
+				log.Println("userDocCollect error:", err)
+				tx.Rollback()
+				return nil
+			}
 		}
 		//用户收藏、转存记录表添加记录
-		err = docRpcUtil.GetJyDocsDB().Exec("insert into download_collection_record (docId,userId,sourceUserId,category,cost) values (?,?,?,?,?)", userDoc.DocId, userDoc.UserId, userDoc.DocSourceUserId, userDoc.DocCategory, cost).Error
+		err := docRpcUtil.GetJyDocsDB().Exec("insert into download_collection_record (docId,userId,sourceUserId,category,cost) values (?,?,?,?,?)", userDoc.DocId, userDoc.UserId, userDoc.DocSourceUserId, userDoc.DocCategory, cost).Error
 		if err != nil {
 			log.Println("userDocCollect record insert error:", err)
 			tx.Rollback()
-			return err
+			return nil
+		}
+		return nil
+	})
+	if err != nil {
+		return false
+	}
+	return true
+}
+
+//文档取消收藏
+func UserDocCancelCollect(userDocId string) bool {
+	orm := docRpcUtil.GetJyDocsDB()
+	err := orm.Transaction(func(tx *gorm.DB) error {
+		err := orm.Exec("UPDATE user_doc SET isDelete = 1 WHERE id = ?",userDocId).Error
+		if err != nil {
+			log.Println("文档取消收藏失败")
+			tx.Rollback()
+			return nil
 		}
 		return nil
 	})