From b976f041a3a5e22d5dcc6d358370a05e290b4bcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 2 Apr 2025 14:22:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E9=9F=B3=E6=9C=BA=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ShopPagePermissionController.java | 63 +++++++++++++++++++ .../com/czg/account/dto/ShopPagePathDTO.java | 60 ++++++++++++++++++ .../dto/ShopStaffPagePermissionDTO.java | 34 ++++++++++ .../pagepath/PagePathPermissionAddDTO.java | 14 +++++ .../com/czg/account/entity/ShopPagePath.java | 63 +++++++++++++++++++ .../entity/ShopStaffPagePermission.java | 42 +++++++++++++ .../account/service/ShopPagePathService.java | 14 +++++ .../ShopStaffPagePermissionService.java | 17 +++++ .../account/mapper/ShopPagePathMapper.java | 14 +++++ .../mapper/ShopStaffPagePermissionMapper.java | 14 +++++ .../service/impl/ShopPagePathServiceImpl.java | 18 ++++++ .../ShopStaffPagePermissionServiceImpl.java | 54 ++++++++++++++++ .../resources/mapper/ShopPagePathMapper.xml | 7 +++ .../mapper/ShopStaffPagePermissionMapper.xml | 7 +++ 14 files changed, 421 insertions(+) create mode 100644 cash-api/account-server/src/main/java/com/czg/controller/admin/ShopPagePermissionController.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopPagePathDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopStaffPagePermissionDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/pagepath/PagePathPermissionAddDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPagePath.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopStaffPagePermission.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPagePathService.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopStaffPagePermissionService.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPagePathMapper.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopStaffPagePermissionMapper.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPagePathServiceImpl.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffPagePermissionServiceImpl.java create mode 100644 cash-service/account-service/src/main/resources/mapper/ShopPagePathMapper.xml create mode 100644 cash-service/account-service/src/main/resources/mapper/ShopStaffPagePermissionMapper.xml diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopPagePermissionController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopPagePermissionController.java new file mode 100644 index 000000000..2214bbf25 --- /dev/null +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopPagePermissionController.java @@ -0,0 +1,63 @@ +package com.czg.controller.admin; + +import com.czg.account.dto.pagepath.PagePathPermissionAddDTO; +import com.czg.account.entity.ShopPagePath; +import com.czg.account.entity.ShopStaffPagePermission; +import com.czg.account.service.ShopPagePathService; +import com.czg.account.service.ShopStaffPagePermissionService; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import com.mybatisflex.core.query.QueryWrapper; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 收银机页面权限相关 + * @author Administrator + */ +@RestController +@RequestMapping("/admin/shopPagePermission") +public class ShopPagePermissionController { + @Resource + private ShopPagePathService shopPagePathService; + @Resource + private ShopStaffPagePermissionService shopStaffPagePermissionService; + + /** + * 获取所有页面路径 + * @return 页面路径 + */ + @GetMapping + public CzgResult> page() { + return CzgResult.success(shopPagePathService.list()); + } + + /** + * 保存修改权限 + * @return 是否成功 + */ + @PostMapping + public CzgResult add(PagePathPermissionAddDTO pagePathPermissionAddDTO) { + if (StpKit.USER.isStaff()) { + return CzgResult.failure("员工无权限"); + } + return CzgResult.success(shopStaffPagePermissionService.add(StpKit.USER.getShopId(), pagePathPermissionAddDTO)); + } + + /** + * 获取当前用户已拥有页面路径 + */ + @GetMapping("/mine") + public CzgResult> mine() { + Set pageIdList = shopStaffPagePermissionService.list(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getStaffId, StpKit.USER.getLoginIdAsLong())).stream().map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); + if (pageIdList.isEmpty()) { + return CzgResult.success(new ArrayList<>()); + } + return CzgResult.success(shopPagePathService.list(new QueryWrapper().in(ShopPagePath::getId, pageIdList))); + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopPagePathDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopPagePathDTO.java new file mode 100644 index 000000000..dd798673e --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopPagePathDTO.java @@ -0,0 +1,60 @@ + +package com.czg.account.dto; + +import java.io.Serializable; +import java.time.LocalDateTime; +import com.alibaba.fastjson2.annotation.JSONField; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zs + * @since 2025-04-02 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ShopPagePathDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 名称 + */ + private String name; + + /** + * 页面路径 + */ + private String path; + + /** + * 备注 + */ + private String remark; + + /** + * 创建时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopStaffPagePermissionDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopStaffPagePermissionDTO.java new file mode 100644 index 000000000..37277b0c4 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ShopStaffPagePermissionDTO.java @@ -0,0 +1,34 @@ + +package com.czg.account.dto; + +import java.io.Serializable; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zs + * @since 2025-04-02 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ShopStaffPagePermissionDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 页面路径 + */ + private Long pagePathId; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/pagepath/PagePathPermissionAddDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/pagepath/PagePathPermissionAddDTO.java new file mode 100644 index 000000000..0cf533c2e --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/pagepath/PagePathPermissionAddDTO.java @@ -0,0 +1,14 @@ +package com.czg.account.dto.pagepath; + +import lombok.Data; + +import java.util.List; + +/** + * @author Administrator + */ +@Data +public class PagePathPermissionAddDTO { + private List pagePathIdList; + private Long staffId; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPagePath.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPagePath.java new file mode 100644 index 000000000..93bc63d85 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopPagePath.java @@ -0,0 +1,63 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zs + * @since 2025-04-02 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_shop_page_path") +public class ShopPagePath implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 页面路径 + */ + private String path; + + /** + * 备注 + */ + private String remark; + + /** + * 创建时间 + */ + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopStaffPagePermission.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopStaffPagePermission.java new file mode 100644 index 000000000..255bb17fc --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopStaffPagePermission.java @@ -0,0 +1,42 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zs + * @since 2025-04-02 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_shop_staff_page_permission") +public class ShopStaffPagePermission implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 店铺id + */ + @Id + private Long shopId; + private Long staffId; + + /** + * 页面路径 + */ + private Long pagePathId; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPagePathService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPagePathService.java new file mode 100644 index 000000000..8f4d95c99 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopPagePathService.java @@ -0,0 +1,14 @@ +package com.czg.account.service; + +import com.mybatisflex.core.service.IService; +import com.czg.account.entity.ShopPagePath; + +/** + * 服务层。 + * + * @author zs + * @since 2025-04-02 + */ +public interface ShopPagePathService extends IService { + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopStaffPagePermissionService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopStaffPagePermissionService.java new file mode 100644 index 000000000..82e616d7a --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopStaffPagePermissionService.java @@ -0,0 +1,17 @@ +package com.czg.account.service; + +import com.czg.account.dto.pagepath.PagePathPermissionAddDTO; +import com.mybatisflex.core.service.IService; +import com.czg.account.entity.ShopStaffPagePermission; + +/** + * 服务层。 + * + * @author zs + * @since 2025-04-02 + */ +public interface ShopStaffPagePermissionService extends IService { + + Boolean add(Long shopId, PagePathPermissionAddDTO pagePathPermissionAddDTO); + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPagePathMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPagePathMapper.java new file mode 100644 index 000000000..0fcd57fac --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopPagePathMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.account.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.ShopPagePath; + +/** + * 映射层。 + * + * @author zs + * @since 2025-04-02 + */ +public interface ShopPagePathMapper extends BaseMapper { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopStaffPagePermissionMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopStaffPagePermissionMapper.java new file mode 100644 index 000000000..7621e8023 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopStaffPagePermissionMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.account.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.ShopStaffPagePermission; + +/** + * 映射层。 + * + * @author zs + * @since 2025-04-02 + */ +public interface ShopStaffPagePermissionMapper extends BaseMapper { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPagePathServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPagePathServiceImpl.java new file mode 100644 index 000000000..02cf681df --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopPagePathServiceImpl.java @@ -0,0 +1,18 @@ +package com.czg.service.account.service.impl; + +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.account.entity.ShopPagePath; +import com.czg.account.service.ShopPagePathService; +import com.czg.service.account.mapper.ShopPagePathMapper; +import org.springframework.stereotype.Service; + +/** + * 服务层实现。 + * + * @author zs + * @since 2025-04-02 + */ +@Service +public class ShopPagePathServiceImpl extends ServiceImpl implements ShopPagePathService{ + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffPagePermissionServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffPagePermissionServiceImpl.java new file mode 100644 index 000000000..1720bb2e2 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffPagePermissionServiceImpl.java @@ -0,0 +1,54 @@ +package com.czg.service.account.service.impl; + +import com.czg.account.dto.pagepath.PagePathPermissionAddDTO; +import com.czg.account.entity.ShopPagePath; +import com.czg.account.entity.ShopStaff; +import com.czg.account.service.ShopPagePathService; +import com.czg.account.service.ShopStaffService; +import com.czg.exception.ApiNotPrintException; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.account.entity.ShopStaffPagePermission; +import com.czg.account.service.ShopStaffPagePermissionService; +import com.czg.service.account.mapper.ShopStaffPagePermissionMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; + +/** + * 服务层实现。 + * + * @author zs + * @since 2025-04-02 + */ +@Service +public class ShopStaffPagePermissionServiceImpl extends ServiceImpl implements ShopStaffPagePermissionService{ + @Resource + private ShopPagePathService shopPagePathService; + @Resource + private ShopStaffService shopStaffService; + + @Override + public Boolean add(Long shopId, PagePathPermissionAddDTO pagePathPermissionAddDTO) { + ShopStaff shopStaff = shopStaffService.getOne(new QueryWrapper().eq(ShopStaff::getId, pagePathPermissionAddDTO.getStaffId()).eq(ShopStaff::getShopId, shopId)); + if (shopStaff == null) { + throw new ApiNotPrintException("员工不存在"); + } + + long count = shopPagePathService.count(new QueryWrapper().in(ShopPagePath::getId, pagePathPermissionAddDTO.getPagePathIdList())); + if (count != pagePathPermissionAddDTO.getPagePathIdList().size()) { + throw new ApiNotPrintException("存在错误id"); + } + + ArrayList pagePermissions = new ArrayList<>(); + pagePathPermissionAddDTO.getPagePathIdList().forEach(item -> { + ShopStaffPagePermission permission = new ShopStaffPagePermission(); + permission.setShopId(shopId); + permission.setPagePathId(item); + permission.setStaffId(pagePathPermissionAddDTO.getStaffId()); + pagePermissions.add(permission); + }); + return saveBatch(pagePermissions); + } +} diff --git a/cash-service/account-service/src/main/resources/mapper/ShopPagePathMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopPagePathMapper.xml new file mode 100644 index 000000000..bdb16f36b --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/ShopPagePathMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cash-service/account-service/src/main/resources/mapper/ShopStaffPagePermissionMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopStaffPagePermissionMapper.xml new file mode 100644 index 000000000..648c04c13 --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/ShopStaffPagePermissionMapper.xml @@ -0,0 +1,7 @@ + + + + +