Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
huojiao2006 committed Aug 6, 2019
1 parent 6d19436 commit de0ba59
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 9 deletions.
3 changes: 2 additions & 1 deletion pkg/config/_config_product.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ type Config struct {
}

Websocket struct {
Service string `default:"op,ks"`
//Service string `default:"op,ks"`
Service string `default:"none"`
}
}

Expand Down
9 changes: 4 additions & 5 deletions pkg/config/_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,21 @@ type Config struct {
Mysql struct {
//Host string `default:"notification-db"`
//Port int `default:"3306"`
Host string `default:"192.168.0.6"`
Host string `default:"192.168.0.4"`
Port int `default:"13306"`
User string `default:"root"`
Password string `default:"password"`
Database string `default:"notification"`
Disable bool `default:"false"`
//LogMode bool `default:"false"`
LogMode bool `default:"false"`
LogMode bool `default:"true"`
}

Queue struct {
//Addr string `default:"redis://notification-redis:6379"`
Type string `default:"redis"`
Addr string `default:"redis://192.168.0.6:6379"`
Addr string `default:"redis://192.168.0.4:6379"`
//Type string `default:"etcd"`
//Addr string `default:"192.168.0.6:12379"`
//Addr string `default:"192.168.0.4:12379"`
}

Email struct {
Expand Down
7 changes: 6 additions & 1 deletion pkg/gerr/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,11 @@ var (
ErrorNotExistItemInList = ErrorMessage{
Name: "not_exist_item_in_list",
en: "not exist item in list [%s]",
zhCN: "列表中某些元素[%s]不存在",
zhCN: "列表[%s]中某些元素不存在",
}
ErrorAlreadyDeletedItemInList = ErrorMessage{
Name: "already_deleted_item_in_list",
en: "already deleted item in list [%s]",
zhCN: "列表[%s]中某些元素已经被删除",
}
)
2 changes: 1 addition & 1 deletion pkg/services/notification/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ func (s *Server) DeleteAddresses(ctx context.Context, req *pb.DeleteAddressesReq
err := rs.DeleteAddresses(ctx, addressIds)
if err != nil {
logger.Errorf(ctx, "Failed to delete addresses [%+v], %+v.", addressIds, err)
return nil, gerr.NewWithDetail(ctx, gerr.Internal, err, gerr.ErrorNotExistAddrInList, addressIds)
return nil, gerr.NewWithDetail(ctx, gerr.Internal, err, gerr.ErrorDeleteResourceFailed, addressIds)
}

logger.Debugf(ctx, "Delete addresses [%+v] successfully.", addressIds)
Expand Down
2 changes: 1 addition & 1 deletion pkg/services/notification/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ func TestDeleteAddresses(t *testing.T) {
defer cancel()

var addressIds []string
addressIds = append(addressIds, "addr-wRKQzOy7jAWZ")
addressIds = append(addressIds, "addr-nYY9L5L8gqMP")

var req = &pb.DeleteAddressesRequest{
AddressId: addressIds,
Expand Down
24 changes: 24 additions & 0 deletions pkg/services/notification/resource_control/address.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ func DeleteAddresses(ctx context.Context, addressIds []string) error {
return err
}

deltedAddrs, err := GetDeletedAddressesByIds(ctx, tx, addressIds)
if len(deltedAddrs) != 0 {
tx.Rollback()
logger.Errorf(ctx, "Failed to delete address [%s], some addresses to be delted has already been deleted, %+v.", addressIds, err)
err := gerr.NewWithDetail(ctx, gerr.InvalidArgument, err, gerr.ErrorAlreadyDeletedItemInList, strings.Trim(fmt.Sprint(addressIds), "[]"))
return err
}

err = tx.Table(models.TableAddress).Where(models.AddrColId+" in (?)", addressIds).Updates(map[string]interface{}{models.AddrColStatus: constants.StatusDeleted, models.AddrColStatusTime: time.Now()}).Error
if err != nil {
tx.Rollback()
Expand Down Expand Up @@ -148,3 +156,19 @@ func GetAddressesByIds(ctx context.Context, tx *gorm.DB, addressIds []string) ([
}
return addrs, nil
}

func GetDeletedAddressesByIds(ctx context.Context, tx *gorm.DB, addressIds []string) ([]*models.Address, error) {
var addrs []*models.Address
err := tx.Table(models.TableAddress).
Select("*").
Where(models.AddrColId+" in ( ? )", addressIds).
Where(models.AddrColStatus+" in ( '"+constants.StatusDeleted+"' )").
Set("gorm:query_option", "FOR UPDATE").
Scan(&addrs).Error
if err != nil {
tx.Rollback()
logger.Errorf(ctx, "Failed to get deleted address by ids [%+v], %+v.", addressIds, err)
return nil, err
}
return addrs, nil
}
24 changes: 24 additions & 0 deletions pkg/services/notification/resource_control/address_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,14 @@ func DeleteAddressLists(ctx context.Context, addressListIds []string) error {
return err
}

deltedAddrLists, err := GetDeletedAddressListsByIds(ctx, tx, addressListIds)
if len(deltedAddrLists) != 0 {
tx.Rollback()
logger.Errorf(ctx, "Failed to delete address list [%s], some addresses list to be delted has already been deleted, %+v.", addressListIds, err)
err := gerr.NewWithDetail(ctx, gerr.InvalidArgument, err, gerr.ErrorAlreadyDeletedItemInList, strings.Trim(fmt.Sprint(addressListIds), "[]"))
return err
}

err = tx.Table(models.TableAddressList).Where(models.AddrLsColId+" in (?)", addressListIds).Updates(map[string]interface{}{models.AddrLsColStatus: constants.StatusDeleted, models.AddrLsColStatusTime: time.Now()}).Error
if err != nil {
tx.Rollback()
Expand Down Expand Up @@ -187,3 +195,19 @@ func GetAddressListsByIds(ctx context.Context, tx *gorm.DB, addressListIds []str
}
return addrLists, nil
}

func GetDeletedAddressListsByIds(ctx context.Context, tx *gorm.DB, addressListIds []string) ([]*models.AddressList, error) {
var addrLists []*models.AddressList
err := tx.Table(models.TableAddressList).
Select("*").
Where(models.AddrLsColId+" in ( ? )", addressListIds).
Where(models.AddrColStatus+" in ( '"+constants.StatusDeleted+"' )").
Set("gorm:query_option", "FOR UPDATE").
Scan(&addrLists).Error
if err != nil {
tx.Rollback()
logger.Errorf(ctx, "Failed to get address_list by ids [%+v], %+v.", addrLists, err)
return nil, err
}
return addrLists, nil
}

0 comments on commit de0ba59

Please sign in to comment.