feat:提供用户修改钱包流水的"创建时间"和"部门"
This commit is contained in:
1 parent
5460d1471d
commit
a1dfc6a991
4 files changed
+88
No files matched your search
+37
@@ -0,0 +1,37 @@
|
||||
package com.bsd.pjcloud.wallet.api.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 钱包流水信息修改参数,仅允许后台修正流水触发事件的归属部门和创建时间,
|
||||
* 不承载金额、余额、业务关联等不可变流水信息。
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "钱包流水信息修改参数")
|
||||
public class WalletTransactionUpdateInfoDto {
|
||||
|
||||
/**
|
||||
* 需要修改信息的钱包流水编号,由钱包流水列表返回。
|
||||
*/
|
||||
@NotNull(message = "钱包流水编号不能为空")
|
||||
@Schema(description = "钱包流水编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 流水触发事件归属的新部门编号;必须是当前租户有效部门,用于更正部门归属统计口径。
|
||||
*/
|
||||
@NotNull(message = "流水归属部门不能为空")
|
||||
@Schema(description = "流水归属部门编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 流水新的创建时间,用于更正流水归属的统计周期;时间格式为 yyyy-MM-dd HH:mm:ss。
|
||||
*/
|
||||
@NotNull(message = "流水创建时间不能为空")
|
||||
@Schema(description = "流水创建时间,格式 yyyy-MM-dd HH:mm:ss", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
+15
@@ -18,6 +18,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDepartmentSnapshotBatchDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDepartmentSnapshotDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionRemarkDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionUpdateInfoDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity;
|
||||
import com.bsd.pjcloud.wallet.api.vo.WalletCzTotalVo;
|
||||
@@ -214,6 +215,20 @@ public class WalletTransactionController {
|
||||
return R.ok(walletTransactionService.updateRemark(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改单笔钱包流水的归属部门和创建时间,用于更正流水归属统计口径,不开放金额、余额等核心字段变更。
|
||||
*
|
||||
* @param dto 流水编号、新部门编号和新创建时间
|
||||
* @return 更新到当前租户有效流水时返回 {@code true}
|
||||
*/
|
||||
@PutMapping("/update-info")
|
||||
@Operation(summary = "修改钱包流水信息")
|
||||
@SysLog("修改钱包流水信息")
|
||||
@PreAuthorize("@pms.hasPermission('wallet_walletTransaction_update_info')")
|
||||
public R<Boolean> updateInfo(@Valid @RequestBody WalletTransactionUpdateInfoDto dto) {
|
||||
return R.ok(walletTransactionService.updateInfo(dto));
|
||||
}
|
||||
|
||||
@Operation(summary = "后台充值分页", description = "后台充值分页")
|
||||
@PostMapping("/page-cz")
|
||||
public R pageCz(@ParameterObject Page page, @RequestBody WalletTransactionDto dto) {
|
||||
|
||||
+9
@@ -8,6 +8,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletBalanceTransactionDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDepartmentSnapshotBatchDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionRemarkDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionUpdateInfoDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity;
|
||||
import com.bsd.pjcloud.wallet.api.vo.WalletCzTotalVo;
|
||||
import com.bsd.pjcloud.wallet.api.vo.WalletTransactionDepartmentSnapshotVo;
|
||||
@@ -186,6 +187,14 @@ public interface WalletTransactionService extends IService<WalletTransactionEnti
|
||||
*/
|
||||
Boolean updateRemark(WalletTransactionRemarkDto dto);
|
||||
|
||||
/**
|
||||
* 修改单笔钱包流水的归属部门和创建时间,用于更正流水的部门归属统计和统计周期。
|
||||
*
|
||||
* @param dto 流水编号、新部门编号和新创建时间
|
||||
* @return 更新到当前租户有效流水时返回 {@code true}
|
||||
*/
|
||||
Boolean updateInfo(WalletTransactionUpdateInfoDto dto);
|
||||
|
||||
/**
|
||||
* 更新会员用户余额
|
||||
*
|
||||
|
||||
+27
@@ -42,6 +42,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDepartmentSnapshotBatchDt
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDepartmentSnapshotDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionRemarkDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTransactionUpdateInfoDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto;
|
||||
import com.bsd.pjcloud.wallet.api.dto.mch.WalletMchDeptViewDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
|
||||
@@ -829,6 +830,32 @@ public class WalletTransactionServiceImpl extends ServiceImpl<WalletTransactionM
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验目标部门有效后,使用独立更新条件仅重写归属部门和创建时间,不触碰流水其他字段。
|
||||
*
|
||||
* @param dto 流水编号、新部门编号和新创建时间
|
||||
* @return 更新到当前租户有效流水时返回 {@code true}
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateInfo(WalletTransactionUpdateInfoDto dto) {
|
||||
// 部门归属直接决定部门统计口径,先经 UPMS 校验部门真实存在,避免把无效部门编号写入流水。
|
||||
R<SysDept> deptResult = deptService.getDeptByDeptId(dto.getDeptId());
|
||||
if (deptResult == null || !deptResult.isOk() || ObjectUtil.isEmpty(deptResult.getData())) {
|
||||
throw new I18nBizException(ErrorCodes.COMMON_RECORD_NOT_FOUND);
|
||||
}
|
||||
// 传入空实体会跳过 MyBatis-Plus 的修改人和修改时间填充,因此保留更新实体承载审计字段。
|
||||
WalletTransactionEntity updateEntity = new WalletTransactionEntity();
|
||||
int updated = baseMapper.update(updateEntity, Wrappers.<WalletTransactionEntity>lambdaUpdate()
|
||||
.eq(WalletTransactionEntity::getId, dto.getId())
|
||||
.set(WalletTransactionEntity::getDeptId, dto.getDeptId())
|
||||
.set(WalletTransactionEntity::getCreateTime, dto.getCreateTime()));
|
||||
// 部分 MySQL affected-row 配置会把“值未变化”返回为 0,仅在记录也查不到时才判定失败。
|
||||
if (updated == 0 && baseMapper.selectById(dto.getId()) == null) {
|
||||
throw new I18nBizException(ErrorCodes.WALLET_TX_NOT_FOUND);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @CacheEvict(value = CacheConstants.WALLET_DETAIL, key = "#dto.getWalletId()")
|
||||
public Boolean updateWalletBalance(WalletTransactionDto dto) {
|
||||
|
||||
Reference in new issue
Block a user