Merge branch 'dev' into jujin
This commit is contained in:
commit
5d68278904
@ -5,7 +5,7 @@ cd ..
|
|||||||
go build -ldflags "-s -w" -o ./build/artistinfo-dev ./cmd/app.go
|
go build -ldflags "-s -w" -o ./build/artistinfo-dev ./cmd/app.go
|
||||||
docker rmi artistinfo-dev
|
docker rmi artistinfo-dev
|
||||||
docker rmi 121.229.45.214:9006/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 tag artistinfo-dev 121.229.45.214:9006/artistinfo-dev
|
||||||
docker push 121.229.45.214:9006/artistinfo-dev
|
docker push 121.229.45.214:9006/artistinfo-dev
|
||||||
pause
|
pause
|
@ -4,7 +4,7 @@ MAINTAINER GY "wangyitao@163.com"
|
|||||||
|
|
||||||
RUN go env -w GO111MODULE=on && \
|
RUN go env -w GO111MODULE=on && \
|
||||||
go env -w GOPROXY=https://goproxy.cn,direct
|
go env -w GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY fonchain-artistinfo /app/fonchain-artistinfo
|
COPY fonchain-artistinfo /app/fonchain-artistinfo
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
FROM busybox:glibc
|
FROM busybox:glibc
|
||||||
|
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ENV BUILD_DATE ${BUILD_DATE}
|
||||||
COPY ./docs/Shanghai /usr/share/zoneinfo/Asia/Shanghai
|
COPY ./docs/Shanghai /usr/share/zoneinfo/Asia/Shanghai
|
||||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
|
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
|
||||||
|
|
||||||
#ENV TZ Asia/Shanghai
|
#ENV TZ Asia/Shanghai
|
||||||
|
|
||||||
WORKDIR /app/main-client
|
WORKDIR /app/main-client
|
||||||
@ -11,4 +14,6 @@ COPY ./conf/ /app/conf/
|
|||||||
COPY ./conf/ ./conf/
|
COPY ./conf/ ./conf/
|
||||||
|
|
||||||
WORKDIR /app/main-client/bin
|
WORKDIR /app/main-client/bin
|
||||||
|
|
||||||
|
# 在容器启动时输出环境变量BUILD_DATE的值
|
||||||
CMD ["./mainServer"]
|
CMD ["./mainServer"]
|
@ -21,6 +21,9 @@ WORKDIR /build
|
|||||||
COPY ./build/artistinfo-dev /app/artistinfo-dev
|
COPY ./build/artistinfo-dev /app/artistinfo-dev
|
||||||
|
|
||||||
FROM alpine
|
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 sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
RUN apk update --no-cache
|
RUN apk update --no-cache
|
||||||
RUN apk add --no-cache ca-certificates
|
RUN apk add --no-cache ca-certificates
|
||||||
|
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
"dubbo.apache.org/dubbo-go/v3/config"
|
"dubbo.apache.org/dubbo-go/v3/config"
|
||||||
|
|
||||||
@ -27,5 +28,7 @@ func main() {
|
|||||||
if err := config.Load(); err != nil {
|
if err := config.Load(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
buildDate := os.Getenv("BUILD_DATE")
|
||||||
|
fmt.Println("镜像生成时间:", buildDate)
|
||||||
select {}
|
select {}
|
||||||
}
|
}
|
||||||
|
@ -118,9 +118,11 @@ func (a *ArtistInfoUserProvider) FinishVerify(ctx context.Context, req *artistIn
|
|||||||
}
|
}
|
||||||
return rep, nil
|
return rep, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *ArtistInfoUserProvider) UserLock(ctx context.Context, req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLockRespond, err error) {
|
func (a *ArtistInfoUserProvider) UserLock(ctx context.Context, req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLockRespond, err error) {
|
||||||
return a.artistInfoLogic.UserLock(req)
|
return a.artistInfoLogic.UserLock(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *ArtistInfoUserProvider) CheckUserLock(ctx context.Context, req *artistInfoUser.CheckUserLockRequest) (rep *artistInfoUser.CheckUserLockRespond, err error) {
|
func (a *ArtistInfoUserProvider) CheckUserLock(ctx context.Context, req *artistInfoUser.CheckUserLockRequest) (rep *artistInfoUser.CheckUserLockRespond, err error) {
|
||||||
fmt.Println("第一处")
|
fmt.Println("第一处")
|
||||||
// backup := &artistinfoUser.GetUserInfoRespond{}
|
// backup := &artistinfoUser.GetUserInfoRespond{}
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
_ "dubbo.apache.org/dubbo-go/v3/imports"
|
_ "dubbo.apache.org/dubbo-go/v3/imports"
|
||||||
@ -303,27 +304,39 @@ func UserLock(req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLock
|
|||||||
}
|
}
|
||||||
rep.LockTime = now
|
rep.LockTime = now
|
||||||
if !req.IsLock {
|
if !req.IsLock {
|
||||||
fmt.Println("122312312312331")
|
fmt.Println("进入解锁流程")
|
||||||
|
// 如果当前锁定状态下没有任何数据变动,则报错
|
||||||
|
if hasChanged, _ := WhetherAnyChangedAfterLocked(thisUser.MgmtArtistUid); !hasChanged {
|
||||||
|
tx.Rollback()
|
||||||
|
err = errors.New("此用户在锁定后未作任何修改,无法解锁")
|
||||||
|
return
|
||||||
|
}
|
||||||
// 解锁时与另外4个模块联动
|
// 解锁时与另外4个模块联动
|
||||||
if err = tx.Model(model.ArtworkLockRecord{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = tx.Model(model.ArtshowArtistSupplement{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = tx.Model(model.ArtshowArtistIndex{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = tx.Model(model.ArtshowVideoRecord{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
// 与画家宝的合同表进行联动
|
// 与画家宝的合同表进行联动
|
||||||
if err = tx.Model(model.Contract{}).Where("artist_uid = ? AND status =2", thisUser.MgmtArtistUid).Update("status", 3).Error; err != nil {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("else 更新最新上锁时间")
|
fmt.Println("else 更新最新上锁时间")
|
||||||
if err = tx.Model(model.User{}).Where("mgmt_artist_uid = ?", thisUser.MgmtArtistUid).Update("latest_lock_time", now).Error; err != nil {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
fmt.Println("更新结束")
|
fmt.Println("更新结束")
|
||||||
@ -333,6 +346,54 @@ func UserLock(req *artistInfoUser.UserLockRequest) (rep *artistInfoUser.UserLock
|
|||||||
return rep, nil
|
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) {
|
func CheckInvitedCode(req *artistInfoUser.CheckInvitedCodeRequest) (rep *artistInfoUser.GetUserRespond, err error) {
|
||||||
rep = &artistInfoUser.GetUserRespond{}
|
rep = &artistInfoUser.GetUserRespond{}
|
||||||
// service := &artist.UserUpdateInfoService{}
|
// service := &artist.UserUpdateInfoService{}
|
||||||
@ -550,7 +611,7 @@ func FindUserList(req *artistInfoUser.FindUsersRequest) (rep []*artistInfoUser.U
|
|||||||
datas = []model.User{}
|
datas = []model.User{}
|
||||||
tx = db.DB.Model(model.User{}).
|
tx = db.DB.Model(model.User{}).
|
||||||
Joins("LEFT JOIN real_name rn ON rn.id = sys_user.real_name_id").
|
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 != "" {
|
if req.InvitedCode != "" {
|
||||||
tx = tx.Where("invited_code = ?", req.InvitedCode)
|
tx = tx.Where("invited_code = ?", req.InvitedCode)
|
||||||
@ -571,7 +632,7 @@ func FindUserList(req *artistInfoUser.FindUsersRequest) (rep []*artistInfoUser.U
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
if req.IsArtist {
|
if req.IsArtist {
|
||||||
tx = tx.Where("mgmt_artist_uid !='' ")
|
tx = tx.Where("sys_user.mgmt_artist_uid !='' ")
|
||||||
}
|
}
|
||||||
if req.IsLock {
|
if req.IsLock {
|
||||||
tx = tx.Where("is_lock=true")
|
tx = tx.Where("is_lock=true")
|
||||||
|
5
cmd/model/artist_operation_records.go
Normal file
5
cmd/model/artist_operation_records.go
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
type OperationRecord struct {
|
||||||
|
Model
|
||||||
|
}
|
@ -34,7 +34,7 @@ type UserView struct {
|
|||||||
IdcardFront string `json:"idcardFront" gorm:"column:idcard_front;comment:身份证反面"`
|
IdcardFront string `json:"idcardFront" gorm:"column:idcard_front;comment:身份证反面"`
|
||||||
JoinAssoTime string `json:"joinAssoTime" gorm:"column:join_asso_time;comment:入会时间"`
|
JoinAssoTime string `json:"joinAssoTime" gorm:"column:join_asso_time;comment:入会时间"`
|
||||||
InviterInviteCode string `json:"inviterInviteCode" gorm:"column:inviter_invite_code;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:"`
|
CreatedAt time.Time `json:"createdAt" gorm:"column:created_at;comment:"`
|
||||||
UpdatedAt time.Time `json:"updatedAt" gorm:"column:updated_at;comment:"`
|
UpdatedAt time.Time `json:"updatedAt" gorm:"column:updated_at;comment:"`
|
||||||
DeletedAt int64 `json:"deletedAt" gorm:"column:deleted_at;comment:"`
|
DeletedAt int64 `json:"deletedAt" gorm:"column:deleted_at;comment:"`
|
||||||
@ -75,7 +75,7 @@ SELECT
|
|||||||
su.updated_at,
|
su.updated_at,
|
||||||
su.deleted_at,
|
su.deleted_at,
|
||||||
inviter.invited_code inviter_invite_code,
|
inviter.invited_code inviter_invite_code,
|
||||||
inviter_rn.name inviter_name,
|
inviter_rn.name inviter_real_name,
|
||||||
su.latest_lock_time,
|
su.latest_lock_time,
|
||||||
su.join_asso_time,
|
su.join_asso_time,
|
||||||
su.certificate_num,
|
su.certificate_num,
|
||||||
|
0
conf/buildDate
Normal file
0
conf/buildDate
Normal file
@ -6,8 +6,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/fonchain/fonchain-artistinfo/cmd/model/old"
|
|
||||||
|
|
||||||
"github.com/fonchain/fonchain-artistinfo/cmd/model"
|
"github.com/fonchain/fonchain-artistinfo/cmd/model"
|
||||||
"github.com/fonchain/fonchain-artistinfo/pkg/m"
|
"github.com/fonchain/fonchain-artistinfo/pkg/m"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@ -104,19 +102,19 @@ func Database(conn string) {
|
|||||||
func migration() {
|
func migration() {
|
||||||
//自迁移模式
|
//自迁移模式
|
||||||
err := DB.AutoMigrate(
|
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.RealName{},
|
||||||
&model.User{},
|
&model.User{},
|
||||||
&model.Invite{},
|
&model.Invite{},
|
||||||
&old.Artwork{},
|
|
||||||
//&model.Contract{},
|
|
||||||
//&model.SupplyInfo{},
|
|
||||||
//&model.ExhVideo{},
|
|
||||||
//&model.ExhExam{},
|
|
||||||
&old.ArtistInfo{},
|
|
||||||
&model.UserInvited{},
|
&model.UserInvited{},
|
||||||
&old.ArtworkState{},
|
|
||||||
&old.ArtworkBatch{},
|
|
||||||
&model.TempArtistInfo{},
|
&model.TempArtistInfo{},
|
||||||
&model.ArtworkLockRecord{},
|
&model.ArtworkLockRecord{},
|
||||||
&model.ArtshowVideoRecord{}, //画展视频记录
|
&model.ArtshowVideoRecord{}, //画展视频记录
|
||||||
|
@ -25,7 +25,6 @@ func CreateQrCode(invitedCode, userName string) error {
|
|||||||
tmp, err := os.Open(QrCodePath)
|
tmp, err := os.Open(QrCodePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
||||||
}
|
}
|
||||||
defer tmp.Close()
|
defer tmp.Close()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user