DevController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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. BizUtil.initAlipayEasySdk(terminal);
  81. AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute("alipay.commerce.medical.industrydata.hospital.upload", null, bizParam);
  82. log.info("DevController#uploadHospInfo Response: {}", JSON.toJSONString(response));
  83. if (Constants.ALIPAY_SUCCESS_CODE.equals(response.getCode()))
  84. return ResponseVO.success(Checker.getStringValue(response.getMsg()));
  85. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, StringHelper.isNullOrEmpty(response.getSubMsg()) ? Checker.getStringValue(response.getMsg()) : response.getSubMsg());
  86. } catch (AppMessageException e) {
  87. log.error("DevController#uploadHospInfo(): {}", e.getMessage());
  88. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
  89. } catch (Exception e) {
  90. log.error("DevController#uploadHospInfo(): {}", e.getMessage(), e);
  91. return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
  92. }
  93. }
  94. /**
  95. * <a href="https://opendocs.alipay.com/pre-apis/02x1v2">医院科室信息上传接口</a>
  96. * 单次上传最多支持100条记录,如果超过请分批上传
  97. */
  98. @Anonymous(enable = true)
  99. @RequestMapping(value = {"/uploadDeptInfo"}, method = RequestMethod.POST)
  100. public @ResponseBody ResponseVO<String> uploadDeptInfo(@RequestBody UploadInfoReq<UploadDeptInfo> data) {
  101. Map<String, Object> bizParam = new HashMap<>();
  102. try {
  103. int terminal = data.getTerminal();
  104. AlipayMpCfg cfg = BizUtil.getCfg(terminal);
  105. String appId = cfg.getAppId();
  106. String isvPid = cfg.getIsvPid();
  107. CheckUtil.ensureNotEmpty(appId, "appId 不能为空");
  108. CheckUtil.ensureNotEmpty(isvPid, "isvPid 不能为空");
  109. List<UploadDeptInfo> list = data.getList();
  110. if (Checker.isNone(list)) throw new AppMessageException("数据为空");
  111. bizParam.put("department_list", list.stream()
  112. .map(d -> {
  113. Map<String, String> map = new HashMap<>();
  114. String deptCode = Checker.getStringValue(d.getDeptCode());
  115. String departmentName = Checker.getStringValue(d.getDepartmentName());
  116. String departmentId = Checker.getStringValue(d.getDepartmentId());
  117. String departmentType = Checker.getStringValue(d.getDepartmentType());
  118. String hospitalName = Checker.getStringValue(d.getHospitalName());
  119. String subHospitalName = Checker.getStringValue(d.getSubHospitalName());
  120. String hospitalId = Checker.getStringValue(d.getHospitalId());
  121. map.put("department_name", departmentName);
  122. map.put("department_id", departmentId);
  123. map.put("department_type", departmentType); // 一级二级科室
  124. map.put("hospital_name", hospitalName); // 科室所属医院名称
  125. String pathParam = "";
  126. try {
  127. pathParam = URLEncoder.encode(String.format("?depCode=%s&departmentId=%s&header=show&hospitalId=%s&pageType=hospital-num-source&title=%s(%s)",
  128. deptCode, departmentId, hospitalId, departmentName, subHospitalName), "utf-8");
  129. } catch (UnsupportedEncodingException e) {
  130. log.error("DevController#uploadDeptInfo UnsupportedEncodingException: {}", e.getMessage(), e);
  131. }
  132. map.put("department_url", String.format("alipays://platformapi/startapp?appId=%s&page=antbuilder/industry/hospitalV2/pages/page-no-pull/index%s", appId, pathParam)); // 科室挂号服务跳转
  133. return map;
  134. })
  135. .collect(Collectors.toList()));
  136. bizParam.put("isv_pid", isvPid);
  137. bizParam.put("request_id", UUID.randomUUID().toString());
  138. log.info("DevController#uploadDeptInfo Request: {}", bizParam);
  139. BizUtil.initAlipayEasySdk(terminal);
  140. AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute("alipay.commerce.medical.industrydata.department.upload", null, bizParam);
  141. log.info("DevController#uploadDeptInfo Response: {}", JSON.toJSONString(response));
  142. if (Constants.ALIPAY_SUCCESS_CODE.equals(response.getCode()))
  143. return ResponseVO.success(Checker.getStringValue(response.getMsg()));
  144. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, StringHelper.isNullOrEmpty(response.getSubMsg()) ? Checker.getStringValue(response.getMsg()) : response.getSubMsg());
  145. } catch (AppMessageException e) {
  146. log.error("DevController#uploadDeptInfo(): {}", e.getMessage());
  147. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
  148. } catch (Exception e) {
  149. log.error("DevController#uploadDeptInfo(): {}", e.getMessage(), e);
  150. return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
  151. }
  152. }
  153. /**
  154. * <a href="https://opendocs.alipay.com/pre-apis/02x1v1">医生信息上传接口</a>
  155. * 单次上传最多支持100条记录,如果超过请分批上传
  156. */
  157. @Anonymous(enable = true)
  158. @RequestMapping(value = {"/uploadDoctorInfo"}, method = RequestMethod.POST)
  159. public @ResponseBody ResponseVO<String> uploadDoctorInfo(@RequestBody UploadInfoReq<UploadDoctorInfo> data) {
  160. Map<String, Object> bizParam = new HashMap<>();
  161. try {
  162. int terminal = data.getTerminal();
  163. AlipayMpCfg cfg = BizUtil.getCfg(terminal);
  164. String appId = cfg.getAppId();
  165. String isvPid = cfg.getIsvPid();
  166. CheckUtil.ensureNotEmpty(appId, "appId 不能为空");
  167. CheckUtil.ensureNotEmpty(isvPid, "isvPid 不能为空");
  168. List<UploadDoctorInfo> list = data.getList();
  169. if (Checker.isNone(list)) throw new AppMessageException("数据为空");
  170. bizParam.put("doctor_list", list.stream()
  171. .map(d -> {
  172. Map<String, String> map = new HashMap<>();
  173. String doctorName = Checker.getStringValue(d.getDoctorName());
  174. String doctorId = Checker.getStringValue(d.getDoctorId());
  175. String doctorTitle = Checker.getStringValue(d.getDoctorTitle());
  176. String doctorIntro = Checker.getStringValue(d.getDoctorIntro());
  177. String doctorSpecialty = Checker.getStringValue(d.getDoctorSpecialty());
  178. String doctorCode = Checker.getStringValue(d.getDoctorCode());
  179. String deptId = Checker.getStringValue(d.getDeptId());
  180. String deptCode = Checker.getStringValue(d.getDeptCode());
  181. String hospitalId = Checker.getStringValue(d.getHospitalId());
  182. map.put("doctor_name", doctorName);
  183. map.put("doctor_id", doctorId);
  184. map.put("academic_title", doctorTitle);
  185. map.put("doctor_introduction", doctorIntro);
  186. map.put("skilled_disease_desc", doctorSpecialty);
  187. String pathParam = "";
  188. try {
  189. pathParam = URLEncoder.encode(String.format("?depCode=%s&depId=%s&doctorCode=%s&doctorId=%s&header=show&hospitalId=%s&pageType=doctor-page&title=医生主页",
  190. deptCode, deptId, doctorCode, doctorId, hospitalId), "utf-8");
  191. } catch (UnsupportedEncodingException e) {
  192. log.error("DevController#uploadDoctorInfo UnsupportedEncodingException: {}", e.getMessage(), e);
  193. }
  194. map.put("doctor_url", String.format("alipays://platformapi/startapp?appId=%s&page=antbuilder/industry/hospitalV2/pages/page-no-pull/index%s", appId, pathParam));
  195. return map;
  196. })
  197. .collect(Collectors.toList()));
  198. bizParam.put("isv_pid", isvPid);
  199. bizParam.put("request_id", UUID.randomUUID().toString());
  200. log.info("DevController#uploadDoctorInfo Request: {}", bizParam);
  201. BizUtil.initAlipayEasySdk(terminal);
  202. AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute("alipay.commerce.medical.industrydata.doctor.upload", null, bizParam);
  203. log.info("DevController#uploadDoctorInfo Response: {}", JSON.toJSONString(response));
  204. if (Constants.ALIPAY_SUCCESS_CODE.equals(response.getCode()))
  205. return ResponseVO.success(Checker.getStringValue(response.getMsg()));
  206. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, StringHelper.isNullOrEmpty(response.getSubMsg()) ? Checker.getStringValue(response.getMsg()) : response.getSubMsg());
  207. } catch (AppMessageException e) {
  208. log.error("DevController#uploadDoctorInfo(): {}", e.getMessage());
  209. return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
  210. } catch (Exception e) {
  211. log.error("DevController#uploadDoctorInfo(): {}", e.getMessage(), e);
  212. return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
  213. }
  214. }
  215. }