Browse Source

第三方代码上传

dev
zhaoqifeng 5 years ago
parent
commit
c1de901c9a
  1. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  2. 5
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeAuditResultDTO.java
  3. 7
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java
  4. 23
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java
  5. 6
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeUploadFormDTO.java
  6. 126
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java
  7. 46
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/UploadListFormDTO.java
  8. 34
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateListResultDTO.java
  9. 62
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/UploadListResultDTO.java
  10. 6
      epmet-module/epmet-third/epmet-third-server/pom.xml
  11. 49
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/CodeConstant.java
  12. 57
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java
  13. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java
  14. 9
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeAuditResultDao.java
  15. 13
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeCustomerDao.java
  16. 10
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/ComponentAccessTokenDao.java
  17. 5
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeAuditResultEntity.java
  18. 7
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java
  19. 10
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeAuditResultService.java
  20. 10
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeCustomerService.java
  21. 53
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeService.java
  22. 5
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeAuditResultServiceImpl.java
  23. 12
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeCustomerServiceImpl.java
  24. 164
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
  25. 6
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxMaAuditStatusResult.java
  26. 32
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxMaTemplateListResult.java
  27. 36
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxMaTemplateResult.java
  28. 149
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java
  29. 345
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java
  30. 9
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml
  31. 17
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeAuditResultDao.xml
  32. 53
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeCustomerDao.xml
  33. 7
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ComponentAccessTokenDao.xml
  34. 10
      epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/OperCrmOpenFeignClient.java
  35. 8
      epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/fallback/OperCrmOpenFeignClientFallback.java

7
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -481,4 +481,11 @@ public class DateUtils {
cale.set(Calendar.DAY_OF_MONTH, 0);
return cale.getTime();
}
public static String formatTimestamp(Long timestamp, String pattern) {
//设置格式
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(timestamp);
}
}

5
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeAuditResultDTO.java

