package com.pz.accompany; 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.page.TableDataInfo; import com.pz.common.utils.StringUtils; import com.pz.merchant.domain.bo.EmployeesBo; import com.pz.merchant.domain.vo.EmployeesVo; import com.pz.merchant.service.IEmployeesService; import com.pz.system.domain.bo.IncomeBo; import com.pz.system.domain.vo.IncomeVo; import com.pz.system.service.IIncomeService; import com.pz.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.sql.rowset.serial.SerialException; import java.math.BigDecimal; import java.util.Optional; /** * 陪诊员-财务收益 * * @author ruoyi * @date 2023-09-07 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/accompany/employees") public class AccompanyEmployeesIncomeController extends BaseController { private final IEmployeesService iEmployeesService; private final IIncomeService iIncomeService; private final ISysUserService iSysUserService; /** * 获取总收益与余额 */ @GetMapping("/getIncome") public R<EmployeesVo> getIncome() { return R.ok(iEmployeesService.queryByUserId(getUserId())); } /** * 查询陪诊员提现记录 */ @GetMapping("/list") public TableDataInfo<IncomeVo> list(IncomeBo bo, PageQuery pageQuery) { EmployeesVo employeesVo = iEmployeesService.queryByUserId(getUserId()); bo.setEcId(employeesVo.getId()); return iIncomeService.queryByEidList(bo, pageQuery); } /** * 陪诊员提现 * * @param bo * @return */ @PutMapping("/withdrawEmployees") public R<Boolean> withdrawEmployees(IncomeBo bo) { //获取openid Optional.ofNullable(iSysUserService.selectUserById(getUserId())) .ifPresent(sysUser -> { bo.setOpenid(sysUser.getOpenId()); }); Optional.ofNullable(iEmployeesService.queryByUserId(getUserId())) .ifPresent(employeesVo -> { bo.setEcId(employeesVo.getId()); //判断提现金额是否大于余额 if (bo.getAmount().compareTo(StringUtils.isNotBlank(employeesVo.getBalance()) ? new BigDecimal(employeesVo.getBalance()) : new BigDecimal("0.00")) > 0) { try { throw new SerialException("余额不足以本次提现"); } catch (SerialException e) { throw new RuntimeException(e); } } }); return R.ok(iIncomeService.withdrawEmployees(bo)); } }