From 10329475f31ce0eb010fdb2c59cd88aecca94db6 Mon Sep 17 00:00:00 2001 From: dzq Date: Wed, 21 May 2025 08:06:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=80=BB=E9=87=91=E9=A2=9D=E7=BB=9F=E8=AE=A1=E5=92=8C=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=A7=92=E8=89=B2=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在StatsDTO中添加goodsTotalAmount字段以统计商品总金额 - 在QyUserDTO中添加roleId和roleName字段以展示用户角色信息 - 在ShopGoodsService及相关实现中添加calculateTotalAmount方法 - 在QyUserApplicationService中处理用户角色信息的更新 --- .../admin/controller/shop/ShopController.java | 1 + .../qywx/user/QyUserApplicationService.java | 18 +++++++++++++++++- .../qywx/user/command/UpdateQyUserCommand.java | 3 +++ .../domain/qywx/user/dto/QyUserDTO.java | 9 ++++++--- .../shop/goods/GoodsApplicationService.java | 6 ++++++ .../domain/shop/goods/db/ShopGoodsMapper.java | 9 +++++++++ .../domain/shop/goods/db/ShopGoodsService.java | 3 +++ .../shop/goods/db/ShopGoodsServiceImpl.java | 7 +++++++ .../domain/shop/shop/dto/StatsDTO.java | 3 +++ 9 files changed, 55 insertions(+), 4 deletions(-) diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java index 200b941..558dd6d 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java @@ -52,6 +52,7 @@ public class ShopController extends BaseController { StatsDTO statsDTO = new StatsDTO(); statsDTO.setShopCount(shopApplicationService.countAllRecord()); statsDTO.setGoodsCount(goodsApplicationService.countAllRecord()); + statsDTO.setGoodsTotalAmount(goodsApplicationService.calculateTotalAmount()); statsDTO.setOrderCount(orderApplicationService.countAllRecord()); statsDTO.setOrderAmountSum(orderApplicationService.sumTotalAmount()); statsDTO.setCabinetCount(smartCabinetApplicationService.countAllRecord()); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java index 1e95dd5..3d0bdcb 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java @@ -15,6 +15,8 @@ import com.agileboot.domain.qywx.user.model.QyUserModelFactory; import com.agileboot.domain.qywx.user.query.SearchQyUserQuery; import com.agileboot.domain.qywx.userQySys.db.SysUserQyUserEntity; import com.agileboot.domain.qywx.userQySys.db.SysUserQyUserService; +import com.agileboot.domain.system.role.db.SysRoleEntity; +import com.agileboot.domain.system.role.db.SysRoleService; import com.agileboot.domain.system.user.db.SysUserEntity; import com.agileboot.domain.system.user.db.SysUserService; import com.agileboot.domain.system.user.dto.UserDTO; @@ -33,6 +35,7 @@ public class QyUserApplicationService { private final QyUserModelFactory qyUserModelFactory; private final SysUserQyUserService sysUserQyUserService; private final SysUserService sysUserService; + private final SysRoleService sysRoleService; public PageDTO getUserList(SearchQyUserQuery query) { Page page = userService.getUserList(query); @@ -48,7 +51,11 @@ public class QyUserApplicationService { SysUserQyUserEntity sysUserQyUser = sysUserQyUserService.getByQyUserId(id.intValue()); if (sysUserQyUser != null) { SysUserEntity sysUser = sysUserService.getById(sysUserQyUser.getSysUserId()); - dto.setSysUser(new UserDTO(sysUser)); + if (sysUser != null && sysUser.getRoleId()!= null) { + SysRoleEntity sysRole = sysRoleService.getById(sysUser.getRoleId()); + dto.setRoleId(sysUser.getRoleId()); + dto.setRoleName(sysRole.getRoleName()); + } } return dto; } @@ -67,6 +74,15 @@ public class QyUserApplicationService { UserModel model = qyUserModelFactory.loadById(command.getId()); model.loadUpdateCommand(command); model.updateById(); + + if (command.getRoleId() == null) { + return; + } + SysUserQyUserEntity sysUserQyUser = sysUserQyUserService.getByQyUserId(command.getId()); + if (sysUserQyUser != null) { + SysUserEntity sysUser = sysUserService.getById(sysUserQyUser.getSysUserId()); + sysUser.setRoleId(command.getRoleId() > 0 ? command.getRoleId() : null); + } } public void deleteUser(BulkOperationCommand command) { diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/command/UpdateQyUserCommand.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/command/UpdateQyUserCommand.java index beb5e32..38ce2ea 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/command/UpdateQyUserCommand.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/command/UpdateQyUserCommand.java @@ -12,4 +12,7 @@ public class UpdateQyUserCommand extends AddQyUserCommand { @NotNull @PositiveOrZero private Integer id; + + + private Long roleId; } \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java index 59dd690..c23d129 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java @@ -34,9 +34,6 @@ public class QyUserDTO { } } - // 系统用户 - private UserDTO sysUser; - @ExcelColumn(name = "用户ID") private Integer id; @@ -108,4 +105,10 @@ public class QyUserDTO { @ExcelColumn(name = "用户余额") private BigDecimal balance; + + @ExcelColumn(name = "角色ID") + private Long roleId; + + @ExcelColumn(name = "角色名称") + private String roleName; } \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/GoodsApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/GoodsApplicationService.java index fb0ec22..e1dfd06 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/GoodsApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/GoodsApplicationService.java @@ -13,6 +13,8 @@ import com.agileboot.domain.shop.goods.model.GoodsModel; import com.agileboot.domain.shop.goods.model.GoodsModelFactory; import com.agileboot.domain.shop.goods.query.SearchShopGoodsQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; @@ -73,4 +75,8 @@ public class GoodsApplicationService { public Long countAllRecord() { return shopGoodsService.countAllRecord(); } + + public BigDecimal calculateTotalAmount() { + return shopGoodsService.calculateTotalAmount(); + } } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsMapper.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsMapper.java index d2b4356..7894ded 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsMapper.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.math.BigDecimal; import java.util.List; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -94,4 +96,11 @@ public interface ShopGoodsMapper extends BaseMapper { @Select("SELECT COUNT(1) FROM shop_goods WHERE deleted = 0") Long countAllRecord(); + + /** + * 计算所有未删除商品的总金额(price * stock) + * @return 商品总金额 + */ + @Select("SELECT SUM(price * stock) FROM shop_goods WHERE deleted = 0") + BigDecimal calculateTotalAmount(); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsService.java index fb55b90..2c8dad3 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsService.java @@ -4,6 +4,7 @@ import com.agileboot.common.core.page.AbstractPageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.math.BigDecimal; import java.util.List; /** @@ -24,4 +25,6 @@ public interface ShopGoodsService extends IService { SearchGoodsDO getGoodsInfo(Long goodsId); Long countAllRecord(); + + BigDecimal calculateTotalAmount(); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsServiceImpl.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsServiceImpl.java index 7edad8d..37f03e7 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsServiceImpl.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/goods/db/ShopGoodsServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.math.BigDecimal; import java.util.List; /** @@ -50,4 +52,9 @@ public class ShopGoodsServiceImpl extends ServiceImpl