Merge branch 'dev' into jujin

This commit is contained in:
songchuang 2023-04-07 15:50:01 +08:00
commit 5d68278904
12 changed files with 95 additions and 19 deletions

View File

@ -5,7 +5,7 @@ cd ..
go build -ldflags "-s -w" -o ./build/artistinfo-dev ./cmd/app.go
docker rmi artistinfo-dev
docker rmi 121.229.45.214:9006/artistinfo-dev
docker build . -f .\DockerfileWindowsTest -t artistinfo-dev
docker build . -f .\DockerfileWindowsTest -t artistinfo-dev --build-arg BUILD_DATE=$(date)
docker tag artistinfo-dev 121.229.45.214:9006/artistinfo-dev
docker push 121.229.45.214:9006/artistinfo-dev
pause

View File

@ -4,7 +4,7 @@ MAINTAINER GY "wangyitao@163.com"
RUN go env -w GO111MODULE=on && \
go env -w GOPROXY=https://goproxy.cn,direct
WORKDIR /app
COPY fonchain-artistinfo /app/fonchain-artistinfo

View File

@ -1,7 +1,10 @@
FROM busybox:glibc
ARG BUILD_DATE
ENV BUILD_DATE ${BUILD_DATE}
COPY ./docs/Shanghai /usr/share/zoneinfo/Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#ENV TZ Asia/Shanghai
WORKDIR /app/main-client
@ -11,4 +14,6 @@ COPY ./conf/ /app/conf/
COPY ./conf/ ./conf/
WORKDIR /app/main-client/bin
# 在容器启动时输出环境变量BUILD_DATE的值
CMD ["./mainServer"]

View File

@ -21,6 +21,9 @@ WORKDIR /build
COPY ./build/artistinfo-dev /app/artistinfo-dev
FROM alpine
ARG BUILD_DATE
ENV BUILD_DATE ${BUILD_DATE}
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update --no-cache
RUN apk add --no-cache ca-certificates

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"os"
"dubbo.apache.org/dubbo-go/v3/config"
@ -27,5 +28,7 @@ func main() {
if err := config.Load(); err != nil {
panic(err)
}
buildDate := os.Getenv("BUILD_DATE")
fmt.Println("镜像生成时间:", buildDate)
select {}
}

View File

