diff --git a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java index 13f038c..3702b26 100644 --- a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java +++ b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java @@ -3,11 +3,11 @@ package cn.bunny.common.generator.generator; import cn.bunny.common.generator.entity.BaseField; import cn.bunny.common.generator.entity.BaseResultMap; import cn.bunny.common.generator.utils.GeneratorCodeUtils; -import cn.bunny.dao.dto.financial.savingGoal.SavingGoalAddDto; -import cn.bunny.dao.dto.financial.savingGoal.SavingGoalDto; -import cn.bunny.dao.dto.financial.savingGoal.SavingGoalUpdateDto; -import cn.bunny.dao.entity.financial.SavingGoal; -import cn.bunny.dao.vo.financial.admin.SavingGoalVo; +import cn.bunny.dao.dto.financial.bill.admin.BillAddDto; +import cn.bunny.dao.dto.financial.bill.admin.BillDto; +import cn.bunny.dao.dto.financial.bill.admin.BillUpdateDto; +import cn.bunny.dao.entity.financial.Bill; +import cn.bunny.dao.vo.financial.admin.BillVo; import com.baomidou.mybatisplus.annotation.TableName; import com.google.common.base.CaseFormat; import io.swagger.v3.oas.annotations.media.Schema; @@ -36,8 +36,7 @@ import java.util.stream.Stream; @Service public class WebGeneratorCode { // 公共路径 - // public static String commonPath = "D:\\Project\\web\\PC\\financial\\financial-web\\src"; - public static String commonPath = "D:\\MyFolder\\auth\\financial-web\\src"; + public static String commonPath = "D:\\Project\\web\\PC\\finance\\financial-admin\\src"; // 生成API请求路径 public static String apiPath = commonPath + "\\api\\v1\\financial\\"; // 生成vue路径 @@ -45,18 +44,18 @@ public class WebGeneratorCode { // 生成仓库路径 public static String storePath = commonPath + "\\store\\financial\\"; // 后端controller - public static String controllerPath = "D:\\MyFolder\\auth\\financial-web-server\\service\\src\\main\\java\\cn\\bunny\\services\\controller\\financial\\"; - public static String servicePath = "D:\\MyFolder\\auth\\financial-web-server\\service\\src\\main\\java\\cn\\bunny\\services\\service\\financial\\"; - public static String serviceImplPath = "D:\\MyFolder\\auth\\financial-web-server\\service\\src\\main\\java\\cn\\bunny\\services\\service\\financial\\impl\\"; - public static String mapperPath = "D:\\MyFolder\\auth\\financial-web-server\\service\\src\\main\\java\\cn\\bunny\\services\\mapper\\financial\\"; - public static String resourceMapperPath = "D:\\MyFolder\\auth\\financial-web-server\\service\\src\\main\\resources\\mapper\\financial\\"; + public static String controllerPath = "D:\\Project\\web\\PC\\finance\\financia-admin-server\\service\\src\\main\\java\\cn\\bunny\\services\\controller\\financial\\"; + public static String servicePath = "D:\\Project\\web\\PC\\finance\\financia-admin-server\\service\\src\\main\\java\\cn\\bunny\\services\\service\\financial\\"; + public static String serviceImplPath = "D:\\Project\\web\\PC\\finance\\financia-admin-server\\service\\src\\main\\java\\cn\\bunny\\services\\service\\financial\\impl\\"; + public static String mapperPath = "D:\\Project\\web\\PC\\finance\\financia-admin-server\\service\\src\\main\\java\\cn\\bunny\\services\\mapper\\financial\\"; + public static String resourceMapperPath = "D:\\Project\\web\\PC\\finance\\financia-admin-server\\service\\src\\main\\resources\\mapper\\financial\\"; public static void main(String[] args) throws Exception { - Class originalClass = SavingGoal.class; - Class dtoClass = SavingGoalDto.class; - Class addDtoClass = SavingGoalAddDto.class; - Class updateDtoClass = SavingGoalUpdateDto.class; - Class voClass = SavingGoalVo.class; + Class originalClass = Bill.class; + Class dtoClass = BillDto.class; + Class addDtoClass = BillAddDto.class; + Class updateDtoClass = BillUpdateDto.class; + Class voClass = BillVo.class; // 设置velocity资源加载器 Properties prop = new Properties(); diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillAddDto.java new file mode 100644 index 0000000..990d2ea --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillAddDto.java @@ -0,0 +1,50 @@ +package cn.bunny.dao.dto.financial.bill.admin; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "BillAddDto对象", title = "账单信息添加内容", description = "账单信息添加内容") +public class BillAddDto { + + @Schema(name = "userId", title = "绑定的用户id") + @NotNull(message = "债绑定的用户不能为空") + private Long userId; + + @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") + @NotNull(message = "类型不能为空") + @Min(value = -1, message = "类型格式不正确") + @Max(value = 1, message = "类型格式不正确") + private Byte type; + + @Schema(name = "amount", title = "金额") + @NotNull(message = "金额不能为空") + @Min(value = 0, message = "金额格式不正确") + private BigDecimal amount; + + @Schema(name = "description", title = "描述") + private String description; + + @Schema(name = "transactionDate", title = "交易日期") + @NotNull(message = "交易日期不能为空") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime transactionDate; + + @Schema(name = "categoryId", title = "类别id") + @NotNull(message = "类别id不能为空") + private Long categoryId; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillDto.java new file mode 100644 index 0000000..c62015a --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillDto.java @@ -0,0 +1,36 @@ +package cn.bunny.dao.dto.financial.bill.admin; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "BillDto对象", title = "账单信息查询内容", description = "账单信息查询内容") +public class BillDto { + + @Schema(name = "userId", title = "绑定的用户id") + private Long userId; + + @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") + private Byte type; + + @Schema(name = "description", title = "描述") + private String description; + + @Schema(name = "startDate", title = "开始交易日期") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd") + private LocalDate startDate; + + @Schema(name = "endDate", title = "结束交易日期") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd") + private LocalDate endDate; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillUpdateDto.java new file mode 100644 index 0000000..bf6c759 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/admin/BillUpdateDto.java @@ -0,0 +1,45 @@ +package cn.bunny.dao.dto.financial.bill.admin; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "BillUpdateDto对象", title = "账单信息更新内容", description = "账单信息更新内容") +public class BillUpdateDto { + + @Schema(name = "id", title = "主键") + @NotNull(message = "id不能为空") + private Long id; + + @Schema(name = "userId", title = "绑定的用户id") + @NotNull(message = "债绑定的用户不能为空") + private Long userId; + + @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") + private Byte type; + + @Schema(name = "amount", title = "金额") + private BigDecimal amount; + + @Schema(name = "description", title = "描述") + private String description; + + @Schema(name = "transactionDate", title = "交易日期") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime transactionDate; + + @Schema(name = "categoryId", title = "类别id") + private Long categoryId; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserAddDto.java index 40ad7d4..06a20a3 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserAddDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserAddDto.java @@ -17,7 +17,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor @Builder -@Schema(name = "BillAddDto对象", title = "账单信息添加内容", description = "账单信息添加内容") +@Schema(name = "BillUserAddDto对象", title = "用户账单信息添加内容", description = "用户账单信息添加内容") public class BillUserAddDto { @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserDto.java index be06198..8db7af6 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserDto.java @@ -13,7 +13,7 @@ import java.time.LocalDate; @AllArgsConstructor @NoArgsConstructor @Builder -@Schema(name = "BillDto对象", title = "账单信息查询内容", description = "账单信息查询内容") +@Schema(name = "BillUserDto对象", title = "用户账单信息查询内容", description = "用户账单信息查询内容") public class BillUserDto { @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserUpdateDto.java index 19810ef..55da532 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/bill/user/BillUserUpdateDto.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor @Builder -@Schema(name = "BillUpdateDto对象", title = "账单信息更新内容", description = "账单信息更新内容") +@Schema(name = "BillUserUpdateDto对象", title = "用户账单信息更新内容", description = "用户账单信息更新内容") public class BillUserUpdateDto { @Schema(name = "id", title = "主键") diff --git a/dao/src/main/java/cn/bunny/dao/entity/financial/Bill.java b/dao/src/main/java/cn/bunny/dao/entity/financial/Bill.java index 7d43d91..b608363 100644 --- a/dao/src/main/java/cn/bunny/dao/entity/financial/Bill.java +++ b/dao/src/main/java/cn/bunny/dao/entity/financial/Bill.java @@ -28,6 +28,9 @@ public class Bill extends BaseEntity { @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") private Byte type; + @Schema(name = "userId", title = "绑定的用户id") + private Long userId; + @Schema(name = "amount", title = "金额") private BigDecimal amount; diff --git a/dao/src/main/java/cn/bunny/dao/vo/financial/admin/BillVo.java b/dao/src/main/java/cn/bunny/dao/vo/financial/admin/BillVo.java new file mode 100644 index 0000000..c12ff88 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/vo/financial/admin/BillVo.java @@ -0,0 +1,56 @@ +package cn.bunny.dao.vo.financial.admin; + +import cn.bunny.dao.common.vo.BaseUserVo; +import com.alibaba.fastjson2.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "BillVo对象", title = "账单信息返回内容", description = "账单信息返回内容") +public class BillVo extends BaseUserVo { + + @Schema(name = "userId", title = "绑定的用户id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) + private Long userId; + + @Schema(name = "username", title = "用户名") + private String username; + + @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") + private Byte type; + + @Schema(name = "amount", title = "金额") + private BigDecimal amount; + + @Schema(name = "description", title = "描述") + private String description; + + @Schema(name = "transactionDate", title = "交易日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime transactionDate; + + @Schema(name = "categoryId", title = "分类Id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) + private String categoryId; + + @Schema(name = "categoryName", title = "类别分类") + private String categoryName; + +} diff --git a/dao/src/main/java/cn/bunny/dao/vo/financial/user/BillUserVo.java b/dao/src/main/java/cn/bunny/dao/vo/financial/user/BillUserVo.java index 451841f..086c0f4 100644 --- a/dao/src/main/java/cn/bunny/dao/vo/financial/user/BillUserVo.java +++ b/dao/src/main/java/cn/bunny/dao/vo/financial/user/BillUserVo.java @@ -19,7 +19,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor @Builder -@Schema(name = "BillVo对象", title = "账单信息返回内容", description = "账单信息返回内容") +@Schema(name = "BillUserVo对象", title = "用户账单信息返回内容", description = "用户账单信息返回内容") public class BillUserVo extends BaseVo { @Schema(name = "username", title = "类型:1 - 收入,-1 - 支出") diff --git a/service/src/main/java/cn/bunny/services/controller/financial/BillController.java b/service/src/main/java/cn/bunny/services/controller/financial/BillController.java index 2438f77..5ce0518 100644 --- a/service/src/main/java/cn/bunny/services/controller/financial/BillController.java +++ b/service/src/main/java/cn/bunny/services/controller/financial/BillController.java @@ -1,5 +1,8 @@ package cn.bunny.services.controller.financial; +import cn.bunny.dao.dto.financial.bill.admin.BillAddDto; +import cn.bunny.dao.dto.financial.bill.admin.BillDto; +import cn.bunny.dao.dto.financial.bill.admin.BillUpdateDto; import cn.bunny.dao.dto.financial.bill.user.BillUserAddDto; import cn.bunny.dao.dto.financial.bill.user.BillUserDto; import cn.bunny.dao.dto.financial.bill.user.BillUserUpdateDto; @@ -7,6 +10,7 @@ import cn.bunny.dao.entity.financial.Bill; import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.pojo.result.Result; import cn.bunny.dao.pojo.result.ResultCodeEnum; +import cn.bunny.dao.vo.financial.admin.BillVo; import cn.bunny.dao.vo.financial.user.BillUserVo; import cn.bunny.services.service.financial.BillService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -36,35 +40,69 @@ public class BillController { @Autowired private BillService billService; - @Operation(summary = "分页查询账单信息", description = "分页查询账单信息") + @Operation(summary = "用户分页查询账单信息", description = "用户分页查询账单信息") @GetMapping("noManage/getUserBillList/{page}/{limit}") - public Mono>> getBillList( + public Mono>> getUserBillList( @Parameter(name = "page", description = "当前页", required = true) @PathVariable("page") Integer page, @Parameter(name = "limit", description = "每页记录数", required = true) @PathVariable("limit") Integer limit, BillUserDto dto) { Page pageParams = new Page<>(page, limit); - PageResult pageResult = billService.getBillList(pageParams, dto); + PageResult pageResult = billService.getUserBillList(pageParams, dto); + return Mono.just(Result.success(pageResult)); + } + + @Operation(summary = "用户添加账单信息", description = "用户添加账单信息") + @PostMapping("noManage/addUserBill") + public Mono> addUserBill(@Valid @RequestBody BillUserAddDto dto) { + billService.addUserBill(dto); + return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); + } + + @Operation(summary = "用户更新账单信息", description = "用户更新账单信息") + @PutMapping("noManage/updateUserBill") + public Mono> updateUserBill(@Valid @RequestBody BillUserUpdateDto dto) { + billService.updateUserBill(dto); + return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); + } + + @Operation(summary = "用户删除账单信息", description = "用户删除账单信息") + @DeleteMapping("noManage/deleteUserBill") + public Mono> deleteUserBill(@RequestBody List ids) { + billService.deleteUserBill(ids); + return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); + } + + @Operation(summary = "分页查询账单信息", description = "分页查询账单信息") + @GetMapping("getBillList/{page}/{limit}") + public Mono>> getBillList( + @Parameter(name = "page", description = "当前页", required = true) + @PathVariable("page") Integer page, + @Parameter(name = "limit", description = "每页记录数", required = true) + @PathVariable("limit") Integer limit, + BillDto dto) { + Page pageParams = new Page<>(page, limit); + PageResult pageResult = billService.getBillList(pageParams, dto); return Mono.just(Result.success(pageResult)); } @Operation(summary = "添加账单信息", description = "添加账单信息") - @PostMapping("noManage/addUserBill") - public Mono> addBill(@Valid @RequestBody BillUserAddDto dto) { + @PostMapping("addBill") + public Mono> addBill(@Valid @RequestBody BillAddDto dto) { billService.addBill(dto); return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); } @Operation(summary = "更新账单信息", description = "更新账单信息") - @PutMapping("noManage/updateUserBill") - public Mono> updateBill(@Valid @RequestBody BillUserUpdateDto dto) { + @PutMapping("updateBill") + public Mono> updateBill(@Valid @RequestBody BillUpdateDto dto) { billService.updateBill(dto); return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); } @Operation(summary = "删除账单信息", description = "删除账单信息") - @DeleteMapping("noManage/deleteUserBill") + @DeleteMapping("deleteBill") public Mono> deleteBill(@RequestBody List ids) { billService.deleteBill(ids); return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); diff --git a/service/src/main/java/cn/bunny/services/controller/DebtRepaymentPlanController.java b/service/src/main/java/cn/bunny/services/controller/financial/DebtRepaymentPlanController.java similarity index 98% rename from service/src/main/java/cn/bunny/services/controller/DebtRepaymentPlanController.java rename to service/src/main/java/cn/bunny/services/controller/financial/DebtRepaymentPlanController.java index 08003a1..8725ad0 100644 --- a/service/src/main/java/cn/bunny/services/controller/DebtRepaymentPlanController.java +++ b/service/src/main/java/cn/bunny/services/controller/financial/DebtRepaymentPlanController.java @@ -1,4 +1,4 @@ -package cn.bunny.services.controller; +package cn.bunny.services.controller.financial; import cn.bunny.dao.dto.financial.debtRepaymentPlan.DebtRepaymentPlanAddDto; import cn.bunny.dao.dto.financial.debtRepaymentPlan.DebtRepaymentPlanDto; diff --git a/service/src/main/java/cn/bunny/services/mapper/financial/BillMapper.java b/service/src/main/java/cn/bunny/services/mapper/financial/BillMapper.java index 43aad55..8b4b263 100644 --- a/service/src/main/java/cn/bunny/services/mapper/financial/BillMapper.java +++ b/service/src/main/java/cn/bunny/services/mapper/financial/BillMapper.java @@ -1,7 +1,9 @@ package cn.bunny.services.mapper.financial; +import cn.bunny.dao.dto.financial.bill.admin.BillDto; import cn.bunny.dao.dto.financial.bill.user.BillUserDto; import cn.bunny.dao.entity.financial.Bill; +import cn.bunny.dao.vo.financial.admin.BillVo; import cn.bunny.dao.vo.financial.user.BillUserVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -23,13 +25,13 @@ import java.util.List; public interface BillMapper extends BaseMapper { /** - * * 分页查询账单信息内容 + * * 分页查询用户账单信息内容 * * @param pageParams 账单信息分页参数 * @param dto 账单信息查询表单 * @return 账单信息分页结果 */ - IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") BillUserDto dto, @Param("userId") Long userId); + IPage selectUserListByPage(@Param("page") Page pageParams, @Param("dto") BillUserDto dto, @Param("userId") Long userId); /** * 物理删除账单信息 @@ -37,4 +39,13 @@ public interface BillMapper extends BaseMapper { * @param ids 删除 id 列表 */ void deleteBatchIdsWithPhysics(List ids); + + /** + * * 分页查询账单信息内容 + * + * @param pageParams 账单信息分页参数 + * @param dto 账单信息查询表单 + * @return 账单信息分页结果 + */ + IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") BillDto dto); } diff --git a/service/src/main/java/cn/bunny/services/service/financial/BillService.java b/service/src/main/java/cn/bunny/services/service/financial/BillService.java index a479703..320beff 100644 --- a/service/src/main/java/cn/bunny/services/service/financial/BillService.java +++ b/service/src/main/java/cn/bunny/services/service/financial/BillService.java @@ -1,10 +1,14 @@ package cn.bunny.services.service.financial; +import cn.bunny.dao.dto.financial.bill.admin.BillAddDto; +import cn.bunny.dao.dto.financial.bill.admin.BillDto; +import cn.bunny.dao.dto.financial.bill.admin.BillUpdateDto; import cn.bunny.dao.dto.financial.bill.user.BillUserAddDto; import cn.bunny.dao.dto.financial.bill.user.BillUserDto; import cn.bunny.dao.dto.financial.bill.user.BillUserUpdateDto; import cn.bunny.dao.entity.financial.Bill; import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.vo.financial.admin.BillVo; import cn.bunny.dao.vo.financial.user.BillUserVo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -27,26 +31,54 @@ public interface BillService extends IService { * * @return 账单信息返回列表 */ - PageResult getBillList(Page pageParams, BillUserDto dto); + PageResult getUserBillList(Page pageParams, BillUserDto dto); /** * * 添加账单信息 * * @param dto 添加表单 */ - void addBill(@Valid BillUserAddDto dto); + void addUserBill(@Valid BillUserAddDto dto); /** * * 更新账单信息 * * @param dto 更新表单 */ - void updateBill(@Valid BillUserUpdateDto dto); + void updateUserBill(@Valid BillUserUpdateDto dto); /** * * 删除|批量删除账单信息类型 * * @param ids 删除id列表 */ + void deleteUserBill(List ids); + + /** + * 分页查询账单信息 + * + * @return 账单信息返回列表 + */ + PageResult getBillList(Page pageParams, BillDto dto); + + /** + * 添加账单信息 + * + * @param dto 添加表单 + */ + void addBill(BillAddDto dto); + + /** + * 更新账单信息 + * + * @param dto 更新表单 + */ + void updateBill(BillUpdateDto dto); + + /** + * 删除账单信息 + * + * @param ids 删除的ids + */ void deleteBill(List ids); } diff --git a/service/src/main/java/cn/bunny/services/service/financial/impl/BillServiceImpl.java b/service/src/main/java/cn/bunny/services/service/financial/impl/BillServiceImpl.java index d86e27f..8503a31 100644 --- a/service/src/main/java/cn/bunny/services/service/financial/impl/BillServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/financial/impl/BillServiceImpl.java @@ -1,15 +1,22 @@ package cn.bunny.services.service.financial.impl; import cn.bunny.common.service.context.BaseContext; +import cn.bunny.common.service.exception.BunnyException; +import cn.bunny.dao.dto.financial.bill.admin.BillAddDto; +import cn.bunny.dao.dto.financial.bill.admin.BillDto; +import cn.bunny.dao.dto.financial.bill.admin.BillUpdateDto; import cn.bunny.dao.dto.financial.bill.user.BillUserAddDto; import cn.bunny.dao.dto.financial.bill.user.BillUserDto; import cn.bunny.dao.dto.financial.bill.user.BillUserUpdateDto; import cn.bunny.dao.entity.financial.Bill; import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.pojo.result.ResultCodeEnum; +import cn.bunny.dao.vo.financial.admin.BillVo; import cn.bunny.dao.vo.financial.user.BillUserVo; import cn.bunny.services.mapper.financial.BillMapper; import cn.bunny.services.service.financial.BillService; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.validation.Valid; @@ -37,12 +44,12 @@ public class BillServiceImpl extends ServiceImpl implements Bi * @return 查询分页账单信息返回对象 */ @Override - public PageResult getBillList(Page pageParams, BillUserDto dto) { + public PageResult getUserBillList(Page pageParams, BillUserDto dto) { // 需要根据当前用户去查询 Long userId = BaseContext.getUserId(); // 判断创建用户的Id是否和当前请求的用户id是否相同 - IPage page = baseMapper.selectListByPage(pageParams, dto, userId); + IPage page = baseMapper.selectUserListByPage(pageParams, dto, userId); return PageResult.builder() .list(page.getRecords()) @@ -58,10 +65,13 @@ public class BillServiceImpl extends ServiceImpl implements Bi * @param dto 账单信息添加 */ @Override - public void addBill(@Valid BillUserAddDto dto) { + public void addUserBill(@Valid BillUserAddDto dto) { // 保存数据 Bill bill = new Bill(); BeanUtils.copyProperties(dto, bill); + + // 设置当前的用户Id + bill.setUserId(BaseContext.getUserId()); save(bill); } @@ -71,9 +81,15 @@ public class BillServiceImpl extends ServiceImpl implements Bi * @param dto 账单信息更新 */ @Override - public void updateBill(@Valid BillUserUpdateDto dto) { + public void updateUserBill(@Valid BillUserUpdateDto dto) { + // 判断当前用户修改的内容是否是自己的内容 + Bill bill = getOne(Wrappers.lambdaQuery().eq(Bill::getId, dto.getId())); + if (!bill.getUserId().equals(BaseContext.getUserId())) { + throw new BunnyException(ResultCodeEnum.ILLEGAL_DATA_REQUEST); + } + // 更新内容 - Bill bill = new Bill(); + bill = new Bill(); BeanUtils.copyProperties(dto, bill); updateById(bill); } @@ -84,6 +100,66 @@ public class BillServiceImpl extends ServiceImpl implements Bi * @param ids 删除id列表 */ @Override + public void deleteUserBill(List ids) { + // 判断删除的是否是自己的账单 + List billList = list(Wrappers.lambdaQuery().in(Bill::getId, ids)) + .stream().filter(bill -> !bill.getUserId().equals(BaseContext.getUserId())).toList(); + if (!billList.isEmpty()) { + throw new BunnyException(ResultCodeEnum.ILLEGAL_DATA_REQUEST); + } + baseMapper.deleteBatchIdsWithPhysics(ids); + } + + /** + * 分页查询账单信息 + * + * @return 账单信息返回列表 + */ + @Override + public PageResult getBillList(Page pageParams, BillDto dto) { + // 判断创建用户的Id是否和当前请求的用户id是否相同 + IPage page = baseMapper.selectListByPage(pageParams, dto); + + return PageResult.builder() + .list(page.getRecords()) + .pageNo(page.getCurrent()) + .pageSize(page.getSize()) + .total(page.getTotal()) + .build(); + } + + /** + * 添加账单信息 + * + * @param dto 添加表单 + */ + @Override + public void addBill(BillAddDto dto) { + // 保存数据 + Bill bill = new Bill(); + BeanUtils.copyProperties(dto, bill); + save(bill); + } + + /** + * 更新账单信息 + * + * @param dto 更新表单 + */ + @Override + public void updateBill(BillUpdateDto dto) { + // 更新内容 + Bill bill = new Bill(); + BeanUtils.copyProperties(dto, bill); + updateById(bill); + } + + /** + * 删除账单信息 + * + * @param ids 删除的ids + */ + @Override public void deleteBill(List ids) { baseMapper.deleteBatchIdsWithPhysics(ids); } diff --git a/service/src/main/resources/mapper/financial/BillMapper.xml b/service/src/main/resources/mapper/financial/BillMapper.xml index cefafb0..717bb98 100644 --- a/service/src/main/resources/mapper/financial/BillMapper.xml +++ b/service/src/main/resources/mapper/financial/BillMapper.xml @@ -22,8 +22,8 @@ id, create_time, update_time, create_user, update_user, is_deleted, type, amount, description, transaction_date, category_id - - select base.*, category.category_name, @@ -35,9 +35,40 @@ left join sys_user create_user on create_user.id = base.create_user left join sys_user update_user on update_user.id = base.update_user - base.is_deleted = 0 and base.create_user = #{userId} + base.is_deleted = 0 and base.user_id = #{userId} - and base.type like CONCAT('%',#{dto.type},'%') + and base.type = #{dto.type} + + + and base.description like CONCAT('%',#{dto.description},'%') + + + and base.transaction_date between #{dto.startDate} and #{dto.endDate} + + + + + +