Selaa lähdekoodia

超管在禁用sop任务时,改为重置为草稿状态

boweniac 6 kuukautta sitten
vanhempi
commit
aee7949401

+ 18 - 0
desc/wechat/label.api

@@ -11,6 +11,20 @@ type (
         Data []LabelSelectListInfo `json:"data"`
     }
 
+    // The response data of label list | Label群发列表数据
+    LabelBatchSelectListResp {
+        BaseDataInfo
+
+        // Label list data | Label列表数据
+        Data LabelBatchSelectListData `json:"data"`
+    }
+
+    // The response data of label list | Label群发列表数据
+    LabelBatchSelectListData {
+        Contact []LabelSelectListInfo `json:"contact"`
+        Group []LabelSelectListInfo `json:"group"`
+    }
+
     // The response data of label list | Label列表数据
     LabelListResp {
         BaseDataInfo
@@ -91,6 +105,10 @@ service Wechat {
     @handler getLabelSelectList
     post /label/select_list (LabelListReq) returns (LabelSelectListResp)
 
+    // Get label select list | 获取Label群发列表
+    @handler getLabelBatchSelectList
+    post /label/batch_select_list (LabelListReq) returns (LabelBatchSelectListResp)
+
     // Get label contacts | 获取Label联系人
     @handler getLabelContacts
     post /label/contacts (LabelListReq) returns (LabelListResp)

+ 2 - 4
ent/client.go

@@ -1853,14 +1853,12 @@ func (c *MessageRecordsClient) QueryMessageContact(mr *MessageRecords) *ContactQ
 
 // Hooks returns the client hooks.
 func (c *MessageRecordsClient) Hooks() []Hook {
-	hooks := c.hooks.MessageRecords
-	return append(hooks[:len(hooks):len(hooks)], messagerecords.Hooks[:]...)
+	return c.hooks.MessageRecords
 }
 
 // Interceptors returns the client interceptors.
 func (c *MessageRecordsClient) Interceptors() []Interceptor {
-	inters := c.inters.MessageRecords
-	return append(inters[:len(inters):len(inters)], messagerecords.Interceptors[:]...)
+	return c.inters.MessageRecords
 }
 
 func (c *MessageRecordsClient) mutate(ctx context.Context, m *MessageRecordsMutation) (Value, error) {

+ 1 - 12
ent/messagerecords.go

@@ -28,8 +28,6 @@ type MessageRecords struct {
 	UpdatedAt time.Time `json:"updated_at,omitempty"`
 	// Status 1: normal 2: ban | 状态 1 正常 2 禁用
 	Status uint8 `json:"status,omitempty"`
-	// Delete Time | 删除日期
-	DeletedAt time.Time `json:"deleted_at,omitempty"`
 	// 机器人微信 id
 	BotWxid string `json:"bot_wxid,omitempty"`
 	// 联系人 id
@@ -119,7 +117,7 @@ func (*MessageRecords) scanValues(columns []string) ([]any, error) {
 			values[i] = new(sql.NullInt64)
 		case messagerecords.FieldBotWxid, messagerecords.FieldContactWxid, messagerecords.FieldContent, messagerecords.FieldErrorDetail:
 			values[i] = new(sql.NullString)
-		case messagerecords.FieldCreatedAt, messagerecords.FieldUpdatedAt, messagerecords.FieldDeletedAt, messagerecords.FieldSendTime:
+		case messagerecords.FieldCreatedAt, messagerecords.FieldUpdatedAt, messagerecords.FieldSendTime:
 			values[i] = new(sql.NullTime)
 		default:
 			values[i] = new(sql.UnknownType)
@@ -160,12 +158,6 @@ func (mr *MessageRecords) assignValues(columns []string, values []any) error {
 			} else if value.Valid {
 				mr.Status = uint8(value.Int64)
 			}
-		case messagerecords.FieldDeletedAt:
-			if value, ok := values[i].(*sql.NullTime); !ok {
-				return fmt.Errorf("unexpected type %T for field deleted_at", values[i])
-			} else if value.Valid {
-				mr.DeletedAt = value.Time
-			}
 		case messagerecords.FieldBotWxid:
 			if value, ok := values[i].(*sql.NullString); !ok {
 				return fmt.Errorf("unexpected type %T for field bot_wxid", values[i])
@@ -306,9 +298,6 @@ func (mr *MessageRecords) String() string {
 	builder.WriteString("status=")
 	builder.WriteString(fmt.Sprintf("%v", mr.Status))
 	builder.WriteString(", ")
-	builder.WriteString("deleted_at=")
-	builder.WriteString(mr.DeletedAt.Format(time.ANSIC))
-	builder.WriteString(", ")
 	builder.WriteString("bot_wxid=")
 	builder.WriteString(mr.BotWxid)
 	builder.WriteString(", ")

+ 0 - 16
ent/messagerecords/messagerecords.go

@@ -5,7 +5,6 @@ package messagerecords
 import (
 	"time"
 
-	"entgo.io/ent"
 	"entgo.io/ent/dialect/sql"
 	"entgo.io/ent/dialect/sql/sqlgraph"
 )
@@ -21,8 +20,6 @@ const (
 	FieldUpdatedAt = "updated_at"
 	// FieldStatus holds the string denoting the status field in the database.
 	FieldStatus = "status"
-	// FieldDeletedAt holds the string denoting the deleted_at field in the database.
-	FieldDeletedAt = "deleted_at"
 	// FieldBotWxid holds the string denoting the bot_wxid field in the database.
 	FieldBotWxid = "bot_wxid"
 	// FieldContactID holds the string denoting the contact_id field in the database.
@@ -86,7 +83,6 @@ var Columns = []string{
 	FieldCreatedAt,
 	FieldUpdatedAt,
 	FieldStatus,
-	FieldDeletedAt,
 	FieldBotWxid,
 	FieldContactID,
 	FieldContactType,
@@ -112,14 +108,7 @@ func ValidColumn(column string) bool {
 	return false
 }
 
-// Note that the variables below are initialized by the runtime
-// package on the initialization of the application. Therefore,
-// it should be imported in the main as follows:
-//
-//	import _ "wechat-api/ent/runtime"
 var (
-	Hooks        [1]ent.Hook
-	Interceptors [1]ent.Interceptor
 	// DefaultCreatedAt holds the default value on creation for the "created_at" field.
 	DefaultCreatedAt func() time.Time
 	// DefaultUpdatedAt holds the default value on creation for the "updated_at" field.
@@ -171,11 +160,6 @@ func ByStatus(opts ...sql.OrderTermOption) OrderOption {
 	return sql.OrderByField(FieldStatus, opts...).ToFunc()
 }
 
-// ByDeletedAt orders the results by the deleted_at field.
-func ByDeletedAt(opts ...sql.OrderTermOption) OrderOption {
-	return sql.OrderByField(FieldDeletedAt, opts...).ToFunc()
-}
-
 // ByBotWxid orders the results by the bot_wxid field.
 func ByBotWxid(opts ...sql.OrderTermOption) OrderOption {
 	return sql.OrderByField(FieldBotWxid, opts...).ToFunc()

+ 0 - 55
ent/messagerecords/where.go

@@ -70,11 +70,6 @@ func Status(v uint8) predicate.MessageRecords {
 	return predicate.MessageRecords(sql.FieldEQ(FieldStatus, v))
 }
 
-// DeletedAt applies equality check predicate on the "deleted_at" field. It's identical to DeletedAtEQ.
-func DeletedAt(v time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldEQ(FieldDeletedAt, v))
-}
-
 // BotWxid applies equality check predicate on the "bot_wxid" field. It's identical to BotWxidEQ.
 func BotWxid(v string) predicate.MessageRecords {
 	return predicate.MessageRecords(sql.FieldEQ(FieldBotWxid, v))
@@ -265,56 +260,6 @@ func StatusNotNil() predicate.MessageRecords {
 	return predicate.MessageRecords(sql.FieldNotNull(FieldStatus))
 }
 
-// DeletedAtEQ applies the EQ predicate on the "deleted_at" field.
-func DeletedAtEQ(v time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldEQ(FieldDeletedAt, v))
-}
-
-// DeletedAtNEQ applies the NEQ predicate on the "deleted_at" field.
-func DeletedAtNEQ(v time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldNEQ(FieldDeletedAt, v))
-}
-
-// DeletedAtIn applies the In predicate on the "deleted_at" field.
-func DeletedAtIn(vs ...time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldIn(FieldDeletedAt, vs...))
-}
-
-// DeletedAtNotIn applies the NotIn predicate on the "deleted_at" field.
-func DeletedAtNotIn(vs ...time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldNotIn(FieldDeletedAt, vs...))
-}
-
-// DeletedAtGT applies the GT predicate on the "deleted_at" field.
-func DeletedAtGT(v time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldGT(FieldDeletedAt, v))
-}
-
-// DeletedAtGTE applies the GTE predicate on the "deleted_at" field.
-func DeletedAtGTE(v time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldGTE(FieldDeletedAt, v))
-}
-
-// DeletedAtLT applies the LT predicate on the "deleted_at" field.
-func DeletedAtLT(v time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldLT(FieldDeletedAt, v))
-}
-
-// DeletedAtLTE applies the LTE predicate on the "deleted_at" field.
-func DeletedAtLTE(v time.Time) predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldLTE(FieldDeletedAt, v))
-}
-
-// DeletedAtIsNil applies the IsNil predicate on the "deleted_at" field.
-func DeletedAtIsNil() predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldIsNull(FieldDeletedAt))
-}
-
-// DeletedAtNotNil applies the NotNil predicate on the "deleted_at" field.
-func DeletedAtNotNil() predicate.MessageRecords {
-	return predicate.MessageRecords(sql.FieldNotNull(FieldDeletedAt))
-}
-
 // BotWxidEQ applies the EQ predicate on the "bot_wxid" field.
 func BotWxidEQ(v string) predicate.MessageRecords {
 	return predicate.MessageRecords(sql.FieldEQ(FieldBotWxid, v))

+ 2 - 89
ent/messagerecords_create.go

@@ -68,20 +68,6 @@ func (mrc *MessageRecordsCreate) SetNillableStatus(u *uint8) *MessageRecordsCrea
 	return mrc
 }
 
