调整代码生成器;集成微信开放平台

This commit is contained in:
DB 2023-10-11 16:50:33 +08:00
parent 2da94ee07a
commit 9ae90d315c
30 changed files with 291 additions and 29 deletions

View File

@ -23,7 +23,7 @@ import java.io.Serializable;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
@Table(value = "pp_sys_operation_log", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false) @Table(value = "cp_sys_operation_log", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class SysOperationLog extends BaseEntity implements Serializable { public class SysOperationLog extends BaseEntity implements Serializable {
/** /**

View File

@ -24,7 +24,7 @@ import java.io.Serializable;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
@Table(value = "pp_sys_user", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false) @Table(value = "cp_sys_user", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class SysUser extends BaseEntity implements Serializable { public class SysUser extends BaseEntity implements Serializable {
/** /**

View File

@ -72,8 +72,8 @@ public class OamStaffDetailsServiceImpl implements UserDetailsService {
//查询员工信息 //查询员工信息
List<Row> list = DbChain.table("oam_menu") List<Row> list = DbChain.table("oam_menu")
.select("pom.permission") .select("pom.permission")
.from("pp_oam_menu").as("pom") .from("cp_oam_menu").as("pom")
.leftJoin("pp_oam_role_menu").as("porm").on("porm.menu_id = pom.id") .leftJoin("cp_oam_role_menu").as("porm").on("porm.menu_id = pom.id")
.where("pom.type in (1,2)") .where("pom.type in (1,2)")
.and("porm.role_id = ?", staffLoginInfo.getRoleId()) .and("porm.role_id = ?", staffLoginInfo.getRoleId())
.and("pom.permission is not null") .and("pom.permission is not null")

View File

@ -24,6 +24,12 @@
<groupId>com.cpop</groupId> <groupId>com.cpop</groupId>
<artifactId>Cpop-Core</artifactId> <artifactId>Cpop-Core</artifactId>
</dependency> </dependency>
<!--Mysql-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -39,17 +39,17 @@ public class CpopGenerator {
/** /**
* 输出路径 * 输出路径
*/ */
private static final String EXPORT_URL = "/Cpop-Jambox"; private static final String EXPORT_URL = "/Cpop-Oam";
/** /**
* 模块 * 模块
*/ */
private static final String EXPORT_ITEM = "jambox"; private static final String EXPORT_ITEM = "oam";
/** /**
* 表前缀 * 表前缀
*/ */
private static final String TABLE_PREFIX = "cp_j_"; private static final String TABLE_PREFIX = "cp_oam_";
/** /**
* 主入口 * 主入口

View File

@ -51,7 +51,7 @@ spring:
server: server:
port: 9420 port: 9420
servlet: servlet:
context-path: /Cpop-Oam-Dev context-path: /Cpop-Oam
#Mybatis-Flex #Mybatis-Flex
mybatis-flex: mybatis-flex:

View File

@ -4,7 +4,7 @@ cpop:
profile: /root/jambox-union/jambox-oam/uploadPath/upload profile: /root/jambox-union/jambox-oam/uploadPath/upload
jwt: jwt:
#白名单 #白名单
whiteList: /login,/getCaptcha,/profile/** whiteList: /login,/getCaptcha,/profile/**,/wxOpen/receiveTicket,/wxOpen/*/callback
#拦截 #拦截
gateway: gateway:
rsa-keypair: rsa-keypair:
@ -16,9 +16,9 @@ cpop:
# DataSource Config # DataSource Config
spring: spring:
application: application:
name: PuPu_Oam name: Cpop-Oam-Prod
datasource: datasource:
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/pupu-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: Customer0401 password: Customer0401
#redis配置 #redis配置
@ -52,7 +52,7 @@ spring:
server: server:
port: 9420 port: 9420
servlet: servlet:
context-path: /PuPu-OAM context-path: /Cpop-Oam
#Mybatis-Flex #Mybatis-Flex
mybatis-flex: mybatis-flex:

View File

@ -4,7 +4,7 @@ cpop:
profile: /root/jambox-union/jambox-oam/uploadPath/upload profile: /root/jambox-union/jambox-oam/uploadPath/upload
jwt: jwt:
#白名单 #白名单
whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources,/wxOpen/receiveTicket,/wxOpen/*/callback
#拦截 #拦截
gateway: gateway:
rsa-keypair: rsa-keypair:
@ -16,9 +16,9 @@ cpop:
# DataSource Config # DataSource Config
spring: spring:
application: application:
name: PuPu-TEST name: Cpop-Oam-Test
datasource: datasource:
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/pupu-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: Customer0401 password: Customer0401
#redis配置 #redis配置
@ -52,7 +52,7 @@ spring:
server: server:
port: 9420 port: 9420
servlet: servlet:
context-path: /PuPu-Oam-TEST context-path: /Cpop-Oam
#Mybatis-Flex #Mybatis-Flex
mybatis-flex: mybatis-flex:
@ -63,7 +63,7 @@ mybatis-flex:
knife4j: knife4j:
enable: true enable: true
openapi: openapi:
title: PuPu-OAM开发API title: Cpop-OAM开发API
description: PuPu-OAM开发API description: PuPu-OAM开发API
email: email:
concat: DB concat: DB
@ -78,10 +78,10 @@ knife4j:
group-name: Oam group-name: Oam
api-rule: package api-rule: package
api-rule-resources: api-rule-resources:
- com.pupu.oam - com.cpop.oam
#jambox #jambox
jambox: jambox:
group-name: Jambox group-name: Jambox
api-rule: package api-rule: package
api-rule-resources: api-rule-resources:
- com.pupu.jambox - com.cpop.jambox

View File

@ -68,7 +68,7 @@ spring:
org: org:
quartz: quartz:
scheduler: scheduler:
instanceName: PuPuOamScheduler instanceName: CpopOamScheduler
instanceId: AUTO instanceId: AUTO
jobStore: jobStore:
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
@ -108,7 +108,7 @@ task:
# 设置队列容量 # 设置队列容量
queueCapacity: 100 queueCapacity: 100
# 设置线程名称前缀 # 设置线程名称前缀
threadNamePrefix: "PuPu-Oam-AsyncNotify-" threadNamePrefix: "Cpop-Oam-AsyncNotify-"
# 设置线程池等待终止时间(秒) # 设置线程池等待终止时间(秒)
awaitTerminationSeconds: 60 awaitTerminationSeconds: 60

View File

@ -8,6 +8,8 @@ import com.cpop.core.base.exception.ServiceException;
import com.cpop.core.utils.sql.SqlUtils; import com.cpop.core.utils.sql.SqlUtils;
import com.cpop.oam.business.bo.WxOpenMaCodeCommitBo; import com.cpop.oam.business.bo.WxOpenMaCodeCommitBo;
import com.cpop.oam.business.bo.WxOpenMaTrialQrCodeBo; import com.cpop.oam.business.bo.WxOpenMaTrialQrCodeBo;
import com.cpop.oam.business.service.WxOpenMiniService;
import com.cpop.oam.business.vo.WxOpenMiniVo;
import com.cpop.sdk.framework.config.WxOpenProperties; import com.cpop.sdk.framework.config.WxOpenProperties;
import com.cpop.sdk.framework.handler.WxOpenService; import com.cpop.sdk.framework.handler.WxOpenService;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
@ -36,7 +38,6 @@ import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.Base64; import java.util.Base64;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author DB * @author DB
@ -56,6 +57,9 @@ public class WxOpenController {
@Autowired @Autowired
private WxOpenProperties properties; private WxOpenProperties properties;
@Autowired
private WxOpenMiniService wxOpenMiniService;
/** /**
* @descriptions 第三方平台授权 * @descriptions 第三方平台授权
* @author DB * @author DB
@ -136,7 +140,7 @@ public class WxOpenController {
* @param msgSignature 加密信息 * @param msgSignature 加密信息
* @return: java.lang.Object * @return: java.lang.Object
*/ */
@RequestMapping("{appId}/callback") @RequestMapping("/{appId}/callback")
public Object callback(@RequestBody(required = false) String requestBody, public Object callback(@RequestBody(required = false) String requestBody,
@PathVariable("appId") String appId, @PathVariable("appId") String appId,
@RequestParam("signature") String signature, @RequestParam("signature") String signature,
@ -228,18 +232,37 @@ public class WxOpenController {
*/ */
@ApiOperation("获取授权小程序列表") @ApiOperation("获取授权小程序列表")
@GetMapping("/getAuthorizerList") @GetMapping("/getAuthorizerList")
public R<Page<Map<String, String>>> getAuthorizerList() { public R<Page<WxOpenMiniVo>> getAuthorizerList() {
try { try {
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain(); PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
WxOpenAuthorizerListResult authorizerList = wxOpenService.getWxOpenComponentService().getAuthorizerList(pageDomain.getPageNum(), pageDomain.getPageSize()); WxOpenAuthorizerListResult authorizerList = wxOpenService.getWxOpenComponentService().getAuthorizerList((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize());
Page<Map<String, String>> page = Page.of(pageDomain.getPageNum(), pageDomain.getPageSize(), authorizerList.getTotalCount()); List<WxOpenMiniVo> list = wxOpenMiniService.getAuthorizerList(authorizerList);
page.setRecords(authorizerList.getList()); Page<WxOpenMiniVo> page = Page.of(pageDomain.getPageNum(), pageDomain.getPageSize(), authorizerList.getTotalCount());
page.setRecords(list);
return R.ok(page); return R.ok(page);
} catch (WxErrorException e) { } catch (WxErrorException e) {
throw new ServiceException(e.getMessage()); throw new ServiceException(e.getMessage());
} }
} }
/**
* @Description: 数据同步
* @return R<Void>
* @author DB
* @Date: 2023/6/16 0016 17:34
*/
@ApiOperation("数据同步")
@PutMapping("/dataSync/{authorizerAppid}")
public R<Void> dataSync(@PathVariable("authorizerAppid") String authorizerAppid) {
try {
WxOpenAuthorizerInfoResult authorizerInfo = wxOpenService.getWxOpenComponentService().getAuthorizerInfo(authorizerAppid);
wxOpenMiniService.dataSync(authorizerInfo);
} catch (WxErrorException e) {
throw new ServiceException(e.getMessage());
}
return R.ok();
}
/** /**
* @Description: 获取授权小程序详情 * @Description: 获取授权小程序详情
* @param authorizerAppid 授权小程序appid * @param authorizerAppid 授权小程序appid
@ -468,7 +491,7 @@ public class WxOpenController {
*/ */
@ApiOperation("获取模板列表") @ApiOperation("获取模板列表")
@GetMapping("/getTemplateList") @GetMapping("/getTemplateList")
public R<List<WxOpenMaCodeTemplate>> getTemplateList(@RequestParam("templateType")Integer templateType) { public R<List<WxOpenMaCodeTemplate>> getTemplateList(Integer templateType) {
try { try {
List<WxOpenMaCodeTemplate> templateList = wxOpenService.getWxOpenComponentService().getTemplateList(templateType); List<WxOpenMaCodeTemplate> templateList = wxOpenService.getWxOpenComponentService().getTemplateList(templateType);
return R.ok(templateList); return R.ok(templateList);

View File

@ -0,0 +1,57 @@
package com.cpop.oam.business.entity;
import com.cpop.core.base.entity.BaseEntity;
import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
/**
* Oam-微信开放平台-小程序 实体类
*
* @author DB
* @since 2023-10-11
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(value = "cp_oam_wx_open_mini", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
public class WxOpenMini extends BaseEntity implements Serializable {
/**
* 主键
*/
@Id
private String id;
/**
* 小程序appid
*/
private String appid;
/**
* 昵称
*/
private String nickName;
/**
* 逻辑删除(0否1是)
*/
@Column(isLogicDelete = true)
private Boolean isDelete;
}

View File

@ -0,0 +1,14 @@
package com.cpop.oam.business.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cpop.oam.business.entity.WxOpenMini;
/**
* Oam-微信开放平台-小程序 映射层
*
* @author DB
* @since 2023-10-11
*/
public interface WxOpenMiniMapper extends BaseMapper<WxOpenMini> {
}

View File

@ -0,0 +1,36 @@
package com.cpop.oam.business.service;
import com.cpop.oam.business.vo.WxOpenMiniVo;
import com.mybatisflex.core.service.IService;
import com.cpop.oam.business.entity.WxOpenMini;
import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult;
import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerListResult;
import java.util.List;
/**
* Oam-微信开放平台-小程序 服务层
*
* @author DB
* @since 2023-10-11
*/
public interface WxOpenMiniService extends IService<WxOpenMini> {
/**
* @descriptions 获取授权小程序列表
* @author DB
* @date 2023/10/11 12:52
* @param authorizerList 微信拉取信息列表
* @return: java.util.List<com.cpop.oam.business.vo.WxOpenMiniVo>
*/
List<WxOpenMiniVo> getAuthorizerList(WxOpenAuthorizerListResult authorizerList);
/**
* @descriptions 数据同步
* @author DB
* @date 2023/10/11 13:41
* @param authorizerInfo 授权小程序信息
* @return: void
*/
void dataSync(WxOpenAuthorizerInfoResult authorizerInfo);
}

View File

@ -206,7 +206,7 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl<TaskWorkOrderMapper, T
.leftJoin(BRAND).on(BRAND.ID.eq(CAMPUS.BRAND_ID)) .leftJoin(BRAND).on(BRAND.ID.eq(CAMPUS.BRAND_ID))
//员工表 //员工表
.leftJoin(STAFF).on(STAFF.ID.eq(TASK_WORK_ORDER.RECORD_STAFF_ID)) .leftJoin(STAFF).on(STAFF.ID.eq(TASK_WORK_ORDER.RECORD_STAFF_ID))
.leftJoin(STAFF).as("rs").on("rs.id = pp_oam_task.responsible_staff_id") .leftJoin(STAFF).as("rs").on("rs.id = cp_oam_task.responsible_staff_id")
.and(TASK.TASK_NAME.like(bo.getTaskName())) .and(TASK.TASK_NAME.like(bo.getTaskName()))
.and(TASK.TASK_STATUS.eq(bo.getTaskStatus())) .and(TASK.TASK_STATUS.eq(bo.getTaskStatus()))
.and(CAMPUS.NAME.like(bo.getCampusName())), .and(CAMPUS.NAME.like(bo.getCampusName())),

View File

@ -0,0 +1,67 @@
package com.cpop.oam.business.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.cpop.oam.business.entity.WxOpenMini;
import com.cpop.oam.business.mapper.WxOpenMiniMapper;
import com.cpop.oam.business.service.WxOpenMiniService;
import com.cpop.oam.business.vo.WxOpenMiniVo;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult;
import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerListResult;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.cpop.oam.business.entity.table.WxOpenMiniTableDef.WX_OPEN_MINI;
/**
* Oam-微信开放平台-小程序 服务层实现
*
* @author DB
* @since 2023-10-11
*/
@Service("wxOpenMiniService")
public class WxOpenMiniServiceImpl extends ServiceImpl<WxOpenMiniMapper, WxOpenMini> implements WxOpenMiniService {
/**
* @descriptions 获取授权小程序列表
* @author DB
* @date 2023/10/11 12:52
* @param authorizerList 微信拉取信息列表
* @return: java.util.List<com.cpop.oam.business.vo.WxOpenMiniVo>
*/
@Override
public List<WxOpenMiniVo> getAuthorizerList(WxOpenAuthorizerListResult authorizerList) {
List<WxOpenMiniVo> wxOpenMiniVos = JSONArray.parseArray(JSON.toJSONString(authorizerList.getList()), WxOpenMiniVo.class);
if (!wxOpenMiniVos.isEmpty()){
Map<String, String> appletMap = this.list(QueryWrapper.create().where(WX_OPEN_MINI.APPID.in(wxOpenMiniVos.stream().map(WxOpenMiniVo::getAuthorizerAppid).collect(Collectors.toSet()))))
.stream().collect(Collectors.toMap(WxOpenMini::getAppid, WxOpenMini::getNickName));
wxOpenMiniVos.forEach(item->{
item.setNickName(appletMap.get(item.getAuthorizerAppid()));
});
}
return wxOpenMiniVos;
}
/**
* @descriptions 数据同步
* @author DB
* @date 2023/10/11 13:41
* @param authorizerInfo 授权小程序信息
* @return: void
*/
@Override
public void dataSync(WxOpenAuthorizerInfoResult authorizerInfo) {
WxOpenMini wxOpenMini = this.getOne(QueryWrapper.create().where(WX_OPEN_MINI.APPID.eq(authorizerInfo.getAuthorizationInfo().getAuthorizerAppid())));
if (null == wxOpenMini) {
wxOpenMini = new WxOpenMini();
wxOpenMini.setAppid(authorizerInfo.getAuthorizationInfo().getAuthorizerAppid());
}
wxOpenMini.setNickName(authorizerInfo.getAuthorizerInfo().getNickName());
this.saveOrUpdate(wxOpenMini);
}
}

View File

@ -0,0 +1,52 @@
package com.cpop.oam.business.vo;
import com.alibaba.fastjson.annotation.JSONField;
import com.cpop.common.utils.DateUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* @author DB
* @createTime 2023/10/11 12:49
* @description
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "OpenPlatformAuthorizerListVo拉取已授权的帐号信息")
public class WxOpenMiniVo implements Serializable {
/**
* 已授权帐号的 appid
*/
@JSONField(name = "authorizer_appid")
@ApiModelProperty("已授权帐号的 appid")
private String authorizerAppid;
/**
* 刷新令牌authorizer_refresh_token
*/
@JSONField(name = "refresh_token")
@ApiModelProperty("刷新令牌authorizer_refresh_token")
private String refreshToken;
/**
* 授权的时间
*/
@JSONField(name = "auth_time")
@ApiModelProperty("授权的时间")
private String authTime;
public void setAuthTime(Integer authTime) {
Date date = new Date(authTime * 1000L);
this.authTime = DateUtils.format(date, "yyyy-MM-dd HH:mm:ss");
}
/**
* 小程序名称
*/
@ApiModelProperty("小程序名称")
private String nickName;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cpop.oam.business.mapper.WxOpenMiniMapper">
</mapper>