feat: completed development wecom message
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
|
||||
"lone-services/pkg/modelbase"
|
||||
"lone-services/pkg/utils"
|
||||
"lone-services/services/wecom/internal/dao"
|
||||
"lone-services/services/wecom/internal/model"
|
||||
)
|
||||
|
||||
// GetLatestReviewChange 按业务类型+业务ID取最新一条变更快照
|
||||
func GetLatestReviewChange(bizType uint8, bizId int64) (*dao.ReviewChange, error) {
|
||||
var change dao.ReviewChange
|
||||
err := model.ReviewChangeModel{}.Init().GetOne(modelbase.Params{
|
||||
Eq: map[string]string{
|
||||
"type": strconv.FormatUint(uint64(bizType), 10),
|
||||
"biz_id": strconv.FormatInt(bizId, 10),
|
||||
},
|
||||
Order: "id desc",
|
||||
}, &change)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if change.Id < 1 {
|
||||
return nil, fmt.Errorf("review change not found")
|
||||
}
|
||||
return &change, nil
|
||||
}
|
||||
|
||||
// DiffContent 拼成旧 diff 逻辑使用的 {"old":...,"new":...} JSON
|
||||
func DiffContent(change *dao.ReviewChange) string {
|
||||
before := change.BeforeData
|
||||
after := change.AfterData
|
||||
if before == utils.StringEmpty {
|
||||
before = "null"
|
||||
}
|
||||
if after == utils.StringEmpty {
|
||||
after = "null"
|
||||
}
|
||||
return fmt.Sprintf(`{"old":%s,"new":%s}`, before, after)
|
||||
}
|
||||
|
||||
// BizFieldFromChange 从 after/before JSON 中取展示字段(如 name、type_name)
|
||||
func BizFieldFromChange(change *dao.ReviewChange, field string) string {
|
||||
if change == nil || field == utils.StringEmpty {
|
||||
return utils.StringEmpty
|
||||
}
|
||||
for _, raw := range []string{change.AfterData, change.BeforeData} {
|
||||
if raw == utils.StringEmpty {
|
||||
continue
|
||||
}
|
||||
var m map[string]any
|
||||
if err := jsoniter.Unmarshal([]byte(raw), &m); err != nil {
|
||||
continue
|
||||
}
|
||||
if v, ok := m[field].(string); ok && v != utils.StringEmpty {
|
||||
return v
|
||||
}
|
||||
}
|
||||
return utils.StringEmpty
|
||||
}
|
||||
Reference in New Issue
Block a user