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));
}
}