结算记录

This commit is contained in:
2025-05-10 20:39:25 +08:00
parent 820f1763bd
commit b4c47cfd38
11 changed files with 177 additions and 75 deletions

View File

@ -1,6 +1,6 @@
package com.greenorange.promotion.controller.projectSettlement;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse;
@ -9,25 +9,28 @@ import com.greenorange.promotion.common.ResultUtils;
import com.greenorange.promotion.constant.UserConstant;
import com.greenorange.promotion.exception.ThrowUtils;
import com.greenorange.promotion.model.dto.CommonBatchRequest;
import com.greenorange.promotion.model.dto.CommonRequest;
import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementAddRequest;
import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementQueryRequest;
import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementUpdateRequest;
import com.greenorange.promotion.model.entity.ProjectSettlement;
import com.greenorange.promotion.model.entity.*;
import com.greenorange.promotion.model.vo.projectSettlement.ProjectSettlementVO;
import com.greenorange.promotion.service.common.CommonService;
import com.greenorange.promotion.service.project.PromoCodeApplyService;
import com.greenorange.promotion.service.settle.FundsChangeService;
import com.greenorange.promotion.service.settle.ProjectSettlementService;
import com.greenorange.promotion.service.user.UserInfoService;
import com.greenorange.promotion.service.user.UserMainInfoService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.greenorange.promotion.model.dto.CommonRequest;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.List;
@ -43,9 +46,18 @@ public class ProjectSettlementController {
@Resource
private ProjectSettlementService projectSettlementService;
@Resource
private FundsChangeService fundsChangeService;
@Resource
private CommonService commonService;
@Resource
private PromoCodeApplyService promoCodeApplyService;
@Resource
private UserMainInfoService userMainInfoService;
/**
* web端管理员添加项目结算记录
* @param projectSettlementAddRequest 项目结算记录添加请求体
@ -58,6 +70,30 @@ public class ProjectSettlementController {
public BaseResponse<Boolean> addProjectSettlement(@Valid @RequestBody ProjectSettlementAddRequest projectSettlementAddRequest) {
ProjectSettlement projectSettlement = commonService.copyProperties(projectSettlementAddRequest, ProjectSettlement.class);
projectSettlementService.save(projectSettlement);
// 查询对应的推广码申请记录
Long pid = projectSettlement.getPromoCodeRequestRecordId();
LambdaQueryWrapper<PromoCodeApply> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(PromoCodeApply::getId, pid);
PromoCodeApply promoCodeApply = promoCodeApplyService.getOne(lambdaQueryWrapper);
// 获取推广码申请记录的参数
String projectName = promoCodeApply.getProjectName();
Long userId = promoCodeApply.getUserId();
UserMainInfo userMainInfo = userMainInfoService.getById(userId);
BigDecimal currentBalance = userMainInfo.getCurrentBalance();
// 获取项目结算记录的参数
BigDecimal settlementRevenue = projectSettlement.getSettlementRevenue();
Long projectSettlementId = projectSettlement.getId();
// 添加资金变动记录
FundsChange fundsChange = FundsChange.builder()
.projectName(projectName)
.changeAmount(settlementRevenue)
.currentAmount(currentBalance.add(settlementRevenue))
.userId(userId)
.projectSettlementId(projectSettlementId)
.build();
fundsChangeService.save(fundsChange);
return ResultUtils.success(true);
}
@ -67,12 +103,23 @@ public class ProjectSettlementController {
* @return 是否更新成功
*/
@PostMapping("update")
@Operation(summary = "web端管理员更新项目结算记录", description = "参数项目结算记录更新请求体权限管理员方法名updateProjectSettlement")
@Operation(summary = "web端管理员根据id修改项目结算记录信息", description = "参数项目结算记录更新请求体权限管理员方法名updateProjectSettlement")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "项目结算记录管理", content = "web端管理员根据id修改项目结算记录信息")
public BaseResponse<Boolean> updateProjectSettlement(@Valid @RequestBody ProjectSettlementUpdateRequest projectSettlementUpdateRequest) {
ProjectSettlement projectSettlement = commonService.copyProperties(projectSettlementUpdateRequest, ProjectSettlement.class);
projectSettlementService.updateById(projectSettlement);
// 修改资金变动记录
Long id = projectSettlement.getId();
LambdaQueryWrapper<FundsChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(FundsChange::getProjectSettlementId, id);
FundsChange fundsChange = fundsChangeService.getOne(lambdaQueryWrapper);
BigDecimal changeAmount = fundsChange.getChangeAmount();
BigDecimal currentAmount = fundsChange.getCurrentAmount();
BigDecimal originAmount = currentAmount.subtract(changeAmount);
fundsChange.setChangeAmount(projectSettlement.getSettlementRevenue());
fundsChange.setCurrentAmount(originAmount.add(projectSettlement.getSettlementRevenue()));
fundsChangeService.updateById(fundsChange);
return ResultUtils.success(true);
}
@ -88,23 +135,27 @@ public class ProjectSettlementController {
public BaseResponse<Boolean> delProjectSettlement(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
projectSettlementService.removeById(id);
// 删除资金变动记录
LambdaQueryWrapper<FundsChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(FundsChange::getProjectSettlementId, id);
fundsChangeService.remove(lambdaQueryWrapper);
return ResultUtils.success(true);
}
/**
* web端管理员批量删除项目结算记录
* @param commonBatchRequest 项目结算记录批量删除请求体
* @return 是否删除成功
*/
@PostMapping("delBatch")
@Operation(summary = "web端管理员批量删除项目结算记录", description = "参数项目结算记录批量删除请求体权限管理员方法名delBatchProjectSettlement")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "项目结算记录管理", content = "web端管理员批量删除项目结算记录")
public BaseResponse<Boolean> delBatchProjectSettlement(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
List<Long> ids = commonBatchRequest.getIds();
projectSettlementService.removeByIds(ids);
return ResultUtils.success(true);
}
// /**
// * web端管理员批量删除项目结算记录
// * @param commonBatchRequest 项目结算记录批量删除请求体
// * @return 是否删除成功
// */
// @PostMapping("delBatch")
// @Operation(summary = "web端管理员批量删除项目结算记录", description = "参数项目结算记录批量删除请求体权限管理员方法名delBatchProjectSettlement")
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
// @SysLog(title = "项目结算记录管理", content = "web端管理员批量删除项目结算记录")
// public BaseResponse<Boolean> delBatchProjectSettlement(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
// List<Long> ids = commonBatchRequest.getIds();
// projectSettlementService.removeByIds(ids);
// return ResultUtils.success(true);
// }
/**
* web端管理员根据id查询项目结算记录
@ -123,6 +174,27 @@ public class ProjectSettlementController {
return ResultUtils.success(projectSettlementVO);
}
/**
* Web端管理员根据推广码申请记录id查询项目结算记录列表
* @param commonRequest 推广码申请记录id
* @return 项目结算记录列表
*/
@PostMapping("queryByPId")
@Operation(summary = "Web端管理员根据推广码申请记录id查询项目结算记录列表", description = "参数推广码申请记录id权限管理员方法名queryProjectSettlementByPid")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "项目结算记录管理", content = "Web端管理员根据推广码申请记录id查询项目结算记录列表")
public BaseResponse<List<ProjectSettlementVO>> queryProjectSettlementByPid(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
LambdaQueryWrapper<ProjectSettlement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProjectSettlement::getPromoCodeRequestRecordId, id);
List<ProjectSettlement> projectSettlementList = projectSettlementService.list(lambdaQueryWrapper);
List<ProjectSettlementVO> projectSettlementVOS = commonService.convertList(projectSettlementList, ProjectSettlementVO.class);
return ResultUtils.success(projectSettlementVOS);
}
// /**
// * Web端管理员分页查询项目结算记录
// * @param projectSettlementQueryRequest 项目结算记录查询请求体

