- 重构新京西活动,平台接口定为笼统的SyncAct,京平台支持添加,删除商品,暂不支持修改

This commit is contained in:
gazebo
2019-06-23 21:06:41 +08:00
parent ec891581ce
commit 594aa3e6b7
14 changed files with 565 additions and 534 deletions

View File

@@ -11,6 +11,11 @@ import (
"github.com/astaxie/beego/orm"
)
type KVUpdateItem struct {
Item interface{}
KVs map[string]interface{}
}
// 这里面的函数要求实体是IDCUDL的即含有ID, UpdatedAt, LastOperator, DeletedAt字段
func GetEntitiesByKV(db *DaoDB, item interface{}, conditions map[string]interface{}, isIncludeDeleted bool) (err error) {
@@ -57,6 +62,29 @@ func UpdateEntityByKV(db *DaoDB, item interface{}, kvs map[string]interface{}, c
return num, err
}
func BatchUpdateEntityByKV(db *DaoDB, items []*KVUpdateItem) (num int64, err error) {
if len(items) > 0 {
Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
Rollback(db)
if r != nil {
panic(r)
}
}
}()
for _, v := range items {
num2, err2 := UpdateEntityByKV(db, v.Item, v.KVs, nil)
if err = err2; err != nil {
return 0, err
}
num += num2
}
Commit(db)
}
return num, nil
}
func UpdateEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}) (num int64, err error) {
if conditions != nil && refutil.IsFieldExist(item, model.FieldDeletedAt) {
conditions = utils.MergeMaps(conditions, map[string]interface{}{