feat
This commit is contained in:
parent
dac4e08e67
commit
4c68923ae0
@ -16,6 +16,7 @@ RUN go build -o /app/fonchain-approval/bin/approval cmd/app.go
|
|||||||
|
|
||||||
|
|
||||||
FROM alpine
|
FROM alpine
|
||||||
|
RUN apk update --no-cache && apk add --no-cache ca-certificates tzdata
|
||||||
ENV TZ Asia/Shanghai
|
ENV TZ Asia/Shanghai
|
||||||
WORKDIR /app/approval
|
WORKDIR /app/approval
|
||||||
#通过名称引用
|
#通过名称引用
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -140,6 +140,7 @@ message StatusRequest {
|
|||||||
uint64 WorkFlowId = 4 [json_name = "workFlowId"];
|
uint64 WorkFlowId = 4 [json_name = "workFlowId"];
|
||||||
uint64 Status = 5 [json_name = "status",(validator.field) = {int_lt: 4,int_gt: 0,human_error: "70008"}];
|
uint64 Status = 5 [json_name = "status",(validator.field) = {int_lt: 4,int_gt: 0,human_error: "70008"}];
|
||||||
uint64 Level = 6 [json_name = "level"];
|
uint64 Level = 6 [json_name = "level"];
|
||||||
|
string Title = 7 [json_name = "title"];
|
||||||
}
|
}
|
||||||
|
|
||||||
message StatusResponse {
|
message StatusResponse {
|
||||||
@ -232,6 +233,8 @@ message ApprovalExhibition {
|
|||||||
string PackageNumber =7 [json_name = "packageNumber"];
|
string PackageNumber =7 [json_name = "packageNumber"];
|
||||||
string Address =8 [json_name = "address"];
|
string Address =8 [json_name = "address"];
|
||||||
string ShowDate =9 [json_name = "showDate"];
|
string ShowDate =9 [json_name = "showDate"];
|
||||||
|
repeated Artwork Artworks = 10[json_name = "artworks"];
|
||||||
|
ArtExhibitionDetail ArtExhibitionDetail = 11[json_name = "artExhibitionDetail"];
|
||||||
}
|
}
|
||||||
|
|
||||||
message Exhibition {
|
message Exhibition {
|
||||||
@ -240,8 +243,37 @@ message Exhibition {
|
|||||||
string Address =3 [json_name = "address"];
|
string Address =3 [json_name = "address"];
|
||||||
uint64 PidApprovalID =4 [json_name = "pidApprovalID"];
|
uint64 PidApprovalID =4 [json_name = "pidApprovalID"];
|
||||||
repeated ApprovalExhibition ApprovalExhibitions = 5 [json_name = "approvalExhibitions"];
|
repeated ApprovalExhibition ApprovalExhibitions = 5 [json_name = "approvalExhibitions"];
|
||||||
uint64 Num = 6 [json_name = "num"];
|
uint64 Num = 6 [json_name = "num"];
|
||||||
string ApplyID = 7 [json_name = "applyID"];
|
string ApplyID = 7 [json_name = "applyID"];
|
||||||
|
}
|
||||||
|
|
||||||
|
message Artwork {
|
||||||
|
string ArtworkPriceUID =1;
|
||||||
|
string ShowUID =2;
|
||||||
|
string ArtworkUID =3;
|
||||||
|
string ArtworkName =4;
|
||||||
|
string ArtistName =5;
|
||||||
|
uint64 Length =6;
|
||||||
|
uint64 Width =7;
|
||||||
|
uint64 Ruler =8;
|
||||||
|
string SmallPic =9;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ArtExhibitionDetail {
|
||||||
|
string ShowUID = 1 ;
|
||||||
|
string ShowSeq = 2 ;
|
||||||
|
string ShowName = 3 ;
|
||||||
|
string ArtistName = 4 ;
|
||||||
|
string ArtistUID = 5 ;
|
||||||
|
uint64 ArtworkNum = 6 ;
|
||||||
|
uint64 Ruler = 7 ;
|
||||||
|
uint64 Price = 8 ;
|
||||||
|
uint64 Reward = 9 ;
|
||||||
|
string CreateTime = 10 ;
|
||||||
|
string Operator = 11 ;
|
||||||
|
uint64 IsShow = 12 ;
|
||||||
|
string ShowTime = 13;
|
||||||
|
string Address = 14 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
message BundlePayPrice {
|
message BundlePayPrice {
|
||||||
@ -255,7 +287,8 @@ message BundlePayPrice {
|
|||||||
string ArtworkSize = 8 [json_name = "artworkSize"];
|
string ArtworkSize = 8 [json_name = "artworkSize"];
|
||||||
string ShowAddress = 9 [json_name = "showAddress"];
|
string ShowAddress = 9 [json_name = "showAddress"];
|
||||||
uint64 ID = 10 [json_name = "ID"];
|
uint64 ID = 10 [json_name = "ID"];
|
||||||
uint64 Status = 11 [json_name = "Status"];
|
uint64 Status = 11 [json_name = "status"];
|
||||||
|
string ArtistName = 12 [json_name = "artistName"];
|
||||||
}
|
}
|
||||||
|
|
||||||
message CreateRequest {
|
message CreateRequest {
|
||||||
|
@ -170,6 +170,18 @@ func (this *Work) Validate() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (this *ApprovalExhibition) Validate() error {
|
func (this *ApprovalExhibition) Validate() error {
|
||||||
|
for _, item := range this.Artworks {
|
||||||
|
if item != nil {
|
||||||
|
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||||
|
return github_com_mwitkow_go_proto_validators.FieldError("Artworks", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if this.ArtExhibitionDetail != nil {
|
||||||
|
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ArtExhibitionDetail); err != nil {
|
||||||
|
return github_com_mwitkow_go_proto_validators.FieldError("ArtExhibitionDetail", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (this *Exhibition) Validate() error {
|
func (this *Exhibition) Validate() error {
|
||||||
@ -182,6 +194,12 @@ func (this *Exhibition) Validate() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
func (this *Artwork) Validate() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (this *ArtExhibitionDetail) Validate() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
func (this *BundlePayPrice) Validate() error {
|
func (this *BundlePayPrice) Validate() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/fonchain_enterprise/fonchain-approval/pkg/common/page"
|
"github.com/fonchain_enterprise/fonchain-approval/pkg/common/page"
|
||||||
msg "github.com/fonchain_enterprise/fonchain-approval/pkg/m"
|
msg "github.com/fonchain_enterprise/fonchain-approval/pkg/m"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
"gorm.io/gorm/clause"
|
||||||
"gorm.io/plugin/soft_delete"
|
"gorm.io/plugin/soft_delete"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -63,12 +64,13 @@ func (j KeyInfos) Value() (driver.Value, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
TypeContent = "content"
|
TypeContent = "content"
|
||||||
TypeWork = "work"
|
TypeWork = "work"
|
||||||
TypeExhibition = "exhibition"
|
TypeExhibition = "exhibition"
|
||||||
TypeShow = "show"
|
TypeShow = "show"
|
||||||
TypeBundle = "bundle"
|
TypeBundle = "bundle"
|
||||||
TypeBundlePayPrice = "bundlePayPrice"
|
TypeBundlePayPrice = "bundlePayPrice"
|
||||||
|
TypeArtExhibitionReward = "artExhibitionReward"
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
StatusDoing = 1
|
StatusDoing = 1
|
||||||
@ -172,7 +174,7 @@ func StoreApproval(in *approval.CreateRequest) (*Approval, error) {
|
|||||||
fmt.Println("1-----", terr, setting)
|
fmt.Println("1-----", terr, setting)
|
||||||
|
|
||||||
if terr != nil || setting == nil {
|
if terr != nil || setting == nil {
|
||||||
return errors.New("抄送人没有配置")
|
return errors.New("审批人员没有配置")
|
||||||
}
|
}
|
||||||
|
|
||||||
approvalUsers := setting.GetCombineApproveUsers(FormatApproveUsers(in.ApprovalUsers))
|
approvalUsers := setting.GetCombineApproveUsers(FormatApproveUsers(in.ApprovalUsers))
|
||||||
@ -213,7 +215,11 @@ func StoreApproval(in *approval.CreateRequest) (*Approval, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(5)
|
fmt.Println(5)
|
||||||
return BatchSave(approvalUsers, entity.ID)
|
err = BatchSave(approvalUsers, entity.ID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return BatchCopySave(setting.CopyUsers, entity.ID)
|
||||||
})
|
})
|
||||||
|
|
||||||
//fmt.Println("nil", entity)
|
//fmt.Println("nil", entity)
|
||||||
@ -254,8 +260,14 @@ func Viewed(in *approval.ViewedRequest) error {
|
|||||||
if isView == false {
|
if isView == false {
|
||||||
return errors.New(msg.ErrorSettingView)
|
return errors.New(msg.ErrorSettingView)
|
||||||
}
|
}
|
||||||
|
err = DB.Model(&Approval{}).Where(&Approval{ID: in.ID}).Updates(&Approval{CopyUsers: copyUsers}).Error
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return DB.Model(&Approval{}).Where(&Approval{ID: in.ID}).Updates(&Approval{CopyUsers: copyUsers}).Error
|
DB.Model(&ApprovalCopy{}).Where(&ApprovalCopy{ApprovalID: in.ID, UserId: in.UserID}).Updates(&ApprovalCopy{Status: StatusOk})
|
||||||
|
|
||||||
|
return err
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -328,7 +340,7 @@ func approvalCalc(filter *Approval) *approval.Information {
|
|||||||
func approvalCalcJsonV2(domain string, userId uint64) *approval.Information {
|
func approvalCalcJsonV2(domain string, userId uint64) *approval.Information {
|
||||||
|
|
||||||
var num int64
|
var num int64
|
||||||
var jsonStr = "json_contains(approval_users,json_object('id', ?))"
|
var jsonStr = "json_contains(approval_users,json_object('ID', ?))"
|
||||||
|
|
||||||
info := &approval.Information{
|
info := &approval.Information{
|
||||||
Total: 0,
|
Total: 0,
|
||||||
@ -456,7 +468,46 @@ func (m *Approval) UpdateContent(in *approval.CreateRequest) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func MyWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
//MyAllWorkApprovals 待阅读的和待我操作的
|
||||||
|
func MyAllWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||||
|
var list []*Approval
|
||||||
|
var ids []string
|
||||||
|
var count int64
|
||||||
|
|
||||||
|
//list
|
||||||
|
modelObj := DB.Model(&Approval{}).
|
||||||
|
Preload("Show").
|
||||||
|
Preload("Work.ApprovalWorks").
|
||||||
|
Preload("Bundle").
|
||||||
|
Preload("ApprovalType").
|
||||||
|
Preload("BundlePayPrice").
|
||||||
|
Preload("ApprovalType.ApprovalTypeGroup").
|
||||||
|
Preload("ApprovalWorkFlows").
|
||||||
|
Preload("Exhibition.ApprovalExhibitions")
|
||||||
|
|
||||||
|
//我未阅读的和我未操作的
|
||||||
|
DB.Model(&Approval{}).Where(&Approval{Type: in.Type}).Where(&Approval{NowUserId: in.UserID, Status: StatusDoing}).Order("id desc").Select("id").Find(&ids)
|
||||||
|
s1 := DB.Model(&ApprovalCopy{}).Where(&ApprovalCopy{UserId: in.UserID}).Select("approval_id")
|
||||||
|
|
||||||
|
modelObj = modelObj.Where(&Approval{Type: in.Type}).Where(
|
||||||
|
DB.Where(&Approval{NowUserId: in.UserID, Status: StatusDoing}). // 我需要审批的
|
||||||
|
Or(DB.Where("status = ?", StatusOk).Where("id in (?)", s1))) // 已完成,抄送给我的
|
||||||
|
modelObj.Count(&count)
|
||||||
|
|
||||||
|
if len(ids) > 0 { //根据具体id排序
|
||||||
|
modelObj = modelObj.Clauses(clause.OrderBy{
|
||||||
|
Expression: clause.Expr{SQL: "FIELD(id,?) desc", Vars: []interface{}{ids}, WithoutParentheses: true},
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
modelObj = modelObj.Order("id desc")
|
||||||
|
}
|
||||||
|
|
||||||
|
modelObj.Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize)).Find(&list)
|
||||||
|
|
||||||
|
return list, count
|
||||||
|
}
|
||||||
|
|
||||||
|
func MyApprovalWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||||
var list []*Approval
|
var list []*Approval
|
||||||
var count int64
|
var count int64
|
||||||
|
|
||||||
@ -465,6 +516,8 @@ func MyWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
|||||||
Preload("Show").
|
Preload("Show").
|
||||||
Preload("Work.ApprovalWorks").
|
Preload("Work.ApprovalWorks").
|
||||||
Preload("Bundle").
|
Preload("Bundle").
|
||||||
|
Preload("ApprovalType").
|
||||||
|
Preload("BundlePayPrice").
|
||||||
Preload("ApprovalType.ApprovalTypeGroup").
|
Preload("ApprovalType.ApprovalTypeGroup").
|
||||||
Preload("ApprovalWorkFlows").
|
Preload("ApprovalWorkFlows").
|
||||||
Preload("Exhibition.ApprovalExhibitions")
|
Preload("Exhibition.ApprovalExhibitions")
|
||||||
@ -505,7 +558,63 @@ func MyWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
|||||||
|
|
||||||
modelObj.Count(&count)
|
modelObj.Count(&count)
|
||||||
|
|
||||||
modelObj.Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize)).Order("id desc").Find(&list)
|
modelObj.Order("id desc").Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize)).Find(&list)
|
||||||
|
|
||||||
|
return list, count
|
||||||
|
}
|
||||||
|
|
||||||
|
func MyWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||||
|
var list []*Approval
|
||||||
|
var count int64
|
||||||
|
|
||||||
|
//list
|
||||||
|
modelObj := DB.Model(&Approval{}).
|
||||||
|
Preload("Show").
|
||||||
|
Preload("Work.ApprovalWorks").
|
||||||
|
Preload("Bundle").
|
||||||
|
Preload("ApprovalType").
|
||||||
|
Preload("BundlePayPrice").
|
||||||
|
Preload("ApprovalType.ApprovalTypeGroup").
|
||||||
|
Preload("ApprovalWorkFlows").
|
||||||
|
Preload("Exhibition.ApprovalExhibitions")
|
||||||
|
|
||||||
|
if in.Type != "" {
|
||||||
|
modelObj = modelObj.Where(&Approval{Type: in.Type})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批展示(抄送在此不表)
|
||||||
|
/ \
|
||||||
|
进行中 通过或者拒绝
|
||||||
|
/ \
|
||||||
|
当前是我审批 我参与审批的
|
||||||
|
*/
|
||||||
|
if in.UserID != 0 {
|
||||||
|
modelObj = modelObj.Where(
|
||||||
|
DB.Where("JSON_CONTAINS(approval_users,JSON_OBJECT('ID', ?))", in.UserID).
|
||||||
|
Where("status != ?", StatusDoing). //完成,我参与审批
|
||||||
|
Or(DB.Where("now_user_id", in.UserID).Where("status = ?", StatusDoing)). //进行中,当前审批人是我,
|
||||||
|
Or(DB.Where("JSON_CONTAINS(copy_users,JSON_OBJECT('ID', ?))", in.UserID).Where("status = ?", StatusOk))) //抄送人(完成抄送)
|
||||||
|
}
|
||||||
|
|
||||||
|
if in.ApprovedBossId != 0 {
|
||||||
|
|
||||||
|
fmt.Println("---------1--------查看我已经审批过的")
|
||||||
|
subQuery2 := DB.Model(&ApprovalWorkFlow{}).
|
||||||
|
Where("status in (?)", []uint8{StatusOk, StatusFail}).
|
||||||
|
Where(&ApprovalWorkFlow{UserId: in.ApprovedBossId}).
|
||||||
|
Select("approval_id")
|
||||||
|
|
||||||
|
modelObj = modelObj.Where("id in (?)", subQuery2)
|
||||||
|
}
|
||||||
|
|
||||||
|
if in.Status != 0 {
|
||||||
|
modelObj = modelObj.Where(&Approval{Status: int8(in.Status)})
|
||||||
|
}
|
||||||
|
|
||||||
|
modelObj.Count(&count)
|
||||||
|
|
||||||
|
modelObj.Order("id desc").Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize)).Find(&list)
|
||||||
|
|
||||||
return list, count
|
return list, count
|
||||||
}
|
}
|
||||||
@ -519,6 +628,7 @@ func MySubmitApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
|||||||
Preload("Show").
|
Preload("Show").
|
||||||
Preload("Work.ApprovalWorks").
|
Preload("Work.ApprovalWorks").
|
||||||
Preload("Bundle").
|
Preload("Bundle").
|
||||||
|
Preload("BundlePayPrice").
|
||||||
Preload("ApprovalWorkFlows").
|
Preload("ApprovalWorkFlows").
|
||||||
Preload("ApprovalType.ApprovalTypeGroup").
|
Preload("ApprovalType.ApprovalTypeGroup").
|
||||||
Preload("Exhibition.ApprovalExhibitions")
|
Preload("Exhibition.ApprovalExhibitions")
|
||||||
|
44
pkg/model/approval_copy.go
Normal file
44
pkg/model/approval_copy.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gorm.io/plugin/soft_delete"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ApprovalCopy 审批流
|
||||||
|
type ApprovalCopy struct {
|
||||||
|
ID uint64 `gorm:"primaryKey;column:id" json:"id"`
|
||||||
|
DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"`
|
||||||
|
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"`
|
||||||
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"`
|
||||||
|
ApprovalID uint64 `gorm:"type:int(11);column:approval_id;default:1;comment:绑定的审批id" json:"approvalID"`
|
||||||
|
UserId uint64 `gorm:"type:int(11);column:user_id;default:1;comment:绑定的人员id" json:"userId"`
|
||||||
|
Name string `gorm:"type:varchar(50);column:name;default:'';comment:绑定的人名称" json:"name"`
|
||||||
|
Status uint64 `gorm:"type:int(11);column:status;default:1;comment:状态" json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func BatchCopySave(users CopyUsers, approvalId uint64) error {
|
||||||
|
var insertRaws []*ApprovalCopy
|
||||||
|
|
||||||
|
if users == nil && len(users) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, user := range users {
|
||||||
|
temp := &ApprovalCopy{
|
||||||
|
UserId: user.ID,
|
||||||
|
Name: user.Name,
|
||||||
|
ApprovalID: approvalId,
|
||||||
|
Status: StatusDoing,
|
||||||
|
}
|
||||||
|
|
||||||
|
insertRaws = append(insertRaws, temp)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return DB.Create(&insertRaws).Error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ApprovalCopy) TableName() string {
|
||||||
|
return "approval_copy"
|
||||||
|
}
|
@ -1,27 +1,82 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"database/sql/driver"
|
||||||
|
"encoding/json"
|
||||||
"gorm.io/plugin/soft_delete"
|
"gorm.io/plugin/soft_delete"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ArtExhibitionDetail struct {
|
||||||
|
ShowUID string
|
||||||
|
ShowSeq string
|
||||||
|
ShowName string
|
||||||
|
ArtistName string
|
||||||
|
ArtistUID string
|
||||||
|
ArtworkNum uint64
|
||||||
|
Ruler uint64
|
||||||
|
Price uint64
|
||||||
|
Reward uint64
|
||||||
|
CreateTime string
|
||||||
|
Operator string
|
||||||
|
IsShow uint64
|
||||||
|
ShowTime string
|
||||||
|
Address string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Artwork struct {
|
||||||
|
ArtworkPriceUID string
|
||||||
|
ShowUID string
|
||||||
|
ArtworkUID string
|
||||||
|
ArtworkName string
|
||||||
|
ArtistName string
|
||||||
|
Length uint64
|
||||||
|
Width uint64
|
||||||
|
Ruler uint64
|
||||||
|
SmallPic string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Artworks []Artwork
|
||||||
|
|
||||||
// ApprovalExhibition 绑定的画展包
|
// ApprovalExhibition 绑定的画展包
|
||||||
type ApprovalExhibition struct {
|
type ApprovalExhibition struct {
|
||||||
ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID
|
ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID
|
||||||
DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间
|
DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间
|
||||||
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间
|
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间
|
||||||
UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间
|
||||||
ApprovalID uint64 `gorm:"column:approval_id" json:"approvalId"` // 申请的id
|
ApprovalID uint64 `gorm:"column:approval_id" json:"approvalId"` // 申请的id
|
||||||
ExhibitionID uint64 `gorm:"column:exhibition_id" json:"exhibitionId"` // 画展包的id
|
ExhibitionID uint64 `gorm:"column:exhibition_id" json:"exhibitionId"` // 画展包的id
|
||||||
PackageName string `gorm:"column:package_name" json:"PackageName"` // 作品名称
|
PackageName string `gorm:"column:package_name" json:"PackageName"` // 作品名称
|
||||||
PackageID string `gorm:"size:64;column:package_id;default:''" json:"packageID"` // 作品类型id
|
PackageID string `gorm:"size:64;column:package_id;default:''" json:"packageID"` // 作品类型id
|
||||||
PackageSize uint64 `gorm:"column:package_size" json:"PackageSize"` // 平尺数
|
PackageSize uint64 `gorm:"column:package_size" json:"PackageSize"` // 平尺数
|
||||||
PackageNumber string `gorm:"column:package_number" json:"packageNumber"` // 序号
|
PackageNumber string `gorm:"column:package_number" json:"packageNumber"` // 序号
|
||||||
Address string `gorm:"column:address" json:"Address"` // 地点
|
Address string `gorm:"column:address" json:"Address"` // 地点
|
||||||
ShowDate string `gorm:"type:varchar(10);default:'';column:show_date" json:"ShowDate"` // 位置
|
ShowDate string `gorm:"type:varchar(10);default:'';column:show_date" json:"ShowDate"` // 位置
|
||||||
|
ArtExhibitionDetail ArtExhibitionDetail `gorm:"type:text;column:art_exhibition_detail;comment:绑定的画展包" json:"artExhibitionDetail"`
|
||||||
|
Artworks Artworks `gorm:"type:text;column:artworks;comment:画作" json:"artworks"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TableName get sql table name.获取数据库表名
|
// TableName get sql table name.获取数据库表名
|
||||||
func (m *ApprovalExhibition) TableName() string {
|
func (m *ApprovalExhibition) TableName() string {
|
||||||
return "approval_exhibition"
|
return "approval_exhibition"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (j Artworks) Scan(src interface{}) error {
|
||||||
|
return json.Unmarshal(src.([]byte), j)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (j Artworks) Value() (driver.Value, error) {
|
||||||
|
v, err := json.Marshal(j)
|
||||||
|
return string(v), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (j ArtExhibitionDetail) Scan(src interface{}) error {
|
||||||
|
return json.Unmarshal(src.([]byte), j)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (j ArtExhibitionDetail) Value() (driver.Value, error) {
|
||||||
|
|
||||||
|
v, err := json.Marshal(j)
|
||||||
|
|
||||||
|
return string(v), err
|
||||||
|
}
|
||||||
|
@ -73,13 +73,20 @@ func GetApprovalSettingFromKeyWord(Domain, keyWord string) (setting *ApprovalSet
|
|||||||
|
|
||||||
func FormatCopyUsers(copyUsers []*approval.CopyUser) CopyUsers {
|
func FormatCopyUsers(copyUsers []*approval.CopyUser) CopyUsers {
|
||||||
var res CopyUsers
|
var res CopyUsers
|
||||||
|
copyMap := make(map[uint64]struct{})
|
||||||
|
|
||||||
// copyer
|
// copyer
|
||||||
for _, copyUser := range copyUsers {
|
for _, copyUser := range copyUsers {
|
||||||
|
|
||||||
|
if _, ok := copyMap[copyUser.ID]; ok { //存在
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
temp := CopyUser{
|
temp := CopyUser{
|
||||||
ID: copyUser.ID,
|
ID: copyUser.ID,
|
||||||
Name: copyUser.Name,
|
Name: copyUser.Name,
|
||||||
}
|
}
|
||||||
|
|
||||||
res = append(res, temp)
|
res = append(res, temp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ var keyWordMap = map[string]string{
|
|||||||
"画展包数量审批": "bundle",
|
"画展包数量审批": "bundle",
|
||||||
"画展审批": "show",
|
"画展审批": "show",
|
||||||
"画展包付款单申请": TypeBundlePayPrice,
|
"画展包付款单申请": TypeBundlePayPrice,
|
||||||
|
"画作润格审批": TypeArtExhibitionReward,
|
||||||
}
|
}
|
||||||
|
|
||||||
func DataExist(domain, keyWork, title string) bool {
|
func DataExist(domain, keyWork, title string) bool {
|
||||||
|
@ -22,7 +22,8 @@ type BundlePayPrice struct {
|
|||||||
ShowLowPrice string `gorm:"type:varchar(32);column:show_low_price;default:'';comment:画展宝低价" json:"showLowPrice"`
|
ShowLowPrice string `gorm:"type:varchar(32);column:show_low_price;default:'';comment:画展宝低价" json:"showLowPrice"`
|
||||||
ArtworkNum uint64 `gorm:"type:int(11);column:artworkNum;default:0;comment:作品数量" json:"artworkNum"`
|
ArtworkNum uint64 `gorm:"type:int(11);column:artworkNum;default:0;comment:作品数量" json:"artworkNum"`
|
||||||
ArtworkSize string `gorm:"type:varchar(32);column:artwork_size;default:'';comment:作品总平尺" json:"artworkSize"`
|
ArtworkSize string `gorm:"type:varchar(32);column:artwork_size;default:'';comment:作品总平尺" json:"artworkSize"`
|
||||||
ShowAddress string `gorm:"type:varchar(32);column:show_address;default:'';comment:画展地址" json:"showAddress"`
|
ShowAddress string `gorm:"type:varchar(50);column:show_address;default:'';comment:画展地址" json:"showAddress"`
|
||||||
|
ArtistName string `gorm:"type:varchar(50);column:artist_name;default:'';comment:画家名称" json:"artistName"`
|
||||||
Status uint64 `gorm:"type:int(11);column:status;default:1;comment:状态" json:"status"`
|
Status uint64 `gorm:"type:int(11);column:status;default:1;comment:状态" json:"status"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,6 +43,7 @@ func (m *BundlePayPrice) SaveApprovalContent(in *approval.CreateRequest, a *Appr
|
|||||||
m.ArtworkNum = in.BundlePayPrice.ArtworkNum
|
m.ArtworkNum = in.BundlePayPrice.ArtworkNum
|
||||||
m.ArtworkSize = in.BundlePayPrice.ArtworkSize
|
m.ArtworkSize = in.BundlePayPrice.ArtworkSize
|
||||||
m.ShowAddress = in.BundlePayPrice.ShowAddress
|
m.ShowAddress = in.BundlePayPrice.ShowAddress
|
||||||
|
m.ArtistName = in.BundlePayPrice.ArtistName
|
||||||
|
|
||||||
return DB.Create(&m).Error
|
return DB.Create(&m).Error
|
||||||
}
|
}
|
||||||
@ -63,6 +65,7 @@ func (m *BundlePayPrice) UpdateApprovalContent(in *approval.CreateRequest, a *Ap
|
|||||||
m.ArtworkNum = in.BundlePayPrice.ArtworkNum
|
m.ArtworkNum = in.BundlePayPrice.ArtworkNum
|
||||||
m.ArtworkSize = in.BundlePayPrice.ArtworkSize
|
m.ArtworkSize = in.BundlePayPrice.ArtworkSize
|
||||||
m.ShowAddress = in.BundlePayPrice.ShowAddress
|
m.ShowAddress = in.BundlePayPrice.ShowAddress
|
||||||
|
m.ArtistName = in.BundlePayPrice.ArtistName
|
||||||
|
|
||||||
return DB.Model(&m).Updates(m).Error
|
return DB.Model(&m).Updates(m).Error
|
||||||
}
|
}
|
||||||
@ -81,6 +84,7 @@ func (m *BundlePayPrice) BuildResContent(a *Approval, request *approval.CreateRe
|
|||||||
ArtworkSize: a.BundlePayPrice.ArtworkSize,
|
ArtworkSize: a.BundlePayPrice.ArtworkSize,
|
||||||
ShowAddress: a.BundlePayPrice.ShowAddress,
|
ShowAddress: a.BundlePayPrice.ShowAddress,
|
||||||
Status: a.BundlePayPrice.Status,
|
Status: a.BundlePayPrice.Status,
|
||||||
|
ArtistName: a.BundlePayPrice.ArtistName,
|
||||||
ID: a.BundlePayPrice.ID,
|
ID: a.BundlePayPrice.ID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,15 +46,49 @@ func (m *Exhibition) SaveApprovalContent(in *approval.CreateRequest, a *Approval
|
|||||||
var approvalExhibitions []ApprovalExhibition
|
var approvalExhibitions []ApprovalExhibition
|
||||||
for _, approvalExhibition := range in.Exhibition.ApprovalExhibitions {
|
for _, approvalExhibition := range in.Exhibition.ApprovalExhibitions {
|
||||||
temp := ApprovalExhibition{
|
temp := ApprovalExhibition{
|
||||||
|
ApprovalID: a.ID,
|
||||||
|
ExhibitionID: m.ID,
|
||||||
|
PackageName: approvalExhibition.PackageName,
|
||||||
|
PackageID: approvalExhibition.PackageID,
|
||||||
|
PackageSize: approvalExhibition.PackageSize,
|
||||||
|
PackageNumber: approvalExhibition.PackageNumber,
|
||||||
|
Address: approvalExhibition.Address,
|
||||||
|
ShowDate: approvalExhibition.ShowDate,
|
||||||
|
}
|
||||||
|
|
||||||
ApprovalID: a.ID,
|
//保存包主体
|
||||||
ExhibitionID: m.ID,
|
temp.ArtExhibitionDetail = ArtExhibitionDetail{
|
||||||
PackageName: approvalExhibition.PackageName,
|
ShowUID: approvalExhibition.ArtExhibitionDetail.ShowUID,
|
||||||
PackageID: approvalExhibition.PackageID,
|
ShowSeq: approvalExhibition.ArtExhibitionDetail.ShowSeq,
|
||||||
//PackageSize: approvalExhibition.PackageSize,
|
ShowName: approvalExhibition.ArtExhibitionDetail.ShowName,
|
||||||
//PackageNumber: approvalExhibition.PackageNumber,
|
ArtistName: approvalExhibition.ArtExhibitionDetail.ArtistName,
|
||||||
Address: approvalExhibition.Address,
|
ArtistUID: approvalExhibition.ArtExhibitionDetail.ArtistUID,
|
||||||
ShowDate: approvalExhibition.ShowDate,
|
ArtworkNum: approvalExhibition.ArtExhibitionDetail.ArtworkNum,
|
||||||
|
Ruler: approvalExhibition.ArtExhibitionDetail.Ruler,
|
||||||
|
Price: approvalExhibition.ArtExhibitionDetail.Price,
|
||||||
|
Reward: approvalExhibition.ArtExhibitionDetail.Reward,
|
||||||
|
CreateTime: approvalExhibition.ArtExhibitionDetail.CreateTime,
|
||||||
|
Operator: approvalExhibition.ArtExhibitionDetail.Operator,
|
||||||
|
IsShow: approvalExhibition.ArtExhibitionDetail.IsShow,
|
||||||
|
ShowTime: approvalExhibition.ArtExhibitionDetail.ShowTime,
|
||||||
|
Address: approvalExhibition.ArtExhibitionDetail.Address,
|
||||||
|
}
|
||||||
|
|
||||||
|
//画作详情
|
||||||
|
for _, t := range approvalExhibition.Artworks {
|
||||||
|
|
||||||
|
art := Artwork{
|
||||||
|
ArtworkPriceUID: t.ArtworkPriceUID,
|
||||||
|
ShowUID: t.ShowUID,
|
||||||
|
ArtworkUID: t.ArtworkUID,
|
||||||
|
ArtworkName: t.ArtworkName,
|
||||||
|
ArtistName: t.ArtistName,
|
||||||
|
Length: t.Length,
|
||||||
|
Width: t.Width,
|
||||||
|
Ruler: t.Ruler,
|
||||||
|
SmallPic: t.SmallPic,
|
||||||
|
}
|
||||||
|
temp.Artworks = append(temp.Artworks, art)
|
||||||
}
|
}
|
||||||
|
|
||||||
approvalExhibitions = append(approvalExhibitions, temp)
|
approvalExhibitions = append(approvalExhibitions, temp)
|
||||||
@ -184,16 +218,52 @@ func (m *Exhibition) BuildResContent(a *Approval, request *approval.CreateReques
|
|||||||
for _, one := range a.Exhibition.ApprovalExhibitions {
|
for _, one := range a.Exhibition.ApprovalExhibitions {
|
||||||
temp := &approval.ApprovalExhibition{
|
temp := &approval.ApprovalExhibition{
|
||||||
|
|
||||||
ID: one.ID,
|
ID: one.ID,
|
||||||
ApprovalID: one.ApprovalID,
|
ApprovalID: one.ApprovalID,
|
||||||
ExhibitionID: one.ExhibitionID,
|
ExhibitionID: one.ExhibitionID,
|
||||||
PackageID: one.PackageID,
|
PackageID: one.PackageID,
|
||||||
PackageName: one.PackageName,
|
PackageName: one.PackageName,
|
||||||
//PackageSize: one.PackageSize,
|
PackageSize: one.PackageSize,
|
||||||
//PackageNumber: one.PackageNumber,
|
PackageNumber: one.PackageNumber,
|
||||||
Address: one.Address,
|
Address: one.Address,
|
||||||
ShowDate: one.ShowDate,
|
ShowDate: one.ShowDate,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//保存包主体
|
||||||
|
temp.ArtExhibitionDetail = &approval.ArtExhibitionDetail{
|
||||||
|
ShowUID: one.ArtExhibitionDetail.ShowUID,
|
||||||
|
ShowSeq: one.ArtExhibitionDetail.ShowSeq,
|
||||||
|
ShowName: one.ArtExhibitionDetail.ShowName,
|
||||||
|
ArtistName: one.ArtExhibitionDetail.ArtistName,
|
||||||
|
ArtistUID: one.ArtExhibitionDetail.ArtistUID,
|
||||||
|
ArtworkNum: one.ArtExhibitionDetail.ArtworkNum,
|
||||||
|
Ruler: one.ArtExhibitionDetail.Ruler,
|
||||||
|
Price: one.ArtExhibitionDetail.Price,
|
||||||
|
Reward: one.ArtExhibitionDetail.Reward,
|
||||||
|
CreateTime: one.ArtExhibitionDetail.CreateTime,
|
||||||
|
Operator: one.ArtExhibitionDetail.Operator,
|
||||||
|
IsShow: one.ArtExhibitionDetail.IsShow,
|
||||||
|
ShowTime: one.ArtExhibitionDetail.ShowTime,
|
||||||
|
Address: one.ArtExhibitionDetail.Address,
|
||||||
|
}
|
||||||
|
|
||||||
|
//画作详情
|
||||||
|
for _, t := range one.Artworks {
|
||||||
|
|
||||||
|
art := &approval.Artwork{
|
||||||
|
ArtworkPriceUID: t.ArtworkPriceUID,
|
||||||
|
ShowUID: t.ShowUID,
|
||||||
|
ArtworkUID: t.ArtworkUID,
|
||||||
|
ArtworkName: t.ArtworkName,
|
||||||
|
ArtistName: t.ArtistName,
|
||||||
|
Length: t.Length,
|
||||||
|
Width: t.Width,
|
||||||
|
Ruler: t.Ruler,
|
||||||
|
SmallPic: t.SmallPic,
|
||||||
|
}
|
||||||
|
temp.Artworks = append(temp.Artworks, art)
|
||||||
|
}
|
||||||
|
|
||||||
approvalExhibitions = append(approvalExhibitions, temp)
|
approvalExhibitions = append(approvalExhibitions, temp)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ func migration() {
|
|||||||
//自动迁移模式
|
//自动迁移模式
|
||||||
addTable(&ApprovalTypeGroup{})
|
addTable(&ApprovalTypeGroup{})
|
||||||
addTable(&BundlePayPrice{})
|
addTable(&BundlePayPrice{})
|
||||||
|
addTable(&ApprovalCopy{})
|
||||||
|
|
||||||
//增加字段
|
//增加字段
|
||||||
addColumn(&ApprovalType{}, "is_normal")
|
addColumn(&ApprovalType{}, "is_normal")
|
||||||
@ -26,6 +27,46 @@ func migration() {
|
|||||||
|
|
||||||
addColumn(&Approval{}, "value_json")
|
addColumn(&Approval{}, "value_json")
|
||||||
addColumn(&BundlePayPrice{}, "status")
|
addColumn(&BundlePayPrice{}, "status")
|
||||||
|
addColumn(&BundlePayPrice{}, "artist_name")
|
||||||
|
|
||||||
|
var num int64
|
||||||
|
var list []*Approval
|
||||||
|
DB.Model(&ApprovalCopy{}).Count(&num)
|
||||||
|
if num > 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//同步更新数据
|
||||||
|
DB.Model(&Approval{}).Find(&list)
|
||||||
|
|
||||||
|
if len(list) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, t := range list {
|
||||||
|
for _, tt := range t.CopyUsers {
|
||||||
|
status := 1
|
||||||
|
if tt.IsViewed == true {
|
||||||
|
status = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
temp := &ApprovalCopy{
|
||||||
|
ApprovalID: t.ID,
|
||||||
|
UserId: tt.ID,
|
||||||
|
Name: tt.Name,
|
||||||
|
Status: uint64(status),
|
||||||
|
}
|
||||||
|
var n int64
|
||||||
|
DB.Model(&ApprovalCopy{}).Where(temp).Count(&n)
|
||||||
|
if n > 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
DB.Model(&ApprovalCopy{}).Create(&temp)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//数据迁移
|
//数据迁移
|
||||||
|
@ -260,7 +260,11 @@ func (a *ApprovalProvider) MyWork(ctx context.Context, in *approval.ListRequest)
|
|||||||
var list []*model.Approval
|
var list []*model.Approval
|
||||||
var count int64
|
var count int64
|
||||||
|
|
||||||
list, count = model.MyWorkApprovals(in)
|
if in.Status == 0 && in.ApprovedBossId == 0 {
|
||||||
|
list, count = model.MyAllWorkApprovals(in)
|
||||||
|
} else {
|
||||||
|
list, count = model.MyWorkApprovals(in)
|
||||||
|
}
|
||||||
|
|
||||||
response.Count = uint64(count)
|
response.Count = uint64(count)
|
||||||
response.Data = serializer.BuildApprovals(list, in.UserID)
|
response.Data = serializer.BuildApprovals(list, in.UserID)
|
||||||
@ -333,7 +337,7 @@ func (a *ApprovalProvider) DetailSetting(ctx context.Context, in *approval.Detai
|
|||||||
func (a *ApprovalProvider) CreateType(ctx context.Context, in *approval.CreateTypeRequest) (*approval.TypeResponse, error) {
|
func (a *ApprovalProvider) CreateType(ctx context.Context, in *approval.CreateTypeRequest) (*approval.TypeResponse, error) {
|
||||||
response := &approval.TypeResponse{}
|
response := &approval.TypeResponse{}
|
||||||
|
|
||||||
fmt.Println("创建类型:", in.String())
|
fmt.Println("创建类型123123:", in.String())
|
||||||
//创建分组
|
//创建分组
|
||||||
groupId, err := model.GetGroupIdByName(in.GroupName, in.Domain)
|
groupId, err := model.GetGroupIdByName(in.GroupName, in.Domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -399,6 +403,9 @@ func (a *ApprovalProvider) UpdateType(ctx context.Context, in *approval.CreateTy
|
|||||||
|
|
||||||
typeObj.Title = in.Title
|
typeObj.Title = in.Title
|
||||||
typeObj.Remark = in.Remark
|
typeObj.Remark = in.Remark
|
||||||
|
if len(in.KeyInfos) > 0 {
|
||||||
|
typeObj.KeyJson = model.ToKeyInfos(in.KeyInfos)
|
||||||
|
}
|
||||||
|
|
||||||
if err := model.DB.Save(&typeObj).Error; err != nil {
|
if err := model.DB.Save(&typeObj).Error; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Loading…
Reference in New Issue
Block a user