TRX 1 år sedan
förälder
incheckning
94cde82ce7
18 ändrade filer med 367 tillägg och 14 borttagningar
  1. 23 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/base/ProjectOidParam.java
  2. 3 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationSearchParam.java
  3. 11 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/ProjectOrgModel.java
  4. 31 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectWeChatInfoModel.java
  5. 35 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectWeChatInfoParam.java
  6. 9 2
      FullCardClient/src/main/java/com/zhongshu/card/client/service/org/OrganizationService.java
  7. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/OrganizationController.java
  8. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectPaySettingController.java
  9. 58 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectWeChatInfoController.java
  10. 2 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectPaySettingDao.java
  11. 18 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectWeChatInfoDao.java
  12. 7 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectPaySetting.java
  13. 45 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectWeChatInfo.java
  14. 3 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java
  15. 2 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java
  16. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/PaymentSettingService.java
  17. 3 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectPaySettingServiceImpl.java
  18. 114 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectWeChatInfoService.java

+ 23 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/base/ProjectOidParam.java

@@ -0,0 +1,23 @@
+package com.zhongshu.card.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.checkerframework.common.aliasing.qual.NonLeaked;
+
+/**
+ * 项目oid参数模型
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectOidParam {
+
+    @Schema(description = "项目oid")
+    private String projectOid;
+
+}

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationSearchParam.java

@@ -55,4 +55,7 @@ public class OrganizationSearchParam extends SuperSearch {
 
     @Schema(description = "id集合", hidden = true)
     private List<String> ids;
+
+    @Schema(description = "管理员userId搜索,当用户不是平台管理员时,")
+    private String managerUserId;
 }

+ 11 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/ProjectOrgModel.java

@@ -9,6 +9,17 @@ import lombok.Data;
  */
 @Data
 public class ProjectOrgModel extends OrganizationModel {
+
     @Schema(description = "学校数量")
     private Long schoolNumber = 0L;
+
+    @Schema(description = "项目人数")
+    private Long userNumber = 0L;
+
+    @Schema(description = "设备总数")
+    private Long deviceNumber = 0L;
+
+    @Schema(description = "在线设备数量")
+    private Long onLineNumber = 0L;
+
 }

+ 31 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectWeChatInfoModel.java

@@ -0,0 +1,31 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectWeChatInfoModel {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "项目ID")
+    private String projectOid;
+
+    @Schema(description = "小程序名称")
+    private String appName;
+
+    @Schema(description = "appId")
+    private String appId;
+
+    @Schema(description = "微信小程序secret")
+    private String appSecret;
+}

+ 35 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectWeChatInfoParam.java

@@ -0,0 +1,35 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectWeChatInfoParam {
+
+    @NotEmpty
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "小程序名称")
+    private String appName;
+
+    @Schema(description = "appId")
+    @NotEmpty
+    private String appId;
+
+    @Schema(description = "微信小程序secret")
+    @NotEmpty
+    private String appSecret;
+
+    @Schema(description = "")
+    private String remark;
+}

+ 9 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/service/org/OrganizationService.java

