PayableInfoWaterController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package com.chuanghai.smartschool.tuitionpayment.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
  4. import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
  5. import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
  6. import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
  7. import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterDeleteEntity;
  8. import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity;
  9. import com.chuanghai.smartschool.tuitionpayment.service.PayOrderService;
  10. import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterDeleteService;
  11. import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterService;
  12. import com.chuanghai.smartschool.tuitionpayment.service.SchoolUserService;
  13. import com.chuanghai.smartschool.tuitionpayment.utils.RSAUtils;
  14. import com.chuanghai.smartschool.tuitionpayment.vo.DormVO;
  15. import com.chuanghai.smartschool.tuitionpayment.vo.YearVo;
  16. import org.apache.poi.ss.formula.functions.T;
  17. import org.springframework.beans.BeanUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.web.bind.annotation.*;
  21. import org.springframework.web.multipart.MultipartFile;
  22. import java.io.IOException;
  23. import java.time.LocalDateTime;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. /**
  27. * @Author: bingo
  28. * @Date: 2022/6/28 星期二 15:30
  29. * @Description: com.chuanghai.smartschool.tuitionpayment.controller
  30. * @version: 1.0
  31. */
  32. @RestController
  33. @RequestMapping("tuitionpayment/payableinfowater")
  34. public class PayableInfoWaterController {
  35. @Autowired
  36. private PayableInfoWaterService payableInfoWaterService;
  37. @Autowired
  38. private PayOrderService payOrderService;
  39. @Autowired
  40. private PayableInfoWaterDeleteService payableInfoWaterDeleteService;
  41. @Autowired
  42. private SchoolUserService schoolUserService;
  43. @Value("${my-security.private-key}")
  44. private String privateKey;
  45. /**
  46. * excel 导入学生学费相关原始数据
  47. *
  48. * @param adminToken 管理员token
  49. * @param file 文件,文件格式注意需要符合要求
  50. * @return
  51. * @apiNote 导入学生学费相关原始数据
  52. * <strong>注意:</strong>
  53. * 1.需要提示用户上传的excel文件需要符合规定的格式;
  54. * 2.上传新文件将会导致所有的旧数据被删除,学费缴纳开始后不建议再上传新数据。
  55. */
  56. @PostMapping("importWaterByExcel")
  57. @AdminLoginCheck
  58. public CommonResult<String> importWaterByExcel(@RequestHeader("admin_token") String adminToken,
  59. @RequestParam MultipartFile file) throws IOException {
  60. if (file.isEmpty()) {
  61. throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
  62. }
  63. payableInfoWaterService.importByExcel(file);
  64. return CommonResult.ok();
  65. }
  66. /**
  67. * 更新缴费订单的时间参数
  68. */
  69. @PutMapping("updatePayInfoWater")
  70. public CommonResult<T> updatePayInfoWater() {
  71. QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
  72. wrapper.isNull("pay_item_type");
  73. //更新时间等参数
  74. List<PayableInfoWaterEntity> InfoEntityList = payableInfoWaterService.list(wrapper);
  75. List<PayableInfoWaterEntity> objectList = new ArrayList<>();
  76. InfoEntityList.forEach(payableInfoWaterEntity -> {
  77. payableInfoWaterEntity.setPayCreateTime(LocalDateTime.now());
  78. payableInfoWaterEntity.setPayItemType("1");
  79. payableInfoWaterEntity.setPayNoticeType("1");
  80. objectList.add(payableInfoWaterEntity);
  81. });
  82. payableInfoWaterService.updateBatchById(objectList);
  83. return CommonResult.ok();
  84. }
  85. /**
  86. * 根据宿舍号查询宿舍的缴费订单
  87. *
  88. * @param dormVO
  89. * @return
  90. * @apiNote 注意:密码使用提供的公钥进行RSA加密后传输
  91. * 公钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMOcPB06u5yKyQsPjfVWiWgbEIrd14kiXNNihciaVKb6HnkQvq7zpQuZ80WEX94spnUMI3iOAl/GmIvHrpGwcbB4hJbznm+PajiwnUSPuCCXA68YJF640cJKb/8KeM7WVz69OFkIEPHhVxOy4FFF5QWe/kt6zOZ19HmE+ak+5x/QIDAQAB
  92. */
  93. @PostMapping("queryWaterInfo")
  94. public CommonResult queryWaterInfo(@RequestBody DormVO dormVO) {
  95. String dorm;
  96. try {
  97. dorm = RSAUtils.decrypt(dormVO.getDorm(), RSAUtils.getPrivateKey(privateKey));
  98. } catch (Exception e) {
  99. e.printStackTrace();
  100. throw new RRException(BizCodeEnume.PARAMETER_ERROR, "密码解密失败");
  101. }
  102. if (dorm.contains("层")) {
  103. int indexD = dorm.indexOf("栋");
  104. dorm = dorm.substring(0, indexD + 1) + dorm.split("层")[1];
  105. }
  106. List<PayableInfoWaterEntity> payableInfoWaterList = payableInfoWaterService.queryWaterInfo(dorm, dormVO.getYear(), dormVO.getPayStatu());
  107. payableInfoWaterList.forEach(payableInfoWaterEntity -> {
  108. if (payableInfoWaterEntity.getPayItemType().equals("2")) {
  109. String payerName = payOrderService.queryPayerName(payableInfoWaterEntity.getId());
  110. payableInfoWaterEntity.setPayerName(payerName);
  111. }
  112. payableInfoWaterService.updateById(payableInfoWaterEntity);
  113. });
  114. return CommonResult.ok().setResult(payableInfoWaterList);
  115. }
  116. /**
  117. * 根据card_number获取缴费信息
  118. *
  119. * @param cardNumber 当前登录用户cardNumber
  120. * @return
  121. */
  122. public List<PayableInfoWaterEntity> getPayableInfoByCardNumber(@RequestHeader("card_number") String cardNumber,
  123. String studentName) {
  124. List<PayableInfoWaterEntity> payableInfoWaterByCardNumber = payableInfoWaterService.getPayableInfoWaterByCardNumber(cardNumber, studentName);
  125. return payableInfoWaterByCardNumber;
  126. }
  127. /**
  128. * 查询所有的水费订单年份
  129. *
  130. * @return
  131. */
  132. @GetMapping("queryAllYear")
  133. public CommonResult queryAllYear(String dorm, String payStatu) {
  134. if (dorm.contains("层")) {
  135. int indexD = dorm.indexOf("栋");
  136. dorm = dorm.substring(0, indexD + 1) + dorm.split("层")[1];
  137. }
  138. List<YearVo> allYearlist = payableInfoWaterService.queryAllYear(dorm, payStatu);
  139. return CommonResult.ok().setResult(allYearlist);
  140. }
  141. /**
  142. * 修改学生宿舍信息
  143. *
  144. * @param id
  145. * @param dorm
  146. */
  147. @GetMapping("updateDormById")
  148. public CommonResult<T> updateDormById(@RequestParam("id") String id, @RequestParam("dorm") String dorm,
  149. @RequestParam("payMonth") String payMonth) {
  150. PayableInfoWaterEntity waterEntity = new PayableInfoWaterEntity();
  151. Long ID = Long.parseLong(id);
  152. waterEntity.setId(ID);
  153. waterEntity.setDorm(dorm);
  154. if (!dorm.contains("栋")) {
  155. throw new RRException(BizCodeEnume.VAILD_EXCEPTION, "宿舍信息填写异常");
  156. }
  157. QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
  158. wrapper.eq("dorm", dorm)
  159. .eq("pay_month", payMonth)
  160. .orderByDesc("pay_item_type");
  161. List<PayableInfoWaterEntity> listWater = payableInfoWaterService.list(wrapper);
  162. if (listWater.size() > 0) {
  163. if (listWater.get(0).getPayItemType().equals("2")) {
  164. PayableInfoWaterDeleteEntity payableInfoWaterDeleteEntity = new PayableInfoWaterDeleteEntity();
  165. BeanUtils.copyProperties(listWater.get(0), payableInfoWaterDeleteEntity);
  166. payableInfoWaterDeleteService.save(payableInfoWaterDeleteEntity);
  167. payableInfoWaterService.removeById(waterEntity.getId());
  168. return CommonResult.ok().setResult("该宿舍已经缴费,请与寝室长核对缴费信息");
  169. } else {
  170. waterEntity.setPayAmountDetail(listWater.get(0).getPayAmountDetail());
  171. waterEntity.setOrderNotice(listWater.get(0).getOrderNotice());
  172. waterEntity.setRealPayAmount(listWater.get(0).getRealPayAmount());
  173. waterEntity.setPayMonth(listWater.get(0).getPayMonth());
  174. payableInfoWaterService.updateById(waterEntity);
  175. }
  176. } else {
  177. throw new RRException(BizCodeEnume.PARAMETER_ERROR, "该宿舍不存在" + payMonth + "缴费信息");
  178. }
  179. return CommonResult.ok().setResult(Boolean.TRUE);
  180. }
  181. @GetMapping("queryWaterType")
  182. public CommonResult queryWaterType() {
  183. List<String> waterList = payableInfoWaterService.queryWaterType();
  184. return CommonResult.ok().setResult(waterList);
  185. }
  186. /**
  187. * 更新缴费名单状态 正在支付时无法重复提交
  188. *
  189. * @param payInfoId 缴费名单的id
  190. * @param payStatu 0 代表正在支付的状态
  191. * @return
  192. */
  193. @GetMapping("updateWaterStatu")
  194. public CommonResult updateWaterStatu(Long payInfoId, String payStatu, String cardNumber,String orderNo) {
  195. PayableInfoWaterEntity waterInfo = new PayableInfoWaterEntity();
  196. waterInfo.setId(payInfoId);
  197. waterInfo.setPayItemType(payStatu);
  198. waterInfo.setPayerCardNumber(cardNumber);
  199. waterInfo.setOrderNo(orderNo);
  200. payableInfoWaterService.updateById(waterInfo);
  201. // System.out.println( payableInfoWaterService.getById(payInfoId));
  202. return CommonResult.ok();
  203. }
  204. @GetMapping("testss")
  205. public CommonResult testette() {
  206. System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf ");
  207. System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf ");
  208. System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf ");
  209. System.out.println("sdkjfhisafjjkkdbbfksdf-------------sdkfnkjsndkfnsdf ");
  210. return CommonResult.ok();
  211. }
  212. /**
  213. * 取消订单正在支付的锁定状态
  214. * @param payInfoId
  215. * @return
  216. */
  217. @GetMapping("unlock")
  218. public CommonResult unlock(Long payInfoId){
  219. payableInfoWaterService.unlock(payInfoId);
  220. return CommonResult.ok();
  221. }
  222. }