2023-01-18 09:03:15 +00:00
package dao
import (
2023-02-23 13:45:59 +00:00
"context"
2023-02-15 01:39:14 +00:00
"encoding/json"
2023-01-18 09:03:15 +00:00
"errors"
2023-02-15 01:39:14 +00:00
"fmt"
2023-03-15 01:53:13 +00:00
"sort"
2023-04-06 06:49:54 +00:00
"strings"
2023-03-14 07:09:13 +00:00
"time"
_ "dubbo.apache.org/dubbo-go/v3/imports"
2023-02-06 01:33:09 +00:00
"github.com/fonchain/fonchain-artistinfo/cmd/model"
2023-02-23 13:45:59 +00:00
"github.com/fonchain/fonchain-artistinfo/pb/account"
"github.com/fonchain/fonchain-artistinfo/pb/artist"
2023-02-24 16:30:57 +00:00
"github.com/fonchain/fonchain-artistinfo/pb/artistInfoUser"
2023-02-06 01:33:09 +00:00
db "github.com/fonchain/fonchain-artistinfo/pkg/db"
"github.com/fonchain/fonchain-artistinfo/pkg/m"
2023-02-23 13:45:59 +00:00
"github.com/fonchain/fonchain-artistinfo/pkg/service"
2023-03-02 09:22:10 +00:00
"github.com/fonchain/fonchain-artistinfo/pkg/util/stime"
2023-01-18 09:03:15 +00:00
"go.uber.org/zap"
2023-02-25 00:44:50 +00:00
"gorm.io/gorm"
2023-02-27 07:51:04 +00:00
"gorm.io/gorm/clause"
2023-01-18 09:03:15 +00:00
)
2023-02-24 16:30:57 +00:00
func RegisterUser ( req * artistInfoUser . RegisterUserRequest ) ( rep * artistInfoUser . RegisterUserRespond , err error ) {
2023-04-07 06:26:18 +00:00
var user = model . User {
MgmtAccId : req . MgmtAccId ,
TelNum : req . TelNum ,
MgmtArtistId : req . MgmtArtistId ,
MgmtArtistUid : req . MgmtArtistUid ,
InviteCode : req . UserInviteCode ,
Account : req . Account ,
}
zap . L ( ) . Debug ( fmt . Sprintf ( "RegisterUser--user: %+v" , user ) )
if err = db . DB . Create ( & user ) . Error ; err != nil {
zap . L ( ) . Error ( "register user err" , zap . Error ( err ) )
2023-04-09 04:33:08 +00:00
err = errors . New ( m . CREATE_ERROR )
2023-04-07 06:26:18 +00:00
return nil , err
}
2023-01-18 09:03:15 +00:00
return
}
2023-02-24 16:30:57 +00:00
func CreateUserInfo ( req * artistInfoUser . CreateUserInfoRequest ) ( rep * artistInfoUser . CreateUserInfoRespond , err error ) {
2023-03-14 07:09:13 +00:00
// var user model.User
// //找到用户
// fmt.Println("req.Id:", req.Id)
// fmt.Println("第三处")
// err = db.DB.Where("id = ?", req.Id).First(&user).Error
// if err != nil {
// fmt.Println("第四处")
// fmt.Println(err.Error())
// zap.L().Error("CreateUserInfo err", zap.Error(err))
// err = errors.New(m.ERROR_SELECT)
// return nil, err
// }
// fmt.Println(11)
// var realNameFind model.RealName
// err = db.DB.Where("id_num = ?", req.IdCard).First(&realNameFind).Error
// if err == nil {
// fmt.Println("第五处")
// fmt.Println(12)
// if realNameFind.ID != 0 {
// fmt.Println("第六处")
// zap.L().Error("register user err", zap.Error(err))
// err = errors.New("此身份证已实名认证")
// return nil, err
// }
// }
// fmt.Println("第四处")
// fmt.Println(12)
// var realname = model.RealName{
// Name: req.RealName,
// IdNum: req.IdCard,
// TelNum: req.TelNum,
// IdCardFront: req.IdCardFront,
// IdCardBack: req.IdCardBack,
// }
// err = db.DB.Save(&realname).Error
// if err != nil {
// fmt.Println("第九处")
// zap.L().Error("CreateUserInfo err", zap.Error(err))
// err = errors.New(m.ERROR_SELECT)
// return nil, err
// }
// fmt.Println(13)
// err = db.DB.Where("id_num=?", realname.IdNum).First(&realname).Error
// if err != nil {
// zap.L().Error("CreateUserInfo err", zap.Error(err))
// err = errors.New(m.ERROR_SELECT)
// return nil, err
// }
// fmt.Println(14)
// user.ID = req.Id
// user.TelNum = req.TelNum
// user.InviteCode = req.InvitedCode
// user.IsRealName = 1
// var invite model.Invite
// err = db.DB.Where("user_id = ?", user.ID).First(&invite).Error
// if err != nil {
// logging.Info(err.Error())
// if err.Error() == "record not found" {
// } else {
// zap.L().Error("CreateUserInfo err", zap.Error(err))
// err = errors.New(m.ERROR_SELECT)
// return nil, err
// }
// }
// if invite.ID == 0 {
// InvitedAccId, err := CheckInvitedCodes(req.InvitedCode)
// if err == nil {
// var invite InviteService
// invite.UserId = uint(req.Id)
// invite.InvitedId = InvitedId
// Createinvite(invite)
// }
// }
// fmt.Printf("%+v\n", user)
// user.ID = req.Id
// err = db.DB.Save(&user).Error
// if err != nil {
// zap.L().Error("CreateUserInfo err", zap.Error(err))
// err = errors.New(m.ERROR_SELECT)
// return nil, err
// }
2023-02-15 01:39:14 +00:00
return
}
type InvitedCodeService struct {
InvitedCode string ` form:"invitedCode" json:"invitedCode" `
}
type InviteService struct {
Id uint ` json:"id" `
UserId uint ` form:"userId" json:"userId" `
InvitedId uint ` form:"invitedId" json:"invitedId" `
}
2023-03-14 07:09:13 +00:00
// func Createinvite(service InviteService) {
// var invite model.Invite
// invite.UserId = int32(service.UserId)
// invite.InvitedId = int32(service.InvitedId)
// db.DB.Create(&invite)
// }
2023-02-15 01:39:14 +00:00
func CheckInvitedCodes ( invitedCode string ) ( uint , error ) {
2023-03-14 07:09:13 +00:00
// 变更为通过账号服务验证邀请码
2023-03-16 05:18:57 +00:00
var user model . User
//找到用户
2023-04-18 08:27:19 +00:00
if err := db . DB . Where ( "BINARY invited_code =?" , invitedCode ) . Find ( & user ) . Error ; err != nil {
2023-03-16 05:18:57 +00:00
return 0 , err
}
if user . ID == 0 {
return 0 , errors . New ( "邀请码无效" )
}
return uint ( user . ID ) , nil
// todo 无法通过账号服务获取邀请码信息
// if res, err := service.AccountProvider.ListByIDs(context.Background(), &account.ListByIDsRequest{
// Page: 1,
// PageSize: 1,
// InvitationCode: []string{invitedCode},
// }); err != nil && res != nil && len(res.Data) > 0 {
// return uint(res.Data[0].ID), nil
2023-03-14 07:09:13 +00:00
// }
2023-03-16 05:18:57 +00:00
// return 0, errors.New("邀请码无效")
2023-02-15 01:39:14 +00:00
}
2023-02-27 07:51:04 +00:00
2023-02-24 16:30:57 +00:00
func GetUser ( req * artistInfoUser . GetUserRequest ) ( rep * artistInfoUser . GetUserRespond , err error ) {
rep = & artistInfoUser . GetUserRespond { }
2023-01-18 09:03:15 +00:00
// service := &artist.UserUpdateInfoService{}
var user model . User
2023-02-15 01:39:14 +00:00
if err = db . DB . Where ( "tel_num = ?" , req . TelNum ) . First ( & user ) . Error ; err != nil {
2023-01-18 09:03:15 +00:00
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
2023-03-06 02:58:27 +00:00
if err == gorm . ErrRecordNotFound {
err = errors . New ( "没有找到数据" )
} else {
err = errors . New ( m . ERROR_SELECT )
}
2023-01-18 09:03:15 +00:00
return nil , err
}
// rep.
2023-02-15 01:39:14 +00:00
fmt . Println ( user )
2023-01-18 09:03:15 +00:00
rep . Id = user . ID
2023-02-20 04:51:50 +00:00
rep . MgmtAccId = user . MgmtAccId
2023-02-21 05:02:10 +00:00
rep . MgmtArtistUid = user . MgmtArtistUid
2023-01-18 09:03:15 +00:00
rep . MgmtArtistId = user . MgmtArtistId
rep . TelNum = user . TelNum
2023-02-20 04:51:50 +00:00
rep . FddState = user . FddState
2023-01-18 09:03:15 +00:00
rep . IsRealName = user . IsRealName
2023-02-20 04:51:50 +00:00
//rep.Ruler = user.Ruler
2023-01-18 09:03:15 +00:00
// service.QrCodeImg = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v.png", user.InvitedCode)
// service.QrCodeImgDownload = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v-2.png", user.InvitedCode)
// rep.Data = service
return rep , nil
}
2023-02-24 16:30:57 +00:00
func GetUserById ( req * artistInfoUser . GetUserByIdRequest ) ( rep * artistInfoUser . GetUserByIdRespond , err error ) {
rep = & artistInfoUser . GetUserByIdRespond { }
2023-02-15 01:39:14 +00:00
fmt . Println ( "id:" , req . Id )
fmt . Println ( "123" )
zap . L ( ) . Info ( "!!!!" )
fmt . Println ( "456" )
2023-01-18 09:03:15 +00:00
// service := &artist.UserUpdateInfoService{}
var user model . User
2023-02-15 01:39:14 +00:00
fmt . Println ( "666" )
2023-02-20 04:51:50 +00:00
if err = db . DB . Where ( "id = ?" , req . Id ) . First ( & user ) . Error ; err != nil {
2023-02-15 01:39:14 +00:00
zap . L ( ) . Info ( "!!!!3" )
2023-01-18 09:03:15 +00:00
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
2023-02-15 01:39:14 +00:00
return
2023-01-18 09:03:15 +00:00
}
2023-02-15 01:39:14 +00:00
fmt . Printf ( "%+v\n" , user )
fmt . Println ( "6666" )
zap . L ( ) . Info ( "!!!!5" )
2023-01-18 09:03:15 +00:00
// rep.
2023-02-15 01:39:14 +00:00
fmt . Println ( "777" )
2023-01-18 09:03:15 +00:00
rep . Id = user . ID
2023-02-20 04:51:50 +00:00
rep . MgmtAccId = user . MgmtAccId
2023-02-21 05:06:43 +00:00
rep . MgmtArtistUid = user . MgmtArtistUid
2023-01-18 09:03:15 +00:00
rep . MgmtArtistId = user . MgmtArtistId
rep . TelNum = user . TelNum
2023-02-20 04:51:50 +00:00
rep . FddState = user . FddState
2023-01-18 09:03:15 +00:00
rep . IsRealName = user . IsRealName
2023-02-20 04:51:50 +00:00
//rep.Ruler = user.Ruler
2023-01-18 09:03:15 +00:00
return rep , nil
}
2023-02-20 04:51:50 +00:00
2023-02-24 16:30:57 +00:00
func FinishVerify ( req * artistInfoUser . FinishVerifyRequest ) ( rep * artistInfoUser . FinishVerifyRespond , err error ) {
2023-01-18 09:03:15 +00:00
var user model . User
user . ID = req . Id
if err = db . DB . Model ( & user ) . Update ( "isfdd" , 2 ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
return rep , nil
}
2023-02-24 16:30:57 +00:00
func ArtistSupplyList ( req * artistInfoUser . ArtistSupplyListRequest ) ( rep * artistInfoUser . ArtistSupplyListRespond , err error ) {
var artistList = make ( [ ] artistInfoUser . ArtistArtworkSupplyListResponseData , 0 )
2023-02-02 06:10:24 +00:00
var args [ ] interface { }
sql := ` select cc.* from (SELECT a.id,a.name,a.pen_name,a.is_import,a.tel_num,a.sex,a.age,b.id_num,a.invited_code,a.certificate_num,a.con_address,b.idcard_front,b.idcard_back,a.photo,a.video,a.created_at,a.updated_at,a.is_lock,a.certificate_img,min(d.created_at) as dd from user a inner join real_name b on a.real_name_id = b.id left join bank c on a.id = c.user_id left join supply_info d on a.id = d.user_id where (d.types = 1 or d.types = 4 or d.types = 2 or d.types = 3 or d.types =6) and a.is_real_name = true `
sqlWhere := ` `
sqlGroup := ` group by a.id order by min(d.created_at) desc ) cc inner join supply_info f where dd >0 and dd = f.created_at and cc.id = f.user_id group by cc.id,dd `
2023-02-20 04:51:50 +00:00
var count int64
2023-02-02 06:10:24 +00:00
tx := db . DB . Raw ( "select count(*) from (" + sql + sqlWhere + sqlGroup + ") cc" ) . Scan ( & count )
if tx . Error != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( tx . Error ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
rep . Count = count
var sqlLimit = " limit ?,? "
args = append ( args , ( req . Page - 1 ) * req . PageSize )
args = append ( args , req . PageSize )
err = db . DB . Raw ( sql + sqlWhere + sqlGroup + sqlLimit ) . Scan ( & artistList ) . Error
if err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( tx . Error ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
for _ , v := range artistList {
rep . Data = append ( rep . Data , & v )
}
return rep , nil
}
2023-02-23 13:45:59 +00:00
2023-02-24 16:30:57 +00:00
func UserLock ( req * artistInfoUser . UserLockRequest ) ( rep * artistInfoUser . UserLockRespond , err error ) {
2023-03-09 07:10:51 +00:00
rep = & artistInfoUser . UserLockRespond { }
2023-03-10 09:27:10 +00:00
var tx = db . DB . Begin ( )
tx_user := tx . Model ( model . User { } )
2023-02-23 13:45:59 +00:00
switch {
case req . Id != 0 :
2023-03-10 09:27:10 +00:00
tx_user = tx_user . Where ( "id = ?" , req . Id )
2023-02-23 13:45:59 +00:00
case req . AccId != 0 :
2023-03-10 09:27:10 +00:00
tx_user = tx_user . Where ( "mgmt_acc_id = ?" , req . AccId )
2023-02-23 13:45:59 +00:00
case req . ArtistUid != "" :
2023-03-10 09:27:10 +00:00
tx_user = tx_user . Where ( "mgmt_artist_uid = ?" , req . ArtistUid )
2023-02-23 13:45:59 +00:00
default :
err = errors . New ( m . ERROR_DATA_NOT_EXISTS )
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
return
}
2023-03-02 09:22:10 +00:00
var now string
if req . IsLock {
now = stime . TimeToString ( time . Now ( ) , stime . Format_Normal_YMDhms )
}
2023-03-10 01:29:48 +00:00
var thisUser model . User
2023-03-10 09:27:10 +00:00
if err = tx_user . Find ( & thisUser ) . Error ; err != nil {
2023-03-10 01:29:48 +00:00
return nil , err
}
2023-03-10 09:27:10 +00:00
if err = tx_user . Update ( "is_lock" , req . IsLock ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err 11" , zap . Error ( err ) )
2023-02-06 01:33:09 +00:00
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
2023-03-02 09:22:10 +00:00
rep . LockTime = now
2023-03-03 07:28:55 +00:00
if ! req . IsLock {
2023-04-06 06:49:54 +00:00
fmt . Println ( "进入解锁流程" )
// 如果当前锁定状态下没有任何数据变动,则报错
if hasChanged , _ := WhetherAnyChangedAfterLocked ( thisUser . MgmtArtistUid ) ; ! hasChanged {
tx . Rollback ( )
err = errors . New ( "此用户在锁定后未作任何修改,无法解锁" )
return
}
2023-03-03 07:28:55 +00:00
// 解锁时与另外4个模块联动
2023-03-17 02:32:22 +00:00
if err = tx . Model ( model . ArtworkLockRecord { } ) . Where ( "artist_uid = ? AND status =2" , thisUser . MgmtArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
2023-04-06 06:49:54 +00:00
tx . Rollback ( )
2023-03-10 09:27:10 +00:00
return nil , err
}
2023-03-17 02:32:22 +00:00
if err = tx . Model ( model . ArtshowArtistSupplement { } ) . Where ( "artist_uid = ? AND status =2" , thisUser . MgmtArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
2023-04-06 06:49:54 +00:00
tx . Rollback ( )
2023-03-03 07:28:55 +00:00
return nil , err
}
2023-03-17 02:32:22 +00:00
if err = tx . Model ( model . ArtshowArtistIndex { } ) . Where ( "artist_uid = ? AND status =2" , thisUser . MgmtArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
2023-04-06 06:49:54 +00:00
tx . Rollback ( )
2023-03-03 07:28:55 +00:00
return nil , err
}
2023-03-17 02:32:22 +00:00
if err = tx . Model ( model . ArtshowVideoRecord { } ) . Where ( "artist_uid = ? AND status =2" , thisUser . MgmtArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
2023-04-06 06:49:54 +00:00
tx . Rollback ( )
2023-03-17 02:32:22 +00:00
return nil , err
}
2023-03-17 02:46:56 +00:00
// 与画家宝的合同表进行联动
2023-03-17 02:32:22 +00:00
if err = tx . Model ( model . Contract { } ) . Where ( "artist_uid = ? AND status =2" , thisUser . MgmtArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
2023-04-06 06:49:54 +00:00
tx . Rollback ( )
2023-03-03 07:28:55 +00:00
return nil , err
}
2023-03-10 09:27:10 +00:00
} else {
fmt . Println ( "else 更新最新上锁时间" )
if err = tx . Model ( model . User { } ) . Where ( "mgmt_artist_uid = ?" , thisUser . MgmtArtistUid ) . Update ( "latest_lock_time" , now ) . Error ; err != nil {
2023-04-06 06:49:54 +00:00
tx . Rollback ( )
2023-03-03 07:28:55 +00:00
return nil , err
}
2023-03-10 09:27:10 +00:00
fmt . Println ( "更新结束" )
2023-03-03 07:28:55 +00:00
}
tx . Commit ( )
2023-02-06 01:33:09 +00:00
return rep , nil
}
2023-02-02 06:10:24 +00:00
2023-04-06 06:49:54 +00:00
// 简单判断锁定后数据是否有新增
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
}
2023-02-24 16:30:57 +00:00
func CheckInvitedCode ( req * artistInfoUser . CheckInvitedCodeRequest ) ( rep * artistInfoUser . GetUserRespond , err error ) {
rep = & artistInfoUser . GetUserRespond { }
2023-02-15 01:39:14 +00:00
// service := &artist.UserUpdateInfoService{}
var user model . User
2023-04-18 08:27:19 +00:00
if err = db . DB . First ( & user , "BINARY invited_code = ?" , req . InvitedCode ) . Error ; err != nil {
2023-02-15 01:39:14 +00:00
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
return nil , err
}
// rep.
rep . Id = user . ID
2023-02-20 04:51:50 +00:00
rep . MgmtAccId = user . MgmtAccId
2023-02-21 05:02:10 +00:00
rep . MgmtArtistUid = user . MgmtArtistUid
2023-02-15 01:39:14 +00:00
rep . TelNum = user . TelNum
2023-02-20 04:51:50 +00:00
rep . FddState = user . FddState
2023-02-15 01:39:14 +00:00
rep . IsRealName = user . IsRealName
2023-02-20 04:51:50 +00:00
//rep.Ruler = user.Ruler
2023-02-15 01:39:14 +00:00
// service.QrCodeImg = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v.png", user.InvitedCode)
// service.QrCodeImgDownload = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v-2.png", user.InvitedCode)
// rep.Data = service
return rep , nil
}
2023-02-24 16:30:57 +00:00
func UnFinishList ( req * artistInfoUser . UnFinishListRequest ) ( rep * artistInfoUser . UnFinishListRespond , err error ) {
rep = & artistInfoUser . UnFinishListRespond { }
2023-02-15 01:39:14 +00:00
var user model . User
2023-03-06 10:24:33 +00:00
if err := db . DB . Where ( "mgmt_acc_id = ? " , req . AccId ) . First ( & user ) . Error ; err != nil {
2023-02-15 01:39:14 +00:00
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
2023-03-06 10:24:33 +00:00
}
var accountStatusList int64
if user . IsRealName == 0 {
accountStatusList = 1
return
}
if user . MgmtArtistUid == "" {
accountStatusList = 2
return
2023-02-15 01:39:14 +00:00
}
2023-02-20 04:51:50 +00:00
2023-03-06 10:24:33 +00:00
//艺术家补充信息完成度统计
//var unfinishArtistSupplementCount int64
//if err = db.DB.Model(model.ArtshowArtistSupplement{}).Where("status = 2 AND artist_uid = ? AND audit_status in (3,5)", user.MgmtArtistUid).Count(&unfinishArtistSupplementCount).Error; err != nil {
// zap.L().Error("艺术家补充信息统计错误")
2023-02-20 04:51:50 +00:00
// return nil, err
//}
2023-03-06 10:24:33 +00:00
var viewData = struct {
UnfinishedArtworkBaseCount int64 ` gorm:"column:unfinished_artwork_base_count;comment:未完成的画作基本信息数量" `
UnfinishedArtworkSupplementCount int64 ` gorm:"column:unfinished_artwork_supplement_count;comment:未完成的画作补充信息数量" `
UnfinishedArtistSupplementCount int64 ` gorm:"column:unfinished_artist_supplement_count;comment:未完成的画家补充信息数量" `
UnfinishedArtistVideoRecordCount int64 ` gorm:"column:unfinished_artist_video_record_count;comment:未完成的画展视频统计" `
UnfinishedArtistIndexCount int64 ` gorm:"column:unfinished_artist_index_count;comment:未完成的画家指数" `
2023-03-17 02:46:56 +00:00
// UnfinishedContractCount int64 `gorm:"column:unfinished_contract_count;comment:未签署合同统计;"`
2023-03-06 10:24:33 +00:00
} { }
2023-03-17 02:46:56 +00:00
// 查询未完成的画展相关操作统计
2023-03-06 10:24:33 +00:00
var sql = fmt . Sprintf ( `
SELECT
COUNT ( 1 ) unfinished_artwork_base_count ,
( SELECT COUNT ( 1 ) FROM artwork_lock_record WHERE artist_uid = ? AND deleted_at = 0 AND STATUS = 2 AND supplement_audit_status IN ( 3 , 5 ) ) unfinished_artwork_supplement_count ,
( SELECT COUNT ( 1 ) FROM artshow_artist_supplement WHERE artist_uid = ? AND deleted_at = 0 AND STATUS = 2 AND audit_status IN ( 3 , 5 ) ) unfinished_artist_supplement_count ,
( SELECT COUNT ( 1 ) FROM artshow_video_record WHERE artist_uid = ? AND deleted_at = 0 AND STATUS = 2 AND audit_status IN ( 3 , 5 ) ) unfinished_artist_video_record_count ,
2023-03-07 00:48:58 +00:00
( SELECT COUNT ( 1 ) FROM artshow_artist_index WHERE artist_uid = ? AND deleted_at = 0 AND STATUS = 2 AND audit_status IN ( 3 , 5 ) ) unfinished_artist_index_count
2023-03-06 10:24:33 +00:00
FROM
artwork_lock_record
WHERE artist_uid = ? AND STATUS = 2 AND base_audit_status IN ( 1 , 3 , 5 )
` )
err = db . DB . Raw ( sql , user . MgmtArtistUid , user . MgmtArtistUid , user . MgmtArtistUid , user . MgmtArtistUid , user . MgmtArtistUid ) . Scan ( & viewData ) . Error
if err != nil {
return nil , err
}
2023-03-17 02:46:56 +00:00
//未签署合同统计
var UnfinishedContractCount int64
err = db . DB . Model ( model . Contract { } ) . Where ( "artist_uid = ? AND STATUS = 2 AND state =1" , user . MgmtArtistUid ) . Count ( & UnfinishedContractCount ) . Error
if err != nil {
return nil , err
}
2023-03-06 10:24:33 +00:00
rep = & artistInfoUser . UnFinishListRespond {
2023-03-17 02:46:56 +00:00
ContractList : UnfinishedContractCount ,
2023-03-06 10:24:33 +00:00
SupplyInfoList : viewData . UnfinishedArtworkBaseCount + viewData . UnfinishedArtworkSupplementCount + viewData . UnfinishedArtistIndexCount + viewData . UnfinishedArtistSupplementCount ,
AccountStateList : accountStatusList ,
}
2023-02-15 01:39:14 +00:00
return rep , nil
}
2023-02-24 16:30:57 +00:00
func GetUserMsg ( req * artistInfoUser . GetUserMsgRequest ) ( rep * artistInfoUser . GetUserMsgRespond , err error ) {
2023-02-15 01:39:14 +00:00
var user model . User
err = db . DB . Where ( "id = ?" , req . Id ) . First ( & user ) . Error
if err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
userByte , err := json . Marshal ( user )
if err != nil {
zap . L ( ) . Error ( "1get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
fmt . Println ( string ( userByte ) )
2023-02-24 16:30:57 +00:00
var re = new ( artistInfoUser . GetUserMsgRespond )
2023-02-15 01:39:14 +00:00
err = json . Unmarshal ( userByte , re )
if err != nil {
zap . L ( ) . Error ( "1get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
rep = re
return rep , nil
}
2023-02-17 03:33:56 +00:00
2023-02-24 16:30:57 +00:00
func FindUser ( req * artistInfoUser . FindUserRequest ) ( rep * artistInfoUser . UserInfo , err error ) {
2023-03-16 03:13:25 +00:00
fmt . Println ( "FindUser 11111111111" )
2023-02-24 16:30:57 +00:00
rep = & artistInfoUser . UserInfo { }
2023-02-17 03:33:56 +00:00
var data = model . User { }
2023-03-16 05:18:57 +00:00
var tx = db . DB . Model ( model . User { } ) . Preload ( "RealNameInfo" ) . Preload ( "InvitedBy.UserInfo.RealNameInfo" )
2023-02-20 04:51:50 +00:00
if req . MgmtAccId != 0 {
tx = tx . Where ( "mgmt_acc_id = ?" , req . MgmtAccId )
2023-02-17 03:33:56 +00:00
}
2023-02-21 05:02:10 +00:00
if req . MgmtArtistId != 0 {
2023-02-17 03:33:56 +00:00
tx = tx . Where ( "mgmt_artist_id = ?" , req . MgmtArtistId )
}
if req . InvitedCode != "" {
2023-04-18 07:09:35 +00:00
tx = tx . Where ( "BINARY invited_code = ?" , req . InvitedCode )
2023-02-17 03:33:56 +00:00
}
2023-02-21 05:02:10 +00:00
if req . MgmtArtistUid != "" {
tx = tx . Where ( "mgmt_artist_uid = ?" , req . MgmtArtistUid )
}
2023-02-17 03:33:56 +00:00
err = tx . First ( & data ) . Error
if err != nil {
return
}
2023-02-20 13:52:53 +00:00
if data . RealNameInfo == nil {
data . RealNameInfo = & model . RealName { }
}
2023-03-14 07:09:13 +00:00
// 邀请人的查询变更为通过账号服务查询
2023-03-16 05:18:57 +00:00
if data . InvitedBy == nil {
data . InvitedBy = & model . Invite { }
2023-02-20 13:52:53 +00:00
}
2023-03-16 05:18:57 +00:00
var inviterName string
var inviterCode string
if data . InvitedBy != nil {
inviterCode = data . InvitedBy . InviteCode
}
if data . InvitedBy != nil && data . InvitedBy . UserInfo != nil && data . InvitedBy . UserInfo . RealNameInfo != nil {
inviterName = data . InvitedBy . UserInfo . RealNameInfo . Name
}
//查询邀请人 无法通过账号服务进行查询,密码验证错误
// var inviterCode = model.Invite{}
// var inviterAccount = &account.ListResponse{Data: []*account.AccountInfo{}}
// var inviterName string
2023-04-18 07:09:35 +00:00
// db.DB.Model(model.Invite{}).Where("BINARY invited_code = ?", data.InviteCode).First(&inviterCode)
2023-03-16 05:18:57 +00:00
// if inviterCode.InviteCode != "" {
// inviterAccount, err = service.AccountProvider.ListByIDs(context.Background(), &account.ListByIDsRequest{
// Page: 1,
// PageSize: 1,
// InvitationCode: []string{inviterCode.InviteCode},
// })
// if err != nil {
// fmt.Println("AccountProvider.ListByID error", err.Error())
// return nil, err
// }
// if len(inviterAccount.Data) > 0 {
// inviterName = inviterAccount.Data[0].RealName
// }
// }
2023-03-14 07:09:13 +00:00
service . AccountProvider . Info ( context . Background ( ) , & account . InfoRequest { } )
2023-02-24 16:30:57 +00:00
rep = & artistInfoUser . UserInfo {
2023-02-21 05:02:10 +00:00
Id : data . ID ,
DeletedAt : int64 ( data . DeletedAt ) ,
UpdatedAt : data . UpdatedAt . Unix ( ) ,
CreatedAt : data . CreatedAt . Unix ( ) ,
MgmtAccId : data . MgmtAccId ,
MgmtArtistId : data . MgmtArtistId ,
MgmtArtistUid : data . MgmtArtistUid ,
TelNum : data . TelNum ,
2023-03-16 05:18:57 +00:00
InviterCode : inviterCode , //邀请人的邀请码,不是用户个人邀请码
InviterName : inviterName , //邀请人的姓名
2023-02-21 05:02:10 +00:00
IsRealName : data . IsRealName ,
RealNameId : data . RealNameId ,
2023-02-24 16:30:57 +00:00
RealName : & artistInfoUser . RealNameInfo {
2023-02-20 04:51:50 +00:00
Name : data . RealNameInfo . Name ,
IdNum : data . RealNameInfo . IdNum ,
IdCardFront : data . RealNameInfo . IdCardFront ,
IdCardBack : data . RealNameInfo . IdCardBack ,
Age : int32 ( data . RealNameInfo . Age ) ,
Sex : string ( data . RealNameInfo . Sex ) ,
Birthday : data . RealNameInfo . Birthday ,
Address : data . RealNameInfo . Address ,
Id : data . RealNameInfo . ID ,
} ,
2023-02-21 05:02:10 +00:00
FddState : data . FddState ,
CustomerId : data . CustomerId ,
OpenId : data . OpenId ,
IsRead : data . IsRead ,
IsLock : data . IsLock ,
Account : data . Account ,
CertificateNum : data . CertificateNum ,
CertificateImg : data . CertificateImg ,
2023-03-08 07:26:38 +00:00
JoinAssoTime : data . JoinAssoTime ,
2023-02-21 05:02:10 +00:00
Photo : data . Photo ,
HtmlType : data . Htmltype ,
EnvType : data . Envtype ,
InviteCode : data . InviteCode ,
2023-03-02 09:22:10 +00:00
LatestLockTime : data . LatestLockTime ,
2023-02-17 03:33:56 +00:00
}
return rep , nil
}
2023-02-20 13:58:18 +00:00
2023-02-27 07:51:04 +00:00
func FindUserList ( req * artistInfoUser . FindUsersRequest ) ( rep [ ] * artistInfoUser . UserInfo , total int64 , err error ) {
//todo 待修改,邀请人的关联信息不显示
var (
datas = [ ] model . User { }
tx = db . DB . Model ( model . User { } ) .
2023-03-03 05:47:45 +00:00
Joins ( "LEFT JOIN real_name rn ON rn.id = sys_user.real_name_id" ) .
2023-04-03 06:55:41 +00:00
Preload ( "RealNameInfo" ) //.Where("sys_user.mgmt_artist_uid!=''")
2023-02-27 07:51:04 +00:00
)
if req . InvitedCode != "" {
2023-04-18 07:09:35 +00:00
tx = tx . Where ( "BINARY invited_code = ?" , req . InvitedCode )
2023-02-27 07:51:04 +00:00
}
2023-03-08 07:26:38 +00:00
if req . MgmtAccountId != 0 {
tx = tx . Where ( "mgmt_acc_id = ?" , req . MgmtAccountId )
}
2023-02-27 07:51:04 +00:00
if req . MgmtArtistUid != "" {
tx = tx . Where ( "mgmt_artist_uid = ?" , req . MgmtArtistUid )
}
2023-03-02 09:22:10 +00:00
if req . MgmtArtistUids != nil {
tx = tx . Where ( "mgmt_artist_uid in ?" , req . MgmtArtistUids )
}
2023-02-27 07:51:04 +00:00
if req . InviterName != "" {
2023-03-03 05:47:45 +00:00
tx = tx . Clauses ( clause . Like {
2023-02-27 07:51:04 +00:00
Column : "rn.name" ,
Value : "%" + req . InviterName + "%" ,
} )
}
if req . IsArtist {
2023-04-03 06:55:41 +00:00
tx = tx . Where ( "sys_user.mgmt_artist_uid !='' " )
2023-02-27 07:51:04 +00:00
}
2023-03-03 05:47:45 +00:00
if req . IsLock {
tx = tx . Where ( "is_lock=true" )
}
if req . ArtistRealName != "" {
2023-03-23 11:40:47 +00:00
tx = tx . Clauses ( clause . Like {
2023-03-03 05:47:45 +00:00
Column : "rn.name" ,
Value : "%" + req . ArtistRealName + "%" ,
} )
}
2023-02-27 07:51:04 +00:00
err = tx . Count ( & total ) . Scopes ( db . Pagination ( req . Page , req . PageSize ) ) . Find ( & datas ) . Error
if err != nil {
return
}
for _ , v := range datas {
if v . RealNameInfo == nil {
v . RealNameInfo = & model . RealName { }
}
2023-03-16 05:21:17 +00:00
if v . InvitedBy == nil {
v . InvitedBy = & model . Invite { }
}
2023-03-14 07:09:13 +00:00
var inviterName , inviterCode string
2023-03-16 05:21:17 +00:00
if v . InvitedBy != nil && v . InvitedBy . UserInfo != nil && v . InvitedBy . UserInfo . RealNameInfo != nil {
inviterName = v . InvitedBy . UserInfo . RealNameInfo . Name
} else {
inviterName = "无"
}
2023-03-16 05:18:57 +00:00
// 查询邀请人信息,调用账号服务接口报错 as/sk 错误,换原先的方法
// inviterInfo := GetInviterInfo(v.InviteCode)
// inviterName = inviterInfo.RealName
2023-03-14 07:09:13 +00:00
inviterCode = v . InviteCode
2023-02-27 07:51:04 +00:00
rep = append ( rep , & artistInfoUser . UserInfo {
Id : v . ID ,
DeletedAt : int64 ( v . DeletedAt ) ,
UpdatedAt : v . UpdatedAt . Unix ( ) ,
CreatedAt : v . CreatedAt . Unix ( ) ,
MgmtAccId : v . MgmtAccId ,
MgmtArtistId : v . MgmtArtistId ,
MgmtArtistUid : v . MgmtArtistUid ,
TelNum : v . TelNum ,
2023-03-14 07:09:13 +00:00
InviterCode : inviterCode , //邀请人的邀请码,不是用户个人邀请码
InviterName : inviterName , //邀请人没有实名则为空字符串
2023-02-27 07:51:04 +00:00
IsRealName : v . IsRealName ,
RealNameId : v . RealNameId ,
RealName : & artistInfoUser . RealNameInfo {
Name : v . RealNameInfo . Name ,
IdNum : v . RealNameInfo . IdNum ,
IdCardFront : v . RealNameInfo . IdCardFront ,
IdCardBack : v . RealNameInfo . IdCardBack ,
Age : int32 ( v . RealNameInfo . Age ) ,
Sex : string ( v . RealNameInfo . Sex ) ,
Birthday : v . RealNameInfo . Birthday ,
Address : v . RealNameInfo . Address ,
Id : v . RealNameInfo . ID ,
} ,
FddState : v . FddState ,
CustomerId : v . CustomerId ,
OpenId : v . OpenId ,
IsRead : v . IsRead ,
IsLock : v . IsLock ,
Account : v . Account ,
CertificateNum : v . CertificateNum ,
CertificateImg : v . CertificateImg ,
2023-03-08 07:26:38 +00:00
JoinAssoTime : v . JoinAssoTime ,
2023-02-27 07:51:04 +00:00
Photo : v . Photo ,
HtmlType : v . Htmltype ,
EnvType : v . Envtype ,
InviteCode : v . InviteCode ,
2023-03-02 09:22:10 +00:00
LatestLockTime : v . LatestLockTime ,
2023-02-27 07:51:04 +00:00
} )
}
return
}
func GetViewUserList ( req * artistInfoUser . FindUsersRequest ) ( resp [ ] model . UserView , total int64 , err error ) {
resp = [ ] model . UserView { }
var (
2023-03-01 15:07:00 +00:00
tx = db . DB . Model ( model . UserView { } ) . Order ( "created_at desc" )
2023-02-27 07:51:04 +00:00
)
if req . InvitedCode != "" {
2023-04-18 07:09:35 +00:00
tx = tx . Where ( "BINARY invited_code = ?" , req . InvitedCode )
2023-02-27 07:51:04 +00:00
}
if req . MgmtArtistUid != "" {
tx = tx . Where ( "mgmt_artist_uid = ?" , req . MgmtArtistUid )
2023-03-01 15:07:00 +00:00
} else if req . MgmtArtistUids != nil {
tx = tx . Where ( "mgmt_artist_uid in ?" , req . MgmtArtistUids )
2023-02-27 07:51:04 +00:00
}
if req . InviterName != "" {
2023-03-23 11:19:47 +00:00
tx = tx . Where ( "inviter_real_name LIKE ?" , "%" + req . InviterName + "%" )
2023-02-27 07:51:04 +00:00
}
if req . IsArtist {
tx = tx . Where ( "mgmt_artist_uid !='' " )
}
2023-03-24 03:49:09 +00:00
if req . ArtistRealName != "" {
tx = tx . Where ( fmt . Sprintf ( "real_name LIKE '%%%s%%'" , req . ArtistRealName ) )
}
2023-03-23 11:35:03 +00:00
if req . Keyword != "" {
2023-03-23 11:40:47 +00:00
searchWords := "%" + req . Keyword + "%"
tx = tx . Where ( "real_name LIKE ? OR invited_code LIKE ? OR tel_num LIKE ?" , searchWords , searchWords , searchWords )
2023-03-23 11:35:03 +00:00
}
2023-03-01 15:07:00 +00:00
2023-02-27 07:51:04 +00:00
err = tx . Count ( & total ) . Scopes ( db . Pagination ( req . Page , req . PageSize ) ) . Find ( & resp ) . Error
return
}
2023-02-24 16:30:57 +00:00
func UpdateUserData ( req * artistInfoUser . UserInfo ) ( rep * artistInfoUser . CommonNoParams , err error ) {
2023-02-23 13:45:59 +00:00
var (
preUpdateData model . User
needUpdateMobile bool
)
2023-03-13 08:48:49 +00:00
dbfind := db . DB . Begin ( ) . Preload ( "RealNameInfo" )
2023-02-20 13:52:53 +00:00
if req . Id != 0 {
2023-03-13 08:48:49 +00:00
dbfind = dbfind . Where ( "id = ?" , req . Id )
2023-02-20 13:52:53 +00:00
} else if req . MgmtAccId != 0 {
2023-03-13 08:48:49 +00:00
dbfind = dbfind . Where ( "mgmt_acc_id = ?" , req . MgmtAccId )
2023-02-20 13:52:53 +00:00
} else {
2023-02-21 05:02:10 +00:00
return nil , errors . New ( "Id或mgmt_acc_id不能为0" )
2023-02-20 13:52:53 +00:00
}
2023-03-13 08:48:49 +00:00
if err = dbfind . Find ( & preUpdateData ) . Error ; err != nil {
2023-02-20 13:52:53 +00:00
return nil , err
}
2023-03-22 05:07:59 +00:00
//判断需要更新的内容
2023-02-21 05:02:10 +00:00
if req . MgmtArtistId != 0 {
2023-02-20 13:52:53 +00:00
preUpdateData . MgmtArtistId = req . MgmtArtistId
}
2023-02-21 05:02:10 +00:00
if req . MgmtArtistUid != "" {
preUpdateData . MgmtArtistUid = req . MgmtArtistUid
}
2023-03-22 05:07:59 +00:00
if req . MgmtAccId != 0 {
preUpdateData . MgmtAccId = req . MgmtAccId
}
2023-02-23 13:45:59 +00:00
if req . TelNum != "" && req . TelNum != preUpdateData . TelNum {
needUpdateMobile = true
2023-02-20 13:52:53 +00:00
preUpdateData . TelNum = req . TelNum
}
if req . InviteCode != "" {
preUpdateData . InviteCode = req . InviteCode
}
if req . IsRealName != 0 {
preUpdateData . IsRealName = req . IsRealName
}
if req . RealNameId != 0 {
preUpdateData . RealNameId = req . RealNameId
}
if req . FddState != 0 {
preUpdateData . FddState = req . FddState
}
if req . CustomerId != "" {
preUpdateData . CustomerId = req . CustomerId
}
if req . OpenId != "" {
preUpdateData . OpenId = req . OpenId
}
if req . IsRead != 0 {
preUpdateData . IsRead = req . IsRead
}
if req . IsLock {
preUpdateData . IsLock = req . IsLock
}
if req . Account != "" {
preUpdateData . Account = req . Account
}
if req . CertificateNum != "" {
preUpdateData . CertificateNum = req . CertificateNum
}
if req . CertificateImg != "" {
preUpdateData . CertificateImg = req . CertificateImg
}
if req . Photo != "" {
preUpdateData . Photo = req . Photo
}
2023-02-21 05:02:10 +00:00
if req . HtmlType != "" {
preUpdateData . Htmltype = req . HtmlType
2023-02-20 13:52:53 +00:00
}
2023-02-21 05:02:10 +00:00
if req . EnvType != "" {
preUpdateData . Envtype = req . EnvType
2023-02-20 13:52:53 +00:00
}
2023-03-08 07:26:38 +00:00
if req . JoinAssoTime != "" {
preUpdateData . JoinAssoTime = req . JoinAssoTime
}
2023-03-08 09:46:17 +00:00
if req . WxAccount != "" {
preUpdateData . WxAccount = req . WxAccount
}
2023-04-11 08:42:26 +00:00
if req . MgmtArtistId != 0 {
preUpdateData . MgmtArtistId = req . MgmtArtistId
}
2023-03-13 08:48:49 +00:00
tx := db . DB . Begin ( )
2023-02-24 02:51:35 +00:00
err = tx . Save ( & preUpdateData ) . Error
2023-03-13 08:48:49 +00:00
if err != nil {
return nil , err
}
2023-02-22 06:15:34 +00:00
//更新实名信息
if req . RealName != nil {
var realName = model . RealName { }
if preUpdateData . RealNameInfo != nil {
realName = * preUpdateData . RealNameInfo
}
if req . RealName . Name != "" {
realName . Name = req . RealName . Name
}
if req . RealName . IdNum != "" {
realName . IdNum = req . RealName . IdNum
}
if req . RealName . IdCardFront != "" {
realName . IdCardFront = req . RealName . IdCardFront
}
if req . RealName . IdCardBack != "" {
realName . IdCardBack = req . RealName . IdCardBack
}
if req . RealName . Age != 0 {
realName . Age = int ( req . RealName . Age )
}
if req . RealName . Sex != "" {
realName . Sex = model . SexType ( req . RealName . Sex )
}
if req . RealName . Birthday != "" {
realName . Birthday = req . RealName . Birthday
}
if req . RealName . Address != "" {
realName . Address = req . RealName . Address
}
err = db . DB . Save ( & realName ) . Error
}
2023-03-13 08:48:49 +00:00
if err != nil {
return nil , err
}
2023-02-23 13:45:59 +00:00
//更新手机号码
if needUpdateMobile {
// 更新账号服务中手机号
2023-02-24 02:51:35 +00:00
if _ , err = service . AccountProvider . UpdateTelNum ( context . Background ( ) , & account . SendNewTelNumMsgRequest {
2023-02-23 13:45:59 +00:00
Domain : req . Domain ,
ID : uint64 ( preUpdateData . MgmtAccId ) ,
NewTelNum : preUpdateData . TelNum ,
Code : req . VerCode ,
Project : "" ,
} ) ; err != nil {
fmt . Println ( "错误1-needUpdateMobile-AccountImpl.UpdateTelNum:" , err . Error ( ) )
2023-03-13 08:48:49 +00:00
//tx.Rollback()
2023-02-23 13:45:59 +00:00
return
}
//更新画家服务中的手机号
if _ , err = service . GrpcArtistImpl . UpdateProfile ( context . Background ( ) , & artist . ProfileRequest { Uid : preUpdateData . MgmtArtistUid , Phone : preUpdateData . TelNum } ) ; err != nil {
fmt . Println ( "错误2-needUpdateMobile-rpcArtistImpl.UpdateProfile:" , err . Error ( ) )
2023-03-13 08:48:49 +00:00
//tx.Rollback()
2023-02-23 13:45:59 +00:00
return
}
}
2023-02-24 02:51:35 +00:00
tx . Commit ( )
2023-02-17 03:33:56 +00:00
return nil , nil
}
2023-02-22 05:37:50 +00:00
2023-02-24 16:30:57 +00:00
func PreSaveArtistInfo ( in * artistInfoUser . PreSaveArtistInfoData ) ( rep * artistInfoUser . CommonNoParams , err error ) {
2023-02-22 05:37:50 +00:00
var data = model . TempArtistInfo { }
err = db . DB . Where ( "mgmt_acc_id = ?" , in . MgmtAccId ) . Find ( & data ) . Error
if err != nil {
return
}
var tx = db . DB
data = model . TempArtistInfo {
MgmtAccId : in . MgmtAccId ,
Name : in . Name ,
CardId : in . CardId ,
Gender : in . Gender ,
Age : in . Age ,
NativePlace : in . NativePlace ,
PenName : in . PenName ,
Phone : in . Phone ,
Address : in . Address ,
StageName : in . StageName ,
CaaCertNum : in . CaaCertNum ,
CaaJoinTime : in . CaaJoinTime ,
JoinShow : in . JoinShow ,
}
if data . MgmtAccId == 0 {
err = tx . Create ( & data ) . Error
} else {
err = tx . Where ( "mgmt_acc_id = ?" , in . MgmtAccId ) . Save ( & data ) . Error
}
return
}
2023-02-24 16:30:57 +00:00
func GetPreSaveArtistInfo ( in * artistInfoUser . GetPreSaveArtistInfoRequest ) ( res * artistInfoUser . PreSaveArtistInfoData , err error ) {
2023-02-22 05:37:50 +00:00
var data = model . TempArtistInfo { }
err = db . DB . Where ( "mgmt_acc_id = ?" , in . MgmtAccId ) . Find ( & data ) . Error
2023-02-24 16:30:57 +00:00
res = & artistInfoUser . PreSaveArtistInfoData {
2023-02-22 05:37:50 +00:00
MgmtAccId : data . MgmtAccId ,
Name : data . Name ,
CardId : data . CardId ,
Gender : data . Gender ,
Age : data . Age ,
NativePlace : data . NativePlace ,
PenName : data . PenName ,
Phone : data . Phone ,
Address : data . Address ,
StageName : data . StageName ,
CaaCertNum : data . CaaCertNum ,
CaaJoinTime : data . CaaJoinTime ,
JoinShow : data . JoinShow ,
}
return
}
2023-02-24 16:30:57 +00:00
func CheckUserLock ( id int64 ) ( err error ) {
var user model . User
if err = db . DB . Where ( "id = ? " , id ) . First ( & user ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return
}
fmt . Printf ( "%+v\n" , user )
if user . IsLock {
fmt . Println ( user . IsLock )
fmt . Println ( "22222" )
zap . L ( ) . Error ( "user is lock" )
return errors . New ( m . ERROR_ISLOCK )
}
fmt . Println ( "333333" )
return nil
}
2023-02-25 00:44:50 +00:00
func CheckUserLockByArtistUid ( artistUid string ) ( err error ) {
var user model . User
if err = db . DB . Where ( "mgmt_artist_uid = ?" , artistUid ) . First ( & user ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
if err == gorm . ErrRecordNotFound {
return errors . New ( m . ARTIST_NOT_EXISTS )
}
err = errors . New ( m . ERROR_SELECT )
return
}
if user . IsLock {
return errors . New ( m . ERROR_ISLOCK )
}
return nil
}
2023-03-14 10:45:35 +00:00
// GetInviterInfo 查询邀请人信息
// invitedCode:受邀请人的邀请码
func GetInviterInfo ( inviterCode string ) ( result account . AccountInfo ) {
//查找邀请关系
var inviteRelation = model . Invite { }
2023-04-18 07:09:35 +00:00
err := db . DB . Model ( model . Invite { } ) . Where ( "BINARY invite_code = ?" , inviterCode ) . Find ( & inviteRelation ) . Error
2023-03-14 10:45:35 +00:00
if err != nil {
fmt . Println ( "\n GetInviterInfo: 查询邀请人信息出错" , err . Error ( ) )
return
}
2023-03-16 05:18:57 +00:00
// todo 接口调用报错 as/ak错误
2023-03-14 10:45:35 +00:00
//查询邀请人信息
2023-03-16 05:18:57 +00:00
// res, err := service.AccountProvider.ListByIDs(context.Background(), &account.ListByIDsRequest{
// Page: 1,
// PageSize: 1,
// InvitationCode: []string{inviteRelation.InviteCode},
// })
// if err != nil {
// fmt.Println("\n GetInviterInfo 查询邀请人信息出错 service.AccountProvider.ListByIDs Error", err.Error())
// return
// }
// if res != nil && len(res.Data) > 0 {
// result = account.AccountInfo{
// ID: res.Data[0].ID,
// Account: res.Data[0].Account,
// NickName: res.Data[0].NickName,
// Type: res.Data[0].Type,
// TelNum: res.Data[0].TelNum,
// Status: res.Data[0].Status,
// Avatar: res.Data[0].Avatar,
// CreateAt: res.Data[0].CreateAt,
// RealNameID: res.Data[0].RealNameID,
// RealName: res.Data[0].RealName,
// IDNum: res.Data[0].IDNum,
// MnemonicWords: res.Data[0].MnemonicWords,
// IsNeedChange: res.Data[0].IsNeedChange,
// EnterDate: res.Data[0].EnterDate,
// WorkYear: res.Data[0].WorkYear,
// Domain: res.Data[0].Domain,
// Extend: res.Data[0].Extend,
// JobNum: res.Data[0].JobNum,
// BirthDate: res.Data[0].BirthDate,
// Age: res.Data[0].Age,
// Sex: res.Data[0].Sex,
// Title: res.Data[0].Title,
// Departments: res.Data[0].Departments,
// Ip: res.Data[0].Ip,
// LoginDate: res.Data[0].LoginDate,
// InvitationCode: res.Data[0].InvitationCode,
// }
// return
// }
2023-03-14 10:45:35 +00:00
return
}
2023-03-07 00:48:58 +00:00
func GetInvitedUserList ( in * artistInfoUser . GetInvitedUserListRequest ) ( res * artistInfoUser . GetInvitedUserListResponse , err error ) {
2023-03-07 03:00:11 +00:00
res = & artistInfoUser . GetInvitedUserListResponse {
Data : [ ] * artistInfoUser . InvitedUser { } ,
Page : & artistInfoUser . UserCommonPageInfo { } ,
2023-03-07 00:48:58 +00:00
}
2023-03-07 03:00:11 +00:00
var inviteRelationIds [ ] int64
2023-03-30 03:22:31 +00:00
db . DB . Model ( model . Invite { } ) . Where ( "BINARY invite_code = ?" , in . InviterCode ) . Pluck ( "invited_id" , & inviteRelationIds )
2023-03-07 03:00:11 +00:00
var invitedList [ ] model . User
2023-04-19 04:04:18 +00:00
orm := db . DB . Select ( "sys_user.id,sys_user.created_at,sys_user.mgmt_acc_id,sys_user.mgmt_artist_uid,sys_user.tel_num,sys_user.invited_code,sys_user.account,sys_user.photo,sys_user.is_real_name,sys_user.fdd_state" ) . Model ( model . User { } ) . Preload ( "RealNameInfo" ) .
2023-03-24 05:09:17 +00:00
Joins ( "LEFT JOIN real_name rn ON rn.id = sys_user.real_name_id" ) .
2023-04-19 03:41:20 +00:00
Joins ( "LEFT JOIN invite ON invite.invited_id = sys_user.id" ) .
Where ( "sys_user.id in ?" , inviteRelationIds ) . Order ( "invite.created_at desc" )
2023-03-24 05:09:17 +00:00
if in . RealName != "" {
orm = orm . Where ( "rn.name like ?" , "%" + in . RealName + "%" )
}
if in . Keyword != "" {
searchWords := "%" + in . Keyword + "%"
orm = orm . Where ( "rn.name like ? OR sys_user.tel_num LIKE ? or sys_user.invited_code LIKE ?" , searchWords , searchWords , searchWords )
}
2023-03-14 07:09:13 +00:00
if err = orm . Count ( & res . Page . Total ) . Scopes ( db . Pagination ( in . Page , in . PageSize ) ) . Find ( & invitedList ) . Error ; err != nil {
return nil , err
}
//查询画家基本信息
var artistProfileList = & artist . ArtistListResponse { Data : [ ] * artist . ProfileRequest { } }
var artistUids = [ ] string { }
for _ , v := range invitedList {
if v . MgmtArtistUid != "" {
artistUids = append ( artistUids , v . MgmtArtistUid )
}
}
artistProfileList , err = service . GrpcArtistImpl . ArtistList ( context . Background ( ) , & artist . ArtistListRequest {
Page : 1 ,
PageSize : int32 ( len ( artistUids ) ) ,
Uids : artistUids ,
2023-03-14 07:32:03 +00:00
Gender : - 1 ,
2023-03-14 07:09:13 +00:00
} )
if err != nil {
2023-03-07 03:00:11 +00:00
return nil , err
}
for _ , v := range invitedList {
var (
2023-03-14 07:09:13 +00:00
realName string
2023-03-15 10:08:37 +00:00
idcard string
2023-03-14 07:09:13 +00:00
sex string
age int64
penName string
stageName string
2023-03-07 03:00:11 +00:00
)
if v . RealNameInfo != nil {
realName = v . RealNameInfo . Name
sex = string ( v . RealNameInfo . Sex )
age = int64 ( v . RealNameInfo . Age )
2023-03-15 10:08:37 +00:00
idcard = v . RealNameInfo . IdNum
2023-03-07 03:00:11 +00:00
}
2023-03-14 07:09:13 +00:00
for _ , artistProfile := range artistProfileList . Data {
if v . MgmtArtistUid == artistProfile . Uid {
penName = artistProfile . PenName
stageName = artistProfile . StageName
}
}
2023-03-07 03:00:11 +00:00
res . Data = append ( res . Data , & artistInfoUser . InvitedUser {
UserId : v . ID ,
AccId : v . MgmtAccId ,
ArtistUid : v . MgmtArtistUid ,
TelNum : v . TelNum ,
InviteCode : v . InviteCode ,
Account : v . Account ,
Photo : v . Photo ,
IsRealName : v . IsRealName ,
FddState : v . FddState ,
RealName : realName ,
Sex : sex ,
Age : age ,
CreatedAt : stime . TimeToString ( v . CreatedAt , stime . Format_Normal_YMDhms ) ,
2023-03-14 07:09:13 +00:00
PenName : penName ,
StageName : stageName ,
2023-03-15 10:08:37 +00:00
IdCard : idcard ,
2023-03-07 03:00:11 +00:00
} )
}
return
2023-03-07 00:48:58 +00:00
}
2023-03-14 07:09:13 +00:00
2023-03-24 02:50:21 +00:00
// 查询被哪些人邀请过
2023-03-14 10:45:35 +00:00
func GetInviterUserList ( in * artistInfoUser . GetInviterUserListRequest ) ( res * artistInfoUser . GetInvitedUserListResponse , err error ) {
res = & artistInfoUser . GetInvitedUserListResponse {
Data : [ ] * artistInfoUser . InvitedUser { } ,
Page : & artistInfoUser . UserCommonPageInfo {
Page : int32 ( in . Page ) ,
PageSize : int32 ( in . PageSize ) ,
} ,
2023-03-14 07:09:13 +00:00
}
2023-03-24 06:39:22 +00:00
var inviterIds [ ] int64
2023-03-24 02:58:03 +00:00
db . DB . Model ( model . UserInvited { } ) . Where ( "BINARY invited_code = ?" , in . InvitedCode ) . Pluck ( "user_id" , & inviterIds )
2023-03-14 10:45:35 +00:00
var invitedList [ ] model . User
2023-03-24 02:50:21 +00:00
orm := db . DB . Model ( model . User { } ) . Preload ( "RealNameInfo" ) . Where ( "id in ?" , inviterIds ) //查询邀请人
2023-03-14 10:45:35 +00:00
if err = orm . Count ( & res . Page . Total ) . Scopes ( db . Pagination ( in . Page , in . PageSize ) ) . Find ( & invitedList ) . Error ; err != nil {
return nil , err
}
//查询画家基本信息
var artistProfileList = & artist . ArtistListResponse { Data : [ ] * artist . ProfileRequest { } }
var artistUids = [ ] string { }
for _ , v := range invitedList {
if v . MgmtArtistUid != "" {
artistUids = append ( artistUids , v . MgmtArtistUid )
}
}
artistProfileList , err = service . GrpcArtistImpl . ArtistList ( context . Background ( ) , & artist . ArtistListRequest {
Page : 1 ,
PageSize : int32 ( len ( artistUids ) ) ,
Uids : artistUids ,
Gender : - 1 ,
2023-03-14 07:09:13 +00:00
} )
if err != nil {
2023-03-14 10:45:35 +00:00
return nil , err
2023-03-14 07:09:13 +00:00
}
2023-03-14 10:45:35 +00:00
for _ , v := range invitedList {
var (
realName string
2023-03-15 07:01:04 +00:00
idCard string
2023-03-14 10:45:35 +00:00
sex string
age int64
penName string
stageName string
)
if v . RealNameInfo != nil {
realName = v . RealNameInfo . Name
sex = string ( v . RealNameInfo . Sex )
age = int64 ( v . RealNameInfo . Age )
2023-03-15 07:01:04 +00:00
idCard = v . RealNameInfo . IdNum
2023-03-14 10:45:35 +00:00
}
2023-03-15 07:12:06 +00:00
fmt . Println ( "idCard" , idCard )
2023-03-14 10:45:35 +00:00
for _ , artistProfile := range artistProfileList . Data {
if v . MgmtArtistUid == artistProfile . Uid {
penName = artistProfile . PenName
stageName = artistProfile . StageName
}
}
res . Data = append ( res . Data , & artistInfoUser . InvitedUser {
UserId : v . ID ,
AccId : v . MgmtAccId ,
ArtistUid : v . MgmtArtistUid ,
TelNum : v . TelNum ,
InviteCode : v . InviteCode ,
Account : v . Account ,
Photo : v . Photo ,
IsRealName : v . IsRealName ,
FddState : v . FddState ,
RealName : realName ,
Sex : sex ,
Age : age ,
CreatedAt : stime . TimeToString ( v . CreatedAt , stime . Format_Normal_YMDhms ) ,
PenName : penName ,
StageName : stageName ,
2023-03-15 07:01:04 +00:00
IdCard : idCard ,
2023-03-14 10:45:35 +00:00
} )
}
return
}
// 邀请关系数据统计
type inviteStatic struct {
RealName string ` gorm:"column:real_name" `
TelNum string ` gorm:"column:tel_num" `
InviteCode string ` gorm:"column:invite_code" `
InvitePicUrl string ` gorm:"-" `
InvitedCount int64 ` gorm:"column:invited_count" `
}
2023-03-23 11:40:47 +00:00
func GetInviteStaticList ( in * artistInfoUser . GetInviteStaticListRequest ) ( res * artistInfoUser . GetInviteStaticListResponse , err error ) {
2023-03-14 10:45:35 +00:00
res = & artistInfoUser . GetInviteStaticListResponse { Data : [ ] * artistInfoUser . GetInviteStaticListData { } , Page : & artistInfoUser . UserCommonPageInfo {
Page : int32 ( in . Page ) ,
PageSize : int32 ( in . PageSize ) ,
} }
orm := db . DB .
Select ( "ui.invite_code,max(rn.name) real_name, max(su.tel_num) tel_num,max(su.mgmt_artist_uid) artist_uid,count(ui.invited_code) invited_count " ) .
2023-03-30 03:14:21 +00:00
Table ( model . Invite { } . TableName ( ) + " AS ui" ) .
2023-03-24 10:19:17 +00:00
Joins ( fmt . Sprintf ( "LEFT JOIN %v su ON BINARY su.invited_code =BINARY ui.invite_code" , model . User { } . TableName ( ) ) ) .
2023-03-14 10:45:35 +00:00
Joins ( ( fmt . Sprintf ( "LEFT JOIN %v rn ON rn.id = su.real_name_id" , model . RealName { } . TableName ( ) ) ) ) .
Where ( "su.deleted_at=0" ) .
2023-03-15 01:53:13 +00:00
Group ( "ui.invite_code" ) //HAVING count(ui.invited_code) >0
2023-03-23 11:35:03 +00:00
if in . Keyword != "" {
2023-03-24 01:39:34 +00:00
orm = orm . Where ( fmt . Sprintf ( "rn.name LIKE '%%%v%%' OR su.tel_num LIKE '%%%v%%' OR su.invited_code LIKE '%%%v%%'" , in . Keyword , in . Keyword , in . Keyword ) )
2023-03-14 10:45:35 +00:00
}
var datas [ ] inviteStatic
err = orm . Count ( & res . Page . Total ) . Scopes ( db . Pagination ( in . Page , in . PageSize ) ) . Find ( & datas ) . Error
2023-03-15 01:53:13 +00:00
//倒序排序
sort . Slice ( datas , func ( i , j int ) bool {
return datas [ i ] . InvitedCount < datas [ j ] . InvitedCount
} )
2023-03-14 10:45:35 +00:00
if len ( datas ) > 0 {
for i , v := range datas {
res . Data = append ( res . Data , & artistInfoUser . GetInviteStaticListData {
Idx : int64 ( i + 1 ) ,
RealName : v . RealName ,
TelNum : v . TelNum ,
InviteCode : v . InviteCode ,
InvitePicUrl : fmt . Sprintf ( "https://cdn.fontree.cn/artistmgmt/static/qrcode/%v.png" , v . InviteCode ) ,
InvitedCount : v . InvitedCount ,
} )
2023-03-14 07:09:13 +00:00
}
}
return
}