Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/ScrmStores' into ScrmStores

yjwang 1 settimana fa
parent
commit
a3be8622c1
19 ha cambiato i file con 230 aggiunte e 66 eliminazioni
  1. 5 0
      README.md
  2. 43 46
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreScrmController.java
  3. 22 0
      fs-common/src/main/java/com/fs/common/utils/txocr/IdCardVerificationResponse.java
  4. 42 2
      fs-common/src/main/java/com/fs/common/utils/txocr/TxOcrClient.java
  5. 1 1
      fs-qw-task/src/main/java/com/fs/app/task/UserCourseWatchCountTask.java
  6. 2 0
      fs-service/src/main/java/com/fs/his/mapper/FsDoctorMapper.java
  7. 9 0
      fs-service/src/main/java/com/fs/his/service/IFsDoctorService.java
  8. 6 0
      fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java
  9. 12 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsStoreScrm.java
  10. 12 0
      fs-service/src/main/java/com/fs/hisStore/param/FsStoreScrmInfoParam.java
  11. 9 6
      fs-service/src/main/java/com/fs/hisStore/service/categoryVal/CommonCheck.java
  12. 1 3
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreScrmServiceImpl.java
  13. 2 2
      fs-service/src/main/java/com/fs/hisStore/service/listener/FsStoreScrmListener.java
  14. 11 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreDetailsScrmVo.java
  15. 4 0
      fs-service/src/main/resources/mapper/his/FsDoctorMapper.xml
  16. 9 2
      fs-service/src/main/resources/mapper/hisStore/FsStoreScrmMapper.xml
  17. 8 0
      fs-user-app/src/main/java/com/fs/app/controller/UserController.java
  18. 31 0
      fs-user-app/src/main/java/com/fs/app/controller/store/StoreInfoCheckController.java
  19. 1 4
      fs-user-app/src/main/java/com/fs/app/exception/FSExceptionHandler.java

+ 5 - 0
README.md

@@ -23,6 +23,11 @@
 1.  注意调整Memory的大小,以及堆内存大小
 2.  对于maven仓库缺少的jar包引用,需要拷贝现有的文件(拷贝后依然出现错误,直接删除错误包下的_remote.repositories文件)。
 
+#### 身份证返回接口代码
+https://cloud.tencent.com/document/product/1007/33188?from=console_top_search
+
+
+
 
 
 #### sql更新

+ 43 - 46
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreScrmController.java

@@ -32,8 +32,8 @@ import java.util.Map;
  */
 @RestController
 @RequestMapping("/store/his/store")
-public class FsStoreScrmController extends BaseController
-{
+public class FsStoreScrmController extends BaseController {
+
     @Autowired
     private IFsStoreScrmService fsStoreService;
 
@@ -43,6 +43,47 @@ public class FsStoreScrmController extends BaseController
     @Autowired
     private IFsDoctorService fsDoctorService;
 
+    /**
+     * 获取店铺管理详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('his:store:query')")
+    @GetMapping(value = "/{storeId}")
+    public AjaxResult getInfo(@PathVariable("storeId") Long storeId) {
+        FsStoreScrm fsStore = fsStoreService.selectFsStoreByStoreId(storeId);
+        //获取店铺下绑定的药师职业证书
+        FsDoctorParam param=new FsDoctorParam();
+        param.setStoreId(fsStore.getStoreId());
+        param.setDoctorType(2);
+        fsStore.setDoctorList(fsDoctorService.getDoctorInfoByStoreId(param));
+//        fsStore.setPhone(ParseUtils.parsePhone(fsStore.getPhone()));
+        return AjaxResult.success(fsStore);
+    }
+
+    /**
+     * 新增店铺管理
+     */
+    @PreAuthorize("@ss.hasPermi('his:store:add')")
+    @Log(title = "店铺管理", businessType = BusinessType.INSERT,logParam = {"店铺","新增店铺信息"},isStoreLog = true)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsStoreScrm fsStore) {
+        storeAuditLogUtil.addOperLog(fsStoreService.insertFsStore(fsStore));
+        return AjaxResult.success();
+    }
+
+    /**
+     * 修改店铺管理
+     */
+    @PreAuthorize("@ss.hasPermi('his:store:edit')")
+    @Log(title = "店铺管理", businessType = BusinessType.UPDATE,logParam = {"店铺","修改店铺信息"},isStoreLog = true)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsStoreScrm fsStore) {
+        if (fsStore.getPhone()!=null&&fsStore.getPhone().contains("*")) {
+            fsStore.setPhone(null);
+        }
+        return toAjax(fsStoreService.updateFsStore(fsStore));
+    }
+
+
     /**
      * 查询店铺管理列表
      */
