mirror of https://gitee.com/stylefeng/roses
【app】更新应用管理代码
parent
aa17fc3ccf
commit
9ffcfbbf9a
|
@ -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", "激活的应用不能被禁用");
|
||||
|
||||
/**
|
||||
* 错误编码
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package cn.stylefeng.roses.kernel.system.pojo.app.request;
|
||||
|
||||
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 lombok.Data;
|
||||
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;
|
||||
|
||||
/**
|
||||
|
@ -54,8 +54,19 @@ public class SysAppRequest extends BaseRequest {
|
|||
/**
|
||||
* 是否默认激活:Y-是,N-否,激活的应用下的菜单会在首页默认展开
|
||||
*/
|
||||
@NotBlank(message = "是否默认激活不能为空", groups = {add.class, edit.class})
|
||||
@FlagValue(message = "是否默认激活格式错误,正确格式应该Y或者N", groups = {add.class, edit.class})
|
||||
private String activeFlag;
|
||||
|
||||
/**
|
||||
* 状态:1-启用,2-禁用
|
||||
*/
|
||||
@NotNull(message = "状态为空", groups = {updateStatus.class})
|
||||
@StatusValue(groups = updateStatus.class)
|
||||
private Integer statusFlag;
|
||||
|
||||
/**
|
||||
* 设置为默认状态
|
||||
*/
|
||||
public @interface updateActiveFlag {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -50,6 +50,30 @@ public class SysAppController {
|
|||
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));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设为默认应用
|
||||
*
|
||||
* @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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -25,9 +25,9 @@ Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
|
|||
package cn.stylefeng.roses.kernel.app.modular.service;
|
||||
|
||||
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.system.pojo.app.request.SysAppRequest;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -57,6 +57,24 @@ public interface SysAppService extends IService<SysApp> {
|
|||
*/
|
||||
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);
|
||||
|
||||
/**
|
||||
* 设为默认应用
|
||||
*
|
||||
* @param sysAppParam 设为默认应用参数
|
||||
* @author fengshuonan
|
||||
* @date 2020/6/29 16:49
|
||||
*/
|
||||
void setAsDefault(SysAppRequest sysAppParam);
|
||||
|
||||
}
|
||||
|
|
|
@ -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.system.AppServiceApi;
|
||||
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.pojo.app.request.SysAppRequest;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
|
@ -43,11 +44,14 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
|
|||
@Override
|
||||
public void add(SysAppRequest sysAppRequest) {
|
||||
|
||||
// 检测是否有已经激活的应用,激活了就不能再设置激活了
|
||||
checkParamHaveActive(sysAppRequest, false);
|
||||
|
||||
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());
|
||||
|
@ -58,18 +62,51 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
|
|||
@Override
|
||||
public void edit(SysAppRequest sysAppRequest) {
|
||||
|
||||
// 检测是否有已经激活的应用,激活了就不能再设置激活了
|
||||
checkParamHaveActive(sysAppRequest, true);
|
||||
|
||||
SysApp sysApp = this.querySysApp(sysAppRequest);
|
||||
BeanUtil.copyProperties(sysAppRequest, sysApp);
|
||||
|
||||
//不能修改状态,用修改状态接口修改状态
|
||||
// 不能修改编码
|
||||
sysApp.setAppCode(null);
|
||||
|
||||
// 不能修改状态,修改状态接口修改状态
|
||||
sysApp.setStatusFlag(null);
|
||||
|
||||
// 不能修改激活,激活接口激活应用
|
||||
sysApp.setActiveFlag(null);
|
||||
|
||||
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
|
||||
public void delete(SysAppRequest sysAppRequest) {
|
||||
SysApp sysApp = this.querySysApp(sysAppRequest);
|
||||
|
@ -105,22 +142,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
|
|||
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
|
||||
public Set<SimpleDict> getAppsByAppCodes(Set<String> appCodes) {
|
||||
HashSet<SimpleDict> simpleDicts = new HashSet<>();
|
||||
|
@ -176,32 +197,6 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
|
|||
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
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue