新增(移动)一些应该放在“管理”形成列表管理,而非放在“设置”形成单一配置的内容
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
package quant.rich.emoney.controller.manage;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import quant.rich.emoney.controller.common.BaseController;
|
||||
import quant.rich.emoney.entity.sqlite.ProxySetting;
|
||||
import quant.rich.emoney.exception.RException;
|
||||
import quant.rich.emoney.pojo.dto.LayPageReq;
|
||||
import quant.rich.emoney.pojo.dto.LayPageResp;
|
||||
import quant.rich.emoney.pojo.dto.R;
|
||||
import quant.rich.emoney.service.sqlite.ProxySettingService;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/admin/v1/manage/proxySetting")
|
||||
public class ProxySettingControllerV1 extends BaseController {
|
||||
|
||||
@Autowired
|
||||
ProxySettingService proxySettingService;
|
||||
|
||||
@GetMapping({"", "/", "/index"})
|
||||
public String index() {
|
||||
return "/admin/v1/manage/proxySetting/index";
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ResponseBody
|
||||
public LayPageResp<?> list(LayPageReq<ProxySetting> pageReq) {
|
||||
Page<ProxySetting> planPage = proxySettingService.page(pageReq);
|
||||
return new LayPageResp<>(planPage);
|
||||
}
|
||||
|
||||
@GetMapping("/getOne")
|
||||
@ResponseBody
|
||||
public R<?> getOne(String id) {
|
||||
|
||||
// 如果 planId 是空,说明可能希望新建一个 ProxySetting,需要返回默认实例化对象
|
||||
if (id == null) {
|
||||
return R.ok(new ProxySetting());
|
||||
}
|
||||
|
||||
// 否则从数据库取
|
||||
ProxySetting proxy = proxySettingService.getById(id);
|
||||
return R.judge(proxy != null, proxy, "无法找到对应 ID 的 ProxySetting");
|
||||
}
|
||||
|
||||
@PostMapping("/updateBool")
|
||||
@ResponseBody
|
||||
public R<?> updateBool(String id, String field, Boolean value) {
|
||||
TableInfo tableInfo = TableInfoHelper.getTableInfo(ProxySetting.class);
|
||||
try {
|
||||
Field declaredField = ProxySetting.class.getDeclaredField(field);
|
||||
|
||||
Optional<TableFieldInfo> fieldInfo = tableInfo.getFieldList().stream()
|
||||
.filter(f -> f.getProperty().equals(field))
|
||||
.findFirst();
|
||||
if (declaredField.getType().equals(Boolean.class)) {
|
||||
proxySettingService.update(
|
||||
new UpdateWrapper<ProxySetting>()
|
||||
.eq("id", id)
|
||||
.set(fieldInfo.get().getColumn(), value));
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
catch (Exception e) {}
|
||||
throw RException.badRequest();
|
||||
}
|
||||
|
||||
@PostMapping("/save")
|
||||
@ResponseBody
|
||||
public R<?> save(@RequestBody ProxySetting proxySetting) {
|
||||
if (!Objects.isNull(proxySetting.getId())) {
|
||||
proxySettingService.updateById(proxySetting);
|
||||
}
|
||||
else {
|
||||
proxySettingService.save(proxySetting.setId(null));
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
@ResponseBody
|
||||
public R<?> delete(String id) {
|
||||
return R.judge(proxySettingService.removeById(id), "删除失败,是否已删除?");
|
||||
}
|
||||
|
||||
@PostMapping("/batchOp")
|
||||
@ResponseBody
|
||||
public R<?> batchOp(
|
||||
@RequestParam(value="ids[]", required=true)
|
||||
String[] ids, ProxySettingBatchOp op) {
|
||||
if (Objects.isNull(ids) || ids.length == 0) {
|
||||
throw RException.badRequest("提供的计划 ID 不能为空");
|
||||
}
|
||||
List<String> idArray = Arrays.asList(ids);
|
||||
|
||||
if (op == null) {
|
||||
// op 为空是删除
|
||||
throw RException.badRequest("操作类型不能为空");
|
||||
}
|
||||
else if (ProxySettingBatchOp.DELETE == op) {
|
||||
return R.judge(
|
||||
proxySettingService.removeBatchByIds(idArray));
|
||||
}
|
||||
|
||||
LambdaUpdateWrapper<ProxySetting> uw = new LambdaUpdateWrapper<>();
|
||||
uw.in(ProxySetting::getId, idArray);
|
||||
|
||||
switch (op) {
|
||||
case CHECK:
|
||||
// TODO: 检查连通性
|
||||
break;
|
||||
case DISABLE_HTTPS_VERIFY:
|
||||
uw.set(ProxySetting::getIgnoreHttpsVerification, false);
|
||||
break;
|
||||
case ENABLE_HTTP_VERIFY:
|
||||
uw.set(ProxySetting::getIgnoreHttpsVerification, true);
|
||||
break;
|
||||
default:
|
||||
throw RException.badRequest("未知操作");
|
||||
}
|
||||
return R.judge(() -> proxySettingService.update(uw));
|
||||
}
|
||||
|
||||
private static enum ProxySettingBatchOp {
|
||||
DELETE,
|
||||
CHECK,
|
||||
DISABLE_HTTPS_VERIFY,
|
||||
ENABLE_HTTP_VERIFY
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user