@@ -92,23 +133,6 @@ public class FsStoreScrmController extends BaseController
         return util.exportExcel(excelVOList, "商家申请登记表");
     }
 
-    /**
-     * 获取店铺管理详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('his:store:query')")
-    @GetMapping(value = "/{storeId}")
-    public AjaxResult getInfo(@PathVariable("storeId") Long storeId)
-    {
-        FsStoreScrm fsStore = fsStoreService.selectFsStoreByStoreId(storeId);
-        //获取店铺下绑定的药师职业证书
-        FsDoctorParam param=new FsDoctorParam();
-        param.setStoreId(fsStore.getStoreId());
-        param.setDoctorType(2);
-        fsStore.setDoctorList(fsDoctorService.getDoctorInfoByStoreId(param));
-//        fsStore.setPhone(ParseUtils.parsePhone(fsStore.getPhone()));
-        return AjaxResult.success(fsStore);
-    }
-
     /**
      * 新增或修改时候校验上传的营业执照是否包含药品零售
      */
@@ -117,33 +141,6 @@ public class FsStoreScrmController extends BaseController
         return R.ok().put("data", TxOcrClient.isContains(imageUrl, null));
     }
 
-    /**
-     * 新增店铺管理
-     */
-    @PreAuthorize("@ss.hasPermi('his:store:add')")
-    @Log(title = "店铺管理", businessType = BusinessType.INSERT,logParam = {"店铺","新增店铺信息"},isStoreLog = true)
-    @PostMapping
-    public AjaxResult add(@RequestBody FsStoreScrm fsStore)
-    {
-        storeAuditLogUtil.addOperLog(fsStoreService.insertFsStore(fsStore));
-        return AjaxResult.success();
-    }
-
-    /**
-     * 修改店铺管理
-     */
-    @PreAuthorize("@ss.hasPermi('his:store:edit')")
-    @Log(title = "店铺管理", businessType = BusinessType.UPDATE,logParam = {"店铺","修改店铺信息"},isStoreLog = true)
-    @PutMapping
-    public AjaxResult edit(@RequestBody FsStoreScrm fsStore)
-    {
-
-        if (fsStore.getPhone()!=null&&fsStore.getPhone().contains("*")){
-            fsStore.setPhone(null);
-        }
-        return toAjax(fsStoreService.updateFsStore(fsStore));
-    }
-
     /**
      * 删除店铺管理
      */

+ 22 - 0
fs-common/src/main/java/com/fs/common/utils/txocr/IdCardVerificationResponse.java

@@ -0,0 +1,22 @@
+package com.fs.common.utils.txocr;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @description:
+ * @author: Guos
+ * @time: 2025/12/1 下午4:17
+ */
+@Data
+@ToString
+public class IdCardVerificationResponse {
+
+
+  private String description;
+
+  private Integer result;
+
+
+
+}

+ 42 - 2
fs-common/src/main/java/com/fs/common/utils/txocr/TxOcrClient.java

@@ -1,7 +1,10 @@
 package com.fs.common.utils.txocr;
 
+import cn.hutool.json.JSONObject;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
 import com.tencentcloudapi.common.AbstractModel;
 import com.tencentcloudapi.common.CommonClient;
 import com.tencentcloudapi.common.Credential;
