增加app端代理商管理员工的接口
This commit is contained in:
parent
a1ed3f5b06
commit
935c4cd828
@ -336,7 +336,8 @@ public enum ResultCodeEnum {
|
|||||||
PARTICIPATION_FAILED(13010, "参与活动失败"),
|
PARTICIPATION_FAILED(13010, "参与活动失败"),
|
||||||
PARENT_NOT_FOUND(13011, "家长不存在"),
|
PARENT_NOT_FOUND(13011, "家长不存在"),
|
||||||
INVALID_ACTIVITY_STATUS(13012, "无效的活动状态"),
|
INVALID_ACTIVITY_STATUS(13012, "无效的活动状态"),
|
||||||
PARENT_ALREADY_SIGN_UP(130121, "已经报名参加该活动");
|
PARENT_ALREADY_SIGN_UP(130121, "已经报名参加该活动"),
|
||||||
|
UNAUTHORIZED_UPDATE_EMPLOYEE(13013, "无权限更新员工信息");
|
||||||
|
|
||||||
private int code;
|
private int code;
|
||||||
private String msg;
|
private String msg;
|
||||||
|
|||||||
@ -0,0 +1,94 @@
|
|||||||
|
package com.seer.teach.mp.app.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||||
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import com.seer.teach.common.PageListBean;
|
||||||
|
import com.seer.teach.common.ResultBean;
|
||||||
|
import com.seer.teach.common.annotation.LogPrint;
|
||||||
|
import com.seer.teach.common.enums.ResultCodeEnum;
|
||||||
|
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationQueryReq;
|
||||||
|
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationReq;
|
||||||
|
import com.seer.teach.mp.app.controller.resp.AppAgentEmployeeRelationResp;
|
||||||
|
import com.seer.teach.mp.app.service.IAppAgentEmployeeRelationService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@LogPrint
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@Tag(name = "App - 代理商员工管理")
|
||||||
|
@RequestMapping("/app/agent/employee")
|
||||||
|
public class AppAgentEmployeeRelationController {
|
||||||
|
|
||||||
|
private final IAppAgentEmployeeRelationService agentEmployeeRelationService;
|
||||||
|
|
||||||
|
@Operation(summary = "我的员工列表")
|
||||||
|
@PostMapping("/page-list")
|
||||||
|
@SaCheckLogin
|
||||||
|
public ResultBean<PageListBean<AppAgentEmployeeRelationResp>> pageList(@RequestBody @Validated AppAgentEmployeeRelationQueryReq query) {
|
||||||
|
Integer agentId = StpUtil.getLoginIdAsInt();
|
||||||
|
query.setAgentId(agentId);
|
||||||
|
return ResultBean.success(agentEmployeeRelationService.pageList(query));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "新增员工")
|
||||||
|
@PostMapping("/add")
|
||||||
|
@SaCheckLogin
|
||||||
|
public ResultBean<Boolean> addEmployee(@RequestBody @Validated AppAgentEmployeeRelationReq request) {
|
||||||
|
Integer agentId = StpUtil.getLoginIdAsInt();
|
||||||
|
request.setAgentId(agentId);
|
||||||
|
return ResultBean.success(agentEmployeeRelationService.addEmployee(request));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "更新员工信息")
|
||||||
|
@PostMapping("/update")
|
||||||
|
@SaCheckLogin
|
||||||
|
public ResultBean<Boolean> updateEmployee(@RequestBody @Validated AppAgentEmployeeRelationReq request) {
|
||||||
|
Integer agentId = StpUtil.getLoginIdAsInt();
|
||||||
|
// 验证员工是否属于当前代理商
|
||||||
|
boolean belongsToAgent = agentEmployeeRelationService.isEmployeeBelongsToAgent(request.getId(), agentId);
|
||||||
|
if (!belongsToAgent) {
|
||||||
|
return ResultBean.error(ResultCodeEnum.UNAUTHORIZED_UPDATE_EMPLOYEE);
|
||||||
|
}
|
||||||
|
return ResultBean.success(agentEmployeeRelationService.updateEmployee(request));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "删除员工")
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
@SaCheckLogin
|
||||||
|
public ResultBean<Boolean> deleteEmployee(@PathVariable Integer id) {
|
||||||
|
Integer agentId = StpUtil.getLoginIdAsInt();
|
||||||
|
boolean belongsToAgent = agentEmployeeRelationService.isEmployeeBelongsToAgent(id, agentId);
|
||||||
|
if (!belongsToAgent) {
|
||||||
|
return ResultBean.error(ResultCodeEnum.UNAUTHORIZED_UPDATE_EMPLOYEE);
|
||||||
|
}
|
||||||
|
return ResultBean.success(agentEmployeeRelationService.deleteEmployee(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "员工详情")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
@SaCheckLogin
|
||||||
|
public ResultBean<AppAgentEmployeeRelationResp> getEmployee(@PathVariable Integer id) {
|
||||||
|
Integer agentId = StpUtil.getLoginIdAsInt(); // 假设代理商ID就是登录ID
|
||||||
|
// 验证员工是否属于当前代理商
|
||||||
|
boolean belongsToAgent = agentEmployeeRelationService.isEmployeeBelongsToAgent(id, agentId);
|
||||||
|
if (!belongsToAgent) {
|
||||||
|
return ResultBean.error(ResultCodeEnum.UNAUTHORIZED_UPDATE_EMPLOYEE);
|
||||||
|
}
|
||||||
|
AppAgentEmployeeRelationResp result = agentEmployeeRelationService.getById(id);
|
||||||
|
return ResultBean.success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "获取所有员工列表")
|
||||||
|
@GetMapping("/all")
|
||||||
|
@SaCheckLogin
|
||||||
|
public ResultBean<List<AppAgentEmployeeRelationResp>> getAllEmployees() {
|
||||||
|
Integer agentId = StpUtil.getLoginIdAsInt(); // 假设代理商ID就是登录ID
|
||||||
|
return ResultBean.success(agentEmployeeRelationService.getAllEmployeesByAgentId(agentId));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,6 +8,9 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class AppAgentEmployeeRelationQueryReq extends PageRequest {
|
public class AppAgentEmployeeRelationQueryReq extends PageRequest {
|
||||||
|
|
||||||
|
@Schema(description = "代理商ID")
|
||||||
|
private Integer agentId; // 用于限制只能查询当前代理商的员工
|
||||||
|
|
||||||
@Schema(description = "员工职位")
|
@Schema(description = "员工职位")
|
||||||
private String position;
|
private String position;
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
package com.seer.teach.mp.app.controller.req;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Schema(name = "AppAgentEmployeeRelationReq", description = "App端代理商员工关联请求参数")
|
||||||
|
@Data
|
||||||
|
public class AppAgentEmployeeRelationReq {
|
||||||
|
|
||||||
|
@Schema(description = "关联ID")
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Schema(description = "代理商ID")
|
||||||
|
private Integer agentId; // 用于内部验证,不强制要求前端传入
|
||||||
|
|
||||||
|
@NotNull(message = "员工用户ID不能为空")
|
||||||
|
@Schema(description = "员工用户ID")
|
||||||
|
private Integer employeeUserId;
|
||||||
|
|
||||||
|
@Schema(description = "员工职位")
|
||||||
|
private String position;
|
||||||
|
|
||||||
|
@Schema(description = "员工状态:0-禁用,1-启用")
|
||||||
|
private Integer status = 1;
|
||||||
|
}
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
package com.seer.teach.mp.app.service;
|
||||||
|
|
||||||
|
import com.seer.teach.common.PageListBean;
|
||||||
|
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationQueryReq;
|
||||||
|
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationReq;
|
||||||
|
import com.seer.teach.mp.app.controller.resp.AppAgentEmployeeRelationResp;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* App端代理商员工关系服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Lingma
|
||||||
|
* @since 2025-12-30
|
||||||
|
*/
|
||||||
|
public interface IAppAgentEmployeeRelationService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询我的员工列表
|
||||||
|
*
|
||||||
|
* @param query 查询条件
|
||||||
|
* @return 员工关联分页列表
|
||||||
|
*/
|
||||||
|
PageListBean<AppAgentEmployeeRelationResp> pageList(AppAgentEmployeeRelationQueryReq query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增员工
|
||||||
|
*
|
||||||
|
* @param request 员工关联请求对象
|
||||||
|
* @return 操作是否成功
|
||||||
|
*/
|
||||||
|
boolean addEmployee(AppAgentEmployeeRelationReq request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新员工信息
|
||||||
|
*
|
||||||
|
* @param request 员工关联请求对象
|
||||||
|
* @return 操作是否成功
|
||||||
|
*/
|
||||||
|
boolean updateEmployee(AppAgentEmployeeRelationReq request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除员工
|
||||||
|
*
|
||||||
|
* @param id 关联ID
|
||||||
|
* @return 操作是否成功
|
||||||
|
*/
|
||||||
|
boolean deleteEmployee(Integer id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ID获取详情
|
||||||
|
*
|
||||||
|
* @param id 关联ID
|
||||||
|
* @return 关联详情
|
||||||
|
*/
|
||||||
|
AppAgentEmployeeRelationResp getById(Integer id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据代理商ID获取所有员工列表
|
||||||
|
*
|
||||||
|
* @param agentId 代理商ID
|
||||||
|
* @return 员工关联列表
|
||||||
|
*/
|
||||||
|
List<AppAgentEmployeeRelationResp> getAllEmployeesByAgentId(Integer agentId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证员工是否属于指定代理商
|
||||||
|
*
|
||||||
|
* @param relationId 关联ID
|
||||||
|
* @param agentId 代理商ID
|
||||||
|
* @return 是否属于
|
||||||
|
*/
|
||||||
|
boolean isEmployeeBelongsToAgent(Integer relationId, Integer agentId);
|
||||||
|
}
|
||||||
@ -0,0 +1,180 @@
|
|||||||
|
package com.seer.teach.mp.app.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.seer.teach.common.PageListBean;
|
||||||
|
import com.seer.teach.common.enums.ResultCodeEnum;
|
||||||
|
import com.seer.teach.common.exception.CommonException;
|
||||||
|
import com.seer.teach.common.utils.AssertUtils;
|
||||||
|
import com.seer.teach.common.utils.PageConverterUtils;
|
||||||
|
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationQueryReq;
|
||||||
|
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationReq;
|
||||||
|
import com.seer.teach.mp.app.controller.resp.AppAgentEmployeeRelationResp;
|
||||||
|
import com.seer.teach.mp.app.service.IAppAgentEmployeeRelationService;
|
||||||
|
import com.seer.teach.mp.entity.MpAgentEmployeeRelationEntity;
|
||||||
|
import com.seer.teach.mp.service.IMpAgentEmployeeRelationService;
|
||||||
|
import com.seer.teach.user.api.UserService;
|
||||||
|
import com.seer.teach.user.api.dto.UserInfoDTO;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* App端代理商员工关系服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Lingma
|
||||||
|
* @since 2025-12-30
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AppAgentEmployeeRelationServiceImpl implements IAppAgentEmployeeRelationService {
|
||||||
|
|
||||||
|
private final IMpAgentEmployeeRelationService mpAgentEmployeeRelationService;
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageListBean<AppAgentEmployeeRelationResp> pageList(AppAgentEmployeeRelationQueryReq query) {
|
||||||
|
log.info("查询参数:{}", query);
|
||||||
|
IPage<MpAgentEmployeeRelationEntity> page = new Page<>(query.getPageNo(), query.getPageSize());
|
||||||
|
var pageResult = mpAgentEmployeeRelationService.page(page, new LambdaQueryWrapper<>(MpAgentEmployeeRelationEntity.class)
|
||||||
|
.eq(query.getAgentId() != null, MpAgentEmployeeRelationEntity::getAgentId, query.getAgentId()) // 只查询当前代理商的员工
|
||||||
|
.like(StringUtils.isNotBlank(query.getPosition()), MpAgentEmployeeRelationEntity::getPosition, query.getPosition())
|
||||||
|
.eq(query.getStatus() != null, MpAgentEmployeeRelationEntity::getStatus, query.getStatus()));
|
||||||
|
|
||||||
|
if (pageResult.getRecords() == null || pageResult.getRecords().isEmpty()) {
|
||||||
|
log.info("查询结果为空");
|
||||||
|
}
|
||||||
|
log.info("查询代理商员工数量:{}", pageResult.getTotal());
|
||||||
|
|
||||||
|
return PageConverterUtils.convertPageListBean(pageResult, this::convertToRespList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addEmployee(AppAgentEmployeeRelationReq request) {
|
||||||
|
// 检查员工是否已经存在于当前代理商下
|
||||||
|
LambdaQueryWrapper<MpAgentEmployeeRelationEntity> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(MpAgentEmployeeRelationEntity::getAgentId, request.getAgentId())
|
||||||
|
.eq(MpAgentEmployeeRelationEntity::getEmployeeUserId, request.getEmployeeUserId());
|
||||||
|
|
||||||
|
MpAgentEmployeeRelationEntity existing = mpAgentEmployeeRelationService.getOne(wrapper);
|
||||||
|
if (existing != null) {
|
||||||
|
throw new CommonException(ResultCodeEnum.DATA_REPEAT_ERROR, "该员工已属于当前代理商");
|
||||||
|
}
|
||||||
|
|
||||||
|
MpAgentEmployeeRelationEntity entity = new MpAgentEmployeeRelationEntity();
|
||||||
|
entity.setAgentId(request.getAgentId());
|
||||||
|
entity.setEmployeeUserId(request.getEmployeeUserId());
|
||||||
|
entity.setPosition(request.getPosition());
|
||||||
|
entity.setStatus(request.getStatus());
|
||||||
|
|
||||||
|
boolean result = mpAgentEmployeeRelationService.save(entity);
|
||||||
|
log.info("新增员工结果:{}", result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateEmployee(AppAgentEmployeeRelationReq request) {
|
||||||
|
// 验证员工是否属于当前代理商(通过ID查询并验证)
|
||||||
|
MpAgentEmployeeRelationEntity existing = mpAgentEmployeeRelationService.getById(request.getId());
|
||||||
|
AssertUtils.notNull(existing, ResultCodeEnum.DATA_NOT_EXIST);
|
||||||
|
|
||||||
|
if (!existing.getAgentId().equals(request.getAgentId())) {
|
||||||
|
throw new CommonException(ResultCodeEnum.PERMISSION_DENIED, "无权限操作此员工");
|
||||||
|
}
|
||||||
|
|
||||||
|
existing.setEmployeeUserId(request.getEmployeeUserId());
|
||||||
|
existing.setPosition(request.getPosition());
|
||||||
|
existing.setStatus(request.getStatus());
|
||||||
|
|
||||||
|
boolean result = mpAgentEmployeeRelationService.updateById(existing);
|
||||||
|
log.info("更新员工结果:{}", result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteEmployee(Integer id) {
|
||||||
|
// 验证员工是否属于当前代理商
|
||||||
|
MpAgentEmployeeRelationEntity existing = mpAgentEmployeeRelationService.getById(id);
|
||||||
|
AssertUtils.notNull(existing, ResultCodeEnum.DATA_NOT_EXIST);
|
||||||
|
|
||||||
|
boolean result = mpAgentEmployeeRelationService.removeById(id);
|
||||||
|
log.info("删除员工结果:{}", result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AppAgentEmployeeRelationResp getById(Integer id) {
|
||||||
|
MpAgentEmployeeRelationEntity entity = mpAgentEmployeeRelationService.getById(id);
|
||||||
|
if (entity == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return convertToResp(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AppAgentEmployeeRelationResp> getAllEmployeesByAgentId(Integer agentId) {
|
||||||
|
List<MpAgentEmployeeRelationEntity> entities = mpAgentEmployeeRelationService.list(
|
||||||
|
new LambdaQueryWrapper<MpAgentEmployeeRelationEntity>()
|
||||||
|
.eq(MpAgentEmployeeRelationEntity::getAgentId, agentId)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (CollectionUtil.isEmpty(entities)) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
return entities.stream()
|
||||||
|
.map(this::convertToResp)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmployeeBelongsToAgent(Integer relationId, Integer agentId) {
|
||||||
|
MpAgentEmployeeRelationEntity entity = mpAgentEmployeeRelationService.getById(relationId);
|
||||||
|
if (entity == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return entity.getAgentId().equals(agentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将实体转换为响应对象
|
||||||
|
*/
|
||||||
|
private AppAgentEmployeeRelationResp convertToResp(MpAgentEmployeeRelationEntity entity) {
|
||||||
|
AppAgentEmployeeRelationResp resp = new AppAgentEmployeeRelationResp();
|
||||||
|
resp.setId(entity.getId());
|
||||||
|
resp.setAgentId(entity.getAgentId());
|
||||||
|
resp.setPosition(entity.getPosition());
|
||||||
|
resp.setStatus(entity.getStatus());
|
||||||
|
resp.setCreateTime(entity.getCreateTime());
|
||||||
|
resp.setUpdateTime(entity.getUpdateTime());
|
||||||
|
|
||||||
|
// 通过用户服务获取员工的详细信息
|
||||||
|
if (entity.getEmployeeUserId() != null) {
|
||||||
|
UserInfoDTO userInfo = userService.getUserInfoById(entity.getEmployeeUserId());
|
||||||
|
resp.setEmployeeUserInfo(userInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量转换实体为响应对象
|
||||||
|
*/
|
||||||
|
private List<AppAgentEmployeeRelationResp> convertToRespList(List<MpAgentEmployeeRelationEntity> entities) {
|
||||||
|
if (CollectionUtil.isEmpty(entities)) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
return entities.stream()
|
||||||
|
.map(this::convertToResp)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user