新增system管理模块 #1

Merged
gdlgxy2312411020414 merged 3 commits from develop into main 1 day ago

@ -0,0 +1,91 @@
package com.cgs.e_commerce.module.marketing.controller;
import com.cgs.e_commerce.common.utils.AliOssUtil;
import com.cgs.e_commerce.common.utils.Result;
import com.cgs.e_commerce.module.marketing.entity.SmsHomeCarousel;
import com.cgs.e_commerce.module.marketing.service.SmsHomeCarouselService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping("/marketing/carousel")
public class SmsHomeCarouselController {
@Autowired
private SmsHomeCarouselService carouselService;
@PostMapping("/upload")
public Result<String> uploadCarouselPic(@RequestParam("file") MultipartFile file) throws IOException {
// 1. 校验文件
if (file.isEmpty()) {
return Result.error("上传文件不能为空");
}
// 2. 获取原文件名,处理文件名防止重复
String originalFilename = file.getOriginalFilename();
if (originalFilename == null || !originalFilename.contains(".")) {
return Result.error("文件格式非法");
}
String filename = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
// 3. 调用阿里云OSS工具类上传文件获取URL
String picUrl = AliOssUtil.uploadFile(filename, file.getInputStream());
// 4. 返回OSS的图片URL给前端
return Result.success(picUrl);
}
// ========== 原添加接口(无需修改逻辑,前端需先调用/upload获取URL再传入pic字段 ==========
@PostMapping
public Result<String> addCarousel(@RequestBody SmsHomeCarousel carousel) {
carouselService.addCarousel(carousel);
return Result.success("轮播添加成功");
}
// ========== 原更新接口逻辑不变前端同样先上传图片获取新URL再更新pic字段 ==========
@PostMapping("/update")
public Result<String> updateCarousel(@RequestBody SmsHomeCarousel carousel) {
SmsHomeCarousel existingCarousel = carouselService.getCarouselById(carousel.getId());
if (existingCarousel == null) {
return Result.error("轮播不存在");
}
carouselService.updateCarousel(carousel);
return Result.success("轮播更新成功");
}
@PostMapping("/list")
public Result<List<SmsHomeCarousel>> getCarouselList() {
List<SmsHomeCarousel> carousels = carouselService.getCarouselList();
return Result.success(carousels);
}
@PostMapping("/detail")
public Result<SmsHomeCarousel> getCarouselDetail(@RequestBody Map<String, Long> params) {
Long id = params.get("id");
SmsHomeCarousel carousel = carouselService.getCarouselById(id);
if (carousel == null) {
return Result.error("轮播不存在");
}
return Result.success(carousel);
}
@PostMapping("/delete")
public Result<String> deleteCarousel(@RequestBody Map<String, Long> params) {
Long id = params.get("id");
SmsHomeCarousel existingCarousel = carouselService.getCarouselById(id);
if (existingCarousel == null) {
return Result.error("轮播不存在");
}
carouselService.deleteCarousel(id);
return Result.success("轮播删除成功");
}
@PostMapping("/enabled")
public Result<List<SmsHomeCarousel>> getEnabledCarouselList() {
List<SmsHomeCarousel> carousels = carouselService.getEnabledCarouselList();
return Result.success(carousels);
}
}

@ -0,0 +1,14 @@
package com.cgs.e_commerce.module.marketing.entity;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@Data
public class SmsHomeCarousel {
private Long id;
@NotBlank(message = "图片url不能为空")
private String pic;
private String url;
private Integer sort;
private Integer status;
}