@@ -14,6 +17,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -27,6 +32,37 @@ public class TxOcrClient  {
 
     private static final String YPLS = "药品零售";
 
+    public static IdCardVerificationResponse IdCardVerification(String name, String idNumber) {
+        IdCardVerificationResponse map = new IdCardVerificationResponse();
+        try {
+            Credential cred = new Credential("AKIDviPyMZbRp24udCcpqjQxHOK4cx88ze6N", "97tVwEJE81sY0StDPPGukQ2ZvkU3QceY");
+            HttpProfile httpProfile = new HttpProfile();
+            httpProfile.setEndpoint("faceid.tencentcloudapi.com");
+            ClientProfile clientProfile = new ClientProfile();
+            clientProfile.setHttpProfile(httpProfile);
+            CommonClient client = new CommonClient("faceid", "2018-03-01", cred, "", clientProfile);
+            String params = "{\"IdCard\":\""+idNumber+"\",\"Name\":\""+name+"\"}";
+            String resp = client.call("IdCardVerification", params);
+            JSONObject jsonObject = new JSONObject(resp);
+            JSONObject response = (JSONObject)jsonObject.get("Response");
+            map.setDescription(response.get("Description").toString());
+            map.setResult(Integer.parseInt(response.get("Result").toString()));
+        } catch (TencentCloudSDKException e) {
+            log.error("身份证识别请求异常:{}",e.getMessage());
+            map.setDescription("识别失败");
+            map.setResult(-8);
+        }
+        return map;
+    }
+    /**
+     * 医疗器械url识别
+     * @return
+     */
+    public ContainsResult medicalDeviceUrlOcr(String imageUrl){
+        String ocr = ExtractDocBasic(imageUrl);
+        return null;
+    }
+
 
     /**
      * 营业执照识别
@@ -54,7 +90,7 @@ public class TxOcrClient  {
 
 
     /**
-     * 文档抽取
+     * 文档抽取(基础版)
      * @param imageUrl
      * @return
      */
@@ -249,9 +285,13 @@ public class TxOcrClient  {
     }
 
     public static void main(String[] args) {
-        ExtractDocBasic("https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/fs/20251118/d175ed9771324c56a126779ef89bb1e3.jpg");
+//        ExtractDocBasic("https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/fs/20251118/d175ed9771324c56a126779ef89bb1e3.jpg");
+        IdCardVerification("郭顺", "111");
     }
 
+
+
+
     /**
      * ClassifyDetectOCR
      * 支持身份证、护照、名片、银行卡、行驶证、驾驶证、港澳台通行证、户口本、港澳台来往内地通行证、港澳台居住证、不动产证、营业执照的智能分类。

+ 1 - 1
fs-qw-task/src/main/java/com/fs/app/task/UserCourseWatchCountTask.java

@@ -16,7 +16,7 @@ public class UserCourseWatchCountTask {
     /**
      * 每15分钟执行一次
      */
-    @Scheduled(cron = "0 */10 * * * ?")  // 每10分钟执行一次
+//    @Scheduled(cron = "0 */10 * * * ?")  // 每10分钟执行一次
     public void userCourseCountTask() {
         try {
             log.info("==============会员看课统计任务执行===============开始");

+ 2 - 0
fs-service/src/main/java/com/fs/his/mapper/FsDoctorMapper.java

@@ -226,4 +226,6 @@ public interface FsDoctorMapper
      *
      * **/
     List<FsDoctorVO> getDoctorInfoByStoreId(@Param("param") FsDoctorParam param);
+
+    Boolean idCardExists(String idCard, Long userId);
 }

+ 9 - 0
fs-service/src/main/java/com/fs/his/service/IFsDoctorService.java

@@ -127,4 +127,13 @@ public interface IFsDoctorService
      * 根据门店id查询药师信息
      * **/
     List<FsDoctorVO> getDoctorInfoByStoreId(FsDoctorParam param);
+
+    /**
+     * 验证该身份证是否已经注册
+     * @param idCard
+     * @param userId
+     * @return
+     */
+    Boolean idCardExistsByUserId(String idCard, Long userId);
+
 }

+ 6 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java

@@ -561,4 +561,10 @@ public class FsDoctorServiceImpl implements IFsDoctorService
         return fsDoctorMapper.getDoctorInfoByStoreId(param);
     }
 
