feat: 添加商品总金额统计和用户角色信息

- 在StatsDTO中添加goodsTotalAmount字段以统计商品总金额
- 在QyUserDTO中添加roleId和roleName字段以展示用户角色信息
- 在ShopGoodsService及相关实现中添加calculateTotalAmount方法
- 在QyUserApplicationService中处理用户角色信息的更新
This commit is contained in:
dzq 2025-05-21 08:06:40 +08:00
parent 32bf187134
commit 10329475f3
9 changed files with 55 additions and 4 deletions

View File

@ -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());

View File

@ -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<QyUserDTO> getUserList(SearchQyUserQuery<QyUserEntity> query) {
Page<QyUserEntity> 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<Integer> command) {

View File

@ -12,4 +12,7 @@ public class UpdateQyUserCommand extends AddQyUserCommand {
@NotNull
@PositiveOrZero
private Integer id;
private Long roleId;
}

View File

@ -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;
}

View File

@ -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();
}
}

View File

@ -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<ShopGoodsEntity> {
@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();
}

View File

@ -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<ShopGoodsEntity> {
SearchGoodsDO getGoodsInfo(Long goodsId);
Long countAllRecord();
BigDecimal calculateTotalAmount();
}

View File

@ -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<ShopGoodsMapper, ShopGoods
public Long countAllRecord() {
return baseMapper.countAllRecord();
}
@Override
public BigDecimal calculateTotalAmount() {
return baseMapper.calculateTotalAmount();
}
}

View File

@ -19,6 +19,9 @@ public class StatsDTO {
@ExcelColumn(name = "商品数量")
private Long goodsCount;
@ExcelColumn(name = "商品总金额")
private BigDecimal goodsTotalAmount;
@ExcelColumn(name = "订单数量")
private Long orderCount;