【app】更新应用管理代码

pull/3/head
fengshuonan 2021-01-06 16:15:43 +08:00
parent aa17fc3ccf
commit 9ffcfbbf9a
5 changed files with 109 additions and 77 deletions

View File

@ -51,7 +51,12 @@ public enum AppExceptionEnum implements AbstractExceptionEnum {
/** /**
* *
*/ */
APP_CANNOT_DELETE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "75", "该应用下有菜单,无法删除"); APP_CANNOT_DELETE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "75", "该应用下有菜单,无法删除"),
/**
*
*/
CANT_DISABLE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SystemConstants.SYSTEM_EXCEPTION_STEP_CODE + "76", "激活的应用不能被禁用");
/** /**
* *

View File

@ -1,7 +1,7 @@
package cn.stylefeng.roses.kernel.system.pojo.app.request; package cn.stylefeng.roses.kernel.system.pojo.app.request;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.validator.validators.flag.FlagValue; import cn.stylefeng.roses.kernel.validator.validators.status.StatusValue;
import cn.stylefeng.roses.kernel.validator.validators.unique.TableUniqueValue; import cn.stylefeng.roses.kernel.validator.validators.unique.TableUniqueValue;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -22,7 +22,7 @@ public class SysAppRequest extends BaseRequest {
/** /**
* *
*/ */
@NotNull(message = "appId不能为空", groups = {edit.class, delete.class, detail.class}) @NotNull(message = "appId不能为空", groups = {edit.class, delete.class, detail.class, updateActiveFlag.class, updateStatus.class})
private Long appId; private Long appId;
/** /**
@ -54,8 +54,19 @@ public class SysAppRequest extends BaseRequest {
/** /**
* Y-N- * Y-N-
*/ */
@NotBlank(message = "是否默认激活不能为空", groups = {add.class, edit.class})
@FlagValue(message = "是否默认激活格式错误正确格式应该Y或者N", groups = {add.class, edit.class})
private String activeFlag; private String activeFlag;
/**
* 1-2-
*/
@NotNull(message = "状态为空", groups = {updateStatus.class})
@StatusValue(groups = updateStatus.class)
private Integer statusFlag;
/**
*
*/
public @interface updateActiveFlag {
}
} }

View File

@ -50,6 +50,30 @@ public class SysAppController {
return new SuccessResponseData(); return new SuccessResponseData();
} }
/**
*
*
* @author fengshuonan
* @date 2020/6/29 16:49
*/
@PostResource(name = "设为默认应用", path = "/sysApp/updateActiveFlag")
public ResponseData setAsDefault(@RequestBody @Validated(SysAppRequest.updateActiveFlag.class) SysAppRequest sysAppParam) {
sysAppService.updateActiveFlag(sysAppParam);
return new SuccessResponseData();
}
/**
*
*
* @author fengshuonan
* @date 2020/6/29 16:49
*/
@PostResource(name = "修改应用状态", path = "/sysApp/updateStatus")
public ResponseData updateStatus(@RequestBody @Validated(SysAppRequest.updateStatus.class) SysAppRequest sysAppParam) {
sysAppService.updateStatus(sysAppParam);
return new SuccessResponseData();
}
/** /**
* *
* *
@ -95,16 +119,4 @@ public class SysAppController {
return new SuccessResponseData(sysAppService.list(sysAppParam)); return new SuccessResponseData(sysAppService.list(sysAppParam));
} }
/**
*
*
* @author fengshuonan
* @date 2020/6/29 16:49
*/
@PostResource(name = "设为默认应用", path = "/sysApp/setAsDefault")
public ResponseData setAsDefault(@RequestBody @Validated(SysAppRequest.detail.class) SysAppRequest sysAppParam) {
sysAppService.setAsDefault(sysAppParam);
return new SuccessResponseData();
}
} }

View File

@ -25,9 +25,9 @@ Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
package cn.stylefeng.roses.kernel.app.modular.service; package cn.stylefeng.roses.kernel.app.modular.service;
import cn.stylefeng.roses.kernel.app.modular.entity.SysApp; import cn.stylefeng.roses.kernel.app.modular.entity.SysApp;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.system.pojo.app.request.SysAppRequest; import cn.stylefeng.roses.kernel.system.pojo.app.request.SysAppRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
@ -57,6 +57,24 @@ public interface SysAppService extends IService<SysApp> {
*/ */
void edit(SysAppRequest sysAppParam); void edit(SysAppRequest sysAppParam);
/**
*
*
* @param sysAppParam
* @author fengshuonan
* @date 2020/6/29 16:49
*/
void updateActiveFlag(SysAppRequest sysAppParam);
/**
*
*
* @param sysAppParam
* @author fengshuonan
* @date 2021/1/6 14:30
*/
void updateStatus(SysAppRequest sysAppParam);
/** /**
* *
* *
@ -96,13 +114,4 @@ public interface SysAppService extends IService<SysApp> {
*/ */
List<SysApp> list(SysAppRequest sysAppParam); List<SysApp> list(SysAppRequest sysAppParam);
/**
*
*
* @param sysAppParam
* @author fengshuonan
* @date 2020/6/29 16:49
*/
void setAsDefault(SysAppRequest sysAppParam);
} }

View File

@ -14,6 +14,7 @@ import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict; import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
import cn.stylefeng.roses.kernel.system.AppServiceApi; import cn.stylefeng.roses.kernel.system.AppServiceApi;
import cn.stylefeng.roses.kernel.system.MenuServiceApi; import cn.stylefeng.roses.kernel.system.MenuServiceApi;
import cn.stylefeng.roses.kernel.system.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.exception.enums.AppExceptionEnum; import cn.stylefeng.roses.kernel.system.exception.enums.AppExceptionEnum;
import cn.stylefeng.roses.kernel.system.pojo.app.request.SysAppRequest; import cn.stylefeng.roses.kernel.system.pojo.app.request.SysAppRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -43,11 +44,14 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
@Override @Override
public void add(SysAppRequest sysAppRequest) { public void add(SysAppRequest sysAppRequest) {
// 检测是否有已经激活的应用,激活了就不能再设置激活了
checkParamHaveActive(sysAppRequest, false);
SysApp sysApp = new SysApp(); SysApp sysApp = new SysApp();
BeanUtil.copyProperties(sysAppRequest, sysApp);
// 设置名称和编码
sysApp.setAppName(sysAppRequest.getAppName());
sysApp.setAppCode(sysAppRequest.getAppCode());
// 默认不激活
sysApp.setActiveFlag(YesOrNotEnum.N.getCode());
// 设为启用 // 设为启用
sysApp.setStatusFlag(StatusEnum.ENABLE.getCode()); sysApp.setStatusFlag(StatusEnum.ENABLE.getCode());
@ -58,18 +62,51 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
@Override @Override
public void edit(SysAppRequest sysAppRequest) { public void edit(SysAppRequest sysAppRequest) {
// 检测是否有已经激活的应用,激活了就不能再设置激活了
checkParamHaveActive(sysAppRequest, true);
SysApp sysApp = this.querySysApp(sysAppRequest); SysApp sysApp = this.querySysApp(sysAppRequest);
BeanUtil.copyProperties(sysAppRequest, sysApp); BeanUtil.copyProperties(sysAppRequest, sysApp);
//不能修改状态,用修改状态接口修改状态 // 不能修改编码
sysApp.setAppCode(null);
// 不能修改状态,修改状态接口修改状态
sysApp.setStatusFlag(null); sysApp.setStatusFlag(null);
// 不能修改激活,激活接口激活应用
sysApp.setActiveFlag(null);
this.updateById(sysApp); this.updateById(sysApp);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void updateActiveFlag(SysAppRequest sysAppRequest) {
SysApp currentApp = this.querySysApp(sysAppRequest);
// 所有已激活的改为未激活
LambdaUpdateWrapper<SysApp> sysAppLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sysAppLambdaUpdateWrapper.set(SysApp::getActiveFlag, YesOrNotEnum.N.getCode());
sysAppLambdaUpdateWrapper.eq(SysApp::getActiveFlag, YesOrNotEnum.Y.getCode());
this.update(sysAppLambdaUpdateWrapper);
// 当前的设置为已激活
currentApp.setActiveFlag(YesOrNotEnum.Y.getCode());
this.updateById(currentApp);
}
@Override
public void updateStatus(SysAppRequest sysAppParam) {
SysApp currentApp = this.querySysApp(sysAppParam);
// 激活状态的不能被禁用
if (YesOrNotEnum.Y.getCode().equals(currentApp.getActiveFlag())
&& StatusEnum.DISABLE.getCode().equals(sysAppParam.getStatusFlag())) {
throw new SystemModularException(AppExceptionEnum.CANT_DISABLE);
}
currentApp.setStatusFlag(sysAppParam.getStatusFlag());
this.updateById(currentApp);
}
@Override @Override
public void delete(SysAppRequest sysAppRequest) { public void delete(SysAppRequest sysAppRequest) {
SysApp sysApp = this.querySysApp(sysAppRequest); SysApp sysApp = this.querySysApp(sysAppRequest);
@ -105,22 +142,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
return this.list(wrapper); return this.list(wrapper);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void setAsDefault(SysAppRequest sysAppRequest) {
SysApp currentApp = this.querySysApp(sysAppRequest);
// 所有已激活的改为未激活
LambdaUpdateWrapper<SysApp> sysAppLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sysAppLambdaUpdateWrapper.set(SysApp::getActiveFlag, YesOrNotEnum.N.getCode());
sysAppLambdaUpdateWrapper.eq(SysApp::getActiveFlag, YesOrNotEnum.Y.getCode());
this.update(sysAppLambdaUpdateWrapper);
// 当前的设置为已激活
currentApp.setActiveFlag(YesOrNotEnum.Y.getCode());
this.updateById(currentApp);
}
@Override @Override
public Set<SimpleDict> getAppsByAppCodes(Set<String> appCodes) { public Set<SimpleDict> getAppsByAppCodes(Set<String> appCodes) {
HashSet<SimpleDict> simpleDicts = new HashSet<>(); HashSet<SimpleDict> simpleDicts = new HashSet<>();
@ -176,32 +197,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
return sysApp; return sysApp;
} }
/**
*
*
* @author fengshuonan
* @date 2020/11/24 21:29
*/
private void checkParamHaveActive(SysAppRequest sysAppRequest, boolean excludeSelf) {
// 查询激活状态有无已经有Y的
LambdaQueryWrapper<SysApp> appQueryWrapperByActive = new LambdaQueryWrapper<>();
appQueryWrapperByActive.eq(SysApp::getActiveFlag, YesOrNotEnum.Y.getCode())
.eq(SysApp::getDelFlag, YesOrNotEnum.N.getCode());
// 排除自己
if (excludeSelf) {
appQueryWrapperByActive.ne(SysApp::getAppId, sysAppRequest.getAppId());
}
int countByActive = this.count(appQueryWrapperByActive);
// 只判断激活状态为Y时候数量是否大于1了
if (countByActive >= 1 && YesOrNotEnum.Y.getCode().equals(sysAppRequest.getActiveFlag())) {
throw new ServiceException(AppExceptionEnum.APP_ACTIVE_REPEAT);
}
}
/** /**
* wrapper * wrapper
* *