@ -0,0 +1,35 @@
package com.cgs.e_commerce.module.marketing.mapper;
import com.cgs.e_commerce.module.marketing.entity.SmsHomeCarousel;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface SmsHomeCarouselMapper {
// 新增轮播
@Insert("insert into sms_home_carousel(pic, url, sort, status) " +
"values(#{pic}, #{url}, #{sort}, #{status})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void addCarousel(SmsHomeCarousel carousel);
// 查询轮播列表
@Select("select * from sms_home_carousel order by sort asc")
List<SmsHomeCarousel> getCarouselList();
// 根据ID查询轮播
@Select("select * from sms_home_carousel where id = #{id}")
SmsHomeCarousel getCarouselById(Long id);
// 更新轮播
@Update("update sms_home_carousel set pic = #{pic}, url = #{url}, sort = #{sort}, status = #{status} where id = #{id}")
void updateCarousel(SmsHomeCarousel carousel);
// 删除轮播
@Delete("delete from sms_home_carousel where id = #{id}")
void deleteCarousel(Long id);
// 查询启用的轮播列表(前端展示用)
@Select("select * from sms_home_carousel where status = 1 order by sort asc")
List<SmsHomeCarousel> getEnabledCarouselList();
}

@ -0,0 +1,38 @@
package com.cgs.e_commerce.module.marketing.service;
import com.cgs.e_commerce.module.marketing.entity.SmsHomeCarousel;
import com.cgs.e_commerce.module.marketing.mapper.SmsHomeCarouselMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SmsHomeCarouselService {
@Autowired
private SmsHomeCarouselMapper carouselMapper;
public void addCarousel(SmsHomeCarousel carousel) {
carouselMapper.addCarousel(carousel);
}
public List<SmsHomeCarousel> getCarouselList() {
return carouselMapper.getCarouselList();
}
public SmsHomeCarousel getCarouselById(Long id) {
return carouselMapper.getCarouselById(id);
}
public void updateCarousel(SmsHomeCarousel carousel) {
carouselMapper.updateCarousel(carousel);
}
public void deleteCarousel(Long id) {
carouselMapper.deleteCarousel(id);
}
public List<SmsHomeCarousel> getEnabledCarouselList() {
return carouselMapper.getEnabledCarouselList();
}
}

@ -0,0 +1,107 @@
package com.cgs.e_commerce.module.system.controller;
import com.cgs.e_commerce.common.utils.Result;
import com.cgs.e_commerce.module.system.dto.RoleMenuAssignDto;
import com.cgs.e_commerce.module.system.entity.SysMenu;
import com.cgs.e_commerce.module.system.entity.SysUserMenu;
import com.cgs.e_commerce.module.system.service.SysMenuService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/sys/menu")
@Slf4j
public class SysMenuController {
@Autowired
private SysMenuService sysMenuService;
@PostMapping("/list")
public Result<List<SysMenu>> list() {
List<SysMenu> menus = sysMenuService.listWithTree();
log.info("获取菜单列表成功,共{}个菜单", menus.size());
return Result.success(menus);
}
@PostMapping("/add")
public Result<String> add(@RequestBody @Validated SysMenu sysMenu) {
sysMenuService.add(sysMenu);
log.info("菜单添加成功:{}", sysMenu.getMenuName());
return Result.success("添加成功");
}
@PostMapping("/update")
public Result<String> update(@RequestBody @Validated SysMenu sysMenu) {
sysMenuService.update(sysMenu);
log.info("菜单更新成功:{}", sysMenu.getMenuName());
return Result.success("修改成功");
}
@PostMapping("/delete")
public Result<String> delete(@RequestBody Long id) {
if (id == null || id <= 0) {
return Result.error("菜单ID不能为空且必须大于0");
}
sysMenuService.delete(id);
log.info("菜单删除成功ID={}", id);
return Result.success("删除成功");
}
// ====================== 2. 角色-菜单权限分配 ======================
@PostMapping("/role/assign")
public Result<String> assignMenusToRole(@RequestBody RoleMenuAssignDto dto) {
Long roleId = dto.getRoleId();
List<Long> menuIds = dto.getMenuIds();
if (roleId == null || roleId <= 0) {
return Result.error("角色ID不能为空且必须大于0");
}
if (menuIds == null || menuIds.isEmpty()) {
return Result.error("菜单ID列表不能为空");
}
sysMenuService.assignMenusToRole(roleId, menuIds);
log.info("角色菜单分配成功角色ID={}, 菜单数={}", roleId, menuIds.size());
return Result.success("分配成功");
}
/**
* ID
*/
@PostMapping("/role/menus")
public Result<List<Long>> getRoleMenuIds(@RequestBody Long roleId) {
if (roleId == null || roleId <= 0) {
return Result.error("角色ID不能为空且必须大于0");
}
List<Long> menuIds = sysMenuService.getMenuIdsByRoleId(roleId);
log.info("获取角色菜单ID成功角色ID={}", roleId);
return Result.success(menuIds);
}
// ====================== 3. 用户菜单查询 ======================
/**
* GET POST
*/
@PostMapping("/user/current")
public Result<List<SysMenu>> getCurrentUserMenus() {
List<SysMenu> menus = sysMenuService.getCurrentUserMenus();
log.info("获取当前用户菜单成功,共{}个菜单", menus.size());
return Result.success(menus);
}
/**
* ID
*/
@PostMapping("/user/list")
public Result<List<SysMenu>> getMenusByUserId(@RequestBody Long userId) {
if (userId == null || userId <= 0) {
return Result.error("用户ID不能为空且必须大于0");
}
List<SysMenu> menus = sysMenuService.getMenusByUserId(userId);
log.info("获取用户菜单列表成功用户ID={},共{}个菜单", userId, menus.size());
return Result.success(menus);
}
}

@ -0,0 +1,70 @@
package com.cgs.e_commerce.module.system.controller;
import com.cgs.e_commerce.common.utils.Result;
import com.cgs.e_commerce.module.system.dto.RoleAssignDto;
import com.cgs.e_commerce.module.system.entity.SysRole;
import com.cgs.e_commerce.module.system.entity.SysUser;
import com.cgs.e_commerce.module.system.entity.SysUserRole;
import com.cgs.e_commerce.module.system.service.SysRoleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/sys/role")
@Slf4j
public class SysRoleController {
@Autowired
private SysRoleService sysRoleService;
@PostMapping("/add")
public Result<String> add(@RequestBody @Validated SysRole sysRole) {
sysRoleService.add(sysRole);
log.info("角色添加成功:{}", sysRole.getRoleName());
return Result.success("添加成功");
}
@PostMapping("/list")
public Result<List<SysRole>> list() {
List<SysRole> roles = sysRoleService.list();
log.info("获取角色列表成功,共{}个角色", roles.size());
return Result.success(roles);
}
@PostMapping("/update")
public Result<String> update(@RequestBody @Validated SysRole sysRole) {
sysRoleService.update(sysRole);
log.info("角色更新成功:{}", sysRole.getRoleName());
return Result.success("修改成功");
}
@PostMapping("/delete")
public Result<String> delete(@RequestBody Long id) {
sysRoleService.delete(id);
log.info("角色删除成功id={}", id);
return Result.success("删除成功");
}
@PostMapping("/user/roleList")
public Result<List<SysRole>> getRolesByUserId(@RequestBody Long userId) {
List<SysRole> roles = sysRoleService.listByUserId(userId);
return Result.success(roles);
}
@PostMapping("/user/assign")
public Result<String> assignRole(@RequestBody RoleAssignDto dto) {
sysRoleService.assignUserRole(dto.getUserId(), dto.getRoleId());
log.info("用户角色分配成功userId={}, roleId={}", dto.getUserId(), dto.getRoleId());
return Result.success("分配成功");
}
@PostMapping("/user/remove")
public Result<String> removeUserRole(@RequestBody RoleAssignDto dto) {
sysRoleService.removeUserRole(dto.getUserId(), dto.getRoleId());
log.info("用户角色移除成功userId={}, roleId={}", dto.getUserId(), dto.getRoleId());
return Result.success("移除成功");
}
}

@ -0,0 +1,137 @@
package com.cgs.e_commerce.module.system.controller;
import com.aliyun.oss.common.utils.StringUtils;
import com.cgs.e_commerce.common.utils.*;
import com.cgs.e_commerce.common.vo.system.SysUserVo;
import com.cgs.e_commerce.module.system.dto.SysUserLoginDto;
import com.cgs.e_commerce.module.system.dto.SysUserRegisterDto;
import com.cgs.e_commerce.module.system.entity.SysUser;
import com.cgs.e_commerce.module.system.service.SysUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Slf4j
@RestController
@RequestMapping("/sys/user")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@PostMapping("/login")
public Result<String> login(@RequestBody @Validated SysUserLoginDto loginDto) {
String username = loginDto.getUsername();
String password = loginDto.getPassword();
SysUser sysUser = sysUserService.selectByName(username);
if(sysUser==null){
return Result.error("用户不存在");
}
if (sysUser.getStatus() == 0) {
return Result.error("账号已被禁用,请联系管理员");
}
if(BCryptUtils.matches(password,sysUser.getPassword())){
Map<String ,Object> claims = new HashMap<>();
claims.put("username",username);
claims.put("id",sysUser.getId());
claims.put("passwordVersion",sysUser.getPasswordVersion());
String token = JwtUtil.genToken(claims);
//将token 存储到redis,设置一小时的有效时间
ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
stringStringValueOperations.set(token,token,1, TimeUnit.HOURS);
log.info("用户登录成功:{}", username);
return Result.success(token);
}
log.warn("用户登录失败,密码错误:{}", username);
return Result.error("密码错误");
}
@PostMapping("/register")
public Result<String> add(@RequestBody @Validated SysUserRegisterDto registerDto){
String username = registerDto.getUsername();
String password = registerDto.getPassword();
SysUser sysUser = sysUserService.selectByName(username);
if(sysUser!=null){
return Result.error("用户已存在");
}
sysUserService.add(username,password);
log.info("用户注册成功:{}", username);
return Result.success("添加成功");
}
@PostMapping("/info")
public Result<SysUserVo> info(){
Map<String, Object> claims = ThreadLocalUtil.get();
String username = claims.get("username").toString();
SysUser sysUser = sysUserService.selectByName(username);
SysUserVo vo=new SysUserVo();
BeanUtils.copyProperties(sysUser,vo);
return Result.success(vo);
}
@PostMapping("/list")
public Result<List<SysUserVo>> list() {
List<SysUser> list = sysUserService.list();
List<SysUserVo> voList= BeanConvertUtils.convertList(list,SysUserVo.class);
return Result.success(voList);
}
@PostMapping("/updateStatus")
public Result<String> updateStatus(@RequestBody Map<String, Integer> params) {
Long userId = Long.valueOf(params.get("id"));
Integer status = params.get("status"); // 0禁用 1启用
if (userId == null || status == null) {
return Result.error("参数不能为空");
}
sysUserService.updateStatus(userId,status);
log.info("管理员账号状态修改成功用户ID{},状态:{}", userId, status);
return Result.success("状态修改成功");
}
@PostMapping("/updatePassword")
public Result<String> updatePassword(@RequestBody Map<String,String> claims, @RequestHeader("Authorization") String token){
String oldPassword = claims.get("oldPassword");
String newPassword = claims.get("newPassword");
String repPassword = claims.get("repPassword");
if (StringUtils.isNullOrEmpty(oldPassword) || StringUtils.isNullOrEmpty(newPassword) || StringUtils.isNullOrEmpty(repPassword)) {
return Result.error("密码不能为空");
}
if (!newPassword.equals(repPassword)) {
return Result.error("两次密码不一致");
}
Map<String ,Object>map=ThreadLocalUtil.get();
String username = map.get("username").toString();
SysUser sysUser = sysUserService.selectByName(username);
if(BCryptUtils.matches(oldPassword,sysUser.getPassword())) {
sysUserService.updatePassword(newPassword, sysUser.getId());
int newVersion=sysUser.getPasswordVersion()+1;
sysUserService.updatePasswordVersion(sysUser.getId(),newVersion);
// ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
// stringStringValueOperations.getOperations().delete(token);
stringRedisTemplate.opsForValue().set("user:passwordVersion:" + sysUser.getId(), String.valueOf(newVersion));
return Result.success("修改成功");
}
return Result.error("密码错误");
}
}

