From 38eb0afd9228d7fa9439a3a69bb26ff45b75151a Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Sat, 16 Nov 2024 23:57:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=80=BA=E5=8A=A1=E8=BF=BD=E8=B8=AA?= =?UTF-8?q?=E5=92=8C=E9=83=A8=E5=88=86bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/financial/user/DebtTrackingUserVo.java | 51 ++++++++++++ .../financial/DebtTrackingController.java | 37 +++++++++ .../financial/DebtTrackingService.java | 33 ++++++++ .../impl/DebtTrackingServiceImpl.java | 81 +++++++++++++++++++ .../financial/DebtRepaymentPlanMapper.xml | 2 +- .../mapper/financial/DebtTrackingMapper.xml | 2 +- 6 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 dao/src/main/java/cn/bunny/dao/vo/financial/user/DebtTrackingUserVo.java diff --git a/dao/src/main/java/cn/bunny/dao/vo/financial/user/DebtTrackingUserVo.java b/dao/src/main/java/cn/bunny/dao/vo/financial/user/DebtTrackingUserVo.java new file mode 100644 index 0000000..df2490d --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/vo/financial/user/DebtTrackingUserVo.java @@ -0,0 +1,51 @@ +package cn.bunny.dao.vo.financial.user; + +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 = "DebtTrackingVo对象", title = "债务追踪返回内容", description = "债务追踪返回内容") +public class DebtTrackingUserVo extends BaseUserVo { + + @Schema(name = "userId", title = "绑定的用户") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) + private Long userId; + + @Schema(name = "username", title = "用户名") + private String username; + + @Schema(name = "debtorName", title = "债务人姓名") + private String debtorName; + + @Schema(name = "debtAmount", title = "债务金额") + private BigDecimal debtAmount; + + @Schema(name = "debtType", title = "债务类型") + private String debtType; + + @Schema(name = "debtStatus", title = "债务状态") + private String debtStatus; + + @Schema(name = "dueDate", title = "还款截止日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime dueDate; + +} \ No newline at end of file diff --git a/service/src/main/java/cn/bunny/services/controller/financial/DebtTrackingController.java b/service/src/main/java/cn/bunny/services/controller/financial/DebtTrackingController.java index 1af3b00..e8ebca9 100644 --- a/service/src/main/java/cn/bunny/services/controller/financial/DebtTrackingController.java +++ b/service/src/main/java/cn/bunny/services/controller/financial/DebtTrackingController.java @@ -3,11 +3,14 @@ package cn.bunny.services.controller.financial; import cn.bunny.dao.dto.financial.debtTracking.DebtTrackingDto; import cn.bunny.dao.dto.financial.debtTracking.admin.DebtTrackingAddDto; import cn.bunny.dao.dto.financial.debtTracking.admin.DebtTrackingUpdateDto; +import cn.bunny.dao.dto.financial.debtTracking.user.DebtTrackingAddUserDto; +import cn.bunny.dao.dto.financial.debtTracking.user.DebtTrackingUpdateUserDto; import cn.bunny.dao.entity.financial.DebtTracking; 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.DebtTrackingVo; +import cn.bunny.dao.vo.financial.user.DebtTrackingUserVo; import cn.bunny.services.service.financial.DebtTrackingService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; @@ -49,6 +52,19 @@ public class DebtTrackingController { return Mono.just(Result.success(pageResult)); } + @Operation(summary = "用户分页查询债务追踪", description = "用户分页查询债务追踪") + @GetMapping("noManage/getUserDebtTrackingList/{page}/{limit}") + public Mono>> getUserDebtTrackingList( + @Parameter(name = "page", description = "当前页", required = true) + @PathVariable("page") Integer page, + @Parameter(name = "limit", description = "每页记录数", required = true) + @PathVariable("limit") Integer limit, + DebtTrackingDto dto) { + Page pageParams = new Page<>(page, limit); + PageResult pageResult = debtTrackingService.getUserDebtTrackingList(pageParams, dto); + return Mono.just(Result.success(pageResult)); + } + @Operation(summary = "添加债务追踪", description = "添加债务追踪") @PostMapping("addDebtTracking") public Mono> addDebtTracking(@Valid @RequestBody DebtTrackingAddDto dto) { @@ -56,6 +72,13 @@ public class DebtTrackingController { return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); } + @Operation(summary = "用户添加债务追踪", description = "用户添加债务追踪") + @PostMapping("noManage/addUserDebtTracking") + public Mono> addUserDebtTracking(@Valid @RequestBody DebtTrackingAddUserDto dto) { + debtTrackingService.addUserDebtTracking(dto); + return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); + } + @Operation(summary = "更新债务追踪", description = "更新债务追踪") @PutMapping("updateDebtTracking") public Mono> updateDebtTracking(@Valid @RequestBody DebtTrackingUpdateDto dto) { @@ -63,10 +86,24 @@ public class DebtTrackingController { return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); } + @Operation(summary = "用户更新债务追踪", description = "用户更新债务追踪") + @PutMapping("noManage/updateUserDebtTracking") + public Mono> updateUserDebtTracking(@Valid @RequestBody DebtTrackingUpdateUserDto dto) { + debtTrackingService.updateUserDebtTracking(dto); + return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); + } + @Operation(summary = "删除债务追踪", description = "删除债务追踪") @DeleteMapping("deleteDebtTracking") public Mono> deleteDebtTracking(@RequestBody List ids) { debtTrackingService.deleteDebtTracking(ids); return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); } + + @Operation(summary = "用户删除债务追踪", description = "用户删除债务追踪") + @DeleteMapping("noManage/deleteUserDebtTracking") + public Mono> deleteUserDebtTracking(@RequestBody List ids) { + debtTrackingService.deleteUserDebtTracking(ids); + return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); + } } diff --git a/service/src/main/java/cn/bunny/services/service/financial/DebtTrackingService.java b/service/src/main/java/cn/bunny/services/service/financial/DebtTrackingService.java index 5d3d07c..5e67ab7 100644 --- a/service/src/main/java/cn/bunny/services/service/financial/DebtTrackingService.java +++ b/service/src/main/java/cn/bunny/services/service/financial/DebtTrackingService.java @@ -3,9 +3,12 @@ package cn.bunny.services.service.financial; import cn.bunny.dao.dto.financial.debtTracking.DebtTrackingDto; import cn.bunny.dao.dto.financial.debtTracking.admin.DebtTrackingAddDto; import cn.bunny.dao.dto.financial.debtTracking.admin.DebtTrackingUpdateDto; +import cn.bunny.dao.dto.financial.debtTracking.user.DebtTrackingAddUserDto; +import cn.bunny.dao.dto.financial.debtTracking.user.DebtTrackingUpdateUserDto; import cn.bunny.dao.entity.financial.DebtTracking; import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.vo.financial.admin.DebtTrackingVo; +import cn.bunny.dao.vo.financial.user.DebtTrackingUserVo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import jakarta.validation.Valid; @@ -49,4 +52,34 @@ public interface DebtTrackingService extends IService { * @param ids 删除id列表 */ void deleteDebtTracking(List ids); + + /** + * 用户分页查询债务追踪 + * + * @param pageParams 分页条件 + * @param dto 查询表单 + * @return 查询接到过 + */ + PageResult getUserDebtTrackingList(Page pageParams, DebtTrackingDto dto); + + /** + * 用户添加债务追踪 + * + * @param dto 添加表单 + */ + void addUserDebtTracking(DebtTrackingAddUserDto dto); + + /** + * 用户更新债务追踪 + * + * @param dto 更新表单 + */ + void updateUserDebtTracking(DebtTrackingUpdateUserDto dto); + + /** + * 用户删除债务追踪 + * + * @param ids 删除列表 + */ + void deleteUserDebtTracking(List ids); } diff --git a/service/src/main/java/cn/bunny/services/service/financial/impl/DebtTrackingServiceImpl.java b/service/src/main/java/cn/bunny/services/service/financial/impl/DebtTrackingServiceImpl.java index 617294f..dbc9974 100644 --- a/service/src/main/java/cn/bunny/services/service/financial/impl/DebtTrackingServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/financial/impl/DebtTrackingServiceImpl.java @@ -1,14 +1,21 @@ 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.debtTracking.DebtTrackingDto; import cn.bunny.dao.dto.financial.debtTracking.admin.DebtTrackingAddDto; import cn.bunny.dao.dto.financial.debtTracking.admin.DebtTrackingUpdateDto; +import cn.bunny.dao.dto.financial.debtTracking.user.DebtTrackingAddUserDto; +import cn.bunny.dao.dto.financial.debtTracking.user.DebtTrackingUpdateUserDto; import cn.bunny.dao.entity.financial.DebtTracking; import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.pojo.result.ResultCodeEnum; import cn.bunny.dao.vo.financial.admin.DebtTrackingVo; +import cn.bunny.dao.vo.financial.user.DebtTrackingUserVo; import cn.bunny.services.mapper.financial.DebtTrackingMapper; import cn.bunny.services.service.financial.DebtTrackingService; 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; @@ -26,6 +33,7 @@ import java.util.List; * @since 2024-11-11 16:36:31 */ @Service + public class DebtTrackingServiceImpl extends ServiceImpl implements DebtTrackingService { /** @@ -82,4 +90,77 @@ public class DebtTrackingServiceImpl extends ServiceImpl ids) { baseMapper.deleteBatchIdsWithPhysics(ids); } + + /** + * 用户分页查询债务追踪 + * + * @param pageParams 分页条件 + * @param dto 查询表单 + * @return 查询接到过 + */ + @Override + public PageResult getUserDebtTrackingList(Page pageParams, DebtTrackingDto dto) { + dto.setUserId(BaseContext.getUserId()); + + IPage page = baseMapper.selectListByPage(pageParams, dto); + List debtTrackingList = page.getRecords().stream().map(debtTrackingVo -> { + DebtTrackingUserVo debtTracking = new DebtTrackingUserVo(); + BeanUtils.copyProperties(debtTrackingVo, debtTracking); + return debtTracking; + }).toList(); + + return PageResult.builder() + .list(debtTrackingList) + .pageNo(page.getCurrent()) + .pageSize(page.getSize()) + .total(page.getTotal()) + .build(); + } + + /** + * 用户添加债务追踪 + * + * @param dto 添加表单 + */ + @Override + public void addUserDebtTracking(DebtTrackingAddUserDto dto) { + // 保存数据 + DebtTracking debtTracking = new DebtTracking(); + BeanUtils.copyProperties(dto, debtTracking); + + debtTracking.setUserId(BaseContext.getUserId()); + save(debtTracking); + } + + /** + * 用户更新债务追踪 + * + * @param dto 更新表单 + */ + @Override + public void updateUserDebtTracking(DebtTrackingUpdateUserDto dto) { + // 更新内容 + DebtTracking debtTracking = new DebtTracking(); + BeanUtils.copyProperties(dto, debtTracking); + + debtTracking.setUserId(BaseContext.getUserId()); + updateById(debtTracking); + } + + /** + * 用户删除债务追踪 + * + * @param ids 删除列表 + */ + @Override + public void deleteUserDebtTracking(List ids) { + // 判断删除的是否是自己的账单 + List billList = list(Wrappers.lambdaQuery().in(DebtTracking::getId, ids)) + .stream().filter(bill -> !bill.getUserId().equals(BaseContext.getUserId())).toList(); + if (!billList.isEmpty()) { + throw new BunnyException(ResultCodeEnum.ILLEGAL_DATA_REQUEST); + } + + baseMapper.deleteBatchIdsWithPhysics(ids); + } } diff --git a/service/src/main/resources/mapper/financial/DebtRepaymentPlanMapper.xml b/service/src/main/resources/mapper/financial/DebtRepaymentPlanMapper.xml index 26dc71d..9e2fa56 100644 --- a/service/src/main/resources/mapper/financial/DebtRepaymentPlanMapper.xml +++ b/service/src/main/resources/mapper/financial/DebtRepaymentPlanMapper.xml @@ -42,7 +42,7 @@ and base.installment_amount like CONCAT('%',#{dto.installmentAmount},'%') - + and base.due_date like CONCAT('%',#{dto.dueDate},'%') diff --git a/service/src/main/resources/mapper/financial/DebtTrackingMapper.xml b/service/src/main/resources/mapper/financial/DebtTrackingMapper.xml index 740138b..64a70eb 100644 --- a/service/src/main/resources/mapper/financial/DebtTrackingMapper.xml +++ b/service/src/main/resources/mapper/financial/DebtTrackingMapper.xml @@ -51,7 +51,7 @@ and base.debt_status = #{dto.debtStatus} - + and base.due_date like CONCAT('%',#{dto.dueDate},'%')