@ -118,9 +118,11 @@ func (a *ArtistInfoUserProvider) FinishVerify(ctx context.Context, req *artistIn
}
return rep, nil
}
func (a *ArtistInfoUserProvider) UserLock(ctx context.Context, req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLockRespond, err error) {
return a.artistInfoLogic.UserLock(req)
}
func (a *ArtistInfoUserProvider) CheckUserLock(ctx context.Context, req *artistInfoUser.CheckUserLockRequest) (rep *artistInfoUser.CheckUserLockRespond, err error) {
fmt.Println("第一处")
// backup := &artistinfoUser.GetUserInfoRespond{}

View File

@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"sort"
"strings"
"time"
_ "dubbo.apache.org/dubbo-go/v3/imports"
@ -303,27 +304,39 @@ func UserLock(req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLock
}
rep.LockTime = now
if !req.IsLock {
fmt.Println("122312312312331")
fmt.Println("进入解锁流程")
// 如果当前锁定状态下没有任何数据变动,则报错
if hasChanged, _ := WhetherAnyChangedAfterLocked(thisUser.MgmtArtistUid); !hasChanged {
tx.Rollback()
err = errors.New("此用户在锁定后未作任何修改,无法解锁")
return
}
// 解锁时与另外4个模块联动
if err = tx.Model(model.ArtworkLockRecord{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
tx.Rollback()
return nil, err
}
if err = tx.Model(model.ArtshowArtistSupplement{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
tx.Rollback()
return nil, err
}
if err = tx.Model(model.ArtshowArtistIndex{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
tx.Rollback()
return nil, err
}
if err = tx.Model(model.ArtshowVideoRecord{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
tx.Rollback()
return nil, err
}
// 与画家宝的合同表进行联动
if err = tx.Model(model.Contract{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
tx.Rollback()
return nil, err
}
} else {
fmt.Println("else 更新最新上锁时间")
if err = tx.Model(model.User{}).Where("mgmt_artist_uid = ?", thisUser.MgmtArtistUid).Update("latest_lock_time", now).Error; err != nil {
tx.Rollback()
return nil, err
}
fmt.Println("更新结束")
@ -333,6 +346,54 @@ func UserLock(req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLock
return rep, nil
}
// 简单判断锁定后数据是否有新增
func WhetherAnyChangedAfterLocked(artistUid string) (changed bool, err error) {
//查询锁定时间
var lockTime string
if err = db.DB.Model(model.User{}).Where("mgmt_artist_uid = ?", artistUid).Pluck("latest_lock_time", &lockTime).Error; err != nil {
return
}
//如果画作更新时间大于锁定时间,直接返回true
var artworks []model.ArtworkLockRecord
db.DB.Where("artist_uid = ? AND lock_time = ? ", artistUid, lockTime).Find(&artworks)
var lockTimeT, _ = stime.StringToTime(lockTime)
for _, a := range artworks {
if a.UpdatedAt.After(*lockTimeT) {
changed = true
return
}
}
//如果补充信息有新增则直接返回true
var sql = `
SELECT
u.mgmt_artist_uid
,u.latest_lock_time
,(SELECT COUNT(1) FROM artshow_artist_index WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as artist_index_count
,(SELECT COUNT(1) FROM artshow_artist_supplement WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as artist_supplement_count
,(SELECT COUNT(1) FROM artshow_video_record WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as video_count
,(SELECT COUNT(1) FROM contract WHERE artist_uid = '{{artistUid}}' AND lock_time = '{{lockTime}}' AND deleted_at = 0) as contract_count
FROM sys_user u
WHERE u.mgmt_artist_uid ='{{artistUid}}' AND u.deleted_at = 0
`
sql = strings.Replace(sql, "{{artistUid}}", artistUid, -1)
sql = strings.Replace(sql, "{{lockTime}}", lockTime, -1)
var data struct {
MgmtArtistUid string `gorm:"column:mgmt_artist_uid"`
LatestLockTime string `gorm:"column:latest_lock_time"`
ArtistIndexCount int `gorm:"column:artist_index_count"`
ArtistSupplementCount int `gorm:"column:artist_supplement_count"`
VideoCount int `gorm:"column:video_count"`
ContractCount int `gorm:"column:contract_count"`
}
if err = db.DB.Debug().Raw(sql).Find(&data).Error; err != nil {
return
}
if data.ArtistIndexCount > 0 || data.ArtistSupplementCount > 0 || data.VideoCount > 0 || data.ContractCount > 0 {
return true, nil
}
return false, nil
}
func CheckInvitedCode(req *artistInfoUser.CheckInvitedCodeRequest) (rep *artistInfoUser.GetUserRespond, err error) {
rep = &artistInfoUser.GetUserRespond{}
// service := &artist.UserUpdateInfoService{}
@ -550,7 +611,7 @@ func FindUserList(req *artistInfoUser.FindUsersRequest) (rep []*artistInfoUser.U
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!=''")
Preload("RealNameInfo") //.Where("sys_user.mgmt_artist_uid!=''")
)
if req.InvitedCode != "" {
tx = tx.Where("invited_code = ?", req.InvitedCode)
@ -571,7 +632,7 @@ func FindUserList(req *artistInfoUser.FindUsersRequest) (rep []*artistInfoUser.U
})
}
if req.IsArtist {
tx = tx.Where("mgmt_artist_uid !='' ")
tx = tx.Where("sys_user.mgmt_artist_uid !='' ")
}
if req.IsLock {
tx = tx.Where("is_lock=true")

View File

@ -0,0 +1,5 @@
package model
type OperationRecord struct {
Model
}

View File

@ -34,7 +34,7 @@ type UserView struct {
IdcardFront string `json:"idcardFront" gorm:"column:idcard_front;comment:身份证反面"`
JoinAssoTime string `json:"joinAssoTime" gorm:"column:join_asso_time;comment:入会时间"`
InviterInviteCode string `json:"inviterInviteCode" gorm:"column:inviter_invite_code;comment:邀请人的邀请码"`
InviterRealName string `json:"inviterRealName" gorm:"column:inviter_name;comment:邀请人的真实姓名"`
InviterRealName string `json:"inviterRealName" gorm:"column:inviter_real_name;comment:邀请人的真实姓名"`
CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;comment:"`
UpdatedAt time.Time `json:"updatedAt" gorm:"column:updated_at;comment:"`
DeletedAt int64 `json:"deletedAt" gorm:"column:deleted_at;comment:"`
@ -75,7 +75,7 @@ SELECT
su.updated_at,
su.deleted_at,
inviter.invited_code inviter_invite_code,
inviter_rn.name inviter_name,
inviter_rn.name inviter_real_name,
su.latest_lock_time,
su.join_asso_time,
su.certificate_num,

0
conf/buildDate Normal file
View File

View File

@ -6,8 +6,6 @@ import (
"strings"
"time"
"github.com/fonchain/fonchain-artistinfo/cmd/model/old"
"github.com/fonchain/fonchain-artistinfo/cmd/model"
"github.com/fonchain/fonchain-artistinfo/pkg/m"
"github.com/gin-gonic/gin"
@ -104,19 +102,19 @@ func Database(conn string) {
func migration() {
//自迁移模式
err := DB.AutoMigrate(
//&old.Bank{},
// &old.Bank{},
// &old.Artwork{},
// &model.Contract{},
// &model.SupplyInfo{},
// &model.ExhVideo{},
// &model.ExhExam{},
// &old.ArtistInfo{},
// &old.ArtworkState{},
// &old.ArtworkBatch{},
&model.RealName{},
&model.User{},
&model.Invite{},
&old.Artwork{},
//&model.Contract{},
//&model.SupplyInfo{},
//&model.ExhVideo{},
//&model.ExhExam{},
&old.ArtistInfo{},
&model.UserInvited{},
&old.ArtworkState{},
&old.ArtworkBatch{},
&model.TempArtistInfo{},
&model.ArtworkLockRecord{},
&model.ArtshowVideoRecord{}, //画展视频记录

View File

@ -25,7 +25,6 @@ func CreateQrCode(invitedCode, userName string) error {
tmp, err := os.Open(QrCodePath)
if err != nil {
return err
}
defer tmp.Close()