@ -0,0 +1,9 @@
package com.cgs.e_commerce.module.system.dto;
import lombok.Data;
@Data
public class RoleAssignDto {
private Long userId;
private Long roleId;
}

@ -0,0 +1,10 @@
package com.cgs.e_commerce.module.system.dto;
import lombok.Data;
import java.util.List;
@Data
public class RoleMenuAssignDto {
private Long roleId;
private List<Long> menuIds;
}

@ -0,0 +1,14 @@
package com.cgs.e_commerce.module.system.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
@Data
public class SysUserLoginDto {
@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "密码不能为空")
@Size(min = 6, message = "密码长度不能少于6位")
private String password;
}

@ -0,0 +1,14 @@
package com.cgs.e_commerce.module.system.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
@Data
public class SysUserRegisterDto {
@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "密码不能为空")
@Size(min = 6, message = "密码长度不能少于6位")
private String password;
}

@ -0,0 +1,18 @@
package com.cgs.e_commerce.module.system.entity;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class SysMenu {
private Long id;
@NotEmpty(message = "菜单名称不能为空")
private String menuName;
private Long parentId;
private String path;
private String icon;
private Integer sort;
@NotNull(message = "菜单类型不能为空")
private Integer type;
}

@ -0,0 +1,15 @@
package com.cgs.e_commerce.module.system.entity;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SysOperLog {
private Long id;
private Long userId;
private String operation;
private String method;
private String params;
private LocalDateTime createTime;
}

@ -0,0 +1,17 @@
package com.cgs.e_commerce.module.system.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SysRole {
private long id;
@NotEmpty(message = "角色名不能为空")
private String roleName;
private String description;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

@ -0,0 +1,10 @@
package com.cgs.e_commerce.module.system.entity;
import lombok.Data;
@Data
public class SysRoleMenu {
private Long id;
private Long roleId;
private Long menuId;
}

@ -0,0 +1,17 @@
package com.cgs.e_commerce.module.system.entity;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SysUser {
private long id;
private String username;
private String password;
private String phone;
private Integer status;
private Integer passwordVersion;
// @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

@ -0,0 +1,10 @@
package com.cgs.e_commerce.module.system.entity;
import lombok.Data;
@Data
public class SysUserMenu {
private Long id;
private Long userId;
private Long menuId;
}

@ -0,0 +1,10 @@
package com.cgs.e_commerce.module.system.entity;
import lombok.Data;
@Data
public class SysUserRole {
private Long id;
private Long userId;
private Long roleId;
}

@ -0,0 +1,33 @@
package com.cgs.e_commerce.module.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cgs.e_commerce.module.system.entity.SysMenu;
import com.cgs.e_commerce.module.system.entity.SysUserMenu;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface SysMenuMapper extends BaseMapper<SysMenu> {
List<SysMenu> list();
void add(SysMenu sysMenu);
void update(SysMenu sysMenu);
void delete(Long id);
List<SysMenu> getMenusByUserId(Long userId);
List<SysMenu> listWithTree(); // 树形菜单列表
void assignMenusToRole(@Param("roleId") Long roleId, @Param("menuIds") List<Long> menuIds); // 给角色分配菜单
void insertRoleMenus(@Param("roleId") Long roleId, @Param("menuIds") List<Long> menuIds);
void deleteRoleMenusByRoleId(Long roleId);
List<Long> getMenuIdsByRoleId(Long roleId); // 获取角色菜单ID
List<SysMenu> getCurrentUserMenus(); // 获取当前用户菜单
}

@ -0,0 +1,34 @@
package com.cgs.e_commerce.module.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cgs.e_commerce.module.system.entity.SysRole;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface SysRoleMapper extends BaseMapper<SysRole> {
@Insert("insert into sys_role(role_name,description,create_time) values(#{roleName},#{description},now())")
void add(SysRole role);
@Select("select * from sys_role")
List<SysRole> list();
@Update("update sys_role set role_name=#{roleName},description=#{description},create_time=now() where id=#{id}")
void update(SysRole role);
@Delete("delete from sys_role where id = #{id}")
void delete(Long id);
@Select("SELECT r.id, r.role_name, r.description " +
"FROM sys_role r " +
"JOIN sys_user_role ur ON r.id = ur.role_id " +
"WHERE ur.user_id = #{userId}")
List<SysRole> listByUserId(Long userId);
@Insert("insert into sys_user_role(user_id,role_id) values(#{userId},#{roleId})")
void assignUserRole(Long userId, Long roleId);
@Delete("delete from sys_user_role where user_id=#{userId} and role_id=#{roleId}")
void removeUserRole(Long userId, Long roleId);
}

@ -0,0 +1,32 @@
package com.cgs.e_commerce.module.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cgs.e_commerce.module.system.entity.SysUser;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser>{
@Select("select * from sys_user where username = #{username}")
SysUser selectByName(String username);
@Select("select * from sys_user ")
List<SysUser> list();
@Insert("insert into sys_user(username,password,create_time) " +
"values(#{username},#{password},now())")
void add(String username,String password);
@Select("select * from sys_user where id = #{id}")
SysUser getInfo(Long id);
@Update("update sys_user set password = #{password} where id = #{id}")
void updatePassword(String password,Long id);
@Update("update sys_user set status = #{status} where id = #{id}")
void updateStatus(Long id ,Integer status);
@Update("update sys_user set password_version = #{version} where id = #{id}")
void updatePasswordVersion(Long id,Integer version);
}

@ -0,0 +1,46 @@
package com.cgs.e_commerce.module.system.service;
import com.cgs.e_commerce.module.system.entity.SysMenu;
import com.cgs.e_commerce.module.system.mapper.SysMenuMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysMenuService {
@Autowired
private SysMenuMapper sysMenuMapper;
public void add(SysMenu sysMenu) {
sysMenuMapper.add(sysMenu);
}
public void update(SysMenu sysMenu) {
sysMenuMapper.update(sysMenu);
}
public void delete(Long id) {
sysMenuMapper.delete(id);
}
public List<SysMenu> listWithTree() {
return sysMenuMapper.listWithTree();
}
public void assignMenusToRole(Long roleId, List<Long> menuIds) {
sysMenuMapper.assignMenusToRole(roleId, menuIds);
}
public List<Long> getMenuIdsByRoleId(Long roleId) {
return sysMenuMapper.getMenuIdsByRoleId(roleId);
}
public List<SysMenu> getCurrentUserMenus() {
return sysMenuMapper.getCurrentUserMenus();
}
public List<SysMenu> getMenusByUserId(Long userId) {
return sysMenuMapper.getMenusByUserId(userId);
}
}

@ -0,0 +1,43 @@
package com.cgs.e_commerce.module.system.service;
import com.cgs.e_commerce.module.system.entity.SysRole;
import com.cgs.e_commerce.module.system.mapper.SysRoleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysRoleService {
@Autowired
private SysRoleMapper sysRoleMapper;
public void add(SysRole sysRole) {
sysRoleMapper.add(sysRole);
}
public List<SysRole> list() {
return sysRoleMapper.list();
}
public void update(SysRole role) {
sysRoleMapper.update(role);
}
public void delete(Long id) {
sysRoleMapper.delete(id);
}
public List<SysRole> listByUserId(Long userId) {
return sysRoleMapper.listByUserId(userId);
}
public void assignUserRole(Long userId, Long roleId) {
sysRoleMapper.assignUserRole(userId, roleId);
}
public void removeUserRole(Long userId, Long roleId) {
sysRoleMapper.removeUserRole(userId, roleId);
}
}

@ -0,0 +1,42 @@
package com.cgs.e_commerce.module.system.service;
import com.cgs.e_commerce.common.utils.BCryptUtils;
import com.cgs.e_commerce.module.system.entity.SysUser;
import com.cgs.e_commerce.module.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysUserService {
@Autowired
private SysUserMapper sysUserMapper;
public SysUser selectByName(String username) {
return sysUserMapper.selectByName(username);
}
public List<SysUser> list() {
return sysUserMapper.list();
}
public void updatePassword(String password,Long id) {
String encode = BCryptUtils.encode(password);
sysUserMapper.updatePassword(encode,id);
}
public void updateStatus(Long id,Integer status) {
sysUserMapper.updateStatus(id,status);
}
public void updatePasswordVersion(Long id, Integer passwordVersion) {
sysUserMapper.updatePasswordVersion(id,passwordVersion);
}
public void add(String username,String password) {
String encode = BCryptUtils.encode(password);
sysUserMapper.add(username,encode);
}
}

@ -1 +0,0 @@
测试分支上传成不成公
Loading…
Cancel
Save