@@ -19,6 +19,15 @@ public interface OrganizationService {
      */
     ResultContent saveProjectInfo(ProjectSaveParam param);
 
+    /**
+     * 当前用户能 查看的项目列表
+     *
+     * @param param
+     * @param pageable
+     * @return
+     */
+    ResultContent<Page<ProjectOrgModel>> pageProject(OrganizationSearchParam param, Pageable pageable);
+
     /**
      * 通用添加结构信息
      *
@@ -79,8 +88,6 @@ public interface OrganizationService {
 
     ResultContent<OrganizationModel> getOrgDetail(String oid);
 
-    ResultContent<Page<OrganizationModel>> pageProject(OrganizationSearchParam param, Pageable pageable);
-
     // 查询可用的项目列表
     ResultContent<List<OrganizationModel>> getProjectList();
 

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/OrganizationController.java

@@ -44,7 +44,7 @@ public class OrganizationController {
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
     @Operation(summary = "项目列表-分页查询", description = "项目列表-分页查询")
     @RequestMapping(value = {"pageProject"}, method = {RequestMethod.POST})
-    public ResultContent<Page<OrganizationModel>> pageProject(
+    public ResultContent<Page<ProjectOrgModel>> pageProject(
             @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
             @Parameter(required = false) OrganizationSearchParam param) {
         param.setAuthType(AuthType.Project);

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/payment/ProjectPaySettingController.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectPaySettingController.java

@@ -1,4 +1,4 @@
-package com.zhongshu.card.server.core.controller.payment;
+package com.zhongshu.card.server.core.controller.projectAbout;
 
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;

+ 58 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectWeChatInfoController.java

@@ -0,0 +1,58 @@
+package com.zhongshu.card.server.core.controller.projectAbout;
+
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
+import com.zhongshu.card.client.model.payment.paySetting.*;
+import com.zhongshu.card.client.model.projectAbout.ProjectWeChatInfoModel;
+import com.zhongshu.card.client.model.projectAbout.ProjectWeChatInfoParam;
+import com.zhongshu.card.client.service.feign.ProjectPaySettingService;
+import com.zhongshu.card.server.core.service.projectAbout.ProjectWeChatInfoService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * 项目的微信小程序设置
+ *
+ * @author TRX
+ * @date 2024/7/26
+ */
+@RestController
+@RequestMapping("/project/projectWeChatInfo")
+@Tag(name = "项目-微信小程序设置")
+public class ProjectWeChatInfoController {
+
+    @Autowired
+    ProjectWeChatInfoService projectWeChatInfoService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "保存项目的小程序类型", description = "保存项目的小程序类型")
+    @RequestMapping(value = "saveProjectWeChatInfo", method = {RequestMethod.POST})
+    public ResultContent saveProjectWeChatInfo(@RequestBody @Valid ProjectWeChatInfoParam param) {
+        return projectWeChatInfoService.saveProjectWeChatInfo(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到项目的小程序配置", description = "得到项目的小程序配置")
+    @RequestMapping(value = "getProjectWeChatInfo", method = {RequestMethod.POST})
+    public ResultContent<ProjectWeChatInfoModel> getProjectWeChatInfo(@RequestBody ProjectPaySettingSearch param) {
+        return projectWeChatInfoService.getProjectWeChatInfo(param.getProjectOid());
+    }
+
+    //------------------------------feign start -----------------------
+    @Operation(hidden = true, summary = "根据小程序appId得到配置", description = "根据小程序appId得到配置")
+    @RequestMapping(value = "manager/getProjectWeChatInfoByAppId", method = {RequestMethod.POST})
+    public ResultContent<ProjectWeChatInfoModel> getProjectWeChatInfoByAppId(
+            @RequestBody ProjectWxPayParam param) {
+        return projectWeChatInfoService.getProjectWeChatInfoByAppId(param.getAppId());
+    }
+
+}

+ 2 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/ProjectPaySettingDao.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectPaySettingDao.java

@@ -1,8 +1,7 @@
-package com.zhongshu.card.server.core.dao.payment;
+package com.zhongshu.card.server.core.dao.projectAbout;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
-import com.zhongshu.card.server.core.domain.payment.ProjectPaySetting;
-import com.zhongshu.card.server.core.domain.payment.WxPayConfig;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectPaySetting;
 
 public interface ProjectPaySettingDao extends MongoDao<ProjectPaySetting> {
 

+ 18 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectWeChatInfoDao.java

@@ -0,0 +1,18 @@
+package com.zhongshu.card.server.core.dao.projectAbout;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectPaySetting;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectWeChatInfo;
+
+/**
+ * 项目的微信设置
+ */
+public interface ProjectWeChatInfoDao extends MongoDao<ProjectWeChatInfo> {
+
+    ProjectWeChatInfo findTopById(String id);
+
+    ProjectWeChatInfo findTopByProjectOid(String projectOid);
+
+    ProjectWeChatInfo findTopByAppId(String appId);
+
+}

+ 7 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/ProjectPaySetting.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectPaySetting.java

@@ -1,12 +1,14 @@
-package com.zhongshu.card.server.core.domain.payment;
+package com.zhongshu.card.server.core.domain.projectAbout;
 
 import com.github.microservice.models.type.PaymentType;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
+import com.zhongshu.card.server.core.domain.org.Organization;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -22,6 +24,10 @@ import org.springframework.data.mongodb.core.mapping.Document;
 @NoArgsConstructor
 public class ProjectPaySetting extends SuperMain {
 
+    @Schema(description = "项目信息")
+    @DBRef(lazy = true)
+    private Organization projectInfo;
+
     @Schema(description = "项目名称")
     private String projectName;
 

+ 45 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectWeChatInfo.java

@@ -0,0 +1,45 @@
+package com.zhongshu.card.server.core.domain.projectAbout;
+
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 项目相关的小程序 appId 等设置
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@Builder
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectWeChatInfo extends SuperMain {
+
+    @Schema(description = "项目信息")
+    @DBRef(lazy = true)
+    private Organization projectInfo;
+
+    @Schema(description = "项目名称")
+    private String projectName;
+
+    @Schema(description = "项目编码")
+    private String projectCode;
+
+    @Schema(description = "小程序名称")
+    private String appName;
+
+    @Schema(description = "appId")
+    private String appId;
+
+    @Schema(description = "微信小程序secret")
+    private String appSecret;
+
+}

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java

@@ -1090,6 +1090,9 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
             // 统计学校数量
             Long number = organizationRelationDao.countByRelOrganizationAndRelationType(entity, OrganizationRelationType.SchoolToProject);
             model.setSchoolNumber(number);
+
+            // 在线设备数量
+
         }
         return model;
     }

+ 2 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java

@@ -29,7 +29,7 @@ import com.zhongshu.card.client.type.school.CardState;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
 import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
-import com.zhongshu.card.server.core.dao.payment.ProjectPaySettingDao;
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectPaySettingDao;
 import com.zhongshu.card.server.core.dao.payment.WalletDao;
 import com.zhongshu.card.server.core.dao.payment.WalletRechargeDao;
 import com.zhongshu.card.server.core.dao.school.CardInfoDao;
@@ -40,7 +40,7 @@ import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationRelation;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
-import com.zhongshu.card.server.core.domain.payment.ProjectPaySetting;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectPaySetting;
 import com.zhongshu.card.server.core.domain.school.CardInfo;
 import com.zhongshu.card.server.core.domain.school.DeviceBind;
 import com.zhongshu.card.server.core.httpRequest.ApiRequestService;
@@ -49,7 +49,6 @@ import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
 import com.zhongshu.card.server.core.service.user.OperationLogsService;
 import com.zhongshu.card.server.core.util.*;
-import com.zhongshu.payment.client.model.WalletModel;
 import com.zhongshu.payment.client.model.param.AmountUpdateParam;
 import com.zhongshu.payment.client.pay.service.OrderPayFeignService;
 import com.zhongshu.payment.client.pay.service.WalletFeignService;

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/PaymentSettingService.java

@@ -121,6 +121,7 @@ public class PaymentSettingService extends SuperService {
 
     /**
      * 组装密码
+     *
      * @param userId
      * @param password
      * @return

+ 3 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ProjectPaySettingServiceImpl.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectPaySettingServiceImpl.java

@@ -1,4 +1,4 @@
-package com.zhongshu.card.server.core.service.payment;
+package com.zhongshu.card.server.core.service.projectAbout;
 
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
@@ -6,10 +6,10 @@ import com.zhongshu.card.client.model.payment.paySetting.*;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.service.feign.ProjectPaySettingService;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
-import com.zhongshu.card.server.core.dao.payment.ProjectPaySettingDao;
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectPaySettingDao;
 import com.zhongshu.card.server.core.dao.payment.WxPayConfigDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
-import com.zhongshu.card.server.core.domain.payment.ProjectPaySetting;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectPaySetting;
 import com.zhongshu.card.server.core.domain.payment.WxPayConfig;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.util.BeanUtils;

+ 114 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectWeChatInfoService.java

@@ -0,0 +1,114 @@
+package com.zhongshu.card.server.core.service.projectAbout;
+
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.projectAbout.ProjectWeChatInfoModel;
+import com.zhongshu.card.client.model.projectAbout.ProjectWeChatInfoParam;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectWeChatInfoDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectWeChatInfo;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目的 微信管理信息设置
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Slf4j
+@Service
+public class ProjectWeChatInfoService extends SuperService {
+
+    @Autowired
+    ProjectWeChatInfoDao projectWeChatInfoDao;
+
+    @Autowired
+    OrganizationDao organizationDao;
+
+    /**
+     * 保存信息
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent saveProjectWeChatInfo(ProjectWeChatInfoParam param) {
+        String projectOid = param.getProjectOid();
+        Organization projectInfo = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(projectInfo)) {
+            return ResultContent.buildFail(String.format("项目oid不存在:%s", projectOid));
+        }
+        ProjectWeChatInfo projectWeChatInfo = projectWeChatInfoDao.findTopByProjectOid(projectOid);
+        if (ObjectUtils.isEmpty(projectWeChatInfo)) {
+            projectWeChatInfo = new ProjectWeChatInfo();
+            projectWeChatInfo.setIsDelete(Boolean.FALSE);
+            initEntityNoOid(projectWeChatInfo);
+        } else {
+            initUpdateEntity(projectWeChatInfo);
+        }
+        BeanUtils.copyProperties(param, projectWeChatInfo);
+        projectWeChatInfo.setOid(projectOid);
+        projectWeChatInfo.setAboutOid(projectOid);
+        projectWeChatInfo.setAboutAuthType(projectInfo.getAuthType());
+        projectWeChatInfoDao.save(projectWeChatInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 得到项目设置
+     *
+     * @param projectOid
+     * @return
+     */
+    public ResultContent<ProjectWeChatInfoModel> getProjectWeChatInfo(String projectOid) {
+        ProjectWeChatInfo projectWeChatInfo = projectWeChatInfoDao.findTopByProjectOid(projectOid);
+        ProjectWeChatInfoModel model = null;
+        if (ObjectUtils.isNotEmpty(projectWeChatInfo)) {
+            model = toModel(projectWeChatInfo);
+        }
+        return ResultContent.buildSuccess(model);
+    }
+
+    /**
+     * 根据appId查询对应的项目信息 (有可能appId 对应对个配置)
+     *
+     * @param appId
+     * @return
+     */
+    public ResultContent<ProjectWeChatInfoModel> getProjectWeChatInfoByAppId(String appId) {
+        ProjectWeChatInfo projectWeChatInfo = projectWeChatInfoDao.findTopByAppId(appId);
+        ProjectWeChatInfoModel model = null;
+        if (ObjectUtils.isNotEmpty(projectWeChatInfo)) {
+            model = toModel(projectWeChatInfo);
+        }
+        return ResultContent.buildSuccess(model);
+    }
+
+    /**
+     * 项目是否完成微信配置
+     *
+     * @param projectOid
+     * @return
+     */
+    public boolean isFinishConfig(String projectOid) {
+        ProjectWeChatInfo projectWeChatInfo = projectWeChatInfoDao.findTopByProjectOid(projectOid);
+        if (ObjectUtils.isNotEmpty(projectWeChatInfo)) {
+            return true;
+        }
+        return false;
+    }
+
+    public ProjectWeChatInfoModel toModel(ProjectWeChatInfo entity) {
+        ProjectWeChatInfoModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new ProjectWeChatInfoModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}