12 İşlemeler 7f62b99454 ... f080e40dc5

Yazar SHA1 Mesaj Tarih
  yfh f080e40dc5 Merge branch 'master' into bly_store 5 gün önce
  yfh f64308d424 Merge remote-tracking branch 'origin/master' 5 gün önce
  yfh 4272399a03 调整错误逻辑课程乱了 5 gün önce
  yfh adfd88380f 调整错误逻辑课程乱了 5 gün önce
  ct 26d747daef Merge remote-tracking branch 'origin/master' 5 gün önce
  ct abac67e0b1 投诉模板 5 gün önce
  wjj f1bef46782 修改聚水潭推送物流代收和货到付款金额问题 5 gün önce
  ct 470838559c Merge remote-tracking branch 'origin/master' 5 gün önce
  ct bfc9d96757 身份验证 5 gün önce
  三七 08c50b6bb3 套餐包付款二维码 5 gün önce
  zyp 26e43a6911 Merge remote-tracking branch 'origin/master' 5 gün önce
  zyp 080c6296df zyp 5 gün önce

+ 124 - 0
fs-admin/src/main/java/com/fs/his/controller/FsComplaintTemplateController.java

@@ -0,0 +1,124 @@
+package com.fs.his.controller;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.his.domain.FsComplaintTemplate;
+import com.fs.his.service.IFsComplaintTemplateService;
+import com.fs.his.utils.ComplaintTreeUtil;
+import com.fs.his.vo.FsComplaintTemplateVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 投诉模板Controller
+ *
+ * @author fs
+ * @date 2025-06-09
+ */
+@RestController
+@RequestMapping("/his/template")
+public class FsComplaintTemplateController extends BaseController
+{
+    @Autowired
+    private IFsComplaintTemplateService fsComplaintTemplateService;
+
+    /**
+     * 查询投诉模板列表
+     */
+    @PreAuthorize("@ss.hasPermi('his:template:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FsComplaintTemplate fsComplaintTemplate)
+    {
+        startPage();
+        fsComplaintTemplate.setIsDel(0L);
+        List<FsComplaintTemplate> list = fsComplaintTemplateService.selectFsComplaintTemplateList(fsComplaintTemplate);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询投诉模板树形结果
+     */
+    @PreAuthorize("@ss.hasPermi('his:template:list')")
+    @GetMapping("/treeList")
+    public R treeList(FsComplaintTemplate fsComplaintTemplate)
+    {
+        List<FsComplaintTemplate> list = fsComplaintTemplateService.selectFsComplaintTemplateList(fsComplaintTemplate);
+        List<FsComplaintTemplateVO> templateVOS = Lists.newArrayList();
+        for (FsComplaintTemplate template : list){
+            FsComplaintTemplateVO templateVO = new FsComplaintTemplateVO();
+            templateVO.setId(template.getId());
+            templateVO.setName(template.getName());
+            templateVO.setParentId(template.getParentId());
+            templateVO.setDescription(template.getDescription());
+            templateVO.setSort(template.getSort());
+            templateVOS.add(templateVO);
+        }
+        return R.ok().put("data", ComplaintTreeUtil.list2TreeConverter(templateVOS, 0));
+    }
+
+
+    /**
+     * 导出投诉模板列表
+     */
+    @PreAuthorize("@ss.hasPermi('his:template:export')")
+    @Log(title = "投诉模板", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(FsComplaintTemplate fsComplaintTemplate)
+    {
+        List<FsComplaintTemplate> list = fsComplaintTemplateService.selectFsComplaintTemplateList(fsComplaintTemplate);
+        ExcelUtil<FsComplaintTemplate> util = new ExcelUtil<FsComplaintTemplate>(FsComplaintTemplate.class);
+        return util.exportExcel(list, "投诉模板数据");
+    }
+
+    /**
+     * 获取投诉模板详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('his:template:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(fsComplaintTemplateService.selectFsComplaintTemplateById(id));
+    }
+
+    /**
+     * 新增投诉模板
+     */
+    @PreAuthorize("@ss.hasPermi('his:template:add')")
+    @Log(title = "投诉模板", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsComplaintTemplate fsComplaintTemplate)
+    {
+        return toAjax(fsComplaintTemplateService.insertFsComplaintTemplate(fsComplaintTemplate));
+    }
+
+    /**
+     * 修改投诉模板
+     */
+    @PreAuthorize("@ss.hasPermi('his:template:edit')")
+    @Log(title = "投诉模板", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsComplaintTemplate fsComplaintTemplate)
+    {
+        return toAjax(fsComplaintTemplateService.updateFsComplaintTemplate(fsComplaintTemplate));
+    }
+
+    /**
+     * 删除投诉模板
+     */
+    @PreAuthorize("@ss.hasPermi('his:template:remove')")
+    @Log(title = "投诉模板", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(fsComplaintTemplateService.deleteFsComplaintTemplateByIds(ids));
+    }
+}

+ 98 - 0
fs-admin/src/main/java/com/fs/his/controller/FsUserComplaintController.java

@@ -0,0 +1,98 @@
+package com.fs.his.controller;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.his.domain.FsUserComplaint;
+import com.fs.his.service.IFsUserComplaintService;
+import com.fs.his.vo.FsUserComplaintVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 用户投诉Controller
+ *
+ * @author fs
+ * @date 2025-06-09
+ */
+@RestController
+@RequestMapping("/his/complaint")
+public class FsUserComplaintController extends BaseController
+{
+    @Autowired
+    private IFsUserComplaintService fsUserComplaintService;
+
+    /**
+     * 查询用户投诉列表
+     */
+    @PreAuthorize("@ss.hasPermi('his:complaint:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FsUserComplaint fsUserComplaint)
+    {
+        startPage();
+        List<FsUserComplaintVo> list = fsUserComplaintService.selectFsUserComplaintList(fsUserComplaint);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出用户投诉列表
+     */
+    @PreAuthorize("@ss.hasPermi('his:complaint:export')")
+    @Log(title = "用户投诉", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(FsUserComplaint fsUserComplaint)
+    {
+        List<FsUserComplaintVo> list = fsUserComplaintService.selectFsUserComplaintList(fsUserComplaint);
+        ExcelUtil<FsUserComplaintVo> util = new ExcelUtil<FsUserComplaintVo>(FsUserComplaintVo.class);
+        return util.exportExcel(list, "用户投诉数据");
+    }
+
+    /**
+     * 获取用户投诉详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('his:complaint:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(fsUserComplaintService.selectFsUserComplaintById(id));
+    }
+
+    /**
+     * 新增用户投诉
+     */
+    @PreAuthorize("@ss.hasPermi('his:complaint:add')")
+    @Log(title = "用户投诉", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsUserComplaint fsUserComplaint)
+    {
+        return toAjax(fsUserComplaintService.insertFsUserComplaint(fsUserComplaint));
+    }
+
+    /**
+     * 修改用户投诉
+     */
+    @PreAuthorize("@ss.hasPermi('his:complaint:edit')")
+    @Log(title = "用户投诉", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsUserComplaint fsUserComplaint)
+    {
+        return toAjax(fsUserComplaintService.updateFsUserComplaint(fsUserComplaint));
+    }
+
+    /**
+     * 删除用户投诉
+     */
+    @PreAuthorize("@ss.hasPermi('his:complaint:remove')")
+    @Log(title = "用户投诉", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(fsUserComplaintService.deleteFsUserComplaintByIds(ids));
+    }
+}

+ 6 - 5
fs-company/src/main/java/com/fs/company/controller/store/FsInquiryOrderController.java

@@ -364,16 +364,17 @@ public class FsInquiryOrderController extends BaseController
 
 
     /**
-    * 生成订单二维码
+    * 生成问诊付款二维码
     */
     @PreAuthorize("@ss.hasPermi('store:inquiryOrder:wxaCodeInquiryOrder')")
     @GetMapping("/getWxaCodeInquiryOrderUnLimit/{orderId}")
-    public AjaxResult getWxaCodeInquiryOrderUnLimit(@PathVariable("orderId") Long orderId)
+    public R getWxaCodeInquiryOrderUnLimit(@PathVariable("orderId") Long orderId)
     {
 
-        byte[] bytes = fsInquiryOrderService.getWxaCodeInquiryOrderUnLimit(orderId);
-        String base64 = Base64.getEncoder().encodeToString(bytes);
-        return AjaxResult.success("成功",base64);
+        //        byte[] bytes = fsInquiryOrderService.getWxaCodeInquiryOrderUnLimit(orderId);
+//        String base64 = Base64.getEncoder().encodeToString(bytes);
+        return fsInquiryOrderService.getWxaCodeInquiryOrderUnLimitR(orderId);
 
     }
+
 }

+ 12 - 0
fs-company/src/main/java/com/fs/company/controller/store/FsPackageOrderController.java

@@ -248,4 +248,16 @@ public class FsPackageOrderController extends BaseController
         String base64 = Base64.getEncoder().encodeToString(bytes);
         return AjaxResult.success("成功",base64);
     }
+
+    /**
+     * 生成套餐包付款二维码
+     */
+    @PreAuthorize("@ss.hasPermi('store:packageOrder:wxaCodePackageOrder')")
+    @GetMapping("/getWxaCodePackageOrderUnLimit/{orderId}")
+    public R getWxaCodePackageOrderUnLimit(@PathVariable("orderId") Long orderId)
+    {
+
+        return fsPackageOrderService.getWxaCodePackageOrderUnLimit(orderId);
+
+    }
 }

+ 20 - 1
fs-framework/src/main/java/com/fs/framework/web/exception/GlobalExceptionHandler.java

@@ -1,6 +1,8 @@
 package com.fs.framework.web.exception;
 
 import javax.servlet.http.HttpServletRequest;
+
+import com.fs.common.exception.CustomException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.AccessDeniedException;
@@ -17,7 +19,7 @@ import com.fs.common.utils.StringUtils;
 
 /**
  * 全局异常处理器
- * 
+ *
 
  */
 @RestControllerAdvice
@@ -59,6 +61,15 @@ public class GlobalExceptionHandler
         return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage());
     }
 
+
+    @ExceptionHandler(CustomException.class)
+    public AjaxResult handleCustomException(CustomException e, HttpServletRequest request)
+    {
+        log.error(e.getMessage(), e);
+        Integer code = e.getCode();
+        return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage());
+    }
+
     /**
      * 拦截未知的运行时异常
      */