-// SetDeletedAt sets the "deleted_at" field.
-func (mrc *MessageRecordsCreate) SetDeletedAt(t time.Time) *MessageRecordsCreate {
-	mrc.mutation.SetDeletedAt(t)
-	return mrc
-}
-
-// SetNillableDeletedAt sets the "deleted_at" field if the given value is not nil.
-func (mrc *MessageRecordsCreate) SetNillableDeletedAt(t *time.Time) *MessageRecordsCreate {
-	if t != nil {
-		mrc.SetDeletedAt(*t)
-	}
-	return mrc
-}
-
 // SetBotWxid sets the "bot_wxid" field.
 func (mrc *MessageRecordsCreate) SetBotWxid(s string) *MessageRecordsCreate {
 	mrc.mutation.SetBotWxid(s)
@@ -326,9 +312,7 @@ func (mrc *MessageRecordsCreate) Mutation() *MessageRecordsMutation {
 
 // Save creates the MessageRecords in the database.
 func (mrc *MessageRecordsCreate) Save(ctx context.Context) (*MessageRecords, error) {
-	if err := mrc.defaults(); err != nil {
-		return nil, err
-	}
+	mrc.defaults()
 	return withHooks(ctx, mrc.sqlSave, mrc.mutation, mrc.hooks)
 }
 
@@ -355,18 +339,12 @@ func (mrc *MessageRecordsCreate) ExecX(ctx context.Context) {
 }
 
 // defaults sets the default values of the builder before save.
-func (mrc *MessageRecordsCreate) defaults() error {
+func (mrc *MessageRecordsCreate) defaults() {
 	if _, ok := mrc.mutation.CreatedAt(); !ok {
-		if messagerecords.DefaultCreatedAt == nil {
-			return fmt.Errorf("ent: uninitialized messagerecords.DefaultCreatedAt (forgotten import ent/runtime?)")
-		}
 		v := messagerecords.DefaultCreatedAt()
 		mrc.mutation.SetCreatedAt(v)
 	}
 	if _, ok := mrc.mutation.UpdatedAt(); !ok {
-		if messagerecords.DefaultUpdatedAt == nil {
-			return fmt.Errorf("ent: uninitialized messagerecords.DefaultUpdatedAt (forgotten import ent/runtime?)")
-		}
 		v := messagerecords.DefaultUpdatedAt()
 		mrc.mutation.SetUpdatedAt(v)
 	}
@@ -410,7 +388,6 @@ func (mrc *MessageRecordsCreate) defaults() error {
 		v := messagerecords.DefaultOrganizationID
 		mrc.mutation.SetOrganizationID(v)
 	}
-	return nil
 }
 
 // check runs all checks and user-defined validators on the builder.
@@ -487,10 +464,6 @@ func (mrc *MessageRecordsCreate) createSpec() (*MessageRecords, *sqlgraph.Create
 		_spec.SetField(messagerecords.FieldStatus, field.TypeUint8, value)
 		_node.Status = value
 	}
-	if value, ok := mrc.mutation.DeletedAt(); ok {
-		_spec.SetField(messagerecords.FieldDeletedAt, field.TypeTime, value)
-		_node.DeletedAt = value
-	}
 	if value, ok := mrc.mutation.BotWxid(); ok {
 		_spec.SetField(messagerecords.FieldBotWxid, field.TypeString, value)
 		_node.BotWxid = value
@@ -670,24 +643,6 @@ func (u *MessageRecordsUpsert) ClearStatus() *MessageRecordsUpsert {
 	return u
 }
 
-// SetDeletedAt sets the "deleted_at" field.
-func (u *MessageRecordsUpsert) SetDeletedAt(v time.Time) *MessageRecordsUpsert {
-	u.Set(messagerecords.FieldDeletedAt, v)
-	return u
-}
-
-// UpdateDeletedAt sets the "deleted_at" field to the value that was provided on create.
-func (u *MessageRecordsUpsert) UpdateDeletedAt() *MessageRecordsUpsert {
-	u.SetExcluded(messagerecords.FieldDeletedAt)
-	return u
-}
-
-// ClearDeletedAt clears the value of the "deleted_at" field.
-func (u *MessageRecordsUpsert) ClearDeletedAt() *MessageRecordsUpsert {
-	u.SetNull(messagerecords.FieldDeletedAt)
-	return u
-}
-
 // SetBotWxid sets the "bot_wxid" field.
 func (u *MessageRecordsUpsert) SetBotWxid(v string) *MessageRecordsUpsert {
 	u.Set(messagerecords.FieldBotWxid, v)
@@ -997,27 +952,6 @@ func (u *MessageRecordsUpsertOne) ClearStatus() *MessageRecordsUpsertOne {
 	})
 }
 
-// SetDeletedAt sets the "deleted_at" field.
-func (u *MessageRecordsUpsertOne) SetDeletedAt(v time.Time) *MessageRecordsUpsertOne {
-	return u.Update(func(s *MessageRecordsUpsert) {
-		s.SetDeletedAt(v)
-	})
-}
-
-// UpdateDeletedAt sets the "deleted_at" field to the value that was provided on create.
-func (u *MessageRecordsUpsertOne) UpdateDeletedAt() *MessageRecordsUpsertOne {
-	return u.Update(func(s *MessageRecordsUpsert) {
-		s.UpdateDeletedAt()
-	})
-}
-
-// ClearDeletedAt clears the value of the "deleted_at" field.
-func (u *MessageRecordsUpsertOne) ClearDeletedAt() *MessageRecordsUpsertOne {
-	return u.Update(func(s *MessageRecordsUpsert) {
-		s.ClearDeletedAt()
-	})
-}
-
 // SetBotWxid sets the "bot_wxid" field.
 func (u *MessageRecordsUpsertOne) SetBotWxid(v string) *MessageRecordsUpsertOne {
 	return u.Update(func(s *MessageRecordsUpsert) {
@@ -1529,27 +1463,6 @@ func (u *MessageRecordsUpsertBulk) ClearStatus() *MessageRecordsUpsertBulk {
 	})
 }
 
-// SetDeletedAt sets the "deleted_at" field.
-func (u *MessageRecordsUpsertBulk) SetDeletedAt(v time.Time) *MessageRecordsUpsertBulk {
-	return u.Update(func(s *MessageRecordsUpsert) {
-		s.SetDeletedAt(v)
-	})
-}
-
-// UpdateDeletedAt sets the "deleted_at" field to the value that was provided on create.
-func (u *MessageRecordsUpsertBulk) UpdateDeletedAt() *MessageRecordsUpsertBulk {
-	return u.Update(func(s *MessageRecordsUpsert) {
-		s.UpdateDeletedAt()
-	})
-}
-
-// ClearDeletedAt clears the value of the "deleted_at" field.
-func (u *MessageRecordsUpsertBulk) ClearDeletedAt() *MessageRecordsUpsertBulk {
-	return u.Update(func(s *MessageRecordsUpsert) {
-		s.ClearDeletedAt()
-	})
-}
-
 // SetBotWxid sets the "bot_wxid" field.
 func (u *MessageRecordsUpsertBulk) SetBotWxid(v string) *MessageRecordsUpsertBulk {
 	return u.Update(func(s *MessageRecordsUpsert) {

+ 4 - 68
ent/messagerecords_update.go

@@ -65,26 +65,6 @@ func (mru *MessageRecordsUpdate) ClearStatus() *MessageRecordsUpdate {
 	return mru
 }
 
-// SetDeletedAt sets the "deleted_at" field.
-func (mru *MessageRecordsUpdate) SetDeletedAt(t time.Time) *MessageRecordsUpdate {
-	mru.mutation.SetDeletedAt(t)
-	return mru
-}
-
-// SetNillableDeletedAt sets the "deleted_at" field if the given value is not nil.
-func (mru *MessageRecordsUpdate) SetNillableDeletedAt(t *time.Time) *MessageRecordsUpdate {
-	if t != nil {
-		mru.SetDeletedAt(*t)
-	}
-	return mru
-}
-
-// ClearDeletedAt clears the value of the "deleted_at" field.
-func (mru *MessageRecordsUpdate) ClearDeletedAt() *MessageRecordsUpdate {
-	mru.mutation.ClearDeletedAt()
-	return mru
-}
-
 // SetBotWxid sets the "bot_wxid" field.
 func (mru *MessageRecordsUpdate) SetBotWxid(s string) *MessageRecordsUpdate {
 	mru.mutation.SetBotWxid(s)
@@ -413,9 +393,7 @@ func (mru *MessageRecordsUpdate) ClearMessageContact() *MessageRecordsUpdate {
 
 // Save executes the query and returns the number of nodes affected by the update operation.
 func (mru *MessageRecordsUpdate) Save(ctx context.Context) (int, error) {
-	if err := mru.defaults(); err != nil {
-		return 0, err
-	}
+	mru.defaults()
 	return withHooks(ctx, mru.sqlSave, mru.mutation, mru.hooks)
 }
 
@@ -442,15 +420,11 @@ func (mru *MessageRecordsUpdate) ExecX(ctx context.Context) {
 }
 
 // defaults sets the default values of the builder before save.
-func (mru *MessageRecordsUpdate) defaults() error {
+func (mru *MessageRecordsUpdate) defaults() {
 	if _, ok := mru.mutation.UpdatedAt(); !ok {
-		if messagerecords.UpdateDefaultUpdatedAt == nil {
-			return fmt.Errorf("ent: uninitialized messagerecords.UpdateDefaultUpdatedAt (forgotten import ent/runtime?)")
-		}
 		v := messagerecords.UpdateDefaultUpdatedAt()
 		mru.mutation.SetUpdatedAt(v)
 	}
-	return nil
 }
 
 func (mru *MessageRecordsUpdate) sqlSave(ctx context.Context) (n int, err error) {
@@ -474,12 +448,6 @@ func (mru *MessageRecordsUpdate) sqlSave(ctx context.Context) (n int, err error)
 	if mru.mutation.StatusCleared() {
 		_spec.ClearField(messagerecords.FieldStatus, field.TypeUint8)
 	}
-	if value, ok := mru.mutation.DeletedAt(); ok {
-		_spec.SetField(messagerecords.FieldDeletedAt, field.TypeTime, value)
-	}
-	if mru.mutation.DeletedAtCleared() {
-		_spec.ClearField(messagerecords.FieldDeletedAt, field.TypeTime)
-	}
 	if value, ok := mru.mutation.BotWxid(); ok {
 		_spec.SetField(messagerecords.FieldBotWxid, field.TypeString, value)
 	}
@@ -671,26 +639,6 @@ func (mruo *MessageRecordsUpdateOne) ClearStatus() *MessageRecordsUpdateOne {
 	return mruo
 }
 
-// SetDeletedAt sets the "deleted_at" field.
-func (mruo *MessageRecordsUpdateOne) SetDeletedAt(t time.Time) *MessageRecordsUpdateOne {
-	mruo.mutation.SetDeletedAt(t)
-	return mruo
-}
-
-// SetNillableDeletedAt sets the "deleted_at" field if the given value is not nil.
-func (mruo *MessageRecordsUpdateOne) SetNillableDeletedAt(t *time.Time) *MessageRecordsUpdateOne {
-	if t != nil {
-		mruo.SetDeletedAt(*t)
-	}
-	return mruo
-}
-
-// ClearDeletedAt clears the value of the "deleted_at" field.
-func (mruo *MessageRecordsUpdateOne) ClearDeletedAt() *MessageRecordsUpdateOne {
-	mruo.mutation.ClearDeletedAt()
-	return mruo
-}
-
 // SetBotWxid sets the "bot_wxid" field.
 func (mruo *MessageRecordsUpdateOne) SetBotWxid(s string) *MessageRecordsUpdateOne {
 	mruo.mutation.SetBotWxid(s)
@@ -1032,9 +980,7 @@ func (mruo *MessageRecordsUpdateOne) Select(field string, fields ...string) *Mes
 
 // Save executes the query and returns the updated MessageRecords entity.
 func (mruo *MessageRecordsUpdateOne) Save(ctx context.Context) (*MessageRecords, error) {
-	if err := mruo.defaults(); err != nil {
-		return nil, err
-	}
+	mruo.defaults()
 	return withHooks(ctx, mruo.sqlSave, mruo.mutation, mruo.hooks)
 }
 
@@ -1061,15 +1007,11 @@ func (mruo *MessageRecordsUpdateOne) ExecX(ctx context.Context) {
 }
 
 // defaults sets the default values of the builder before save.
-func (mruo *MessageRecordsUpdateOne) defaults() error {
+func (mruo *MessageRecordsUpdateOne) defaults() {
 	if _, ok := mruo.mutation.UpdatedAt(); !ok {
-		if messagerecords.UpdateDefaultUpdatedAt == nil {
-			return fmt.Errorf("ent: uninitialized messagerecords.UpdateDefaultUpdatedAt (forgotten import ent/runtime?)")
-		}
 		v := messagerecords.UpdateDefaultUpdatedAt()
 		mruo.mutation.SetUpdatedAt(v)
 	}
-	return nil
 }
 
 func (mruo *MessageRecordsUpdateOne) sqlSave(ctx context.Context) (_node *MessageRecords, err error) {
@@ -1110,12 +1052,6 @@ func (mruo *MessageRecordsUpdateOne) sqlSave(ctx context.Context) (_node *Messag
 	if mruo.mutation.StatusCleared() {
 		_spec.ClearField(messagerecords.FieldStatus, field.TypeUint8)
 	}
-	if value, ok := mruo.mutation.DeletedAt(); ok {
-		_spec.SetField(messagerecords.FieldDeletedAt, field.TypeTime, value)
-	}
-	if mruo.mutation.DeletedAtCleared() {
-		_spec.ClearField(messagerecords.FieldDeletedAt, field.TypeTime)
-	}
 	if value, ok := mruo.mutation.BotWxid(); ok {
 		_spec.SetField(messagerecords.FieldBotWxid, field.TypeString, value)
 	}

+ 4 - 5
ent/migrate/schema.go

@@ -296,7 +296,6 @@ var (
 		{Name: "created_at", Type: field.TypeTime, Comment: "Create Time | 创建日期"},
 		{Name: "updated_at", Type: field.TypeTime, Comment: "Update Time | 修改日期"},
 		{Name: "status", Type: field.TypeUint8, Nullable: true, Comment: "Status 1: normal 2: ban | 状态 1 正常 2 禁用", Default: 1},
-		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, Comment: "Delete Time | 删除日期"},
 		{Name: "bot_wxid", Type: field.TypeString, Comment: "机器人微信 id"},
 		{Name: "contact_type", Type: field.TypeInt, Comment: "类型:1好友,2群组,3企业微信联系人", Default: 1},
 		{Name: "contact_wxid", Type: field.TypeString, Comment: "接收方微信 id", Default: ""},
@@ -319,19 +318,19 @@ var (
 		ForeignKeys: []*schema.ForeignKey{
 			{
 				Symbol:     "message_records_contact_contact_messages",
-				Columns:    []*schema.Column{MessageRecordsColumns[15]},
+				Columns:    []*schema.Column{MessageRecordsColumns[14]},
 				RefColumns: []*schema.Column{ContactColumns[0]},
 				OnDelete:   schema.SetNull,
 			},
 			{
 				Symbol:     "message_records_sop_node_node_messages",
-				Columns:    []*schema.Column{MessageRecordsColumns[16]},
+				Columns:    []*schema.Column{MessageRecordsColumns[15]},
 				RefColumns: []*schema.Column{SopNodeColumns[0]},
 				OnDelete:   schema.SetNull,
 			},
 			{
 				Symbol:     "message_records_sop_stage_stage_messages",
-				Columns:    []*schema.Column{MessageRecordsColumns[17]},
+				Columns:    []*schema.Column{MessageRecordsColumns[16]},
 				RefColumns: []*schema.Column{SopStageColumns[0]},
 				OnDelete:   schema.SetNull,
 			},
@@ -340,7 +339,7 @@ var (
 			{
 				Name:    "messagerecords_source_type",
 				Unique:  false,
-				Columns: []*schema.Column{MessageRecordsColumns[13]},
+				Columns: []*schema.Column{MessageRecordsColumns[12]},
 			},
 		},
 	}

+ 1 - 74
ent/mutation.go

@@ -10034,7 +10034,6 @@ type MessageRecordsMutation struct {
 	updated_at             *time.Time
 	status                 *uint8
 	addstatus              *int8
-	deleted_at             *time.Time
 	bot_wxid               *string
 	contact_type           *int
 	addcontact_type        *int
@@ -10307,55 +10306,6 @@ func (m *MessageRecordsMutation) ResetStatus() {
 	delete(m.clearedFields, messagerecords.FieldStatus)
 }
 
-// SetDeletedAt sets the "deleted_at" field.
-func (m *MessageRecordsMutation) SetDeletedAt(t time.Time) {
-	m.deleted_at = &t
-}
-
-// DeletedAt returns the value of the "deleted_at" field in the mutation.
-func (m *MessageRecordsMutation) DeletedAt() (r time.Time, exists bool) {
-	v := m.deleted_at
-	if v == nil {
-		return
-	}
-	return *v, true
-}
-
-// OldDeletedAt returns the old "deleted_at" field's value of the MessageRecords entity.
-// If the MessageRecords object wasn't provided to the builder, the object is fetched from the database.
-// An error is returned if the mutation operation is not UpdateOne, or the database query fails.
-func (m *MessageRecordsMutation) OldDeletedAt(ctx context.Context) (v time.Time, err error) {
-	if !m.op.Is(OpUpdateOne) {
-		return v, errors.New("OldDeletedAt is only allowed on UpdateOne operations")
-	}
-	if m.id == nil || m.oldValue == nil {
-		return v, errors.New("OldDeletedAt requires an ID field in the mutation")
-	}
-	oldValue, err := m.oldValue(ctx)
-	if err != nil {
-		return v, fmt.Errorf("querying old value for OldDeletedAt: %w", err)
-	}
-	return oldValue.DeletedAt, nil
-}
-
-// ClearDeletedAt clears the value of the "deleted_at" field.
-func (m *MessageRecordsMutation) ClearDeletedAt() {
-	m.deleted_at = nil
-	m.clearedFields[messagerecords.FieldDeletedAt] = struct{}{}
-}
-
-// DeletedAtCleared returns if the "deleted_at" field was cleared in this mutation.
-func (m *MessageRecordsMutation) DeletedAtCleared() bool {
-	_, ok := m.clearedFields[messagerecords.FieldDeletedAt]
-	return ok
-}
-
-// ResetDeletedAt resets all changes to the "deleted_at" field.
-func (m *MessageRecordsMutation) ResetDeletedAt() {
-	m.deleted_at = nil
-	delete(m.clearedFields, messagerecords.FieldDeletedAt)
-}
-
 // SetBotWxid sets the "bot_wxid" field.
 func (m *MessageRecordsMutation) SetBotWxid(s string) {
 	m.bot_wxid = &s
@@ -11137,7 +11087,7 @@ func (m *MessageRecordsMutation) Type() string {
 // order to get all numeric fields that were incremented/decremented, call
 // AddedFields().
 func (m *MessageRecordsMutation) Fields() []string {
-	fields := make([]string, 0, 17)
+	fields := make([]string, 0, 16)
 	if m.created_at != nil {
 		fields = append(fields, messagerecords.FieldCreatedAt)
 	}
@@ -11147,9 +11097,6 @@ func (m *MessageRecordsMutation) Fields() []string {
 	if m.status != nil {
 		fields = append(fields, messagerecords.FieldStatus)
 	}
-	if m.deleted_at != nil {
-		fields = append(fields, messagerecords.FieldDeletedAt)
-	}
 	if m.bot_wxid != nil {
 		fields = append(fields, messagerecords.FieldBotWxid)
 	}
@@ -11203,8 +11150,6 @@ func (m *MessageRecordsMutation) Field(name string) (ent.Value, bool) {
 		return m.UpdatedAt()
 	case messagerecords.FieldStatus:
 		return m.Status()
-	case messagerecords.FieldDeletedAt:
-		return m.DeletedAt()
 	case messagerecords.FieldBotWxid:
 		return m.BotWxid()
 	case messagerecords.FieldContactID:
@@ -11246,8 +11191,6 @@ func (m *MessageRecordsMutation) OldField(ctx context.Context, name string) (ent
 		return m.OldUpdatedAt(ctx)
 	case messagerecords.FieldStatus:
 		return m.OldStatus(ctx)
-	case messagerecords.FieldDeletedAt:
-		return m.OldDeletedAt(ctx)
 	case messagerecords.FieldBotWxid:
 		return m.OldBotWxid(ctx)
 	case messagerecords.FieldContactID:
@@ -11304,13 +11247,6 @@ func (m *MessageRecordsMutation) SetField(name string, value ent.Value) error {
 		}
 		m.SetStatus(v)
 		return nil
-	case messagerecords.FieldDeletedAt:
-		v, ok := value.(time.Time)
-		if !ok {
-			return fmt.Errorf("unexpected type %T for field %s", value, name)
-		}
-		m.SetDeletedAt(v)
-		return nil
 	case messagerecords.FieldBotWxid:
 		v, ok := value.(string)
 		if !ok {
@@ -11498,9 +11434,6 @@ func (m *MessageRecordsMutation) ClearedFields() []string {
 	if m.FieldCleared(messagerecords.FieldStatus) {
 		fields = append(fields, messagerecords.FieldStatus)
 	}
-	if m.FieldCleared(messagerecords.FieldDeletedAt) {
-		fields = append(fields, messagerecords.FieldDeletedAt)
-	}
 	if m.FieldCleared(messagerecords.FieldContactID) {
 		fields = append(fields, messagerecords.FieldContactID)
 	}
@@ -11536,9 +11469,6 @@ func (m *MessageRecordsMutation) ClearField(name string) error {
 	case messagerecords.FieldStatus:
 		m.ClearStatus()
 		return nil
-	case messagerecords.FieldDeletedAt:
-		m.ClearDeletedAt()
-		return nil
 	case messagerecords.FieldContactID:
 		m.ClearContactID()
 		return nil
@@ -11574,9 +11504,6 @@ func (m *MessageRecordsMutation) ResetField(name string) error {
 	case messagerecords.FieldStatus:
 		m.ResetStatus()
 		return nil
-	case messagerecords.FieldDeletedAt:
-		m.ResetDeletedAt()
-		return nil
 	case messagerecords.FieldBotWxid:
 		m.ResetBotWxid()
 		return nil

+ 0 - 4
ent/runtime/runtime.go

@@ -459,10 +459,6 @@ func init() {
 	// message.DefaultContent holds the default value on creation for the content field.
 	message.DefaultContent = messageDescContent.Default.(string)
 	messagerecordsMixin := schema.MessageRecords{}.Mixin()
-	messagerecordsMixinHooks2 := messagerecordsMixin[2].Hooks()
-	messagerecords.Hooks[0] = messagerecordsMixinHooks2[0]
-	messagerecordsMixinInters2 := messagerecordsMixin[2].Interceptors()
-	messagerecords.Interceptors[0] = messagerecordsMixinInters2[0]
 	messagerecordsMixinFields0 := messagerecordsMixin[0].Fields()
 	_ = messagerecordsMixinFields0
 	messagerecordsMixinFields1 := messagerecordsMixin[1].Fields()

+ 1 - 4
ent/schema/message_records.go

@@ -1,9 +1,6 @@
 package schema
 
 import (
-	"wechat-api/ent/custom_types"
-	"wechat-api/ent/schema/localmixin"
-
 	"entgo.io/ent"
 	"entgo.io/ent/dialect/entsql"
 	"entgo.io/ent/schema"
@@ -11,6 +8,7 @@ import (
 	"entgo.io/ent/schema/field"
 	"entgo.io/ent/schema/index"
 	"github.com/suyuan32/simple-admin-common/orm/ent/mixins"
+	"wechat-api/ent/custom_types"
 )
 
 type MessageRecords struct {
@@ -65,7 +63,6 @@ func (MessageRecords) Mixin() []ent.Mixin {
 	return []ent.Mixin{
 		mixins.IDMixin{},
 		mixins.StatusMixin{},
-		localmixin.SoftDeleteMixin{},
 	}
 }
 

+ 0 - 24
ent/set_not_nil.go

@@ -2168,30 +2168,6 @@ func (mr *MessageRecordsCreate) SetNotNilStatus(value *uint8) *MessageRecordsCre
 }
 
 // set field if value's pointer is not nil.
-func (mr *MessageRecordsUpdate) SetNotNilDeletedAt(value *time.Time) *MessageRecordsUpdate {
-	if value != nil {
-		return mr.SetDeletedAt(*value)
-	}
-	return mr
-}
-
-// set field if value's pointer is not nil.
-func (mr *MessageRecordsUpdateOne) SetNotNilDeletedAt(value *time.Time) *MessageRecordsUpdateOne {
-	if value != nil {
-		return mr.SetDeletedAt(*value)
-	}
-	return mr
-}
-
-// set field if value's pointer is not nil.
-func (mr *MessageRecordsCreate) SetNotNilDeletedAt(value *time.Time) *MessageRecordsCreate {
-	if value != nil {
-		return mr.SetDeletedAt(*value)
-	}
-	return mr
-}
-
-// set field if value's pointer is not nil.
 func (mr *MessageRecordsUpdate) SetNotNilBotWxid(value *string) *MessageRecordsUpdate {
 	if value != nil {
 		return mr.SetBotWxid(*value)

+ 44 - 0
internal/handler/label/get_label_batch_select_list_handler.go

@@ -0,0 +1,44 @@
+package label
+
+import (
+	"net/http"
+
+	"github.com/zeromicro/go-zero/rest/httpx"
+
+	"wechat-api/internal/logic/label"
+	"wechat-api/internal/svc"
+	"wechat-api/internal/types"
+)
+
+// swagger:route post /label/batch_select_list label GetLabelBatchSelectList
+//
+// Get label select list | 获取Label群发列表
+//
+// Get label select list | 获取Label群发列表
+//
+// Parameters:
+//  + name: body
+//    require: true
+//    in: body
+//    type: LabelListReq
+//
+// Responses:
+//  200: LabelBatchSelectListResp
+
+func GetLabelBatchSelectListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.LabelListReq
+		if err := httpx.Parse(r, &req, true); err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+			return
+		}
+
+		l := label.NewGetLabelBatchSelectListLogic(r.Context(), svcCtx)
+		resp, err := l.GetLabelBatchSelectList(&req)
+		if err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+		} else {
+			httpx.OkJsonCtx(r.Context(), w, resp)
+		}
+	}
+}

+ 5 - 0
internal/handler/routes.go

@@ -393,6 +393,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 				},
 				{
 					Method:  http.MethodPost,
+					Path:    "/label/batch_select_list",
+					Handler: label.GetLabelBatchSelectListHandler(serverCtx),
+				},
+				{
+					Method:  http.MethodPost,
 					Path:    "/label/contacts",
 					Handler: label.GetLabelContactsHandler(serverCtx),
 				},

+ 81 - 0
internal/logic/label/get_label_batch_select_list_logic.go

@@ -0,0 +1,81 @@
+package label
+
+import (
+	"context"
+	"fmt"
+	"github.com/suyuan32/simple-admin-common/msg/errormsg"
+	"wechat-api/ent/label"
+	"wechat-api/ent/predicate"
+	"wechat-api/internal/utils/dberrorhandler"
+
+	"wechat-api/internal/svc"
+	"wechat-api/internal/types"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type GetLabelBatchSelectListLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewGetLabelBatchSelectListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetLabelBatchSelectListLogic {
+	return &GetLabelBatchSelectListLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx}
+}
+
+func (l *GetLabelBatchSelectListLogic) GetLabelBatchSelectList(req *types.LabelListReq) (resp *types.LabelBatchSelectListResp, err error) {
+	organizationId := l.ctx.Value("organizationId").(uint64)
+	fmt.Printf("------------------------organizationId------------------------: %+v\n", organizationId)
+	var predicates []predicate.Label
+	predicates = append(predicates, label.OrganizationIDEQ(organizationId))
+	if req.Name != nil {
+		predicates = append(predicates, label.NameContains(*req.Name))
+	}
+	if req.From != nil {
+		predicates = append(predicates, label.FromEQ(*req.From))
+	}
+	if req.Mode != nil {
+		predicates = append(predicates, label.ModeEQ(*req.Mode))
+	}
+
+	data, err := l.svcCtx.DB.Label.Query().Where(predicates...).Page(l.ctx, req.Page, req.PageSize)
+
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
+	var allId uint64 = 0
+	allName := "全部"
+	resp = &types.LabelBatchSelectListResp{}
+	var contact []types.LabelSelectListInfo
+	contact = append(contact,
+		types.LabelSelectListInfo{
+			Value: &allId,
+			Label: &allName,
+		})
+	var group []types.LabelSelectListInfo
+	resp.Msg = errormsg.Success
+
+	for _, v := range data.List {
+		if v.Type == 1 {
+			contact = append(contact,
+				types.LabelSelectListInfo{
+					Value: &v.ID,
+					Label: &v.Name,
+				})
+		} else {
+			group = append(group,
+				types.LabelSelectListInfo{
+					Value: &v.ID,
+					Label: &v.Name,
+				})
+		}
+	}
+	resp.Data.Contact = contact
+	resp.Data.Group = group
+
+	return resp, nil
+}

+ 38 - 4
internal/logic/sop_task/sop_task_stop_logic.go

@@ -2,8 +2,10 @@ package sop_task
 
 import (
 	"context"
+	"fmt"
 	"github.com/suyuan32/simple-admin-common/msg/errormsg"
 	"wechat-api/ent/messagerecords"
+	"wechat-api/ent/sopstage"
 	"wechat-api/ent/soptask"
 	"wechat-api/internal/utils/dberrorhandler"
 
@@ -28,6 +30,7 @@ func NewSopTaskStopLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SopTa
 
 func (l *SopTaskStopLogic) SopTaskStop(req *types.IDReq) (resp *types.BaseMsgResp, err error) {
 	organizationId := l.ctx.Value("organizationId").(uint64)
+	isAdmin := l.ctx.Value("isAdmin").(bool)
 	// 开始事务
 	tx, err := l.svcCtx.DB.Tx(context.Background())
 	if err != nil {
@@ -48,9 +51,37 @@ func (l *SopTaskStopLogic) SopTaskStop(req *types.IDReq) (resp *types.BaseMsgRes
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
 
-	err = l.svcCtx.DB.SopTask.UpdateOneID(req.Id).
-		SetStatus(2).
-		Exec(l.ctx)
+	if isAdmin {
+		err = tx.SopTask.UpdateOneID(req.Id).
+			SetStatus(1).
+			Exec(l.ctx)
+		sourceInfo, err := l.svcCtx.DB.SopStage.Query().
+			Where(sopstage.TaskID(req.Id)).
+			WithStageNodes().
+			All(l.ctx)
+		fmt.Printf("------------------------sourceInfo------------------------: %+v\n", sourceInfo)
+		if err != nil {
+			return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+		}
+		for _, stage := range sourceInfo {
+			fmt.Printf("------------------------stage.ID------------------------: %+v\n", stage.ID)
+			_, err := tx.MessageRecords.Delete().Where(messagerecords.SourceIDEQ(stage.ID)).Exec(l.ctx)
+
+			if err != nil {
+				return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+			}
+			for _, node := range stage.Edges.StageNodes {
+				_, err := tx.MessageRecords.Delete().Where(messagerecords.SourceIDEQ(node.ID)).Exec(l.ctx)
+				if err != nil {
+					return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+				}
+			}
+		}
+	} else {
+		err = tx.SopTask.UpdateOneID(req.Id).
+			SetStatus(2).
+			Exec(l.ctx)
+	}
 
 	if err != nil {
 		_ = tx.Rollback()
@@ -70,6 +101,9 @@ func (l *SopTaskStopLogic) SopTaskStop(req *types.IDReq) (resp *types.BaseMsgRes
 			}
 		}
 	}
-
+	err = tx.Commit()
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
 	return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil
 }

+ 14 - 0
internal/types/types.go

@@ -1012,6 +1012,20 @@ type LabelSelectListResp struct {
 	Data []LabelSelectListInfo `json:"data"`
 }
 
+// The response data of label list | Label群发列表数据
+// swagger:model LabelBatchSelectListResp
+type LabelBatchSelectListResp struct {
+	BaseDataInfo
+	// Label list data | Label列表数据
+	Data LabelBatchSelectListData `json:"data"`
+}
+
+// The response data of label list | Label群发列表数据
+type LabelBatchSelectListData struct {
+	Contact []LabelSelectListInfo `json:"contact"`
+	Group   []LabelSelectListInfo `json:"group"`
+}
+
 // The response data of label list | Label列表数据
 // swagger:model LabelListResp
 type LabelListResp struct {