From 3d8e6a16f98bc01d3cee3a2733fa9a4eff8db2c7 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 06 一月 2026 16:52:34 +0800
Subject: [PATCH] 海诊通AI对接,双屏仪报告推送存储
---
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java | 248 ++++++++++++-------
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java | 50 +++
ruoyi-system/src/main/resources/mapper/system/TSysInspectionMapper.xml | 54 ++--
ruoyi-system/src/main/java/com/ruoyi/system/utils/util/TemplateMessageSendUtil.java | 4
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxAppletTools.java | 15
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionRiskEstimateController.java | 20 +
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java | 5
ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspectionRiskEstimate.java | 54 ++++
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/pojo/AppletUserEncrypteData.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java | 143 +++++-----
ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 6
ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinic.java | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java | 2
ruoyi-system/src/main/resources/mapper/system/TCrmClinicMapper.xml | 15
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysInspectionRiskEstimateMapper.java | 16 +
ruoyi-system/src/main/java/com/ruoyi/system/service/TSysInspectionRiskEstimateService.java | 16 +
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysInspectionRiskEstimateServiceImpl.java | 20 +
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java | 37 ++
ruoyi-system/src/main/resources/mapper/system/TSysInspectionRiskEstimateMapper.xml | 20 +
19 files changed, 512 insertions(+), 219 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java
index e32a12d..a8fc87e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java
@@ -7,8 +7,11 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.constant.WxConstant;
+import com.ruoyi.common.core.controller.FileController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.WebUtils;
@@ -23,20 +26,31 @@
import com.ruoyi.system.query.TCrmChangePointsQuery;
import com.ruoyi.system.query.TCrmClinicQuery;
import com.ruoyi.system.service.*;
+import com.ruoyi.system.utils.util.ObsUploadUtil;
+import com.ruoyi.system.utils.wx.model.WeixinProperties;
+import com.ruoyi.system.utils.wx.tools.WxAppletTools;
+import com.ruoyi.system.utils.xiMaUtil.XimaAIUtil;
import com.ruoyi.system.vo.TCrmClinicVO;
import com.ruoyi.system.vo.TSysAppUserVO;
import com.ruoyi.web.controller.tool.MsgUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.entity.ContentType;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.*;
+import org.springframework.mock.web.MockMultipartFile;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
@@ -51,6 +65,7 @@
* @author xiaochen
* @since 2025-08-20
*/
+@Slf4j
@Api(tags = "crm诊所管理")
@RestController
@RequestMapping("/t-crm-clinic")
@@ -66,8 +81,11 @@
private final TokenService tokenService;
private final MsgUtils msgUtils;
private final TSysMessageTemplateService sysMessageTemplateService;
+ private final RedisCache redisCache;
+ private final RestTemplate restTemplate;
+ private final WeixinProperties wxConfig;
@Autowired
- public TCrmClinicController(TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TCrmBranchService crmBranchService, TCrmWarehouseService crmWarehouseService, TCrmSalespersonService crmSalespersonService, ISysUserService sysUserService, TCrmDeviceService crmDeviceService, TokenService tokenService, MsgUtils msgUtils, TSysMessageTemplateService sysMessageTemplateService) {
+ public TCrmClinicController(TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TCrmBranchService crmBranchService, TCrmWarehouseService crmWarehouseService, TCrmSalespersonService crmSalespersonService, ISysUserService sysUserService, TCrmDeviceService crmDeviceService, TokenService tokenService, MsgUtils msgUtils, TSysMessageTemplateService sysMessageTemplateService, RedisCache redisCache, RestTemplate restTemplate, WeixinProperties wxConfig) {
this.crmClinicService = crmClinicService;
this.crmSupplierService = crmSupplierService;
this.crmBranchService = crmBranchService;
@@ -78,6 +96,9 @@
this.tokenService = tokenService;
this.msgUtils = msgUtils;
this.sysMessageTemplateService = sysMessageTemplateService;
+ this.redisCache = redisCache;
+ this.restTemplate = restTemplate;
+ this.wxConfig = wxConfig;
}
/**
@@ -180,14 +201,37 @@
@Log(title = "crm诊所管理信息-新增crm诊所管理", businessType = BusinessType.INSERT)
@ApiOperation(value = "添加crm诊所管理")
@PostMapping(value = "/add")
- public R<Boolean> add(@Validated @RequestBody TCrmClinicDTO dto) {
+ public R<String> add(@Validated @RequestBody TCrmClinicDTO dto) {
Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
if (roleType == 1){
dto.setStatus(3);
}else {
dto.setStatus(1);
}
- return crmClinicService.addClinic(dto);
+ WxAppletTools wxAppletTools = new WxAppletTools(restTemplate, wxConfig, redisCache);
+ // 获取access_token
+ String accessToken = wxAppletTools.getAccessToken();
+ // 替换CREATE_CODE_URL
+ String url = WxConstant.CREATE_CODE_URL.replace("ACCESS_TOKEN", accessToken);
+ // 发送请求
+ try {
+ HashMap<String, String> map = new HashMap<>();
+ map.put("path", "");
+ map.put("scene", "clinicId=" + dto.getId());
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ HttpEntity requestEntity = new HttpEntity(map, headers);
+ ResponseEntity<byte[]> rep = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class);
+ byte[] bytes = rep.getBody();
+ ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+ MultipartFile file = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), byteArrayInputStream);
+ String stringApiResult = ObsUploadUtil.obsUpload(file);
+ dto.setQrCode(stringApiResult);
+ } catch (Exception e) {
+ log.error("生成小程序码失败:{}", e.getMessage());
+ }
+ crmClinicService.addClinic(dto);
+ return R.ok();
}
/**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java
index 690f4bc..afa3efb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionController.java
@@ -80,12 +80,12 @@
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
.eq(TCrmClinic::getUserId, userId)
.last("LIMIT 1"));
- // ---
if(Objects.isNull(crmClinic)){
SysUser sysUser = sysUserService.selectUserById(userId);
crmClinic = crmClinicService.getById(sysUser.getObjectId());
}
dto.setClinicId(crmClinic.getId());
+ dto.setInspectionType(1);
return R.ok(sysInspectionService.save(dto));
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionRiskEstimateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionRiskEstimateController.java
new file mode 100644
index 0000000..b91b196
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysInspectionRiskEstimateController.java
@@ -0,0 +1,20 @@
+package com.ruoyi.web.controller.api;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 报告疾病风险 前端控制器
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-06
+ */
+@RestController
+@RequestMapping("/t-sys-inspection-risk-estimate")
+public class TSysInspectionRiskEstimateController {
+
+}
+
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java
index 1b27334..1103ddf 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java
@@ -1,29 +1,27 @@
package com.ruoyi.web.controller.api;
+import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.redis.service.RedisService;
-import com.ruoyi.framework.web.service.SysLoginService;
-import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.model.TSysAiConfig;
+import com.ruoyi.system.model.TSysAppUser;
import com.ruoyi.system.model.TSysInspection;
+import com.ruoyi.system.model.TSysInspectionRiskEstimate;
import com.ruoyi.system.service.TSysAiConfigService;
import com.ruoyi.system.service.TSysAppUserService;
+import com.ruoyi.system.service.TSysInspectionRiskEstimateService;
import com.ruoyi.system.service.TSysInspectionService;
import com.ruoyi.system.utils.util.AesSimpleUtil;
import com.ruoyi.system.utils.util.RsaSimpleUtil;
-import com.ruoyi.system.utils.wx.model.WeixinProperties;
-import com.ruoyi.system.utils.wx.tools.WxAppletTools;
import com.ruoyi.system.utils.xiMaUtil.AesUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.client.RestTemplate;
-import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
/**
* <p>
@@ -42,91 +40,94 @@
private TSysAiConfigService sysAiConfigService;
@Autowired
private TSysInspectionService sysInspectionService;
+ @Autowired
+ private TSysAppUserService sysAppUserService;
+ @Autowired
+ private TSysInspectionRiskEstimateService sysInspectionRiskEstimateService;
- @PostMapping("/reportReturn")
- public String reportReturn(String encryptedJson, String signEncryptedJson) throws Exception {
- TSysAiConfig sysAiConfig = sysAiConfigService.getById(1);
- // 应用AES秘钥
- String aesKey = sysAiConfig.getAesKey();
- // 平台RSA公钥
- String rsaPublicKey = sysAiConfig.getRsaPublicKey();
-
- // 1. 先解密
- String source = AesSimpleUtil.decrypt(encryptedJson, aesKey);
- System.out.println("AI问诊回调数据=====:"+ source);
- JSONObject jsonObject = JSONObject.parseObject(source);
-
- // 2. 再验证签名
- String signSource = String.format("%s_%s",
- jsonObject.getString("thirdId"),
- jsonObject.getString("time"));
- boolean verify = RsaSimpleUtil.verify(signSource, signEncryptedJson, rsaPublicKey);
- if (!verify) {
- return "error";
- }
- // 3. 验证成功,则仅仅业务保存并返回success字符串
- /**
- * {
- * "returnType": 1,
- * "name": "张三",
- * "phone": "13344445555",
- * "email": null,
- * "sex": 1,
- * "age": 42,
- * "time": "2023-03-08 08:23:13",
- * "pdf": "https://labelsys-images.oss-cn-hangzhou.aliyuncs.com/tongueFile/check/2023/03/87d76220-085e-4d2e-9fd7-9f5a01da1940.pdf",
- * "healthIndex": 100.0,
- * "constitutionNames": "气虚",
- * "symptomName": "胃气虚证",
- * "thirdId": "13344445555",
- * "tongueFeature": "正常人舌色,舌质淡红润泽。舌苔呈现白色。",
- * "faceFeature": "面部颜色暗沉。"
- * }
- */
-
- Integer returnType = jsonObject.getInteger("returnType");
- String name = jsonObject.getString("name");
- String phone = jsonObject.getString("phone");
- String email = jsonObject.getString("email");
- Integer sex = jsonObject.getInteger("sex");
- Integer age = jsonObject.getInteger("age");
- String time = jsonObject.getString("time");
- String pdf = jsonObject.getString("pdf");
- Double healthIndex = jsonObject.getDouble("healthIndex");
- String constitutionNames = jsonObject.getString("constitutionNames");
- String symptomName = jsonObject.getString("symptomName");
- String thirdId = jsonObject.getString("thirdId");
- String tongueFeature = jsonObject.getString("tongueFeature");
- String faceFeature = jsonObject.getString("faceFeature");
-
- if(returnType == 2){
- log.info("用户["+phone+"]检测失败");
- }
-
- long count = sysInspectionService.count(Wrappers.lambdaQuery(TSysInspection.class)
- .eq(TSysInspection::getPersonPhone, phone)
- .eq(TSysInspection::getCheckTime, time));
- if (count == 0) {
- TSysInspection sysInspection = new TSysInspection();
- sysInspection.setPersonName(name);
- sysInspection.setPersonPhone(phone);
- sysInspection.setPersonSex(sex);
- sysInspection.setPersonAge(age);
- sysInspection.setCheckTime(time);
- sysInspection.setPdfUrl(pdf);
- sysInspection.setHealthIndex(healthIndex);
- sysInspection.setConstitutionNames(constitutionNames);
- sysInspection.setSymptomName(symptomName);
- sysInspection.setTongueFeature(tongueFeature);
- sysInspection.setFaceFeature(faceFeature);
- sysInspection.setAppUserId(thirdId);
- sysInspection.setInspectionType(2);
- sysInspection.setIsPay(0);
- sysInspectionService.save(sysInspection);
- }
-
- return "success";
- }
+// @PostMapping("/reportReturn")
+// public String reportReturn(String encryptedJson, String signEncryptedJson) throws Exception {
+// TSysAiConfig sysAiConfig = sysAiConfigService.getById(1);
+// // 应用AES秘钥
+// String aesKey = sysAiConfig.getAesKey();
+// // 平台RSA公钥
+// String rsaPublicKey = sysAiConfig.getRsaPublicKey();
+//
+// // 1. 先解密
+// String source = AesSimpleUtil.decrypt(encryptedJson, aesKey);
+// System.out.println("AI问诊回调数据=====:"+ source);
+// JSONObject jsonObject = JSONObject.parseObject(source);
+//
+// // 2. 再验证签名
+// String signSource = String.format("%s_%s",
+// jsonObject.getString("thirdId"),
+// jsonObject.getString("time"));
+// boolean verify = RsaSimpleUtil.verify(signSource, signEncryptedJson, rsaPublicKey);
+// if (!verify) {
+// return "error";
+// }
+// // 3. 验证成功,则仅仅业务保存并返回success字符串
+// /**
+// * {
+// * "returnType": 1,
+// * "name": "张三",
+// * "phone": "13344445555",
+// * "email": null,
+// * "sex": 1,
+// * "age": 42,
+// * "time": "2023-03-08 08:23:13",
+// * "pdf": "https://labelsys-images.oss-cn-hangzhou.aliyuncs.com/tongueFile/check/2023/03/87d76220-085e-4d2e-9fd7-9f5a01da1940.pdf",
+// * "healthIndex": 100.0,
+// * "constitutionNames": "气虚",
+// * "symptomName": "胃气虚证",
+// * "thirdId": "13344445555",
+// * "tongueFeature": "正常人舌色,舌质淡红润泽。舌苔呈现白色。",
+// * "faceFeature": "面部颜色暗沉。"
+// * }
+// */
+//
+// Integer returnType = jsonObject.getInteger("returnType");
+// String name = jsonObject.getString("name");
+// String phone = jsonObject.getString("phone");
+// String email = jsonObject.getString("email");
+// Integer sex = jsonObject.getInteger("sex");
+// Integer age = jsonObject.getInteger("age");
+// String time = jsonObject.getString("time");
+// String pdf = jsonObject.getString("pdf");
+// Double healthIndex = jsonObject.getDouble("healthIndex");
+// String constitutionNames = jsonObject.getString("constitutionNames");
+// String symptomName = jsonObject.getString("symptomName");
+// String thirdId = jsonObject.getString("thirdId");
+// String tongueFeature = jsonObject.getString("tongueFeature");
+// String faceFeature = jsonObject.getString("faceFeature");
+//
+// if(returnType == 2){
+// log.info("用户["+phone+"]检测失败");
+// }
+//
+// long count = sysInspectionService.count(Wrappers.lambdaQuery(TSysInspection.class)
+// .eq(TSysInspection::getPersonPhone, phone)
+// .eq(TSysInspection::getCheckTime, time));
+// if (count == 0) {
+// TSysInspection sysInspection = new TSysInspection();
+// sysInspection.setPersonName(name);
+// sysInspection.setPersonPhone(phone);
+// sysInspection.setPersonSex(sex);
+// sysInspection.setPersonAge(age);
+// sysInspection.setCheckTime(time);
+// sysInspection.setPdfUrl(pdf);
+// sysInspection.setHealthIndex(healthIndex);
+// sysInspection.setConstitutionNames(constitutionNames);
+// sysInspection.setSymptomName(symptomName);
+// sysInspection.setTongueFeature(tongueFeature);
+// sysInspection.setFaceFeature(faceFeature);
+// sysInspection.setAppUserId(thirdId);
+// sysInspection.setInspectionType(2);
+// sysInspection.setIsPay(0);
+// sysInspectionService.save(sysInspection);
+// }
+// return "success";
+// }
@@ -149,6 +150,69 @@
@PostMapping("/xiMaDoubleScreenReportPush")
public JSONObject xiMaDoubleScreenReportPush(JSONObject jsonObject) throws Exception {
log.info("双屏仪报告推送:{}",jsonObject);
+ // 主体信息
+ String reportTime = jsonObject.getString("report_time");
+ String report_print_url = jsonObject.getString("report_print_url");
+ String present_history = jsonObject.getString("present_history");
+ String tcm_syndrome = jsonObject.getString("tcm_syndrome");
+ String disease_history_memo = jsonObject.getString("disease_history_memo");
+ String western_medicine_diagnosis = jsonObject.getString("western_medicine_diagnosis");
+
+ TSysInspection sysInspection = new TSysInspection();
+ sysInspection.setCheckTime(reportTime);
+ sysInspection.setReportPrintUrl(report_print_url);
+ sysInspection.setPresentHistory(present_history);
+ sysInspection.setTcmSyndrome(tcm_syndrome);
+ sysInspection.setDiseaseHistoryMemo(disease_history_memo);
+ sysInspection.setWesternMedicineDiagnosis(western_medicine_diagnosis);
+
+ // 用户信息
+ JSONObject userInfo = jsonObject.getJSONObject("user_info");
+ Long id = userInfo.getLong("id");
+ String phone = userInfo.getString("phone");
+ String user_name = userInfo.getString("user_name");
+ Long device_account_id = userInfo.getLong("device_account_id");
+ String sex = userInfo.getString("sex");
+ String age = userInfo.getString("age");
+
+ sysInspection.setThreeUserId(id);
+ sysInspection.setPhone(phone);
+ sysInspection.setNickName(user_name);
+ sysInspection.setSex("男".equals(sex) ? 1 : 2);
+ sysInspection.setAge(Integer.parseInt(age));
+ sysInspection.setDeviceAccountId(device_account_id);
+ sysInspection.setInspectionType(3);
+
+ // 通过手机号查询小程序用户
+ TSysAppUser sysAppUser = sysAppUserService.getOne(Wrappers.lambdaQuery(TSysAppUser.class)
+ .eq(TSysAppUser::getPhone, phone)
+ .last("LIMIT 1"));
+ if(sysAppUser != null){
+ sysInspection.setAppUserId(sysAppUser.getId());
+ sysInspection.setClinicId(sysAppUser.getClinicId());
+ }
+
+ sysInspectionService.save(sysInspection);
+
+ // 指脉结果
+ JSONObject fingerPulseReport = jsonObject.getJSONObject("finger_pulse_report");
+ JSONArray riskEstimate = fingerPulseReport.getJSONArray("risk_estimate");
+ List<TSysInspectionRiskEstimate> sysInspectionRiskEstimates = new ArrayList<>();
+ for (int i = 0; i < riskEstimate.size(); i++) {
+ JSONObject json = riskEstimate.getJSONObject(i);
+ TSysInspectionRiskEstimate sysInspectionRiskEstimate = new TSysInspectionRiskEstimate();
+ sysInspectionRiskEstimate.setInspectionId(sysInspection.getId());
+ String name = json.getString("name");
+ String link_url = json.getString("link_url");
+ String value = json.getString("value");
+ String value_desc = json.getString("value_desc");
+ sysInspectionRiskEstimate.setRiskName(name);
+ sysInspectionRiskEstimate.setRiskLinkUrl(link_url);
+ sysInspectionRiskEstimate.setRiskValue(value);
+ sysInspectionRiskEstimate.setRiskValueDesc(value_desc);
+ sysInspectionRiskEstimates.add(sysInspectionRiskEstimate);
+ }
+ sysInspectionRiskEstimateService.saveBatch(sysInspectionRiskEstimates);
JSONObject response = new JSONObject();
response.put("error_code",0);
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
index 9e432c0..6d64116 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java
@@ -4,27 +4,29 @@
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.controller.FileController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TSysAppUser;
import com.ruoyi.system.model.TSysChronicDisease;
import com.ruoyi.system.model.TSysInspection;
import com.ruoyi.system.query.TSysAppUserQuery;
-import com.ruoyi.system.service.TSysAppUserService;
-import com.ruoyi.system.service.TSysChronicDiseaseService;
-import com.ruoyi.system.service.TSysInspectionService;
-import com.ruoyi.system.service.TSysOrderService;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.utils.wx.model.WeixinProperties;
import com.ruoyi.system.utils.xiMaUtil.XimaAIUtil;
import com.ruoyi.system.vo.TSysAppUserVO;
import com.ruoyi.system.vo.TSysOrderVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
import java.util.List;
@@ -39,6 +41,7 @@
* @author xiaochen
* @since 2025-08-20
*/
+@Slf4j
@Api(tags = "用户管理")
@RestController
@RequestMapping("/t-sys-app-user")
@@ -51,8 +54,12 @@
private final TokenService tokenService;
private final RedisCache redisCache;
private final XimaAIUtil ximaAIUtil;
+ private final RestTemplate restTemplate;
+ private final FileController fileController;
+ private final WeixinProperties wxConfig;
+ private final TCrmClinicService crmClinicService;
@Autowired
- public TSysAppUserController(TSysAppUserService sysAppUserService, TSysInspectionService sysInspectionService, TSysOrderService sysOrderService, TSysChronicDiseaseService sysChronicDiseaseService, TokenService tokenService, RedisCache redisCache, XimaAIUtil ximaAIUtil) {
+ public TSysAppUserController(TSysAppUserService sysAppUserService, TSysInspectionService sysInspectionService, TSysOrderService sysOrderService, TSysChronicDiseaseService sysChronicDiseaseService, TokenService tokenService, RedisCache redisCache, XimaAIUtil ximaAIUtil, RestTemplate restTemplate, FileController fileController, WeixinProperties wxConfig, TCrmClinicService crmClinicService) {
this.sysAppUserService = sysAppUserService;
this.sysInspectionService = sysInspectionService;
this.sysOrderService = sysOrderService;
@@ -60,6 +67,10 @@
this.tokenService = tokenService;
this.redisCache = redisCache;
this.ximaAIUtil = ximaAIUtil;
+ this.restTemplate = restTemplate;
+ this.fileController = fileController;
+ this.wxConfig = wxConfig;
+ this.crmClinicService = crmClinicService;
}
/**
@@ -159,5 +170,21 @@
return R.ok(authorizationH5);
}
+ @ApiOperation(value = "查询诊所邀请码[1229]")
+ @GetMapping("/getClinicQrCode")
+ public R<String> getClinicQrCode() {
+
+ String userId = tokenService.getLoginUserApplet().getUserId();
+ TSysAppUser sysAppUser = sysAppUserService.getById(userId);
+ if(StringUtils.isBlank(sysAppUser.getClinicId())){
+ return R.fail("请先绑定诊所");
+ }
+ TCrmClinic crmClinic = crmClinicService.getById(sysAppUser.getClinicId());
+ if(Objects.isNull(crmClinic)){
+ return R.fail("未找到该诊所信息");
+ }
+ return R.ok(crmClinic.getQrCode());
+ }
+
}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
index cd12cba..194c6d8 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
@@ -1,6 +1,7 @@
package com.ruoyi.web.controller.api;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.TokenService;
@@ -35,6 +36,8 @@
private RestTemplate wxRestTemplate;
@Resource
private RedisService redisService;
+ @Resource
+ private RedisCache redisCache;
@Resource
private TSysAppUserService sysAppUserService;
@Resource
@@ -176,7 +179,7 @@
*/
@PostMapping("/getWXToken")
public R<String> getWXToken(){
- WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
+ WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisCache);
String accessToken = appletTools.getAccessToken();
return R.ok(accessToken);
}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index eda690d..77e0d26 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -118,7 +118,7 @@
@PostMapping("/openIdByJsCode")
public R<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserEncrypteData data) {
log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", data.getCode());
- WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
+ WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisCache);
Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(data.getCode()));
String openid = body.getOpenid();
String sessionKey = body.getSessionKey();
@@ -143,6 +143,7 @@
sysAppUser.setIdentifierNumber(identifierNumber);
// 手机号中间四位替换为*
sysAppUser.setNickName(appletUserDecodeData.getPhoneNumber().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
+ sysAppUser.setClinicId(data.getClinicId());
sysAppUserService.save(sysAppUser);
}else {
// 判断账号是否被冻结
@@ -151,6 +152,7 @@
}
// 手机号相同但openId为空的情况
sysAppUser.setOpenId(appletUserDecodeData.getOpenId());
+ sysAppUser.setClinicId(data.getClinicId());
sysAppUserService.updateById(sysAppUser);
}
LoginUserApplet loginUserApplet = new LoginUserApplet();
@@ -168,7 +170,7 @@
@PostMapping("/openIdByCode")
public R<Map<String, Object>> openIdByCode(@RequestBody OfficeUserEncrypteData data) {
log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", data.getCode());
- WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
+ WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisCache);
Code2SessionRespBody body = appletTools.getOpenIdByCode2session(new Code2SessionResqBody().build(data.getCode()));
String openid = body.getOpenid();
String phone = data.getPhone();
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysInspectionRiskEstimateMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysInspectionRiskEstimateMapper.java
new file mode 100644
index 0000000..31aad12
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysInspectionRiskEstimateMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.model.TSysInspectionRiskEstimate;
+
+/**
+ * <p>
+ * 报告疾病风险 Mapper 接口
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-06
+ */
+public interface TSysInspectionRiskEstimateMapper extends BaseMapper<TSysInspectionRiskEstimate> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinic.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinic.java
index 8c103e8..a96e179 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinic.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinic.java
@@ -89,4 +89,8 @@
@TableField("send_message_count")
private Integer sendMessageCount;
+ @ApiModelProperty(value = "邀请码")
+ @TableField("qr_code")
+ private String qrCode;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java
index bd7edfd..5dc70d6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspection.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.model;
import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -37,95 +38,91 @@
@TableField("clinic_id")
private String clinicId;
- @ApiModelProperty(value = "检测类型 1=诊所检测 2=小程序自检")
- @TableField("inspection_type")
- private Integer inspectionType;
+ @ApiModelProperty(value = "患者姓名")
+ @TableField("nick_name")
+ private String nickName;
+
+ @ApiModelProperty(value = "性别 1=男 2=女")
+ @TableField("sex")
+ private Integer sex;
+
+ @ApiModelProperty(value = "年龄")
+ @TableField("age")
+ private Integer age;
+
+ @ApiModelProperty(value = "科室")
+ @TableField("administrative_office")
+ private String administrativeOffice;
+
+ @ApiModelProperty(value = "就诊日期")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @TableField("check_time")
+ private String checkTime;
@ApiModelProperty(value = "检测信息")
@TableField("inspection_info")
private String inspectionInfo;
- @ApiModelProperty(value = "检测使用设备登录用户所属会员团队编码")
- @TableField("team_code")
- private String teamCode;
+ @ApiModelProperty(value = "处方信息")
+ @TableField("prescription_info")
+ private String prescriptionInfo;
- @ApiModelProperty(value = "检测使用设备登录用户所属会员团队名称")
- @TableField("team_name")
- private String teamName;
-
- @ApiModelProperty(value = "检测使用的设备编码")
- @TableField("device_code")
- private String deviceCode;
-
- @ApiModelProperty(value = "检测使用的设备名称")
- @TableField("device_name")
- private String deviceName;
-
- @ApiModelProperty(value = "检测人名称")
- @TableField("person_name")
- private String personName;
-
- @ApiModelProperty(value = "检测人性别(1=男,2=女)")
- @TableField("person_sex")
- private Integer personSex;
-
- @ApiModelProperty(value = "检测人年龄")
- @TableField("person_age")
- private Integer personAge;
-
- @ApiModelProperty(value = "检测人手机号")
- @TableField("person_phone")
- private String personPhone;
-
- @ApiModelProperty(value = "检测人身高(单位cm)")
- @TableField("person_height")
- private Double personHeight;
-
- @ApiModelProperty(value = "检测人体重(单位kg)")
- @TableField("person_weight")
- private Double personWeight;
-
- @ApiModelProperty(value = "检测时间")
- @TableField("check_time")
- private String checkTime;
-
- @ApiModelProperty(value = "检测 PDF 报告 URL")
- @TableField("pdf_url")
- private String pdfUrl;
-
- @ApiModelProperty(value = "健康指数,其值越大表示健康状态越好")
- @TableField("health_index")
- private Double healthIndex;
-
- @ApiModelProperty(value = "体质")
- @TableField("constitution_names")
- private String constitutionNames;
-
- @ApiModelProperty(value = "证型,进一步判断体质(constitutionNames)的结果,更为准确体现用户的真实体质")
- @TableField("symptom_name")
- private String symptomName;
-
- @ApiModelProperty(value = "舌象特征分析")
- @TableField("tongue_feature")
- private String tongueFeature;
-
- @ApiModelProperty(value = "面象特征分析")
- @TableField("face_feature")
- private String faceFeature;
-
- @ApiModelProperty(value = "风险疾病名称")
- @TableField("disease_risks")
- private String diseaseRisks;
+ @ApiModelProperty(value = "检测类型 1=诊所检测 2=小程序自检 3=硬件检测")
+ @TableField("inspection_type")
+ private Integer inspectionType;
@ApiModelProperty(value = "是否已支付 1=是 0=否")
@TableField("is_pay")
private Integer isPay;
+
+ @ApiModelProperty(value = "报告H5页面地址")
+ @TableField("report_print_url")
+ private String reportPrintUrl;
+
+ @ApiModelProperty(value = "现病史")
+ @TableField("present_history")
+ private String presentHistory;
+
+ @ApiModelProperty(value = "中医证型")
+ @TableField("tcm_syndrome")
+ private String tcmSyndrome;
+
+ @ApiModelProperty(value = "历史疾病补充")
+ @TableField("disease_history_memo")
+ private String diseaseHistoryMemo;
+
+ @ApiModelProperty(value = "西医诊断")
+ @TableField("western_medicine_diagnosis")
+ private String westernMedicineDiagnosis;
+
+ @ApiModelProperty(value = "三方用户id")
+ @TableField("three_user_id")
+ private Long threeUserId;
+
+ @ApiModelProperty(value = "手机号码")
+ @TableField("phone")
+ private String phone;
+
+ @ApiModelProperty(value = "设备账号ID")
+ @TableField("device_account_id")
+ private Long deviceAccountId;
+
+ @ApiModelProperty(value = "面诊结果ID")
+ @TableField("face_result_id")
+ private Integer faceResultId;
+
+ @ApiModelProperty(value = "舌诊结果ID")
+ @TableField("tongue_result_id")
+ private Integer tongueResultId;
+
@ApiModelProperty(value = "诊所名称")
@TableField(exist = false)
private String clinicName;
+
@ApiModelProperty(value = "是否已开药 1=是 0=否")
@TableField(exist = false)
private Integer isPrescribeMedicine;
+
@ApiModelProperty(value = "订单id")
@TableField(exist = false)
private String orderId;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspectionRiskEstimate.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspectionRiskEstimate.java
new file mode 100644
index 0000000..3732eff
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysInspectionRiskEstimate.java
@@ -0,0 +1,54 @@
+package com.ruoyi.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 报告疾病风险
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_sys_inspection_risk_estimate")
+@ApiModel(value="TSysInspectionRiskEstimate对象", description="报告疾病风险")
+public class TSysInspectionRiskEstimate implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty(value = "报告id")
+ @TableField("inspection_id")
+ private String inspectionId;
+
+ @ApiModelProperty(value = "疾病名称")
+ @TableField("risk_name")
+ private String riskName;
+
+ @ApiModelProperty(value = "疾病H5链接")
+ @TableField("risk_link_url")
+ private String riskLinkUrl;
+
+ @ApiModelProperty(value = "风险值")
+ @TableField("risk_value")
+ private String riskValue;
+
+ @ApiModelProperty(value = "风险值描述")
+ @TableField("risk_value_desc")
+ private String riskValueDesc;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysInspectionRiskEstimateService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysInspectionRiskEstimateService.java
new file mode 100644
index 0000000..9649136
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysInspectionRiskEstimateService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.model.TSysInspectionRiskEstimate;
+
+/**
+ * <p>
+ * 报告疾病风险 服务类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-06
+ */
+public interface TSysInspectionRiskEstimateService extends IService<TSysInspectionRiskEstimate> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysInspectionRiskEstimateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysInspectionRiskEstimateServiceImpl.java
new file mode 100644
index 0000000..74251ed
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysInspectionRiskEstimateServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.mapper.TSysInspectionRiskEstimateMapper;
+import com.ruoyi.system.model.TSysInspectionRiskEstimate;
+import com.ruoyi.system.service.TSysInspectionRiskEstimateService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 报告疾病风险 服务实现类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-06
+ */
+@Service
+public class TSysInspectionRiskEstimateServiceImpl extends ServiceImpl<TSysInspectionRiskEstimateMapper, TSysInspectionRiskEstimate> implements TSysInspectionRiskEstimateService {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/utils/util/TemplateMessageSendUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/utils/util/TemplateMessageSendUtil.java
index db34973..3f92b40 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/utils/util/TemplateMessageSendUtil.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/utils/util/TemplateMessageSendUtil.java
@@ -45,7 +45,7 @@
* @param startTime 开始时间
*/
public String wxTemplateAppLiveResultRequest(String openId,String liveTitle,String startTime) {
- WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService);
+ WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisCache);
// 1,获取access_token
String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_CACHE_KEY);
if (!StringUtils.hasLength(accessToken)) {
@@ -87,7 +87,7 @@
* @param startTime 开始时间
*/
public String wxOfficeTemplateAppLiveRequest(String openId,String liveTitle,String startTime) {
- WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService);
+ WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisCache);
// 1,获取access_token
String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_OFFICE_CACHE_KEY);
if (!StringUtils.hasLength(accessToken)) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/pojo/AppletUserEncrypteData.java b/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/pojo/AppletUserEncrypteData.java
index 16d0057..4e4be3a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/pojo/AppletUserEncrypteData.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/pojo/AppletUserEncrypteData.java
@@ -17,4 +17,6 @@
private String code;
@ApiModelProperty(value = "邀请用户id")
private Long inviteUserId;
+ @ApiModelProperty(value = "邀请诊所id")
+ private String clinicId;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxAppletTools.java b/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxAppletTools.java
index e583cfe..c4c3e85 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxAppletTools.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxAppletTools.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.utils.wx.tools;
+import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.system.utils.wx.body.resp.AccessTokenRespBody;
import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody;
@@ -78,12 +79,12 @@
public static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
private WeixinProperties wxConfig;
private RestTemplate wxRestTemplate;
- private RedisService redisService;
+ private RedisCache redisCache;
- public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig, RedisService redisService) {
+ public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig, RedisCache redisCache) {
this.wxRestTemplate = wxRestTemplate;
this.wxConfig = wxConfig;
- this.redisService = redisService;
+ this.redisCache = redisCache;
}
/**
@@ -146,7 +147,7 @@
* @return
*/
public String getAccessToken() {
- String accessToken = redisService.getCacheObject(ACCESSTOKEN_CACHE_KEY);
+ String accessToken = redisCache.getCacheObject(ACCESSTOKEN_CACHE_KEY);
if (StringUtils.hasLength(accessToken)) {
return accessToken;
}
@@ -158,7 +159,7 @@
// 抛出错误
throw new WxException(accessTokenRespBody.getErrorCode() + ":" + accessTokenRespBody.getErrorMsg());
}
- redisService.setCacheObject(ACCESSTOKEN_CACHE_KEY, accessTokenRespBody.getAccessToken(), 7200L, TimeUnit.SECONDS);
+ redisCache.setCacheObject(ACCESSTOKEN_CACHE_KEY, accessTokenRespBody.getAccessToken(), 7200, TimeUnit.SECONDS);
return accessTokenRespBody.getAccessToken();
}
@@ -166,7 +167,7 @@
* @return
*/
public String getAccessTokenOffice() {
- String accessToken = redisService.getCacheObject(ACCESS_TOKEN_OFFICE_CACHE_KEY);
+ String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_OFFICE_CACHE_KEY);
if (StringUtils.hasLength(accessToken)) {
return accessToken;
}
@@ -178,7 +179,7 @@
// 抛出错误
throw new WxException(accessTokenRespBody.getErrorCode() + ":" + accessTokenRespBody.getErrorMsg());
}
- redisService.setCacheObject(ACCESS_TOKEN_OFFICE_CACHE_KEY, accessTokenRespBody.getAccessToken(), 7200L, TimeUnit.SECONDS);
+ redisCache.setCacheObject(ACCESS_TOKEN_OFFICE_CACHE_KEY, accessTokenRespBody.getAccessToken(), 7200, TimeUnit.SECONDS);
return accessTokenRespBody.getAccessToken();
}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TCrmClinicMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TCrmClinicMapper.xml
index 5d76acb..7beffb7 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TCrmClinicMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TCrmClinicMapper.xml
@@ -19,6 +19,7 @@
<result column="audit_remark" property="auditRemark" />
<result column="performance_count" property="performanceCount" />
<result column="send_message_count" property="sendMessageCount" />
+ <result column="qr_code" property="qrCode" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="create_by" property="createBy" />
@@ -30,13 +31,14 @@
<sql id="Base_Column_List">
id, branch_id, salesperson_id, warehouse_id,user_id, clinic_name, person_charge_name, phone, low_procurement_money,
clinic_address, qualification_picture, status,audit_remark,performance_count,send_message_count,
- create_time, update_time, create_by, update_by, disabled
+ create_time, update_time, create_by, update_by, disabled,qr_code
</sql>
<select id="pageList" resultType="com.ruoyi.system.vo.TCrmClinicVO">
SELECT
tcc.id, tcc.branch_id, tcc.salesperson_id, tcc.warehouse_id,tcc.user_id, tcc.clinic_name, tcc.person_charge_name,
tcc.phone, tcc.low_procurement_money, tcc.clinic_address, tcc.qualification_picture, tcc.status,tcc.audit_remark,
- tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,tcc.send_message_count,
+ tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,
+ tcc.send_message_count,tcc.qr_code,
tcb.branch_name, tcs.salesperson_name, tcw.warehouse_name
from t_crm_clinic tcc
left join t_crm_branch tcb on tcc.branch_id = tcb.id
@@ -97,7 +99,8 @@
SELECT
tcc.id, tcc.branch_id, tcc.salesperson_id, tcc.warehouse_id,tcc.user_id, tcc.clinic_name, tcc.person_charge_name,
tcc.phone, tcc.low_procurement_money, tcc.clinic_address, tcc.qualification_picture, tcc.status,tcc.audit_remark,
- tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,tcc.send_message_count,
+ tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,
+ tcc.send_message_count,tcc.qr_code,
tcb.branch_name, tcs.salesperson_name, tcw.warehouse_name
from t_crm_clinic tcc
left join t_crm_branch tcb on tcc.branch_id = tcb.id
@@ -131,7 +134,8 @@
SELECT
tcc.id, tcc.branch_id, tcc.salesperson_id, tcc.warehouse_id,tcc.user_id, tcc.clinic_name, tcc.person_charge_name,
tcc.phone, tcc.low_procurement_money, tcc.clinic_address, tcc.qualification_picture, tcc.status,tcc.audit_remark,
- tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,tcc.send_message_count,
+ tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,
+ tcc.send_message_count,tcc.qr_code,
tcb.branch_name, tcs.salesperson_name, tcw.warehouse_name
from t_crm_clinic tcc
left join t_crm_branch tcb on tcc.branch_id = tcb.id
@@ -165,7 +169,8 @@
SELECT
tcc.id, tcc.branch_id, tcc.salesperson_id, tcc.warehouse_id,tcc.user_id, tcc.clinic_name, tcc.person_charge_name,
tcc.phone, tcc.low_procurement_money, tcc.clinic_address, tcc.qualification_picture, tcc.status,tcc.audit_remark,
- tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,tcc.send_message_count,
+ tcc.create_time, tcc.update_time, tcc.create_by, tcc.update_by, tcc.disabled,tcc.performance_count,
+ tcc.send_message_count,tcc.qr_code,
tcb.branch_name, tcs.salesperson_name, tcw.warehouse_name
from t_crm_clinic tcc
left join t_crm_branch tcb on tcc.branch_id = tcb.id
diff --git a/ruoyi-system/src/main/resources/mapper/system/TSysInspectionMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TSysInspectionMapper.xml
index 2cbe2d2..28c6421 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TSysInspectionMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TSysInspectionMapper.xml
@@ -7,27 +7,25 @@
<id column="id" property="id" />
<result column="app_user_id" property="appUserId" />
<result column="clinic_id" property="clinicId" />
- <result column="inspection_type" property="inspectionType" />
- <result column="inspection_info" property="inspectionInfo" />
- <result column="team_code" property="teamCode" />
- <result column="team_name" property="teamName" />
- <result column="device_code" property="deviceCode" />
- <result column="device_name" property="deviceName" />
- <result column="person_name" property="personName" />
- <result column="person_sex" property="personSex" />
- <result column="person_age" property="personAge" />
- <result column="person_phone" property="personPhone" />
- <result column="person_height" property="personHeight" />
- <result column="person_weight" property="personWeight" />
+ <result column="nick_name" property="nickName" />
+ <result column="sex" property="sex" />
+ <result column="age" property="age" />
+ <result column="administrative_office" property="administrativeOffice" />
<result column="check_time" property="checkTime" />
- <result column="pdf_url" property="pdfUrl" />
- <result column="health_index" property="healthIndex" />
- <result column="constitution_names" property="constitutionNames" />
- <result column="symptom_name" property="symptomName" />
- <result column="tongue_feature" property="tongueFeature" />
- <result column="face_feature" property="faceFeature" />
- <result column="disease_risks" property="diseaseRisks" />
+ <result column="inspection_info" property="inspectionInfo" />
+ <result column="prescription_info" property="prescriptionInfo" />
+ <result column="inspection_type" property="inspectionType" />
<result column="is_pay" property="isPay" />
+ <result column="report_print_url" property="reportPrintUrl" />
+ <result column="present_history" property="presentHistory" />
+ <result column="tcm_syndrome" property="tcmSyndrome" />
+ <result column="disease_history_memo" property="diseaseHistoryMemo" />
+ <result column="western_medicine_diagnosis" property="westernMedicineDiagnosis" />
+ <result column="three_user_id" property="threeUserId" />
+ <result column="phone" property="phone" />
+ <result column="device_account_id" property="deviceAccountId" />
+ <result column="face_result_id" property="faceResultId" />
+ <result column="tongue_result_id" property="tongueResultId" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="create_by" property="createBy" />
@@ -37,18 +35,18 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
- id, app_user_id,clinic_id, inspection_info,inspection_type, team_code, team_name, device_code, device_name, person_name,
- person_sex, person_age, person_phone, person_height, person_weight, check_time, pdf_url, health_index,
- constitution_names, symptom_name, tongue_feature,face_feature, disease_risks,is_pay, create_time, update_time,
- create_by, update_by, disabled, create_id
+ id, app_user_id,clinic_id, nick_name, sex, age, administrative_office, check_time,
+ inspection_info,inspection_type, is_pay, create_time, update_time,
+ create_by, update_by, disabled, create_id,report_print_url, present_history, tcm_syndrome, disease_history_memo,
+ western_medicine_diagnosis, three_user_id, phone, device_account_id, face_result_id, tongue_result_id
</sql>
<select id="pageList" resultType="com.ruoyi.system.vo.TSysInspectionVO">
SELECT
- tsi.id, tsi.app_user_id,tsi.clinic_id, tsi.inspection_info,tsi.inspection_type, tsi.team_code, tsi.team_name,
- tsi.device_code, tsi.device_name, tsi.person_name,
- tsi.person_sex, tsi.person_age, tsi.person_phone, tsi.person_height, tsi.person_weight, tsi.check_time, tsi.pdf_url, tsi.health_index,
- tsi.constitution_names, tsi.symptom_name, tsi.tongue_feature,tsi.face_feature, tsi.disease_risks,tsi.is_pay, tsi.create_time, tsi.update_time,
- tsi.create_by, tsi.update_by, tsi.disabled, tsi.create_id,tau.nick_name as nickName
+ tsi.id, tsi.app_user_id,tsi.clinic_id, tsi.nick_name, tsi.sex, tsi.age, tsi.administrative_office,
+ tsi.check_time,tsi.inspection_info,tsi.inspection_type,tsi.is_pay, tsi.create_time, tsi.update_time,
+ tsi.create_by, tsi.update_by, tsi.disabled, tsi.create_id,tsi.report_print_url, tsi.present_history,
+ tsi.tcm_syndrome, tsi.disease_history_memo,tsi.western_medicine_diagnosis, tsi.three_user_id,
+ tsi.phone, tsi.device_account_id, tsi.face_result_id, tsi.tongue_result_id,tau.nick_name as nickName
FROM t_sys_inspection tsi
left join t_sys_app_user tau on tsi.app_user_id = tau.id
<where>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TSysInspectionRiskEstimateMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TSysInspectionRiskEstimateMapper.xml
new file mode 100644
index 0000000..f7c1713
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/TSysInspectionRiskEstimateMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.TSysInspectionRiskEstimateMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TSysInspectionRiskEstimate">
+ <id column="id" property="id" />
+ <result column="inspection_id" property="inspectionId" />
+ <result column="risk_name" property="riskName" />
+ <result column="risk_link_url" property="riskLinkUrl" />
+ <result column="risk_value" property="riskValue" />
+ <result column="risk_value_desc" property="riskValueDesc" />
+ </resultMap>
+
+ <!-- 通用查询结果列 -->
+ <sql id="Base_Column_List">
+ id, inspection_id, risk_name, risk_link_url, risk_value, risk_value_desc
+ </sql>
+
+</mapper>
--
Gitblit v1.7.1