@@ -70,6 +81,14 @@ public class GlobalExceptionHandler
         return AjaxResult.error(e.getMessage());
     }
 
+    @ExceptionHandler(CustomException.class)
+    public AjaxResult handleCustomException(CustomException e, HttpServletRequest request)
+    {
+        String requestURI = request.getRequestURI();
+        log.error("请求地址'{}',发生未知异常.", requestURI, e);
+        return AjaxResult.error(e.getMessage());
+    }
+
     /**
      * 系统异常
      */

+ 4 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.exception.CustomException;
 import com.fs.common.exception.ServiceException;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.domain.FsUserCoursePeriodDays;
@@ -114,6 +115,9 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
         }
 
         FsUserCoursePeriod fsUserCoursePeriod1 = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(fsUserCoursePeriod.getPeriodId());
+        if (!fsUserCoursePeriod1.getTrainingCampId().equals(fsUserCoursePeriod.getTrainingCampId())){
+            throw new CustomException("参数错误,请刷新后重试!");
+        }
         int flag = fsUserCoursePeriodMapper.updateFsUserCoursePeriod(fsUserCoursePeriod);
 
         // 2. 判定是否变更过开始时间(periodStartingTime)

+ 2 - 2
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -187,12 +187,12 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
             shopOrderDTO.setIsCod(true);
             // 货到付款金额 = 物流代收金额-优惠金额
             shopOrderDTO.setBuyerPaidAmount(fsStoreOrder.getPayDelivery());
