浏览代码

(app):feat 优化实名认证和合同签署功能

- 移除 AppCategoryServiceImpl 中的多余代码
- 更新 AppContractSign 实体,添加 fullName 字段
- 修改 AppSiteMapper.xml 中的查询语句
- 更新 CommonConstant 中的 REGISTER_ORG_CODE 值- 重构 ESignApi 控制器,支持新的签署流程
- 优化 ESignServiceImpl 中的签署流程创建逻辑
- 新增签署回调处理和待签列表查询功能
- 更新 IESignService接口,添加新的方法
- 在 OrderServiceImpl 中添加保存签署流程记录的方法
- 更新 ShiroConfig,允许匿名访问签署回调接口
SheepHy 2 天之前
父节点
当前提交
e4d03a52b0

+ 1 - 1
national-motion-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java

@@ -77,7 +77,7 @@ public interface CommonConstant {
 	int OPERATE_TYPE_6 = 6;
 
      /** 小程序用户注册关联orgCode */
-     String REGISTER_ORG_CODE = "A02A03";
+     String REGISTER_ORG_CODE = "A01A01";
 
 	/** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
     Integer SC_INTERNAL_SERVER_ERROR_500 = 500;

+ 1 - 0
national-motion-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -104,6 +104,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/app/home/homeInfo", "anon");//APP首页接口
 //        filterChainDefinitionMap.put("/app/home/getMsg", "anon");//APP首页接口
         filterChainDefinitionMap.put("/app/user/loginByCode", "anon");//APP首页接口
+        filterChainDefinitionMap.put("/app/esign/signCallback", "anon");//APP首页接口
 
 //        filterChainDefinitionMap.put("/app/user/**", "anon");//小程序相关
 

+ 37 - 10
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/ESignApi.java

@@ -1,16 +1,16 @@
 package org.jeecg.modules.app.controller;
 
+import com.google.gson.JsonObject;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.parameters.RequestBody;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.app.esign.exception.EsignDemoException;
 import org.jeecg.modules.app.service.IESignService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.jeecg.modules.system.app.entity.AppContractSign;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -31,8 +31,8 @@ public class ESignApi {
      **/
     @GetMapping("/getUserIdentityInfo")
     @Operation(summary = "查询用户授权状态-APP")
-    public Result<Boolean> getUserIdentityInfo(@RequestParam("phoneNumber") @Schema(description="联系人手机号")String phoneNumber) throws EsignDemoException{
-        return Result.OK(iESignService.getUserIdentityInfo(phoneNumber));
+    public Result<Boolean> getUserIdentityInfo(@RequestParam("familyId") @Schema(description="使用人ID")String familyId) throws EsignDemoException{
+        return Result.OK(iESignService.getUserIdentityInfo(familyId));
     }
 
     /**
@@ -44,8 +44,8 @@ public class ESignApi {
      **/
     @GetMapping("/getAuthUrl")
     @Operation(summary = "用户获取授权链接-APP")
-    public Result<String> getAuthUrl(@RequestParam("phoneNumber") @Schema(description="联系人手机号")String phoneNumber) throws EsignDemoException{
-        return Result.OK(iESignService.getAuthUrl(phoneNumber));
+    public Result<String> getAuthUrl(@RequestParam("familyId") @Schema(description="使用人ID")String familyId) throws EsignDemoException{
+        return Result.OK(iESignService.getAuthUrl(familyId));
     }
 
     /**
@@ -70,7 +70,34 @@ public class ESignApi {
      **/
     @GetMapping("/createSign")
     @Operation(summary = "发起签署-APP")
-    public Result<List<String>> createSign(@RequestParam("orderCode") @Schema(description="订单编号")String orderCode) throws EsignDemoException{
-        return Result.OK(iESignService.createSign(orderCode));
+    public Result<String> createSign(@RequestParam("orderCode") @Schema(description="订单编号")String orderCode,
+                                     @RequestParam("familyId") @Schema(description="使用人ID")String familyId) throws EsignDemoException{
+        return Result.OK(iESignService.createSign(orderCode,familyId));
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 签署回调处理
+     * @Date 13:51 2025/8/6
+     * @Param
+     * @return
+     **/
+    @PostMapping("/signCallback")
+    @Operation(summary = "签署回调处理")
+    public Result<Boolean> signCallback(@RequestBody JsonObject jsonObject){
+        return Result.OK(iESignService.signCallback(jsonObject));
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 查询待签列表
+     * @Date 14:37 2025/8/6
+     * @Param
+     * @return
+     **/
+    @GetMapping("/queryWaitSignList")
+    @Operation(summary = "查询待签列表")
+    public Result<List<AppContractSign>> queryWaitSignList(@RequestParam("orderId") @Schema(description="订单ID")String orderId){
+        return Result.OK(iESignService.queryWaitSignList(orderId));
     }
 }

+ 3 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/auth/ESignAuth.java

@@ -9,6 +9,8 @@ import org.jeecg.modules.app.esign.exception.EsignDemoException;
 
 import java.util.Map;
 
+import static com.alibaba.dashscope.utils.JsonUtils.gson;
+
 /**
  * description 认证与授权服务
  * datetime 2022年8月10日上午09:43:24
@@ -26,7 +28,7 @@ public class ESignAuth extends Exception {
 	public static EsignHttpResponse getPsnAuthUrl(GetPsnAuthUrlDTO getPsnAuthUrlDTO) throws EsignDemoException {
 		String apiaddr="/v3/psn-auth-url";
 		//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
-		String jsonParm = getPsnAuthUrlDTO.toString();
+		String jsonParm = gson.toJson(getPsnAuthUrlDTO);
 		//请求方法
 		EsignRequestType requestType= EsignRequestType.POST;
 		//生成签名鉴权方式的的header

+ 23 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IESignService.java

@@ -1,9 +1,11 @@
 package org.jeecg.modules.app.service;
 
+import com.google.gson.JsonObject;
 import org.jeecg.modules.app.dto.SealInfoDTO;
 import org.jeecg.modules.app.esign.exception.EsignDemoException;
 import org.jeecg.modules.system.app.dto.AppContractInfoDTO;
 import org.jeecg.modules.system.app.entity.AppContractInfo;
+import org.jeecg.modules.system.app.entity.AppContractSign;
 
 import java.util.List;
 import java.util.Map;
@@ -16,7 +18,7 @@ public interface IESignService {
      * @Param phoneNumber
      * @return boolean
      **/
-    boolean getUserIdentityInfo(String phoneNumber) throws EsignDemoException;
+    boolean getUserIdentityInfo(String familyId) throws EsignDemoException;
 
     /**
      * @Author SheepHy
@@ -25,7 +27,7 @@ public interface IESignService {
      * @Param
      * @return
      **/
-    String getAuthUrl(String phoneNumber) throws EsignDemoException;
+    String getAuthUrl(String familyId) throws EsignDemoException;
 
 
     /**
@@ -63,7 +65,7 @@ public interface IESignService {
      * @Param
      * @return
      **/
-    List<String> createSign(String fileId) throws EsignDemoException;
+    String createSign(String orderCode, String familyId) throws EsignDemoException;
 
     /**
      * @Author SheepHy
@@ -137,4 +139,22 @@ public interface IESignService {
      * @return
      **/
     String templatePreviewUrl(String docTemplateId) throws EsignDemoException;
+
+    /**
+     * @Author SheepHy
+     * @Description 签署回调处理
+     * @Date 13:51 2025/8/6
+     * @Param
+     * @return
+     **/
+    Boolean signCallback(JsonObject jsonObject);
+
+    /**
+     * @Author SheepHy
+     * @Description 查询待签列表
+     * @Date 14:37 2025/8/6
+     * @Param
+     * @return
+     **/
+    List<AppContractSign> queryWaitSignList(String orderId);
 }

+ 63 - 43
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/ESignServiceImpl.java

@@ -25,7 +25,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
-import java.util.stream.Collectors;
 
 import static com.alibaba.dashscope.utils.JsonUtils.gson;
 import static org.jeecg.modules.app.esign.auth.ESignAuth.*;
@@ -51,7 +50,7 @@ public class ESignServiceImpl implements IESignService {
     private FamilyMembersMapper familyMembersMapper;
     @Resource
     private AppSiteMapper appSiteMapper;
-    private static final String NOTIFY_URL = "";
+    private static final String NOTIFY_URL = "http://o3878n6548.wicp.vip/jeecg-boot/app/esign/signCallback";
     private static final String REDIRECT_URL = "";
     private static final String NAME_MAIN_ORGANIZATION = "中数未来(海南)系统集成有限公司";
     private static final String MAIN_CARD_NUM = "91460105MAA9A6L75X";
@@ -61,26 +60,30 @@ public class ESignServiceImpl implements IESignService {
     private static final String[] ORG_AUTH_MODES = {"ORG_ALIPAY_CREDIT", "ORG_LEGALREP"};
     private static final int DEFAULT_EXPIRE_TIME = 86400000;
     @Override
-    public boolean getUserIdentityInfo(String phoneNumber) throws EsignDemoException {
-        EsignHttpResponse getPsnIdentityInfo = getPsnIdentityInfo(phoneNumber);
+    public boolean getUserIdentityInfo(String familyId) throws EsignDemoException {
+        FamilyMembers familyMembers = familyMembersMapper.selectById(familyId);
+        EsignHttpResponse getPsnIdentityInfo = getPsnIdentityInfo(familyMembers.getPhone());
         JsonObject getPsnIdentityInfoObject = gson.fromJson(getPsnIdentityInfo.getBody(), JsonObject.class);
+        if(getPsnIdentityInfoObject.get("code").getAsString().equals("1435203")) return false;
         String realnameStatus =getPsnIdentityInfoObject.getAsJsonObject("data").get("realnameStatus").getAsString();//授权状态authorizeUserInfo
         String psnId =getPsnIdentityInfoObject.getAsJsonObject("data").get("psnId").getAsString();
-        FamilyMembers familyMembers = familyMembersMapper.selectOne(Wrappers.<FamilyMembers>lambdaQuery().eq(FamilyMembers::getPhone, phoneNumber));
         familyMembers.setPsnId(psnId);
         familyMembersMapper.updateById(familyMembers);
         return realnameStatus.equals("1");
     }
 
     @Override
-    public String getAuthUrl(String phoneNumber) throws EsignDemoException {
+    public String getAuthUrl(String familyId) throws EsignDemoException {
+//        FamilyMembers familyMembers = familyMembersMapper.selectById(familyId);
         GetPsnAuthUrlDTO getPsnAuthUrlDTO = new GetPsnAuthUrlDTO();
-        GetPsnAuthUrlDTO.PsnAuthConfig pncAuthConfig = new GetPsnAuthUrlDTO.PsnAuthConfig().setPsnAccount(phoneNumber);
+//        GetPsnAuthUrlDTO.PsnAuthConfig pncAuthConfig = new GetPsnAuthUrlDTO.PsnAuthConfig().setPsnAccount(familyMembers.getPhone());
+        GetPsnAuthUrlDTO.PsnAuthConfig pncAuthConfig = new GetPsnAuthUrlDTO.PsnAuthConfig().setPsnAccount("17885674919");
         getPsnAuthUrlDTO.setPsnAuthConfig(pncAuthConfig);
         EsignHttpResponse getPsnAuthUrl = getPsnAuthUrl(getPsnAuthUrlDTO);
         JsonObject getPsnAuthUrlObject = gson.fromJson(getPsnAuthUrl.getBody(), JsonObject.class);
+        if(getPsnAuthUrlObject.get("code").getAsString().equals("1450005")) throw new JeecgBootException("当前用户已实名");
         JsonObject data = getPsnAuthUrlObject.getAsJsonObject("data");
-        return data.get("authUrl").getAsString();
+        return data.get("authShortUrl").getAsString();
     }
 
     @Override
@@ -159,40 +162,30 @@ public class ESignServiceImpl implements IESignService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<String> createSign(String orderCode){
-        List<String> signFlowIds = new ArrayList<>();
+    public String createSign(String orderCode, String familyId){
         AppOrder appOrder = orderMapper.selectOne(Wrappers.<AppOrder>lambdaQuery()
                 .eq(AppOrder::getOrderCode, orderCode));
 
-        List<String> familyIds = Arrays.asList(appOrder.getFamilyIds().split(","));
         AppContractInfo contractInfo = appAccountMapper.selectById(appOrder.getContractNo());
         SysDepart sysDepart = sysDepartMapper.selectOne(Wrappers.<SysDepart>lambdaQuery()
                 .eq(SysDepart::getOrgCode, appOrder.getOrgCode()));
 
-        // 预加载家庭成员信息
-        Map<String, FamilyMembers> familyMemberMap = familyIds.stream()
-                .map(familyMembersMapper::selectById)
-                .collect(Collectors.toMap(FamilyMembers::getId, fm -> fm));
 
-        // 构建签署流程
-        familyIds.forEach(familyId -> {
-            try {
-                FamilyMembers familyMembers = familyMemberMap.get(familyId);
-                JsonObject dto = buildSignFlowDto(contractInfo, sysDepart, familyMembers);
-
-                EsignHttpResponse response = createByFile(dto.toString());
-                String signFlowId = extractSignFlowId(response);
-
-                log.info("生成签署流程ID: {}", signFlowId);
-                signFlowIds.add(signFlowId);
-                saveSignFlowRecord(signFlowId, appOrder, familyId);
-            } catch (EsignDemoException e) {
-                log.error("签署流程创建失败,订单号: {}", orderCode, e);
-                throw new JeecgBootException(e.getMessage());
-            }
-        });
+        try {
+            FamilyMembers familyMembers = familyMembersMapper.selectById(familyId);
+            JsonObject dto = buildSignFlowDto(contractInfo, sysDepart, familyMembers);
+
+            EsignHttpResponse response = createByFile(dto.toString());
+            String signFlowId = extractSignFlowId(response);
+
+            log.info("生成签署流程ID: {}", signFlowId);
+            saveSignFlowRecord(signFlowId, appOrder, familyId);
+            return signFlowId;
+        } catch (EsignDemoException e) {
+            log.error("签署流程创建失败,订单号: {}", orderCode, e);
+            throw new JeecgBootException(e.getMessage());
+        }
 
-        return signFlowIds;
     }
     /**
      * 构建签署流程请求体
@@ -251,6 +244,7 @@ public class ESignServiceImpl implements IESignService {
 
         JsonObject transactor = new JsonObject();
         transactor.addProperty("psnId", familyMembers.getPsnId());
+//        transactor.addProperty("psnId", "630548cc4f954e7fad05210af02cee35");
         orgInitiator.add("transactor", transactor);
 
         signFlowInitiator.add("orgInitiator", orgInitiator);
@@ -410,6 +404,7 @@ public class ESignServiceImpl implements IESignService {
      */
     private String extractSignFlowId(EsignHttpResponse response) {
         JSONObject result = JSONObject.parseObject(response.getBody());
+        if (result.getString("code").equals("1435002")) throw new JeecgBootException("该使用人未授权");
         return result.getJSONObject("data").getString("signFlowId");
     }
 
@@ -417,16 +412,11 @@ public class ESignServiceImpl implements IESignService {
      * 保存签署流程记录
      */
     private void saveSignFlowRecord(String signFlowId, AppOrder appOrder, String familyId) {
-        String id = UUID.randomUUID().toString().replace("-", "");
-        AppContractSign record = new AppContractSign()
-                .setId(id)
-                .setSignFlowId(signFlowId)
-                .setOrderId(appOrder.getId())
-                .setFamilyId(familyId)
-                .setOrgCode(appOrder.getOrgCode())
-                .setCreateTime(new Date())
-                .setUpdateTime(new Date());
-        appContractSignMapper.insert(record);
+        AppContractSign appContractSign = appContractSignMapper.selectOne(Wrappers.<AppContractSign>lambdaQuery()
+                .eq(AppContractSign::getOrderId, appOrder.getId())
+                .eq(AppContractSign::getFamilyId, familyId));
+        appContractSign.setSignFlowId(signFlowId);
+        appContractSignMapper.updateById(appContractSign);
     }
 
     /**
@@ -653,6 +643,36 @@ public class ESignServiceImpl implements IESignService {
         return previewUrl;
     }
 
+    @Override
+    public Boolean signCallback(JsonObject jsonObject) {
+        try {
+            // 提取字段并验证
+            String action = jsonObject.get("action").getAsString();
+            String statusDesc = jsonObject.get("statusDescription").getAsString();
+            if("SIGN_FLOW_COMPLETE".equals(action) && "完成".equals(statusDesc)){
+                String signFlowId = jsonObject.get("signFlowId").getAsString();
+                AppContractSign appContractSign = appContractSignMapper.selectOne(Wrappers.<AppContractSign>lambdaQuery()
+                        .eq(AppContractSign::getSignFlowId, signFlowId));
+                appContractSign.setIsSign(1).setSignTime(new Date());
+                return appContractSignMapper.updateById(appContractSign) > 0;
+            }else {
+                return false;
+            }
+        } catch (Exception e) {
+            log.error( e.getMessage());
+            return false;
+        }
+    }
+
+    @Override
+    public List<AppContractSign> queryWaitSignList(String orderId) {
+        List<AppContractSign> appContractSigns = appContractSignMapper.selectList(Wrappers.<AppContractSign>lambdaQuery().eq(AppContractSign::getOrderId, orderId));
+        appContractSigns.forEach(a -> {
+            a.setFullName(familyMembersMapper.selectById(a.getFamilyId()).getFullName());
+        });
+        return appContractSigns;
+    }
+
     public String orgAuthorizedSeal(String orgId) throws EsignDemoException {
         // 使用传入的 orgId
         EsignHttpResponse orgAuthorizedSealList = orgAuthorizedSealList("585f3eabc65b42b1ad5ae56f4e2bdde6");

+ 22 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -78,6 +78,8 @@ public class OrderServiceImpl implements IOrderService {
     private AppCoursesPriceRulesMapper appCoursesPriceRulesMapper;
     @Resource
     private AppCoursesVerificationRecordMapper appCoursesVerificationRecordMapper;
+    @Resource
+    private AppContractSignMapper appContractSignMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -294,7 +296,6 @@ public class OrderServiceImpl implements IOrderService {
                     AppSitePlace appSitePlace = appSitePlaceMapper.selectById(priceRule.getSitePlaceId());
                     AppSite appSite = appSiteMapper.selectById(appSitePlace.getSiteId());
                     appOrder
-
                             .setPayType(3)
                             .setOrderStatus(2)
                             .setOrgCode(appSite.getOrgCode())
@@ -501,7 +502,8 @@ public class OrderServiceImpl implements IOrderService {
                 appOrder.setTenantId(appCourse.getTenantId());
 
                 //合同编号
-                AppContractInfo appContractInfo = appContractInfoMapper.selectOne(Wrappers.<AppContractInfo>lambdaQuery().eq(AppContractInfo::getOrgCode, appOrder.getOrgCode()));
+                AppContractInfo appContractInfo = appContractInfoMapper.selectOne(Wrappers.<AppContractInfo>lambdaQuery()
+                        .eq(AppContractInfo::getOrgCode, appOrder.getOrgCode()).eq(AppContractInfo::getDelFlag,0));
                 appOrder.setContractNo(appContractInfo.getId());
 
                 //订单总价(商品的售价总和)
@@ -627,7 +629,7 @@ public class OrderServiceImpl implements IOrderService {
         }
         appOrder.setPrice(totalPrice);
         appOrderMapper.insert(appOrder);
-
+        saveSignFlowRecord(appOrder);
         //todo 优化异步执行 -> 保存订单商品信息
         for (AppOrderProInfo appOrderProInfo : proInfoList) {
             appOrderProInfo
@@ -672,6 +674,23 @@ public class OrderServiceImpl implements IOrderService {
         return payForm;
     }
 
+    /**
+     * 保存签署流程记录
+     */
+    private void saveSignFlowRecord(AppOrder appOrder) {
+        List.of(appOrder.getFamilyIds().split(",")).forEach(a->{
+            String id = UUID.randomUUID().toString().replace("-", "");
+            AppContractSign record = new AppContractSign()
+                    .setId(id)
+                    .setOrderId(appOrder.getId())
+                    .setFamilyId(a)
+                    .setOrgCode(appOrder.getOrgCode())
+                    .setCreateTime(new Date())
+                    .setUpdateTime(new Date());
+            appContractSignMapper.insert(record);
+        });
+    }
+
     @Override
     public OrderVO.PreviewOrderPlaceGymnasiumNoFixation previewOrderPlaceGymnasiumNoFixation(String placeId) {
         return appSitePlaceMapper.previewOrderPlaceGymnasiumNoFixation(placeId);

+ 4 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppContractSign.java

@@ -1,9 +1,6 @@
 package org.jeecg.modules.system.app.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -50,4 +47,7 @@ public class AppContractSign {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @Schema(description = "更新时间;更新时间")
     private Date updateTime;
+    @TableField(exist = false)
+    @Schema(description = "姓名")
+    private String fullName;
 }

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSiteMapper.xml

@@ -4,7 +4,7 @@
     <select id="getPlaceList" resultType="org.jeecg.modules.app.vo.PlaceVO">
         SELECT
         b.id,
-        c.depart_name AS name,
+        b.name AS name,
         b.good_rate AS goodRate,
         b.address,
         b.category_id,

+ 0 - 10
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppCategoryServiceImpl.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.system.app.dto.AppCategoryDTO;
@@ -31,11 +30,8 @@ public class AppCategoryServiceImpl extends ServiceImpl<AppCategoryMapper, AppCa
 
     @Override
     public Boolean saveCategory(AppCategoryVO categoryVO) {
-        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         AppCategory category = new AppCategory();
         BeanUtils.copyProperties(categoryVO, category);
-        category.setOrgCode(loginUser.getOrgCode());
-        category.setTenantId(loginUser.getOrgId());
         int insert = baseMapper.insert(category);
         if (insert > 0) {
             return Boolean.TRUE;
@@ -45,10 +41,8 @@ public class AppCategoryServiceImpl extends ServiceImpl<AppCategoryMapper, AppCa
 
     @Override
     public Boolean editCategory(AppCategoryDTO categoryDTO) {
-        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         AppCategory selectedById = baseMapper.selectById(categoryDTO.getId());
         if (null==selectedById) throw new JeecgBootException("无此类目信息");
-        checkPermission(selectedById, loginUser);
         AppCategory category = new AppCategory();
         BeanUtils.copyProperties(categoryDTO, category);
         int update = baseMapper.updateById(category);
@@ -60,10 +54,8 @@ public class AppCategoryServiceImpl extends ServiceImpl<AppCategoryMapper, AppCa
 
     @Override
     public Boolean deleteCategory(String id) {
-        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         AppCategory selectedById = baseMapper.selectById(id);
         if (null==selectedById) throw new JeecgBootException("无此类目信息");
-        checkPermission(selectedById, loginUser);
         int delete = baseMapper.deleteById(id);
         if (delete > 0) {
             return Boolean.TRUE;
@@ -73,10 +65,8 @@ public class AppCategoryServiceImpl extends ServiceImpl<AppCategoryMapper, AppCa
 
     @Override
     public IPage<AppCategoryVO> queryCategoryList(AppCategoryDTO dto) {
-        LoginUser loginUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
         Page<AppCategory> page = new Page<>(dto.getPageNum(), dto.getPageSize());
         LambdaQueryWrapper<AppCategory> wrapper = Wrappers.<AppCategory>lambdaQuery()
-                .eq(AppCategory::getOrgCode,loginUser.getOrgCode())
                 .like(StringUtils.isNotBlank(dto.getName()), AppCategory::getName, dto.getName()).last("order by sort");
         IPage<AppCategory> resultPage = baseMapper.selectPage(page, wrapper);
         return resultPage.convert(record -> {