Commit 0ee14238 by Wangmin

新增 查询商户账户余额

parent b99ffb29
package com.pz.merchant.controller.applet; package com.pz.merchant.controller.applet;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.dtflys.forest.annotation.Get;
import com.pz.common.core.controller.BaseController; import com.pz.common.core.controller.BaseController;
import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.domain.R; import com.pz.common.core.domain.R;
import com.pz.common.core.validate.EditGroup; import com.pz.common.core.validate.EditGroup;
import com.pz.merchant.domain.bo.CompanyBalanceBo;
import com.pz.merchant.domain.bo.ModifyCompanyInfoBo; import com.pz.merchant.domain.bo.ModifyCompanyInfoBo;
import com.pz.merchant.domain.vo.CompanyAppVo; import com.pz.merchant.domain.vo.CompanyAppVo;
import com.pz.merchant.domain.vo.CompanyBalanceVo;
import com.pz.merchant.domain.vo.FinanceStatisticVo; import com.pz.merchant.domain.vo.FinanceStatisticVo;
import com.pz.merchant.service.ICompanyService; import com.pz.merchant.service.ICompanyService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -64,4 +67,19 @@ public class CompanyController extends BaseController { ...@@ -64,4 +67,19 @@ public class CompanyController extends BaseController {
return R.ok(companyService.queryFinanceStatistic(companyId, page)); return R.ok(companyService.queryFinanceStatistic(companyId, page));
} }
/**
* 查询商户账户余额
*
* @param bo 查询参数
* @param page 分页
* @return 商户账户余额及提现记录
*/
@GetMapping("/balance")
public R<CompanyBalanceVo> getBalance(CompanyBalanceBo bo, PageQuery page) {
if (bo.getCompanyId() == null) {
R.fail("未指定商户ID");
}
return R.ok(companyService.queryCompanyBalance(bo, page));
}
} }
package com.pz.merchant.controller.applet; package com.pz.merchant.controller.applet;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.dtflys.forest.annotation.Put;
import com.pz.common.core.controller.BaseController; import com.pz.common.core.controller.BaseController;
import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.domain.R; import com.pz.common.core.domain.R;
...@@ -82,7 +83,7 @@ public class EmployeesController extends BaseController { ...@@ -82,7 +83,7 @@ public class EmployeesController extends BaseController {
* @param emId 陪诊员ID * @param emId 陪诊员ID
* @return 切换用户身份结果 * @return 切换用户身份结果
*/ */
@GetMapping("/switchIdentity") @PutMapping("/switchIdentity")
public R<Boolean> switchIdentity(@NotNull(message = "陪诊员ID不能为空") Integer emId) { public R<Boolean> switchIdentity(@NotNull(message = "陪诊员ID不能为空") Integer emId) {
return R.ok(employeesService.switchEmployeeIdentity(emId)); return R.ok(employeesService.switchEmployeeIdentity(emId));
} }
...@@ -93,7 +94,7 @@ public class EmployeesController extends BaseController { ...@@ -93,7 +94,7 @@ public class EmployeesController extends BaseController {
* @param emId 陪诊员ID * @param emId 陪诊员ID
* @return 切换用户状态结果 * @return 切换用户状态结果
*/ */
@GetMapping("/switchStatus") @PutMapping("/switchStatus")
public R<Boolean> switchStatus(@NotNull(message = "陪诊员ID不能为空") Integer emId) { public R<Boolean> switchStatus(@NotNull(message = "陪诊员ID不能为空") Integer emId) {
return R.ok(employeesService.disableOrRecover(emId)); return R.ok(employeesService.disableOrRecover(emId));
} }
......
package com.pz.merchant.domain.bo;
import com.pz.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 商户余额实体
* <p>created in 2023/9/13 11:17
*
* @author WangMin
* @version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CompanyBalanceBo extends BaseEntity {
/**
* 商户ID
*/
private Integer companyId;
/**
* 提现状态:0-审核中,1-成功提现,2-拒绝提现
*/
private Integer incomeStatus;
}
package com.pz.merchant.domain.vo;
import lombok.Data;
import java.util.List;
/**
* 商户余额实体
* <p>created in 2023/9/13 11:13
*
* @author WangMin
* @version 1.0
*/
@Data
public class CompanyBalanceVo {
/**
* 总收益
*/
private Float totalRevenue;
/**
* 可用余额
*/
private Float balance;
/**
* 冻结余额
*/
private Float freezeBalance;
/**
* 提现记录总数
*/
private Long total;
/**
* 提现记录
*/
private List<CompanyIncomeVo> incomes;
}
package com.pz.merchant.domain.vo;
import lombok.Data;
import java.util.Date;
/**
* 商户提现实体
* <p>created in 2023/9/13 11:05
*
* @author WangMin
* @version 1.0
*/
@Data
public class CompanyIncomeVo {
/**
* 提现单号
*/
private String partnerTradeNo;
/**
* 提现金额
*/
private Float amount;
/**
* 提现审核备注,拒绝提现时可能用到
*/
private String remark;
/**
* 更新时间
*/
private Date updateTime;
}
...@@ -3,9 +3,11 @@ package com.pz.merchant.service; ...@@ -3,9 +3,11 @@ package com.pz.merchant.service;
import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.page.TableDataInfo;
import com.pz.merchant.domain.bo.CompanyBalanceBo;
import com.pz.merchant.domain.bo.CompanyBo; import com.pz.merchant.domain.bo.CompanyBo;
import com.pz.merchant.domain.bo.ModifyCompanyInfoBo; import com.pz.merchant.domain.bo.ModifyCompanyInfoBo;
import com.pz.merchant.domain.vo.CompanyAppVo; import com.pz.merchant.domain.vo.CompanyAppVo;
import com.pz.merchant.domain.vo.CompanyBalanceVo;
import com.pz.merchant.domain.vo.CompanyVo; import com.pz.merchant.domain.vo.CompanyVo;
import com.pz.merchant.domain.vo.FinanceStatisticVo; import com.pz.merchant.domain.vo.FinanceStatisticVo;
...@@ -74,4 +76,13 @@ public interface ICompanyService { ...@@ -74,4 +76,13 @@ public interface ICompanyService {
* @return 商户财务统计 * @return 商户财务统计
*/ */
FinanceStatisticVo queryFinanceStatistic(Integer companyId, PageQuery page); FinanceStatisticVo queryFinanceStatistic(Integer companyId, PageQuery page);
/**
* 查询账户余额
*
* @param bo 查询参数
* @param page 分页结果
* @return 商户余额及提现记录
*/
CompanyBalanceVo queryCompanyBalance(CompanyBalanceBo bo, PageQuery page);
} }
...@@ -12,13 +12,16 @@ import com.pz.common.core.domain.PageQuery; ...@@ -12,13 +12,16 @@ import com.pz.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pz.common.utils.StringUtils; import com.pz.common.utils.StringUtils;
import com.pz.merchant.domain.Company; import com.pz.merchant.domain.Company;
import com.pz.merchant.domain.bo.CompanyBalanceBo;
import com.pz.merchant.domain.bo.CompanyBo; import com.pz.merchant.domain.bo.CompanyBo;
import com.pz.merchant.domain.bo.ModifyCompanyInfoBo; import com.pz.merchant.domain.bo.ModifyCompanyInfoBo;
import com.pz.merchant.domain.vo.*; import com.pz.merchant.domain.vo.*;
import com.pz.merchant.mapper.CompanyMapper; import com.pz.merchant.mapper.CompanyMapper;
import com.pz.merchant.service.ICompanyService; import com.pz.merchant.service.ICompanyService;
import com.pz.merchant.service.ISonOrderService; import com.pz.merchant.service.ISonOrderService;
import com.pz.system.domain.Income;
import com.pz.system.mapper.CityMapper; import com.pz.system.mapper.CityMapper;
import com.pz.system.mapper.IncomeMapper;
import com.pz.system.mapper.SysUserMapper; import com.pz.system.mapper.SysUserMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -45,6 +48,8 @@ public class CompanyServiceImpl implements ICompanyService { ...@@ -45,6 +48,8 @@ public class CompanyServiceImpl implements ICompanyService {
private final SonOrderServiceBuilder sonOrderServiceBuilder; private final SonOrderServiceBuilder sonOrderServiceBuilder;
private final IncomeMapper incomeMapper;
/** /**
* 查询商户 * 查询商户
*/ */
...@@ -198,4 +203,28 @@ public class CompanyServiceImpl implements ICompanyService { ...@@ -198,4 +203,28 @@ public class CompanyServiceImpl implements ICompanyService {
result.setOrders(pageResult.getRecords()); result.setOrders(pageResult.getRecords());
return result; return result;
} }
/**
* 查询账户余额
*
* @param bo 查询参数
* @param page 分页结果
* @return 商户余额及提现记录
*/
@Override
public CompanyBalanceVo queryCompanyBalance(CompanyBalanceBo bo, PageQuery page) {
CompanyBalanceVo result = new CompanyBalanceVo();
CompanyVo companyVo = baseMapper.selectVoById(bo.getCompanyId());
Objects.requireNonNull(companyVo, "未查询到商户信息");
result.setBalance(Float.valueOf(companyVo.getBalance()));
result.setFreezeBalance(Float.valueOf(companyVo.getFreezeBalance()));
result.setTotalRevenue(Float.valueOf(companyVo.getTotalRevenue()));
LambdaUpdateWrapper<Income> wrapper = Wrappers.lambdaUpdate();
wrapper.eq(bo.getCompanyId() != null, Income::getEcId, bo.getCompanyId())
.eq(bo.getIncomeStatus() != null, Income::getStatus, bo.getIncomeStatus());
IPage<CompanyIncomeVo> incomePage = incomeMapper.selectCompanyIncome(page.build(), wrapper);
result.setTotal(incomePage.getTotal());
result.setIncomes(incomePage.getRecords());
return result;
}
} }
package com.pz.system.mapper; package com.pz.system.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.pz.merchant.domain.Employees;
import com.pz.merchant.domain.bo.EmployeesListBo;
import com.pz.merchant.domain.vo.CompanyIncomeVo;
import com.pz.system.domain.Income; import com.pz.system.domain.Income;
import com.pz.system.domain.vo.IncomeVo; import com.pz.system.domain.vo.IncomeVo;
import com.pz.common.core.mapper.BaseMapperPlus; import com.pz.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 陪诊员/商户提现Mapper接口 * 陪诊员/商户提现Mapper接口
...@@ -10,6 +18,15 @@ import com.pz.common.core.mapper.BaseMapperPlus; ...@@ -10,6 +18,15 @@ import com.pz.common.core.mapper.BaseMapperPlus;
* @author ruoyi * @author ruoyi
* @date 2023-09-12 * @date 2023-09-12
*/ */
@Mapper
public interface IncomeMapper extends BaseMapperPlus<IncomeMapper, Income, IncomeVo> { public interface IncomeMapper extends BaseMapperPlus<IncomeMapper, Income, IncomeVo> {
/**
* 查询商户提现记录
* @param page 分页
* @param queryWrapper 查询参数
* @return 提现记录
*/
IPage<CompanyIncomeVo> selectCompanyIncome(IPage<CompanyIncomeVo> page, @Param(Constants.WRAPPER) Wrapper<Income> queryWrapper);
} }
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pz.system.mapper.IncomeMapper">
<select id="selectCompanyIncome" resultType="com.pz.merchant.domain.vo.CompanyIncomeVo">
select partner_trade_no,
amount,
remark,
update_time
from income
<where>
user_type = 2
<if test="ew.emptyOfWhere == false">
and ${ew.sqlSegment}
</if>
</where>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment