@@ -34,7 +34,7 @@ public class InfoBackQueryParam extends QueryParam { | |||
private Long id; | |||
@ApiModelProperty(value = "外键id") | |||
private String foreignId; | |||
private Long infoId; | |||
@ApiModelProperty(value = "链接名称") | |||
private String reason; |
@@ -64,6 +64,9 @@ public class InfoContentAddQueryParam extends QueryParam { | |||
@ApiModelProperty(value = "排序") | |||
private Integer sort; | |||
@ApiModelProperty(value = "保持類型 0 保存 1保持提交") | |||
private Integer saveType; | |||
/** | |||
* 信息详情 |
@@ -38,7 +38,6 @@ public class SysRoleQueryParam extends QueryParam { | |||
private String name; | |||
@ApiModelProperty(value = "角色唯一编码") | |||
@NotBlank(message = "角色编码不能为空") | |||
private String code; | |||
@@ -26,7 +26,7 @@ public class InfoBackQueryVo implements Serializable { | |||
private Long id; | |||
@ApiModelProperty(value = "外键id") | |||
private String foreignId; | |||
private Long infoId; | |||
@ApiModelProperty(value = "链接名称") | |||
private String reason; |
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.params.QueryParam; | |||
import com.xdf.creative.module.entity.InfoAttachment; | |||
import com.xdf.creative.module.entity.InfoBack; | |||
import com.xdf.creative.module.entity.InfoDetail; | |||
import com.xdf.creative.module.entity.InfoUrl; | |||
import io.swagger.annotations.ApiModel; | |||
@@ -70,12 +71,18 @@ public class InfoContentAllQueryVo extends QueryParam { | |||
@ApiModelProperty(value = "初审人员") | |||
private Long firstAuditUser; | |||
@ApiModelProperty(value = "初审人员姓名") | |||
private String firstAuditUserName; | |||
@ApiModelProperty(value = "初审时间") | |||
private Date firstAuditTime; | |||
@ApiModelProperty(value = "终审人员") | |||
private Long finalAuditUser; | |||
@ApiModelProperty(value = "终审人员姓名") | |||
private String finalAuditUserName; | |||
@ApiModelProperty(value = "终审时间") | |||
private Date finalAuditTime; | |||
@@ -94,11 +101,21 @@ public class InfoContentAllQueryVo extends QueryParam { | |||
@ApiModelProperty(value = "逻辑删除,0:未删除,1:已删除") | |||
private Integer deleted; | |||
/** | |||
* 类型名称 | |||
*/ | |||
private List<String> typeNameArr; | |||
/** | |||
* 信息详情 | |||
*/ | |||
private InfoDetail infoDetail; | |||
/** | |||
* 信息退回 | |||
*/ | |||
private InfoBack infoBack; | |||
/** | |||
* 附件列表 | |||
*/ | |||
@@ -108,4 +125,8 @@ public class InfoContentAllQueryVo extends QueryParam { | |||
* url列表 | |||
*/ | |||
private List<InfoUrl> urlList; | |||
/** | |||
* 退回 | |||
*/ | |||
} |
@@ -70,4 +70,14 @@ public class InfoContentBackSearchQueryVo implements Serializable { | |||
@ApiModelProperty(value = "上下状态 0 下线 1上线") | |||
private Integer onlineType; | |||
/** | |||
* 退回内容 | |||
*/ | |||
private String reason; | |||
/** | |||
* 退回时间 | |||
*/ | |||
private String backTime; | |||
} |
@@ -1,12 +1,15 @@ | |||
package com.xdf.creative.base.vo.creative; | |||
import com.baomidou.mybatisplus.annotation.TableField; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.experimental.Accessors; | |||
import java.io.Serializable; | |||
import java.util.ArrayList; | |||
import java.util.Date; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
@@ -49,4 +52,16 @@ public class InfoTypeQueryVo implements Serializable { | |||
@ApiModelProperty(value = "创建用户") | |||
private Long createUserId; | |||
/** | |||
* 用于构造树 | |||
*/ | |||
@TableField(exist = false) | |||
protected List<InfoTypeQueryVo> children = new ArrayList<InfoTypeQueryVo>(); | |||
@TableField(exist = false) | |||
protected Boolean leaf; | |||
@TableField(exist = false) | |||
protected Boolean checked; | |||
} |
@@ -8,6 +8,7 @@ | |||
package com.xdf.creative.config.xss; | |||
import com.xdf.creative.util.XssUtil; | |||
import org.apache.commons.io.IOUtils; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.springframework.http.HttpHeaders; | |||
@@ -51,6 +52,8 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { | |||
return super.getInputStream(); | |||
} | |||
//xss过滤 | |||
json = xssEncode(json); | |||
final ByteArrayInputStream bis = new ByteArrayInputStream(json.getBytes("utf-8")); | |||
@@ -123,7 +126,8 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { | |||
} | |||
private String xssEncode(String input) { | |||
return htmlFilter.filter(input); | |||
//return htmlFilter.filter(input); | |||
return XssUtil.stripSqlXss(input); | |||
} | |||
/** |
@@ -9,15 +9,25 @@ import lombok.Getter; | |||
@JsonFormat(shape = JsonFormat.Shape.OBJECT) | |||
public enum ServiceFileDirEnum { | |||
//0 banner 1 动态新闻 2活动 3专项资金 4政策导航 5 其他 | |||
SERVICE_FILE_DIR_PUBLIC_BANNER(0, "banner"), | |||
SERVICE_FILE_DIR_PUBLIC_BANNER(1, "banner"), | |||
//信息发布文件 | |||
SERVICE_FILE_DIR_PUBLIC_DYNAMIC(1, "dynamic"), | |||
SERVICE_FILE_DIR_PUBLIC_NOTICE(2, "notice"), | |||
//信息发布文件 | |||
SERVICE_FILE_DIR_PUBLIC_DYNAMIC(3, "dynamic"), | |||
//区划信息 | |||
SERVICE_FILE_DIR_PUBLIC_DIVISION(7, "division"), | |||
//园区信息 | |||
SERVICE_FILE_DIR_PUBLIC_PARK(8, "park"), | |||
//活动发布图片 | |||
SERVICE_FILE_DIR_PUBLIC_ACTIVITY(2, "activity"), | |||
//专项资金 | |||
SERVICE_FILE_DIR_SUPPORT(3, "support"), | |||
SERVICE_FILE_DIR_PUBLIC_ACTIVITY(9, "activity"), | |||
//文化速递 | |||
SERVICE_FILE_DIR_PUBLIC_EXPRESS(13, "express"), | |||
//政策导航 | |||
SERVICE_FILE_DIR_POLICY(4, "policy "), | |||
SERVICE_FILE_DIR_POLICY(14, "policy "), | |||
//他山之石 | |||
SERVICE_FILE_DIR_STONE(19, "stone"), | |||
//专项资金 | |||
SERVICE_FILE_DIR_SUPPORT(22, "support"), | |||
//其他 | |||
SERVICE_FILE_DIR_OTHER(5, "other"); | |||
@@ -1,5 +1,6 @@ | |||
package com.xdf.creative.module.controller; | |||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
import com.xdf.creative.base.controller.BaseController; | |||
import com.xdf.creative.base.params.IdParam; | |||
import com.xdf.creative.base.params.creative.InfoBackQueryParam; | |||
@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.web.bind.annotation.RestController; | |||
import javax.validation.Valid; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
@@ -36,6 +38,22 @@ public class InfoBackController extends BaseController { | |||
@Autowired | |||
private InfoBackService infoBackService; | |||
/** | |||
* 获取信息最新退回信息 | |||
*/ | |||
@PostMapping("/getInfoBack") | |||
@ApiOperation(value = "获取InfoBack对象详情", notes = "查看信息退回", response = InfoBackQueryVo.class) | |||
public ApiResult getInfoBack(@Valid @RequestBody IdParam idParam) throws Exception { | |||
List<InfoBack> infoBackList = infoBackService.list(new QueryWrapper<InfoBack>(). eq("info_id",idParam.getId()).orderByDesc("back_time")); | |||
if(infoBackList.size()>0){ | |||
return ApiResult.ok(infoBackList.get(0)); | |||
}else{ | |||
return ApiResult.ok(); | |||
} | |||
} | |||
/** | |||
* 添加信息退回 | |||
*/ | |||
@@ -71,7 +89,7 @@ public class InfoBackController extends BaseController { | |||
*/ | |||
@PostMapping("/info") | |||
@ApiOperation(value = "获取InfoBack对象详情", notes = "查看信息退回", response = InfoBackQueryVo.class) | |||
public ApiResult<InfoBackQueryVo> getInfoBack(@Valid @RequestBody IdParam idParam) throws Exception { | |||
public ApiResult<InfoBackQueryVo> info(@Valid @RequestBody IdParam idParam) throws Exception { | |||
InfoBackQueryVo infoBackQueryVo = infoBackService.getInfoBackById(idParam.getId()); | |||
return ApiResult.ok(infoBackQueryVo); | |||
} |
@@ -9,6 +9,8 @@ import com.xdf.creative.module.service.InfoTypeService; | |||
import com.xdf.creative.support.aop.OperateLogger; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import com.xdf.creative.util.tree.TreeConfig; | |||
import com.xdf.creative.util.tree.Utils; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import lombok.extern.slf4j.Slf4j; | |||
@@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.web.bind.annotation.RestController; | |||
import javax.validation.Valid; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
@@ -59,6 +62,19 @@ public class InfoTypeController extends BaseController { | |||
/** | |||
* 栏目类型Tree列表 | |||
*/ | |||
@PostMapping("/getInfoTypeTreeList") | |||
@ApiOperation(value = "获取栏目类型Tree列表", notes = "栏目类型Tree列表", response = InfoTypeQueryVo.class) | |||
public ApiResult getInfoTypeTreeList() throws Exception { | |||
List<Object> list =infoTypeService.getInfoTypeTreeList(); | |||
TreeConfig config = new TreeConfig("typeId", "typeParentId", "typeParentId", "0", ""); | |||
return ApiResult.ok(Utils.tree(list, config)); | |||
} | |||
/** |
@@ -6,6 +6,7 @@ import com.xdf.creative.base.params.IdParam; | |||
import com.xdf.creative.base.params.creative.SysPermissionQueryParam; | |||
import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | |||
import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | |||
import com.xdf.creative.module.entity.InfoType; | |||
import com.xdf.creative.module.entity.SysPermission; | |||
import com.xdf.creative.module.service.SysPermissionService; | |||
import com.xdf.creative.util.page.ApiResult; |
@@ -13,6 +13,7 @@ import com.xdf.creative.shiro.jwt.JwtUtil; | |||
import com.xdf.creative.support.aop.AccountLogger; | |||
import com.xdf.creative.support.aop.OperateLogger; | |||
import com.xdf.creative.support.auth.LoginParam; | |||
import com.xdf.creative.support.auth.LoginRefreshParam; | |||
import com.xdf.creative.support.auth.LoginSysUserTokenVo; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
@@ -61,6 +62,16 @@ public class SysUserController extends BaseController { | |||
return ApiResult.ok(loginSysUserTokenVo, "登陆成功"); | |||
} | |||
@PostMapping("/refresh") | |||
@ApiOperation(value = "登陆", notes = "系统用户登陆", response = ApiResult.class) | |||
public ApiResult refresh(@Valid @RequestBody LoginRefreshParam loginRefreshParam, HttpServletResponse response) throws Exception { | |||
return sysUserService.refresh(loginRefreshParam); | |||
} | |||
/** | |||
* 用户登出 | |||
* |
@@ -32,7 +32,7 @@ public class InfoBack extends BaseEntity { | |||
private Long id; | |||
@ApiModelProperty(value = "外键id") | |||
private String foreignId; | |||
private Long infoId; | |||
@ApiModelProperty(value = "链接名称") | |||
private String reason; |
@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param; | |||
import org.springframework.stereotype.Repository; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
@@ -39,4 +40,12 @@ public interface InfoTypeMapper extends BaseMapper<InfoType> { | |||
*/ | |||
IPage<InfoTypeQueryVo> getInfoTypePageList(@Param("page") Page page, @Param("param") InfoTypeQueryParam infoTypeQueryParam); | |||
/** | |||
* 获取类型资源树 | |||
* | |||
* @return | |||
* @throws Exception | |||
*/ | |||
List<Object> getInfoTypeTreeList() throws Exception; | |||
} |
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.SysPermissionQueryParam; | |||
import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | |||
import com.xdf.creative.module.entity.InfoType; | |||
import com.xdf.creative.module.entity.SysPermission; | |||
import org.apache.ibatis.annotations.Param; | |||
import org.springframework.stereotype.Repository; |
@@ -8,6 +8,7 @@ import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
@@ -32,6 +33,17 @@ public interface InfoTypeService extends BaseService<InfoType> { | |||
*/ | |||
InfoTypeQueryVo getInfoTypeById(Serializable id) throws Exception; | |||
/** | |||
* 获取类型资源树 | |||
* | |||
* @return | |||
* @throws Exception | |||
*/ | |||
List<Object> getInfoTypeTreeList() throws Exception; | |||
/** | |||
* 获取分页对象 | |||
* |
@@ -6,6 +6,7 @@ import com.xdf.creative.base.params.creative.SysPermissionQueryParam; | |||
import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | |||
import com.xdf.creative.base.service.BaseService; | |||
import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | |||
import com.xdf.creative.module.entity.InfoType; | |||
import com.xdf.creative.module.entity.SysPermission; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; |
@@ -10,6 +10,7 @@ import com.xdf.creative.base.vo.creative.SysUserInfoQueryVo; | |||
import com.xdf.creative.base.vo.creative.SysUserQueryVo; | |||
import com.xdf.creative.module.entity.SysUser; | |||
import com.xdf.creative.support.auth.LoginParam; | |||
import com.xdf.creative.support.auth.LoginRefreshParam; | |||
import com.xdf.creative.support.auth.LoginSysUserTokenVo; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
@@ -36,6 +37,15 @@ public interface SysUserService extends BaseService<SysUser> { | |||
*/ | |||
LoginSysUserTokenVo login(LoginParam loginParam) throws Exception; | |||
/** | |||
* 刷新token | |||
* @param loginRefreshParam | |||
* @return | |||
* @throws Exception | |||
*/ | |||
ApiResult refresh(LoginRefreshParam loginRefreshParam) throws Exception; | |||
/** | |||
* 添加用户 | |||
* @return |
@@ -21,8 +21,10 @@ import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.Serializable; | |||
import java.util.ArrayList; | |||
import java.util.Date; | |||
import java.util.List; | |||
import java.util.stream.Collectors; | |||
/** | |||
@@ -48,6 +50,10 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
private InfoUrlService infoUrlService; | |||
@Autowired | |||
private InfoBackService infoBackService; | |||
@Autowired | |||
private InfoTypeService infoTypeService; | |||
@Autowired | |||
private SysUserService sysUserService; | |||
/** | |||
* t添加信息内容 | |||
@@ -69,7 +75,14 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
} | |||
infoContent.setCreateUser(getUserId()); | |||
infoContent.setDeleted(StateEnum.DISABLE.getKey()); | |||
infoContent.setState(InfoStateTypeEnum.INFO_STATE_TYPE_DRAFT.getCode()); | |||
if(InfoStateTypeEnum.INFO_STATE_TYPE_FIRST_AUDIT.getCode().equals(infoContentAddQueryParam.getSaveType())){ | |||
infoContent.setState(InfoStateTypeEnum.INFO_STATE_TYPE_FIRST_AUDIT.getCode()); | |||
infoContent.setSubmitTime(new Date()); | |||
}else if(InfoStateTypeEnum.INFO_STATE_TYPE_DRAFT.getCode().equals(infoContentAddQueryParam.getSaveType())){ | |||
infoContent.setState(InfoStateTypeEnum.INFO_STATE_TYPE_DRAFT.getCode()); | |||
} | |||
infoContent.setIstop(StateEnum.DISABLE.getKey()); | |||
infoContent.setOnlineType(StateEnum.ENABLE.getKey()); | |||
infoContent.setId((long) 0); | |||
@@ -110,6 +123,18 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
} | |||
InfoContentAllQueryVo infoContentAllQueryVo = new InfoContentAllQueryVo(); | |||
BeanUtils.copyProperties(infoContent, infoContentAllQueryVo); | |||
//获取初审人员姓名 | |||
if(null!=infoContent.getFirstAuditUser()) { | |||
SysUser userAudit = sysUserService.getById(infoContent.getFirstAuditUser()); | |||
infoContentAllQueryVo.setFirstAuditUserName(userAudit.getUsername()); | |||
} | |||
//获取终审人员姓名 | |||
if(null!=infoContent.getFinalAuditUser()){ | |||
SysUser userFinalAudit = sysUserService.getById(infoContent.getFinalAuditUser()); | |||
infoContentAllQueryVo.setFinalAuditUserName(userFinalAudit.getUsername()); | |||
} | |||
if (StringUtil.isNotEmpty(infoContent.getForeignId())) { | |||
InfoDetail infoDetail = infoDetailService.getOne(new QueryWrapper<InfoDetail>().eq("foreign_id", infoContent.getForeignId())); | |||
if (null != infoDetail) { | |||
@@ -124,6 +149,30 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
infoContentAllQueryVo.setUrlList(infoUrlList); | |||
} | |||
} | |||
List<InfoBack> infoBackList = infoBackService.list(new QueryWrapper<InfoBack>(). | |||
eq("info_id",infoContent.getId()).orderByDesc("back_time")); | |||
if(infoBackList.size()>0){ | |||
infoContentAllQueryVo.setInfoBack(infoBackList.get(0)); | |||
} | |||
//获取类型 | |||
InfoType infoType = infoTypeService.getById(infoContent.getInfoTypeId()); | |||
if(null!=infoType){ | |||
List<String> selectTypeArray = new ArrayList<>(); | |||
int typeIdLength =infoType.getTypeId().length(); | |||
for(int i=0 ;i<typeIdLength/3;i++){ | |||
selectTypeArray.add(infoType.getTypeId().substring(0,3*(i+1))); | |||
} | |||
List<InfoType> infoTypeList = infoTypeService.list(new QueryWrapper<InfoType>().in("type_id",selectTypeArray).orderByAsc("type_id")); | |||
List<String> typeNameArr=infoTypeList.stream().map(InfoType::getInfoName).collect(Collectors.toList()); | |||
infoContentAllQueryVo.setTypeNameArr(typeNameArr); | |||
} | |||
return ApiResult.ok(infoContentAllQueryVo); | |||
} | |||
@@ -164,6 +213,7 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
return ApiResult.error(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
} | |||
BeanUtils.copyProperties(infoContentAddQueryParam, infoContentNew); | |||
infoContentNew.setUpdateTime(new Date()); | |||
InfoDetail infoDetail = infoContentAddQueryParam.getInfoDetail(); | |||
if (null != infoDetail) { | |||
if (StringUtil.isEmpty(infoContentNew.getForeignId())) { | |||
@@ -239,7 +289,7 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
InfoBack infoBack = new InfoBack(); | |||
infoBack.setBackTime(new Date()); | |||
infoBack.setBackType(InfoBackTypeEnum.INFO_STATE_TYPE_AUDIT_BACK_FIRST.getCode()); | |||
infoBack.setForeignId(infoContent.getForeignId()); | |||
infoBack.setInfoId(infoContent.getId()); | |||
infoBack.setReason(infoContentAuditQueryParam.getBackIdea()); | |||
infoBack.setCreateUser(getUserId()); | |||
infoBackService.saveOrUpdate(infoBack); | |||
@@ -284,7 +334,7 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
InfoBack infoBack = new InfoBack(); | |||
infoBack.setBackTime(new Date()); | |||
infoBack.setBackType(InfoBackTypeEnum.INFO_STATE_TYPE_AUDIT_BACK_FINAL.getCode()); | |||
infoBack.setForeignId(infoContent.getForeignId()); | |||
infoBack.setInfoId(infoContent.getId()); | |||
infoBack.setReason(infoContentAuditQueryParam.getBackIdea()); | |||
infoBack.setCreateUser(getUserId()); | |||
infoBackService.saveOrUpdate(infoBack); |
@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
/** | |||
@@ -48,6 +49,11 @@ public class InfoTypeServiceImpl extends BaseServiceImpl<InfoTypeMapper, InfoTyp | |||
return infoTypeMapper.getInfoTypeById(id); | |||
} | |||
@Override | |||
public List<Object> getInfoTypeTreeList( ) throws Exception { | |||
return infoTypeMapper.getInfoTypeTreeList(); | |||
} | |||
@Override | |||
public PageTool<InfoTypeQueryVo> getInfoTypePageList(InfoTypeQueryParam infoTypeQueryParam) throws Exception { | |||
Page page = setPageParam(infoTypeQueryParam); |
@@ -117,9 +117,11 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionMappe | |||
} | |||
//删除角色下面用户的token | |||
List<SysUserRole> userRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().eq("role_id",sysRole.getId())); | |||
if(!oauthTokenService.removeTokenByUserList(userRoleList)){ | |||
log.error("角色变更授权,对应用户token未重置"); | |||
}; | |||
if(userRoleList.size()>0) { | |||
if (!oauthTokenService.removeTokenByUserList(userRoleList)) { | |||
log.error("角色变更授权,对应用户token未重置"); | |||
} | |||
} | |||
return ApiResult.ok(); | |||
} | |||
@@ -60,9 +60,12 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleMapper, SysRole> | |||
@Resource | |||
private SysUserService sysUserService; | |||
@Autowired | |||
@Resource | |||
private SysUserRoleService sysUserRoleService; | |||
@Autowired | |||
private SysRoleService sysRoleService; | |||
/** | |||
* 添加角色 | |||
* @param sysRoleQueryParam | |||
@@ -70,15 +73,25 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleMapper, SysRole> | |||
*/ | |||
@Override | |||
public ApiResult addSysRole(SysRoleQueryParam sysRoleQueryParam) { | |||
List<SysRole> sysRoleManage =sysRoleService.list(new QueryWrapper<SysRole>().orderByDesc("id")); | |||
//取最大角色id | |||
SysRole sysRole = new SysRole(); | |||
BeanUtils.copyProperties(sysRoleQueryParam,sysRole); | |||
if (sysRoleManage.size() > 0) { | |||
sysRole.setCode("role"+sysRoleManage.get(0).getId()); | |||
}else{ | |||
sysRole.setCode("role1"); | |||
} | |||
try { | |||
if (isExistsByCode(sysRoleQueryParam.getCode())) { | |||
if (isExistsByCode(sysRole.getCode())) { | |||
throw new BusinessException("角色编码已存在"); | |||
} | |||
} catch (Exception e) { | |||
return ApiResult.ok(StatusCode.SYS_USER_ROLE_EXIST); | |||
return ApiResult.error(StatusCode.SYS_USER_ROLE_EXIST); | |||
} | |||
SysRole sysRole = new SysRole(); | |||
BeanUtils.copyProperties(sysRoleQueryParam,sysRole); | |||
sysRole.setState(StateEnum.ENABLE.getKey()); | |||
sysRole.setType(StateEnum.ENABLE.getKey()); | |||
sysRole.setDeleted(StateEnum.DISABLE.getKey()); | |||
@@ -98,16 +111,18 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleMapper, SysRole> | |||
} | |||
SysRole sysRole = this.getById(sysRoleQueryParam.getId()); | |||
if(null==sysRole){ | |||
return ApiResult.ok(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
return ApiResult.error(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
} | |||
try { | |||
if (isExistsByCode(sysRoleQueryParam.getCode())) { | |||
return ApiResult.ok(StatusCode.SYS_USER_ROLE_EXIST); | |||
} | |||
} catch (Exception e) { | |||
return ApiResult.ok(StatusCode.SYS_USER_ROLE_EXIST); | |||
} | |||
BeanUtils.copyProperties(sysRoleQueryParam,sysRole); | |||
// try { | |||
// if (isExistsByCode(sysRoleQueryParam.getCode())) { | |||
// return ApiResult.ok(StatusCode.SYS_USER_ROLE_EXIST); | |||
// } | |||
// } catch (Exception e) { | |||
// return ApiResult.ok(StatusCode.SYS_USER_ROLE_EXIST); | |||
// } | |||
// BeanUtils.copyProperties(sysRoleQueryParam,sysRole); | |||
sysRole.setName(sysRoleQueryParam.getName()); | |||
sysRole.setRemark(sysRoleQueryParam.getRemark()); | |||
sysRole.setUpdateTime(new Date()); | |||
this.saveOrUpdate(sysRole); | |||
return ApiResult.ok(); |
@@ -18,6 +18,7 @@ import com.xdf.creative.shiro.jwt.JwtUtil; | |||
import com.xdf.creative.shiro.jwt.SaltUtil; | |||
import com.xdf.creative.support.aop.AccountLogger; | |||
import com.xdf.creative.support.auth.LoginParam; | |||
import com.xdf.creative.support.auth.LoginRefreshParam; | |||
import com.xdf.creative.support.auth.LoginSysUserTokenVo; | |||
import com.xdf.creative.support.auth.LoginSysUserVo; | |||
import com.xdf.creative.support.exception.BusinessException; | |||
@@ -166,6 +167,52 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser> | |||
return loginSysUserTokenVo; | |||
} | |||
@Override | |||
@Transactional | |||
public ApiResult refresh(LoginRefreshParam loginRefreshParam) throws Exception { | |||
SysUser sysUser = this.getById(loginRefreshParam.getUserId()); | |||
if(null==sysUser||StateEnum.DISABLE.getKey().equals(sysUser.getState())){ | |||
return ApiResult.fail("用户不存在或已被停用!"); | |||
} | |||
OauthTokenQueryVo oauthTokenOld =oauthTokenService.getOauthTokenByToken(loginRefreshParam.getToken()); | |||
if(null==oauthTokenOld||sysUser.getId().intValue()!=oauthTokenOld.getUserId().intValue()){ | |||
return ApiResult.fail("token验证失败!"); | |||
} | |||
// 获取数据库中保存的盐值 | |||
String newSalt = SaltUtil.getSalt(sysUser.getSalt(), jwtProperties); | |||
// 生成token字符串并返回 | |||
Long expireSecond = jwtProperties.getExpireSecond(); | |||
String token = JwtUtil.generateToken(sysUser.getId(), sysUser.getUsername(), sysUser.getOrganizeId(), sysUser.getUserType(), newSalt, Duration.ofSeconds(expireSecond)); | |||
oauthTokenService.removeTokenByUserId(sysUser.getId()); | |||
OauthToken oauthToken = new OauthToken(); | |||
oauthTokenService.removeTokenByUserId(sysUser.getId()); | |||
oauthToken.setAccessToken(token); | |||
//获取角色id、名称、code | |||
HashSet<Long> roleIdSet = new HashSet<>(); | |||
HashSet<String> roleNameSet = new HashSet<>(); | |||
HashSet<String> roleCodeSet = new HashSet<>(); | |||
List<SysRoleQueryVo> sysRoleQueryVoList = sysRoleService.getUserRoleByUserId(sysUser.getId()); | |||
if (CollectionUtil.isEmpty(sysRoleQueryVoList)) { | |||
log.error("角色不存在,用户id:"+sysUser.getId()); | |||
} | |||
sysRoleQueryVoList.stream().forEach(sysRoleQueryVo -> { | |||
roleIdSet.add(sysRoleQueryVo.getId()); | |||
roleNameSet.add(sysRoleQueryVo.getName()); | |||
roleCodeSet.add(sysRoleQueryVo.getCode()); | |||
}); | |||
if (!sysRoleQueryVoList.isEmpty()) { | |||
oauthToken.setRoles(roleCodeSet.toString()); | |||
} | |||
oauthToken.setRefreshToken(StateEnum.DISABLE.getKey()); | |||
oauthToken.setUserId(sysUser.getId()); | |||
oauthToken.setExpireTime(JwtUtil.getExpireDate(token)); | |||
oauthTokenService.save(oauthToken); | |||
return ApiResult.ok(token); | |||
} | |||
/** | |||
* 添加用户 | |||
* @param sysUserAddQueryParam | |||
@@ -216,6 +263,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser> | |||
} | |||
if(sysUser.getState().equals(StateEnum.ENABLE.getKey())){ | |||
sysUser.setState(StateEnum.DISABLE.getKey()); | |||
oauthTokenService.removeTokenByUserId(sysUser.getId()); | |||
}else{ | |||
sysUser.setState(StateEnum.ENABLE.getKey()); | |||
} |
@@ -44,7 +44,7 @@ public class ConfigPathInterceptor implements HandlerInterceptor { | |||
@Override | |||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | |||
String token = request.getHeader("Authorization"); | |||
if (null == token) { | |||
if (null == token||StringUtil.isEmpty(token)) { | |||
ApiResult result = new ApiResult(); | |||
result.setCode(ApiCode.TOKEN_INVALID.getCode()); | |||
result.setMsg(ApiCode.TOKEN_INVALID.getMsg()); |
@@ -0,0 +1,29 @@ | |||
package com.xdf.creative.support.auth; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
/** | |||
* 登录参数 | |||
* | |||
* @author DeanYe | |||
* @date 2019-05-15 | |||
**/ | |||
@Data | |||
@ApiModel("登录参数") | |||
public class LoginRefreshParam { | |||
@ApiModelProperty("Token") | |||
@NotBlank(message = "token不能为空") | |||
private String token; | |||
@ApiModelProperty("userId") | |||
@NotNull(message = "userId不能为空") | |||
private Long userId; | |||
} |
@@ -29,22 +29,40 @@ public class ServerUploadDirUtil { | |||
String uploadDir = ""; | |||
switch (type) { | |||
case 1: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_DYNAMIC.getName(); | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_BANNER.getName(); | |||
break; | |||
case 2: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_ACTIVITY.getName(); | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_NOTICE.getName(); | |||
break; | |||
case 3: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_SUPPORT.getName(); | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_DYNAMIC.getName(); | |||
break; | |||
case 7: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_DIVISION.getName(); | |||
break; | |||
case 4: | |||
case 8: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_PARK.getName(); | |||
break; | |||
case 9: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_ACTIVITY.getName(); | |||
break; | |||
case 13: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_EXPRESS.getName(); | |||
break; | |||
case 14: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_POLICY.getName(); | |||
break; | |||
case 19: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_STONE.getName(); | |||
break; | |||
case 22: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_SUPPORT.getName(); | |||
break; | |||
case 5: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_OTHER.getName(); | |||
break; | |||
default: //可选 | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_BANNER.getName(); | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_OTHER.getName(); | |||
} | |||
return uploadDir; | |||
} |
@@ -1,5 +1,6 @@ | |||
package com.xdf.creative.util.tree; | |||
import com.xdf.creative.module.entity.InfoType; | |||
import org.apache.commons.lang.StringUtils; | |||
import java.lang.reflect.InvocationTargetException; |
@@ -13,6 +13,7 @@ auth_skip_urls=\ | |||
#upload_basePath=/mnt/dfzx/nfs01/dfzx_creative/ | |||
upload_basePath=D:/xdf_image/xdf/ | |||
@@ -7,6 +7,7 @@ server: | |||
tomcat: | |||
max-threads: 1000 | |||
min-spare-threads: 30 | |||
max-http-header-size: 8192 | |||
uri-encoding: utf-8 | |||
@@ -34,8 +35,10 @@ spring: | |||
platform: mysql | |||
type: com.alibaba.druid.pool.DruidDataSource | |||
url: jdbc:mysql://192.168.1.101:3306/creative_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true | |||
# url: jdbc:mysql://172.19.175.249:3306/creative_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true | |||
username: root | |||
password: 123456 | |||
#password: SwNspCVZt7,S!6 | |||
druid: | |||
filter: | |||
slf4j: | |||
@@ -86,7 +89,7 @@ spring-boot-plus: | |||
# 是否刷新token | |||
refresh-token: true | |||
# 刷新token的时间间隔,默认10分钟,单位:秒 | |||
refresh-token-countdown: 600 | |||
refresh-token-countdown: 3600 | |||
# redis校验jwt token是否存在,可选 | |||
redis-check: true | |||
# true: 同一个账号只能是最后一次登陆token有效,false:同一个账号可多次登陆 |
@@ -5,7 +5,7 @@ | |||
<!-- 通用查询结果列 --> | |||
<sql id="Base_Column_List"> | |||
id, foreign_id, reason, back_type, create_user, back_time | |||
id, info_id, reason, back_type, create_user, back_time | |||
</sql> | |||
<sql id="Base_If_Condition"> | |||
@@ -13,8 +13,8 @@ | |||
<if test="param.id !=null and param.id!=''"> | |||
and id=#{param.id} | |||
</if> | |||
<if test="param.foreignId !=null and param.foreignId!=''"> | |||
and foreign_id=#{param.foreignId} | |||
<if test="param.infoId !=null and param.infoId!=''"> | |||
and info_id=#{param.infoId} | |||
</if> | |||
<if test="param.reason !=null and param.reason!=''"> | |||
and reason=#{param.reason} |
@@ -22,7 +22,7 @@ | |||
and ${alias}.id=#{param.id} | |||
</if> | |||
<if test="param.title !=null and param.title!=''"> | |||
and ${alias}.title like CONCAT('',#{param.title},'%') | |||
and ${alias}.title like CONCAT('%',#{param.title},'%') | |||
</if> | |||
<if test="param.state !=null and param.state!=''"> | |||
and ${alias}.state=#{param.state} | |||
@@ -37,16 +37,16 @@ | |||
<sql id="Base_User_If_Condition"> | |||
<if test="param.userName !=null and param.userName!=''"> | |||
and ${alias}.username like CONCAT('',#{param.userName},'%') | |||
and ${alias}.username like CONCAT('%',#{param.userName},'%') | |||
</if> | |||
<if test="param.nickName !=null and param.nickName!=''"> | |||
and ${alias}.nickname like CONCAT('',#{param.nickName},'%') | |||
and ${alias}.nickname like CONCAT('%',#{param.nickName},'%') | |||
</if> | |||
</sql> | |||
<sql id="Base_Type_If_Condition"> | |||
<if test="param.infoTypeId !=null and param.infoTypeId!=''"> | |||
and ${alias}.type_id =#{param.infoTypeId} | |||
and ${alias}.type_id like CONCAT('',#{param.infoTypeId},'%') | |||
</if> | |||
</sql> | |||
@@ -57,7 +57,7 @@ | |||
select a.id,a.title,a.final_audit_time,a.sort,a.istop,a.istop_time,b.type_id,b.info_name from info_content a | |||
left join info_type b on a.info_type_id =b.id where a.deleted=0 and a.online_type=1 and a.state = 3 | |||
<if test="param.typeId !=null and param.typeId!=''"> | |||
and b.type_id like CONCAT('%',#{param.typeId},'%') | |||
and b.type_id like CONCAT('',#{param.typeId},'%') | |||
</if> | |||
order by a.istop DESC,a.sort | |||
DESC,a.final_audit_time ASC LIMIT #{param.contentSize} | |||
@@ -71,7 +71,7 @@ | |||
from info_content a left join info_detail c on a.foreign_id = c.foreign_id left join info_type b on a.info_type_id =b.id where | |||
a.deleted=0 and a.online_type=1 and a.state = 3 | |||
<if test="param.typeId !=null and param.typeId!=''"> | |||
and b.type_id like CONCAT('%',#{param.typeId},'%') | |||
and b.type_id like CONCAT('',#{param.typeId},'%') | |||
</if> | |||
<if test="param.title !=null and param.title!=''"> | |||
and ( a.title like CONCAT('%',#{param.title},'%') | |||
@@ -122,8 +122,10 @@ | |||
</include>, | |||
<include refid="Base_Type_Column_List"> | |||
<property name="alias" value="b"/> | |||
</include> | |||
</include>, | |||
d.reason,d.back_time | |||
from info_content a left join info_type b on a.info_type_id =b.id left join sys_user c on a.create_user = c.id | |||
left join (select * from info_back order by back_time desc limit 1 )d on a.id =d.info_id | |||
<where> | |||
a.deleted = 0 | |||
<include refid="Base_If_Condition"> |
@@ -48,6 +48,16 @@ | |||
from info_type where id = #{id} | |||
</select> | |||
<select id="getInfoTypeTreeList" resultType="com.xdf.creative.base.vo.creative.InfoTypeQueryVo"> | |||
select | |||
<include refid="Base_Column_List"/> | |||
from info_type order by type_id asc | |||
</select> | |||
<!--分页查询--> | |||
<select id="getInfoTypePageList" | |||
resultType="com.xdf.creative.base.vo.creative.InfoTypeQueryVo" |
@@ -85,7 +85,7 @@ | |||
and sr.deleted = 0 | |||
and sp.state = 1 | |||
and sp.deleted = 0 | |||
and sp.type =1 | |||
and sp.type =1 order by sp.resource_id asc | |||
</select> | |||
@@ -94,7 +94,7 @@ | |||
resultType="com.xdf.creative.module.entity.SysPermission"> | |||
select a.*,case when b.state =1 then 'true' else 'false' end as checked from sys_permission a | |||
left join (select distinct permission_id,state from sys_role_permission where role_id = #{roleId})b | |||
on a.resource_id =b.permission_id where a.state = 1 and a.deleted = 0 and a.code <![CDATA[ <> ]]> "0" | |||
on a.resource_id =b.permission_id where a.state = 1 and a.deleted = 0 and a.code <![CDATA[ <> ]]> "0" order by a.resource_id asc | |||
</select> | |||