@ -63,6 +63,11 @@ public class CodeAuditResultDTO implements Serializable {
*/
private String reason;
/**
* 当审核被拒绝时会返回审核失败的小程序截图示例 | 分隔的 media_id 的列表
*/
private String screenShot;
/**
* 乐观锁
*/

7
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java

@ -48,11 +48,6 @@ public class CodeCustomerDTO implements Serializable {
*/
private String customerName;
/**
* 小程序接口调用令牌ID
*/
private String accessTokenId;
/**
* 模板ID
*/
@ -61,7 +56,7 @@ public class CodeCustomerDTO implements Serializable {
/**
* 小程序类型 居民端resi,工作端work
*/
private String type;
private String clientType;
/**
* APPID

23
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/14 17:50
*/
@Data
public class CodeCommonFormDTO implements Serializable {
private static final long serialVersionUID = -8923691903900141713L;
/**
* 客户ID
*/
private String customerId;
/**
* 代码ID
*/
private String codeId;
}

6
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeUploadFormDTO.java

@ -15,14 +15,10 @@ import java.io.Serializable;
public class CodeUploadFormDTO implements Serializable {
private static final long serialVersionUID = 1295337818281424509L;
/**
* 小程序接口调用令牌ID
*/
private String accessTokenId;
/**
* 小程序类型 居民端resi 工作段work
*/
private String type;
private String clientType;
/**
* 客户ID
*/

126
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java

@ -0,0 +1,126 @@
package com.epmet.dto.form;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/14 16:37
*/
@Data
public class SubmitAuditFormDTO implements Serializable {
private static final long serialVersionUID = -2136272127561529025L;
/**
* 上传代码ID
*/
private String codeId;
/**
* 小程序版本说明和功能解释
*/
private String versionDesc;
/**
* 反馈内容至多 200
*/
private String feedbackInfo;
/**
* | 分割的 media_id 列表至多 5 张图片, 可以通过新增临时素材接口上传而得到
*/
private String feedbackStuff;
/**
* 审核项列表选填至多填写 5
*/
private List<ItemListBean> itemList;
/**
* 预览信息小程序页面截图和操作录屏
*/
private List<PreviewInfoBean> previewInfo;
/**
* 用户生成内容场景UGC信息安全声明
*/
private List<UgcDeclareBean> ugcDeclare;
@NoArgsConstructor
@Data
private static class ItemListBean {
/**
* 小程序的页面可通过获取小程序的页面列表接口获得
*/
private String address;
/**
* 小程序的标签用空格分隔标签至多 10 标签长度至多 20
*/
private String tag;
/**
* 一级类目名称
*/
private String firstClass;
/**
* 二级类目名称
*/
private String secondClass;
/**
* 三级类目名称
*/
private String thirdClass;
/**
* 一级类目的 ID
*/
private String firstId;
/**
* 二级类目的 ID
*/
private String secondId;
/**
* 三级类目的 ID
*/
private String thirdId;
/**
* 小程序页面的标题,标题长度至多 32
*/
private String title;
}
@NoArgsConstructor
@Data
private static class PreviewInfoBean {
/**
* 录屏mediaid列表可以通过提审素材上传接口获得
*/
private List<String> videoIdList;
/**
* 截屏mediaid列表可以通过提审素材上传接口获得
*/
private List<String> picIdList;
}
@NoArgsConstructor
@Data
private static class UgcDeclareBean {
/**
* UGC场景 0,不涉及用户生成内容, 1.用户资料,2.图片,3.视频,4.文本,5其他, 可多选,当scene填0时无需填写下列字段
*/
private List<Integer> scene;
/**
* 当scene选其他时的说明,不超时256字
*/
private String otherSceneDesc;
/**
* 内容安全机制 1.使用平台建议的内容安全API,2.使用其他的内容审核产品,3.通过人工审核把关,4.未做内容审核把关
*/
private List<Integer> method;
/**
* 是否有审核团队, 0.,1.,默认0
*/
private Integer hasAuditTeam;
/**
* 说明当前对UGC内容的审核机制,不超过256字
*/
private String auditDesc;
}
}

46
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/UploadListFormDTO.java

@ -0,0 +1,46 @@
package com.epmet.dto.form;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/14 15:57
*/
@NoArgsConstructor
@Data
public class UploadListFormDTO implements Serializable {
private static final long serialVersionUID = 5733465036099223190L;
/**
* 客户ID
*/
private String customerId;
/**
* 小程序类型 居民端resi工作端work
*/
private String clientType;
/**
* 状态
*/
private String status;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 页数
*/
private Integer page;
/**
* 页面条数
*/
private Integer limit;
}

34
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateListResultDTO.java

@ -0,0 +1,34 @@
package com.epmet.dto.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/14 15:22
*/
@NoArgsConstructor
@Data
public class TemplateListResultDTO implements Serializable {
private static final long serialVersionUID = -5545336708096791516L;
/**
* 模板 id
*/
private String templateId;
/**
* 模板描述
*/
private String userDesc;
/**
* 模板版本号
*/
private String userVersion;
/**
* 模板创建时间yyyy-mm-dd
*/
private String createTime;
}

62
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/UploadListResultDTO.java

@ -0,0 +1,62 @@
package com.epmet.dto.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/14 16:20
*/
@NoArgsConstructor
@Data
public class UploadListResultDTO implements Serializable {
private static final long serialVersionUID = -8110308954072076978L;
/**
* 代码ID
*/
private String id;
/**
* 客户名
*/
private String customerId;
/**
* 客户名
*/
private String customerName;
/**
* 居民端resi 工作端work
*/
private String clientType;
/**
* 代码描述
*/
private String codeInfo;
/**
* 版本号
*/
private String version;
/**
* 状态 未审核:unaudited审核中:auditing审核成功audit_success审核被拒绝audit_failed已撤回:withdrawn审核延后:delay发布成功release_success, 发布失败release_failed
*/
private String status;
/**
* 上传时间
*/
private String uploadTime;
/**
* 审核ID
*/
private String auditId;
/**
* 小程序APP ID
*/
private String appId;
/**
* 提交审核时间
*/
private String auditTime;
}

6
epmet-module/epmet-third/epmet-third-server/pom.xml

@ -129,6 +129,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>oper-crm-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

49
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/CodeConstant.java

@ -0,0 +1,49 @@
package com.epmet.constant;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/15 14:39
*/
public interface CodeConstant {
/**
* 居民端
*/
String RESI = "resi";
/**
* 工作端
*/
String WORK = "work";
/**
* 未审核
*/
String UNAUDITED = "unaudited";
/**
* 审核中
*/
String AUDITING = "auditing";
/**
* 审核成功
*/
String AUDIT_SUCCESS = "audit_success";
/**
* 审核被拒绝
*/
String AUDIT_FAILED = "audit_failed";
/**
* 已撤回
*/
String WITHDRAWN = "withdrawn";
/**
* 审核延后
*/
String DELAY = "delay";
/**
* 发布成功
*/
String RELEASE_SUCCESS = "release_success";
/**
* 发布失败
*/
String RELEASE_FAILED = "release_failed";
}

57
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java

@ -1,12 +1,20 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.CodeCommonFormDTO;
import com.epmet.dto.form.CodeUploadFormDTO;
import com.epmet.dto.form.SubmitAuditFormDTO;
import com.epmet.dto.form.UploadListFormDTO;
import com.epmet.dto.result.TemplateListResultDTO;
import com.epmet.dto.result.UploadListResultDTO;
import oracle.jdbc.proxy.annotation.Post;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author zhaoqifeng
* @dscription 代码管理
@ -16,15 +24,62 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("code")
public class CodeController {
/**
* 获取代码模板列表
* @author zhaoqifeng
* @date 2020/7/14 15:10
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("templatelist")
public Result<List<TemplateListResultDTO>> templateList() {
return null;
}
/**
* 代码上传
* @author zhaoqifeng
* @date 2020/7/9 14:23
* @param
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("upload")
public Result upload(@RequestBody CodeUploadFormDTO formDTO) {
return new Result<>();
}
/**
* 已上传代码列表
* @author zhaoqifeng
* @date 2020/7/14 16:30
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.UploadListResultDTO>>
*/
@PostMapping("uploadlist")
public Result<List<UploadListResultDTO>> uploadList(@RequestBody UploadListFormDTO formDTO) {
return new Result<>();
}
/**
* 提交审核
* @author zhaoqifeng
* @date 2020/7/14 16:40
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("audit")
public Result submitAudit(@RequestBody SubmitAuditFormDTO formDTO) {
return new Result<>();
}
/**
* 审核撤回
* @author zhaoqifeng
* @date 2020/7/14 17:52
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("undo")
public Result undo(@RequestBody CodeCommonFormDTO formDTO) {
return new Result<>();
}
}

14
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.AuthorizationInfoDTO;
import com.epmet.dto.form.AuthorizationInfoFormDTO;
import com.epmet.dto.form.AuthorizerAccessTokenFormDTO;
import com.epmet.dto.result.WillOverDueResultDTO;
@ -48,6 +49,17 @@ public interface AuthorizationInfoDao extends BaseDao<AuthorizationInfoEntity> {
* @param customerId
* @author zxc
*/
void updateOldAuthorizationInfo(@Param("customerId")String customerId);
/**
* 根据客户ID客户端类型获取授权信息
* @author zhaoqifeng
* @date 2020/7/15 14:08
* @param customerId 客户ID
* @param clientType 客户端类型
* @return com.epmet.dto.AuthorizationInfoDTO
*/
AuthorizationInfoDTO getAuthInfoByCustomer(@Param("customerId") String customerId, @Param("clientType") String clientType);
void updateOldAuthorizationInfo(@Param("customerId")String customerId,@Param("clientType")String clientType);
/**
@ -70,5 +82,5 @@ public interface AuthorizationInfoDao extends BaseDao<AuthorizationInfoEntity> {
* @author zxc
*/
void updateOldAuthorizerAccessToken(@Param("customerId")String customerId,@Param("clientType")String clientType);
}

9
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeAuditResultDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CodeAuditResultDTO;
import com.epmet.entity.CodeAuditResultEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -30,6 +31,14 @@ import org.apache.ibatis.annotations.Param;
*/
@Mapper
public interface CodeAuditResultDao extends BaseDao<CodeAuditResultEntity> {
/**
* 获取审核结果信息
* @author zhaoqifeng
* @date 2020/7/15 17:10
* @param codeId
* @return com.epmet.dto.CodeAuditResultDTO
*/
CodeAuditResultDTO selectAuditResultByCodeId(@Param("codeId") String codeId);
/**
* @Description 更新 代码审核结果中的审核状态

13
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeCustomerDao.java

@ -18,12 +18,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.UploadListFormDTO;
import com.epmet.dto.result.UploadListResultDTO;
import com.epmet.dto.form.CodeAuditRecordFormDTO;
import com.epmet.dto.result.TemplateAndAppIdResultDTO;
import com.epmet.entity.CodeCustomerEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 客户代码关联表
*
@ -32,6 +36,15 @@ import org.apache.ibatis.annotations.Param;
*/
@Mapper
public interface CodeCustomerDao extends BaseDao<CodeCustomerEntity> {
/**
* 获取上传代码列表
*
* @param formDTO
* @return java.util.List<com.epmet.dto.result.UploadListResultDTO>
* @author zhaoqifeng
* @date 2020/7/15 15:22
*/
List<UploadListResultDTO> selectCodeList(UploadListFormDTO formDTO);
/**
* @Description 根据客户id和客户端类型获取 代码模板ID和授权方AppId

10
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/ComponentAccessTokenDao.java

@ -60,5 +60,13 @@ public interface ComponentAccessTokenDao extends BaseDao<ComponentAccessTokenEnt
* @author zxc
*/
Integer selectWillOverTokenCount();
/**
* 获取Component Access Token
* @author zhaoqifeng
* @date 2020/7/15 10:00
* @return java.lang.String
*/
String getComponentAccessToken();
}

5
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeAuditResultEntity.java

@ -63,4 +63,9 @@ public class CodeAuditResultEntity extends BaseEpmetEntity {
*/
private String reason;
/**
* 当审核被拒绝时会返回审核失败的小程序截图示例 | 分隔的 media_id 的列表
*/
private String screenShot;
}

7
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java

@ -48,11 +48,6 @@ public class CodeCustomerEntity extends BaseEpmetEntity {
*/
private String customerName;
/**
* 小程序接口调用令牌ID
*/
private String accessTokenId;
/**
* 模板ID
*/
@ -61,7 +56,7 @@ public class CodeCustomerEntity extends BaseEpmetEntity {
/**
* 小程序类型 居民端resi,工作端work
*/
private String type;
private String clientType;
/**
* APPID

10
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeAuditResultService.java

@ -92,4 +92,14 @@ public interface CodeAuditResultService extends BaseService<CodeAuditResultEntit
* @date 2020-07-09
*/
void delete(String[] ids);
/**
* 获取审核结果信息
*
* @param codeId
* @return com.epmet.dto.CodeAuditResultDTO
* @author zhaoqifeng
* @date 2020/7/15 17:13
*/
CodeAuditResultDTO getAuditResultByCodeId(String codeId);
}

10
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeCustomerService.java

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.CodeCustomerDTO;
import com.epmet.dto.form.UploadListFormDTO;
import com.epmet.entity.CodeCustomerEntity;
import java.util.List;
@ -92,4 +93,13 @@ public interface CodeCustomerService extends BaseService<CodeCustomerEntity> {
* @date 2020-07-09
*/
void delete(String[] ids);
/**
* 获取上传代码列表
* @author zhaoqifeng
* @date 2020/7/15 15:14
* @param formDTO
* @return com.epmet.commons.tools.page.PageData
*/
PageData getCodeList(UploadListFormDTO formDTO);
}

53
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeService.java

@ -1,5 +1,13 @@
package com.epmet.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.CodeCommonFormDTO;
import com.epmet.dto.form.CodeUploadFormDTO;
import com.epmet.dto.form.SubmitAuditFormDTO;
import com.epmet.dto.form.UploadListFormDTO;
import com.epmet.dto.result.TemplateListResultDTO;
import com.epmet.dto.result.UploadListResultDTO;
import java.util.List;
/**
@ -9,4 +17,49 @@ import java.util.List;
*/
public interface CodeService {
/**
* 获取代码模板列表
*
* @return java.util.List < com.epmet.dto.result.TemplateListResultDTO>
* @author zhaoqifeng
* @date 2020/7/14 18:15
*/
List<TemplateListResultDTO> templateList();
/**
* 代码上传
*
* @param formDTO
* @author zhaoqifeng
* @date 2020/7/14 18:15
*/
void upload(CodeUploadFormDTO formDTO);
/**
* 已上传代码列表
*
* @param formDTO
* @return java.util.List < com.epmet.dto.result.UploadListResultDTO>
* @author zhaoqifeng
* @date 2020/7/14 18:15
*/
PageData uploadList(UploadListFormDTO formDTO);
/**
* 提交审核
*
* @param formDTO
* @author zhaoqifeng
* @date 2020/7/14 18:15
*/
void submitAudit(SubmitAuditFormDTO formDTO);
/**
* 审核撤回
*
* @param formDTO
* @author zhaoqifeng
* @date 2020/7/14 18:15
*/
void undo(CodeCommonFormDTO formDTO);
}

5
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeAuditResultServiceImpl.java

@ -101,4 +101,9 @@ public class CodeAuditResultServiceImpl extends BaseServiceImpl<CodeAuditResultD
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public CodeAuditResultDTO getAuditResultByCodeId(String codeId) {
return baseDao.selectAuditResultByCodeId(codeId);
}
}

12
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeCustomerServiceImpl.java

@ -25,9 +25,13 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.CodeCustomerDao;
import com.epmet.dto.CodeCustomerDTO;
import com.epmet.dto.form.UploadListFormDTO;
import com.epmet.dto.result.UploadListResultDTO;
import com.epmet.entity.CodeCustomerEntity;
import com.epmet.redis.CodeCustomerRedis;
import com.epmet.service.CodeCustomerService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -101,4 +105,12 @@ public class CodeCustomerServiceImpl extends BaseServiceImpl<CodeCustomerDao, Co
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public PageData getCodeList(UploadListFormDTO formDTO) {
PageHelper.startPage(formDTO.getPage(), formDTO.getLimit());
List<UploadListResultDTO> list = baseDao.selectCodeList(formDTO);
PageInfo<UploadListResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

164
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java

@ -1,9 +1,38 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CodeConstant;
import com.epmet.dao.AuthorizationInfoDao;
import com.epmet.dao.ComponentAccessTokenDao;
import com.epmet.dto.AuthorizationInfoDTO;
import com.epmet.dto.CodeAuditResultDTO;
import com.epmet.dto.CodeCustomerDTO;
import com.epmet.dto.CustomerDTO;
import com.epmet.dto.form.CodeCommonFormDTO;
import com.epmet.dto.form.CodeUploadFormDTO;
import com.epmet.dto.form.SubmitAuditFormDTO;
import com.epmet.dto.form.UploadListFormDTO;
import com.epmet.dto.result.TemplateListResultDTO;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.service.CodeAuditResultService;
import com.epmet.service.CodeCustomerService;
import com.epmet.service.CodeService;
import me.chanjar.weixin.common.error.WxErrorException;
import com.epmet.wxapi.param.WxMaCodeAuditStatusReq;
import com.epmet.wxapi.param.WxMaCodeCommitReq;
import com.epmet.wxapi.param.WxMaCodeSubmitAuditRequest;
import com.epmet.wxapi.result.WxMaAuditStatusResult;
import com.epmet.wxapi.result.WxMaTemplateResult;
import com.epmet.wxapi.result.WxResult;
import com.epmet.wxapi.service.WxMaCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
@ -14,4 +43,137 @@ import java.util.List;
@Service
public class CodeServiceImpl implements CodeService {
@Autowired
private WxMaCodeService wxMaCodeService;
@Autowired
private ComponentAccessTokenDao componentAccessTokenDao;
@Autowired
private AuthorizationInfoDao authorizationInfoDao;
@Autowired
private CodeCustomerService codeCustomerService;
@Autowired
private OperCrmOpenFeignClient operCrmOpenFeignClient;
@Autowired
private CodeAuditResultService codeAuditResultService;
@Override
public List<TemplateListResultDTO> templateList() {
List<TemplateListResultDTO> resultList = new ArrayList<>();
//获取COMPONENT_ACCESS_TOKEN
String accessToken = componentAccessTokenDao.getComponentAccessToken();
//调用微信API获取模板列表
WxResult<List<WxMaTemplateResult>> wxResult = wxMaCodeService.getTemplateList(accessToken);
if (!wxResult.success()) {
throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
}
if (null == wxResult.getData() || wxResult.getData().size() == NumConstant.ZERO) {
return resultList;
}
wxResult.getData().forEach(temp -> {
TemplateListResultDTO dto = new TemplateListResultDTO();
dto.setTemplateId(temp.getTemplateId());
dto.setUserVersion(temp.getUserVersion());
dto.setUserDesc(temp.getUserDesc());
dto.setCreateTime(DateUtils.formatTimestamp(temp.getCreateTime(), DateUtils.DATE_PATTERN));
resultList.add(dto);
});
return resultList;
}
@Override
public void upload(CodeUploadFormDTO formDTO) {
//获取小程序调用令牌
AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), formDTO.getClientType());
if (null == authInfo) {
throw new RenException("未授权");
}
//TODO 获取第三方自定义配置
String extJson = "{}";
WxMaCodeCommitReq request = ConvertUtils.sourceToTarget(formDTO, WxMaCodeCommitReq.class);
request.setExtJson(extJson);
//调用微信API上传代码
WxResult wxResult = wxMaCodeService.commit(authInfo.getAuthorizerAccessToken(), request);
//上传失败,抛出异常
if (!wxResult.success()) {
throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
}
//获取客户信息
CustomerDTO customerDTO = new CustomerDTO();
customerDTO.setId(formDTO.getCustomerId());
Result<CustomerDTO> customerInfo = operCrmOpenFeignClient.getCustomerInfo(customerDTO);
if (!customerInfo.success()) {
throw new RenException(customerInfo.getCode(), customerInfo.getMsg());
}
//TODO 将之前上传信息删除
//将上传信息存入表中
CodeCustomerDTO codeCustomerDTO = ConvertUtils.sourceToTarget(formDTO, CodeCustomerDTO.class);
codeCustomerDTO.setCustomerName(customerInfo.getData().getCustomerName());
codeCustomerDTO.setExtJson(extJson);
codeCustomerDTO.setStatus(CodeConstant.UNAUDITED);
codeCustomerService.save(codeCustomerDTO);
}
@Override
public PageData uploadList(UploadListFormDTO formDTO) {
//TODO 更新审核状态
return codeCustomerService.getCodeList(formDTO);
}
@Override
public void submitAudit(SubmitAuditFormDTO formDTO) {
//获取上传代码信息
CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId());
//获取小程序调用令牌
AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType());
//调用微信API上提交审核
WxMaCodeSubmitAuditRequest request = ConvertUtils.sourceToTarget(formDTO, WxMaCodeSubmitAuditRequest.class);
WxResult<String> wxResult = wxMaCodeService.submitAudit(authInfo.getAuthorizerAccessToken(), request);
if (!wxResult.success()) {
throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
}
//将数据存入代码审核表
CodeAuditResultDTO codeAuditResultDTO = new CodeAuditResultDTO();
codeAuditResultDTO.setCustomerId(codeCustomerDTO.getCustomerId());
codeAuditResultDTO.setCodeId(codeCustomerDTO.getId());
codeAuditResultDTO.setAuditId(wxResult.getData());
codeAuditResultDTO.setResult(CodeConstant.AUDITING);
codeAuditResultService.save(codeAuditResultDTO);
//更新代码表状态
codeCustomerDTO.setStatus(CodeConstant.AUDITING);
codeCustomerService.update(codeCustomerDTO);
}
@Override
public void undo(CodeCommonFormDTO formDTO) {
//获取上传代码信息
CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId());
//获取审核结果信息
CodeAuditResultDTO codeAuditResultDTO = codeAuditResultService.getAuditResultByCodeId(formDTO.getCodeId());
//获取小程序调用令牌
AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType());
//调用微信API获取最新审核状态
WxMaCodeAuditStatusReq request = new WxMaCodeAuditStatusReq();
request.setAuditId(codeAuditResultDTO.getAuditId());
WxResult<WxMaAuditStatusResult> wxAuditResult = wxMaCodeService.getAuditStatus(authInfo.getAuthorizerAccessToken(), request);
if (!wxAuditResult.success() ) {
throw new RenException(wxAuditResult.getErrorCode(), wxAuditResult.getErrorMsg());
}
if (wxAuditResult.getData().getStatus() != NumConstant.TWO) {
throw new RenException("该条记录状态已不是审核中,无法撤回");
}
//调用微信API撤销审核
WxResult wxResult = wxMaCodeService.undoCodeAudit(authInfo.getAuthorizerAccessToken());
if (!wxResult.success()) {
throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
}
//更新审核结果
codeAuditResultDTO.setResult(CodeConstant.WITHDRAWN);
codeAuditResultService.update(codeAuditResultDTO);
//更新代码表状态
codeCustomerDTO.setStatus(CodeConstant.WITHDRAWN);
codeCustomerService.update(codeCustomerDTO);
}
}