-            shopOrderDTO.setPayAmount(fsStoreOrder.getPayPrice().doubleValue());
+            shopOrderDTO.setPayAmount(fsStoreOrder.getPayRemain().doubleValue());
 
             // 货到付款要推两次
             PaymentDTO paymentDTO2 = new PaymentDTO();
             // 物流代收金额
-            paymentDTO2.setAmount(fsStoreOrder.getPayDelivery().doubleValue());
+            paymentDTO2.setAmount(fsStoreOrder.getPayRemain().doubleValue());
             paymentDTO2.setOuterPayId(String.format("%s%d",order.getPlatform_code(),1));
             paymentDTO2.setPayDate(order.getDeal_datetime());
             paymentDTO2.setPayment("货到付款");

+ 10 - 1
fs-service/src/main/java/com/fs/his/mapper/FsPackageOrderMapper.java

@@ -76,7 +76,16 @@ public interface FsPackageOrderMapper
     public int deleteFsPackageOrderByOrderIds(Long[] orderIds);
 
     @Select({"<script> " +
-            "select o.order_id,o.package_second_name,o.source,o.order_sn,o.package_name,o.pay_time, o.days,o.pay_price,o.pay_money,o.pay_type,o.`status`,o.package_sub_type,o.create_time,o.start_time,o.finish_time      ,d.doctor_name,u.nick_name,u.phone,c.company_name,cu.nick_name company_user_name,patient_json->>'$.patientName' as patientName,fso.delivery_status,fso.delivery_pay_status  from fs_package_order o LEFT JOIN fs_doctor d ON d.doctor_id=o.doctor_id LEFT JOIN fs_user u ON u.user_id=o.user_id LEFT JOIN company c on c.company_id =o.company_id LEFT JOIN company_user cu on cu.user_id=o.company_user_id LEFT JOIN fs_store_order fso ON fso.order_id= o.store_order_id"+
+            "select o.order_id,o.package_second_name,o.source,o.order_sn,o.package_name,o.pay_time,o.is_pay, o.days,o.pay_price, " +
+            "o.pay_money,o.pay_type,o.`status`,o.package_sub_type,o.create_time,o.start_time,o.finish_time      " +
+            ",d.doctor_name,u.nick_name,u.phone,c.company_name,cu.nick_name company_user_name, " +
+            "patient_json->>'$.patientName' as patientName,fso.delivery_status,fso.delivery_pay_status  " +
+            "from fs_package_order o " +
+            "LEFT JOIN fs_doctor d ON d.doctor_id=o.doctor_id " +
+            "LEFT JOIN fs_user u ON u.user_id=o.user_id " +
+            "LEFT JOIN company c on c.company_id =o.company_id " +
+            "LEFT JOIN company_user cu on cu.user_id=o.company_user_id " +
+            "LEFT JOIN fs_store_order fso ON fso.order_id= o.store_order_id "+
             " where 1 = 1 \n" +
             "            <if test=\"maps.orderSn != null  and maps.orderSn != ''\"> and o.order_sn = #{maps.orderSn}</if>\n" +
             "            <if test=\"maps.phone != null and maps.phone != '' \">and u.phone = #{maps.phone} </if>\n" +

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

@@ -129,4 +129,6 @@ public interface IFsInquiryOrderService
 
     byte[] getWxaCodeInquiryOrderUnLimit(Long orderId);
 
+    R getWxaCodeInquiryOrderUnLimitR(Long orderId);
+
 }

+ 1 - 0
fs-service/src/main/java/com/fs/his/service/IFsPackageOrderService.java

@@ -122,5 +122,6 @@ public interface IFsPackageOrderService
 
     List<PackageOrderDTO> getNewOrder();
 
+    R getWxaCodePackageOrderUnLimit(Long orderId);
 
 }

