2023-01-18 09:03:15 +00:00
package dao
import (
2023-02-23 13:45:59 +00:00
"context"
2023-02-24 02:51:35 +00:00
_ "dubbo.apache.org/dubbo-go/v3/imports"
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"
"github.com/alibaba/sentinel-golang/logging"
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-03-02 09:22:10 +00:00
"time"
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-01-18 09:03:15 +00:00
2023-02-15 14:35:28 +00:00
var user = model . User {
2023-02-21 05:02:10 +00:00
MgmtAccId : req . MgmtAccId ,
TelNum : req . TelNum ,
MgmtArtistId : req . MgmtArtistId ,
MgmtArtistUid : req . MgmtArtistUid ,
InviteCode : req . UserInviteCode ,
Account : req . Account ,
2023-02-15 14:35:28 +00:00
}
2023-02-20 04:51:50 +00:00
if err = db . DB . Create ( & user ) . Error ; err != nil {
2023-01-18 09:03:15 +00:00
zap . L ( ) . Error ( "register user err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
return
}
2023-02-24 16:30:57 +00:00
func CreateUserInfo ( req * artistInfoUser . CreateUserInfoRequest ) ( rep * artistInfoUser . CreateUserInfoRespond , err error ) {
2023-02-15 01:39:14 +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 ,
2023-02-20 04:51:50 +00:00
IdNum : req . IdCard ,
2023-02-15 01:39:14 +00:00
TelNum : req . TelNum ,
2023-02-20 04:51:50 +00:00
IdCardFront : req . IdCardFront ,
IdCardBack : req . IdCardBack ,
2023-02-15 01:39:14 +00:00
}
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 )
2023-02-20 04:51:50 +00:00
err = db . DB . Where ( "id_num=?" , realname . IdNum ) . First ( & realname ) . Error
2023-02-15 01:39:14 +00:00
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
2023-02-20 04:51:50 +00:00
// todo 下面部分信息需要转存至画家服务和账号服务
//user.Name = req.RealName
//user.PenName = req.PenName
//user.RealNameID = int32(realname.ID)
//user.StageName = req.StageName
//user.Age = int32(utils.IdCardTurnAge(realname.IDNum))
//user.Sex = req.Sex
//user.JoinAssoTime = req.JoinAssoTime
//user.CertificateNum = req.CertificateNum
//conAddessByte, err := json.Marshal(req.ConAddress)
//if err != nil {
// zap.L().Error("CreateUserInfo err", zap.Error(err))
// err = errors.New(m.ERROR_SELECT)
// return nil, err
//}
//user.ConAddress = string(conAddessByte)
//user.CreatedAt = time.Now()
//user.Photo = req.Photo
//user.WxAccount = req.WxAccount
//user.CertificateImg = req.CertificateImg
//user.Video = req.Video
2023-02-15 01:39:14 +00:00
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 {
InvitedId , 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
}
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" `
}
func Createinvite ( service InviteService ) {
var invite model . Invite
invite . UserId = int32 ( service . UserId )
invite . InvitedId = int32 ( service . InvitedId )
db . DB . Create ( & invite )
}
func CheckInvitedCodes ( invitedCode string ) ( uint , error ) {
var user model . User
//找到用户
if err := db . DB . Where ( "invited_code =?" , invitedCode ) . Find ( & user ) . Error ; err != nil {
return 0 , err
}
if user . ID == 0 {
return 0 , errors . New ( "邀请码无效" )
}
return uint ( user . ID ) , nil
}
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-03 07:28:55 +00:00
var tx = db . DB . Model ( model . User { } ) . Begin ( )
2023-02-23 13:45:59 +00:00
switch {
case req . Id != 0 :
tx = tx . Where ( "id = ?" , req . Id )
case req . AccId != 0 :
tx = tx . Where ( "mgmt_acc_id = ?" , req . AccId )
case req . ArtistUid != "" :
tx = tx . Where ( "mgmt_artist_uid = ?" , req . ArtistUid )
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 )
}
if err = tx . Update ( "is_lock" , req . IsLock ) . Update ( "latest_lock_time" , now ) . Error ; err != nil {
2023-02-06 01:33:09 +00:00
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
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 {
// 解锁时与另外4个模块联动
if err = db . DB . Model ( model . ArtworkLockRecord { } ) . Where ( "artist_uid = ? AND status =2 " , req . ArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
return nil , err
}
if err = db . DB . Model ( model . ArtshowArtistSupplement { } ) . Where ( "artist_uid = ? AND status =2 " , req . ArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
return nil , err
}
if err = db . DB . Model ( model . ArtshowArtistIndex { } ) . Where ( "artist_uid = ? AND status =2 " , req . ArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
return nil , err
}
if err = db . DB . Model ( model . ArtshowVideoRecord { } ) . Where ( "artist_uid = ? AND status =2 " , req . ArtistUid ) . Update ( "status" , 3 ) . Error ; err != nil {
return nil , err
}
}
tx . Commit ( )
2023-02-06 01:33:09 +00:00
return rep , nil
}
2023-02-02 06:10:24 +00:00
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
if err = db . DB . First ( & user , "invited_code = ?" , req . InvitedCode ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
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:未完成的画家指数" `
} { }
//todo 目前缺少合同列表
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-02-15 01:39:14 +00:00
2023-03-06 10:24:33 +00:00
rep = & artistInfoUser . UnFinishListRespond {
ContractList : 0 , //todo
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 ) {
rep = & artistInfoUser . UserInfo { }
2023-02-17 03:33:56 +00:00
var data = model . User { }
2023-02-20 13:52:53 +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 != "" {
tx = tx . Where ( "invited_code = ?" , req . InvitedCode )
}
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 { }
}
if data . InvitedBy == nil {
data . InvitedBy = & model . Invite { }
}
var invitedName string
if data . InvitedBy != nil && data . InvitedBy . UserInfo != nil && data . InvitedBy . UserInfo . RealNameInfo != nil {
invitedName = data . InvitedBy . UserInfo . RealNameInfo . Name
}
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 ,
InvitedCode : data . InvitedBy . InviteCode , //邀请人的邀请码,不是用户个人邀请码
InvitedName : invitedName , //邀请人没有实名则为空字符串
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 ,
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-02-27 07:51:04 +00:00
Preload ( "RealNameInfo" ) . Preload ( "InvitedBy.UserInfo.RealNameInfo" ) . Where ( "sys_user.mgmt_artist_uid!=''" )
)
if req . InvitedCode != "" {
tx = tx . Where ( "invited_code = ?" , req . InvitedCode )
}
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 {
tx = tx . Where ( "mgmt_artist_uid !='' " )
}
2023-03-03 05:47:45 +00:00
if req . IsLock {
tx = tx . Where ( "is_lock=true" )
}
if req . ArtistRealName != "" {
tx = tx . Where ( "" ) . Clauses ( clause . Like {
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 { }
}
if v . InvitedBy == nil {
v . InvitedBy = & model . Invite { }
}
var invitedName string
if v . InvitedBy != nil && v . InvitedBy . UserInfo != nil && v . InvitedBy . UserInfo . RealNameInfo != nil {
invitedName = v . InvitedBy . UserInfo . RealNameInfo . Name
} else {
invitedName = "无"
}
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 ,
InvitedCode : v . InvitedBy . InviteCode , //邀请人的邀请码,不是用户个人邀请码
InvitedName : invitedName , //邀请人没有实名则为空字符串
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 ,
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 != "" {
tx = tx . Where ( "invited_code = ?" , req . InvitedCode )
}
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-01 15:07:00 +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-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
2023-02-24 02:51:35 +00:00
tx = db . DB . Begin ( ) . Preload ( "RealNameInfo" )
2023-02-23 13:45:59 +00:00
needUpdateMobile bool
)
2023-02-20 13:52:53 +00:00
if req . Id != 0 {
tx = tx . Where ( "id = ?" , req . Id )
} else if req . MgmtAccId != 0 {
tx = tx . Where ( "mgmt_acc_id = ?" , req . MgmtAccId )
} 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
}
if err = tx . Find ( & preUpdateData ) . Error ; err != nil {
return nil , err
}
//判断需要更新内容
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-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-02-20 13:58:18 +00:00
//var updateData = model.User{
// Model: model.Model{
// ID: req.Id,
// CreatedAt: time.Unix(req.CreatedAt, 0),
// UpdatedAt: time.Unix(req.UpdatedAt, 0),
// DeletedAt: soft_delete.DeletedAt(req.DeletedAt),
// },
// MgmtAccId: req.MgmtAccId,
// MgmtArtistId: req.MgmtArtistId,
// TelNum: req.TelNum,
// InviteCode: req.InvitedCode,
// IsRealName: req.IsRealName,
// RealNameId: req.RealNameId,
// FddState: req.FddState,
// CustomerId: req.CustomerId,
// OpenId: req.OpenId,
// IsRead: req.IsRead,
// IsLock: req.IsLock,
// Account: req.Account,
// CertificateNum: req.CertificateNum,
// CertificateImg: req.CertificateImg,
// Photo: req.Photo,
// Htmltype: req.Htmltype,
// Envtype: req.Envtype,
//}
2023-02-24 02:51:35 +00:00
err = tx . Save ( & preUpdateData ) . Error
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 . TelNum != "" {
realName . TelNum = req . RealName . TelNum
}
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-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-02-24 02:51:35 +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-02-24 02:51:35 +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-07 00:48:58 +00:00
func GetInvitedUserList ( in * artistInfoUser . GetInvitedUserListRequest ) ( res * artistInfoUser . GetInvitedUserListResponse , 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
}