From d98af68f2ea108254ec362ac2497fd619e6dd3eb Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 13 一月 2026 18:13:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 48 insertions(+), 11 deletions(-)

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 8ecb8d7..e451cce 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,35 +4,37 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 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.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.model.*;
 import com.ruoyi.system.query.TSysAppUserQuery;
 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.TSysAppUserVO;
 import com.ruoyi.system.vo.TSysOrderVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.entity.ContentType;
 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.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
+import java.io.ByteArrayInputStream;
+import java.util.*;
 
 /**
  * <p>
@@ -60,8 +62,9 @@
     private final WeixinProperties wxConfig;
     private final TCrmClinicService crmClinicService;
     private final ISysUserService sysUserService;
+    private final TSysOtherConfigService sysOtherConfigService;
     @Autowired
-    public TSysAppUserController(TSysAppUserService sysAppUserService, TSysInspectionService sysInspectionService, TSysOrderService sysOrderService, TSysChronicDiseaseService sysChronicDiseaseService, TokenService tokenService, RedisCache redisCache, XimaAIUtil ximaAIUtil, RestTemplate restTemplate, FileController fileController, WeixinProperties wxConfig, TCrmClinicService crmClinicService, ISysUserService sysUserService) {
+    public TSysAppUserController(TSysAppUserService sysAppUserService, TSysInspectionService sysInspectionService, TSysOrderService sysOrderService, TSysChronicDiseaseService sysChronicDiseaseService, TokenService tokenService, RedisCache redisCache, XimaAIUtil ximaAIUtil, RestTemplate restTemplate, FileController fileController, WeixinProperties wxConfig, TCrmClinicService crmClinicService, ISysUserService sysUserService, TSysOtherConfigService sysOtherConfigService) {
         this.sysAppUserService = sysAppUserService;
         this.sysInspectionService = sysInspectionService;
         this.sysOrderService = sysOrderService;
@@ -74,6 +77,7 @@
         this.wxConfig = wxConfig;
         this.crmClinicService = crmClinicService;
         this.sysUserService = sysUserService;
+        this.sysOtherConfigService = sysOtherConfigService;
     }
 
     /**
@@ -123,6 +127,9 @@
         }else {
             sysAppUserVO.setIsClinicUser(0);
         }
+        // 查询免费次数
+        TSysOtherConfig sysOtherConfig = sysOtherConfigService.getById(1);
+        sysAppUserVO.setAiFreeCount(sysOtherConfig.getAiFreeCount());
         return R.ok(sysAppUserVO);
     }
 
@@ -167,7 +174,12 @@
         String userId = tokenService.getLoginUserApplet().getUserId();
         TSysAppUser sysAppUser = sysAppUserService.getById(userId);
 
-        if(StringUtils.isBlank(sysAppUser.getNickName()) || StringUtils.isBlank(sysAppUser.getPhone()) || Objects.isNull(sysAppUser.getSex()) ||Objects.isNull(sysAppUser.getUserHeight()) || Objects.isNull(sysAppUser.getUserWeight())){
+        if(StringUtils.isBlank(sysAppUser.getNickName())
+                || StringUtils.isBlank(sysAppUser.getPhone())
+                || Objects.isNull(sysAppUser.getSex())
+                || Objects.isNull(sysAppUser.getBirthTime())
+                || Objects.isNull(sysAppUser.getUserHeight())
+                || Objects.isNull(sysAppUser.getUserWeight())){
             return R.fail("请先完善用户信息");
         }
 
@@ -176,7 +188,7 @@
             sysAppUser.setIdentifierNumber(identifierNumber);
             sysAppUserService.updateById(sysAppUser);
         }
-        JSONObject authorizationH5 = ximaAIUtil.getAuthorizationH5(sysAppUser.getIdentifierNumber(), sysAppUser.getNickName(), sysAppUser.getPhone(), sysAppUser.getSex() == 1 ? "0" : "1", sysAppUser.getUserHeight(), sysAppUser.getUserWeight(), deviceType);
+        JSONObject authorizationH5 = ximaAIUtil.getAuthorizationH5(sysAppUser.getIdentifierNumber(), sysAppUser.getNickName(), sysAppUser.getPhone(), sysAppUser.getSex() == 1 ? "0" : "1",sysAppUser.getBirthTime().toString(), sysAppUser.getUserHeight(), sysAppUser.getUserWeight(), deviceType);
         return R.ok(authorizationH5);
     }
 
@@ -196,6 +208,31 @@
         if(Objects.isNull(crmClinic)){
             return R.fail("未找到该诊所信息");
         }
+        if(StringUtils.isBlank(crmClinic.getQrCode())){
+            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", "pages/invite/invite");
+                map.put("scene", "clinicId=" + crmClinic.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.obsUploadQrCode(file,"qrcode_"+crmClinic.getId()+".jpg");
+                crmClinic.setQrCode(stringApiResult);
+            } catch (Exception e) {
+                log.error("生成小程序码失败:{}", e.getMessage());
+            }
+            crmClinicService.updateById(crmClinic);
+        }
         return R.ok(crmClinic.getQrCode());
     }
 

--
Gitblit v1.7.1