+
+    @Override
+    public Boolean idCardExistsByUserId(String idCard, Long userId) {
+        return fsDoctorMapper.idCardExists(idCard, userId);
+    }
+
 }

+ 12 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreScrm.java

@@ -484,4 +484,16 @@ public class FsStoreScrm extends BaseEntity {
      * **/
     @TableField(exist = false)
     private Integer remainDays;
+
+    /**
+     * 2类医疗器械经营许可证营业范围
+     **/
+    private String medicalDevice2BusinessScope;
+
+    /**
+     * 3类医疗器械经营许可证营业范围
+     **/
+    private String medicalDevice3BusinessScope;
+
+
 }

+ 12 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreScrmInfoParam.java

@@ -266,4 +266,16 @@ public class FsStoreScrmInfoParam extends BaseEntity
      **/
     private Byte isMedicalDevice1ExpiryPermanent;
 
+    /**
+     * 2类医疗器械经营许可证营业范围
+     **/
+    private String medicalDevice2BusinessScope;
+
+    /**
+     * 3类医疗器械经营许可证营业范围
+     **/
+    private String medicalDevice3BusinessScope;
+
+
+
 }

+ 9 - 6
fs-service/src/main/java/com/fs/hisStore/service/categoryVal/CommonCheck.java

@@ -40,15 +40,18 @@ public class CommonCheck extends AbstractHandler {
      */
     public ContainsResult check(String cateName, Long storeId, String medicalDeviceCode) {
         FsStoreScrm fsStoreScrm = fsStoreScrmService.selectFsStoreByStoreId(storeId);
-
-        //通过店铺id获取上传的药品经营许可证。
-        String drugLicenseUrl = fsStoreScrm.getDrugLicense();
-
-        FsStoreScrmOcr fsStoreScrmOcr = fsStoreScrmOcrMapper.selectByIdAndUrl(storeId, drugLicenseUrl, null);
         //没有搜索到就调用一次识别
         ContainsResult result = new ContainsResult();
         result.setKeywords(cateName);
-
+        if(cateName.contains("非处方") && fsStoreScrm.getBusinessScope().contains(cateName)){
+            result.setFlag(true);
+            result.setMessage("包含所属!");
+            result.setBusinessStr(fsStoreScrm.getBusinessScope());
+            return result;
+        }
+        //通过店铺id获取上传的药品经营许可证。
+        String drugLicenseUrl = fsStoreScrm.getDrugLicense();
+        FsStoreScrmOcr fsStoreScrmOcr = fsStoreScrmOcrMapper.selectByIdAndUrl(storeId, drugLicenseUrl, null);
         if(ObjectUtil.isEmpty(fsStoreScrmOcr)){
             String ocrResult = TxOcrClient.ExtractDocBasic(drugLicenseUrl);
             if(null != ocrResult){

+ 1 - 3
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreScrmServiceImpl.java

@@ -122,7 +122,7 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService {
                 if (existingMerchantId != null) {
                     // 同一商家下检查店铺名称是否重复
                     if (fsStoreMapper.existsStoreNameInMerchant(existingMerchantId, fsStore.getStoreName())) {
-                        throw new BaseException("该商家下已存在同名店铺");
+                        throw new CustomException("该商家下已存在同名店铺");
                     }
                 }
             }
@@ -347,8 +347,6 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService {
 
     @Override
     public int updateFsStoreLogo(FsStoreScrm fsStore) {
-
-
         return fsStoreMapper.updateFsStore(fsStore);
     }
 

+ 2 - 2
fs-service/src/main/java/com/fs/hisStore/service/listener/FsStoreScrmListener.java

@@ -63,14 +63,14 @@ public class FsStoreScrmListener {
         if(!oldBusinessLicenseFlag){
             fsStoreScrmOcr.setBusinessLicense(fsStore.getBusinessLicense());
             String result = TxOcrClient.bizLicenseOCR(fsStoreScrmOcr.getBusinessLicense());
-            if(!result.isEmpty()){
+            if(!ObjectUtils.isEmpty(result)){
                 fsStoreScrmOcr.setBusinessLicenseTxt(result);
             }
         }
         if(!oldDrugLicenseFlag){
             fsStoreScrmOcr.setDrugLicense(fsStore.getDrugLicense());
             String result = TxOcrClient.ExtractDocBasic(fsStore.getDrugLicense());
-            if(!result.isEmpty()){
+            if(!ObjectUtils.isEmpty(result)){
                 fsStoreScrmOcr.setDrugLicenseTxt(result);
             }
         }

+ 11 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreDetailsScrmVo.java

@@ -284,4 +284,15 @@ public class FsStoreDetailsScrmVo extends BaseEntity
      **/
     private Date qualificationUpdateTime;
 
+    /**
+     * 2类医疗器械经营许可证营业范围
+     **/
+    private String medicalDevice2BusinessScope;
+
+    /**
+     * 3类医疗器械经营许可证营业范围
+     **/
+    private String medicalDevice3BusinessScope;
+
+
 }

+ 4 - 0
fs-service/src/main/resources/mapper/his/FsDoctorMapper.xml

@@ -391,4 +391,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                  sign_url
                  from  fs_doctor where  store_id=#{param.storeId} and doctor_type=#{param.doctorType} and status=1
     </select>
+
+    <select id="idCardExists" resultType="java.lang.Boolean">
+        select 1 from fs_doctor where id_card = #{idCard}
+    </select>
 </mapper>

+ 9 - 2
fs-service/src/main/resources/mapper/hisStore/FsStoreScrmMapper.xml

@@ -86,7 +86,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="settlementAgreementFileName" column="settlement_agreement_file_name" />
         <result property="qualityAssuranceAgreementFileName" column="quality_assurance_agreement_fileName" />
         <result property="otherSpecialQualificationFileName" column="other_special_qualification_fileName" />
-
+        <result property="medicalDevice2BusinessScope" column="medical_device2_business_scope" />
+        <result property="medicalDevice3BusinessScope" column="medical_device3_business_scope" />
     </resultMap>
 
     <sql id="selectFsStoreVo">
@@ -105,7 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                quality_assurance_agreement_code,settlement_agreement_code,is_medical_device1_expiry_permanent,
                is_drug_license_permanent,is_medical_device2_expiry_permanent,is_medical_device3_expiry_permanent,is_food_license_expiry_permanent,is_medical_license_expiry_permanent,
                title_Name_one,title_Name_two,title_Name_three,settlement_agreement_file_name,quality_assurance_agreement_fileName,other_special_qualification_fileName,
-               is_effective_permanent1,is_effective_permanent2,is_effective_permanent3
+               is_effective_permanent1,is_effective_permanent2,is_effective_permanent3,medical_device2_business_scope,medical_device3_business_scope
         from fs_store_scrm
     </sql>
 
@@ -225,6 +226,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="settlementAgreementFileName !=null ">settlement_agreement_file_name , </if>
             <if test="qualityAssuranceAgreementFileName !=null ">quality_assurance_agreement_fileName , </if>
             <if test="otherSpecialQualificationFileName !=null ">other_special_qualification_fileName , </if>
+            <if test="medicalDevice2BusinessScope !=null ">medical_device2_business_scope,</if>
+            <if test="medicalDevice3BusinessScope !=null ">medical_device3_business_scope,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="cityIds != null">#{cityIds},</if>
@@ -319,6 +322,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="settlementAgreementFileName !=null ">#{settlementAgreementFileName} , </if>
             <if test="qualityAssuranceAgreementFileName !=null ">#{qualityAssuranceAgreementFileName} , </if>
             <if test="otherSpecialQualificationFileName !=null ">#{otherSpecialQualificationFileName} , </if>
+            <if test="medicalDevice2BusinessScope !=null ">#{medicalDevice2BusinessScope},</if>
+            <if test="medicalDevice3BusinessScope !=null ">#{medicalDevice3BusinessScope},</if>
         </trim>
     </insert>
 
@@ -415,6 +420,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="settlementAgreementFileName !=null ">settlement_agreement_file_name = #{settlementAgreementFileName} , </if>
             <if test="qualityAssuranceAgreementFileName !=null ">quality_assurance_agreement_fileName = #{qualityAssuranceAgreementFileName} , </if>
             <if test="otherSpecialQualificationFileName !=null ">other_special_qualification_fileName = #{otherSpecialQualificationFileName} , </if>
+            <if test="medicalDevice2BusinessScope !=null ">medical_device2_business_scope = #{medicalDevice2BusinessScope} , </if>
+            <if test="medicalDevice3BusinessScope !=null ">medical_device3_business_scope = #{medicalDevice3BusinessScope} , </if>
         </trim>
         where store_id = #{storeId}
     </update>

+ 8 - 0
fs-user-app/src/main/java/com/fs/app/controller/UserController.java

@@ -12,6 +12,8 @@ import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.sign.Md5Utils;
+import com.fs.common.utils.txocr.IdCardVerificationResponse;
+import com.fs.common.utils.txocr.TxOcrClient;
 import com.fs.company.domain.CompanyUser;
 import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.his.domain.FsDoctor;
@@ -238,6 +240,12 @@ public class UserController extends  AppBaseController {
     @ApiOperation("注册医生")
     @PostMapping("/registerDoctor")
     public R registerDoctor(@Validated  @RequestBody FsDoctorRegisterParam param, HttpServletRequest request){
+        String idCard = param.getIdCard();
+        String doctorName = param.getDoctorName();
+        IdCardVerificationResponse idCardVerificationResponse = TxOcrClient.IdCardVerification(doctorName, idCard);
+        if(0 != idCardVerificationResponse.getResult()){
+            throw new CustomException(idCardVerificationResponse.getDescription());
+        }
         FsDoctor doctor= doctorService.selectFsDoctorByUserId(Long.parseLong(getUserId()));
         if(doctor!=null){
             if(doctor.getIsAudit().equals(0)){

+ 31 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/StoreInfoCheckController.java

@@ -0,0 +1,31 @@
+package com.fs.app.controller.store;
+
+import com.fs.common.core.domain.R;
+import com.fs.common.utils.txocr.TxOcrClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @description: 新加一个controller主要用于验证
+ * @author: Guos
+ * @time: 2025/12/1 上午10:46
+ */
+@RestController
+@RequestMapping(value="/store/app/storeInfoCheck")
+public class StoreInfoCheckController {
+
+    /**
+     * 新增或修改时候校验上传的营业执照是否包含药品零售
+     * @param imageUrl 图片url
+     */
+    @GetMapping("/businessLicenseCheck")
+    public R businessLicenseCheck(String imageUrl){
+        return R.ok().put("data", TxOcrClient.isContains(imageUrl, null));
+    }
+
+
+
+
+
+}

+ 1 - 4
fs-user-app/src/main/java/com/fs/app/exception/FSExceptionHandler.java

@@ -1,9 +1,5 @@
 package com.fs.app.exception;
 
-
-
-
-import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.exception.ServiceException;
@@ -82,6 +78,7 @@ public class FSExceptionHandler {
 	public R handleException(CustomException e){
 		return R.error(e.getMessage());
 	}
+
 	@ExceptionHandler(Exception.class)
 	public R handleException(Exception e){
 		logger.error(e.getMessage(), e);