解锁用户增加判断,没修改数据不让解锁
This commit is contained in:
parent
9a7912b28a
commit
e476abd2d3
@ -118,9 +118,11 @@ func (a *ArtistInfoUserProvider) FinishVerify(ctx context.Context, req *artistIn
|
||||
}
|
||||
return rep, nil
|
||||
}
|
||||
|
||||
func (a *ArtistInfoUserProvider) UserLock(ctx context.Context, req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLockRespond, err error) {
|
||||
return a.artistInfoLogic.UserLock(req)
|
||||
}
|
||||
|
||||
func (a *ArtistInfoUserProvider) CheckUserLock(ctx context.Context, req *artistInfoUser.CheckUserLockRequest) (rep *artistInfoUser.CheckUserLockRespond, err error) {
|
||||
fmt.Println("第一处")
|
||||
// backup := &artistinfoUser.GetUserInfoRespond{}
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
_ "dubbo.apache.org/dubbo-go/v3/imports"
|
||||
@ -303,27 +304,39 @@ func UserLock(req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLock
|
||||
}
|
||||
rep.LockTime = now
|
||||
if !req.IsLock {
|
||||
fmt.Println("122312312312331")
|
||||
fmt.Println("进入解锁流程")
|
||||
// 如果当前锁定状态下没有任何数据变动,则报错
|
||||
if hasChanged, _ := WhetherAnyChangedAfterLocked(thisUser.MgmtArtistUid); !hasChanged {
|
||||
tx.Rollback()
|
||||
err = errors.New("此用户在锁定后未作任何修改,无法解锁")
|
||||
return
|
||||
}
|
||||
// 解锁时与另外4个模块联动
|
||||
if err = tx.Model(model.ArtworkLockRecord{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return nil, err
|
||||
}
|
||||
if err = tx.Model(model.ArtshowArtistSupplement{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return nil, err
|
||||
}
|
||||
if err = tx.Model(model.ArtshowArtistIndex{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return nil, err
|
||||
}
|
||||
if err = tx.Model(model.ArtshowVideoRecord{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return nil, err
|
||||
}
|
||||
// 与画家宝的合同表进行联动
|
||||
if err = tx.Model(model.Contract{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
fmt.Println("else 更新最新上锁时间")
|
||||
if err = tx.Model(model.User{}).Where("mgmt_artist_uid = ?", thisUser.MgmtArtistUid).Update("latest_lock_time", now).Error; err != nil {
|
||||
tx.Rollback()
|
||||
return nil, err
|
||||
}
|
||||
fmt.Println("更新结束")
|
||||
@ -333,6 +346,54 @@ func UserLock(req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLock
|
||||
return rep, nil
|
||||
}
|
||||
|
||||
// 简单判断锁定后数据是否有新增
|
||||
func WhetherAnyChangedAfterLocked(artistUid string) (changed bool, err error) {
|
||||
//查询锁定时间
|
||||
var lockTime string
|
||||
if err = db.DB.Model(model.User{}).Where("mgmt_artist_uid = ?", artistUid).Pluck("latest_lock_time", &lockTime).Error; err != nil {
|
||||
return
|
||||
}
|
||||
//如果画作更新时间大于锁定时间,直接返回true
|
||||
var artworks []model.ArtworkLockRecord
|
||||
db.DB.Where("artist_uid = ? AND lock_time = ? ", artistUid, lockTime).Find(&artworks)
|
||||
var lockTimeT, _ = stime.StringToTime(lockTime)
|
||||
for _, a := range artworks {
|
||||
if a.UpdatedAt.After(*lockTimeT) {
|
||||
changed = true
|
||||
return
|
||||
}
|
||||
}
|
||||
//如果补充信息有新增则直接返回true
|
||||
var sql = `
|
||||
SELECT
|
||||
u.mgmt_artist_uid
|
||||
,u.latest_lock_time
|
||||
,(SELECT COUNT(1) FROM artshow_artist_index WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as artist_index_count
|
||||
,(SELECT COUNT(1) FROM artshow_artist_supplement WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as artist_supplement_count
|
||||
,(SELECT COUNT(1) FROM artshow_video_record WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as video_count
|
||||
,(SELECT COUNT(1) FROM contract WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as contract_count
|
||||
FROM sys_user u
|
||||
WHERE u.mgmt_artist_uid ='{{artistUid}}' AND u.deleted_at = 0
|
||||
`
|
||||
sql = strings.Replace(sql, "{{artistUid}}", artistUid, -1)
|
||||
sql = strings.Replace(sql, "{{lockTime}}", lockTime, -1)
|
||||
var data struct {
|
||||
MgmtArtistUid string `gorm:"column:mgmt_artist_uid"`
|
||||
LatestLockTime string `gorm:"column:latest_lock_time"`
|
||||
ArtistIndexCount int `gorm:"column:artist_index_count"`
|
||||
ArtistSupplementCount int `gorm:"column:artist_supplement_count"`
|
||||
VideoCount int `gorm:"column:video_count"`
|
||||
ContractCount int `gorm:"column:contract_count"`
|
||||
}
|
||||
if err = db.DB.Debug().Raw(sql).Find(&data).Error; err != nil {
|
||||
return
|
||||
}
|
||||
if data.ArtistIndexCount > 0 || data.ArtistSupplementCount > 0 || data.VideoCount > 0 || data.ContractCount > 0 {
|
||||
return true, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func CheckInvitedCode(req *artistInfoUser.CheckInvitedCodeRequest) (rep *artistInfoUser.GetUserRespond, err error) {
|
||||
rep = &artistInfoUser.GetUserRespond{}
|
||||
// service := &artist.UserUpdateInfoService{}
|
||||
|
5
cmd/model/artist_operation_records.go
Normal file
5
cmd/model/artist_operation_records.go
Normal file
@ -0,0 +1,5 @@
|
||||
package model
|
||||
|
||||
type OperationRecord struct {
|
||||
Model
|
||||
}
|
@ -25,7 +25,6 @@ func CreateQrCode(invitedCode, userName string) error {
|
||||
tmp, err := os.Open(QrCodePath)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
}
|
||||
defer tmp.Close()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user