123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- package userlib
- import (
- "app.yhyue.com/moapp/jyPoints/rpc/integral"
- "app.yhyue.com/moapp/jyPoints/rpc/integralclient"
- "app.yhyue.com/moapp/jy_docs/rpc/userlib/userlib"
- "app.yhyue.com/moapp/jy_docs/services/model"
- docRpcUtil "app.yhyue.com/moapp/jy_docs/services/util"
- "context"
- "github.com/tal-tech/go-zero/core/discov"
- "github.com/tal-tech/go-zero/zrpc"
- "gorm.io/gorm"
- "log"
- "time"
- )
- //文档收藏
- func UserDocCollect(userDoc *model.UserDoc, cost int) bool {
- log.Println("UserDocCollect exec ......")
- 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{
- //用户文库表添加记录(需要检查是否重复)
- timeData := time.Now()
- userDoc.CreateAt = timeData
- userDoc.UpdateAt = timeData
- userDoc.DeletedAt = timeData
- //查询文档基础信息
- doc := model.Doc{}
- err0 := orm.Where("id = ?",userDoc.DocId).
- Find(&doc)
- if err0.Error != nil {
- log.Println("文档不存在",err0)
- return nil
- }
- userDoc.DocSourceUserId = doc.UserId
- userDoc.DocCategory = doc.DocFileType
- userDoc.IsDelete = int(userlib.UserDocStatus_Normal)
- userDoc.DocName = doc.DocName
- userDoc.DocFileSuffix = doc.DocFileSuffix
- userDoc.DocFileSize = doc.DocFileSize
- userDoc.DocPageSize = doc.DocPageSize
- userDoc.DocSummary = doc.DocSummary
- err := orm.Create(userDoc).Error
- if err != nil {
- log.Println("userDocCollect error:", err)
- tx.Rollback()
- return nil
- }
- }
- //用户收藏、转存记录表添加记录
- err := orm.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 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
- })
- if err != nil {
- return false
- }
- return true
- }
- //转存操作
- func UserDocDownload(userDoc *model.UserDoc, cost int,hosts []string,key string) bool {
- log.Println("UserDocCollect exec ......")
- err := docRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
- //用户文库表添加记录
- //获取文档有关信息
- //查询之前有无下载记录 0和1只要有一条不能下载,如果有未删除可以下载
- userDocDownloadList := []model.UserDoc{}
- err := docRpcUtil.GetJyDocsDB().Table("user_doc").Where(" userId=? and docId=? and docCategory=? and (isDelete=? or isDelete=?)", userDoc.UserId, userDoc.DocId, model.UserDocCategory_Download, model.UserDocStatus_Normal, model.UserDocStatus_LogicDelete).Find(&userDocDownloadList)
- if err.Error != nil {
- return err.Error
- }
- if len(userDocDownloadList) > 0 {
- return nil
- }
- //先扣除积分
- //rpc
- client := zrpc.MustNewClient(zrpc.RpcClientConf{
- Etcd: discov.EtcdConf{
- Hosts: hosts,
- Key: key,
- },
- })
- integralLib := integralclient.NewIntegral(client)
- req := &integral.Req{UserId: userDoc.UserId,
- PointType: 2003,
- BusinessTypeId: 1,
- BusinessType: "1",
- Point: int64(cost),
- AppId: 10000}
- res, pointsErr := integralLib.IntegralConsume(context.Background(), req)
- log.Println("err ", pointsErr)
- log.Println("req ", res)
- if (pointsErr != nil || res.Code == 0) {
- return pointsErr
- }
- //查询之前有无收藏记录 有收藏记录类型改为下载,状态改为未删除、有收藏记录插入一条新纪录
- userDocCollectionList := []model.UserDoc{}
- err = docRpcUtil.GetJyDocsDB().Table("user_doc").Where(" userId=? and docId=? and docCategory=? and (isDelete=? or isDelete=?)", userDoc.UserId, userDoc.DocId, model.UserDocCategory_Collect, model.UserDocStatus_Normal, model.UserDocStatus_LogicDelete).Find(&userDocCollectionList)
- if err.Error != nil {
- return err.Error
- }
- if len(userDocCollectionList) > 0 {
- //修改收藏为下载
- if err := tx.Exec("update user_doc set docCategory=? , isDelete=? ,update_at=? where id =?", model.UserDocCategory_Download, model.UserDocStatus_Normal, time.Now(), userDocCollectionList[0].ID).Error; err != nil {
- return err
- }
- if err.Error != nil {
- log.Println("userDocCollect error:", err)
- tx.Rollback()
- return err.Error
- }
- //用户收藏、转存记录表添加记录
- err := docRpcUtil.GetJyDocsDB().Exec("insert into download_collection_record (docId,userId,sourceUserId,category,cost,date) values (?,?,?,?,?,?)", userDoc.DocId, userDoc.UserId, userDoc.DocSourceUserId, model.UserDocCategory_Download, cost, time.Now())
- if err.Error != nil {
- log.Println("userDocCollect record insert error:", err)
- tx.Rollback()
- return err.Error
- }
- } else {
- //用户文库表添加记录
- userDoc.CreateAt = time.Now()
- userDoc.UpdateAt = time.Now()
- userDoc.DeletedAt = time.Now()
- //查询文档基础信息
- doc := model.Doc{}
- err0 := docRpcUtil.GetJyDocsDB().
- Where("id = ?",userDoc.DocId).
- Find(&doc)
- if err0 != nil {
- log.Println("文档不存在")
- return nil
- }
- userDoc.DocSourceUserId = doc.UserId
- userDoc.DocCategory = doc.DocFileType
- userDoc.IsDelete = int(userlib.UserDocStatus_Normal)
- userDoc.DocName = doc.DocName
- userDoc.DocFileSuffix = doc.DocFileSuffix
- userDoc.DocFileSize = doc.DocFileSize
- userDoc.DocPageSize = doc.DocPageSize
- userDoc.DocSummary = doc.DocSummary
- err = docRpcUtil.GetJyDocsDB().Create(userDoc)
- if err.Error != nil {
- log.Println("userDocCollect error:", err)
- tx.Rollback()
- return err.Error
- }
- //用户收藏、转存记录表添加记录
- err := docRpcUtil.GetJyDocsDB().Exec("insert into download_collection_record (docId,userId,sourceUserId,category,cost,date) values (?,?,?,?,?,?)", userDoc.DocId, userDoc.UserId, userDoc.DocSourceUserId, model.UserDocCategory_Download, cost, time.Now())
- if err.Error != nil {
- log.Println("userDocCollect record insert error:", err)
- tx.Rollback()
- return err.Error
- }
- }
- return nil
- })
- if err != nil {
- return false
- }
- return true
- }
- func UserDocDelete(docId string) bool {
- err := docRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
- orm := docRpcUtil.GetJyDocsDB()
- docData := model.UserDoc{}
- //查询用户文档详情
- orm.Select("userId,docId").First(&docData, docId)
- log.Println(docData.UserId)
- log.Println(docData.DocId)
- //逻辑删除
- err := docRpcUtil.GetJyDocsDB().Exec("UPDATE user_doc SET isDelete = 1 WHERE id = ?", docId).Error
- if err != nil {
- tx.Rollback()
- return err
- }
- //删除记录
- err = docRpcUtil.GetJyDocsDB().Exec("insert into del_record (docId, userId, date, operate, viewType, source, shareUserId) values (?,?,?,?,?,?,?)", docId, docData.UserId, time.Now(), 1, 1, 1, 1).Error
- if err != nil {
- tx.Rollback()
- return err
- }
- return nil
- })
- if err != nil {
- return false
- }
- return true
- }
|