feat(role): 新增根据角色键获取角色信息接口
新增getByRoleKey方法用于通过roleKey查询角色信息,并在QywxScheduleJob中使用该方法为新增用户设置默认角色 ``` ```msg feat(user): 重构用户余额统计返回数据结构 将selectTotalBalance方法返回类型从BigDecimal改为QyUserStatsDTO,包含余额和已使用余额字段,便于前端展示 ``` ```msg feat(role): 新增获取全部角色列表接口 在RoleApplicationService中新增getRoleAll方法,并添加对应的控制器接口,用于获取所有角色列表 ``` ```msg fix(shop): 为首页数据接口添加权限校验 在ShopController的stats方法上添加@PreAuthorize权限校验,确保只有拥有welcome:info权限的用户可以访问
This commit is contained in:
parent
66d1fcd026
commit
12fa1dce42
|
@ -18,6 +18,7 @@ import com.agileboot.domain.qywx.user.command.AddQyUserCommand;
|
|||
import com.agileboot.domain.qywx.user.command.UpdateQyUserCommand;
|
||||
import com.agileboot.domain.qywx.user.db.QyUserEntity;
|
||||
import com.agileboot.domain.qywx.user.dto.QyUserDTO;
|
||||
import com.agileboot.domain.qywx.user.dto.QyUserStatsDTO;
|
||||
import com.agileboot.domain.qywx.user.query.SearchQyUserQuery;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
|
@ -105,8 +106,8 @@ public class QyUserController extends BaseController {
|
|||
}
|
||||
|
||||
@GetMapping("/getTotalBalance")
|
||||
public ResponseDTO<BigDecimal> getTotalBalance(@RequestParam(required = false) String corpid) {
|
||||
BigDecimal totalBalance = qyUserApplicationService.selectTotalBalance(corpid);
|
||||
return ResponseDTO.ok(totalBalance);
|
||||
public ResponseDTO<QyUserStatsDTO> getTotalBalance(@RequestParam(required = false) String corpid) {
|
||||
QyUserStatsDTO statsDTO = qyUserApplicationService.selectTotalBalance(corpid);
|
||||
return ResponseDTO.ok(statsDTO);
|
||||
}
|
||||
}
|
|
@ -26,6 +26,7 @@ import java.math.BigDecimal;
|
|||
import java.util.List;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
@ -50,6 +51,7 @@ public class ShopController extends BaseController {
|
|||
private final MqttService mqttService;
|
||||
|
||||
@Operation(summary = "首页数据")
|
||||
@PreAuthorize("@permission.has('welcome:info')")
|
||||
@GetMapping("/Stats")
|
||||
public ResponseDTO<StatsDTO> stats() {
|
||||
// 创建统计数据DTO对象
|
||||
|
|
|
@ -55,6 +55,14 @@ public class SysRoleController extends BaseController {
|
|||
return ResponseDTO.ok(pageDTO);
|
||||
}
|
||||
|
||||
@Operation(summary = "全部角色")
|
||||
@PreAuthorize("@permission.has('system:role:list')")
|
||||
@GetMapping("/all")
|
||||
public ResponseDTO<List<RoleDTO>> all(RoleQuery query) {
|
||||
List<RoleDTO> pageDTO = roleApplicationService.getRoleAll(query);
|
||||
return ResponseDTO.ok(pageDTO);
|
||||
}
|
||||
|
||||
@Operation(summary = "角色列表导出")
|
||||
@AccessLog(title = "角色管理", businessType = BusinessTypeEnum.EXPORT)
|
||||
@PreAuthorize("@permission.has('system:role:export')")
|
||||
|
|
|
@ -38,6 +38,8 @@ import com.agileboot.domain.qywx.user.db.QyUserEntity;
|
|||
import com.agileboot.domain.qywx.userQySys.SysUserQyUserApplicationService;
|
||||
import com.agileboot.domain.qywx.userQySys.command.AddSysUserQyUserCommand;
|
||||
import com.agileboot.domain.qywx.userQySys.db.SysUserQyUserEntity;
|
||||
import com.agileboot.domain.system.role.db.SysRoleEntity;
|
||||
import com.agileboot.domain.system.role.db.SysRoleService;
|
||||
import com.agileboot.domain.system.user.UserApplicationService;
|
||||
|
||||
import com.agileboot.domain.system.user.command.AddUserCommand;
|
||||
|
@ -70,6 +72,7 @@ public class QywxScheduleJob {
|
|||
private final QyUserApplicationService qyUserApplicationService;
|
||||
private final SysUserQyUserApplicationService sysUserQyUserApplicationService;
|
||||
private final UserModelFactory userModelFactory;
|
||||
private final SysRoleService sysRoleService;
|
||||
|
||||
// private static final String appid = "QYTONG_YS_WXSHOP";
|
||||
/**
|
||||
|
@ -693,6 +696,7 @@ public class QywxScheduleJob {
|
|||
}
|
||||
});
|
||||
|
||||
SysRoleEntity role = sysRoleService.getByRoleKey("base");
|
||||
for (AddSysUserQyUserCommand binding : toAdd) {
|
||||
AddUserCommand command = new AddUserCommand();
|
||||
command.setUsername("qywx" + binding.getQyUserId());
|
||||
|
@ -707,7 +711,7 @@ public class QywxScheduleJob {
|
|||
command.setEmail(phoneNumber + "@qywx.com");
|
||||
command.setPassword("123456");
|
||||
command.setStatus(1);
|
||||
UserModel userModel = addUser(command);
|
||||
UserModel userModel = addUser(command, role != null ? role.getRoleId() : 0L);
|
||||
|
||||
binding.setSysUserId(userModel.getUserId());
|
||||
sysUserQyUserApplicationService.addSysUserQyUser(binding);
|
||||
|
@ -717,8 +721,9 @@ public class QywxScheduleJob {
|
|||
}
|
||||
}
|
||||
|
||||
private UserModel addUser(AddUserCommand command) {
|
||||
private UserModel addUser(AddUserCommand command, Long roleId) {
|
||||
UserModel model = userModelFactory.create();
|
||||
model.setRoleId(roleId);
|
||||
model.loadAddUserCommand(command);
|
||||
model.checkUsernameIsUnique();
|
||||
model.checkPhoneNumberIsUnique();
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.agileboot.domain.qywx.user.command.UpdateQyUserCommand;
|
|||
import com.agileboot.domain.qywx.user.db.QyUserEntity;
|
||||
import com.agileboot.domain.qywx.user.db.QyUserService;
|
||||
import com.agileboot.domain.qywx.user.dto.QyUserDTO;
|
||||
import com.agileboot.domain.qywx.user.dto.QyUserStatsDTO;
|
||||
import com.agileboot.domain.qywx.user.model.UserModel;
|
||||
import com.agileboot.domain.qywx.user.model.QyUserModelFactory;
|
||||
import com.agileboot.domain.qywx.user.query.SearchQyUserQuery;
|
||||
|
@ -136,7 +137,7 @@ public class QyUserApplicationService {
|
|||
}
|
||||
}
|
||||
|
||||
public BigDecimal selectTotalBalance(String corpid) {
|
||||
public QyUserStatsDTO selectTotalBalance(String corpid) {
|
||||
return userService.selectTotalBalance(corpid);
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package com.agileboot.domain.qywx.user.db;
|
||||
|
||||
import com.agileboot.domain.qywx.user.dto.QyUserStatsDTO;
|
||||
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;
|
||||
|
@ -45,14 +45,14 @@ public interface QyUserMapper extends BaseMapper<QyUserEntity> {
|
|||
"AND sr.role_key = 'admin'")
|
||||
List<String> selectAdminUserIds();
|
||||
|
||||
@Select("SELECT SUM(balance) " +
|
||||
@Select("SELECT SUM(balance) AS balance, SUM(use_balance) AS useBalance " +
|
||||
"FROM qy_user " +
|
||||
"WHERE deleted = 0")
|
||||
BigDecimal selectTotalBalance();
|
||||
QyUserStatsDTO selectTotalBalance();
|
||||
|
||||
@Select("SELECT SUM(balance) " +
|
||||
@Select("SELECT SUM(balance) AS balance, SUM(use_balance) AS useBalance " +
|
||||
"FROM qy_user " +
|
||||
"WHERE deleted = 0 AND corpid = #{corpid}")
|
||||
BigDecimal selectTotalBalanceByCorpid(@Param("corpid") String corpid);
|
||||
QyUserStatsDTO selectTotalBalanceByCorpid(@Param("corpid") String corpid);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.agileboot.domain.qywx.user.db;
|
||||
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.agileboot.domain.qywx.user.dto.QyUserStatsDTO;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
|
@ -25,5 +26,5 @@ public interface QyUserService extends IService<QyUserEntity> {
|
|||
|
||||
List<String> selectAdminUserIds();
|
||||
|
||||
BigDecimal selectTotalBalance(String corpid);
|
||||
QyUserStatsDTO selectTotalBalance(String corpid);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.agileboot.domain.qywx.user.db;
|
||||
|
||||
import com.agileboot.domain.qywx.user.dto.QyUserStatsDTO;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -16,7 +17,6 @@ import com.agileboot.common.core.page.AbstractPageQuery;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
|
@ -48,7 +48,7 @@ public class QyUserServiceImpl extends ServiceImpl<QyUserMapper, QyUserEntity> i
|
|||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal selectTotalBalance(String corpid) {
|
||||
public QyUserStatsDTO selectTotalBalance(String corpid) {
|
||||
if (StringUtils.isBlank(corpid)) {
|
||||
return baseMapper.selectTotalBalance();
|
||||
} else {
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package com.agileboot.domain.qywx.user.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class QyUserStatsDTO {
|
||||
|
||||
// 用户余额
|
||||
private BigDecimal balance;
|
||||
|
||||
// 已使用余额
|
||||
private BigDecimal useBalance;
|
||||
}
|
|
@ -10,8 +10,6 @@ import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity;
|
|||
import com.agileboot.domain.cabinet.cell.db.CabinetCellService;
|
||||
import com.agileboot.domain.cabinet.mainboard.db.CabinetMainboardEntity;
|
||||
import com.agileboot.domain.cabinet.mainboard.db.CabinetMainboardService;
|
||||
import com.agileboot.domain.cabinet.mainboard.model.CabinetMainboardModel;
|
||||
import com.agileboot.domain.cabinet.mainboard.model.CabinetMainboardModelFactory;
|
||||
import com.agileboot.domain.cabinet.operation.command.AddCabinetCellOperationCommand;
|
||||
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModel;
|
||||
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModelFactory;
|
||||
|
@ -21,7 +19,6 @@ import com.agileboot.domain.common.command.BulkOperationCommand;
|
|||
import com.agileboot.domain.mqtt.MqttService;
|
||||
import com.agileboot.domain.qywx.user.db.QyUserEntity;
|
||||
import com.agileboot.domain.qywx.user.db.QyUserService;
|
||||
import com.agileboot.domain.qywx.user.model.QyUserModelFactory;
|
||||
import com.agileboot.domain.shop.goods.db.ShopGoodsEntity;
|
||||
import com.agileboot.domain.shop.goods.db.ShopGoodsService;
|
||||
import com.agileboot.domain.shop.order.command.SubmitOrderCommand;
|
||||
|
@ -29,7 +26,6 @@ import com.agileboot.domain.shop.order.db.*;
|
|||
import com.agileboot.domain.shop.order.db.dto.OrderWithGoodsDTO;
|
||||
import com.agileboot.domain.shop.order.dto.CreateOrderResult;
|
||||
import com.agileboot.domain.shop.order.dto.GetOrdersByOpenIdDTO;
|
||||
import com.agileboot.domain.shop.order.dto.ShopOrderDTO;
|
||||
import com.agileboot.domain.shop.order.dto.TopGoodsDTO;
|
||||
import com.agileboot.domain.shop.order.model.OrderModel;
|
||||
import com.agileboot.domain.shop.order.model.OrderModelFactory;
|
||||
|
@ -54,8 +50,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.checkerframework.checker.units.qual.s;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
@ -74,7 +68,6 @@ public class OrderApplicationService {
|
|||
private final SmartCabinetService smartCabinetService;
|
||||
private final MqttService mqttService;
|
||||
private final QyUserService userService;
|
||||
private final QyUserModelFactory qyUserModelFactory;
|
||||
private final CabinetCellOperationModelFactory cabinetCellOperationModelFactory;
|
||||
private final PaymentOperationLogApplicationService paymentOperationLogApplicationService;
|
||||
private final CabinetMainboardService cabinetMainboardService;
|
||||
|
|
|
@ -53,6 +53,11 @@ public class RoleApplicationService {
|
|||
return new PageDTO<>(records, page.getTotal());
|
||||
}
|
||||
|
||||
public List<RoleDTO> getRoleAll(RoleQuery query) {
|
||||
return roleService.list(query.toQueryWrapper())
|
||||
.stream().map(RoleDTO::new).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public RoleDTO getRoleInfo(Long roleId) {
|
||||
SysRoleEntity byId = roleService.getById(roleId);
|
||||
RoleDTO roleDTO = new RoleDTO(byId);
|
||||
|
|
|
@ -48,5 +48,5 @@ public interface SysRoleService extends IService<SysRoleEntity> {
|
|||
*/
|
||||
List<SysMenuEntity> getMenuListByRoleId(Long roleId);
|
||||
|
||||
|
||||
SysRoleEntity getByRoleKey(String roleKey);
|
||||
}
|
||||
|
|
|
@ -51,5 +51,13 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
|
|||
return baseMapper.getMenuListByRoleId(roleId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysRoleEntity getByRoleKey(String roleKey) {
|
||||
QueryWrapper<SysRoleEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("role_key", roleKey)
|
||||
.eq("deleted", 0);
|
||||
return this.getOne(queryWrapper);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue