Skip to content

Commit

Permalink
[UPDATE] 更新字典逻辑
Browse files Browse the repository at this point in the history
1. 字典项由原来的独立存库变为直接保存 JSON 字符串
2. 删除字典项的增删改查入口以及数据库相关结构
3. 更新 Controller 及相关单元测试

Signed-off-by: Alan Yeh <[email protected]>
  • Loading branch information
alan-yeh committed Sep 30, 2024
1 parent 4a340d8 commit ba5ed04
Show file tree
Hide file tree
Showing 26 changed files with 409 additions and 2,284 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@

import central.bean.Page;
import central.data.system.Dictionary;
import central.data.system.DictionaryItem;
import central.starter.web.param.IdsParams;
import central.starter.web.query.IdQuery;
import central.studio.dashboard.controller.system.param.DictionaryItemParams;
import central.studio.dashboard.controller.system.param.DictionaryParams;
import central.studio.dashboard.controller.system.query.DictionaryPageQuery;
import central.studio.dashboard.logic.system.DictionaryLogic;
Expand All @@ -43,8 +41,6 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
* Dictionary Controller
* <p>
Expand Down Expand Up @@ -77,7 +73,8 @@ public interface Permissions {
/**
* 按条件分页查询字典列表
*
* @param query 查询
* @param query 查询
* @param tenant 租户标识
* @return 分页结果
*/
@GetMapping("/page")
Expand All @@ -88,7 +85,8 @@ public Page<Dictionary> page(@Validated DictionaryPageQuery query, @RequestHeade
/**
* 根据主键查询字典详情
*
* @param query 查询
* @param query 查询
* @param tenant 租户标识
* @return 详情
*/
@GetMapping("/details")
Expand All @@ -100,6 +98,7 @@ public Dictionary details(@Validated IdQuery<Dictionary> query, @RequestHeader(X
* 新增字典
*
* @param params 字典入参
* @param tenant 租户标识
* @return 新增后的字典
*/
@PostMapping
Expand All @@ -112,6 +111,7 @@ public Dictionary add(@RequestBody @Validated({Insert.class, Default.class}) Dic
*
* @param params 字典入参
* @param accountId 当前登录帐号
* @param tenant 租户标识
* @return 更新后字典数据
*/
@PutMapping
Expand All @@ -124,57 +124,11 @@ public Dictionary update(@RequestBody @Validated({Update.class, Default.class})
*
* @param params 待删除主键列表
* @param accountId 当前登录帐号
* @param tenant 租户标识
* @return 受影响数据行数
*/
@DeleteMapping
public long deleteByIds(@Validated IdsParams params, @RequestAttribute String accountId, @RequestHeader(XForwardedHeaders.TENANT) String tenant) {
public long delete(@Validated IdsParams params, @RequestAttribute String accountId, @RequestHeader(XForwardedHeaders.TENANT) String tenant) {
return this.logic.deleteByIds(params.getIds(), accountId, tenant);
}

/**
* 获取字典项列表
*
* @param query 查询
* @return 字典项列表
*/
@GetMapping("/items")
public List<DictionaryItem> getItems(@Validated IdQuery<Dictionary> query, @RequestHeader(XForwardedHeaders.TENANT) String tenant) {
return this.logic.getItems(query.getId(), tenant);
}

/**
* 新增字典项
*
* @param params 字典项入参
* @param accountId 当前登录帐号
* @return 新增后的字典项
*/
@PostMapping("/items")
public DictionaryItem addItem(@Validated DictionaryItemParams params, @RequestAttribute String accountId, @RequestHeader(XForwardedHeaders.TENANT) String tenant) {
return this.logic.insertItem(params.toInput(), accountId, tenant);
}

/**
* 更新字典项
*
* @param params 字典项入参
* @param accountId 当前登录帐号
* @return 更新后的字典项
*/
@PutMapping("/items")
public DictionaryItem updateItem(@Validated DictionaryItemParams params, @RequestAttribute String accountId, @RequestHeader(XForwardedHeaders.TENANT) String tenant) {
return this.logic.updateItem(params.toInput(), accountId, tenant);
}

/**
* 删除字典项
*
* @param params 待删除主键列表
* @param accountId 当前登录帐号
* @return 受影响数据行数
*/
@DeleteMapping("/items")
public long deleteItems(@Validated IdsParams params, @RequestAttribute String accountId, @RequestHeader(XForwardedHeaders.TENANT) String tenant) {
return this.logic.deleteItems(params.getIds(), accountId, tenant);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@

import central.data.system.DictionaryItemInput;
import central.validation.Label;
import central.validation.group.Insert;
import central.validation.group.Update;
import jakarta.validation.constraints.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
Expand All @@ -42,17 +43,6 @@
@Data
public class DictionaryItemParams {

@Label("主键")
@Null(groups = Insert.class)
@NotBlank(groups = Update.class)
@Size(min = 1, max = 32, groups = Insert.class)
private String id;

@Label("所属字典主键")
@NotBlank
@Size(min = 1, max = 32)
private String dictionaryId;

@Label("标识")
@NotBlank
@Size(min = 1, max = 32)
Expand All @@ -79,8 +69,6 @@ public class DictionaryItemParams {

public DictionaryItemInput toInput() {
return DictionaryItemInput.builder()
.id(this.getId())
.dictionaryId(this.getDictionaryId())
.code(this.getCode())
.name(this.getName())
.primary(this.getPrimary())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,16 @@
package central.studio.dashboard.controller.system.param;

import central.data.system.DictionaryInput;
import central.util.Listx;
import central.validation.Label;
import central.validation.group.Insert;
import central.validation.group.Update;
import jakarta.validation.Valid;
import jakarta.validation.constraints.*;
import lombok.Data;

import java.util.List;

/**
* Dictionary Input
* <p>
Expand Down Expand Up @@ -77,6 +81,11 @@ public class DictionaryParams {
@Size(max = 1024)
private String remark;

@Valid
@Label("字典项")
@NotEmpty
private List<DictionaryItemParams> items;

public DictionaryInput toInput() {
return DictionaryInput.builder()
.id(this.getId())
Expand All @@ -85,6 +94,7 @@ public DictionaryInput toInput() {
.name(this.getName())
.enabled(this.getEnabled())
.remark(this.getRemark())
.items(Listx.asStream(this.getItems()).map(DictionaryItemParams::toInput).toList())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@
import central.bean.Page;
import central.data.system.Dictionary;
import central.data.system.DictionaryInput;
import central.data.system.DictionaryItem;
import central.data.system.DictionaryItemInput;
import central.lang.Stringx;
import central.provider.graphql.system.DictionaryItemProvider;
import central.provider.graphql.system.DictionaryProvider;
import central.provider.scheduled.DataContext;
import central.provider.scheduled.fetcher.DataFetcherType;
Expand Down Expand Up @@ -64,9 +61,6 @@ public class DictionaryLogic {
@Setter(onMethod_ = @Autowired)
private DictionaryProvider provider;

@Setter(onMethod_ = @Autowired)
private DictionaryItemProvider itemProvider;

@Setter(onMethod_ = @Autowired)
private DataContext context;

Expand All @@ -86,13 +80,6 @@ private Orders<Dictionary> getDefaultOrders(@Nullable Orders<Dictionary> orders)
return Orders.of(Dictionary.class).asc(Dictionary::getCode);
}

private Orders<DictionaryItem> getDefaultItemOrders(@Nullable Orders<DictionaryItem> orders) {
if (Collectionx.isNullOrEmpty(orders)) {
return orders;
}
return Orders.of(DictionaryItem.class).asc(DictionaryItem::getOrder).asc(DictionaryItem::getCode);
}

/**
* 分页查询
*
Expand Down Expand Up @@ -159,55 +146,6 @@ public Dictionary update(@Nonnull @Validated({Update.class, Default.class}) Dict
* @return 受影响数据行数
*/
public long deleteByIds(@Nullable List<String> ids, @Nonnull String accountId, @Nonnull String tenant) {
// 删除对应的字典项
this.itemProvider.deleteBy(Conditions.of(DictionaryItem.class).in(DictionaryItem::getDictionaryId, ids));
return this.provider.deleteByIds(ids, tenant);
}

/**
* 根据字典主键获取字典项
*
* @param dictionaryId 字典主键
* @param tenant 租户标识
* @return 字典项
*/
public List<DictionaryItem> getItems(@Nonnull String dictionaryId, @Nonnull String tenant) {
return this.itemProvider.findBy(null, null, Conditions.of(DictionaryItem.class).eq(DictionaryItem::getDictionaryId, dictionaryId), this.getDefaultItemOrders(null), tenant);
}

/**
* 添加字典项
*
* @param input 字典项输入
* @param accountId 操作帐号主键
* @param tenant 租户标识
* @return 插入后的数据
*/
public DictionaryItem insertItem(@Nonnull @Validated({Insert.class, Default.class}) DictionaryItemInput input, @Nonnull String accountId, @Nonnull String tenant) {
return this.itemProvider.insert(input, accountId, tenant);
}

/**
* 更新字典项
*
* @param input 字典项输入
* @param accountId 操作帐号主键
* @param tenant 租户标识
* @return 更新后的数据
*/
public DictionaryItem updateItem(@Nonnull @Validated({Update.class, Default.class}) DictionaryItemInput input, @Nonnull String accountId, @Nonnull String tenant) {
return this.itemProvider.update(input, accountId, tenant);
}

/**
* 删除字典项
*
* @param ids 字典项主键
* @param accountId 操作帐号主键
* @param tenant 租户标识
* @return 受影响数据行数
*/
public long deleteItems(@Nullable List<String> ids, @Nonnull String accountId, @Nonnull String tenant) {
return this.itemProvider.deleteByIds(ids, tenant);
}
}
Loading

0 comments on commit ba5ed04

Please sign in to comment.