package com.chuanghai.smartschool.tuitionpayment.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck; import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume; import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException; import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult; import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterDeleteEntity; import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity; import com.chuanghai.smartschool.tuitionpayment.service.PayOrderService; import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterDeleteService; import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterService; import com.chuanghai.smartschool.tuitionpayment.service.SchoolUserService; import com.chuanghai.smartschool.tuitionpayment.utils.RSAUtils; import com.chuanghai.smartschool.tuitionpayment.vo.DormVO; import com.chuanghai.smartschool.tuitionpayment.vo.YearVo; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** * @Author: bingo * @Date: 2022/6/28 星期二 15:30 * @Description: com.chuanghai.smartschool.tuitionpayment.controller * @version: 1.0 */ @RestController @RequestMapping("tuitionpayment/payableinfowater") public class PayableInfoWaterController { @Autowired private PayableInfoWaterService payableInfoWaterService; @Autowired private PayOrderService payOrderService; @Autowired private PayableInfoWaterDeleteService payableInfoWaterDeleteService; @Autowired private SchoolUserService schoolUserService; @Value("${my-security.private-key}") private String privateKey; /** * excel 导入学生学费相关原始数据 * * @param adminToken 管理员token * @param file 文件,文件格式注意需要符合要求 * @return * @apiNote 导入学生学费相关原始数据 * 注意: * 1.需要提示用户上传的excel文件需要符合规定的格式; * 2.上传新文件将会导致所有的旧数据被删除,学费缴纳开始后不建议再上传新数据。 */ @PostMapping("importWaterByExcel") @AdminLoginCheck public CommonResult importWaterByExcel(@RequestHeader("admin_token") String adminToken, @RequestParam MultipartFile file) throws IOException { if (file.isEmpty()) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空"); } payableInfoWaterService.importByExcel(file); return CommonResult.ok(); } /** * 更新缴费订单的时间参数 */ @PutMapping("updatePayInfoWater") public CommonResult updatePayInfoWater() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.isNull("pay_item_type"); //更新时间等参数 List InfoEntityList = payableInfoWaterService.list(wrapper); List objectList = new ArrayList<>(); InfoEntityList.forEach(payableInfoWaterEntity -> { payableInfoWaterEntity.setPayCreateTime(LocalDateTime.now()); payableInfoWaterEntity.setPayItemType("1"); payableInfoWaterEntity.setPayNoticeType("1"); objectList.add(payableInfoWaterEntity); }); payableInfoWaterService.updateBatchById(objectList); return CommonResult.ok(); } /** * 根据宿舍号查询宿舍的缴费订单 * * @param dormVO * @return * @apiNote 注意:密码使用提供的公钥进行RSA加密后传输 * 公钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMOcPB06u5yKyQsPjfVWiWgbEIrd14kiXNNihciaVKb6HnkQvq7zpQuZ80WEX94spnUMI3iOAl/GmIvHrpGwcbB4hJbznm+PajiwnUSPuCCXA68YJF640cJKb/8KeM7WVz69OFkIEPHhVxOy4FFF5QWe/kt6zOZ19HmE+ak+5x/QIDAQAB */ @PostMapping("queryWaterInfo") public CommonResult queryWaterInfo(@RequestBody DormVO dormVO) { String dorm; try { dorm = RSAUtils.decrypt(dormVO.getDorm(), RSAUtils.getPrivateKey(privateKey)); } catch (Exception e) { e.printStackTrace(); throw new RRException(BizCodeEnume.PARAMETER_ERROR, "密码解密失败"); } if (dorm.contains("层")) { int indexD = dorm.indexOf("栋"); dorm = dorm.substring(0, indexD + 1) + dorm.split("层")[1]; } List payableInfoWaterList = payableInfoWaterService.queryWaterInfo(dorm, dormVO.getYear(), dormVO.getPayStatu()); payableInfoWaterList.forEach(payableInfoWaterEntity -> { if (payableInfoWaterEntity.getPayItemType().equals("2")) { String payerName = payOrderService.queryPayerName(payableInfoWaterEntity.getId()); payableInfoWaterEntity.setPayerName(payerName); } payableInfoWaterService.updateById(payableInfoWaterEntity); }); return CommonResult.ok().setResult(payableInfoWaterList); } /** * 根据card_number获取缴费信息 * * @param cardNumber 当前登录用户cardNumber * @return */ public List getPayableInfoByCardNumber(@RequestHeader("card_number") String cardNumber, String studentName) { List payableInfoWaterByCardNumber = payableInfoWaterService.getPayableInfoWaterByCardNumber(cardNumber, studentName); return payableInfoWaterByCardNumber; } /** * 查询所有的水费订单年份 * * @return */ @GetMapping("queryAllYear") public CommonResult queryAllYear(String dorm, String payStatu) { if (dorm.contains("层")) { int indexD = dorm.indexOf("栋"); dorm = dorm.substring(0, indexD + 1) + dorm.split("层")[1]; } List allYearlist = payableInfoWaterService.queryAllYear(dorm, payStatu); return CommonResult.ok().setResult(allYearlist); } /** * 修改学生宿舍信息 * * @param id * @param dorm */ @GetMapping("updateDormById") public CommonResult updateDormById(@RequestParam("id") String id, @RequestParam("dorm") String dorm, @RequestParam("payMonth") String payMonth) { PayableInfoWaterEntity waterEntity = new PayableInfoWaterEntity(); Long ID = Long.parseLong(id); waterEntity.setId(ID); waterEntity.setDorm(dorm); if (!dorm.contains("栋")) { throw new RRException(BizCodeEnume.VAILD_EXCEPTION, "宿舍信息填写异常"); } QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("dorm", dorm) .eq("pay_month", payMonth) .orderByDesc("pay_item_type"); List listWater = payableInfoWaterService.list(wrapper); if (listWater.size() > 0) { if (listWater.get(0).getPayItemType().equals("2")) { PayableInfoWaterDeleteEntity payableInfoWaterDeleteEntity = new PayableInfoWaterDeleteEntity(); BeanUtils.copyProperties(listWater.get(0), payableInfoWaterDeleteEntity); payableInfoWaterDeleteService.save(payableInfoWaterDeleteEntity); payableInfoWaterService.removeById(waterEntity.getId()); return CommonResult.ok().setResult("该宿舍已经缴费,请与寝室长核对缴费信息"); } else { waterEntity.setPayAmountDetail(listWater.get(0).getPayAmountDetail()); waterEntity.setOrderNotice(listWater.get(0).getOrderNotice()); waterEntity.setRealPayAmount(listWater.get(0).getRealPayAmount()); waterEntity.setPayMonth(listWater.get(0).getPayMonth()); payableInfoWaterService.updateById(waterEntity); } } else { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "该宿舍不存在" + payMonth + "缴费信息"); } return CommonResult.ok().setResult(Boolean.TRUE); } @GetMapping("queryWaterType") public CommonResult queryWaterType() { List waterList = payableInfoWaterService.queryWaterType(); return CommonResult.ok().setResult(waterList); } /** * 更新缴费名单状态 正在支付时无法重复提交 * * @param payInfoId 缴费名单的id * @param payStatu 0 代表正在支付的状态 * @return */ @GetMapping("updateWaterStatu") public CommonResult updateWaterStatu(Long payInfoId, String payStatu, String cardNumber,String orderNo) { PayableInfoWaterEntity waterInfo = new PayableInfoWaterEntity(); waterInfo.setId(payInfoId); waterInfo.setPayItemType(payStatu); waterInfo.setPayerCardNumber(cardNumber); waterInfo.setOrderNo(orderNo); payableInfoWaterService.updateById(waterInfo); // System.out.println( payableInfoWaterService.getById(payInfoId)); return CommonResult.ok(); } @GetMapping("testss") public CommonResult testette() { System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf "); System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf "); System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf "); System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf "); return CommonResult.ok(); } /** * 取消订单正在支付的锁定状态 * @param payInfoId * @return */ @GetMapping("unlock") public CommonResult unlock(Long payInfoId){ payableInfoWaterService.unlock(payInfoId); return CommonResult.ok(); } }