package com.pz.merchant.controller.applet; import com.pz.common.core.controller.BaseController; import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.R; 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.vo.CompanyAppVo; import com.pz.merchant.domain.vo.CompanyBalanceVo; import com.pz.merchant.domain.vo.FinanceStatisticVo; import com.pz.merchant.service.ICompanyService; import com.pz.merchant.service.IEmployeesService; import com.pz.system.domain.bo.WithdrawDepositBo; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; import java.math.BigDecimal; /** * 商户[小程序] * * @author WangMin * @date 2023-09-11 */ @Validated @RestController("AppCompanyController") @RequestMapping("/merchant/app/company") @RequiredArgsConstructor public class CompanyController extends BaseController { private final ICompanyService companyService; private final IEmployeesService employeesService; /** * 修改商户名称/头像 * * @param bo 商户参数 * @return 操作结果 */ @PutMapping("/modify") public R<Boolean> modifyCompanySimpleData(@Validated(EditGroup.class) @RequestBody ModifyCompanyInfoBo bo) { return R.ok(companyService.modifyCompanySimpleInfo(bo)); } /** * 查询商户信息 * * @param companyId 商户ID * @return 商户信息 */ @GetMapping("/info") public R<CompanyAppVo> getCompanyInfo(@NotNull(message = "商户ID不能为空") Integer companyId) { return R.ok(companyService.queryCompanyDataForApp(companyId)); } /** * 查询商户财务统计 * * @param companyId 商户ID * @param page 分页 * @return 商户财务统计及成交明细 */ @GetMapping("/finance") public R<FinanceStatisticVo> getFinanceStatistic(@NotNull(message = "商户ID不能为空") Integer companyId, PageQuery 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)); } /** * 提现 */ @PutMapping("/withdraw") public R<Boolean> withdrawDeposit(@RequestBody @Validated(EditGroup.class) WithdrawDepositBo bo) { if (bo.getAmount().compareTo(BigDecimal.ZERO) < 1) { return R.fail("提现金额必须大于0"); } if (bo.getIsMerchant()) { return R.ok(companyService.withdrawDeposit(bo)); }else { return R.ok(employeesService.withdrawDeposit(bo)); } } }