fonchain-artistinfo/cmd/internal/dao/artistInfo_user.go

1006 lines
32 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package dao
import (
"context"
"encoding/json"
"errors"
"fmt"
"time"
_ "dubbo.apache.org/dubbo-go/v3/imports"
"github.com/fonchain/fonchain-artistinfo/cmd/model"
"github.com/fonchain/fonchain-artistinfo/pb/account"
"github.com/fonchain/fonchain-artistinfo/pb/artist"
"github.com/fonchain/fonchain-artistinfo/pb/artistInfoUser"
db "github.com/fonchain/fonchain-artistinfo/pkg/db"
"github.com/fonchain/fonchain-artistinfo/pkg/m"
"github.com/fonchain/fonchain-artistinfo/pkg/service"
"github.com/fonchain/fonchain-artistinfo/pkg/util/stime"
"go.uber.org/zap"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
func RegisterUser(req *artistInfoUser.RegisterUserRequest) (rep *artistInfoUser.RegisterUserRespond, err error) {
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))
err = errors.New(m.ERROR_SELECT)
return nil, err
}
return
}
func CreateUserInfo(req *artistInfoUser.CreateUserInfoRequest) (rep *artistInfoUser.CreateUserInfoRespond, err error) {
// 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
// }
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
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
}
return 0, errors.New("邀请码无效")
}
func GetUser(req *artistInfoUser.GetUserRequest) (rep *artistInfoUser.GetUserRespond, err error) {
rep = &artistInfoUser.GetUserRespond{}
// service := &artist.UserUpdateInfoService{}
var user model.User
if err = db.DB.Where("tel_num = ?", req.TelNum).First(&user).Error; err != nil {
zap.L().Error("get user info err", zap.Error(err))
if err == gorm.ErrRecordNotFound {
err = errors.New("没有找到数据")
} else {
err = errors.New(m.ERROR_SELECT)
}
return nil, err
}
// rep.
fmt.Println(user)
rep.Id = user.ID
rep.MgmtAccId = user.MgmtAccId
rep.MgmtArtistUid = user.MgmtArtistUid
rep.MgmtArtistId = user.MgmtArtistId
rep.TelNum = user.TelNum
rep.FddState = user.FddState
rep.IsRealName = user.IsRealName
//rep.Ruler = user.Ruler
// 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
}
func GetUserById(req *artistInfoUser.GetUserByIdRequest) (rep *artistInfoUser.GetUserByIdRespond, err error) {
rep = &artistInfoUser.GetUserByIdRespond{}
fmt.Println("id:", req.Id)
fmt.Println("123")
zap.L().Info("!!!!")
fmt.Println("456")
// service := &artist.UserUpdateInfoService{}
var user model.User
fmt.Println("666")
if err = db.DB.Where("id = ?", req.Id).First(&user).Error; err != nil {
zap.L().Info("!!!!3")
zap.L().Error("get user info err", zap.Error(err))
err = errors.New(m.ERROR_SELECT)
return
}
fmt.Printf("%+v\n", user)
fmt.Println("6666")
zap.L().Info("!!!!5")
// rep.
fmt.Println("777")
rep.Id = user.ID
rep.MgmtAccId = user.MgmtAccId
rep.MgmtArtistUid = user.MgmtArtistUid
rep.MgmtArtistId = user.MgmtArtistId
rep.TelNum = user.TelNum
rep.FddState = user.FddState
rep.IsRealName = user.IsRealName
//rep.Ruler = user.Ruler
return rep, nil
}
func FinishVerify(req *artistInfoUser.FinishVerifyRequest) (rep *artistInfoUser.FinishVerifyRespond, err error) {
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
}
func ArtistSupplyList(req *artistInfoUser.ArtistSupplyListRequest) (rep *artistInfoUser.ArtistSupplyListRespond, err error) {
var artistList = make([]artistInfoUser.ArtistArtworkSupplyListResponseData, 0)
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 `
var count int64
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
}
func UserLock(req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLockRespond, err error) {
rep = &artistInfoUser.UserLockRespond{}
var tx = db.DB.Begin()
tx_user := tx.Model(model.User{})
switch {
case req.Id != 0:
tx_user = tx_user.Where("id = ?", req.Id)
case req.AccId != 0:
tx_user = tx_user.Where("mgmt_acc_id = ?", req.AccId)
case req.ArtistUid != "":
tx_user = tx_user.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
}
var now string
if req.IsLock {
now = stime.TimeToString(time.Now(), stime.Format_Normal_YMDhms)
}
var thisUser model.User
if err = tx_user.Find(&thisUser).Error; err != nil {
return nil, err
}
if err = tx_user.Update("is_lock", req.IsLock).Error; err != nil {
zap.L().Error("get user info err 11", zap.Error(err))
err = errors.New(m.ERROR_SELECT)
return nil, err
}
rep.LockTime = now
if !req.IsLock {
fmt.Println("122312312312331")
// 解锁时与另外4个模块联动
if err = tx.Model(model.ArtworkLockRecord{}).Where("artist_uid = ? AND status =2 ", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
return nil, err
}
if err = tx.Model(model.ArtshowArtistSupplement{}).Where("artist_uid = ? AND status =2 ", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
return nil, err
}
if err = tx.Model(model.ArtshowArtistIndex{}).Where("artist_uid = ? AND status =2 ", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
return nil, err
}
if err = tx.Model(model.ArtshowVideoRecord{}).Where("artist_uid = ? AND status =2 ", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
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 {
return nil, err
}
fmt.Println("更新结束")
}
tx.Commit()
return rep, nil
}
func CheckInvitedCode(req *artistInfoUser.CheckInvitedCodeRequest) (rep *artistInfoUser.GetUserRespond, err error) {
rep = &artistInfoUser.GetUserRespond{}
// 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))
return nil, err
}
// rep.
rep.Id = user.ID
rep.MgmtAccId = user.MgmtAccId
rep.MgmtArtistUid = user.MgmtArtistUid
rep.TelNum = user.TelNum
rep.FddState = user.FddState
rep.IsRealName = user.IsRealName
//rep.Ruler = user.Ruler
// 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
}
func UnFinishList(req *artistInfoUser.UnFinishListRequest) (rep *artistInfoUser.UnFinishListRespond, err error) {
rep = &artistInfoUser.UnFinishListRespond{}
var user model.User
if err := db.DB.Where("mgmt_acc_id = ? ", req.AccId).First(&user).Error; err != nil {
zap.L().Error("get user info err", zap.Error(err))
err = errors.New(m.ERROR_SELECT)
return nil, err
}
var accountStatusList int64
if user.IsRealName == 0 {
accountStatusList = 1
return
}
if user.MgmtArtistUid == "" {
accountStatusList = 2
return
}
//艺术家补充信息完成度统计
//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("艺术家补充信息统计错误")
// return nil, err
//}
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,
(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
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
}
rep = &artistInfoUser.UnFinishListRespond{
ContractList: 0, //todo
SupplyInfoList: viewData.UnfinishedArtworkBaseCount + viewData.UnfinishedArtworkSupplementCount + viewData.UnfinishedArtistIndexCount + viewData.UnfinishedArtistSupplementCount,
AccountStateList: accountStatusList,
}
return rep, nil
}
func GetUserMsg(req *artistInfoUser.GetUserMsgRequest) (rep *artistInfoUser.GetUserMsgRespond, err error) {
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))
var re = new(artistInfoUser.GetUserMsgRespond)
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
}
func FindUser(req *artistInfoUser.FindUserRequest) (rep *artistInfoUser.UserInfo, err error) {
rep = &artistInfoUser.UserInfo{}
var data = model.User{}
var tx = db.DB.Model(model.User{}).Preload("RealNameInfo").Preload("InvitedBy.UserInfo.RealNameInfo")
if req.MgmtAccId != 0 {
tx = tx.Where("mgmt_acc_id = ?", req.MgmtAccId)
}
if req.MgmtArtistId != 0 {
tx = tx.Where("mgmt_artist_id = ?", req.MgmtArtistId)
}
if req.InvitedCode != "" {
tx = tx.Where("invited_code = ?", req.InvitedCode)
}
if req.MgmtArtistUid != "" {
tx = tx.Where("mgmt_artist_uid = ?", req.MgmtArtistUid)
}
err = tx.First(&data).Error
if err != nil {
return
}
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
// }
//查询邀请人
var inviterCode = model.Invite{}
var inviterAccount = &account.ListResponse{Data: []*account.AccountInfo{}}
var inviterName string
db.DB.Model(model.Invite{}).Where("invited_code = ?", data.InviteCode).First(&inviterCode)
if inviterCode.InviteCode != "" {
inviterAccount, err = service.AccountProvider.ListByIDs(context.Background(), &account.ListByIDsRequest{
Page: 1,
PageSize: 1,
InvitationCode: []string{inviterCode.InviteCode},
})
if err != nil {
return nil, err
}
if len(inviterAccount.Data) > 0 {
inviterName = inviterAccount.Data[0].RealName
}
}
service.AccountProvider.Info(context.Background(), &account.InfoRequest{})
rep = &artistInfoUser.UserInfo{
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,
InviterCode: inviterCode.InviteCode, //邀请人的邀请码,不是用户个人邀请码
InviterName: inviterName, //邀请人的姓名
IsRealName: data.IsRealName,
RealNameId: data.RealNameId,
RealName: &artistInfoUser.RealNameInfo{
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,
},
FddState: data.FddState,
CustomerId: data.CustomerId,
OpenId: data.OpenId,
IsRead: data.IsRead,
IsLock: data.IsLock,
Account: data.Account,
CertificateNum: data.CertificateNum,
CertificateImg: data.CertificateImg,
JoinAssoTime: data.JoinAssoTime,
Photo: data.Photo,
HtmlType: data.Htmltype,
EnvType: data.Envtype,
InviteCode: data.InviteCode,
LatestLockTime: data.LatestLockTime,
}
return rep, nil
}
func FindUserList(req *artistInfoUser.FindUsersRequest) (rep []*artistInfoUser.UserInfo, total int64, err error) {
//todo 待修改,邀请人的关联信息不显示
var (
datas = []model.User{}
tx = db.DB.Model(model.User{}).
Joins("LEFT JOIN real_name rn ON rn.id = sys_user.real_name_id").
Preload("RealNameInfo").Where("sys_user.mgmt_artist_uid!=''")
)
if req.InvitedCode != "" {
tx = tx.Where("invited_code = ?", req.InvitedCode)
}
if req.MgmtAccountId != 0 {
tx = tx.Where("mgmt_acc_id = ?", req.MgmtAccountId)
}
if req.MgmtArtistUid != "" {
tx = tx.Where("mgmt_artist_uid = ?", req.MgmtArtistUid)
}
if req.MgmtArtistUids != nil {
tx = tx.Where("mgmt_artist_uid in ?", req.MgmtArtistUids)
}
if req.InviterName != "" {
tx = tx.Clauses(clause.Like{
Column: "rn.name",
Value: "%" + req.InviterName + "%",
})
}
if req.IsArtist {
tx = tx.Where("mgmt_artist_uid !='' ")
}
if req.IsLock {
tx = tx.Where("is_lock=true")
}
if req.ArtistRealName != "" {
tx = tx.Where("").Clauses(clause.Like{
Column: "rn.name",
Value: "%" + req.ArtistRealName + "%",
})
}
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 = "无"
// }
var inviterName, inviterCode string
// 查询邀请人信息
// todo
inviterInfo := GetInviterInfo(v.InviteCode)
inviterCode = v.InviteCode
inviterName = inviterInfo.RealName
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,
InviterCode: inviterCode, //邀请人的邀请码,不是用户个人邀请码
InviterName: inviterName, //邀请人没有实名则为空字符串
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,
JoinAssoTime: v.JoinAssoTime,
Photo: v.Photo,
HtmlType: v.Htmltype,
EnvType: v.Envtype,
InviteCode: v.InviteCode,
LatestLockTime: v.LatestLockTime,
})
}
return
}
func GetViewUserList(req *artistInfoUser.FindUsersRequest) (resp []model.UserView, total int64, err error) {
resp = []model.UserView{}
var (
tx = db.DB.Model(model.UserView{}).Order("created_at desc")
)
if req.InvitedCode != "" {
tx = tx.Where("invited_code = ?", req.InvitedCode)
}
if req.MgmtArtistUid != "" {
tx = tx.Where("mgmt_artist_uid = ?", req.MgmtArtistUid)
} else if req.MgmtArtistUids != nil {
tx = tx.Where("mgmt_artist_uid in ?", req.MgmtArtistUids)
}
if req.InviterName != "" {
tx = tx.Where("inviter_real_name LIKE '%?%'", req.InviterName)
}
if req.IsArtist {
tx = tx.Where("mgmt_artist_uid !='' ")
}
err = tx.Count(&total).Scopes(db.Pagination(req.Page, req.PageSize)).Find(&resp).Error
return
}
func UpdateUserData(req *artistInfoUser.UserInfo) (rep *artistInfoUser.CommonNoParams, err error) {
var (
preUpdateData model.User
needUpdateMobile bool
)
dbfind := db.DB.Begin().Preload("RealNameInfo")
if req.Id != 0 {
dbfind = dbfind.Where("id = ?", req.Id)
} else if req.MgmtAccId != 0 {
dbfind = dbfind.Where("mgmt_acc_id = ?", req.MgmtAccId)
} else {
return nil, errors.New("Id或mgmt_acc_id不能为0")
}
if err = dbfind.Find(&preUpdateData).Error; err != nil {
return nil, err
}
//判断需要更新内容
if req.MgmtArtistId != 0 {
preUpdateData.MgmtArtistId = req.MgmtArtistId
}
if req.MgmtArtistUid != "" {
preUpdateData.MgmtArtistUid = req.MgmtArtistUid
}
if req.TelNum != "" && req.TelNum != preUpdateData.TelNum {
needUpdateMobile = true
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
}
if req.HtmlType != "" {
preUpdateData.Htmltype = req.HtmlType
}
if req.EnvType != "" {
preUpdateData.Envtype = req.EnvType
}
if req.JoinAssoTime != "" {
preUpdateData.JoinAssoTime = req.JoinAssoTime
}
if req.WxAccount != "" {
preUpdateData.WxAccount = req.WxAccount
}
tx := db.DB.Begin()
err = tx.Save(&preUpdateData).Error
if err != nil {
return nil, err
}
//更新实名信息
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
}
if err != nil {
return nil, err
}
//更新手机号码
if needUpdateMobile {
// 更新账号服务中手机号
if _, err = service.AccountProvider.UpdateTelNum(context.Background(), &account.SendNewTelNumMsgRequest{
Domain: req.Domain,
ID: uint64(preUpdateData.MgmtAccId),
NewTelNum: preUpdateData.TelNum,
Code: req.VerCode,
Project: "",
}); err != nil {
fmt.Println("错误1-needUpdateMobile-AccountImpl.UpdateTelNum:", err.Error())
//tx.Rollback()
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())
//tx.Rollback()
return
}
}
tx.Commit()
return nil, nil
}
func PreSaveArtistInfo(in *artistInfoUser.PreSaveArtistInfoData) (rep *artistInfoUser.CommonNoParams, err error) {
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
}
func GetPreSaveArtistInfo(in *artistInfoUser.GetPreSaveArtistInfoRequest) (res *artistInfoUser.PreSaveArtistInfoData, err error) {
var data = model.TempArtistInfo{}
err = db.DB.Where("mgmt_acc_id = ?", in.MgmtAccId).Find(&data).Error
res = &artistInfoUser.PreSaveArtistInfoData{
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
}
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
}
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
}
func GetInvitedUserList(in *artistInfoUser.GetInvitedUserListRequest) (res *artistInfoUser.GetInvitedUserListResponse, err error) {
res = &artistInfoUser.GetInvitedUserListResponse{
Data: []*artistInfoUser.InvitedUser{},
Page: &artistInfoUser.UserCommonPageInfo{},
}
var inviteRelationIds []int64
db.DB.Model(model.Invite{}).Where("invite_code = ?", in.InviterCode).Pluck("invited_id", &inviteRelationIds)
var invitedList []model.User
orm := db.DB.Model(model.User{}).Preload("RealNameInfo").Where("id in ?", inviteRelationIds)
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,
})
if err != nil {
return nil, err
}
for _, v := range invitedList {
var (
realName string
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)
}
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,
})
}
return
}
// GetInviterInfo 查询邀请人信息
// invitedCode:受邀请人的邀请码
func GetInviterInfo(invitedCode string) (result account.AccountInfo) {
//查找邀请关系
var inviteRelation = model.Invite{}
err := db.DB.Model(model.Invite{}).Where("invited_code = ?", invitedCode).Find(&inviteRelation).Error
if err != nil {
fmt.Println("\n GetInviterInfo 查询邀请人信息出错", err.Error())
return
}
//查询邀请人信息
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
}
return
}