View File

@ -178,10 +178,8 @@ public class UserInfoController {
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户管理", content = "web端用户根据jwt获取用户信息")
public BaseResponse<UserInfoVO> getWebUserInfoByJWT(HttpServletRequest request) {
String userAccount = (String) request.getAttribute("userAccount");
LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserInfo::getUserAccount, userAccount);
UserInfo userInfo = userInfoService.getOne(lambdaQueryWrapper);
Long userId = (Long) request.getAttribute("userId");
UserInfo userInfo = userInfoService.getById(userId);
UserInfoVO userInfoVO = commonService.copyProperties(userInfo, UserInfoVO.class);
return ResultUtils.success(userInfoVO);
}
@ -197,10 +195,8 @@ public class UserInfoController {
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
@SysLog(title = "用户管理", content = "小程序端用户根据jwt获取用户信息")
public BaseResponse<UserInfoVO> getMiniUserInfoByJWT(HttpServletRequest request) {
String userAccount = (String) request.getAttribute("userAccount");
LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserInfo::getUserAccount, userAccount);
UserInfo userInfo = userInfoService.getOne(lambdaQueryWrapper);
Long userId = (Long) request.getAttribute("userId");
UserInfo userInfo = userInfoService.getById(userId);
UserInfoVO userInfoVO = commonService.copyProperties(userInfo, UserInfoVO.class);
return ResultUtils.success(userInfoVO);
}
@ -215,14 +211,9 @@ public class UserInfoController {
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
@SysLog(title = "用户管理", content = "小程序端用户根据jwt获取用户主要信息")
public BaseResponse<UserMainInfoVO> getMiniUserMainInfoByJWT(HttpServletRequest request) {
String userAccount = (String) request.getAttribute("userAccount");
LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserInfo::getUserAccount, userAccount);
UserInfo userInfo = userInfoService.getOne(lambdaQueryWrapper);
Long id = userInfo.getId();
Long userId = (Long) request.getAttribute("userId");
LambdaQueryWrapper<UserMainInfo> userMainInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
userMainInfoLambdaQueryWrapper.eq(UserMainInfo::getUserId, id);
userMainInfoLambdaQueryWrapper.eq(UserMainInfo::getUserId, userId);
UserMainInfo userMainInfo = userMainInfoService.getOne(userMainInfoLambdaQueryWrapper);
UserMainInfoVO userMainInfoVO = commonService.copyProperties(userMainInfo, UserMainInfoVO.class);
return ResultUtils.success(userMainInfoVO);