正在显示
6 个修改的文件
包含
124 行增加
和
5 行删除
| 1 | +package query | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + | ||
| 6 | + "github.com/beego/beego/v2/core/validation" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type GetDictionaryByCodeQuery struct { | ||
| 10 | + // 字典编码 | ||
| 11 | + DictCodes []string `json:"dictCodes" valid:"Required"` | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +func (getDictionaryQuery *GetDictionaryByCodeQuery) Valid(validation *validation.Validation) { | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (getDictionaryQuery *GetDictionaryByCodeQuery) ValidateQuery() error { | ||
| 18 | + valid := validation.Validation{} | ||
| 19 | + b, err := valid.Valid(getDictionaryQuery) | ||
| 20 | + if err != nil { | ||
| 21 | + return err | ||
| 22 | + } | ||
| 23 | + if !b { | ||
| 24 | + for _, validErr := range valid.Errors { | ||
| 25 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
| 26 | + } | ||
| 27 | + } | ||
| 28 | + return nil | ||
| 29 | +} |
| @@ -253,6 +253,47 @@ func (dictionaryService *DictionaryService) UpdateDictionary(updateDictionaryCom | @@ -253,6 +253,47 @@ func (dictionaryService *DictionaryService) UpdateDictionary(updateDictionaryCom | ||
| 253 | } | 253 | } |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | +// 返回数据字典设置 | ||
| 257 | +func (dictionaryService *DictionaryService) GetDictionaryByCode(getDictionaryQuery *query.GetDictionaryByCodeQuery) (interface{}, error) { | ||
| 258 | + if err := getDictionaryQuery.ValidateQuery(); err != nil { | ||
| 259 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 260 | + } | ||
| 261 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 262 | + if err != nil { | ||
| 263 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 264 | + } | ||
| 265 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 266 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 267 | + } | ||
| 268 | + defer func() { | ||
| 269 | + transactionContext.RollbackTransaction() | ||
| 270 | + }() | ||
| 271 | + var dictionaryRepository domain.DictionaryRepository | ||
| 272 | + if value, err := factory.CreateDictionaryRepository(map[string]interface{}{ | ||
| 273 | + "transactionContext": transactionContext, | ||
| 274 | + }); err != nil { | ||
| 275 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 276 | + } else { | ||
| 277 | + dictionaryRepository = value | ||
| 278 | + } | ||
| 279 | + queryCondition := make(map[string]interface{}) | ||
| 280 | + if len(getDictionaryQuery.DictCodes) > 0 { | ||
| 281 | + queryCondition["dictCodeIn"] = getDictionaryQuery.DictCodes | ||
| 282 | + } | ||
| 283 | + _, dictionarys, err := dictionaryRepository.Find(queryCondition) | ||
| 284 | + if err != nil { | ||
| 285 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 286 | + } | ||
| 287 | + | ||
| 288 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 289 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 290 | + } | ||
| 291 | + return map[string]interface{}{ | ||
| 292 | + "dictionarys": dictionarys, | ||
| 293 | + }, nil | ||
| 294 | + | ||
| 295 | +} | ||
| 296 | + | ||
| 256 | func NewDictionaryService(options map[string]interface{}) *DictionaryService { | 297 | func NewDictionaryService(options map[string]interface{}) *DictionaryService { |
| 257 | newDictionaryService := &DictionaryService{} | 298 | newDictionaryService := &DictionaryService{} |
| 258 | return newDictionaryService | 299 | return newDictionaryService |
| @@ -118,6 +118,9 @@ func (repository *DictionaryRepository) Find(queryOptions map[string]interface{} | @@ -118,6 +118,9 @@ func (repository *DictionaryRepository) Find(queryOptions map[string]interface{} | ||
| 118 | query := sqlbuilder.BuildQuery(tx.Model(&dictionaryModels), queryOptions) | 118 | query := sqlbuilder.BuildQuery(tx.Model(&dictionaryModels), queryOptions) |
| 119 | query.SetOffsetAndLimit(20) | 119 | query.SetOffsetAndLimit(20) |
| 120 | query.SetOrderDirect("dictionary_id", "DESC") | 120 | query.SetOrderDirect("dictionary_id", "DESC") |
| 121 | + if v, ok := queryOptions["dictCodeIn"]; ok { | ||
| 122 | + query.Where("dict_code IN (?)", pg.Array(v)) | ||
| 123 | + } | ||
| 121 | if count, err := query.SelectAndCount(); err != nil { | 124 | if count, err := query.SelectAndCount(); err != nil { |
| 122 | return 0, dictionarys, err | 125 | return 0, dictionarys, err |
| 123 | } else { | 126 | } else { |
| @@ -48,9 +48,8 @@ func (controller *DictionaryController) ListDictionary() { | @@ -48,9 +48,8 @@ func (controller *DictionaryController) ListDictionary() { | ||
| 48 | 48 | ||
| 49 | func (controller *DictionaryController) GetDictionaryByCode() { | 49 | func (controller *DictionaryController) GetDictionaryByCode() { |
| 50 | dictionaryService := service.NewDictionaryService(nil) | 50 | dictionaryService := service.NewDictionaryService(nil) |
| 51 | - getDictionaryQuery := &query.GetDictionaryQuery{} | ||
| 52 | - dictionaryCode := controller.GetString(":dictionaryCode") | ||
| 53 | - getDictionaryQuery.DictCode = dictionaryCode | ||
| 54 | - data, err := dictionaryService.GetDictionary(getDictionaryQuery) | 51 | + getDictionaryQuery := &query.GetDictionaryByCodeQuery{} |
| 52 | + _ = controller.Unmarshal(getDictionaryQuery) | ||
| 53 | + data, err := dictionaryService.GetDictionaryByCode(getDictionaryQuery) | ||
| 55 | controller.Response(data, err) | 54 | controller.Response(data, err) |
| 56 | } | 55 | } |
| @@ -10,5 +10,5 @@ func init() { | @@ -10,5 +10,5 @@ func init() { | ||
| 10 | web.Router("/dictionarys/:dictionaryId", &controllers.DictionaryController{}, "Put:UpdateDictionary") | 10 | web.Router("/dictionarys/:dictionaryId", &controllers.DictionaryController{}, "Put:UpdateDictionary") |
| 11 | web.Router("/dictionarys/:dictionaryId", &controllers.DictionaryController{}, "Get:GetDictionary") | 11 | web.Router("/dictionarys/:dictionaryId", &controllers.DictionaryController{}, "Get:GetDictionary") |
| 12 | web.Router("/dictionarys/search", &controllers.DictionaryController{}, "Post:ListDictionary") | 12 | web.Router("/dictionarys/search", &controllers.DictionaryController{}, "Post:ListDictionary") |
| 13 | - web.Router("/dictionarys/dictionary-code/:dictionaryCode", &controllers.DictionaryController{}, "Get:GetDictionaryByCode") | 13 | + web.Router("/dictionarys/dictionary-code", &controllers.DictionaryController{}, "Post:GetDictionaryByCode") |
| 14 | } | 14 | } |
| 1 | +package dictionary | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "net/http" | ||
| 5 | + | ||
| 6 | + "github.com/gavv/httpexpect" | ||
| 7 | + "github.com/go-pg/pg/v10" | ||
| 8 | + . "github.com/onsi/ginkgo" | ||
| 9 | + . "github.com/onsi/gomega" | ||
| 10 | + pG "gitlab.fjmaimaimai.com/allied-creation/allied-creation-basic/pkg/infrastructure/pg" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +var _ = Describe("返回数据字典设置列表", func() { | ||
| 14 | + var dictionaryId int64 | ||
| 15 | + BeforeEach(func() { | ||
| 16 | + items := `[{"itemCode":"xxx","itemLabel":"123","itemValue":"abc","isShow":1,"sort":1}]` | ||
| 17 | + _, err := pG.DB.QueryOne( | ||
| 18 | + pg.Scan(&dictionaryId), | ||
| 19 | + "INSERT INTO dictionarys (dictionary_id, dict_code, dict_name, describe, is_show, dict_items) VALUES (?, ?, ?, ?, ?, ?) RETURNING dictionary_id", | ||
| 20 | + 10089, "testDictCode", "testDictName", "testDesc", 1, items) | ||
| 21 | + Expect(err).NotTo(HaveOccurred()) | ||
| 22 | + }) | ||
| 23 | + Describe("根据参数返回字典列表", func() { | ||
| 24 | + Context("传入有效的参数", func() { | ||
| 25 | + It("返回字典数据列表", func() { | ||
| 26 | + body := map[string]interface{}{ | ||
| 27 | + "dictCodes": []string{"testDictCode"}, | ||
| 28 | + } | ||
| 29 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 30 | + httpExpect.POST("/dictionarys/dictionary-code"). | ||
| 31 | + WithJSON(body). | ||
| 32 | + Expect(). | ||
| 33 | + Status(http.StatusOK). | ||
| 34 | + JSON(). | ||
| 35 | + Object(). | ||
| 36 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 37 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 38 | + ContainsKey("data").Value("data").Object(). | ||
| 39 | + ContainsKey("dictionarys").Value("dictionarys").Array() | ||
| 40 | + }) | ||
| 41 | + }) | ||
| 42 | + }) | ||
| 43 | + AfterEach(func() { | ||
| 44 | + _, err := pG.DB.Exec("DELETE FROM dictionarys WHERE true") | ||
| 45 | + Expect(err).NotTo(HaveOccurred()) | ||
| 46 | + }) | ||
| 47 | +}) |
-
请 注册 或 登录 后发表评论