DevController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. package com.ywt.alipaympapi.web.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alipay.easysdk.factory.Factory;
  4. import com.alipay.easysdk.util.generic.models.AlipayOpenApiGenericResponse;
  5. import com.ywt.alipaympapi.core.utils.BizUtil;
  6. import com.ywt.alipaympapi.core.utils.CheckUtil;
  7. import com.ywt.alipaympapi.core.utils.Checker;
  8. import com.ywt.alipaympapi.core.utils.StringHelper;
  9. import com.ywt.alipaympapi.models.Constants;
  10. import com.ywt.alipaympapi.models.auth.AlipayMpCfg;
  11. import com.ywt.alipaympapi.models.dev.*;
  12. import com.ywt.core.Anonymous;
  13. import com.ywt.core.exception.AppMessageException;
  14. import com.ywt.model.Code;
  15. import com.ywt.model.PageVO;
  16. import com.ywt.model.Pagination;
  17. import com.ywt.model.ResponseVO;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.web.bind.annotation.*;
  20. import java.io.UnsupportedEncodingException;
  21. import java.net.URLEncoder;
  22. import java.util.*;
  23. import java.util.stream.Collectors;
  24. /**
  25. * @author Walker
  26. * Created on 2022/9/19
  27. */
  28. @Slf4j
  29. @RestController("/dev")
  30. @RequestMapping({"/dev"})
  31. public class DevController {
  32. @Anonymous(enable = true)
  33. @RequestMapping(value = {"/eptPageList"}, method = RequestMethod.POST)
  34. public @ResponseBody ResponseVO<PageVO<String>> eptPageList() {
  35. Pagination pagination = new Pagination(1, 1, 0);
  36. PageVO<String> page = new PageVO<>(pagination, new ArrayList<>());
  37. return ResponseVO.success(page);
  38. }
  39. @Anonymous(enable = true)
  40. @RequestMapping(value = {"/eptList"}, method = RequestMethod.POST)
  41. public @ResponseBody ResponseVO<List<String>> eptList() {
  42. return ResponseVO.success(new ArrayList<>());
  43. }
  44. /**
  45. * <a href="https://opendocs.alipay.com/pre-apis/02x1v3">医疗行业医院数据上传</a>
  46. * 单次上传最多支持100条记录,如果超过请分批上传
  47. */
  48. @Anonymous(enable = true)
  49. @RequestMapping(value = {"/uploadHospInfo"}, method = RequestMethod.POST)
  50. public @ResponseBody ResponseVO<String> uploadHospInfo(@RequestBody UploadInfoReq<UploadHospitalInfo> data) {
  51. try {
  52. int terminal = data.getTerminal();
  53. AlipayMpCfg cfg = BizUtil.getCfg(terminal);
  54. String appId = cfg.getAppId();
  55. String isvPid = cfg.getIsvPid();
  56. CheckUtil.ensureNotEmpty(appId, "appId 不能为空");
  57. CheckUtil.ensureNotEmpty(isvPid, "isvPid 不能为空");
  58. Map<String, Object> bizParam = new HashMap<>();
  59. bizParam.put("hospital_list", data.getList().stream()
  60. .map(d -> {
  61. Map<String, String> map = new HashMap<>();
  62. map.put("hospital_name", Checker.getStringValue(d.getHospitalName()));
  63. map.put("hospital_id", Checker.getStringValue(d.getHospitalId()));
  64. map.put("hospital_alias", Checker.getStringValue(d.getHospitalAlias()));
  65. map.put("hospital_province", Checker.getStringValue(d.getHospitalProvince()));
  66. map.put("hospital_city", Checker.getStringValue(d.getHospitalCity()));
  67. map.put("hospital_district", Checker.getStringValue(d.getHospitalDistrict()));
  68. map.put("hospital_addr", Checker.getStringValue(d.getHospitalAddr()));
  69. map.put("hospital_lgt", Checker.getStringValue(d.getHospitalLgt()));
  70. map.put("hospital_lat", Checker.getStringValue(d.getHospitalLat()));
  71. map.put("hospital_type", Checker.getStringValue(d.getHospitalType()));
  72. map.put("hospital_grade", Checker.getStringValue(d.getHospitalGrade()));
  73. map.put("hospital_logo", Checker.getStringValue(d.getHospitalLogo()));
  74. return map;
  75. })
  76. .collect(Collectors.toList()));
  77. bizParam.put("isv_pid", isvPid);
  78. bizParam.put("request_id", UUID.randomUUID().toString());
  79. log.info("DevController#uploadHospInfo Request: {}", bizParam);
  80. AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute("alipay.commerce.medical.industrydata.hospital.upload", null, bizParam);
  81. log.info("DevController#uploadHospInfo Response: {}", JSON.toJSONString(response));
  82. if (Constants.ALIPAY_SUCCESS_CODE.equals(response.getCode()))
  83. return ResponseVO.success(Checker.getStringValue(response.getMsg()));
  84. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, StringHelper.isNullOrEmpty(response.getSubMsg()) ? Checker.getStringValue(response.getMsg()) : response.getSubMsg());
  85. } catch (AppMessageException e) {
  86. log.error("DevController#uploadHospInfo(): {}", e.getMessage());
  87. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
  88. } catch (Exception e) {
  89. log.error("DevController#uploadHospInfo(): {}", e.getMessage(), e);
  90. return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
  91. }
  92. }
  93. /**
  94. * <a href="https://opendocs.alipay.com/pre-apis/02x1v2">医院科室信息上传接口</a>
  95. * 单次上传最多支持100条记录,如果超过请分批上传
  96. */
  97. @Anonymous(enable = true)
  98. @RequestMapping(value = {"/uploadDeptInfo"}, method = RequestMethod.POST)
  99. public @ResponseBody ResponseVO<String> uploadDeptInfo(@RequestBody UploadInfoReq<UploadDeptInfo> data) {
  100. Map<String, Object> bizParam = new HashMap<>();
  101. try {
  102. int terminal = data.getTerminal();
  103. AlipayMpCfg cfg = BizUtil.getCfg(terminal);
  104. String appId = cfg.getAppId();
  105. String isvPid = cfg.getIsvPid();
  106. CheckUtil.ensureNotEmpty(appId, "appId 不能为空");
  107. CheckUtil.ensureNotEmpty(isvPid, "isvPid 不能为空");
  108. List<UploadDeptInfo> list = data.getList();
  109. if (Checker.isNone(list)) throw new AppMessageException("数据为空");
  110. bizParam.put("department_list", list.stream()
  111. .map(d -> {
  112. Map<String, String> map = new HashMap<>();
  113. String deptCode = Checker.getStringValue(d.getDeptCode());
  114. String departmentName = Checker.getStringValue(d.getDepartmentName());
  115. String departmentId = Checker.getStringValue(d.getDepartmentId());
  116. String departmentType = Checker.getStringValue(d.getDepartmentType());
  117. String hospitalName = Checker.getStringValue(d.getHospitalName());
  118. String subHospitalName = Checker.getStringValue(d.getSubHospitalName());
  119. String hospitalId = Checker.getStringValue(d.getHospitalId());
  120. map.put("department_name", departmentName);
  121. map.put("department_id", departmentId);
  122. map.put("department_type", departmentType); // 一级二级科室
  123. map.put("hospital_name", hospitalName); // 科室所属医院名称
  124. String pathParam = "";
  125. try {
  126. pathParam = URLEncoder.encode(String.format("?depCode=%s&departmentId=%s&header=show&hospitalId=%s&pageType=hospital-num-source&title=%s(%s)",
  127. deptCode, departmentId, hospitalId, departmentName, subHospitalName), "utf-8");
  128. } catch (UnsupportedEncodingException e) {
  129. log.error("DevController#uploadDeptInfo UnsupportedEncodingException: {}", e.getMessage(), e);
  130. }
  131. map.put("department_url", String.format("alipays://platformapi/startapp?appId=%s&page=antbuilder/industry/hospitalV2/pages/page-no-pull/index%s", appId, pathParam)); // 科室挂号服务跳转
  132. return map;
  133. })
  134. .collect(Collectors.toList()));
  135. bizParam.put("isv_pid", isvPid);
  136. bizParam.put("request_id", UUID.randomUUID().toString());
  137. log.info("DevController#uploadDeptInfo Request: {}", bizParam);
  138. AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute("alipay.commerce.medical.industrydata.department.upload", null, bizParam);
  139. log.info("DevController#uploadDeptInfo Response: {}", JSON.toJSONString(response));
  140. if (Constants.ALIPAY_SUCCESS_CODE.equals(response.getCode()))
  141. return ResponseVO.success(Checker.getStringValue(response.getMsg()));
  142. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, StringHelper.isNullOrEmpty(response.getSubMsg()) ? Checker.getStringValue(response.getMsg()) : response.getSubMsg());
  143. } catch (AppMessageException e) {
  144. log.error("DevController#uploadDeptInfo(): {}", e.getMessage());
  145. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
  146. } catch (Exception e) {
  147. log.error("DevController#uploadDeptInfo(): {}", e.getMessage(), e);
  148. return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
  149. }
  150. }
  151. /**
  152. * <a href="https://opendocs.alipay.com/pre-apis/02x1v1">医生信息上传接口</a>
  153. * 单次上传最多支持100条记录,如果超过请分批上传
  154. */
  155. @Anonymous(enable = true)
  156. @RequestMapping(value = {"/uploadDoctorInfo"}, method = RequestMethod.POST)
  157. public @ResponseBody ResponseVO<String> uploadDoctorInfo(@RequestBody UploadInfoReq<UploadDoctorInfo> data) {
  158. Map<String, Object> bizParam = new HashMap<>();
  159. try {
  160. int terminal = data.getTerminal();
  161. AlipayMpCfg cfg = BizUtil.getCfg(terminal);
  162. String appId = cfg.getAppId();
  163. String isvPid = cfg.getIsvPid();
  164. CheckUtil.ensureNotEmpty(appId, "appId 不能为空");
  165. CheckUtil.ensureNotEmpty(isvPid, "isvPid 不能为空");
  166. List<UploadDoctorInfo> list = data.getList();
  167. if (Checker.isNone(list)) throw new AppMessageException("数据为空");
  168. bizParam.put("doctor_list", list.stream()
  169. .map(d -> {
  170. Map<String, String> map = new HashMap<>();
  171. String doctorName = Checker.getStringValue(d.getDoctorName());
  172. String doctorId = Checker.getStringValue(d.getDoctorId());
  173. String doctorTitle = Checker.getStringValue(d.getDoctorTitle());
  174. String doctorIntro = Checker.getStringValue(d.getDoctorIntro());
  175. String doctorSpecialty = Checker.getStringValue(d.getDoctorSpecialty());
  176. String doctorCode = Checker.getStringValue(d.getDoctorCode());
  177. String deptId = Checker.getStringValue(d.getDeptId());
  178. String deptCode = Checker.getStringValue(d.getDeptCode());
  179. String hospitalId = Checker.getStringValue(d.getHospitalId());
  180. map.put("doctor_name", doctorName);
  181. map.put("doctor_id", doctorId);
  182. map.put("academic_title", doctorTitle);
  183. map.put("doctor_introduction", doctorIntro);
  184. map.put("skilled_disease_desc", doctorSpecialty);
  185. String pathParam = "";
  186. try {
  187. pathParam = URLEncoder.encode(String.format("?depCode=%s&depId=%s&doctorCode=%s&doctorId=%s&header=show&hospitalId=%s&pageType=doctor-page&title=医生主页",
  188. deptCode, deptId, doctorCode, doctorId, hospitalId), "utf-8");
  189. } catch (UnsupportedEncodingException e) {
  190. log.error("DevController#uploadDoctorInfo UnsupportedEncodingException: {}", e.getMessage(), e);
  191. }
  192. map.put("doctor_url", String.format("alipays://platformapi/startapp?appId=%s&page=antbuilder/industry/hospitalV2/pages/page-no-pull/index%s", appId, pathParam));
  193. return map;
  194. })
  195. .collect(Collectors.toList()));
  196. bizParam.put("isv_pid", isvPid);
  197. bizParam.put("request_id", UUID.randomUUID().toString());
  198. log.info("DevController#uploadDoctorInfo Request: {}", bizParam);
  199. AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute("alipay.commerce.medical.industrydata.doctor.upload", null, bizParam);
  200. log.info("DevController#uploadDoctorInfo Response: {}", JSON.toJSONString(response));
  201. if (Constants.ALIPAY_SUCCESS_CODE.equals(response.getCode()))
  202. return ResponseVO.success(Checker.getStringValue(response.getMsg()));
  203. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, StringHelper.isNullOrEmpty(response.getSubMsg()) ? Checker.getStringValue(response.getMsg()) : response.getSubMsg());
  204. } catch (AppMessageException e) {
  205. log.error("DevController#uploadDoctorInfo(): {}", e.getMessage());
  206. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
  207. } catch (Exception e) {
  208. log.error("DevController#uploadDoctorInfo(): {}", e.getMessage(), e);
  209. return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
  210. }
  211. }
  212. }