运营商管理、角色管理优化

This commit is contained in:
attiya 2025-09-03 13:43:04 +08:00
parent 805244052a
commit ad6c13ac99
8 changed files with 179 additions and 33 deletions

View File

@ -39,13 +39,7 @@ public class EbikeOperatorController {
*/ */
@PostMapping("save") @PostMapping("save")
public JsonResult<?> save(@Validated @RequestBody EbikeOperatorVo ebikeOperator) { public JsonResult<?> save(@Validated @RequestBody EbikeOperatorVo ebikeOperator) {
EbikeOperator operator = EbikeOperator.builder() ebikeOperatorService.saveOperator(ebikeOperator);
.operatorName(ebikeOperator.getOperatorName())
.address(ebikeOperator.getAddress())
.contactPhone(ebikeOperator.getContactPhone())
.createBy(StpUtil.getLoginIdAsLong())
.build();
ebikeOperatorService.save(operator);
return JsonResult.success(); return JsonResult.success();
} }
@ -55,7 +49,7 @@ public class EbikeOperatorController {
* @param operatorId 主键 * @param operatorId 主键
* @return {@code true} 删除成功{@code false} 删除失败 * @return {@code true} 删除成功{@code false} 删除失败
*/ */
@PostMapping("remove") @GetMapping("remove")
public JsonResult<?> remove(@RequestParam("operatorId") Long operatorId) { public JsonResult<?> remove(@RequestParam("operatorId") Long operatorId) {
ebikeOperatorService.removeById(operatorId); ebikeOperatorService.removeById(operatorId);
return JsonResult.success(); return JsonResult.success();

View File

@ -3,12 +3,16 @@ package com.cdzy.staff.controller;
import com.cdzy.common.model.request.PageParam; import com.cdzy.common.model.request.PageParam;
import com.cdzy.common.model.response.JsonResult; import com.cdzy.common.model.response.JsonResult;
import com.cdzy.staff.model.entity.EbikeRole; import com.cdzy.staff.model.entity.EbikeRole;
import com.cdzy.staff.model.vo.EbikeRoleVo;
import com.cdzy.staff.service.EbikeRoleService; import com.cdzy.staff.service.EbikeRoleService;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.util.StringUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;import static com.cdzy.staff.model.entity.table.EbikeRoleTableDef.EBIKE_ROLE;
/** /**
* 员工角色表 控制层 * 员工角色表 控制层
@ -30,20 +34,20 @@ public class EbikeRoleController {
* @return {@code true} 添加成功{@code false} 添加失败 * @return {@code true} 添加成功{@code false} 添加失败
*/ */
@PostMapping("save") @PostMapping("save")
public JsonResult<?> save(@RequestBody EbikeRole ebikeRole) { public JsonResult<?> save(@Validated @RequestBody EbikeRoleVo ebikeRole) {
ebikeRoleService.save(ebikeRole); ebikeRoleService.saveRole(ebikeRole);
return JsonResult.success(); return JsonResult.success();
} }
/** /**
* 根据主键删除员工角色表 * 根据主键删除员工角色表
* *
* @param id 主键 * @param roleId 角色主键
* @return {@code true} 删除成功{@code false} 删除失败 * @return {@code true} 删除成功{@code false} 删除失败
*/ */
@PostMapping("remove/{id}") @GetMapping("remove")
public JsonResult<?> remove(@PathVariable Long id) { public JsonResult<?> remove(@RequestParam("roleId") Long roleId) {
ebikeRoleService.removeById(id); ebikeRoleService.removeById(roleId);
return JsonResult.success(); return JsonResult.success();
} }
@ -54,8 +58,8 @@ public class EbikeRoleController {
* @return {@code true} 更新成功{@code false} 更新失败 * @return {@code true} 更新成功{@code false} 更新失败
*/ */
@PostMapping("update") @PostMapping("update")
public JsonResult<?> update(@RequestBody EbikeRole ebikeRole) { public JsonResult<?> update(@Validated @RequestBody EbikeRoleVo ebikeRole) {
ebikeRoleService.updateById(ebikeRole); ebikeRoleService.updateRole(ebikeRole);
return JsonResult.success(); return JsonResult.success();
} }
@ -73,12 +77,11 @@ public class EbikeRoleController {
/** /**
* 根据员工角色表主键获取详细信息 * 根据员工角色表主键获取详细信息
* *
* @param id 员工角色表主键
* @return 员工角色表详情 * @return 员工角色表详情
*/ */
@GetMapping("getInfo/{id}") @GetMapping("getInfo")
public JsonResult<?> getInfo(@PathVariable Long id) { public JsonResult<?> getInfo(@RequestParam("roleId") Long roleId) {
EbikeRole ebikeRole = ebikeRoleService.getById(id); EbikeRole ebikeRole = ebikeRoleService.getById(roleId);
return JsonResult.success(ebikeRole); return JsonResult.success(ebikeRole);
} }
@ -89,8 +92,10 @@ public class EbikeRoleController {
* @return 分页对象 * @return 分页对象
*/ */
@GetMapping("page") @GetMapping("page")
public JsonResult<?> page(PageParam pageParam) { public JsonResult<?> page(PageParam pageParam, String roleName) {
Page<EbikeRole> rolePage = ebikeRoleService.page(pageParam.getPage()); QueryWrapper queryWrapper =QueryWrapper.create()
.where(EBIKE_ROLE.ROLE_NAME.like(roleName, StringUtil.hasText(roleName)));
Page<EbikeRole> rolePage = ebikeRoleService.page(pageParam.getPage(),queryWrapper);
return JsonResult.success(rolePage); return JsonResult.success(rolePage);
} }

View File

@ -37,7 +37,7 @@ public class EbikeRole implements Serializable {
private String roleName; private String roleName;
/** /**
* 角色表示 * 角色标识
*/ */
private String roleCode; private String roleCode;
@ -65,10 +65,4 @@ public class EbikeRole implements Serializable {
@Column(onInsertValue = "false") @Column(onInsertValue = "false")
private Boolean sysAdmin; private Boolean sysAdmin;
@Column(onInsertValue = "false")
private Boolean operatorAdmin;
} }

View File

@ -0,0 +1,52 @@
package com.cdzy.staff.model.vo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
/**
* 员工角色表 实体类
*
* @author loves
* @since 2025-08-08
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EbikeRoleVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private Long roleId;
/**
* 角色名称
*/
@NotBlank(message = "角色名称不能为空")
private String roleName;
/**
* 角色标识
*/
@NotBlank(message = "角色标识不能为空")
private String roleCode;
/**
* 所属运营商
*/
@NotNull(message = "运营商ID不能为空")
private Long operatorId;
/**
* 描述
*/
private String description;
}

View File

@ -13,4 +13,6 @@ import com.cdzy.staff.model.entity.EbikeOperator;
public interface EbikeOperatorService extends IService<EbikeOperator> { public interface EbikeOperatorService extends IService<EbikeOperator> {
void updateOperator(EbikeOperatorVo ebikeOperator); void updateOperator(EbikeOperatorVo ebikeOperator);
void saveOperator(EbikeOperatorVo ebikeOperator);
} }

View File

@ -1,5 +1,6 @@
package com.cdzy.staff.service; package com.cdzy.staff.service;
import com.cdzy.staff.model.vo.EbikeRoleVo;
import com.mybatisflex.core.service.IService; import com.mybatisflex.core.service.IService;
import com.cdzy.staff.model.entity.EbikeRole; import com.cdzy.staff.model.entity.EbikeRole;
@ -11,4 +12,7 @@ import com.cdzy.staff.model.entity.EbikeRole;
*/ */
public interface EbikeRoleService extends IService<EbikeRole> { public interface EbikeRoleService extends IService<EbikeRole> {
void saveRole(EbikeRoleVo ebikeRole);
void updateRole(EbikeRoleVo ebikeRole);
} }

View File

@ -6,10 +6,15 @@ import com.cdzy.staff.mapper.EbikeOperatorMapper;
import com.cdzy.staff.model.entity.EbikeOperator; import com.cdzy.staff.model.entity.EbikeOperator;
import com.cdzy.staff.model.vo.EbikeOperatorVo; import com.cdzy.staff.model.vo.EbikeOperatorVo;
import com.cdzy.staff.service.EbikeOperatorService; import com.cdzy.staff.service.EbikeOperatorService;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl; import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects;
import static com.cdzy.staff.model.entity.table.EbikeOperatorTableDef.EBIKE_OPERATOR;
/** /**
* 运营商信息表 服务层实现 * 运营商信息表 服务层实现
* *
@ -32,14 +37,39 @@ public class EbikeOperatorServiceImpl extends ServiceImpl<EbikeOperatorMapper, E
if (operatorOld == null){ if (operatorOld == null){
throw new EbikeException("该运营商不存在"); throw new EbikeException("该运营商不存在");
}else { }else {
checkOperatorName(ebikeOperator);
EbikeOperator operator = EbikeOperator.builder() EbikeOperator operator = EbikeOperator.builder()
.operatorId(operatorId)
.operatorName(ebikeOperator.getOperatorName()) .operatorName(ebikeOperator.getOperatorName())
.address(ebikeOperator.getAddress()) .address(ebikeOperator.getAddress())
.contactPhone(ebikeOperator.getContactPhone()) .contactPhone(ebikeOperator.getContactPhone())
.createBy((Long) StpUtil.getLoginId()) .createBy(StpUtil.getLoginIdAsLong())
.build(); .build();
ebikeOperatorMapper.update(operator); ebikeOperatorMapper.update(operator);
} }
} }
} }
@Override
public void saveOperator(EbikeOperatorVo ebikeOperator) {
EbikeOperator operator = EbikeOperator.builder()
.operatorName(ebikeOperator.getOperatorName())
.address(ebikeOperator.getAddress())
.contactPhone(ebikeOperator.getContactPhone())
.createBy(StpUtil.getLoginIdAsLong())
.build();
ebikeOperatorMapper.insert(operator);
}
public void checkOperatorName(EbikeOperatorVo ebikeOperator){
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_OPERATOR.OPERATOR_NAME.eq(ebikeOperator.getOperatorName()));
EbikeOperator operator = ebikeOperatorMapper.selectOneByQuery(queryWrapper);
if (operator != null){
Long operatorId = ebikeOperator.getOperatorId();
if (operatorId != null && !Objects.equals(operator.getOperatorId(), operatorId)){
throw new EbikeException("该运营商名称已被占用");
}
}
}
} }

View File

@ -1,9 +1,15 @@
package com.cdzy.staff.service.impl; package com.cdzy.staff.service.impl;
import com.cdzy.common.ex.EbikeException;
import com.cdzy.staff.mapper.EbikeOperatorMapper;
import com.cdzy.staff.model.entity.EbikeOperator;
import com.cdzy.staff.model.vo.EbikeRoleVo;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl; import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.cdzy.staff.model.entity.EbikeRole; import com.cdzy.staff.model.entity.EbikeRole;
import com.cdzy.staff.mapper.EbikeRoleMapper; import com.cdzy.staff.mapper.EbikeRoleMapper;
import com.cdzy.staff.service.EbikeRoleService; import com.cdzy.staff.service.EbikeRoleService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -15,4 +21,63 @@ import org.springframework.stereotype.Service;
@Service @Service
public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole> implements EbikeRoleService { public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole> implements EbikeRoleService {
@Resource
private EbikeRoleMapper ebikeRoleMapper;
@Resource
private EbikeOperatorMapper ebikeOperatorMapper;
@Override
public void saveRole(EbikeRoleVo ebikeRole) {
Long operatorId = ebikeRole.getOperatorId();
checkOperator(operatorId);
checkRoleCode(ebikeRole.getRoleCode());
EbikeRole role = EbikeRole.builder()
.roleName(ebikeRole.getRoleName())
.operatorId(operatorId)
.roleCode(ebikeRole.getRoleCode())
.description(ebikeRole.getDescription())
.build();
ebikeRoleMapper.insert(role);
}
@Override
public void updateRole(EbikeRoleVo ebikeRole) {
Long operatorId = ebikeRole.getOperatorId();
checkRole(ebikeRole.getRoleId());
checkOperator(operatorId);
checkRoleCode(ebikeRole.getRoleCode());
EbikeRole role = EbikeRole.builder()
.roleId(ebikeRole.getRoleId())
.roleName(ebikeRole.getRoleName())
.operatorId(operatorId)
.roleCode(ebikeRole.getRoleCode())
.description(ebikeRole.getDescription())
.build();
ebikeRoleMapper.update(role);
}
public void checkOperator(Long operatorId){
EbikeOperator ebikeOperator = ebikeOperatorMapper.selectOneById(operatorId);
if (ebikeOperator == null) {
throw new EbikeException("该运营商不存在");
}
}
public void checkRole(Long roleId){
EbikeRole ebikeRole = ebikeRoleMapper.selectOneById(roleId);
if (ebikeRole == null) {
throw new EbikeException("该角色不存在");
}
}
public void checkRoleCode(String roleCode){
QueryWrapper queryWrapper = QueryWrapper.create()
.eq(EbikeRole::getRoleCode, roleCode);
EbikeRole selected = ebikeRoleMapper.selectOneByQuery(queryWrapper);
if (selected != null) {
throw new EbikeException("该权限标识已被占用");
}
}
} }