From 7d311bb3a034cab9d9e91275ae3723cc163abf07 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 16:13:26 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ShopPagePermissionController.java | 8 ++--- .../account/service/ShopPagePathService.java | 3 ++ .../service/impl/ShopPagePathServiceImpl.java | 31 +++++++++++++++++++ 3 files changed, 37 insertions(+), 5 deletions(-) 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 index 32bf9561..1b98294c 100644 --- 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 @@ -56,12 +56,10 @@ public class ShopPagePermissionController { */ @GetMapping("/detail") public CzgResult> detail(@RequestParam Long staffId) { - Set pageIdList = shopStaffPagePermissionService.list(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, - StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getStaffId, staffId)).stream().map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); - if (pageIdList.isEmpty()) { - return CzgResult.success(new ArrayList<>()); + if (StpKit.USER.isStaff() && StpKit.USER.getLoginIdAsLong() != staffId) { + return CzgResult.failure("员工无权限"); } - return CzgResult.success(shopPagePathService.list(new QueryWrapper().in(ShopPagePath::getId, pageIdList))); + return CzgResult.success(shopPagePathService.detail(staffId)); } /** 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 index 8f4d95c9..76e2e9c5 100644 --- 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 @@ -3,6 +3,8 @@ package com.czg.account.service; import com.mybatisflex.core.service.IService; import com.czg.account.entity.ShopPagePath; +import java.util.List; + /** * 服务层。 * @@ -11,4 +13,5 @@ import com.czg.account.entity.ShopPagePath; */ public interface ShopPagePathService extends IService { + List detail(Long staffId); } 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 index 02cf681d..be3b2357 100644 --- 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 @@ -1,10 +1,22 @@ package com.czg.service.account.service.impl; +import com.czg.account.entity.ShopStaffPagePermission; +import com.czg.account.service.ShopStaffPagePermissionService; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import com.mybatisflex.core.query.QueryWrapper; 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 jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * 服务层实现。 @@ -14,5 +26,24 @@ import org.springframework.stereotype.Service; */ @Service public class ShopPagePathServiceImpl extends ServiceImpl implements ShopPagePathService{ + @Resource + private ShopStaffPagePermissionService shopStaffPagePermissionService; + @Override + public List detail(Long staffId) { + Set pageIdList = shopStaffPagePermissionService.list(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, + StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getStaffId, staffId)).stream().map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); + if (pageIdList.isEmpty()) { + list().forEach(item -> { + ShopStaffPagePermission permission = new ShopStaffPagePermission(); + permission.setShopId(StpKit.USER.getShopId()); + permission.setStaffId(staffId); + permission.setPagePathId(item.getId()); + shopStaffPagePermissionService.save(permission); + pageIdList.add(permission.getPagePathId()); + }); + } + + return list(new QueryWrapper().in(ShopPagePath::getId, pageIdList)); + } } From 1beba7c24c5f4a7782089ca1c83b539b9a57d5a4 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 16:21:50 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/service/impl/ShopPagePathServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 index be3b2357..6470b868 100644 --- 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 @@ -4,6 +4,8 @@ import com.czg.account.entity.ShopStaffPagePermission; import com.czg.account.service.ShopStaffPagePermissionService; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; +import com.czg.service.account.mapper.ShopStaffPagePermissionMapper; +import com.czg.service.account.mapper.ShopStaffPermissionMapper; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import com.czg.account.entity.ShopPagePath; @@ -27,11 +29,11 @@ import java.util.stream.Collectors; @Service public class ShopPagePathServiceImpl extends ServiceImpl implements ShopPagePathService{ @Resource - private ShopStaffPagePermissionService shopStaffPagePermissionService; + private ShopStaffPagePermissionMapper shopStaffPermissionMapper; @Override public List detail(Long staffId) { - Set pageIdList = shopStaffPagePermissionService.list(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, + Set pageIdList = shopStaffPermissionMapper.selectListByQuery(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getStaffId, staffId)).stream().map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); if (pageIdList.isEmpty()) { list().forEach(item -> { @@ -39,7 +41,7 @@ public class ShopPagePathServiceImpl extends ServiceImpl Date: Wed, 2 Apr 2025 16:24:10 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/service/impl/ShopPagePathServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 index 6470b868..0108fe1c 100644 --- 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 @@ -11,10 +11,11 @@ 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 jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -28,7 +29,7 @@ import java.util.stream.Collectors; */ @Service public class ShopPagePathServiceImpl extends ServiceImpl implements ShopPagePathService{ - @Resource + @Autowired private ShopStaffPagePermissionMapper shopStaffPermissionMapper; @Override From 9e004d9cdb253d611c9b726c9d7e1920ecd5ed39 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 16:25:51 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/service/impl/ShopPagePathServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 index 0108fe1c..14b179d2 100644 --- 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 @@ -29,12 +29,12 @@ import java.util.stream.Collectors; */ @Service public class ShopPagePathServiceImpl extends ServiceImpl implements ShopPagePathService{ - @Autowired - private ShopStaffPagePermissionMapper shopStaffPermissionMapper; + @Resource + private ShopStaffPagePermissionMapper shopStaffPagePermissionMapper; @Override public List detail(Long staffId) { - Set pageIdList = shopStaffPermissionMapper.selectListByQuery(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, + Set pageIdList = shopStaffPagePermissionMapper.selectListByQuery(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getStaffId, staffId)).stream().map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); if (pageIdList.isEmpty()) { list().forEach(item -> { @@ -42,7 +42,7 @@ public class ShopPagePathServiceImpl extends ServiceImpl Date: Wed, 2 Apr 2025 16:36:54 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/account/service/impl/ShopPagePathServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 14b179d2..3741c4e4 100644 --- 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 @@ -43,7 +43,7 @@ public class ShopPagePathServiceImpl extends ServiceImpl Date: Wed, 2 Apr 2025 16:37:23 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/account/service/impl/ShopPagePathServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 index 3741c4e4..a52f0363 100644 --- 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 @@ -42,9 +42,10 @@ public class ShopPagePathServiceImpl extends ServiceImpl(); } return list(new QueryWrapper().in(ShopPagePath::getId, pageIdList)); From f67a9179771330913b107ba5b200f49e50e749e4 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 16:53:09 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/ShopStaffPagePermission.java | 2 ++ .../service/impl/ShopPagePathServiceImpl.java | 13 +++---- .../ShopStaffPagePermissionServiceImpl.java | 36 +++++++++++++------ 3 files changed, 34 insertions(+), 17 deletions(-) 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 index 6987e8d1..56c18790 100644 --- 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 @@ -41,4 +41,6 @@ public class ShopStaffPagePermission implements Serializable { */ private Long pagePathId; + private Integer isUse; + } 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 index a52f0363..3d169f2c 100644 --- 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 @@ -34,20 +34,21 @@ public class ShopPagePathServiceImpl extends ServiceImpl detail(Long staffId) { - Set pageIdList = shopStaffPagePermissionMapper.selectListByQuery(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, - StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getStaffId, staffId)).stream().map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); - if (pageIdList.isEmpty()) { + List shopStaffPagePermissions = shopStaffPagePermissionMapper.selectListByQuery(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, + StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getStaffId, staffId)); + if (shopStaffPagePermissions.isEmpty()) { list().forEach(item -> { ShopStaffPagePermission permission = new ShopStaffPagePermission(); permission.setShopId(StpKit.USER.getShopId()); permission.setStaffId(staffId); permission.setPagePathId(item.getId()); -// shopStaffPagePermissionMapper.insert(permission); -// pageIdList.add(permission.getPagePathId()); + permission.setIsUse(1); + shopStaffPagePermissionMapper.insert(permission); }); - return new ArrayList<>(); + return list(); } + Set pageIdList = shopStaffPagePermissions.stream().filter(item -> item.getIsUse() == 1).map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); return list(new QueryWrapper().in(ShopPagePath::getId, pageIdList)); } } 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 index 03df7cf6..bd62b0eb 100644 --- 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 @@ -16,6 +16,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collector; +import java.util.stream.Collectors; /** * 服务层实现。 @@ -43,19 +47,29 @@ public class ShopStaffPagePermissionServiceImpl extends ServiceImpl pagePermissions = new ArrayList<>(); - remove(new QueryWrapper().eq(ShopStaffPagePermission::getStaffId, pagePathPermissionAddDTO.getStaffId())); + Map map = list(new QueryWrapper().eq(ShopStaffPagePermission::getStaffId, + pagePathPermissionAddDTO.getStaffId())).stream().collect(Collectors.toMap(ShopStaffPagePermission::getPagePathId, item -> item)); + pagePathPermissionAddDTO.getPagePathIdList().forEach(item -> { - long count1 = count(new QueryWrapper().eq(ShopStaffPagePermission::getStaffId, shopStaff).eq(ShopStaffPagePermission::getPagePathId, item)); - if (count1 > 0) { - return; + ShopStaffPagePermission permission1 = map.get(item); + if (permission1 == null) { + ShopStaffPagePermission permission = new ShopStaffPagePermission(); + permission.setShopId(shopId); + permission.setPagePathId(item); + permission.setStaffId(pagePathPermissionAddDTO.getStaffId()); + permission.setIsUse(1); + save(permission); + }else { + permission1.setIsUse(1); + updateById(permission1); + map.remove(item); } - ShopStaffPagePermission permission = new ShopStaffPagePermission(); - permission.setShopId(shopId); - permission.setPagePathId(item); - permission.setStaffId(pagePathPermissionAddDTO.getStaffId()); - pagePermissions.add(permission); + }); - return saveBatch(pagePermissions); + Set collect = map.values().stream().map(ShopStaffPagePermission::getId).collect(Collectors.toSet()); + if (!collect.isEmpty()) { + updateChain().set(ShopStaffPagePermission::getIsUse, 0).in(ShopStaffPagePermission::getId, collect); + } + return true; } } From 6e815f90ec7744b1ad1067c84e0b838d33503478 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 17:12:17 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ShopStaffPagePermissionServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index bd62b0eb..852560fb 100644 --- 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 @@ -68,7 +68,7 @@ public class ShopStaffPagePermissionServiceImpl extends ServiceImpl collect = map.values().stream().map(ShopStaffPagePermission::getId).collect(Collectors.toSet()); if (!collect.isEmpty()) { - updateChain().set(ShopStaffPagePermission::getIsUse, 0).in(ShopStaffPagePermission::getId, collect); + updateChain().set(ShopStaffPagePermission::getIsUse, 0).in(ShopStaffPagePermission::getId, collect).update(); } return true; } From 63625815162492848d416d6885f6b903c43cc183 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 17:16:47 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/service/impl/ShopStaffServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java index 32517682..4bc8736d 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java @@ -102,14 +102,16 @@ public class ShopStaffServiceImpl extends ServiceImpl Date: Wed, 2 Apr 2025 17:19:10 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ShopStaffPagePermissionServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 index 852560fb..af5ec791 100644 --- 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 @@ -42,9 +42,11 @@ public class ShopStaffPagePermissionServiceImpl extends ServiceImpl map = list(new QueryWrapper().eq(ShopStaffPagePermission::getStaffId, From c196abad93c54dfe916525d588a44efcc38eb753 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 17:22:10 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/account/service/impl/ShopPagePathServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 3d169f2c..327d666e 100644 --- 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 @@ -49,6 +49,6 @@ public class ShopPagePathServiceImpl extends ServiceImpl pageIdList = shopStaffPagePermissions.stream().filter(item -> item.getIsUse() == 1).map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); - return list(new QueryWrapper().in(ShopPagePath::getId, pageIdList)); + return pageIdList.isEmpty() ? new ArrayList<>() : list(new QueryWrapper().in(ShopPagePath::getId, pageIdList)); } } From 1e40f49d992ce9acf177e6ec830013cf3fc551d7 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 17:31:20 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/controller/admin/ShopPagePermissionController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 index 1b98294c..f822423f 100644 --- 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 @@ -67,7 +67,8 @@ public class ShopPagePermissionController { */ @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()); + Set pageIdList = shopStaffPagePermissionService.list(new QueryWrapper().eq(ShopStaffPagePermission::getShopId, StpKit.USER.getShopId()).eq(ShopStaffPagePermission::getIsUse, 1) + .eq(ShopStaffPagePermission::getStaffId, StpKit.USER.getLoginIdAsLong())).stream().map(ShopStaffPagePermission::getPagePathId).collect(Collectors.toSet()); if (pageIdList.isEmpty()) { return CzgResult.success(new ArrayList<>()); } From a780b65f159f9020d40d19d22eeb8f1d763a6b98 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Thu, 3 Apr 2025 11:42:45 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A1=A8?= =?UTF-8?q?=E5=8F=98=E5=8A=A8sql=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqls/250403/cash.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 sqls/250403/cash.sql diff --git a/sqls/250403/cash.sql b/sqls/250403/cash.sql new file mode 100644 index 00000000..97f3e01b --- /dev/null +++ b/sqls/250403/cash.sql @@ -0,0 +1 @@ +ALTER TABLE `tb_shop_info` ADD COLUMN `is_head_shop` tinyint NULL COMMENT '是否主店 1-是 0-否'; \ No newline at end of file From d64041cb0ee8765a761a1f1add8d1bdd4ccabb6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 3 Apr 2025 16:32:40 +0800 Subject: [PATCH 14/18] =?UTF-8?q?pad=E7=82=B9=E9=A4=90bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/utils/JoinQueryWrapper.java | 5 +++++ .../czg/service/account/service/impl/PadProdServiceImpl.java | 1 + 2 files changed, 6 insertions(+) diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java b/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java index e2341428..61cb8950 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java @@ -147,6 +147,11 @@ public class JoinQueryWrapper extends QueryWrapper { return this; } + @Override + public QueryWrapper groupBy(LambdaGetter column) { + return super.groupBy(getColum(column)); + } + @Override public JoinQueryWrapper like(LambdaGetter column, Object value) { like(getColum(column), value); diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java index cd84784b..5c82eab3 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java @@ -41,6 +41,7 @@ public class PadProdServiceImpl implements PadProdService { if (productCategoryId != null) { queryWrapper.eq(PadProductCategory::getProductCategoryId, productCategoryId); } + queryWrapper.groupBy(PadProductCategory::getId); queryWrapper.orderBy(PadProductCategory::getSort, true).orderBy(PadProductCategory::getId, false); return padProductCategoryDetailMapper.xmlPaginate("selectPageByKeyAndShopId", objectPage, queryWrapper); } From 50931a80b466de99544d89d8257abd5bef8f79ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 3 Apr 2025 16:36:10 +0800 Subject: [PATCH 15/18] =?UTF-8?q?pad=E7=82=B9=E9=A4=90bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/PadProductCategoryDetailMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/cash-service/account-service/src/main/resources/mapper/PadProductCategoryDetailMapper.xml b/cash-service/account-service/src/main/resources/mapper/PadProductCategoryDetailMapper.xml index 839a0dcd..c45fa649 100644 --- a/cash-service/account-service/src/main/resources/mapper/PadProductCategoryDetailMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/PadProductCategoryDetailMapper.xml @@ -18,6 +18,7 @@ LEFT JOIN tb_product ON tb_pad_product_category_detail.product_id = tb_product.id LEFT JOIN tb_pad_layout ON tb_pad_product_category.pad_layout_id = tb_pad_layout.id ${qwSql} + limit ${pageOffset}, ${pageSize} - limit ${pageOffset}, ${pageSize} - - From 68042f21d27f876b2daab859ecab96eaa284140e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 3 Apr 2025 17:10:07 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86=E8=B4=A6?= =?UTF-8?q?=E5=8D=95=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ConsInfoController.java | 6 +- .../admin/ShopVendorController.java | 61 +++++++++++- .../com/czg/product/dto/ConsPayRecordDTO.java | 70 ++++++++++++++ .../czg/product/dto/ShopVendorBillPayDTO.java | 40 ++++++++ .../com/czg/product/entity/ConsPayRecord.java | 80 ++++++++++++++++ .../product/service/ConsPayRecordService.java | 17 ++++ .../product/service/ShopVendorService.java | 36 ++++++- .../product/vo/ShopVendorBillPayRecordVO.java | 55 +++++++++++ .../product/vo/ShopVendorBillRecordVO.java | 50 ++++++++++ .../com/czg/product/vo/ShopVendorBillVO.java | 37 ++++++++ .../czg/product/vo/ShopVendorSummaryVO.java | 38 ++++++++ .../product/mapper/ConsPayRecordMapper.java | 18 ++++ .../product/mapper/ConsStockFlowMapper.java | 11 ++- .../product/mapper/ShopVendorMapper.java | 11 ++- .../impl/ConsPayRecordServiceImpl.java | 28 ++++++ .../service/impl/ShopVendorServiceImpl.java | 94 ++++++++++++++++++- .../resources/mapper/ConsPayRecordMapper.xml | 14 +++ .../resources/mapper/ConsStockFlowMapper.xml | 41 ++++++-- .../resources/mapper/ShopVendorMapper.xml | 32 ++++++- 19 files changed, 721 insertions(+), 18 deletions(-) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/dto/ConsPayRecordDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/dto/ShopVendorBillPayDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/entity/ConsPayRecord.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsPayRecordService.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillPayRecordVO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillRecordVO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillVO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorSummaryVO.java create mode 100644 cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsPayRecordMapper.java create mode 100644 cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsPayRecordServiceImpl.java create mode 100644 cash-service/product-service/src/main/resources/mapper/ConsPayRecordMapper.xml diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsInfoController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsInfoController.java index 6a063861..8b86a7ba 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsInfoController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsInfoController.java @@ -1,9 +1,10 @@ -package com.czg.controller; +package com.czg.controller.admin; import com.czg.enums.CrudEnum; import com.czg.log.annotation.OperationLog; import com.czg.product.dto.ConsInfoDTO; import com.czg.product.param.ConsInfoParam; +import com.czg.product.param.ConsReportDamageParam; import com.czg.product.param.ConsSubUnitParam; import com.czg.product.service.ConsInfoService; import com.czg.product.vo.ConsStatisticsVo; @@ -181,4 +182,5 @@ public class ConsInfoController { ConsStatisticsVo data = consInfoService.statistics(param); return CzgResult.success(data); } -} \ No newline at end of file + +} diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ShopVendorController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ShopVendorController.java index 4f77cba1..25350ea0 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ShopVendorController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ShopVendorController.java @@ -1,9 +1,15 @@ package com.czg.controller.admin; import com.czg.log.annotation.OperationLog; +import com.czg.product.dto.ShopVendorBillPayDTO; import com.czg.product.dto.ShopVendorDTO; import com.czg.product.service.ShopVendorService; +import com.czg.product.vo.ShopVendorBillPayRecordVO; +import com.czg.product.vo.ShopVendorBillRecordVO; +import com.czg.product.vo.ShopVendorBillVO; +import com.czg.product.vo.ShopVendorSummaryVO; import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; import com.czg.utils.AssertUtil; import com.czg.validator.group.DefaultGroup; import com.czg.validator.group.InsertGroup; @@ -98,4 +104,57 @@ public class ShopVendorController { shopVendorService.deleteShopVendor(id); return CzgResult.success(); } -} \ No newline at end of file + + /** + * 供应商账单统计 + * @return 统计信息 + */ + @GetMapping("summary") + @OperationLog("供应商账单-统计") + public CzgResult summary() { + return CzgResult.success(shopVendorService.summary(StpKit.USER.getShopId())); + } + + /** + * 账单列表 + * @return 账单列表 + */ + @GetMapping("/bill") + @OperationLog("供应商账单-列表") + public CzgResult> bill() { + return CzgResult.success(shopVendorService.billList(StpKit.USER.getShopId())); + } + + /** + * 账单记录 + * @return 记录list + */ + @GetMapping("/bill/record") + @OperationLog("供应商账单-列表") + public CzgResult> bill(@RequestParam Integer vendorId) { + return CzgResult.success(shopVendorService.billRecord(StpKit.USER.getShopId(), vendorId)); + } + + + /** + * 账单支付 + * @return 记录list + */ + @PostMapping("/bill/pay") + @OperationLog("供应商账单-付款") + public CzgResult pay(@RequestBody @Validated ShopVendorBillPayDTO payDTO) { + return CzgResult.success(shopVendorService.pay(StpKit.USER.getShopId(), payDTO)); + } + + + /** + * 账单支付记录 + * @return 记录list + */ + @GetMapping("/bill/pay/record") + @OperationLog("供应商账单-付款记录") + public CzgResult> payRecord(@RequestParam Long flowId) { + return CzgResult.success(shopVendorService.payRecord(StpKit.USER.getShopId(), flowId)); + } + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ConsPayRecordDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ConsPayRecordDTO.java new file mode 100644 index 00000000..9bf0b090 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ConsPayRecordDTO.java @@ -0,0 +1,70 @@ + +package com.czg.product.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +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-03 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ConsPayRecordDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 供应商id + */ + private Long vendorId; + + /** + * 出入库id + */ + private Long flowId; + + /** + * 付款金额 + */ + private BigDecimal amount; + + /** + * 付款方式 支付宝 微信 银行卡 现金 + */ + private String type; + + /** + * 付款备注 + */ + private String remark; + + /** + * 操作员工id + */ + private Long userId; + + /** + * 创建时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ShopVendorBillPayDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ShopVendorBillPayDTO.java new file mode 100644 index 00000000..0c3b35cb --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ShopVendorBillPayDTO.java @@ -0,0 +1,40 @@ +package com.czg.product.dto; + +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 供应商 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 1.0 2025-02-20 + */ +@Data +public class ShopVendorBillPayDTO { + /** + * 账单记录id + */ + @NotEmpty(message = "账单记录id不能为空") + private List flowIdList; + /** + * 付款金额 + */ + @DecimalMin(value = "0.01", message = "付款金额不能小于0.01") + private BigDecimal amount; + /** + * 付款类型 + */ + @NotBlank(message = "付款类型不能为空") + private String type; + /** + * 备注 + */ + private String remark; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ConsPayRecord.java b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ConsPayRecord.java new file mode 100644 index 00000000..2ad5e28b --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ConsPayRecord.java @@ -0,0 +1,80 @@ +package com.czg.product.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.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 耗材付款记录 实体类。 + * + * @author zs + * @since 2025-04-03 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_cons_pay_record") +@Accessors(chain = true) +public class ConsPayRecord implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 供应商id + */ + private Long vendorId; + + /** + * 出入库id + */ + private Long flowId; + + /** + * 付款金额 + */ + private BigDecimal amount; + + /** + * 付款方式 支付宝 微信 银行卡 现金 + */ + private String type; + + /** + * 付款备注 + */ + private String remark; + + /** + * 操作员工id + */ + private Long userId; + + /** + * 创建时间 + */ + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsPayRecordService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsPayRecordService.java new file mode 100644 index 00000000..f0ce528e --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsPayRecordService.java @@ -0,0 +1,17 @@ +package com.czg.product.service; + +import com.czg.product.vo.ShopVendorBillPayRecordVO; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.service.IService; +import com.czg.product.entity.ConsPayRecord; + +/** + * 耗材付款记录 服务层。 + * + * @author zs + * @since 2025-04-03 + */ +public interface ConsPayRecordService extends IService { + + Page getByFlowId(Long shopId, Long flowId); +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopVendorService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopVendorService.java index 2086d50e..493d86aa 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopVendorService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopVendorService.java @@ -1,7 +1,12 @@ package com.czg.product.service; +import com.czg.product.dto.ShopVendorBillPayDTO; import com.czg.product.dto.ShopVendorDTO; import com.czg.product.entity.ShopVendor; +import com.czg.product.vo.ShopVendorBillPayRecordVO; +import com.czg.product.vo.ShopVendorBillRecordVO; +import com.czg.product.vo.ShopVendorBillVO; +import com.czg.product.vo.ShopVendorSummaryVO; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; @@ -57,4 +62,33 @@ public interface ShopVendorService extends IService { */ void deleteShopVendor(Long id); -} \ No newline at end of file + ShopVendorSummaryVO summary(Long shopId); + + /** + * 账单列表 + * + * @param shopId 店铺id + * @return 账单 + */ + Page billList(Long shopId); + + /** + * 账单记录明细 + * + * @param shopId 店铺id + * @param vendorId 供应商id + * @return 分页 + */ + Page billRecord(Long shopId, Integer vendorId); + + /** + * 账单付款 + * @param shopId 店铺id + * @param payDTO 数据 + * @return 是否成功 + */ + Boolean pay(Long shopId, ShopVendorBillPayDTO payDTO); + + Page payRecord(Long shopId, Long flowId); + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillPayRecordVO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillPayRecordVO.java new file mode 100644 index 00000000..8da07120 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillPayRecordVO.java @@ -0,0 +1,55 @@ +package com.czg.product.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author Administrator + */ +@Data +public class ShopVendorBillPayRecordVO { + /** + * 付款id + */ + private Long id; + /** + * 耗材名称 + */ + private String conName; + /** + * 单价 + */ + private BigDecimal purchasePrice; + /** + * 数量 + */ + private BigDecimal inOutNumber; + /** + * 付款金额 + */ + private BigDecimal amount; + /** + * 付款方式 + */ + private String type; + /** + * 备注 + */ + private String remark; + /** + * 操作账号 + */ + private String account; + /** + * 账号昵称 + */ + private String nickname; + /** + * 编码 + */ + private String code; + private LocalDateTime createTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillRecordVO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillRecordVO.java new file mode 100644 index 00000000..1fda90b6 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillRecordVO.java @@ -0,0 +1,50 @@ +package com.czg.product.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author Administrator + */ +@Data +public class ShopVendorBillRecordVO { + /** + * 记录id + */ + private Long id; + /** + * 耗材名称 + */ + private String conName; + /** + * 单价 + */ + private BigDecimal purchasePrice; + /** + * 数量 + */ + private BigDecimal inOutNumber; + /** + * 应付 + */ + private BigDecimal amountPayable; + /** + * 已付 + */ + private BigDecimal actualPaymentAmount; + /** + * 待付 + */ + private BigDecimal unPaidAmount; + /** + * 备注 + */ + private String remark; + /** + * 创建时间 + */ + private LocalDateTime createTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillVO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillVO.java new file mode 100644 index 00000000..ac879872 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorBillVO.java @@ -0,0 +1,37 @@ +package com.czg.product.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Administrator + */ +@Data +public class ShopVendorBillVO { + /** + * 供应商名称 + */ + private String name; + /** + * 供应商id + */ + private Long vendorId; + /** + * 账单金额 + */ + private BigDecimal amountPayable; + /** + * 已付款金额 + */ + private BigDecimal actualPaymentAmount; + /** + * 未付款金额 + */ + private BigDecimal unPaidAmount; + /** + * 备注 + */ + private String remark; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorSummaryVO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorSummaryVO.java new file mode 100644 index 00000000..dc523325 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopVendorSummaryVO.java @@ -0,0 +1,38 @@ +package com.czg.product.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Administrator + */ +@Data +public class ShopVendorSummaryVO { + /** + * 全部总金额 + */ + private BigDecimal amountPayable = BigDecimal.ZERO; + /** + * 当月总金额 + */ + private BigDecimal mouthAmountPayable = BigDecimal.ZERO; + /** + * 全部支付金额 + */ + private BigDecimal actualPaymentAmount = BigDecimal.ZERO; + /** + * 当月支付金额 + */ + private BigDecimal mouthActualPaymentAmount = BigDecimal.ZERO; + /** + * 待支付金额 + */ + private BigDecimal unPaidAmount = BigDecimal.ZERO; + /** + * 本月待支付金额 + */ + private BigDecimal mouthUnPaidAmount = BigDecimal.ZERO; + + +} diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsPayRecordMapper.java b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsPayRecordMapper.java new file mode 100644 index 00000000..c9782f83 --- /dev/null +++ b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsPayRecordMapper.java @@ -0,0 +1,18 @@ +package com.czg.service.product.mapper; + +import com.czg.product.vo.ShopVendorBillPayRecordVO; +import com.mybatisflex.core.BaseMapper; +import com.czg.product.entity.ConsPayRecord; + +import java.util.List; + +/** + * 耗材付款记录 映射层。 + * + * @author zs + * @since 2025-04-03 + */ +public interface ConsPayRecordMapper extends BaseMapper { + + List selectByFlowId(Long shopId, Long flowId); +} diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsStockFlowMapper.java b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsStockFlowMapper.java index 0b8544e7..490a9a67 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsStockFlowMapper.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ConsStockFlowMapper.java @@ -3,8 +3,13 @@ package com.czg.service.product.mapper; import com.czg.product.entity.ConsStockFlow; import com.czg.product.param.ConsInfoParam; import com.czg.product.vo.ConsStatisticsVo; +import com.czg.product.vo.ShopVendorBillRecordVO; import com.mybatisflex.core.BaseMapper; +import jakarta.validation.constraints.NotEmpty; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 耗材库存变动记录 @@ -15,4 +20,8 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ConsStockFlowMapper extends BaseMapper { ConsStatisticsVo getConsStatistics(ConsInfoParam param); -} \ No newline at end of file + + List selectByVendorId(@Param("shopId") Long shopId, @Param("vendorId") Integer vendorId); + + List selectUnPaid(@Param("shopId") Long shopId, @Param("vendorIds") @NotEmpty List vendorIds); +} diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ShopVendorMapper.java b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ShopVendorMapper.java index d689ce2b..07234afa 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ShopVendorMapper.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/ShopVendorMapper.java @@ -1,8 +1,13 @@ package com.czg.service.product.mapper; import com.czg.product.entity.ShopVendor; +import com.czg.product.vo.ShopVendorBillVO; +import com.czg.product.vo.ShopVendorSummaryVO; import com.mybatisflex.core.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 供应商 @@ -13,4 +18,8 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ShopVendorMapper extends BaseMapper { -} \ No newline at end of file + ShopVendorSummaryVO summary(@Param("shopId") Long shopId); + + + List bill(@Param("shopId") Long shopId); +} diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsPayRecordServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsPayRecordServiceImpl.java new file mode 100644 index 00000000..ae5bbd62 --- /dev/null +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsPayRecordServiceImpl.java @@ -0,0 +1,28 @@ +package com.czg.service.product.service.impl; + +import com.czg.product.vo.ShopVendorBillPayRecordVO; +import com.czg.utils.PageUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.product.entity.ConsPayRecord; +import com.czg.product.service.ConsPayRecordService; +import com.czg.service.product.mapper.ConsPayRecordMapper; +import org.springframework.stereotype.Service; + +/** + * 耗材付款记录 服务层实现。 + * + * @author zs + * @since 2025-04-03 + */ +@Service +public class ConsPayRecordServiceImpl extends ServiceImpl implements ConsPayRecordService{ + + @Override + public Page getByFlowId(Long shopId, Long flowId) { + PageHelper.startPage(PageUtil.buildPageHelp()); + return PageUtil.convert(new PageInfo<>(mapper.selectByFlowId(shopId, flowId))); + } +} diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopVendorServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopVendorServiceImpl.java index 5c0a266b..92ef6de2 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopVendorServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopVendorServiceImpl.java @@ -1,21 +1,38 @@ package com.czg.service.product.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.czg.enums.DeleteEnum; +import com.czg.exception.ApiNotPrintException; import com.czg.exception.CzgException; +import com.czg.product.dto.ShopVendorBillPayDTO; import com.czg.product.dto.ShopVendorDTO; +import com.czg.product.entity.ConsPayRecord; +import com.czg.product.entity.ConsStockFlow; import com.czg.product.entity.ShopVendor; +import com.czg.product.service.ConsPayRecordService; +import com.czg.product.service.ConsStockFlowService; import com.czg.product.service.ShopVendorService; +import com.czg.product.vo.ShopVendorBillPayRecordVO; +import com.czg.product.vo.ShopVendorBillRecordVO; +import com.czg.product.vo.ShopVendorBillVO; +import com.czg.product.vo.ShopVendorSummaryVO; import com.czg.sa.StpKit; +import com.czg.service.product.mapper.ConsStockFlowMapper; import com.czg.service.product.mapper.ShopVendorMapper; import com.czg.utils.PageUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.update.UpdateChain; import com.mybatisflex.spring.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; /** @@ -26,6 +43,12 @@ import java.util.List; */ @Service public class ShopVendorServiceImpl extends ServiceImpl implements ShopVendorService { + @Resource + private ConsStockFlowMapper consStockFlowMapper; + @Resource + private ConsStockFlowService consStockFlowService; + @Resource + private ConsPayRecordService consPayRecordService; private QueryWrapper buildQueryWrapper(ShopVendorDTO param) { QueryWrapper queryWrapper = PageUtil.buildSortQueryWrapper(); @@ -93,4 +116,73 @@ public class ShopVendorServiceImpl extends ServiceImpl billList(Long shopId) { + PageHelper.startPage(PageUtil.buildPageHelp()); + return PageUtil.convert(new PageInfo<>(mapper.bill(shopId))); + } + + @Override + public Page billRecord(Long shopId, Integer vendorId) { + PageHelper.startPage(PageUtil.buildPageHelp()); + return PageUtil.convert(new PageInfo<>(consStockFlowMapper.selectByVendorId(shopId, vendorId))); + } + + @Override + public Boolean pay(Long shopId, ShopVendorBillPayDTO payDTO) { + // 批量付款 + if (payDTO.getFlowIdList().size() > 1) { + List stockFlows = consStockFlowMapper.selectUnPaid(shopId, payDTO.getFlowIdList()); + + BigDecimal unPaidAmount = BigDecimal.ZERO; + ArrayList records = new ArrayList<>(); + for (ConsStockFlow item : stockFlows) { + unPaidAmount = unPaidAmount.add(item.getAmountPayable().subtract(item.getActualPaymentAmount())); + item.setActualPaymentAmount(item.getAmountPayable()); + records.add(new ConsPayRecord().setShopId(shopId).setVendorId(item.getVendorId()).setType(payDTO.getType()) + .setAmount(item.getAmountPayable().subtract(item.getActualPaymentAmount())) + .setFlowId(item.getId()).setUserId(StpKit.USER.getLoginIdAsLong()).setCreateTime(DateUtil.date().toLocalDateTime())); + } + + if (unPaidAmount.compareTo(payDTO.getAmount()) != 0) { + throw new ApiNotPrintException("批量付款应全部付款"); + } + + consPayRecordService.saveBatch(records); + return consStockFlowService.updateBatch(stockFlows); + }else { + ConsStockFlow stockFlow = consStockFlowMapper.selectOneByQuery(new QueryWrapper().eq(ConsStockFlow::getShopId, shopId).eq(ConsStockFlow::getId, payDTO.getFlowIdList().getFirst())); + if (stockFlow == null) { + throw new ApiNotPrintException("付款账单不存在"); + } + + if (stockFlow.getAmountPayable().compareTo(stockFlow.getActualPaymentAmount()) <= 0) { + throw new ApiNotPrintException("次账单已付款完成"); + } + + if (payDTO.getAmount().compareTo(stockFlow.getAmountPayable().subtract(stockFlow.getActualPaymentAmount())) > 0) { + throw new ApiNotPrintException("付款金额不应超过待付款金额"); + } + + ConsPayRecord consPayRecord = BeanUtil.copyProperties(payDTO, ConsPayRecord.class); + consPayRecord.setShopId(shopId); + consPayRecord.setVendorId(stockFlow.getVendorId()); + consPayRecord.setFlowId(payDTO.getFlowIdList().getFirst()); + consPayRecord.setUserId(StpKit.USER.getLoginIdAsLong()); + consPayRecordService.save(consPayRecord); + stockFlow.setActualPaymentAmount(stockFlow.getActualPaymentAmount().add(payDTO.getAmount())); + return consStockFlowMapper.update(stockFlow) > 0; + } + + } + + @Override + public Page payRecord(Long shopId, Long flowId) { + return consPayRecordService.getByFlowId(shopId, flowId); + } +} diff --git a/cash-service/product-service/src/main/resources/mapper/ConsPayRecordMapper.xml b/cash-service/product-service/src/main/resources/mapper/ConsPayRecordMapper.xml new file mode 100644 index 00000000..46ab1958 --- /dev/null +++ b/cash-service/product-service/src/main/resources/mapper/ConsPayRecordMapper.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/cash-service/product-service/src/main/resources/mapper/ConsStockFlowMapper.xml b/cash-service/product-service/src/main/resources/mapper/ConsStockFlowMapper.xml index f8a3a0c4..ad05381b 100644 --- a/cash-service/product-service/src/main/resources/mapper/ConsStockFlowMapper.xml +++ b/cash-service/product-service/src/main/resources/mapper/ConsStockFlowMapper.xml @@ -5,16 +5,16 @@ - \ No newline at end of file + + + + diff --git a/cash-service/product-service/src/main/resources/mapper/ShopVendorMapper.xml b/cash-service/product-service/src/main/resources/mapper/ShopVendorMapper.xml index 8425ce76..ff7722c1 100644 --- a/cash-service/product-service/src/main/resources/mapper/ShopVendorMapper.xml +++ b/cash-service/product-service/src/main/resources/mapper/ShopVendorMapper.xml @@ -3,4 +3,34 @@ - \ No newline at end of file + + + From b0d4264d8fab3add065094184fab3e71b875315c Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Sun, 6 Apr 2025 18:06:05 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E5=95=86=E5=93=81=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czg/product/vo/ShopGroupProductVo.java | 4 ++++ .../com/czg/product/vo/ShopProductVo.java | 4 ++++ .../service/impl/UProductServiceImpl.java | 24 +++++++++++++------ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java index 253c8491..e1cd3b31 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java @@ -47,4 +47,8 @@ public class ShopGroupProductVo implements Serializable { * 商品列表 */ private List productList; + /** + * 排序方式 0-默认; 1-价格从高到低; 2-销量由高到低; + */ + private String sortMode; } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java index 2728c80f..b0a64208 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java @@ -105,4 +105,8 @@ public class ShopProductVo implements Serializable { */ @JSONField(serialize = false) private LocalTime endTime; + /** + * 排序 + */ + private Integer sort; } diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java index 38d3a3b6..e02164bc 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java @@ -37,10 +37,7 @@ import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalTime; import java.time.format.TextStyle; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -77,7 +74,10 @@ public class UProductServiceImpl extends ServiceImpl imp @Override @Cacheable(value = CacheConstant.USER_CLIENT_GROUPS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()") public List queryGroupProductList(Long shopId) { - List groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, ProdGroup::getName, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime).eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()).orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); + List groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, + ProdGroup::getName, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime) + .eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()) + .orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); List productAllList = productMapper.selectGroupProductList(shopId); productAllList.forEach(item -> { item.setIsSaleTime(calcIsSaleTime(item.getDays(), item.getStartTime(), item.getEndTime())); @@ -89,8 +89,11 @@ public class UProductServiceImpl extends ServiceImpl imp }); Map productKv = productAllList.stream().collect(Collectors.toMap(ShopProductVo::getId, shopProductVo -> shopProductVo)); List prodGroupIdList = groupList.stream().map(ShopGroupProductVo::getId).distinct().toList(); - List relationList = prodGroupIdList.isEmpty() ? new ArrayList<>() : prodGroupRelationMapper.selectListByQueryAs(query().select(ProdGroupRelation::getProdGroupId, ProdGroupRelation::getProductId).in(ProdGroupRelation::getProdGroupId, prodGroupIdList), ProdGroupRelationDTO.class); - Map> relationKv = relationList.stream().collect(Collectors.groupingBy(ProdGroupRelationDTO::getProdGroupId, Collectors.mapping(ProdGroupRelationDTO::getProductId, Collectors.toList()))); + List relationList = prodGroupIdList.isEmpty() ? new ArrayList<>() : + prodGroupRelationMapper.selectListByQueryAs(query().select(ProdGroupRelation::getProdGroupId, ProdGroupRelation::getProductId) + .in(ProdGroupRelation::getProdGroupId, prodGroupIdList), ProdGroupRelationDTO.class); + Map> relationKv = relationList.stream().collect(Collectors.groupingBy(ProdGroupRelationDTO::getProdGroupId, + Collectors.mapping(ProdGroupRelationDTO::getProductId, Collectors.toList()))); for (ShopGroupProductVo group : groupList) { List productIdList = relationKv.get(group.getId()); if (CollUtil.isEmpty(productIdList)) { @@ -108,6 +111,13 @@ public class UProductServiceImpl extends ServiceImpl imp productList.parallelStream().forEach(product -> { product.setIsSaleTime(isSaleTime); }); + + switch (group.getSortMode()) { + case "0" -> productList.sort(Comparator.comparing(ShopProductVo::getSalePrice)); + case "1" -> productList.sort((o1, o2) -> o2.getSalePrice().compareTo(o1.getSalePrice())); + case "2" -> productList.sort((o1, o2) -> o2.getSort().compareTo(o1.getSort())); + + } group.setProductList(productList); } return groupList.stream().filter(group -> CollUtil.isNotEmpty(group.getProductList())).toList();