+ 47 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.his.service.impl;
 
+import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
@@ -23,6 +24,7 @@ import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyMoneyLogsMapper;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
+import com.fs.core.config.WxMaConfiguration;
 import com.fs.core.config.WxPayProperties;
 import com.fs.core.utils.OrderCodeUtils;
 import com.fs.event.TemplateBean;
@@ -48,6 +50,8 @@ import com.fs.jpush.service.JpushService;
 import com.fs.repeat.vo.RepeatUploadVo;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
+import com.fs.system.oss.CloudStorageService;
+import com.fs.system.oss.OSSFactory;
 import com.fs.tzBankPay.doman.*;
 import com.fs.ybPay.domain.OrderResult;
 import com.fs.ybPay.domain.RefundResult;
@@ -67,6 +71,7 @@ import com.github.binarywang.wxpay.service.WxPayService;
 import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import lombok.Synchronized;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -1807,4 +1812,46 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
         byte[] bytes = HttpUtil.getWechatQrcodeByHttpURL(codeUrl, jsonMap);
         return bytes;
     }
+
+    @Override
+    public R getWxaCodeInquiryOrderUnLimitR(Long orderId) {
+
+        FsSysConfig sysConfig = configUtil.getSysConfig();
+
+        final WxMaService wxMaService = WxMaConfiguration.getMaService(sysConfig.getAppid());
+        String scene="orderId="+ orderId ;
+        byte[] file;
+        try {
+            file = wxMaService.getQrcodeService().createWxaCodeUnlimitBytes(
+                    scene,
+                    "pages_order/inquiryPay",
+                    true,
+                    "release",
+                    430,
+                    true,
+                    null,
+                    false);
+
+            // 上传图片到存储桶
+            String suffix = ".png";
+            CloudStorageService storage = OSSFactory.build();
+            String url;
+            try {
+                url = storage.uploadSuffix(file, suffix);
+            }  catch (Exception e) {
+                // 记录错误日志
+                logger.error("生成图片失败:{}",e.getMessage(),e);
+                return R.error("生成图片失败");
+            }
+            // 返回成功信息
+            return R.ok().put("url",url);
+
+        } catch (WxErrorException e) {
+            logger.error(e.getMessage(), e);
+            return R.error("微信接口调用失败: " + e.getMessage());
+        }
+
+    }
+
+
 }

+ 43 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 
+import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
@@ -27,6 +28,7 @@ import com.fs.common.utils.ip.IpUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyUserMapper;
+import com.fs.core.config.WxMaConfiguration;
 import com.fs.core.config.WxPayProperties;
 import com.fs.core.utils.OrderCodeUtils;
 import com.fs.his.config.FsSysConfig;
