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() .eq(MedicalInsuranceAccount::getUserId, userId) .eq(MedicalInsuranceAccount::getAccountStatus, MedicalInsuranceAccount.AccountStatus.ACTIVE) ); TableDataInfo rspData = new TableDataInfo(); if (medicalInsuranceAccount == null) { return AjaxResult.error("用户医保账户未激活!"); } // 检查今天是否已经领取 List medicalInsuranceDailyClaims = medicalInsuranceDailyClaimMapper.selectList(new LambdaQueryWrapper() .eq(MedicalInsuranceDailyClaim::getUserId, userId) ); CollectionRecordOut collectionRecordOut = new CollectionRecordOut(); List 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); } }