6
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxMaAuditStatusResult.java

@ -15,7 +15,7 @@ public class WxMaAuditStatusResult implements Serializable {
/**
* 返回码
*/
private String errcode;
private Integer errcode;
/**
* 错误信息
*/
@ -33,4 +33,8 @@ public class WxMaAuditStatusResult implements Serializable {
*/
private String screenshot;
public boolean success(){
return errcode == 0;
}
}

32
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxMaTemplateListResult.java

@ -0,0 +1,32 @@
package com.epmet.wxapi.result;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/15 10:22
*/
@Data
public class WxMaTemplateListResult implements Serializable {
private static final long serialVersionUID = -331693492663419441L;
/**
* 返回码
*/
@SerializedName("errcode")
private Integer errCode;
/**
* 错误信息
*/
@SerializedName("errmsg")
private String errMsg;
/**
* 模板信息列表
*/
@SerializedName("template_list")
private List<WxMaTemplateResult> templateList;
}

36
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxMaTemplateResult.java

@ -0,0 +1,36 @@
package com.epmet.wxapi.result;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/15 10:24
*/
@Data
public class WxMaTemplateResult implements Serializable {
private static final long serialVersionUID = 5770192375722597547L;
/**
* 模板 id
*/
@SerializedName("template_id")
private String templateId;
/**
* 模板版本号开发者自定义字段
*/
@SerializedName("user_version")
private String userVersion;
/**
* 模板描述开发者自定义字段
*/
@SerializedName("user_desc")
private String userDesc;
/**
* 被添加为模板的时间
*/
@SerializedName("create_time")
private Long createTime;
}

149
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java

@ -1,12 +1,11 @@
package com.epmet.wxapi.service;
import com.epmet.wxapi.param.WxMaCodeAuditStatus;
import com.epmet.wxapi.param.WxMaCodeAuditStatusReq;
import com.epmet.wxapi.param.WxMaCodeCommitReq;
import com.epmet.wxapi.param.WxMaCodeSubmitAuditRequest;
import com.epmet.wxapi.result.WxMaCategoryResult;
import com.epmet.wxapi.result.WxMaAuditStatusResult;
import com.epmet.wxapi.result.WxMaTemplateResult;
import com.epmet.wxapi.result.WxResult;
import me.chanjar.weixin.common.error.WxErrorException;
import java.util.List;
@ -18,75 +17,91 @@ import java.util.List;
* @date 2020/7/10 11:21
*/
public interface WxMaCodeService {
/**
* 为授权的小程序帐号上传小程序代码仅仅支持第三方开放平台.
* @author zhaoqifeng
* @date 2020/7/10 14:11
* @param accessToken 小程序接口调用令牌
* @param commitRequest 请求参数
* @return com.epmet.wxapi.result.WxResult
* @throws WxErrorException 上传失败时抛出具体错误码请看类注释文档
*/
WxResult commit(String accessToken, WxMaCodeCommitReq commitRequest) throws WxErrorException;
/**
* 获取体验小程序的体验二维码.
* @author zhaoqifeng
* @date 2020/7/10 15:25
* @param accessToken 小程序接口调用令牌
* @param path 指定体验版二维码跳转到某个具体页面
* @return com.epmet.wxapi.result.WxResult
* @throws WxErrorException 抛出异常
*/
WxResult getQrCode(String accessToken, String path) throws WxErrorException;
/**
* 获取代码模板列表
*
* @param accessToken
* @return com.epmet.wxapi.result.WxResult
* @author zhaoqifeng
* @date 2020/7/15 10:20
*/
WxResult<List<WxMaTemplateResult>> getTemplateList(String accessToken);
/**
* 获取授权小程序帐号的可选类目.
*
* @param accessToken 提交审核参数
* @return List<WxMaCategory>
*/
WxResult getCategory(String accessToken);
/**
* 为授权的小程序帐号上传小程序代码仅仅支持第三方开放平台.
*
* @param accessToken 小程序接口调用令牌
* @param commitRequest 请求参数
* @return com.epmet.wxapi.result.WxResult
* @author zhaoqifeng
* @date 2020/7/10 14:11
*/
WxResult commit(String accessToken, WxMaCodeCommitReq commitRequest);
/**
* 获取小程序的第三方提交代码的页面配置仅供第三方开发者代小程序调用.
*
* @param accessToken 提交审核参数
* @return page_list 页面配置列表
*/
WxResult getPage(String accessToken);
/**
* 获取体验小程序的体验二维码.
*
* @param accessToken 小程序接口调用令牌
* @param path 指定体验版二维码跳转到某个具体页面
* @return com.epmet.wxapi.result.WxResult
* @author zhaoqifeng
* @date 2020/7/10 15:25
*/
WxResult getQrCode(String accessToken, String path);
/**
* 将第三方提交的代码包提交审核仅供第三方开发者代小程序调用.
*
* @param accessToken 提交审核参数
* @param auditRequest 提交审核参数
* @return 审核编号
*/
WxResult submitAudit(String accessToken, WxMaCodeSubmitAuditRequest auditRequest);
/**
* 获取授权小程序帐号的可选类目.
*
* @param accessToken 提交审核参数
* @return List<WxMaCategory>
*/
WxResult getCategory(String accessToken);
/**
* 查询指定版本审核状态仅供第三方代小程序调用.
*
* @param accessToken 提交审核参数
* @return 审核状态
*/
WxResult getAuditStatus(String accessToken, WxMaCodeAuditStatusReq request);
/**
* 获取小程序的第三方提交代码的页面配置仅供第三方开发者代小程序调用.
*
* @param accessToken 提交审核参数
* @return page_list 页面配置列表
*/
WxResult getPage(String accessToken);
/**
* 发布已通过审核的小程序仅供第三方代小程序调用.
*
* @param accessToken 提交审核参数
* @return 发布结果
*/
WxResult release(String accessToken);
/**
* 将第三方提交的代码包提交审核仅供第三方开发者代小程序调用.
*
* @param accessToken 提交审核参数
* @param auditRequest 提交审核参数
* @return 审核编号
*/
WxResult<String> submitAudit(String accessToken, WxMaCodeSubmitAuditRequest auditRequest);
/**
* 小程序审核撤回.
* 单个帐号每天审核撤回次数最多不超过1次一个月不超过10次
*
* @param accessToken 提交审核参数
* @return 撤回结果
*/
WxResult undoCodeAudit(String accessToken);
/**
* 查询指定版本审核状态仅供第三方代小程序调用.
*
* @param accessToken 提交审核参数
* @param request 提交审核参数
* @return 审核状态
*/
WxResult<WxMaAuditStatusResult> getAuditStatus(String accessToken, WxMaCodeAuditStatusReq request);
/**
* 发布已通过审核的小程序仅供第三方代小程序调用.
*
* @param accessToken 提交审核参数
* @return 发布结果
*/
WxResult release(String accessToken);
/**
* 小程序审核撤回.
* 单个帐号每天审核撤回次数最多不超过1次一个月不超过10次
*
* @param accessToken 提交审核参数
* @return 撤回结果
*/
WxResult undoCodeAudit(String accessToken);
//TODO 设置服务器域名
//TODO 设置业务域名
}

345
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java

@ -1,11 +1,9 @@
package com.epmet.wxapi.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.wxapi.constant.WxMaCodeConstant;
import com.epmet.wxapi.param.WxMaCodeAuditStatus;
import com.epmet.wxapi.param.WxMaCodeAuditStatusReq;
import com.epmet.wxapi.param.WxMaCodeCommitReq;
import com.epmet.wxapi.param.WxMaCodeSubmitAuditRequest;
@ -13,16 +11,12 @@ import com.epmet.wxapi.result.*;
import com.epmet.wxapi.service.WxMaCodeService;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import io.micrometer.core.instrument.util.JsonUtils;
import lombok.Data;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
/**
@ -33,161 +27,186 @@ import java.util.List;
*/
@Service
public class WxMaCodeServiceImpl implements WxMaCodeService {
private static final String ERR_CODE = "errcode";
private static final String ERR_MSG = "errmsg";
@Override
public WxResult commit(String accessToken, WxMaCodeCommitReq commitRequest) throws WxErrorException {
WxResult result = new WxResult();
String url = WxMaCodeConstant.COMMIT_URL + "?" + "access_token=" + accessToken;
Result<String> commitResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(commitRequest));
if(!commitResult.success()) {
result.setErrorCode(commitResult.getCode());
result.setErrorMsg(commitResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(commitResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
return result;
}
@Override
public WxResult getQrCode(String accessToken, String path) throws WxErrorException{
WxResult<Byte[]> result = new WxResult<>();
StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token").append(accessToken);
if (StringUtils.isNotBlank(path)) {
try {
url.append("?path=").append(URLEncoder.encode(path, StandardCharsets.UTF_8.name()));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
Result<Byte[]> qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null);
if(!qrCodeResult.success()) {
result.setErrorCode(qrCodeResult.getCode());
result.setErrorMsg(qrCodeResult.getMsg());
return result;
}
result.setData(qrCodeResult.getData());
return result;
}
@Override
public WxResult getCategory(String accessToken) {
WxResult<List<WxMaCategoryResult>> result = new WxResult<>();
String url = WxMaCodeConstant.GET_CATEGORY_URL + "?" + "access_token=" + accessToken;
Result<String> getCategoryResult = HttpClientManager.getInstance().sendGet(url, null);
if(!getCategoryResult.success()) {
result.setErrorCode(getCategoryResult.getCode());
result.setErrorMsg(getCategoryResult.getMsg());
return result;
}
WxMaGetCategoryResult categoryResult = JSONObject.parseObject(getCategoryResult.getData(), WxMaGetCategoryResult.class);
result.setErrorCode(categoryResult.getErrcode());
result.setErrorMsg(categoryResult.getErrmsg());
result.setData(categoryResult.getCategoryList());
return result;
}
@Override
public WxResult getPage(String accessToken) {
WxResult<List<String>> result = new WxResult<>();
String url = WxMaCodeConstant.GET_PAGE_URL + "?" + "access_token=" + accessToken;
Result<String> getPageResult = HttpClientManager.getInstance().sendGet(url, null);
if(!getPageResult.success()) {
result.setErrorCode(getPageResult.getCode());
result.setErrorMsg(getPageResult.getMsg());
return result;
}
WxMaGetPageResult pageResult = JSONObject.parseObject(getPageResult.getData(), WxMaGetPageResult.class);
result.setErrorCode(pageResult.getErrcode());
result.setErrorMsg(pageResult.getErrmsg());
result.setData(pageResult.getPageList());
return result;
}
@Override
public WxResult submitAudit(String accessToken, WxMaCodeSubmitAuditRequest auditRequest) {
WxResult result = new WxResult();
String url = WxMaCodeConstant.SUBMIT_AUDIT_URL + "?" + "access_token=" + accessToken;
Result<String> submitResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(auditRequest));
if(!submitResult.success()) {
result.setErrorCode(submitResult.getCode());
result.setErrorMsg(submitResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(submitResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
return result;
}
@Override
public WxResult getAuditStatus(String accessToken, WxMaCodeAuditStatusReq request) {
WxResult<WxMaAuditStatusResult> result = new WxResult<>();
String url = WxMaCodeConstant.COMMIT_URL + "?" + "access_token=" + accessToken;
Result<String> statusResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request));
if(!statusResult.success()) {
result.setErrorCode(statusResult.getCode());
result.setErrorMsg(statusResult.getMsg());
return result;
}
WxMaAuditStatusResult auditStatusResult = JSONObject.parseObject(statusResult.getData(), WxMaAuditStatusResult.class);
result.ok(auditStatusResult);
return result;
}
@Override
public WxResult release(String accessToken) {
WxResult result = new WxResult();
String url = WxMaCodeConstant.RELEASE_URL + "?" + "access_token=" + accessToken;
Result<String> releaseResult = HttpClientManager.getInstance().sendPostByJSON(url, null);
if(!releaseResult.success()) {
result.setErrorCode(releaseResult.getCode());
result.setErrorMsg(releaseResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(releaseResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
return result;
}
@Override
public WxResult undoCodeAudit(String accessToken) {
WxResult result = new WxResult();
String url = WxMaCodeConstant.UNDO_CODE_AUDIT_URL + "?" + "access_token=" + accessToken;
Result<String> undoResult = HttpClientManager.getInstance().sendGet(url, null);
if(!undoResult.success()) {
result.setErrorCode(undoResult.getCode());
result.setErrorMsg(undoResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(undoResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
return result;
}
public static void main(String[] args) {
String url = "{\"errcode\":0,\"errmsg\":\"ok\",\"category_list\":[{\"first_class\":\"工具\",\"second_class\":\"备忘录\",\"first_id\":1,\"second_id\":2,}\n" +
"{\"first_class\":\"教育\",\"second_class\":\"学历教育\",\"third_class\":\"高等\",\"first_id\":3,\"second_id\":4,\"third_id\":5,}]}";
WxMaGetCategoryResult video = JSONObject.parseObject(url, WxMaGetCategoryResult.class);
WxResult<List<WxMaCategoryResult>> result = new WxResult<>();
result.setErrorCode(video.getErrcode());
result.setErrorMsg(video.getErrmsg());
result.setData(video.getCategoryList());
System.out.println(result);
WxMaCodeSubmitAuditRequest request = new WxMaCodeSubmitAuditRequest();
request.setVersionDesc("aasdf");
}
private String toJson(Object object) {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setPrettyPrinting();
Gson gson = gsonBuilder.create();
return gson.toJson(object);
}
private static final String ERR_CODE = "errcode";
private static final String ERR_MSG = "errmsg";
@Override
public WxResult<List<WxMaTemplateResult>> getTemplateList(String accessToken) {
WxResult<List<WxMaTemplateResult>> result = new WxResult<>();
String url = WxMaCodeConstant.COMMIT_URL + "?" + "access_token=" + accessToken;
Result<String> templateListResult = HttpClientManager.getInstance().sendGet(url, null);
if (!templateListResult.success()) {
result.setErrorCode(templateListResult.getCode());
result.setErrorMsg(templateListResult.getMsg());
return result;
}
Gson gson = new Gson();
WxMaTemplateListResult templateList = new Gson().fromJson(templateListResult.getData(), WxMaTemplateListResult.class);
result.setErrorCode(templateList.getErrCode());
result.setErrorMsg(templateList.getErrMsg());
result.setData(templateList.getTemplateList());
return result;
}
@Override
public WxResult commit(String accessToken, WxMaCodeCommitReq commitRequest) {
WxResult result = new WxResult();
String url = WxMaCodeConstant.COMMIT_URL + "?" + "access_token=" + accessToken;
Result<String> commitResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(commitRequest));
if (!commitResult.success()) {
result.setErrorCode(commitResult.getCode());
result.setErrorMsg(commitResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(commitResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
return result;
}
@Override
public WxResult getQrCode(String accessToken, String path) {
WxResult<Byte[]> result = new WxResult<>();
StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token").append(accessToken);
if (StringUtils.isNotBlank(path)) {
try {
url.append("?path=").append(URLEncoder.encode(path, StandardCharsets.UTF_8.name()));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
Result<Byte[]> qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null);
if (!qrCodeResult.success()) {
result.setErrorCode(qrCodeResult.getCode());
result.setErrorMsg(qrCodeResult.getMsg());
return result;
}
result.setData(qrCodeResult.getData());
return result;
}
@Override
public WxResult getCategory(String accessToken) {
WxResult<List<WxMaCategoryResult>> result = new WxResult<>();
String url = WxMaCodeConstant.GET_CATEGORY_URL + "?" + "access_token=" + accessToken;
Result<String> getCategoryResult = HttpClientManager.getInstance().sendGet(url, null);
if (!getCategoryResult.success()) {
result.setErrorCode(getCategoryResult.getCode());
result.setErrorMsg(getCategoryResult.getMsg());
return result;
}
WxMaGetCategoryResult categoryResult = JSONObject.parseObject(getCategoryResult.getData(), WxMaGetCategoryResult.class);
result.setErrorCode(categoryResult.getErrcode());
result.setErrorMsg(categoryResult.getErrmsg());
result.setData(categoryResult.getCategoryList());
return result;
}
@Override
public WxResult getPage(String accessToken) {
WxResult<List<String>> result = new WxResult<>();
String url = WxMaCodeConstant.GET_PAGE_URL + "?" + "access_token=" + accessToken;
Result<String> getPageResult = HttpClientManager.getInstance().sendGet(url, null);
if (!getPageResult.success()) {
result.setErrorCode(getPageResult.getCode());
result.setErrorMsg(getPageResult.getMsg());
return result;
}
WxMaGetPageResult pageResult = JSONObject.parseObject(getPageResult.getData(), WxMaGetPageResult.class);
result.setErrorCode(pageResult.getErrcode());
result.setErrorMsg(pageResult.getErrmsg());
result.setData(pageResult.getPageList());
return result;
}
@Override
public WxResult<String> submitAudit(String accessToken, WxMaCodeSubmitAuditRequest auditRequest) {
WxResult<String> result = new WxResult<>();
String url = WxMaCodeConstant.SUBMIT_AUDIT_URL + "?" + "access_token=" + accessToken;
Result<String> submitResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(auditRequest));
if (!submitResult.success()) {
result.setErrorCode(submitResult.getCode());
result.setErrorMsg(submitResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(submitResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
result.setData(jsonObject.getString("auditid"));
return result;
}
@Override
public WxResult<WxMaAuditStatusResult> getAuditStatus(String accessToken, WxMaCodeAuditStatusReq request) {
WxResult<WxMaAuditStatusResult> result = new WxResult<>();
String url = WxMaCodeConstant.COMMIT_URL + "?" + "access_token=" + accessToken;
Result<String> statusResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request));
if (!statusResult.success()) {
result.setErrorCode(statusResult.getCode());
result.setErrorMsg(statusResult.getMsg());
return result;
}
WxMaAuditStatusResult auditStatusResult = JSONObject.parseObject(statusResult.getData(), WxMaAuditStatusResult.class);
if (!auditStatusResult.success()){
result.setErrorCode(auditStatusResult.getErrcode());
result.setErrorMsg(auditStatusResult.getErrmsg());
return result;
}
result.ok(auditStatusResult);
return result;
}
@Override
public WxResult release(String accessToken) {
WxResult result = new WxResult();
String url = WxMaCodeConstant.RELEASE_URL + "?" + "access_token=" + accessToken;
Result<String> releaseResult = HttpClientManager.getInstance().sendPostByJSON(url, null);
if (!releaseResult.success()) {
result.setErrorCode(releaseResult.getCode());
result.setErrorMsg(releaseResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(releaseResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
return result;
}
@Override
public WxResult undoCodeAudit(String accessToken) {
WxResult result = new WxResult();
String url = WxMaCodeConstant.UNDO_CODE_AUDIT_URL + "?" + "access_token=" + accessToken;
Result<String> undoResult = HttpClientManager.getInstance().sendGet(url, null);
if (!undoResult.success()) {
result.setErrorCode(undoResult.getCode());
result.setErrorMsg(undoResult.getMsg());
return result;
}
JSONObject jsonObject = JSONObject.parseObject(undoResult.getData());
result.setErrorCode(jsonObject.getInteger(ERR_CODE));
result.setErrorMsg(jsonObject.getString(ERR_MSG));
return result;
}
public static void main(String[] args) {
String url = "{\"errcode\":0,\"errmsg\":\"ok\",\"category_list\":[{\"first_class\":\"工具\",\"second_class\":\"备忘录\",\"first_id\":1,\"second_id\":2,}\n" +
"{\"first_class\":\"教育\",\"second_class\":\"学历教育\",\"third_class\":\"高等\",\"first_id\":3,\"second_id\":4,\"third_id\":5,}]}";
WxMaGetCategoryResult video = JSONObject.parseObject(url, WxMaGetCategoryResult.class);
WxResult<List<WxMaCategoryResult>> result = new WxResult<>();
result.setErrorCode(video.getErrcode());
result.setErrorMsg(video.getErrmsg());
result.setData(video.getCategoryList());
System.out.println(result);
WxMaCodeSubmitAuditRequest request = new WxMaCodeSubmitAuditRequest();
request.setVersionDesc("aasdf");
}
private String toJson(Object object) {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setPrettyPrinting();
Gson gson = gsonBuilder.create();
return gson.toJson(object);
}
}

9
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml

@ -68,5 +68,14 @@
<update id="updateOldAuthorizerAccessToken">
update authorization_info set del_flag = 1 where customer_id = #{customerId} AND client_type = #{clientType}
</update>
<select id="getAuthInfoByCustomer" resultType="com.epmet.dto.AuthorizationInfoDTO">
SELECT AUTHORIZER_APPID,
AUTHORIZER_ACCESS_TOKEN
FROM authorization_info
WHERE CUSTOMER_ID = #{customerId}
AND CLIENT_TYPE = #{clientType}
AND DEL_FLAG = 0
AND EXPIRES_IN_TIME > NOW()
</select>
</mapper>

17
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeAuditResultDao.xml

@ -3,6 +3,23 @@
<mapper namespace="com.epmet.dao.CodeAuditResultDao">
<resultMap type="com.epmet.entity.CodeAuditResultEntity" id="codeAuditResultMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="codeId" column="CODE_ID"/>
<result property="auditId" column="AUDIT_ID"/>
<result property="result" column="RESULT"/>
<result property="reason" column="REASON"/>
<result property="revision" column="REVISION"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectAuditResultByCodeId" resultType="com.epmet.dto.CodeAuditResultDTO">
SELECT * FROM code_audit_result WHERE CODE_ID = #{codeId} AND DEL_FLAG = '0'
</select>
<!-- 更新 代码审核结果中的审核状态 -->
<update id="updateAuditResult">
UPDATE code_audit_result

53
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeCustomerDao.xml

@ -3,6 +3,59 @@
<mapper namespace="com.epmet.dao.CodeCustomerDao">
<resultMap type="com.epmet.entity.CodeCustomerEntity" id="codeCustomerMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="customerName" column="CUSTOMER_NAME"/>
<result property="templateId" column="TEMPLATE_ID"/>
<result property="clientType" column="CLIENT_TYPE"/>
<result property="appId" column="APP_ID"/>
<result property="extJson" column="EXT_JSON"/>
<result property="userVersion" column="USER_VERSION"/>
<result property="userDesc" column="USER_DESC"/>
<result property="status" column="STATUS"/>
<result property="revision" column="REVISION"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectCodeList" resultType="com.epmet.dto.result.UploadListResultDTO" parameterType="com.epmet.dto.form.UploadListFormDTO">
SELECT
cc.ID,
cc.CUSTOMER_ID,
cc.CUSTOMER_NAME,
cc.CLIENT_TYPE,
cc.APP_ID,
cc.USER_VERSION AS "version",
cc.USER_DESC AS "codeInfo",
cc.STATUS,
DATE_FORMAT(cc.CREATED_TIME,'%Y-%m-%d') AS "uploadTime",
IFNULL(DATE_FORMAT(car.CREATED_TIME,'%Y-%m-%d'),'') AS "auditTime",
car.AUDIT_ID
FROM code_customer cc
LEFT JOIN code_audit_result car ON cc.ID = car.CODE_ID AND car.DEL_FLAG = '0'
WHERE
cc.DEL_FLAG = '0'
<if test="customerId != null and customerId.trim() != ''">
AND cc.CUSTOMER_ID = #{customerId}
</if>
<if test="clientType != null and clientType.trim() != ''">
AND cc.CLIENT_TYPE = #{clientType}
</if>
<if test="status != null and status.trim() != ''">
AND cc.STATUS = #{status}
</if>
<if test="startTime != null and startTime.trim() != ''">
AND DATE_FORMAT(cc.CREATED_TIME, '%Y-%m-%d') <![CDATA[ >= ]]> #{startTime}
</if>
<if test="endTime != null and endTime.trim() != ''">
AND DATE_FORMAT(cc.CREATED_TIME, '%Y-%m-%d') <![CDATA[ <= ]]> #{endTime}
</if>
</select>
<!-- 根据客户id和客户端类型获取 代码模板ID和授权方AppId -->
<select id="selectTemplateAndAppId" resultType="com.epmet.dto.result.TemplateAndAppIdResultDTO">
SELECT

7
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ComponentAccessTokenDao.xml

@ -23,6 +23,13 @@
<update id="updateOldComponentAccessToken">
update component_access_token set del_flag = 1
</update>
<select id="getComponentAccessToken" resultType="java.lang.String">
SELECT
COMPONENT_ACCESS_TOKEN
FROM
component_access_token
WHERE delFlag = '0'
</select>
<!-- 查询component_access_token 数量 -->
<select id="selectAccessTokenCount" resultType="java.lang.Integer">

10
epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/OperCrmOpenFeignClient.java

@ -1,9 +1,12 @@
package com.epmet.feign;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.feign.fallback.OperCrmOpenFeignClientFallback;
import org.springframework.web.bind.annotation.PostMapping;
/**
* 本服务对外开放的API,其他服务通过引用此client调用该服务
@ -13,4 +16,11 @@ import com.epmet.feign.fallback.OperCrmOpenFeignClientFallback;
*/
@FeignClient(name = ServiceConstant.OPER_CRM_SERVER, fallback = OperCrmOpenFeignClientFallback.class)
public interface OperCrmOpenFeignClient {
/**
* 获取客户信息
* @param dto
* @return
*/
@PostMapping("/oper/crm/getcostomerInfo")
Result<CustomerDTO> getCustomerInfo(CustomerDTO dto);
}

8
epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/fallback/OperCrmOpenFeignClientFallback.java

@ -1,5 +1,9 @@
package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerDTO;
import com.epmet.feign.OperCrmOpenFeignClient;
import org.springframework.stereotype.Component;
@ -11,4 +15,8 @@ import org.springframework.stereotype.Component;
*/
@Component
public class OperCrmOpenFeignClientFallback implements OperCrmOpenFeignClient {
@Override
public Result<CustomerDTO> getCustomerInfo(CustomerDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.OPER_CRM_SERVER, "getCustomerInfo", dto);
}
}

Loading…
Cancel
Save