@@ -50,6 +52,8 @@ import com.fs.huifuPay.domain.HuiFuCreateOrder;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.system.domain.SysConfig;
+import com.fs.system.oss.CloudStorageService;
+import com.fs.system.oss.OSSFactory;
 import com.fs.ybPay.domain.CreateWxOrderResult;
 import com.fs.ybPay.domain.OrderResult;
 import com.fs.ybPay.dto.OrderQueryDTO;
@@ -70,6 +74,7 @@ import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.service.WxPayService;
 import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -1536,4 +1541,42 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
             return R.error("创建失败");
         }
     }
+
+    @Override
+    public R getWxaCodePackageOrderUnLimit(Long orderId) {
+        FsSysConfig sysConfig = configUtil.getSysConfig();
+
+        final WxMaService wxMaService = WxMaConfiguration.getMaService(sysConfig.getAppid());
+        String scene="orderId="+ orderId ;
+        byte[] file;
+        try {
+            file = wxMaService.getQrcodeService().createWxaCodeUnlimitBytes(
+                    scene,
+                    "pages_order/packagePayment",
+                    true,
+                    "release",
+                    430,
+                    true,
+                    null,
+                    false);
+
+            // 上传图片到存储桶
+            String suffix = ".png";
+            CloudStorageService storage = OSSFactory.build();
+            String url;
+            try {
+                url = storage.uploadSuffix(file, suffix);
+            }  catch (Exception e) {
+                // 记录错误日志
+                logger.error("生成图片失败:{}",e.getMessage(),e);
+                return R.error("生成图片失败");
+            }
+            // 返回成功信息
+            return R.ok().put("url",url);
+
+        } catch (WxErrorException e) {
+            logger.error(e.getMessage(), e);
+            return R.error("微信接口调用失败: " + e.getMessage());
+        }
+    }
 }

+ 1 - 1
fs-service/src/main/resources/mapper/course/FsCourseLinkMapper.xml

@@ -152,7 +152,7 @@
             #{item.courseId,jdbcType=BIGINT},
             #{item.qwExternalId,jdbcType=BIGINT},
             #{item.linkType,jdbcType=BIGINT},
-            #{item.isRoom,jdbcType=VARCHAR},
+            #{item.isRoom,jdbcType=VARCHAR}
             )
         </foreach>
     </insert>

+ 22 - 18
fs-user-app/src/main/java/com/fs/app/controller/PatientController.java

@@ -94,15 +94,17 @@ public class PatientController extends  AppBaseController {
             return R.error("身份证号码不合法");
         }
         if (idCardNumber.length() != 18) {
-            //大陆身份证是18位
-            if (isIdVerification != 1) {
-                return R.error("身份证号码不合法");
-            } else {
-                //非大陆身份校验需要手机号 手机号只支持大陆的办理的手机号
-                if (StringUtils.isBlank(mobile)){
-                    R.error("手机号不能为空");
-                }
-            }
+//            //大陆身份证是18位
+//            if (isIdVerification != 1) {
+//                return R.error("身份证号码不合法");
+//            } else {
+//                //非大陆身份校验需要手机号 手机号只支持大陆的办理的手机号
+//                if (StringUtils.isBlank(mobile)){
+//                    R.error("手机号不能为空");
+//                }
+//            }
+            //暂时仅支持大陆身份证
+            return  R.error("身份证号码不合法");
         } else {
             String regex = "\\d{17}[0-9Xx]";
             if (!Pattern.matches(regex, idCardNumber)) {
@@ -195,15 +197,17 @@ public class PatientController extends  AppBaseController {
             return R.error("身份证号码不合法");
         }
         if (idCardNumber.length() != 18) {
-            //大陆身份证是18位
-            if (isIdVerification != 1) {
-                return R.error("身份证号码不合法");
-            } else {
-                //非大陆身份校验需要手机号 手机号只支持大陆的办理的手机号
-                if (StringUtils.isBlank(mobile)){
-                    R.error("手机号不能为空");
-                }
-            }
+//            //大陆身份证是18位
+//            if (isIdVerification != 1) {
+//                return R.error("身份证号码不合法");
+//            } else {
+//                //非大陆身份校验需要手机号 手机号只支持大陆的办理的手机号
+//                if (StringUtils.isBlank(mobile)){
+//                    R.error("手机号不能为空");
+//                }
+//            }
+            //暂时仅支持大陆身份证
+            return  R.error("身份证号码不合法");
         } else {
             String regex = "\\d{17}[0-9Xx]";
             if (!Pattern.matches(regex, idCardNumber)) {