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"` CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"`
} }
AdapterResp { 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 { AdapterListResp {
List []AdapterInfo `json:"list,omitempty"` 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) { func (l *CreateAdapterLogic) CreateAdapter(req *types.AdapterCreateReq) (resp *types.AdapterResp, err error) {
adapter := types.AdapterInfo{} adapter := types.AdapterInfo{}
existAdapter := types.AdapterResp{}
resp = &types.AdapterResp{}
utils.Convert(req, &adapter) utils.Convert(req, &adapter)
//check name //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) { if !errors.Is(exist, gorm.ErrRecordNotFound) {
return nil, errors.New("name already exists") resp = &existAdapter
return resp, errors.New("name already exists")
} }
//check type //check type
var arr = [...]string{"0", "1", "2"} 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") adapter.CreateTime = time.Now().Format("2006-01-02 15:04:05")
result := l.svcCtx.DbEngin.Table("t_adapter").Create(&adapter) result := l.svcCtx.DbEngin.Table("t_adapter").Create(&adapter)
if result.Error != nil { 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 { 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 { 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) 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())) httpx.WriteJson(w, http.StatusBadRequest, Error(errcode, errmsg, r.Context()))
} }
}
} }
// 授权的http方法 // 授权的http方法