实体提交

This commit is contained in:
jlzhangyx5
2025-05-13 14:34:43 +08:00
parent c9193271e9
commit 807516b04b
12 changed files with 338 additions and 59 deletions

View File

@ -1,7 +1,10 @@
package com.coscoshipping.ebtp.project.role.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.mall.ebtp.common.util.PropertyUtils;
import com.coscoshipping.ebtp.project.role.entity.vo.SysRoleVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
@ -12,6 +15,7 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.List;
import com.coscoshipping.ebtp.project.role.entity.SysRole;
import com.coscoshipping.ebtp.project.role.service.SysRoleService;
@ -34,10 +38,9 @@ public class SysRoleController{
* @return
*/
@ApiOperation("插入新数据")
@PostMapping
public BaseResponse<Boolean> insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid SysRole sysRole){
Boolean i = iSysRoleService.save(sysRole);
@PostMapping("/insert")
public BaseResponse<Boolean> insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid SysRoleVO sysRole){
Boolean i = iSysRoleService.insertByVo(sysRole);
return BaseResponse.success(i);
}
@ -50,10 +53,10 @@ public class SysRoleController{
* @return
*/
@ApiOperation("修改数据")
@PutMapping
public BaseResponse<Boolean> update(@ApiParam(value = "对象数据", required = true) @RequestBody SysRole sysRole){
@PostMapping("/update")
public BaseResponse<Boolean> update(@ApiParam(value = "对象数据", required = true) @RequestBody SysRoleVO sysRole){
Boolean i = iSysRoleService.updateById(sysRole);
Boolean i = iSysRoleService.updateByVo(sysRole);
return BaseResponse.success(i);
}
@ -67,9 +70,9 @@ public class SysRoleController{
*/
@ApiOperation("根据id查询数据")
@GetMapping("/{id}")
public BaseResponse<SysRole> get(@ApiParam(value = "主键id", required = true) @PathVariable String id){
public BaseResponse<SysRoleVO> getInfo(@ApiParam(value = "主键id", required = true) @PathVariable String id){
SysRole sysRole = iSysRoleService.getById(id);
SysRoleVO sysRole = iSysRoleService.getInfoById(id);
return BaseResponse.success(sysRole);
}
@ -82,9 +85,9 @@ public class SysRoleController{
* @date 2020/10/21 14:56
*/
@ApiOperation(value = "delete",notes = "删除数据")
@DeleteMapping("/{id}")
public BaseResponse<Boolean> delete(@ApiParam(value = "主键id", required = true) @PathVariable Long id) {
Boolean i = iSysRoleService.removeById(id);
@GetMapping("/del/{id}")
public BaseResponse<Boolean> delete(@ApiParam(value = "主键id", required = true) @PathVariable String id) {
Boolean i = iSysRoleService.deleteRoleById(id);
return BaseResponse.success(i);
}
@ -104,4 +107,18 @@ public class SysRoleController{
//RespsExceptionEnum.FRAME_EXCEPTION_DEMO_NOT_FIND.customValid(list.isEmpty());
return BaseResponse.success(list);
}
/**
* 查询分页数据
*
* @param sysRoleVO 分页信息
*
* @return 返回结果
*/
@ApiOperation("查询分页数据")
@PostMapping("/getPage")
public BaseResponse<IPage<SysRole>> getPage(@ApiParam(value = "对象数据", required = true) @RequestBody SysRoleVO sysRoleVO){
return BaseResponse.success(iSysRoleService.getPage(sysRoleVO));
}
}

View File

@ -0,0 +1,11 @@
package com.coscoshipping.ebtp.project.role.dao;
import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.coscoshipping.ebtp.project.role.entity.SysRoleMenu;
@Repository
public interface SysRoleMenuMapper extends IBaseMapper<SysRoleMenu> {
}

View File

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.coscoshipping.ebtp.project.dao.SysRoleMapper">
<mapper namespace="com.coscoshipping.ebtp.project.role.dao.SysRoleMapper">
<resultMap id="roleResultMap" type="com.coscoshipping.ebtp.project.role.entity.SysRole">
<result column="role_id" jdbcType="VARCHAR" property="roleId" />
<result column="role_scope" jdbcType="VARCHAR" property="roleScope" />
<result column="role_name" jdbcType="VARCHAR" property="roleName" />
<result column="role_code" jdbcType="VARCHAR" property="roleCode" />
<result column="role_desc" jdbcType="VARCHAR" property="roleDesc" />
<result column="role_public" jdbcType="VARCHAR" property="rolePublic" />
<!-- <result column="role_public" jdbcType="VARCHAR" property="rolePublic" />-->
<result column="role_status" jdbcType="VARCHAR" property="roleStatus" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="role_province" jdbcType="VARCHAR" property="roleProvince" />
@ -19,15 +19,15 @@
<result column="is_province" jdbcType="VARCHAR" property="isProvince" />
<result column="is_city" jdbcType="VARCHAR" property="isCity" />
<result column="role_flag" jdbcType="VARCHAR" property="roleFlag" />
<result column="role_business" jdbcType="VARCHAR" property="roleBusiness" />
<!-- <result column="role_business" jdbcType="VARCHAR" property="roleBusiness" />-->
<result column="is_page" jdbcType="VARCHAR" property="isPage" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_date" jdbcType="VARCHAR" property="createDate" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_date" jdbcType="VARCHAR" property="updateDate" />
<result column="delete_flag" jdbcType="VARCHAR" property="deleteFlag" />
<result column="versions" jdbcType="INTEGER" property="versions" />
<result column="is_apply" jdbcType="VARCHAR" property="isApply" />
<!-- <result column="versions" jdbcType="INTEGER" property="versions" />-->
<!-- <result column="is_apply" jdbcType="VARCHAR" property="isApply" />-->
</resultMap>
<!--逻辑删除方法 此方法为代码生成器生成 不允许修改 如有特殊需求 请自行新建SQL语句-->

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.coscoshipping.ebtp.project.role.dao.SysRoleMenuMapper">
<resultMap id="roleResultMap" type="com.coscoshipping.ebtp.project.role.entity.SysRoleMenu">
<result column="role_id" jdbcType="VARCHAR" property="roleId" />
<result column="menu_id" jdbcType="VARCHAR" property="menuId" />
</resultMap>
</mapper>

View File

@ -1,8 +1,7 @@
package com.coscoshipping.ebtp.project.role.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity;
import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
@ -23,11 +22,12 @@ import java.time.LocalDateTime;
@Accessors(chain = true)
@TableName(value = "sys_role", autoResultMap = true)
@ApiModel(value = "SysRole对象", description = "角色表")
public class SysRole implements Serializable {
public class SysRole extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "role_id", type = IdType.INPUT)
private String roleId;
@ApiModelProperty(value = "角色范围")
@ -42,8 +42,8 @@ public class SysRole implements Serializable {
@ApiModelProperty(value = "角色描述")
private String roleDesc;
@ApiModelProperty(value = "是否公共角色(yes,no)")
private String rolePublic;
// @ApiModelProperty(value = "是否公共角色(yes,no)")
// private String rolePublic;
@ApiModelProperty(value = "状态1正常 0停用")
private String roleStatus;
@ -72,45 +72,17 @@ public class SysRole implements Serializable {
@ApiModelProperty(value = "角色标识集团G;省级P;市级C")
private String roleFlag;
@ApiModelProperty(value = "是否业务授权(yes,no)")
private String roleBusiness;
// @ApiModelProperty(value = "是否业务授权(yes,no)")
// private String roleBusiness;
@ApiModelProperty(value = "是否前台人员配置 0 前台配置,1 后台业务授权,2 不确定 默认后台业务授权")
private String isPage;
@ApiModelProperty(value = "乐观锁标记位")
private Integer versions;
// @ApiModelProperty(value = "乐观锁标记位")
// private Integer versions;
@ApiModelProperty(value = "是否走申请流程Y/N默认N")
private String isApply;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建者")
private String createBy;
@TableField(fill = FieldFill.INSERT, typeHandler = CustomLocalDateTimeTypeHandler.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private LocalDateTime createDate;
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty(value = "更新者")
private String updateBy;
@TableField(fill = FieldFill.UPDATE, typeHandler = CustomLocalDateTimeTypeHandler.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateDate;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "租户标识")
private String tenantId;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "逻辑删除normal表示正常默认deleted表示删除")
private String deleteFlag;
// @ApiModelProperty(value = "是否走申请流程Y/N默认N")
// private String isApply;\
}

View File

@ -0,0 +1,31 @@
package com.coscoshipping.ebtp.project.role.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 实体类 SysRoleMenu-角色和菜单关联表
*
* @author yss
*/
@Data
@Accessors(chain = true)
@TableName(value = "sys_role_menu", autoResultMap = true)
@ApiModel(value = "SysRoleMenu对象", description = "角色和菜单关联表")
public class SysRoleMenu implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "角色ID")
private String roleId;
@ApiModelProperty(value = "菜单ID")
private String menuId;
}

View File

@ -0,0 +1,37 @@
package com.coscoshipping.ebtp.project.role.entity.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest;
import com.coscoshipping.ebtp.project.role.entity.SysRole;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 用户角色信息VO类 SysRoleVO
*
* @author zyx
* @date 2025/5/8
*/
@Data
@Accessors(chain = true)
@ApiModel("用户角色信息VO类")
@TableName(autoResultMap = true)
public class SysRoleVO extends SysRole implements Serializable {
/**
* 分页数据
*/
@ApiModelProperty(value = "分页对象信息")
private BasePageRequest basePageRequest;
private List<String> menuIds;
}

View File

@ -0,0 +1,15 @@
package com.coscoshipping.ebtp.project.role.service;
import com.chinaunicom.mall.ebtp.common.base.service.IBaseService;
import com.coscoshipping.ebtp.project.role.entity.SysRoleMenu;
/**
* 对数据表 sys_role_menu 操作的 service
* @author yss
*
*/
public interface SysRoleMenuService extends IBaseService<SysRoleMenu>{
}

View File

@ -1,8 +1,10 @@
package com.coscoshipping.ebtp.project.role.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaunicom.mall.ebtp.common.base.service.IBaseService;
import com.coscoshipping.ebtp.project.role.entity.SysRole;
import com.coscoshipping.ebtp.project.role.entity.vo.SysRoleVO;
/**
* 对数据表 sys_role 操作的 service
@ -11,5 +13,32 @@ import com.coscoshipping.ebtp.project.role.entity.SysRole;
*/
public interface SysRoleService extends IBaseService<SysRole>{
/**
* 角色分页
* @param sysRoleVO 标段信息
* @return 返回结果
*/
IPage<SysRole> getPage(SysRoleVO sysRoleVO);
/**
* 查询角色基本信息
* @param id
* @return
*/
SysRoleVO getInfoById(String id);
Boolean insertByVo(SysRoleVO bo);
Boolean updateByVo(SysRoleVO bo);
/**
* 通过角色ID删除角色
*
* @param roleId 角色ID
* @return 结果
*/
Boolean deleteRoleById(String roleId);
}

View File

@ -0,0 +1,17 @@
package com.coscoshipping.ebtp.project.role.service.impl;
import org.springframework.stereotype.Service;
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
import com.coscoshipping.ebtp.project.role.dao.SysRoleMenuMapper;
import com.coscoshipping.ebtp.project.role.entity.SysRoleMenu;
import com.coscoshipping.ebtp.project.role.service.SysRoleMenuService;
/**
* 对数据表 sys_role_menu 操作的 serviceImpl
* @author yss
*
*/
@Service
public class SysRoleMenuServiceImpl extends BaseServiceImpl<SysRoleMenuMapper,SysRoleMenu> implements SysRoleMenuService {
}

View File

@ -1,6 +1,19 @@
package com.coscoshipping.ebtp.project.role.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest;
import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum;
import com.coscoshipping.ebtp.project.role.dao.SysRoleMenuMapper;
import com.coscoshipping.ebtp.project.role.entity.SysRoleMenu;
import com.coscoshipping.ebtp.project.role.entity.vo.SysRoleVO;
import com.coscoshipping.ebtp.project.role.service.SysRoleMenuService;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
import com.chinaunicom.mall.ebtp.common.util.PropertyUtils;
@ -8,6 +21,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import com.coscoshipping.ebtp.project.role.dao.SysRoleMapper;
import com.coscoshipping.ebtp.project.role.entity.SysRole;
import com.coscoshipping.ebtp.project.role.service.SysRoleService;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.groupingBy;
/**
* 对数据表 sys_role 操作的 serviceImpl
* @author yss
@ -16,4 +39,122 @@ import com.coscoshipping.ebtp.project.role.service.SysRoleService;
@Service
public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleMapper,SysRole> implements SysRoleService {
@Resource
private SysRoleMenuService roleMenuService;
@Override
public IPage<SysRole> getPage(SysRoleVO sysRoleVO) {
LambdaQueryWrapper query = buildQueryWrapper(sysRoleVO);
if(null == sysRoleVO.getBasePageRequest()){
sysRoleVO.setBasePageRequest(new BasePageRequest());
}
//查询
IPage<SysRole> result = new Page<>(sysRoleVO.getBasePageRequest().getPageNo(), sysRoleVO.getBasePageRequest().getPageSize());
result = this.page(result, query);
return result;
}
@Override
public SysRoleVO getInfoById(String id) {
SysRole sysRole = this.getById(id);
SysRoleVO roleVO = BeanUtil.toBean(sysRole, SysRoleVO.class);
//查询菜单信息
List<SysRoleMenu> roleMenuList = roleMenuService.list(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id));
List<String> menuIds = roleMenuList.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
roleVO.setMenuIds(menuIds);
return roleVO;
}
@Override
public Boolean insertByVo(SysRoleVO vo) {
vo.setRoleId(PropertyUtils.getSnowflakeId()).setCreateDate(LocalDateTime.now());
// SysRole add = BeanUtil.toBean(VO, SysRole.class);
validEntityBeforeSave(vo,false);
boolean flag = baseMapper.insert(vo) > 0;
if (flag) {
insertRoleMenu(vo);
}
return flag;
}
@Override
public Boolean updateByVo(SysRoleVO vo) {
// SysRole update = BeanUtil.toBean(vo, SysRole.class);
validEntityBeforeSave(vo,true);
// 删除角色与菜单关联
roleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, vo.getRoleId()));
boolean flag = baseMapper.updateById(vo) > 0;
if (flag) {
insertRoleMenu(vo);
}
return flag;
}
@Override
public Boolean deleteRoleById(String roleId) {
// 删除角色与菜单关联
roleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
return this.removeById(roleId);
}
/**
* 新增角色菜单信息
*
* @param role 角色对象
*/
public int insertRoleMenu(SysRoleVO role) {
int rows = 1;
// 新增用户与角色管理
List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
role.getMenuIds().forEach(menuId -> {
SysRoleMenu rm = new SysRoleMenu();
rm.setRoleId(role.getRoleId());
rm.setMenuId(menuId);
list.add(rm);
});
if (list.size() > 0) {
rows = roleMenuService.saveBatch(list) ? list.size() : 0;
}
return rows;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(SysRole entity,boolean isUpdate){
//TODO 做一些数据校验,如唯一约束
//校验角色编码是否重复
LambdaQueryWrapper<SysRole> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(entity.getRoleCode()), SysRole::getRoleCode, entity.getRoleCode());
if (isUpdate){
lqw.ne(StringUtils.isNotBlank(entity.getRoleId()), SysRole::getRoleId, entity.getRoleId());
}
List<SysRole> roleList =baseMapper.selectList(lqw);
CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("角色编码已存在",roleList.size()>1);
}
private LambdaQueryWrapper<SysRole> buildQueryWrapper(SysRoleVO vo) {
LambdaQueryWrapper<SysRole> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(vo.getRoleName()), SysRole::getRoleName , vo.getRoleName());
lqw.like(StringUtils.isNotBlank(vo.getRoleCode()), SysRole::getRoleCode, vo.getRoleCode());
lqw.eq(StringUtils.isNotBlank(vo.getRoleScope()), SysRole::getRoleScope, vo.getRoleScope());
lqw.like(StringUtils.isNotBlank(vo.getRoleDesc()), SysRole::getRoleDesc, vo.getRoleDesc());
// lqw.eq(vo.getContributionLevel() != null, SysRole::getContributionLevel, vo.getContributionLevel());
// lqw.eq(vo.getArrivalTime() != null, SysRole::getArrivalTime, vo.getArrivalTime());
lqw.eq(StringUtils.isNotBlank(vo.getRoleStatus()), SysRole::getRoleStatus, vo.getRoleStatus());
lqw.eq(StringUtils.isNotBlank(vo.getRoleProvince()), SysRole::getRoleProvince, vo.getRoleProvince());
lqw.eq(StringUtils.isNotBlank(vo.getRoleCity()), SysRole::getRoleCity, vo.getRoleCity());
lqw.eq(StringUtils.isNotBlank(vo.getRoleOu()), SysRole::getRoleOu, vo.getRoleOu());
lqw.eq(StringUtils.isNotBlank(vo.getRoleCut()), SysRole::getRoleCut, vo.getRoleCut());
lqw.eq(StringUtils.isNotBlank(vo.getIsProvince()), SysRole::getIsProvince, vo.getIsProvince());
lqw.eq(StringUtils.isNotBlank(vo.getIsCity()), SysRole::getIsCity, vo.getIsCity());
lqw.eq(StringUtils.isNotBlank(vo.getIsGroup()), SysRole::getIsGroup, vo.getIsGroup());
lqw.eq(StringUtils.isNotBlank(vo.getIsPage()), SysRole::getIsPage, vo.getIsPage());
lqw.eq(vo.getCreateBy() != null, SysRole::getCreateBy, vo.getCreateBy());
lqw.eq(vo.getUpdateBy() != null, SysRole::getUpdateBy, vo.getUpdateBy());
lqw.orderByDesc(SysRole::getCreateDate);
return lqw;
}
}

View File

@ -41,7 +41,7 @@ spring:
connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000
props:
sql:
show: false
show: true
jackson:
date-format: yyyy-MM-dd HH:mm:ss