package com.ruoyi.web.controller.product;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.im.comm.Result;
|
import com.ruoyi.im.service.MedicalInsuranceAccountService;
|
import com.ruoyi.system.domain.MedicalInsuranceAccount;
|
import com.ruoyi.system.domain.MedicalInsuranceDailyClaim;
|
import com.ruoyi.system.domain.UserPolicy;
|
import com.ruoyi.system.domain.out.CollectionRecordOut;
|
import com.ruoyi.system.mapper.MedicalInsuranceAccountMapper;
|
import com.ruoyi.system.mapper.MedicalInsuranceDailyClaimMapper;
|
import com.ruoyi.system.service.UserAccountService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.time.LocalDate;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.locks.ReentrantLock;
|
|
@RestController
|
@RequestMapping("/MedicalInsuranceAccount")
|
public class MedicalInsuranceAccountController {
|
|
@Autowired
|
MedicalInsuranceAccountService medicalInsuranceAccountService;
|
|
@Autowired
|
private MedicalInsuranceAccountMapper medicalInsuranceAccountMapper;
|
|
@Autowired
|
private MedicalInsuranceDailyClaimMapper medicalInsuranceDailyClaimMapper;
|
|
@Autowired
|
UserAccountService userAccountService;
|
|
|
/**
|
* 领取保险金
|
*/
|
@GetMapping("/getInsuranceBenefit")
|
public Result getInsuranceBenefit(@RequestParam(value = "account") String account) {
|
try {
|
return medicalInsuranceAccountService.getInsuranceBenefit(account);
|
}catch (Exception e){
|
e.printStackTrace();
|
return Result.error("购买失败!");
|
}
|
}
|
|
/**
|
* 查询领取状态
|
*/
|
@GetMapping("/getReceiveStatus")
|
public Result getReceiveStatus(@RequestParam(value = "account") String account) {
|
try {
|
return medicalInsuranceAccountService.getReceiveStatus(account);
|
}catch (Exception e){
|
e.printStackTrace();
|
return Result.error("获取失败!");
|
}
|
}
|
|
|
/**
|
* 领取记录
|
*/
|
@GetMapping("/list")
|
public AjaxResult list(@RequestParam(value = "userId",required = true) String userId) {
|
|
MedicalInsuranceAccount medicalInsuranceAccount = medicalInsuranceAccountMapper.selectOne(new LambdaQueryWrapper<MedicalInsuranceAccount>()
|
.eq(MedicalInsuranceAccount::getUserId, userId)
|
.eq(MedicalInsuranceAccount::getAccountStatus, MedicalInsuranceAccount.AccountStatus.ACTIVE)
|
);
|
TableDataInfo rspData = new TableDataInfo();
|
if (medicalInsuranceAccount == null) {
|
return AjaxResult.error("用户医保账户未激活!");
|
}
|
|
// 检查今天是否已经领取
|
List<MedicalInsuranceDailyClaim> medicalInsuranceDailyClaims = medicalInsuranceDailyClaimMapper.selectList(new LambdaQueryWrapper<MedicalInsuranceDailyClaim>()
|
.eq(MedicalInsuranceDailyClaim::getUserId, userId)
|
);
|
|
CollectionRecordOut collectionRecordOut = new CollectionRecordOut();
|
List<CollectionRecordOut.RecordLog> recordLogList = new ArrayList<>();
|
collectionRecordOut.setNumber(medicalInsuranceDailyClaims.size());
|
collectionRecordOut.setMoney(medicalInsuranceAccount.getAlreadyReceived());
|
medicalInsuranceDailyClaims.forEach(f->{
|
CollectionRecordOut.RecordLog recordLog = new CollectionRecordOut.RecordLog();
|
recordLog.setReceiveTime(f.getClaimDate());
|
recordLog.setMoney(f.getClaimAmount());
|
recordLogList.add(recordLog);
|
});
|
collectionRecordOut.setRecords(recordLogList);
|
return AjaxResult.success(collectionRecordOut);
|
}
|
|
}
|