handle duplicate data

Former-commit-id: 2a7eeec1404514253cf1998af092feaa2eda33fe
This commit is contained in:
Jake 2024-08-27 10:34:58 +08:00
parent 70cf3c9cce
commit c6c56da12b
4 changed files with 37 additions and 8 deletions

View File

@ -790,7 +790,14 @@ type (
CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"`
}
AdapterResp {
Data AdapterInfo `json:"data,omitempty"`
Id string `json:"id,omitempty" db:"id"`
Name string `json:"name,omitempty" db:"name"`
Type string `json:"type,omitempty" db:"type"`
ResourceType string `json:"resourceType,omitempty" db:"resource_type"`
Nickname string `json:"nickname,omitempty" db:"nickname"`
Version string `json:"version,omitempty" db:"version"`
Server string `json:"server,omitempty" db:"server"`
CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"`
}
AdapterListResp {
List []AdapterInfo `json:"list,omitempty"`

View File

@ -27,11 +27,14 @@ func NewCreateAdapterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Cre
func (l *CreateAdapterLogic) CreateAdapter(req *types.AdapterCreateReq) (resp *types.AdapterResp, err error) {
adapter := types.AdapterInfo{}
existAdapter := types.AdapterResp{}
resp = &types.AdapterResp{}
utils.Convert(req, &adapter)
//check name
exist := l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&types.AdapterInfo{}).Error
exist := l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&existAdapter).Error
if !errors.Is(exist, gorm.ErrRecordNotFound) {
return nil, errors.New("name already exists")
resp = &existAdapter
return resp, errors.New("name already exists")
}
//check type
var arr = [...]string{"0", "1", "2"}
@ -60,8 +63,10 @@ func (l *CreateAdapterLogic) CreateAdapter(req *types.AdapterCreateReq) (resp *t
adapter.CreateTime = time.Now().Format("2006-01-02 15:04:05")
result := l.svcCtx.DbEngin.Table("t_adapter").Create(&adapter)
if result.Error != nil {
return nil, result.Error
return resp, result.Error
}
return
_ = l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&existAdapter).Error
resp = &existAdapter
return resp, nil
}

View File

@ -722,7 +722,14 @@ type AdapterInfo struct {
}
type AdapterResp struct {
Data AdapterInfo `json:"data,omitempty"`
Id string `json:"id,omitempty" db:"id"`
Name string `json:"name,omitempty" db:"name"`
Type string `json:"type,omitempty" db:"type"`
ResourceType string `json:"resourceType,omitempty" db:"resource_type"`
Nickname string `json:"nickname,omitempty" db:"nickname"`
Version string `json:"version,omitempty" db:"version"`
Server string `json:"server,omitempty" db:"server"`
CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"`
}
type AdapterListResp struct {

View File

@ -78,9 +78,19 @@ func HttpResult(r *http.Request, w http.ResponseWriter, resp interface{}, err er
}
logx.WithContext(r.Context()).Errorf("【API-ERR】 : %+v ", err)
// 判断如果err内容为"name already exists"则将resp作为body.Data的信息返回
if errmsg == "name already exists" {
body := Body{
Code: 409,
Msg: errmsg,
TraceID: traceIDFromContext(r.Context()),
Data: resp,
}
httpx.WriteJson(w, http.StatusBadRequest, body)
} else {
httpx.WriteJson(w, http.StatusBadRequest, Error(errcode, errmsg, r.Context()))
}
}
}
// 授权的http方法