feat: 基于Java→V1映射表重写核心转换器
✅ 新增文件: - converters/JAVA_TO_V1_MAPPING.md (完整映射表文档) ✅ 重写转换器 (基于V1框架能力): 1. mybatis/query-wrapper.converter.js - QueryWrapper → 标记TODO,需用TypeORM Repository重写 2. mybatis/mapper.converter.js - xxxMapper.selectPage() → this.xxxRepository.findAndCount() - xxxMapper.selectOne() → this.xxxRepository.findOne() - xxxMapper.insert/update() → this.xxxRepository.save() 3. mybatis/pagination.converter.js - IPage<T> → [T[], number] - Page<T> → { skip, take } 4. utils/json.converter.js - JSONUtil.parseObj() → JsonUtils.parseObject() - JSONUtil.toBean() → Object.assign() - JsonLoadUtils → fs + JsonUtils 5. utils/object.converter.js - ObjectUtil → CommonUtils (@wwjBoot) - BeanUtils.copyProperties() → Object.assign() - Assert → if + throw BadRequestException - ImageUtils → fs.readFileSync() 🎯 核心策略: - 不改业务逻辑,只换Java写法为V1写法 - MyBatis → TypeORM Repository - Java Utils → V1 Boot层Utils - 映射V1已有能力,避免重复造轮子
This commit is contained in:
@@ -1,258 +0,0 @@
|
|||||||
# Java → wwjcloud-boot 能力映射表
|
|
||||||
|
|
||||||
> 本文档定义Java常用工具类/API与wwjcloud-boot框架能力的映射关系
|
|
||||||
>
|
|
||||||
> **核心原则**: 不改业务逻辑,只替换Java写法为V1框架写法
|
|
||||||
|
|
||||||
## 📦 工具类映射
|
|
||||||
|
|
||||||
### 1. JSON处理
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `JSONUtil.parseObj(str)` | `JSON.parse(str)` | 原生JS | 解析JSON字符串 |
|
|
||||||
| `JSONUtil.toJsonStr(obj)` | `JSON.stringify(obj)` | 原生JS | 对象转JSON字符串 |
|
|
||||||
| `JSONUtil.toBean(json, Class)` | `Object.assign(new Class(), json)` | 原生JS | JSON转对象 |
|
|
||||||
| `JSONObject` | `Record<string, any>` | 原生TS | JSON对象类型 |
|
|
||||||
| `JsonLoadUtils.loadJsonString(file, name)` | `JSON.parse(fs.readFileSync(path.join(file, name), 'utf-8'))` | `fs`, `path` | 读取JSON文件 |
|
|
||||||
|
|
||||||
### 2. 字符串工具
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `StringUtils.isEmpty(str)` | `StringUtils.isEmpty(str)` | `@wwjBoot` | 字符串为空判断 |
|
|
||||||
| `StringUtils.isNotEmpty(str)` | `StringUtils.isNotEmpty(str)` | `@wwjBoot` | 字符串非空判断 |
|
|
||||||
| `StringUtils.isBlank(str)` | `StringUtils.isEmpty(str)` | `@wwjBoot` | 同isEmpty |
|
|
||||||
| `String.equals(str)` | `=== str` | 原生JS | 字符串相等 |
|
|
||||||
| `String.equalsIgnoreCase(str)` | `.toLowerCase() === str.toLowerCase()` | 原生JS | 忽略大小写相等 |
|
|
||||||
| `String.contains(str)` | `.includes(str)` | 原生JS | 包含字符串 |
|
|
||||||
|
|
||||||
### 3. 集合工具
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `CollectionUtil.isEmpty(list)` | `StringUtils.isEmptyArray(list)` | `@wwjBoot` | 数组为空判断 |
|
|
||||||
| `CollectionUtil.isNotEmpty(list)` | `StringUtils.isNotEmptyArray(list)` | `@wwjBoot` | 数组非空判断 |
|
|
||||||
| `list.add(item)` | `list.push(item)` | 原生JS | 添加元素 |
|
|
||||||
| `list.size()` | `list.length` | 原生JS | 数组长度 |
|
|
||||||
| `list.isEmpty()` | `list.length === 0` | 原生JS | 数组为空 |
|
|
||||||
|
|
||||||
### 4. 对象工具
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `ObjectUtil.isEmpty(obj)` | `!obj` | 原生JS | 对象为空 |
|
|
||||||
| `ObjectUtil.isNotEmpty(obj)` | `!!obj` | 原生JS | 对象非空 |
|
|
||||||
| `BeanUtils.copyProperties(src, dest)` | `Object.assign(dest, src)` | 原生JS | 属性复制 |
|
|
||||||
|
|
||||||
### 5. 文件工具
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `Files.list(Paths.get(dir))` | `fs.readdirSync(dir)` | `fs` | 列出目录 |
|
|
||||||
| `Paths.get(path)` | `path.join(path)` | `path` | 路径拼接 |
|
|
||||||
| `file.exists()` | `fs.existsSync(file)` | `fs` | 文件是否存在 |
|
|
||||||
| `file.isDirectory()` | `fs.statSync(file).isDirectory()` | `fs` | 是否目录 |
|
|
||||||
| `file.getName()` | `path.basename(file)` | `path` | 文件名 |
|
|
||||||
| `file.listFiles()` | `fs.readdirSync(file)` | `fs` | 列出文件 |
|
|
||||||
| `FileUtils.cleanDirectory(dir)` | `fs.rmSync(dir, { recursive: true, force: true })` | `fs` | 清空目录 |
|
|
||||||
| `FileUtils.copyFile(src, dest)` | `fs.copyFileSync(src, dest)` | `fs` | 复制文件 |
|
|
||||||
| `FileUtils.deleteDirectory(dir)` | `fs.rmSync(dir, { recursive: true, force: true })` | `fs` | 删除目录 |
|
|
||||||
| `FileUtils.readFileToString(file)` | `fs.readFileSync(file, 'utf-8')` | `fs` | 读取文件 |
|
|
||||||
| `FileUtils.writeStringToFile(file, data)` | `fs.writeFileSync(file, data, 'utf-8')` | `fs` | 写入文件 |
|
|
||||||
|
|
||||||
### 6. Stream API
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `list.stream()` | `list` | 原生JS | 数组本身支持map/filter |
|
|
||||||
| `.filter(predicate)` | `.filter(predicate)` | 原生JS | 过滤 |
|
|
||||||
| `.map(mapper)` | `.map(mapper)` | 原生JS | 映射 |
|
|
||||||
| `.collect(Collectors.toList())` | 无需操作 | 原生JS | 数组方法返回数组 |
|
|
||||||
| `Collectors.toList()` | 无需操作 | 原生JS | 删除即可 |
|
|
||||||
|
|
||||||
### 7. 断言工具
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `Assert.notNull(obj, msg)` | `if (!obj) throw new BadRequestException(msg)` | `@nestjs/common` | 非空断言 |
|
|
||||||
| `Assert.isTrue(condition, msg)` | `if (!condition) throw new BadRequestException(msg)` | `@nestjs/common` | 条件断言 |
|
|
||||||
|
|
||||||
### 8. 系统工具
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `System.out.println(msg)` | `console.log(msg)` | 原生JS | 控制台输出 |
|
|
||||||
| `System.err.println(msg)` | `console.error(msg)` | 原生JS | 错误输出 |
|
|
||||||
| `System.currentTimeMillis()` | `Date.now()` | 原生JS | 当前时间戳(毫秒) |
|
|
||||||
| `System.currentTimeMillis() / 1000` | `Math.floor(Date.now() / 1000)` | 原生JS | 当前时间戳(秒) |
|
|
||||||
|
|
||||||
### 9. 异常处理
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `throw new CommonException(msg)` | `throw new BadRequestException(msg)` | `@nestjs/common` | 业务异常 |
|
|
||||||
| `throw new AuthException(msg)` | `throw new UnauthorizedException(msg)` | `@nestjs/common` | 认证异常 |
|
|
||||||
| `catch (Exception e)` | `catch (e)` | 原生JS | 捕获异常 |
|
|
||||||
| `catch (IOException e)` | `catch (e)` | 原生JS | 捕获异常 |
|
|
||||||
| `e.getMessage()` | `e.message` | 原生JS | 异常消息 |
|
|
||||||
| `e.printStackTrace()` | `console.error(e)` | 原生JS | 打印堆栈 |
|
|
||||||
|
|
||||||
### 10. 日期时间
|
|
||||||
|
|
||||||
| Java | wwjcloud-boot | 导入路径 | 说明 |
|
|
||||||
|------|---------------|---------|------|
|
|
||||||
| `LocalDateTime.now()` | `new Date()` | 原生JS | 当前时间 |
|
|
||||||
| `LocalDate.now()` | `new Date()` | 原生JS | 当前日期 |
|
|
||||||
| `Date` | `Date` | 原生JS | 日期类型 |
|
|
||||||
| `Timestamp` | `Date` | 原生JS | 时间戳类型 |
|
|
||||||
|
|
||||||
## 🗄️ MyBatis → TypeORM 映射
|
|
||||||
|
|
||||||
### 1. 查询构造器
|
|
||||||
|
|
||||||
| Java (MyBatis) | wwjcloud-boot (TypeORM) | 说明 |
|
|
||||||
|----------------|------------------------|------|
|
|
||||||
| `QueryWrapper<Entity>` | `查询条件对象` | 需要转换为TypeORM查询 |
|
|
||||||
| `new QueryWrapper<>()` | `{}` | 初始化为空对象 |
|
|
||||||
| `.eq("field", value)` | `{ field: value }` | 等于条件 |
|
|
||||||
| `.like("field", value)` | `{ field: Like(\`%${value}%\`) }` | 模糊查询 |
|
|
||||||
| `.in("field", list)` | `{ field: In(list) }` | IN查询 |
|
|
||||||
|
|
||||||
### 2. 分页查询
|
|
||||||
|
|
||||||
| Java (MyBatis) | wwjcloud-boot (TypeORM) | 说明 |
|
|
||||||
|----------------|------------------------|------|
|
|
||||||
| `IPage<Entity>` | `[Entity[], number]` | 分页结果 |
|
|
||||||
| `new Page<>(page, limit)` | `{ skip: (page-1)*limit, take: limit }` | 分页参数 |
|
|
||||||
| `mapper.selectPage(page, wrapper)` | `repository.findAndCount({ where, skip, take })` | 分页查询 |
|
|
||||||
| `iPage.getTotal()` | `total` | 总数 |
|
|
||||||
| `iPage.getRecords()` | `records` | 记录列表 |
|
|
||||||
|
|
||||||
### 3. Mapper方法
|
|
||||||
|
|
||||||
| Java (MyBatis) | wwjcloud-boot (TypeORM) | 说明 |
|
|
||||||
|----------------|------------------------|------|
|
|
||||||
| `mapper.selectOne(wrapper)` | `repository.findOne({ where })` | 查询单条 |
|
|
||||||
| `mapper.selectList(wrapper)` | `repository.find({ where })` | 查询列表 |
|
|
||||||
| `mapper.insert(entity)` | `repository.save(entity)` | 插入 |
|
|
||||||
| `mapper.updateById(entity)` | `repository.save(entity)` | 更新 |
|
|
||||||
| `mapper.deleteById(id)` | `repository.delete(id)` | 删除 |
|
|
||||||
| `mapper.delete(wrapper)` | `repository.delete({ where })` | 条件删除 |
|
|
||||||
| `mapper.selectCount(wrapper)` | `repository.count({ where })` | 计数 |
|
|
||||||
|
|
||||||
## 🎯 特殊业务工具映射
|
|
||||||
|
|
||||||
### Java特有工具 → Core层实现
|
|
||||||
|
|
||||||
以下Java工具是业务特定的,需要在Core层实现或标记TODO:
|
|
||||||
|
|
||||||
| Java工具 | 处理方式 | 说明 |
|
|
||||||
|---------|---------|------|
|
|
||||||
| `ImageUtils.imageToBase64()` | TODO | 图片转Base64,需Core层实现 |
|
|
||||||
| `AddonInstallJavaTools` | TODO | 插件安装工具,需Core层实现 |
|
|
||||||
| `LocalMavenTools` | TODO | Maven工具,需Core层实现 |
|
|
||||||
| `niucloudService` | 注入Service | 业务Service,通过DI注入 |
|
|
||||||
| `coreAddonService` | 注入Service | 业务Service,通过DI注入 |
|
|
||||||
|
|
||||||
## 🔄 转换示例
|
|
||||||
|
|
||||||
### 示例1: 文件操作
|
|
||||||
|
|
||||||
**Java代码**:
|
|
||||||
```java
|
|
||||||
String addonPath = WebAppEnvs.get().webRootDownAddon + addon + "/";
|
|
||||||
if (!Files.exists(Paths.get(addonPath))) {
|
|
||||||
throw new CommonException("插件不存在");
|
|
||||||
}
|
|
||||||
FileUtils.cleanDirectory(addonPath);
|
|
||||||
```
|
|
||||||
|
|
||||||
**V1代码**:
|
|
||||||
```typescript
|
|
||||||
const addonPath = this.appConfig.webRootDownAddon + addon + "/";
|
|
||||||
if (!fs.existsSync(addonPath)) {
|
|
||||||
throw new BadRequestException("插件不存在");
|
|
||||||
}
|
|
||||||
fs.rmSync(addonPath, { recursive: true, force: true });
|
|
||||||
```
|
|
||||||
|
|
||||||
### 示例2: JSON操作
|
|
||||||
|
|
||||||
**Java代码**:
|
|
||||||
```java
|
|
||||||
JSONObject info = JSONUtil.parseObj(JsonLoadUtils.loadJsonString(file, "info.json"));
|
|
||||||
AddonInfo addonInfo = JSONUtil.toBean(info, AddonInfo.class);
|
|
||||||
```
|
|
||||||
|
|
||||||
**V1代码**:
|
|
||||||
```typescript
|
|
||||||
const info = JSON.parse(fs.readFileSync(path.join(file, "info.json"), 'utf-8'));
|
|
||||||
const addonInfo = Object.assign(new AddonInfo(), info);
|
|
||||||
```
|
|
||||||
|
|
||||||
### 示例3: 集合操作
|
|
||||||
|
|
||||||
**Java代码**:
|
|
||||||
```java
|
|
||||||
List<String> localAddons = Files.list(Paths.get(addonPath))
|
|
||||||
.filter(file -> file.isDirectory())
|
|
||||||
.map(file -> file.getName())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
if (CollectionUtil.isNotEmpty(searchParam.getSearch()) && list.size() > 0) {
|
|
||||||
list = list.stream()
|
|
||||||
.filter(item -> item.getTitle().contains(searchParam.getSearch()))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**V1代码**:
|
|
||||||
```typescript
|
|
||||||
const localAddons = fs.readdirSync(addonPath)
|
|
||||||
.filter(file => fs.statSync(path.join(addonPath, file)).isDirectory());
|
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(searchParam.getSearch()) && list.length > 0) {
|
|
||||||
list = list.filter(item => item.getTitle().includes(searchParam.getSearch()));
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 示例4: MyBatis查询
|
|
||||||
|
|
||||||
**Java代码**:
|
|
||||||
```java
|
|
||||||
QueryWrapper<AddonLog> queryWrapper = new QueryWrapper<>();
|
|
||||||
queryWrapper.eq("site_id", siteId);
|
|
||||||
|
|
||||||
IPage<AddonLog> iPage = addonLogMapper.selectPage(
|
|
||||||
new Page<>(page, limit),
|
|
||||||
queryWrapper
|
|
||||||
);
|
|
||||||
|
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(iPage.getRecords());
|
|
||||||
```
|
|
||||||
|
|
||||||
**V1代码**:
|
|
||||||
```typescript
|
|
||||||
const [records, total] = await this.addonLogRepository.findAndCount({
|
|
||||||
where: { siteId },
|
|
||||||
skip: (page - 1) * limit,
|
|
||||||
take: limit
|
|
||||||
});
|
|
||||||
|
|
||||||
return PageResult.build(page, limit, total).setData(records);
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📌 转换优先级
|
|
||||||
|
|
||||||
1. **原生JS/TS能力** (最高优先级)
|
|
||||||
2. **wwjcloud-boot工具类**
|
|
||||||
3. **NestJS内置功能**
|
|
||||||
4. **TypeORM API**
|
|
||||||
5. **Core层业务实现** (最低优先级,标记TODO)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**更新日期**: 2025-01-XX
|
|
||||||
**维护者**: Migration Tool Team
|
|
||||||
|
|
||||||
@@ -0,0 +1,294 @@
|
|||||||
|
# Java → V1框架能力映射表
|
||||||
|
|
||||||
|
## 📋 核心原则
|
||||||
|
**不改业务逻辑,只换Java写法为V1写法**
|
||||||
|
|
||||||
|
## 🔄 数据库访问层映射
|
||||||
|
|
||||||
|
### MyBatis → TypeORM
|
||||||
|
|
||||||
|
| Java (MyBatis) | V1 (TypeORM) | 说明 |
|
||||||
|
|----------------|--------------|------|
|
||||||
|
| `QueryWrapper<Entity>` | `Repository<Entity>` | 查询构造器 → Repository |
|
||||||
|
| `new QueryWrapper<>()` | `this.xxxRepository` | 直接使用注入的Repository |
|
||||||
|
| `.eq("field", value)` | `.findOne({ where: { field: value } })` | 等值查询 |
|
||||||
|
| `.like("field", value)` | `.createQueryBuilder().where("field LIKE :value", { value: `%${value}%` })` | 模糊查询 |
|
||||||
|
| `.in("field", list)` | `.findBy({ field: In(list) })` | IN查询 |
|
||||||
|
| `.orderByAsc("field")` | `.find({ order: { field: 'ASC' } })` | 排序 |
|
||||||
|
| `IPage<Entity>` | `[Entity[], number]` | 分页结果 |
|
||||||
|
| `new Page<>(page, limit)` | `.findAndCount({ skip, take })` | 分页查询 |
|
||||||
|
| `xxxMapper.selectPage()` | `this.xxxRepository.findAndCount()` | 分页方法 |
|
||||||
|
| `xxxMapper.selectOne()` | `this.xxxRepository.findOne()` | 单条查询 |
|
||||||
|
| `xxxMapper.selectList()` | `this.xxxRepository.find()` | 列表查询 |
|
||||||
|
| `xxxMapper.insert()` | `this.xxxRepository.save()` | 插入 |
|
||||||
|
| `xxxMapper.update()` | `this.xxxRepository.save()` | 更新 |
|
||||||
|
| `xxxMapper.delete()` | `this.xxxRepository.delete()` | 删除 |
|
||||||
|
|
||||||
|
### 分页处理
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Java
|
||||||
|
int page = pageParam.getPage();
|
||||||
|
int limit = pageParam.getLimit();
|
||||||
|
QueryWrapper<Entity> qw = new QueryWrapper<>();
|
||||||
|
IPage<Entity> iPage = mapper.selectPage(new Page<>(page, limit), qw);
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// V1
|
||||||
|
const { page, limit } = pageParam;
|
||||||
|
const skip = (page - 1) * limit;
|
||||||
|
const [list, total] = await this.xxxRepository.findAndCount({
|
||||||
|
where: { /* conditions */ },
|
||||||
|
skip,
|
||||||
|
take: limit,
|
||||||
|
order: { /* sorting */ }
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### 查询条件构建
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Java
|
||||||
|
QueryWrapper<Entity> qw = new QueryWrapper<>();
|
||||||
|
qw.eq("site_id", siteId);
|
||||||
|
qw.like("name", keyword);
|
||||||
|
qw.in("status", Arrays.asList(1, 2, 3));
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// V1
|
||||||
|
const where: any = {
|
||||||
|
siteId: siteId,
|
||||||
|
name: Like(`%${keyword}%`),
|
||||||
|
status: In([1, 2, 3])
|
||||||
|
};
|
||||||
|
await this.xxxRepository.find({ where });
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛠️ 工具类映射
|
||||||
|
|
||||||
|
### JSON处理
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `JSONUtil.parseObj(str)` | `JsonUtils.parseObject<T>(str)` | JSON字符串转对象 |
|
||||||
|
| `JSONUtil.toBean(json, Class)` | `JsonUtils.parseObject<T>(JSON.stringify(json))` | JSON转Bean |
|
||||||
|
| `JSONObject` | `Record<string, any>` | JSON对象类型 |
|
||||||
|
| `JsonLoadUtils.loadJsonString(file, name)` | `JsonUtils.parseObject(fs.readFileSync(path.join(file, name), 'utf-8'))` | 加载JSON文件 |
|
||||||
|
|
||||||
|
### 对象工具
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `ObjectUtil.isNotEmpty(obj)` | `CommonUtils.isNotEmpty(obj)` | 非空判断 |
|
||||||
|
| `ObjectUtil.isEmpty(obj)` | `CommonUtils.isEmpty(obj)` | 空判断 |
|
||||||
|
| `BeanUtils.copyProperties(src, dest)` | `Object.assign(dest, src)` | 对象复制 |
|
||||||
|
|
||||||
|
### 集合工具
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `CollectionUtil.isEmpty(list)` | `StringUtils.isEmptyArray(list)` | 数组空判断 |
|
||||||
|
| `CollectionUtil.isNotEmpty(list)` | `StringUtils.isNotEmptyArray(list)` | 数组非空判断 |
|
||||||
|
| `list.add(item)` | `list.push(item)` | 添加元素 |
|
||||||
|
| `list.size()` | `list.length` | 数组长度 |
|
||||||
|
| `list.stream()` | `list.map/filter/reduce` | Stream API |
|
||||||
|
| `.collect(Collectors.toList())` | (移除,直接使用数组) | 转列表 |
|
||||||
|
|
||||||
|
### 字符串工具
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `StringUtils.isEmpty(str)` | `StringUtils.isEmpty(str)` | ✅ 已有 |
|
||||||
|
| `StringUtils.isNotEmpty(str)` | `StringUtils.isNotEmpty(str)` | ✅ 已有 |
|
||||||
|
| `str.equals(other)` | `str === other` | 字符串比较 |
|
||||||
|
| `str.equalsIgnoreCase(other)` | `str.toLowerCase() === other.toLowerCase()` | 忽略大小写比较 |
|
||||||
|
| `str.contains(substr)` | `str.includes(substr)` | 包含判断 |
|
||||||
|
|
||||||
|
### 文件工具
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `Files.list(path)` | `fs.readdirSync(path)` | 列出文件 |
|
||||||
|
| `Paths.get(str)` | `path.join(str)` | 路径拼接 |
|
||||||
|
| `file.exists()` | `fs.existsSync(file)` | 文件存在 |
|
||||||
|
| `file.isDirectory()` | `fs.statSync(file).isDirectory()` | 是否目录 |
|
||||||
|
| `file.getName()` | `path.basename(file)` | 文件名 |
|
||||||
|
| `file.listFiles()` | `fs.readdirSync(file)` | 列出文件 |
|
||||||
|
| `FileUtils.cleanDirectory(dir)` | `fs.rmSync(dir, { recursive: true, force: true })` | 清空目录 |
|
||||||
|
| `FileUtils.copyFile(src, dest)` | `fs.copyFileSync(src, dest)` | 复制文件 |
|
||||||
|
| `FileUtils.deleteDirectory(dir)` | `fs.rmSync(dir, { recursive: true, force: true })` | 删除目录 |
|
||||||
|
| `FileUtils.readFileToString(file)` | `fs.readFileSync(file, 'utf-8')` | 读取文件 |
|
||||||
|
| `FileUtils.writeStringToFile(file, str)` | `fs.writeFileSync(file, str, 'utf-8')` | 写入文件 |
|
||||||
|
|
||||||
|
### 断言工具
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `Assert.notNull(obj, msg)` | `if (!obj) throw new BadRequestException(msg)` | 非空断言 |
|
||||||
|
| `Assert.isTrue(bool, msg)` | `if (!bool) throw new BadRequestException(msg)` | 真值断言 |
|
||||||
|
|
||||||
|
### 系统工具
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `System.out.println(msg)` | `console.log(msg)` | 控制台输出 |
|
||||||
|
| `System.currentTimeMillis()` | `Date.now()` | 当前时间戳(毫秒) |
|
||||||
|
| `System.currentTimeMillis() / 1000` | `Math.floor(Date.now() / 1000)` | 当前时间戳(秒) |
|
||||||
|
|
||||||
|
### 图片工具
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `ImageUtils.imageToBase64(path)` | `fs.readFileSync(path, 'base64')` | 图片转Base64 |
|
||||||
|
|
||||||
|
## ⚙️ 配置访问映射
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `GlobalConfig.tablePrefix` | `this.appConfig.tablePrefix` | 表前缀 |
|
||||||
|
| `GlobalConfig.runActive` | `this.appConfig.runActive` | 运行环境 |
|
||||||
|
| `WebAppEnvs.get().projectRoot` | `this.appConfig.projectRoot` | 项目根目录 |
|
||||||
|
| `WebAppEnvs.get().webRoot` | `this.appConfig.webRoot` | Web根目录 |
|
||||||
|
|
||||||
|
## 🎯 请求上下文映射
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `RequestUtils.siteId()` | `this.requestContext.getSiteId()` | 站点ID |
|
||||||
|
| `RequestUtils.adminId()` | `this.requestContext.getAdminId()` | 管理员ID |
|
||||||
|
| `RequestUtils.adminSiteId()` | `this.requestContext.getSiteId()` | 站点ID |
|
||||||
|
| `RequestUtils.getRequest()` | `this.requestContext.getRequest()` | 请求对象 |
|
||||||
|
|
||||||
|
## ❌ 异常处理映射
|
||||||
|
|
||||||
|
| Java | V1 | 说明 |
|
||||||
|
|------|-----|------|
|
||||||
|
| `throw new CommonException(msg)` | `throw new BadRequestException(msg)` | 通用异常 |
|
||||||
|
| `throw new AuthException(msg)` | `throw new UnauthorizedException(msg)` | 认证异常 |
|
||||||
|
| `throw new RuntimeException(msg)` | `throw new Error(msg)` | 运行时异常 |
|
||||||
|
| `catch (Exception e)` | `catch (e)` | 捕获异常 |
|
||||||
|
| `catch (IOException e)` | `catch (e)` | IO异常 |
|
||||||
|
| `e.getMessage()` | `e.message` | 异常消息 |
|
||||||
|
| `e.printStackTrace()` | `console.error(e)` | 打印堆栈 |
|
||||||
|
|
||||||
|
## 🔧 类型映射
|
||||||
|
|
||||||
|
| Java | TypeScript | 说明 |
|
||||||
|
|------|------------|------|
|
||||||
|
| `int`, `Integer` | `number` | 整数 |
|
||||||
|
| `long`, `Long` | `number` | 长整数 |
|
||||||
|
| `double`, `Double` | `number` | 双精度 |
|
||||||
|
| `float`, `Float` | `number` | 浮点数 |
|
||||||
|
| `boolean`, `Boolean` | `boolean` | 布尔值 |
|
||||||
|
| `String` | `string` | 字符串 |
|
||||||
|
| `Date`, `LocalDateTime` | `Date` | 日期时间 |
|
||||||
|
| `List<T>`, `ArrayList<T>` | `T[]` | 数组 |
|
||||||
|
| `Map<K,V>`, `HashMap<K,V>` | `Record<K, V>` | 对象 |
|
||||||
|
| `Set<T>`, `HashSet<T>` | `Set<T>` | 集合 |
|
||||||
|
| `void` | `void` | 无返回值 |
|
||||||
|
| `Id` | `number` | ID类型 |
|
||||||
|
|
||||||
|
## 📦 依赖注入映射
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Java
|
||||||
|
@Autowired
|
||||||
|
private XxxMapper xxxMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private YyyService yyyService;
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// V1
|
||||||
|
constructor(
|
||||||
|
@InjectRepository(XxxEntity)
|
||||||
|
private readonly xxxRepository: Repository<XxxEntity>,
|
||||||
|
|
||||||
|
private readonly yyyService: YyyService,
|
||||||
|
) {}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 完整示例
|
||||||
|
|
||||||
|
### 示例1:分页查询
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Java
|
||||||
|
public PageResult<AddonLogListVo> getPage(PageParam pageParam) {
|
||||||
|
int page = pageParam.getPage();
|
||||||
|
int limit = pageParam.getLimit();
|
||||||
|
|
||||||
|
QueryWrapper<AddonLog> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
|
|
||||||
|
IPage<AddonLog> iPage = addonLogMapper.selectPage(
|
||||||
|
new Page<>(page, limit),
|
||||||
|
queryWrapper
|
||||||
|
);
|
||||||
|
|
||||||
|
List<AddonLogListVo> list = new ArrayList<>();
|
||||||
|
for (AddonLog item : iPage.getRecords()) {
|
||||||
|
AddonLogListVo vo = new AddonLogListVo();
|
||||||
|
BeanUtils.copyProperties(item, vo);
|
||||||
|
list.add(vo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// V1
|
||||||
|
async getPage(pageParam: PageParamDto): Promise<PageResult<AddonLogListVo>> {
|
||||||
|
const { page, limit } = pageParam;
|
||||||
|
const skip = (page - 1) * limit;
|
||||||
|
|
||||||
|
const [records, total] = await this.addonLogRepository.findAndCount({
|
||||||
|
where: { siteId: this.requestContext.getSiteId() },
|
||||||
|
skip,
|
||||||
|
take: limit
|
||||||
|
});
|
||||||
|
|
||||||
|
const list = records.map(item => {
|
||||||
|
const vo = new AddonLogListVo();
|
||||||
|
Object.assign(vo, item);
|
||||||
|
return vo;
|
||||||
|
});
|
||||||
|
|
||||||
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 示例2:文件操作
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Java
|
||||||
|
String addonPath = WebAppEnvs.get().webRootDownAddon + addon + "/";
|
||||||
|
if (!new File(addonPath).exists()) {
|
||||||
|
throw new CommonException("插件不存在");
|
||||||
|
}
|
||||||
|
FileUtils.cleanDirectory(new File(addonPath));
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// V1
|
||||||
|
const addonPath = path.join(this.appConfig.webRootDownAddon, addon, '/');
|
||||||
|
if (!fs.existsSync(addonPath)) {
|
||||||
|
throw new BadRequestException("插件不存在");
|
||||||
|
}
|
||||||
|
fs.rmSync(addonPath, { recursive: true, force: true });
|
||||||
|
```
|
||||||
|
|
||||||
|
## ✅ 转换原则总结
|
||||||
|
|
||||||
|
1. **数据库访问**: MyBatis QueryWrapper → TypeORM Repository
|
||||||
|
2. **工具类**: Java Utils → V1 Boot层Utils
|
||||||
|
3. **配置访问**: GlobalConfig/WebAppEnvs → AppConfigService
|
||||||
|
4. **请求上下文**: RequestUtils → RequestContextService
|
||||||
|
5. **异常处理**: Java异常 → NestJS异常
|
||||||
|
6. **类型系统**: Java类型 → TypeScript类型
|
||||||
|
7. **依赖注入**: @Autowired → Constructor注入
|
||||||
|
|
||||||
@@ -1,300 +0,0 @@
|
|||||||
/**
|
|
||||||
* Java → wwjcloud-boot V1框架 全局映射器
|
|
||||||
*
|
|
||||||
* 核心原则:不改业务逻辑,只替换Java写法为V1框架写法
|
|
||||||
*
|
|
||||||
* 参考文档:JAVA_TO_BOOT_MAPPING.md
|
|
||||||
*/
|
|
||||||
class JavaToV1Mapper {
|
|
||||||
constructor() {
|
|
||||||
this.bootImports = new Set();
|
|
||||||
this.nodeModules = new Set();
|
|
||||||
this.typeormImports = new Set();
|
|
||||||
this.nestjsImports = new Set();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 核心转换方法
|
|
||||||
*/
|
|
||||||
convert(javaCode) {
|
|
||||||
let tsCode = javaCode;
|
|
||||||
|
|
||||||
// 执行转换(按依赖顺序)
|
|
||||||
tsCode = this.convertTypes(tsCode);
|
|
||||||
tsCode = this.convertMyBatis(tsCode);
|
|
||||||
tsCode = this.convertJavaUtils(tsCode);
|
|
||||||
tsCode = this.convertStreamAPI(tsCode);
|
|
||||||
tsCode = this.convertExceptions(tsCode);
|
|
||||||
tsCode = this.convertSystemCalls(tsCode);
|
|
||||||
|
|
||||||
return tsCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. 类型转换
|
|
||||||
*/
|
|
||||||
convertTypes(code) {
|
|
||||||
let result = code;
|
|
||||||
|
|
||||||
// 基础类型
|
|
||||||
result = result.replace(/\bInteger\b/g, 'number');
|
|
||||||
result = result.replace(/\bLong\b/g, 'number');
|
|
||||||
result = result.replace(/\bDouble\b/g, 'number');
|
|
||||||
result = result.replace(/\bFloat\b/g, 'number');
|
|
||||||
result = result.replace(/\bBoolean\b/g, 'boolean');
|
|
||||||
|
|
||||||
// 集合类型
|
|
||||||
result = result.replace(/List<([^>]+)>/g, '$1[]');
|
|
||||||
result = result.replace(/ArrayList<([^>]+)>/g, '$1[]');
|
|
||||||
result = result.replace(/LinkedList<([^>]+)>/g, '$1[]');
|
|
||||||
result = result.replace(/Set<([^>]+)>/g, '$1[]');
|
|
||||||
result = result.replace(/HashSet<([^>]+)>/g, '$1[]');
|
|
||||||
result = result.replace(/Map<([^,]+),\s*([^>]+)>/g, 'Record<$1, $2>');
|
|
||||||
result = result.replace(/HashMap<([^,]+),\s*([^>]+)>/g, 'Record<$1, $2>');
|
|
||||||
|
|
||||||
// JSON类型
|
|
||||||
result = result.replace(/\bJSONObject\b/g, 'Record<string, any>');
|
|
||||||
|
|
||||||
// 日期类型
|
|
||||||
result = result.replace(/\bLocalDateTime\b/g, 'Date');
|
|
||||||
result = result.replace(/\bLocalDate\b/g, 'Date');
|
|
||||||
result = result.replace(/\bTimestamp\b/g, 'Date');
|
|
||||||
|
|
||||||
// ID类型
|
|
||||||
result = result.replace(/\bId\b/g, 'number');
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 2. MyBatis → TypeORM
|
|
||||||
*/
|
|
||||||
convertMyBatis(code) {
|
|
||||||
let result = code;
|
|
||||||
|
|
||||||
// QueryWrapper
|
|
||||||
result = result.replace(/QueryWrapper<[^>]+>\s*/g, '');
|
|
||||||
result = result.replace(/new\s+QueryWrapper<[^>]*>\(\)/g, '{}');
|
|
||||||
|
|
||||||
// Page/IPage
|
|
||||||
result = result.replace(/IPage<[^>]+>\s*/g, '');
|
|
||||||
result = result.replace(/new\s+Page<[^>]*>\([^)]+\)/g, '{ /* pagination */ }');
|
|
||||||
|
|
||||||
// Mapper调用 → Repository调用
|
|
||||||
// xxxMapper.selectOne() → this.xxxRepository.findOne()
|
|
||||||
result = result.replace(/(\w+)Mapper\.selectOne\(/g, 'this.$1Repository.findOne(');
|
|
||||||
result = result.replace(/(\w+)Mapper\.selectList\(/g, 'this.$1Repository.find(');
|
|
||||||
result = result.replace(/(\w+)Mapper\.selectPage\(/g, 'this.$1Repository.findAndCount(');
|
|
||||||
result = result.replace(/(\w+)Mapper\.insert\(/g, 'this.$1Repository.save(');
|
|
||||||
result = result.replace(/(\w+)Mapper\.updateById\(/g, 'this.$1Repository.save(');
|
|
||||||
result = result.replace(/(\w+)Mapper\.deleteById\(/g, 'this.$1Repository.delete(');
|
|
||||||
result = result.replace(/(\w+)Mapper\.delete\(/g, 'this.$1Repository.delete(');
|
|
||||||
result = result.replace(/(\w+)Mapper\.selectCount\(/g, 'this.$1Repository.count(');
|
|
||||||
|
|
||||||
// PageResult保持不变(来自@wwjBoot)
|
|
||||||
// iPage.getTotal() → total
|
|
||||||
result = result.replace(/(\w+)\.getTotal\(\)/g, 'total');
|
|
||||||
result = result.replace(/(\w+)\.getRecords\(\)/g, 'records');
|
|
||||||
|
|
||||||
this.bootImports.add('PageResult');
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 3. Java工具类 → V1框架工具类
|
|
||||||
*/
|
|
||||||
convertJavaUtils(code) {
|
|
||||||
let result = code;
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【JSON工具】
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
|
|
||||||
// JSONUtil.parseObj() → JSON.parse()
|
|
||||||
result = result.replace(/JSONUtil\.parseObj\(/g, 'JSON.parse(');
|
|
||||||
|
|
||||||
// JSONUtil.toJsonStr() → JSON.stringify()
|
|
||||||
result = result.replace(/JSONUtil\.toJsonStr\(/g, 'JSON.stringify(');
|
|
||||||
|
|
||||||
// JSONUtil.toBean(json, Class.class) → Object.assign(new Class(), json)
|
|
||||||
result = result.replace(/JSONUtil\.toBean\(([^,]+),\s*(\w+)\.class\)/g, 'Object.assign(new $2(), $1)');
|
|
||||||
|
|
||||||
// JsonLoadUtils.loadJsonString(file, name) → JSON.parse(fs.readFileSync(path.join(file, name), 'utf-8'))
|
|
||||||
if (result.includes('JsonLoadUtils.loadJsonString')) {
|
|
||||||
result = result.replace(/JsonLoadUtils\.loadJsonString\(([^,]+),\s*([^)]+)\)/g,
|
|
||||||
'JSON.parse(fs.readFileSync(path.join($1, $2), \'utf-8\'))');
|
|
||||||
this.nodeModules.add('fs');
|
|
||||||
this.nodeModules.add('path');
|
|
||||||
}
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【Bean工具】
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
|
|
||||||
// BeanUtils.copyProperties() → Object.assign()
|
|
||||||
result = result.replace(/BeanUtils\.copyProperties\(([^,]+),\s*([^)]+)\)/g, 'Object.assign($2, $1)');
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【断言工具】
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
|
|
||||||
// Assert.notNull(obj, msg) → if (!obj) throw new BadRequestException(msg)
|
|
||||||
result = result.replace(/Assert\.notNull\(([^,]+),\s*([^)]+)\);?/g,
|
|
||||||
'if (!$1) throw new BadRequestException($2);');
|
|
||||||
|
|
||||||
// Assert.isTrue(condition, msg) → if (!condition) throw new BadRequestException(msg)
|
|
||||||
result = result.replace(/Assert\.isTrue\(([^,]+),\s*([^)]+)\);?/g,
|
|
||||||
'if (!($1)) throw new BadRequestException($2);');
|
|
||||||
|
|
||||||
this.nestjsImports.add('BadRequestException');
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【文件工具】(已在file.converter.js中处理)
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
|
|
||||||
// Files.list(Paths.get()) → fs.readdirSync()
|
|
||||||
if (result.includes('Files.list(Paths.get(')) {
|
|
||||||
result = result.replace(/Files\.list\(Paths\.get\(([^)]+)\)\)/g, 'fs.readdirSync($1)');
|
|
||||||
this.nodeModules.add('fs');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Paths.get() → path.join()
|
|
||||||
result = result.replace(/Paths\.get\(/g, 'path.join(');
|
|
||||||
if (result.includes('path.join')) {
|
|
||||||
this.nodeModules.add('path');
|
|
||||||
}
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【对象工具】
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
|
|
||||||
// ObjectUtil.isEmpty() → !obj
|
|
||||||
result = result.replace(/ObjectUtil\.isEmpty\(([^)]+)\)/g, '!$1');
|
|
||||||
|
|
||||||
// ObjectUtil.isNotEmpty() → !!obj
|
|
||||||
result = result.replace(/ObjectUtil\.isNotEmpty\(([^)]+)\)/g, '!!$1');
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【字符串工具】保留StringUtils from wwjBoot
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
|
|
||||||
// StringUtils保持不变,已在string.converter.js中处理
|
|
||||||
if (result.includes('StringUtils.')) {
|
|
||||||
this.bootImports.add('StringUtils');
|
|
||||||
}
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【集合工具】保留StringUtils from wwjBoot
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
|
|
||||||
// CollectionUtil转换为StringUtils (已在collection.converter.js中处理)
|
|
||||||
// CollectionUtil.isEmpty() → StringUtils.isEmptyArray()
|
|
||||||
// CollectionUtil.isNotEmpty() → StringUtils.isNotEmptyArray()
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 4. Stream API → 数组方法
|
|
||||||
*/
|
|
||||||
convertStreamAPI(code) {
|
|
||||||
let result = code;
|
|
||||||
|
|
||||||
// list.stream() → 移除
|
|
||||||
result = result.replace(/\.stream\(\)/g, '');
|
|
||||||
|
|
||||||
// .collect(Collectors.toList()) → 移除
|
|
||||||
result = result.replace(/\.collect\(Collectors\.toList\(\)\)/g, '');
|
|
||||||
|
|
||||||
// .filter() / .map() 保持不变(JS原生支持)
|
|
||||||
|
|
||||||
// list.add() → list.push()
|
|
||||||
result = result.replace(/(\w+)\.add\(/g, '$1.push(');
|
|
||||||
|
|
||||||
// list.size() → list.length
|
|
||||||
result = result.replace(/(\w+)\.size\(\)/g, '$1.length');
|
|
||||||
|
|
||||||
// list.isEmpty() → list.length === 0
|
|
||||||
result = result.replace(/(\w+)\.isEmpty\(\)/g, '$1.length === 0');
|
|
||||||
|
|
||||||
// !list.isEmpty() → list.length > 0
|
|
||||||
result = result.replace(/!(\w+)\.length === 0/g, '$1.length > 0');
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 5. 异常处理
|
|
||||||
*/
|
|
||||||
convertExceptions(code) {
|
|
||||||
let result = code;
|
|
||||||
|
|
||||||
// throw new CommonException() → throw new BadRequestException()
|
|
||||||
result = result.replace(/throw new CommonException\(/g, 'throw new BadRequestException(');
|
|
||||||
|
|
||||||
// throw new AuthException() → throw new UnauthorizedException()
|
|
||||||
result = result.replace(/throw new AuthException\(/g, 'throw new UnauthorizedException(');
|
|
||||||
|
|
||||||
// catch (Exception e) → catch (e)
|
|
||||||
// catch (IOException e) → catch (e)
|
|
||||||
result = result.replace(/catch\s*\(\s*\w+Exception\s+(\w+)\s*\)/g, 'catch ($1)');
|
|
||||||
|
|
||||||
// e.getMessage() → e.message
|
|
||||||
result = result.replace(/(\w+)\.getMessage\(\)/g, '$1.message');
|
|
||||||
|
|
||||||
// e.printStackTrace() → console.error(e)
|
|
||||||
result = result.replace(/(\w+)\.printStackTrace\(\);?/g, 'console.error($1);');
|
|
||||||
|
|
||||||
this.nestjsImports.add('BadRequestException');
|
|
||||||
this.nestjsImports.add('UnauthorizedException');
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 6. 系统调用
|
|
||||||
*/
|
|
||||||
convertSystemCalls(code) {
|
|
||||||
let result = code;
|
|
||||||
|
|
||||||
// System.out.println() → console.log()
|
|
||||||
result = result.replace(/System\.out\.println\(/g, 'console.log(');
|
|
||||||
|
|
||||||
// System.err.println() → console.error()
|
|
||||||
result = result.replace(/System\.err\.println\(/g, 'console.error(');
|
|
||||||
|
|
||||||
// System.currentTimeMillis() / 1000 → Math.floor(Date.now() / 1000)
|
|
||||||
result = result.replace(/System\.currentTimeMillis\(\)\s*\/\s*1000/g, 'Math.floor(Date.now() / 1000)');
|
|
||||||
|
|
||||||
// System.currentTimeMillis() → Date.now()
|
|
||||||
result = result.replace(/System\.currentTimeMillis\(\)/g, 'Date.now()');
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取所有需要导入的模块
|
|
||||||
*/
|
|
||||||
getImports() {
|
|
||||||
return {
|
|
||||||
boot: Array.from(this.bootImports),
|
|
||||||
typeorm: Array.from(this.typeormImports),
|
|
||||||
nestjs: Array.from(this.nestjsImports),
|
|
||||||
nodeModules: Array.from(this.nodeModules)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 重置imports
|
|
||||||
*/
|
|
||||||
resetImports() {
|
|
||||||
this.bootImports.clear();
|
|
||||||
this.nodeModules.clear();
|
|
||||||
this.typeormImports.clear();
|
|
||||||
this.nestjsImports.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = JavaToV1Mapper;
|
|
||||||
|
|
||||||
@@ -1,60 +1,97 @@
|
|||||||
/**
|
/**
|
||||||
* Mapper转换器
|
* Mapper调用转换器
|
||||||
*
|
*
|
||||||
* MyBatis Mapper → TypeORM Repository
|
* MyBatis Mapper → TypeORM Repository
|
||||||
|
*
|
||||||
|
* 映射关系:
|
||||||
|
* - xxxMapper.selectPage() → this.xxxRepository.findAndCount()
|
||||||
|
* - xxxMapper.selectOne() → this.xxxRepository.findOne()
|
||||||
|
* - xxxMapper.selectList() → this.xxxRepository.find()
|
||||||
|
* - xxxMapper.insert() → this.xxxRepository.save()
|
||||||
|
* - xxxMapper.update() → this.xxxRepository.save()
|
||||||
|
* - xxxMapper.delete() → this.xxxRepository.delete()
|
||||||
*/
|
*/
|
||||||
class MapperConverter {
|
class MapperConverter {
|
||||||
/**
|
/**
|
||||||
* 转换Mapper调用
|
* 转换Mapper方法调用
|
||||||
*/
|
*/
|
||||||
convert(javaCode, context = {}) {
|
convert(javaCode) {
|
||||||
let tsCode = javaCode;
|
let tsCode = javaCode;
|
||||||
|
|
||||||
// xxxMapper.selectOne() → this.xxxRepository.findOne()
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsCode = tsCode.replace(/(\w+Mapper)\.selectOne\(/g, (match, mapperName) => {
|
// 【Mapper查询方法】→ Repository查询方法
|
||||||
const repoName = mapperName.replace('Mapper', 'Repository');
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
const camelRepoName = this.toCamelCase(repoName);
|
|
||||||
return `this.${camelRepoName}.findOne(`;
|
|
||||||
});
|
|
||||||
|
|
||||||
// xxxMapper.selectList() → this.xxxRepository.find()
|
// xxxMapper.selectPage(...) → this.xxxRepository.findAndCount(...)
|
||||||
tsCode = tsCode.replace(/(\w+Mapper)\.selectList\(/g, (match, mapperName) => {
|
// 注意:参数需要手工调整
|
||||||
const repoName = mapperName.replace('Mapper', 'Repository');
|
tsCode = tsCode.replace(
|
||||||
const camelRepoName = this.toCamelCase(repoName);
|
/(\w+)Mapper\.selectPage\(([^)]*)\)/g,
|
||||||
return `this.${camelRepoName}.find(`;
|
'this.$1Repository.findAndCount({ /* TODO: 将MyBatis分页参数改为TypeORM的skip/take */ })'
|
||||||
});
|
);
|
||||||
|
|
||||||
// xxxMapper.insert() → this.xxxRepository.save()
|
// xxxMapper.selectOne(...) → this.xxxRepository.findOne(...)
|
||||||
tsCode = tsCode.replace(/(\w+Mapper)\.insert\(/g, (match, mapperName) => {
|
tsCode = tsCode.replace(
|
||||||
const repoName = mapperName.replace('Mapper', 'Repository');
|
/(\w+)Mapper\.selectOne\(([^)]*)\)/g,
|
||||||
const camelRepoName = this.toCamelCase(repoName);
|
'this.$1Repository.findOne({ /* TODO: 将QueryWrapper改为where条件 */ })'
|
||||||
return `this.${camelRepoName}.save(`;
|
);
|
||||||
});
|
|
||||||
|
|
||||||
// xxxMapper.update() → this.xxxRepository.save()
|
// xxxMapper.selectList(...) → this.xxxRepository.find(...)
|
||||||
tsCode = tsCode.replace(/(\w+Mapper)\.update\(/g, (match, mapperName) => {
|
tsCode = tsCode.replace(
|
||||||
const repoName = mapperName.replace('Mapper', 'Repository');
|
/(\w+)Mapper\.selectList\(([^)]*)\)/g,
|
||||||
const camelRepoName = this.toCamelCase(repoName);
|
'this.$1Repository.find({ /* TODO: 将QueryWrapper改为where条件 */ })'
|
||||||
return `this.${camelRepoName}.save(`;
|
);
|
||||||
});
|
|
||||||
|
|
||||||
// xxxMapper.delete() → this.xxxRepository.delete()
|
// xxxMapper.selectCount(...) → this.xxxRepository.count(...)
|
||||||
tsCode = tsCode.replace(/(\w+Mapper)\.delete\(/g, (match, mapperName) => {
|
tsCode = tsCode.replace(
|
||||||
const repoName = mapperName.replace('Mapper', 'Repository');
|
/(\w+)Mapper\.selectCount\(([^)]*)\)/g,
|
||||||
const camelRepoName = this.toCamelCase(repoName);
|
'this.$1Repository.count({ /* TODO: 将QueryWrapper改为where条件 */ })'
|
||||||
return `this.${camelRepoName}.delete(`;
|
);
|
||||||
});
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【Mapper修改方法】→ Repository修改方法
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// xxxMapper.insert(model) → this.xxxRepository.save(model)
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/(\w+)Mapper\.insert\(([^)]*)\)/g,
|
||||||
|
'this.$1Repository.save($2)'
|
||||||
|
);
|
||||||
|
|
||||||
|
// xxxMapper.update(model) → this.xxxRepository.save(model)
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/(\w+)Mapper\.update\(([^)]*)\)/g,
|
||||||
|
'this.$1Repository.save($2)'
|
||||||
|
);
|
||||||
|
|
||||||
|
// xxxMapper.delete(...) → this.xxxRepository.delete(...)
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/(\w+)Mapper\.delete\(([^)]*)\)/g,
|
||||||
|
'this.$1Repository.delete({ /* TODO: 将QueryWrapper改为where条件 */ })'
|
||||||
|
);
|
||||||
|
|
||||||
|
// xxxMapper.deleteById(id) → this.xxxRepository.delete(id)
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/(\w+)Mapper\.deleteById\(([^)]*)\)/g,
|
||||||
|
'this.$1Repository.delete($2)'
|
||||||
|
);
|
||||||
|
|
||||||
return tsCode;
|
return tsCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换为camelCase
|
* 分析需要的imports
|
||||||
*/
|
*/
|
||||||
toCamelCase(str) {
|
analyzeImports(tsCode) {
|
||||||
return str.charAt(0).toLowerCase() + str.slice(1);
|
const imports = new Set();
|
||||||
|
|
||||||
|
// 检查是否使用了Repository
|
||||||
|
if (tsCode.includes('Repository')) {
|
||||||
|
imports.add('typeorm:Repository');
|
||||||
|
imports.add('typeorm:InjectRepository');
|
||||||
|
}
|
||||||
|
|
||||||
|
return Array.from(imports);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = MapperConverter;
|
module.exports = MapperConverter;
|
||||||
|
|
||||||
|
|||||||
@@ -1,30 +1,76 @@
|
|||||||
/**
|
/**
|
||||||
* 分页转换器
|
* 分页类转换器
|
||||||
*
|
*
|
||||||
* MyBatis分页 → TypeORM分页
|
* MyBatis分页 → TypeORM分页
|
||||||
|
*
|
||||||
|
* 映射关系:
|
||||||
|
* - IPage<T> → [T[], number]
|
||||||
|
* - Page<T> → { skip, take }
|
||||||
|
* - PageResult<T> → PageResult<T> (V1已有)
|
||||||
*/
|
*/
|
||||||
class PaginationConverter {
|
class PaginationConverter {
|
||||||
/**
|
/**
|
||||||
* 转换分页
|
* 转换分页类
|
||||||
*/
|
*/
|
||||||
convert(javaCode) {
|
convert(javaCode) {
|
||||||
let tsCode = javaCode;
|
let tsCode = javaCode;
|
||||||
|
|
||||||
// IPage<Entity> → TODO: 需要手动处理
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsCode = tsCode.replace(/IPage<(\w+)>/g, '/* TODO: Paginated<$1> */any');
|
// 【IPage】MyBatis分页结果 → TypeORM返回的元组
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
// new Page<Entity>(page, limit) → TODO
|
// IPage<Entity> iPage = ... → const [records, total] = await ...
|
||||||
tsCode = tsCode.replace(/new\s+Page<(\w+)>\(([^,]+),\s*([^)]+)\)/g, '/* TODO: { page: $2, limit: $3 } */');
|
// 注意:这个转换比较复杂,暂时只转换类型声明
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/(?:const|let|var)?\s*(\w+):\s*IPage<(\w+)>\s*=/g,
|
||||||
|
'const [$1Records, $1Total] = await /* TODO: IPage转TypeORM findAndCount */ '
|
||||||
|
);
|
||||||
|
|
||||||
// selectPage() → find() with pagination
|
// IPage<Entity> → [Entity[], number]
|
||||||
tsCode = tsCode.replace(/\.selectPage\(/g, '/* TODO: .find() with take/skip */');
|
tsCode = tsCode.replace(/IPage<(\w+)>/g, '[$1[], number]');
|
||||||
|
|
||||||
// PageResult.build() → new PageResult()
|
// iPage.getRecords() → iPageRecords
|
||||||
tsCode = tsCode.replace(/PageResult\.build\(([^,]+),\s*([^,]+),\s*([^)]+)\)/g, 'new PageResult({ currentPage: $1, perPage: $2, total: $3 })');
|
tsCode = tsCode.replace(/(\w+)\.getRecords\(\)/g, '$1Records');
|
||||||
|
|
||||||
|
// iPage.getTotal() → iPageTotal
|
||||||
|
tsCode = tsCode.replace(/(\w+)\.getTotal\(\)/g, '$1Total');
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【Page】MyBatis分页参数 → TypeORM的skip/take
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// new Page<Entity>(page, limit) → { skip: (page-1)*limit, take: limit }
|
||||||
|
// 注意:这个需要手工调整,暂时标记TODO
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/new\s+Page<(\w+)>\(([^,]+),\s*([^)]+)\)/g,
|
||||||
|
'{ skip: ($2 - 1) * $3, take: $3 } /* TODO: Page<$1>分页参数 */'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Page<Entity> → any
|
||||||
|
tsCode = tsCode.replace(/Page<(\w+)>/g, 'any /* TODO: Page<$1> */');
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【PageResult】V1框架已有,保持不变
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// PageResult.build() 保持不变,V1框架已实现
|
||||||
|
|
||||||
return tsCode;
|
return tsCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分析需要的imports
|
||||||
|
*/
|
||||||
|
analyzeImports(tsCode) {
|
||||||
|
const imports = new Set();
|
||||||
|
|
||||||
|
// 检查是否使用了PageResult
|
||||||
|
if (tsCode.includes('PageResult')) {
|
||||||
|
imports.add('boot:PageResult'); // 从@wwjBoot导入
|
||||||
|
}
|
||||||
|
|
||||||
|
return Array.from(imports);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = PaginationConverter;
|
module.exports = PaginationConverter;
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +1,36 @@
|
|||||||
/**
|
/**
|
||||||
* QueryWrapper转换器
|
* QueryWrapper转换器
|
||||||
*
|
*
|
||||||
* MyBatis QueryWrapper → 移除(TypeORM直接使用where对象)
|
* 策略:MyBatis QueryWrapper → 删除并标记TODO,需手工用TypeORM Repository重写
|
||||||
*
|
*
|
||||||
* 策略:QueryWrapper是MyBatis的查询构造器,在TypeORM中直接使用where条件对象即可
|
* 重要:不自动转换复杂的查询逻辑,保留业务完整性
|
||||||
*/
|
*/
|
||||||
class QueryWrapperConverter {
|
class QueryWrapperConverter {
|
||||||
/**
|
/**
|
||||||
* 转换QueryWrapper
|
* 转换QueryWrapper声明和使用
|
||||||
*/
|
*/
|
||||||
convert(javaCode) {
|
convert(javaCode) {
|
||||||
let tsCode = javaCode;
|
let tsCode = javaCode;
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
// 【策略】直接移除QueryWrapper相关代码,简化为where条件
|
// 【删除QueryWrapper,保留业务逻辑作为TODO注释】
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
// 1. 移除QueryWrapper类型声明
|
// QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
|
||||||
// QueryWrapper<Entity> → 删除
|
// → // TODO: 将QueryWrapper查询改写为TypeORM Repository.find()
|
||||||
tsCode = tsCode.replace(/QueryWrapper<[^>]+>\s*/g, '');
|
tsCode = tsCode.replace(
|
||||||
|
/(?:const|let|var)?\s*(\w+):\s*QueryWrapper<(\w+)>\s*=\s*new\s+QueryWrapper<>?\(\);?/g,
|
||||||
|
'// TODO: $1查询需用TypeORM Repository.find()重写 (查询$2实体)'
|
||||||
|
);
|
||||||
|
|
||||||
// 2. 移除new QueryWrapper<>()
|
// new QueryWrapper<Entity>() → /* TODO: TypeORM where条件 */
|
||||||
// new QueryWrapper<>() → {}
|
tsCode = tsCode.replace(
|
||||||
// new QueryWrapper<Entity>() → {}
|
/new\s+QueryWrapper<(\w+)>\(\)/g,
|
||||||
tsCode = tsCode.replace(/new\s+QueryWrapper<[^>]*>\(\)/g, '{}');
|
'/* TODO: QueryWrapper<$1>需改写为TypeORM的where条件对象 */'
|
||||||
|
);
|
||||||
|
|
||||||
// 3. 简化链式调用
|
// QueryWrapper<Entity> → any (类型占位)
|
||||||
// queryWrapper.eq("field", value) → 保留但简化处理
|
tsCode = tsCode.replace(/QueryWrapper<(\w+)>/g, 'any /* TODO: QueryWrapper<$1> */');
|
||||||
// 实际在mapper.converter.js中会将整个查询转换为TypeORM findOne/find
|
|
||||||
|
|
||||||
return tsCode;
|
return tsCode;
|
||||||
}
|
}
|
||||||
@@ -36,9 +39,10 @@ class QueryWrapperConverter {
|
|||||||
* 分析需要的imports
|
* 分析需要的imports
|
||||||
*/
|
*/
|
||||||
analyzeImports(tsCode) {
|
analyzeImports(tsCode) {
|
||||||
// QueryWrapper不需要额外import
|
// QueryWrapper转换后不需要额外的import,都是TODO标记
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = QueryWrapperConverter;
|
module.exports = QueryWrapperConverter;
|
||||||
|
|
||||||
|
|||||||
@@ -10,29 +10,49 @@
|
|||||||
* 4. 分析需要的imports
|
* 4. 分析需要的imports
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// 导入全局映射器(新)
|
// 导入各个转换器
|
||||||
const JavaToV1Mapper = require('./java-to-v1-mapper');
|
|
||||||
|
|
||||||
// 导入各个转换器(保留用于特定场景)
|
|
||||||
const BasicSyntaxConverter = require('./syntax/basic-syntax.converter');
|
const BasicSyntaxConverter = require('./syntax/basic-syntax.converter');
|
||||||
|
const TypeConverter = require('./syntax/type.converter');
|
||||||
|
const ExceptionConverter = require('./syntax/exception.converter');
|
||||||
|
|
||||||
const ConfigConverter = require('./utils/config.converter');
|
const ConfigConverter = require('./utils/config.converter');
|
||||||
const FileConverter = require('./utils/file.converter');
|
const FileConverter = require('./utils/file.converter');
|
||||||
const StringConverter = require('./utils/string.converter');
|
const StringConverter = require('./utils/string.converter');
|
||||||
const CollectionConverter = require('./utils/collection.converter');
|
const CollectionConverter = require('./utils/collection.converter');
|
||||||
|
const JsonConverter = require('./utils/json.converter');
|
||||||
|
const ObjectConverter = require('./utils/object.converter');
|
||||||
|
|
||||||
|
const QueryWrapperConverter = require('./mybatis/query-wrapper.converter');
|
||||||
|
const MapperConverter = require('./mybatis/mapper.converter');
|
||||||
|
const PaginationConverter = require('./mybatis/pagination.converter');
|
||||||
|
|
||||||
|
const GetterSetterConverter = require('./method/getter-setter.converter');
|
||||||
|
const MethodCallConverter = require('./method/method-call.converter');
|
||||||
|
const StreamApiConverter = require('./method/stream-api.converter');
|
||||||
|
|
||||||
const PostProcessor = require('./post-processor');
|
const PostProcessor = require('./post-processor');
|
||||||
|
|
||||||
class ServiceMethodConverter {
|
class ServiceMethodConverter {
|
||||||
constructor() {
|
constructor() {
|
||||||
// 初始化全局映射器(优先使用)
|
// 初始化所有转换器
|
||||||
this.v1Mapper = new JavaToV1Mapper();
|
|
||||||
|
|
||||||
// 初始化特定转换器(用于特殊场景)
|
|
||||||
this.basicSyntax = new BasicSyntaxConverter();
|
this.basicSyntax = new BasicSyntaxConverter();
|
||||||
|
this.type = new TypeConverter();
|
||||||
|
this.exception = new ExceptionConverter();
|
||||||
|
|
||||||
this.config = new ConfigConverter();
|
this.config = new ConfigConverter();
|
||||||
this.file = new FileConverter();
|
this.file = new FileConverter();
|
||||||
this.string = new StringConverter();
|
this.string = new StringConverter();
|
||||||
this.collection = new CollectionConverter();
|
this.collection = new CollectionConverter();
|
||||||
|
this.json = new JsonConverter();
|
||||||
|
this.object = new ObjectConverter();
|
||||||
|
|
||||||
|
this.queryWrapper = new QueryWrapperConverter();
|
||||||
|
this.mapper = new MapperConverter();
|
||||||
|
this.pagination = new PaginationConverter();
|
||||||
|
|
||||||
|
this.getterSetter = new GetterSetterConverter();
|
||||||
|
this.methodCall = new MethodCallConverter();
|
||||||
|
this.streamApi = new StreamApiConverter();
|
||||||
|
|
||||||
this.postProcessor = new PostProcessor();
|
this.postProcessor = new PostProcessor();
|
||||||
}
|
}
|
||||||
@@ -52,26 +72,52 @@ class ServiceMethodConverter {
|
|||||||
let tsBody = javaMethodBody;
|
let tsBody = javaMethodBody;
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
// 【核心转换】使用全局映射器(Java → V1框架)
|
// 【阶段1】基础语法转换
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
this.v1Mapper.resetImports();
|
tsBody = this.basicSyntax.convert(tsBody);
|
||||||
tsBody = this.v1Mapper.convert(tsBody);
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
// 【补充转换】特定场景处理
|
// 【阶段2】类型转换
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsBody = this.basicSyntax.convert(tsBody); // Lambda、for-each等语法
|
tsBody = this.type.convert(tsBody);
|
||||||
tsBody = this.config.convert(tsBody); // WebAppEnvs/GlobalConfig → AppConfigService
|
|
||||||
tsBody = this.file.convert(tsBody); // 文件操作补充转换
|
|
||||||
tsBody = this.string.convert(tsBody); // String工具补充
|
|
||||||
tsBody = this.collection.convert(tsBody); // Collection工具补充
|
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
// 【后处理】清理与格式化
|
// 【阶段3】工具类转换
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
tsBody = this.config.convert(tsBody);
|
||||||
|
tsBody = this.file.convert(tsBody);
|
||||||
|
tsBody = this.string.convert(tsBody);
|
||||||
|
tsBody = this.collection.convert(tsBody);
|
||||||
|
tsBody = this.json.convert(tsBody);
|
||||||
|
tsBody = this.object.convert(tsBody);
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【阶段4】MyBatis → TypeORM转换
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
tsBody = this.queryWrapper.convert(tsBody);
|
||||||
|
tsBody = this.mapper.convert(tsBody, context);
|
||||||
|
tsBody = this.pagination.convert(tsBody);
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【阶段5】方法调用转换
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
tsBody = this.streamApi.convert(tsBody);
|
||||||
|
tsBody = this.methodCall.convert(tsBody);
|
||||||
|
tsBody = this.getterSetter.convert(tsBody); // 最后转换getter/setter
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【阶段6】异常处理转换
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
tsBody = this.exception.convert(tsBody);
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【阶段7】后处理清理
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsBody = this.postProcessor.process(tsBody);
|
tsBody = this.postProcessor.process(tsBody);
|
||||||
|
|
||||||
// 添加缩进
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【阶段8】添加缩进
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsBody = tsBody.split('\n').map(line => ' ' + line).join('\n');
|
tsBody = tsBody.split('\n').map(line => ' ' + line).join('\n');
|
||||||
|
|
||||||
return tsBody;
|
return tsBody;
|
||||||
@@ -84,42 +130,49 @@ class ServiceMethodConverter {
|
|||||||
* @returns {object} 需要导入的模块
|
* @returns {object} 需要导入的模块
|
||||||
*/
|
*/
|
||||||
analyzeImports(convertedBody) {
|
analyzeImports(convertedBody) {
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
// 【核心】从全局映射器获取imports
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
||||||
const v1Imports = this.v1Mapper.getImports();
|
|
||||||
|
|
||||||
const imports = {
|
const imports = {
|
||||||
nestjs: new Set(v1Imports.nestjs),
|
nestjs: new Set(),
|
||||||
boot: new Set(v1Imports.boot),
|
boot: new Set(),
|
||||||
typeorm: new Set(v1Imports.typeorm),
|
nodeModules: new Set()
|
||||||
nodeModules: new Set(v1Imports.nodeModules)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
// 【补充】从特定转换器获取额外imports
|
// 【NestJS异常】
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
const nestjsImports = this.exception.analyzeImports(convertedBody);
|
||||||
|
nestjsImports.forEach(imp => imports.nestjs.add(imp));
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【Node.js模块】
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
const nodeModules = this.file.analyzeNodeModules(convertedBody);
|
||||||
|
nodeModules.forEach(mod => imports.nodeModules.add(mod));
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【Boot层工具类】
|
||||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
// AppConfigService (from config.converter.js)
|
// StringUtils
|
||||||
const configImports = this.config.analyzeImports(convertedBody);
|
|
||||||
configImports.forEach(imp => imports.boot.add(imp));
|
|
||||||
|
|
||||||
// StringUtils (from string.converter.js)
|
|
||||||
const stringImports = this.string.analyzeImports(convertedBody);
|
const stringImports = this.string.analyzeImports(convertedBody);
|
||||||
stringImports.forEach(imp => imports.boot.add(imp));
|
stringImports.forEach(imp => imports.boot.add(imp));
|
||||||
|
|
||||||
// Collection utils (from collection.converter.js)
|
// Collection判空(可能需要StringUtils)
|
||||||
const collectionImports = this.collection.analyzeImports(convertedBody);
|
const collectionImports = this.collection.analyzeImports(convertedBody);
|
||||||
collectionImports.forEach(imp => imports.boot.add(imp));
|
collectionImports.forEach(imp => imports.boot.add(imp));
|
||||||
|
|
||||||
// Node modules (from file.converter.js)
|
// JsonUtils
|
||||||
const nodeModules = this.file.analyzeNodeModules(convertedBody);
|
const jsonImports = this.json.analyzeImports(convertedBody);
|
||||||
nodeModules.forEach(mod => imports.nodeModules.add(mod));
|
jsonImports.forEach(imp => imports.boot.add(imp));
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【配置访问】AppConfigService (Boot层)
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
const configImports = this.config.analyzeImports(convertedBody);
|
||||||
|
configImports.forEach(imp => imports.boot.add(imp));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
nestjs: Array.from(imports.nestjs),
|
nestjs: Array.from(imports.nestjs),
|
||||||
boot: Array.from(imports.boot),
|
boot: Array.from(imports.boot),
|
||||||
typeorm: Array.from(imports.typeorm),
|
|
||||||
nodeModules: Array.from(imports.nodeModules)
|
nodeModules: Array.from(imports.nodeModules)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,55 @@
|
|||||||
/**
|
/**
|
||||||
* JSON工具类转换器
|
* JSON工具转换器
|
||||||
*
|
*
|
||||||
* JSONUtil / JSON相关 → Boot层JsonUtils或TypeScript JSON
|
* Java JSON utils → V1 JsonUtils (from @wwjBoot)
|
||||||
|
*
|
||||||
|
* 映射关系(参考JAVA_TO_V1_MAPPING.md):
|
||||||
|
* - JSONUtil.parseObj(str) → JsonUtils.parseObject<T>(str)
|
||||||
|
* - JSONUtil.toBean(json, Class) → Object.assign(new Class(), json)
|
||||||
|
* - JSONObject → Record<string, any>
|
||||||
|
* - JsonLoadUtils.loadJsonString(file, name) → JsonUtils.parseObject(fs.readFileSync(...))
|
||||||
*/
|
*/
|
||||||
class JsonConverter {
|
class JsonConverter {
|
||||||
/**
|
/**
|
||||||
* 转换JSON工具类
|
* 转换JSON工具
|
||||||
*/
|
*/
|
||||||
convert(javaCode) {
|
convert(javaCode) {
|
||||||
let tsCode = javaCode;
|
let tsCode = javaCode;
|
||||||
|
|
||||||
// 1. JSONUtil.parseObj() → JSON.parse() (简单内联)
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsCode = tsCode.replace(/JSONUtil\.parseObj\(([^)]+)\)/g, 'JSON.parse($1)');
|
// 【JSONUtil】→ JsonUtils (@wwjBoot)
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
// 2. ✅ JSONUtil.toBean() → 暂时保留TODO(需要手动处理泛型转换)
|
// JSONUtil.parseObj(str) → JsonUtils.parseObject<any>(str)
|
||||||
tsCode = tsCode.replace(/JSONUtil\.toBean\(([^,]+),\s*([^)]+)\.class\)/g, '/* TODO: JSONUtil.toBean($1, $2) */Object.assign(new $2(), JSON.parse(JSON.stringify($1)))');
|
tsCode = tsCode.replace(
|
||||||
|
/JSONUtil\.parseObj\(([^)]+)\)/g,
|
||||||
|
'JsonUtils.parseObject<any>($1)'
|
||||||
|
);
|
||||||
|
|
||||||
// 3. JSONObject → Record<string, any> (TypeScript标准)
|
// JSONUtil.toBean(json, SomeClass.class) → Object.assign(new SomeClass(), json)
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/JSONUtil\.toBean\(([^,]+),\s*(\w+)\.class\)/g,
|
||||||
|
'Object.assign(new $2(), $1) /* TODO: 检查$2构造函数 */'
|
||||||
|
);
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【JSONObject】→ Record<string, any>
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// JSONObject → Record<string, any>
|
||||||
tsCode = tsCode.replace(/JSONObject/g, 'Record<string, any>');
|
tsCode = tsCode.replace(/JSONObject/g, 'Record<string, any>');
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【JsonLoadUtils】→ fs + JsonUtils
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// JsonLoadUtils.loadJsonString(file, "info.json")
|
||||||
|
// → JsonUtils.parseObject(fs.readFileSync(path.join(file, "info.json"), 'utf-8'))
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/JsonLoadUtils\.loadJsonString\(([^,]+),\s*([^)]+)\)/g,
|
||||||
|
'JsonUtils.parseObject<any>(fs.readFileSync(path.join($1, $2), \'utf-8\'))'
|
||||||
|
);
|
||||||
|
|
||||||
return tsCode;
|
return tsCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,9 +59,9 @@ class JsonConverter {
|
|||||||
analyzeImports(tsCode) {
|
analyzeImports(tsCode) {
|
||||||
const imports = new Set();
|
const imports = new Set();
|
||||||
|
|
||||||
// 检查是否使用了JsonUtils(暂时未直接使用,未来可能需要)
|
// 检查是否使用了JsonUtils
|
||||||
if (tsCode.includes('JsonUtils.')) {
|
if (tsCode.includes('JsonUtils')) {
|
||||||
imports.add('JsonUtils');
|
imports.add('JsonUtils'); // 从@wwjBoot/vendor/utils导入
|
||||||
}
|
}
|
||||||
|
|
||||||
return Array.from(imports);
|
return Array.from(imports);
|
||||||
@@ -38,4 +69,3 @@ class JsonConverter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = JsonConverter;
|
module.exports = JsonConverter;
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +1,113 @@
|
|||||||
/**
|
/**
|
||||||
* 对象工具类转换器
|
* Object工具转换器
|
||||||
*
|
*
|
||||||
* ObjectUtil / BeanUtils等 → TypeScript对象操作
|
* Java Object utils → V1 CommonUtils (from @wwjBoot)
|
||||||
|
*
|
||||||
|
* 映射关系(参考JAVA_TO_V1_MAPPING.md):
|
||||||
|
* - ObjectUtil.isNotEmpty(obj) → CommonUtils.isNotEmpty(obj)
|
||||||
|
* - ObjectUtil.isEmpty(obj) → CommonUtils.isEmpty(obj)
|
||||||
|
* - BeanUtils.copyProperties(src, dest) → Object.assign(dest, src)
|
||||||
|
* - Assert.notNull(obj, msg) → if (!obj) throw new BadRequestException(msg)
|
||||||
|
* - Assert.isTrue(bool, msg) → if (!bool) throw new BadRequestException(msg)
|
||||||
*/
|
*/
|
||||||
class ObjectConverter {
|
class ObjectConverter {
|
||||||
/**
|
/**
|
||||||
* 转换对象工具类
|
* 转换Object工具
|
||||||
*/
|
*/
|
||||||
convert(javaCode) {
|
convert(javaCode) {
|
||||||
let tsCode = javaCode;
|
let tsCode = javaCode;
|
||||||
|
|
||||||
// 1. ObjectUtil.isNotEmpty() → value && ...
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsCode = tsCode.replace(/ObjectUtil\.isNotEmpty\(([^)]+)\)/g, '($1 && Object.keys($1).length > 0)');
|
// 【ObjectUtil】→ CommonUtils (@wwjBoot)
|
||||||
tsCode = tsCode.replace(/ObjectUtil\.isEmpty\(([^)]+)\)/g, '(!$1 || Object.keys($1).length === 0)');
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
// 2. ObjectUtil.defaultIfNull(a, b) → a ?? b
|
// ObjectUtil.isNotEmpty(obj) → CommonUtils.isNotEmpty(obj)
|
||||||
tsCode = tsCode.replace(/ObjectUtil\.defaultIfNull\(([^,]+),\s*([^)]+)\)/g, '$1 ?? $2');
|
tsCode = tsCode.replace(
|
||||||
|
/ObjectUtil\.isNotEmpty\(([^)]+)\)/g,
|
||||||
|
'CommonUtils.isNotEmpty($1)'
|
||||||
|
);
|
||||||
|
|
||||||
// 3. BeanUtils.copyProperties(src, dest) → Object.assign(dest, src)
|
// ObjectUtil.isEmpty(obj) → CommonUtils.isEmpty(obj)
|
||||||
tsCode = tsCode.replace(/BeanUtils\.copyProperties\(([^,]+),\s*([^)]+)\)/g, 'Object.assign($2, $1)');
|
tsCode = tsCode.replace(
|
||||||
|
/ObjectUtil\.isEmpty\(([^)]+)\)/g,
|
||||||
|
'CommonUtils.isEmpty($1)'
|
||||||
|
);
|
||||||
|
|
||||||
// 4. System.out.println() → console.log()
|
// ObjectUtils.isNotEmpty(obj) → CommonUtils.isNotEmpty(obj)
|
||||||
tsCode = tsCode.replace(/System\.out\.println\(/g, 'console.log(');
|
tsCode = tsCode.replace(
|
||||||
tsCode = tsCode.replace(/System\.err\.println\(/g, 'console.error(');
|
/ObjectUtils\.isNotEmpty\(([^)]+)\)/g,
|
||||||
|
'CommonUtils.isNotEmpty($1)'
|
||||||
|
);
|
||||||
|
|
||||||
// 5. System.currentTimeMillis() → Date.now()
|
// ObjectUtils.isEmpty(obj) → CommonUtils.isEmpty(obj)
|
||||||
tsCode = tsCode.replace(/System\.currentTimeMillis\(\)/g, 'Date.now()');
|
tsCode = tsCode.replace(
|
||||||
|
/ObjectUtils\.isEmpty\(([^)]+)\)/g,
|
||||||
|
'CommonUtils.isEmpty($1)'
|
||||||
|
);
|
||||||
|
|
||||||
// 6. Assert.notNull() → if (!x) throw new Error()
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
tsCode = tsCode.replace(/Assert\.notNull\(([^,]+),\s*([^)]+)\)/g, 'if (!$1) throw new BadRequestException($2)');
|
// 【BeanUtils】→ Object.assign (TypeScript 原生)
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// BeanUtils.copyProperties(src, dest) → Object.assign(dest, src)
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/BeanUtils\.copyProperties\(([^,]+),\s*([^)]+)\)/g,
|
||||||
|
'Object.assign($2, $1)'
|
||||||
|
);
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【Assert】→ if + throw BadRequestException
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// Assert.notNull(obj, "msg") → if (!obj) throw new BadRequestException("msg")
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/Assert\.notNull\(([^,]+),\s*([^)]+)\);?/g,
|
||||||
|
'if (!$1) throw new BadRequestException($2);'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Assert.isTrue(condition, "msg") → if (!condition) throw new BadRequestException("msg")
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/Assert\.isTrue\(([^,]+),\s*([^)]+)\);?/g,
|
||||||
|
'if (!($1)) throw new BadRequestException($2);'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Assert.isFalse(condition, "msg") → if (condition) throw new BadRequestException("msg")
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/Assert\.isFalse\(([^,]+),\s*([^)]+)\);?/g,
|
||||||
|
'if ($1) throw new BadRequestException($2);'
|
||||||
|
);
|
||||||
|
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
// 【ImageUtils】→ fs.readFileSync (Node.js 原生)
|
||||||
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
// ImageUtils.imageToBase64(path) → fs.readFileSync(path, 'base64')
|
||||||
|
tsCode = tsCode.replace(
|
||||||
|
/ImageUtils\.imageToBase64\(([^)]+)\)/g,
|
||||||
|
'fs.readFileSync($1, \'base64\')'
|
||||||
|
);
|
||||||
|
|
||||||
return tsCode;
|
return tsCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分析需要的imports
|
||||||
|
*/
|
||||||
|
analyzeImports(tsCode) {
|
||||||
|
const imports = new Set();
|
||||||
|
|
||||||
|
// 检查是否使用了CommonUtils
|
||||||
|
if (tsCode.includes('CommonUtils')) {
|
||||||
|
imports.add('CommonUtils'); // 从@wwjBoot导入
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否使用了BadRequestException
|
||||||
|
if (tsCode.includes('BadRequestException')) {
|
||||||
|
imports.add('nestjs:BadRequestException');
|
||||||
|
}
|
||||||
|
|
||||||
|
return Array.from(imports);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = ObjectConverter;
|
module.exports = ObjectConverter;
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AddonDevelopBuildServiceImplService {
|
export class AddonDevelopBuildServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -16,21 +15,21 @@ export class AddonDevelopBuildServiceImplService {
|
|||||||
* build
|
* build
|
||||||
*/
|
*/
|
||||||
async build(...args: any[]): Promise<any> {
|
async build(...args: any[]): Promise<any> {
|
||||||
if (this.config.get('runActive') !== "dev") throw new BadRequestException("只有在开发环境下才可以进行打包操作");
|
if (this.appConfig.runActive !== "dev") throw new BadRequestException("只有在开发环境下才可以进行打包操作");
|
||||||
|
|
||||||
if (!fs.existsSync(this.config.get('projectNiucloudAddon' + addon))) throw new BadRequestException("插件不存在");
|
if (!this.appConfig.projectNiucloudAddon + fs.existsSync(addon)) throw new BadRequestException("插件不存在");
|
||||||
const infoFile: string = this.config.get('projectNiucloudAddon' + addon + "/src/main/resources/info.json");
|
const infoFile: string = this.appConfig.projectNiucloudAddon + addon + "/src/main/resources/info.json";
|
||||||
if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在");
|
if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在");
|
||||||
|
|
||||||
this.addon = addon;
|
this.addon = addon;
|
||||||
this.addonPath = this.config.get('webRootDownAddon') + addon + "/";
|
this.addonPath = this.appConfig.webRootDownAddon + addon + "/";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (const child of fs.readdirSync(addonPath)) {
|
for (const child of fs.readdirSync(addonPath)) {
|
||||||
if (fs.lstatSync(child).isDirectory() && path.basename(child) !== "sql") fs.rmSync(child, { recursive: true, force: true });
|
if (fs.lstatSync(child).isDirectory() && path.basename(child) !== "sql") fs.rmSync(child, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
fs.copyFileSync(infoFile, this.addonPath + "info.json");
|
fs.copyFileSync(infoFile, this.addonPath + "info.json");
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,8 +51,8 @@ export class AddonDevelopBuildServiceImplService {
|
|||||||
* download
|
* download
|
||||||
*/
|
*/
|
||||||
async download(...args: any[]): Promise<any> {
|
async download(...args: any[]): Promise<any> {
|
||||||
const file: string = this.config.get('webRootDownResource' + "temp/" + key + ".zip");
|
const file: string = this.appConfig.webRootDownResource + "temp/" + key + ".zip";
|
||||||
if (!fs.existsSync(file)) throw new BadRequestException("请先打包插件");
|
if (!fs.existsSync(file)) throw new BadRequestException("请先打包插件");
|
||||||
return file.replace(this.config.get('projectRoot'), "");
|
return file.replace(this.appConfig.projectRoot, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AddonDevelopServiceImplService {
|
export class AddonDevelopServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -16,35 +15,35 @@ export class AddonDevelopServiceImplService {
|
|||||||
* list
|
* list
|
||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const list: AddonDevelopListVo[] = [];
|
AddonDevelopListVo[] list = [];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 获取已安装的插件
|
// 获取已安装的插件
|
||||||
const installAddonList: Record<string, any> = coreAddonService.getInstallAddonList();
|
const installAddonList: Record<String, InstallAddonListVo> = coreAddonService.getInstallAddonList();
|
||||||
|
|
||||||
// 获取本地所有的插件
|
// 获取本地所有的插件
|
||||||
const localAddons: string[] = Files.list(Paths.get(this.config.get('webRootDownAddon')))
|
File[] localAddons = Files.list(path.join(this.appConfig.webRootDownAddon))
|
||||||
.map(path => path.toFile())
|
.map(path => path.toFile())
|
||||||
.filter(file => fs.lstatSync(file).isDirectory())
|
.filter(file => fs.lstatSync(file).isDirectory())
|
||||||
.collect(Collectors.toList());
|
;
|
||||||
|
|
||||||
for (const file of localAddons) {
|
for (const file of localAddons) {
|
||||||
if (file, "info.json".exists()) {
|
if (fs.existsSync(path.join(file, "info.json"))) {
|
||||||
const info: Record<string, any> = JSONUtil.parseObj(JsonLoadUtils.loadJsonString(file, "info.json"));
|
const info: Record<string, any> = JSON.parse(JSON.parse(fs.readFileSync(path.join(file, "info.json", 'utf-8'))));
|
||||||
const addon: string = info.getStr("key");
|
const addon: string = info.getStr("key");
|
||||||
const addonDevelopListVo: AddonDevelopListVo = JSONUtil.toBean(info, AddonDevelopListVo.class);
|
const addonDevelopListVo: AddonDevelopListVo = Object.assign(new AddonDevelopListVo(), info);
|
||||||
if (installAddonList.get(addon) != null) addonDevelopListVo.setInstallInfo(installAddonList.get(addon));
|
if (installAddonList.get(addon) != null) addonDevelopListVo.setInstallInfo(installAddonList.get(addon));
|
||||||
addonDevelopListVo.setIcon(ImageUtils.imageToBase64(file + "/resource/icon.png"));
|
addonDevelopListVo.setIcon(ImageUtils.imageToBase64(file + "/resource/icon.png"));
|
||||||
addonDevelopListVo.setCover(ImageUtils.imageToBase64(file + "/resource/cover.png"));
|
addonDevelopListVo.setCover(ImageUtils.imageToBase64(file + "/resource/cover.png"));
|
||||||
list.add(addonDevelopListVo);
|
list.push(addonDevelopListVo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getSearch()) && list.size() > 0) {
|
if (!!searchParam.getSearch() && list.length > 0) {
|
||||||
list = list.stream().filter(addonDevelopListVo => addonDevelopListVo.getTitle().includes(searchParam.getSearch())).toList();
|
list = list.filter(addonDevelopListVo => addonDevelopListVo.getTitle().includes(searchParam.getSearch())).toList();
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (e) {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
@@ -54,11 +53,11 @@ export class AddonDevelopServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const infoFile: string = this.config.get('webRootDownAddon' + key + "/info.json");
|
const infoFile: string = this.appConfig.webRootDownAddon + key + "/info.json";
|
||||||
if (!fs.existsSync(infoFile)) return null;
|
if (!fs.existsSync(infoFile)) return null;
|
||||||
|
|
||||||
const info: Record<string, any> = JSONUtil.parseObj(JsonLoadUtils.loadJsonString(infoFile));
|
const info: Record<string, any> = JSON.parse(JSON.parse(fs.readFileSync(path.join(infoFile));
|
||||||
const addonDevelopInfoVo: AddonDevelopInfoVo = JSONUtil.toBean(info, AddonDevelopInfoVo.class);
|
const addonDevelopInfoVo: AddonDevelopInfoVo = Object.assign(new AddonDevelopInfoVo(), info), 'utf-8'));
|
||||||
|
|
||||||
return addonDevelopInfoVo;
|
return addonDevelopInfoVo;
|
||||||
}
|
}
|
||||||
@@ -67,7 +66,7 @@ export class AddonDevelopServiceImplService {
|
|||||||
* add
|
* add
|
||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const infoFile: string = this.config.get('webRootDownAddon' + param.getKey() + "/info.json");
|
const infoFile: string = this.appConfig.webRootDownAddon + param.getKey( + "/info.json");
|
||||||
if (fs.existsSync(infoFile)) throw new BadRequestException("已存在相同插件标识的应用");
|
if (fs.existsSync(infoFile)) throw new BadRequestException("已存在相同插件标识的应用");
|
||||||
|
|
||||||
this.generateFile(param);
|
this.generateFile(param);
|
||||||
@@ -77,7 +76,7 @@ export class AddonDevelopServiceImplService {
|
|||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const infoFile: string = this.config.get('webRootDownAddon' + param.getKey() + "/info.json");
|
const infoFile: string = this.appConfig.webRootDownAddon + param.getKey( + "/info.json");
|
||||||
if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在");
|
if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在");
|
||||||
|
|
||||||
this.generateFile(param);
|
this.generateFile(param);
|
||||||
@@ -100,16 +99,16 @@ export class AddonDevelopServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const infoFile: string = this.config.get('webRootDownAddon' + key + "/info.json");
|
const infoFile: string = this.appConfig.webRootDownAddon + key + "/info.json";
|
||||||
if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在");
|
if (!fs.existsSync(infoFile)) throw new BadRequestException("插件不存在");
|
||||||
|
|
||||||
const addon: Addon = coreAddonService.getInfoByKey(key);
|
const addon: Addon = coreAddonService.getInfoByKey(key);
|
||||||
if (addon != null) throw new BadRequestException("已安装的插件不允许删除");
|
if (addon != null) throw new BadRequestException("已安装的插件不允许删除");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
fs.rmSync(this.config.get('webRootDownAddon', { recursive: true, force: true } + key));
|
fs.rmSync(this.appConfig.webRootDownAddon + key, { recursive: true, force: true });
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,33 +16,33 @@ export class AddonLogServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<AddonLog> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<AddonLog> = addonLogMapper.selectPage(new Page<AddonLog>(page, limit), queryWrapper);
|
iPage = this.addonLogRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
|
|
||||||
const list: AddonLogListVo[] = [];
|
AddonLogListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: AddonLogListVo = new AddonLogListVo();
|
const vo: AddonLogListVo = new AddonLogListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page,limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page,limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* detail
|
* detail
|
||||||
*/
|
*/
|
||||||
async detail(...args: any[]): Promise<any> {
|
async detail(...args: any[]): Promise<any> {
|
||||||
const model: AddonLog = addonLogMapper.selectOne(
|
const model: AddonLog = this.addonLogRepository.findOne(
|
||||||
new QueryWrapper<AddonLog>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: AddonLogInfoVo = new AddonLogInfoVo();
|
const vo: AddonLogInfoVo = new AddonLogInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,21 +55,21 @@ export class AddonLogServiceImplService {
|
|||||||
model.setKey(AddonLogParam.getKey());
|
model.setKey(AddonLogParam.getKey());
|
||||||
model.setFromVersion(AddonLogParam.getFromVersion());
|
model.setFromVersion(AddonLogParam.getFromVersion());
|
||||||
model.setToVersion(AddonLogParam.getToVersion());
|
model.setToVersion(AddonLogParam.getToVersion());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
addonLogMapper.insert(model);
|
this.addonLogRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: AddonLog = addonLogMapper.selectOne(
|
const model: AddonLog = this.addonLogRepository.findOne(
|
||||||
new QueryWrapper<AddonLog>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
addonLogMapper.delete(new QueryWrapper<AddonLog>().eq("id", id));
|
this.addonLogRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AddonServiceImplService {
|
export class AddonServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -18,13 +17,13 @@ export class AddonServiceImplService {
|
|||||||
async getLocalAddonList(...args: any[]): Promise<any> {
|
async getLocalAddonList(...args: any[]): Promise<any> {
|
||||||
const vo: LocalAddonListVo = new LocalAddonListVo();
|
const vo: LocalAddonListVo = new LocalAddonListVo();
|
||||||
|
|
||||||
const list: Record<string, any> = {};
|
const list: Record<String, LocalAddonInfoVo> = new HashRecord<>();
|
||||||
|
|
||||||
// 获取已安装的插件
|
// 获取已安装的插件
|
||||||
const installAddonList: Record<string, any> = iCoreAddonService.getInstallAddonList();
|
const installAddonList: Record<string, any> = iCoreAddonService.getInstallAddonList();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const moduleList: ModuleListVo[] = niucloudService.getModuleList();
|
ModuleListVo[] moduleList = niucloudService.getModuleList();
|
||||||
|
|
||||||
for (const item of moduleList) {
|
for (const item of moduleList) {
|
||||||
ModuleListVo.const app: App = item.getApp();
|
ModuleListVo.const app: App = item.getApp();
|
||||||
@@ -43,14 +42,14 @@ export class AddonServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取本地所有的插件
|
// 获取本地所有的插件
|
||||||
const localAddons: string[] = Files.list(Paths.get(this.config.get('webRootDownAddon')))
|
File[] localAddons = Files.list(path.join(this.appConfig.webRootDownAddon))
|
||||||
.map(path => path.toFile())
|
.map(path => path.toFile())
|
||||||
.filter(file => fs.lstatSync(file).isDirectory())
|
.filter(file => fs.lstatSync(file).isDirectory())
|
||||||
.collect(Collectors.toList());
|
;
|
||||||
|
|
||||||
for (const file of localAddons) {
|
for (const file of localAddons) {
|
||||||
if (file, "info.json".exists()) {
|
if (fs.existsSync(path.join(file, "info.json"))) {
|
||||||
const info: Record<string, any> = JSONUtil.parseObj(JsonLoadUtils.loadJsonString(file, "info.json"));
|
const info: Record<string, any> = JSON.parse(JSON.parse(fs.readFileSync(path.join(file, "info.json", 'utf-8'))));
|
||||||
const addon: string = info.getStr("key");
|
const addon: string = info.getStr("key");
|
||||||
if (list.get(addon) != null) {
|
if (list.get(addon) != null) {
|
||||||
const addonInfoVo: LocalAddonInfoVo = list.get(addon);
|
const addonInfoVo: LocalAddonInfoVo = list.get(addon);
|
||||||
@@ -61,7 +60,7 @@ export class AddonServiceImplService {
|
|||||||
}
|
}
|
||||||
list.put(addon, addonInfoVo);
|
list.put(addon, addonInfoVo);
|
||||||
} else {
|
} else {
|
||||||
const localAddonInfoVo: LocalAddonInfoVo = JSONUtil.toBean(info, LocalAddonInfoVo.class);
|
const localAddonInfoVo: LocalAddonInfoVo = Object.assign(new LocalAddonInfoVo(), info);
|
||||||
localAddonInfoVo.setIsLocal(true);
|
localAddonInfoVo.setIsLocal(true);
|
||||||
localAddonInfoVo.setIsDownload(true);
|
localAddonInfoVo.setIsDownload(true);
|
||||||
if (installAddonList.get(addon) != null)
|
if (installAddonList.get(addon) != null)
|
||||||
@@ -72,8 +71,8 @@ export class AddonServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (e) {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
vo.setError(e.message);
|
vo.setError(e.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,31 +87,31 @@ export class AddonServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<Addon> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
const iPage: IPage<Addon> = addonMapper.selectPage(new Page<Addon>(page, limit), queryWrapper);
|
iPage = this.addonRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: AddonListVo[] = [];
|
AddonListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: AddonListVo = new AddonListVo();
|
const vo: AddonListVo = new AddonListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: Addon = addonMapper.selectOne(
|
const model: Addon = this.addonRepository.findOne(
|
||||||
new QueryWrapper<Addon>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: AddonInfoVo = new AddonInfoVo();
|
const vo: AddonInfoVo = new AddonInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,23 +121,23 @@ export class AddonServiceImplService {
|
|||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const model: Addon = new Addon();
|
const model: Addon = new Addon();
|
||||||
|
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setInstallTime(addonParam.getInstallTime());
|
model.setInstallTime(addonParam.getInstallTime());
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setCover(addonParam.getCover());
|
model.setCover(addonParam.getCover());
|
||||||
model.setType(addonParam.getType());
|
model.setType(addonParam.getType());
|
||||||
model.setSupportApp(addonParam.getSupportApp());
|
model.setSupportApp(addonParam.getSupportApp());
|
||||||
model.setIsStar(addonParam.getIsStar());
|
model.setIsStar(addonParam.getIsStar());
|
||||||
model.setCompile(String.join(",", addonParam.getCompile()));
|
model.setCompile(String.join(",", addonParam.getCompile()));
|
||||||
// BeanUtil.copyProperties(sysPositionEditParam, sysPosition);
|
// BeanUtil.copyProperties(sysPositionEditParam, sysPosition);
|
||||||
addonMapper.insert(model);
|
this.addonRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
addonMapper.delete(new QueryWrapper<Addon>().eq("id", id));
|
this.addonRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -189,9 +188,9 @@ export class AddonServiceImplService {
|
|||||||
async getTitleListByKey(...args: any[]): Promise<any> {
|
async getTitleListByKey(...args: any[]): Promise<any> {
|
||||||
const jsonKey: JSONArray = JSONUtil.parseArray(keys);
|
const jsonKey: JSONArray = JSONUtil.parseArray(keys);
|
||||||
const jsonArray: JSONArray = new JSONArray();
|
const jsonArray: JSONArray = new JSONArray();
|
||||||
if(jsonKey.size()>0){
|
if(jsonKey.length>0){
|
||||||
const keyList: string[] = jsonKey.toList(String.class);
|
String[] keyList=jsonKey.toList(String.class);
|
||||||
const addonList: Addon[] = addonMapper.selectList(new QueryWrapper<Addon>().in("`key`", keyList));
|
Addon[] addonList=this.addonRepository.find(new ().in("`key`", keyList));
|
||||||
for (const addon of addonList) {
|
for (const addon of addonList) {
|
||||||
jsonArray.put(addon.getTitle());
|
jsonArray.put(addon.getTitle());
|
||||||
}
|
}
|
||||||
@@ -205,14 +204,14 @@ export class AddonServiceImplService {
|
|||||||
async getAddonListByKeys(...args: any[]): Promise<any> {
|
async getAddonListByKeys(...args: any[]): Promise<any> {
|
||||||
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("getAddonListByKeys", addonKeys, type), uniqueKey => {
|
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("getAddonListByKeys", addonKeys, type), uniqueKey => {
|
||||||
|
|
||||||
const query: QueryWrapper<Addon> = new QueryWrapper<>();
|
query = {};
|
||||||
if(type === "")
|
if(type === "")
|
||||||
{
|
{
|
||||||
query.in("`key`", addonKeys);
|
query.in("`key`", addonKeys);
|
||||||
}else{
|
}else{
|
||||||
query.in("`key`", addonKeys).eq("type", type);
|
query.in("`key`", addonKeys).eq("type", type);
|
||||||
}
|
}
|
||||||
return addonMapper.selectList(query);
|
return this.addonRepository.find(query);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,7 +221,7 @@ export class AddonServiceImplService {
|
|||||||
async download(...args: any[]): Promise<any> {
|
async download(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const actionQuery: Record<string, any> = {};
|
const actionQuery: Record<String, Object> = new HashRecord<>();
|
||||||
actionQuery.put("data[app_key]", addon);
|
actionQuery.put("data[app_key]", addon);
|
||||||
actionQuery.put("data[version]", version);
|
actionQuery.put("data[version]", version);
|
||||||
actionQuery.put("data[product_key]", instance.getProductKey());
|
actionQuery.put("data[product_key]", instance.getProductKey());
|
||||||
@@ -238,7 +237,7 @@ export class AddonServiceImplService {
|
|||||||
const totalLength: string = headResponse.header("Content-range");
|
const totalLength: string = headResponse.header("Content-range");
|
||||||
const length: string = totalLength.split("/")[1];
|
const length: string = totalLength.split("/")[1];
|
||||||
|
|
||||||
const downloadDir: string = this.config.get('webRootDownResource') + "download/";
|
const downloadDir: string = this.appConfig.webRootDownResource + "download/";
|
||||||
FileTools.createDirs(downloadDir);
|
FileTools.createDirs(downloadDir);
|
||||||
|
|
||||||
const file: string = downloadDir + addon + ".zip";
|
const file: string = downloadDir + addon + ".zip";
|
||||||
@@ -248,9 +247,9 @@ export class AddonServiceImplService {
|
|||||||
|
|
||||||
try (const fos: FileOutputStream = new FileOutputStream(file)) {
|
try (const fos: FileOutputStream = new FileOutputStream(file)) {
|
||||||
fos.write(response.bodyBytes());
|
fos.write(response.bodyBytes());
|
||||||
ZipUtil.unzip(file, this.config.get('webRootDownAddon'), Charset.forName(System.getProperty("sun.jnu.encoding")));
|
ZipUtil.unzip(file, this.appConfig.webRootDownAddon, Charset.forName(System.getProperty("sun.jnu.encoding")));
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -259,7 +258,7 @@ export class AddonServiceImplService {
|
|||||||
* getIndexAddonList
|
* getIndexAddonList
|
||||||
*/
|
*/
|
||||||
async getIndexAddonList(...args: any[]): Promise<any> {
|
async getIndexAddonList(...args: any[]): Promise<any> {
|
||||||
const params: Record<string, any> = {};
|
const params: Record<String, Object> = {};
|
||||||
const config: NiucloudConfigVo = coreNiucloudConfigService.getNiucloudConfig();
|
const config: NiucloudConfigVo = coreNiucloudConfigService.getNiucloudConfig();
|
||||||
params.put("code", config.getAuthCode());
|
params.put("code", config.getAuthCode());
|
||||||
params.put("secret", config.getAuthSecret());
|
params.put("secret", config.getAuthSecret());
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import { Injectable, BadRequestException, UnauthorizedException } from '@nestjs/common';
|
import { Injectable, BadRequestException, UnauthorizedException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AuthServiceImplService {
|
export class AuthServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -43,11 +42,11 @@ export class AuthServiceImplService {
|
|||||||
async isSuperAdmin(...args: any[]): Promise<any> {
|
async isSuperAdmin(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.defaultSiteId();
|
const siteId: number = RequestUtils.defaultSiteId();
|
||||||
const uid: number = RequestUtils.uid();
|
const uid: number = RequestUtils.uid();
|
||||||
const superAdminUid: number = cached.tag("adminAuth").get("superAdminUid");
|
const superAdminUid: number = (number) cached.tag("adminAuth").get("superAdminUid");
|
||||||
if (ObjectUtil.isNotNull(superAdminUid) && ObjectUtil.isNotEmpty(superAdminUid) && superAdminUid > 0) {
|
if (ObjectUtil.isNotNull(superAdminUid) && !!superAdminUid && superAdminUid > 0) {
|
||||||
return superAdminUid === uid;
|
return superAdminUid === uid;
|
||||||
} else {
|
} else {
|
||||||
const sysUserRole: SysUserRole = sysUserRoleMapper.selectOne(new QueryWrapper<SysUserRole>().eq("site_id", siteId).eq("is_admin", 1).last(" limit 1"));
|
const sysUserRole: SysUserRole = this.sysUserRoleRepository.findOne(new ().eq("site_id", siteId).eq("is_admin", 1).last(" limit 1"));
|
||||||
cached.tag("adminAuth").put("superAdminUid", sysUserRole.getUid());
|
cached.tag("adminAuth").put("superAdminUid", sysUserRole.getUid());
|
||||||
return sysUserRole.getUid() === uid;
|
return sysUserRole.getUid() === uid;
|
||||||
}
|
}
|
||||||
@@ -72,20 +71,20 @@ export class AuthServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const allMenuList: Record<string, any> = sysMenuService.getAllApiList(RequestUtils.appType(), 100);
|
Record<String, String[]> allMenuList = sysMenuService.getAllApiList(RequestUtils.appType(), 100);
|
||||||
const menulist: string[] = allMenuList.get(method);
|
String[] menulist = allMenuList.get(method);
|
||||||
const is_exists: number = menulist.indexOf(rule);
|
const is_exists: number = menulist.indexOf(rule);
|
||||||
|
|
||||||
//判断当前访问的接口是否收到权限的限制
|
//判断当前访问的接口是否收到权限的限制
|
||||||
if (is_exists < 0) {
|
if (is_exists < 0) {
|
||||||
const otherMenuList: Record<string, any> = sysMenuService.getAllApiList(RequestUtils.appType() === AppTypeEnum.path.basename(ADMIN) ? AppTypeEnum.path.basename(SITE) : AppTypeEnum.path.basename(ADMIN), 100);
|
Record<String, String[]> otherMenuList = sysMenuService.getAllApiList(RequestUtils.appType() === AppTypeEnum.path.basename(ADMIN) ? AppTypeEnum.path.basename(SITE) : AppTypeEnum.path.basename(ADMIN), 100);
|
||||||
const methodMenuList: string[] = otherMenuList.get(method);
|
String[] methodMenuList = otherMenuList.get(method);
|
||||||
const is_method_exists: number = methodMenuList.indexOf(rule);
|
const is_method_exists: number = methodMenuList.indexOf(rule);
|
||||||
if (is_method_exists > 0) {
|
if (is_method_exists > 0) {
|
||||||
throw new UnauthorizedException("NO_PERMISSION", 400);
|
throw new UnauthorizedException("NO_PERMISSION", 400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const roleMenuList: Record<string, any> = this.getAuthApiList();
|
Record<String, String[]> roleMenuList = this.getAuthApiList();
|
||||||
/*if(roleMenuList.get(method).size()<=0 || roleMenuList.get(method).indexOf(rule)<=0){
|
/*if(roleMenuList.get(method).size()<=0 || roleMenuList.get(method).indexOf(rule)<=0){
|
||||||
throw new UnauthorizedException("NO_PERMISSION");
|
throw new UnauthorizedException("NO_PERMISSION");
|
||||||
}*/
|
}*/
|
||||||
@@ -97,7 +96,7 @@ export class AuthServiceImplService {
|
|||||||
async checkIsDemo(...args: any[]): Promise<any> {
|
async checkIsDemo(...args: any[]): Promise<any> {
|
||||||
const method: string = RequestUtils.getRequestMethod();
|
const method: string = RequestUtils.getRequestMethod();
|
||||||
|
|
||||||
if (method !== "get" && this.config.get('isDemo')) {
|
if (method !== "get" && this.appConfig.isDemo) {
|
||||||
throw new BadRequestException("演示环境不允许操作");
|
throw new BadRequestException("演示环境不允许操作");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,9 +109,9 @@ export class AuthServiceImplService {
|
|||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const uid: number = RequestUtils.uid();
|
const uid: number = RequestUtils.uid();
|
||||||
const appType: string = RequestUtils.appType();
|
const appType: string = RequestUtils.appType();
|
||||||
const authApi: Record<string, any> = {};
|
Record<String, String[]> authApi = new HashRecord<>();
|
||||||
const sysUserRoleInfoVo: SysUserRoleInfoVo = new SysUserRoleInfoVo();
|
const sysUserRoleInfoVo: SysUserRoleInfoVo = new SysUserRoleInfoVo();
|
||||||
const menuList: SysMenu[] = [];
|
SysMenu[] menuList = [];
|
||||||
if (isSuperAdmin()) {
|
if (isSuperAdmin()) {
|
||||||
isAdmin = 1;
|
isAdmin = 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -125,8 +124,8 @@ export class AuthServiceImplService {
|
|||||||
if (isAdmin > 0) {
|
if (isAdmin > 0) {
|
||||||
menuList = sysMenuService.getMenuListByCondition(appType, siteId, 1, 0, [], addon);
|
menuList = sysMenuService.getMenuListByCondition(appType, siteId, 1, 0, [], addon);
|
||||||
} else {
|
} else {
|
||||||
const roleIdList: string[] = JSONUtil.toList(JSONUtil.parseArray(sysUserRoleInfoVo.getRoleIds()), String.class);
|
String[] roleIdList = JSONUtil.toList(JSONUtil.parseArray(sysUserRoleInfoVo.getRoleIds()), String.class);
|
||||||
const menuKeyList: string[] = sysRoleService.getMenuIdsByRoleIds(siteId, roleIdList);
|
String[] menuKeyList = sysRoleService.getMenuIdsByRoleIds(siteId, roleIdList);
|
||||||
menuList = sysMenuService.getMenuListByCondition(appType, siteId, 100, 0, menuKeyList, addon);
|
menuList = sysMenuService.getMenuListByCondition(appType, siteId, 100, 0, menuKeyList, addon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,10 +144,10 @@ export class AuthServiceImplService {
|
|||||||
const vo: AuthUserInfoVo = new AuthUserInfoVo();
|
const vo: AuthUserInfoVo = new AuthUserInfoVo();
|
||||||
BeanUtil.copyProperties(userInfo, vo);
|
BeanUtil.copyProperties(userInfo, vo);
|
||||||
return vo;
|
return vo;
|
||||||
// const userRoleMPJQueryWrapper: MPJQueryWrapper<SysUserRole> = new MPJQueryWrapper<>();
|
// MPJuserRoleMPJQueryWrapper = new MPJQueryWrapper<>();
|
||||||
// userRoleMPJQueryWrapper.select("sur.id, su.username, su.head_img, su.real_name, su.last_ip, su.last_time, su.login_count, sur.uid, sur.site_id, sur.role_ids, sur.create_time, sur.is_admin, sur.status")
|
// userRoleMPJQueryWrapper.select("sur.id, su.username, su.head_img, su.real_name, su.last_ip, su.last_time, su.login_count, sur.uid, sur.site_id, sur.role_ids, sur.create_time, sur.is_admin, sur.status")
|
||||||
// .setAlias("sur")
|
// .setAlias("sur")
|
||||||
// .leftJoin("?_sys_user su ON sur.uid = su.uid".replace("?_", this.config.get('tablePrefix')));
|
// .leftJoin("?_sys_user su ON sur.uid = su.uid".replace("?_", this.appConfig.tablePrefix));
|
||||||
// userRoleMPJQueryWrapper.eq("sur.uid", uid);
|
// userRoleMPJQueryWrapper.eq("sur.uid", uid);
|
||||||
// userRoleMPJQueryWrapper.eq("sur.site_id", siteId);
|
// userRoleMPJQueryWrapper.eq("sur.site_id", siteId);
|
||||||
// const authUserInfoVo: AuthUserInfoVo = sysUserRoleMapper.selectJoinOne(AuthUserInfoVo.class, userRoleMPJQueryWrapper);
|
// const authUserInfoVo: AuthUserInfoVo = sysUserRoleMapper.selectJoinOne(AuthUserInfoVo.class, userRoleMPJQueryWrapper);
|
||||||
@@ -164,7 +163,7 @@ export class AuthServiceImplService {
|
|||||||
* editAuth
|
* editAuth
|
||||||
*/
|
*/
|
||||||
async editAuth(...args: any[]): Promise<any> {
|
async editAuth(...args: any[]): Promise<any> {
|
||||||
if (ObjectUtil.isNotNull(editAuthUserParam.getPassword()) && ObjectUtil.isNotEmpty(editAuthUserParam.getPassword())) {
|
if (ObjectUtil.isNotNull(editAuthUserParam.getPassword()) && !!editAuthUserParam.getPassword()) {
|
||||||
const sysUser: SysUser = sysUserService.find(RequestUtils.uid());
|
const sysUser: SysUser = sysUserService.find(RequestUtils.uid());
|
||||||
if (!PasswordEncipher.matche(editAuthUserParam.getOriginalPassword(), sysUser.getPassword())) {
|
if (!PasswordEncipher.matche(editAuthUserParam.getOriginalPassword(), sysUser.getPassword())) {
|
||||||
throw new UnauthorizedException("OLD_PASSWORD_ERROR");
|
throw new UnauthorizedException("OLD_PASSWORD_ERROR");
|
||||||
@@ -192,10 +191,10 @@ export class AuthServiceImplService {
|
|||||||
model.setUrl(RequestUtils.getReqeustURI());
|
model.setUrl(RequestUtils.getReqeustURI());
|
||||||
model.setParams("{}");
|
model.setParams("{}");
|
||||||
model.setType(RequestUtils.getRequestMethod());
|
model.setType(RequestUtils.getRequestMethod());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setOperation(getDescription(request));
|
model.setOperation(getDescription(request));
|
||||||
sysUserLogMapper.insert(model);
|
this.sysUserLogRepository.save(model);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,6 +202,6 @@ export class AuthServiceImplService {
|
|||||||
* setIsAllowChangeSite
|
* setIsAllowChangeSite
|
||||||
*/
|
*/
|
||||||
async setIsAllowChangeSite(...args: any[]): Promise<any> {
|
async setIsAllowChangeSite(...args: any[]): Promise<any> {
|
||||||
coreConfigService.setConfig(0,"IS_ALLOW_CHANGE_SITE", JSONUtil.parseObj(param));
|
coreConfigService.setConfig(0,"IS_ALLOW_CHANGE_SITE", JSON.parse(param));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class ConfigServiceImplService {
|
|||||||
async getLoginConfig(...args: any[]): Promise<any> {
|
async getLoginConfig(...args: any[]): Promise<any> {
|
||||||
const defaultSiteId: number = RequestUtils.defaultSiteId();
|
const defaultSiteId: number = RequestUtils.defaultSiteId();
|
||||||
const sysConfig: Record<string, any> = coreConfigService.getConfigValue(defaultSiteId, ConfigKeyEnum.path.basename(ADMIN_LOGIN));
|
const sysConfig: Record<string, any> = coreConfigService.getConfigValue(defaultSiteId, ConfigKeyEnum.path.basename(ADMIN_LOGIN));
|
||||||
return JSONUtil.toBean(sysConfig, LoginConfigVo.class);
|
return Object.assign(new LoginConfigVo(), sysConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ export class AdminAppServiceImplService {
|
|||||||
* getVersionPage
|
* getVersionPage
|
||||||
*/
|
*/
|
||||||
async getVersionPage(...args: any[]): Promise<any> {
|
async getVersionPage(...args: any[]): Promise<any> {
|
||||||
const page: Page<AppVersion> = new Page<>(pageParam.getPage(), pageParam.getLimit());
|
const page: Page<AppVersion> = { /* pagination */ }, pageParam.getLimit());
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<AppVersion> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
|
|
||||||
if (param.getPlatform() != null) {
|
if (param.getPlatform() != null) {
|
||||||
@@ -37,13 +37,13 @@ export class AdminAppServiceImplService {
|
|||||||
}
|
}
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.orderByDesc("create_time");
|
||||||
|
|
||||||
const resultPage: Page<AppVersion> = appVersionMapper.selectPage(page, queryWrapper);
|
const resultPage: Page<AppVersion> = this.appVersionRepository.findAndCount(page, queryWrapper);
|
||||||
|
|
||||||
const list: AppVersionListVo[] = new LinkedList();
|
AppVersionListVo[] list = new LinkedList();
|
||||||
for (const item of resultPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: AppVersionListVo = new AppVersionListVo();
|
const vo: AppVersionListVo = new AppVersionListVo();
|
||||||
BeanUtil.copyProperties(item, vo);
|
BeanUtil.copyProperties(item, vo);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return PageResult.build(resultPage, list);
|
return PageResult.build(resultPage, list);
|
||||||
@@ -53,8 +53,8 @@ export class AdminAppServiceImplService {
|
|||||||
* getVersionInfo
|
* getVersionInfo
|
||||||
*/
|
*/
|
||||||
async getVersionInfo(...args: any[]): Promise<any> {
|
async getVersionInfo(...args: any[]): Promise<any> {
|
||||||
const appVersion: AppVersion = appVersionMapper.selectOne(
|
const appVersion: AppVersion = this.appVersionRepository.findOne(
|
||||||
new QueryWrapper<AppVersion>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
);
|
);
|
||||||
@@ -72,16 +72,16 @@ export class AdminAppServiceImplService {
|
|||||||
* addVersion
|
* addVersion
|
||||||
*/
|
*/
|
||||||
async addVersion(...args: any[]): Promise<any> {
|
async addVersion(...args: any[]): Promise<any> {
|
||||||
const notRelease: AppVersion = appVersionMapper.selectOne(
|
const notRelease: AppVersion = this.appVersionRepository.findOne(
|
||||||
new QueryWrapper<AppVersion>()
|
new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("release_time", 0)
|
.eq("release_time", 0)
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
Assert.isNull(notRelease, "当前已存在未发布的版本");
|
Assert.isNull(notRelease, "当前已存在未发布的版本");
|
||||||
|
|
||||||
const lastVersion: AppVersion = appVersionMapper.selectOne(
|
const lastVersion: AppVersion = this.appVersionRepository.findOne(
|
||||||
new QueryWrapper<AppVersion>()
|
new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.orderByDesc("id")
|
.orderByDesc("id")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
@@ -102,22 +102,22 @@ export class AdminAppServiceImplService {
|
|||||||
appVersion.setStatus(AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.getValue());
|
appVersion.setStatus(AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
return appVersionMapper.insert(appVersion) > 0;
|
return this.appVersionRepository.save(appVersion) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* editVersion
|
* editVersion
|
||||||
*/
|
*/
|
||||||
async editVersion(...args: any[]): Promise<any> {
|
async editVersion(...args: any[]): Promise<any> {
|
||||||
const appVersion: AppVersion = appVersionMapper.selectOne(
|
const appVersion: AppVersion = this.appVersionRepository.findOne(
|
||||||
new QueryWrapper<AppVersion>()
|
new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
);
|
);
|
||||||
Assert.notNull(appVersion, "版本不存在");
|
if (!appVersion) throw new BadRequestException("版本不存在");
|
||||||
|
|
||||||
const lastVersion: AppVersion = appVersionMapper.selectOne(
|
const lastVersion: AppVersion = this.appVersionRepository.findOne(
|
||||||
new QueryWrapper<AppVersion>()
|
new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.ne("id", id)
|
.ne("id", id)
|
||||||
.orderByDesc("id")
|
.orderByDesc("id")
|
||||||
@@ -138,14 +138,14 @@ export class AdminAppServiceImplService {
|
|||||||
appVersion.setStatus(AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.getValue());
|
appVersion.setStatus(AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
return appVersionMapper.updateById(appVersion) > 0;
|
return this.appVersionRepository.save(appVersion) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* delVersion
|
* delVersion
|
||||||
*/
|
*/
|
||||||
async delVersion(...args: any[]): Promise<any> {
|
async delVersion(...args: any[]): Promise<any> {
|
||||||
appVersionMapper.delete(new QueryWrapper<AppVersion>()
|
this.appVersionRepository.delete(new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
}
|
}
|
||||||
@@ -178,12 +178,12 @@ export class AdminAppServiceImplService {
|
|||||||
* release
|
* release
|
||||||
*/
|
*/
|
||||||
async release(...args: any[]): Promise<any> {
|
async release(...args: any[]): Promise<any> {
|
||||||
const appVersion: AppVersion = appVersionMapper.selectOne(
|
const appVersion: AppVersion = this.appVersionRepository.findOne(
|
||||||
new QueryWrapper<AppVersion>()
|
new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
);
|
);
|
||||||
Assert.notNull(appVersion, "版本不存在");
|
if (!appVersion) throw new BadRequestException("版本不存在");
|
||||||
if (appVersion.getStatus() !== AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.getValue()) {
|
if (appVersion.getStatus() !== AppDict.StatusEnum.STATUS_UPLOAD_SUCCESS.getValue()) {
|
||||||
throw new BadRequestException("版本未上传成功");
|
throw new BadRequestException("版本未上传成功");
|
||||||
}
|
}
|
||||||
@@ -193,6 +193,6 @@ export class AdminAppServiceImplService {
|
|||||||
appVersion.setStatus(AppDict.StatusEnum.STATUS_PUBLISHED.getValue());
|
appVersion.setStatus(AppDict.StatusEnum.STATUS_PUBLISHED.getValue());
|
||||||
appVersion.setReleaseTime(DateUtils.currTime());
|
appVersion.setReleaseTime(DateUtils.currTime());
|
||||||
|
|
||||||
return appVersionMapper.updateById(appVersion) > 0;
|
return this.appVersionRepository.save(appVersion) > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -17,41 +17,41 @@ export class DictServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysDict> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
//查询条件判断组装
|
//查询条件判断组装
|
||||||
if (ObjectUtil.isNotEmpty(path.basename(searchParam))) {
|
if (!!path.basename(searchParam)) {
|
||||||
queryWrapper.like("name", path.basename(searchParam));
|
queryWrapper.like("name", path.basename(searchParam));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKey())) {
|
if (!!searchParam.getKey()) {
|
||||||
queryWrapper.eq("`key`", searchParam.getKey());
|
queryWrapper.eq("`key`", searchParam.getKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<SysDict> = dictMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.dictRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: DictListVo[] = [];
|
DictListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: DictListVo = new DictListVo();
|
const vo: DictListVo = new DictListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysDict = dictMapper.selectOne(
|
const model: SysDict = this.dictRepository.findOne(
|
||||||
new QueryWrapper<SysDict>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: DictInfoVo = new DictInfoVo();
|
const vo: DictInfoVo = new DictInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,59 +64,59 @@ export class DictServiceImplService {
|
|||||||
model.setKey(addParam.getKey());
|
model.setKey(addParam.getKey());
|
||||||
model.setMemo(addParam.getMemo());
|
model.setMemo(addParam.getMemo());
|
||||||
model.setDictionary("[]");
|
model.setDictionary("[]");
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
dictMapper.insert(model);
|
this.dictRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysDict = dictMapper.selectOne(
|
const model: SysDict = this.dictRepository.findOne(
|
||||||
new QueryWrapper<SysDict>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
model.setId(id);
|
model.setId(id);
|
||||||
model.setName(path.basename(editParam));
|
model.setName(path.basename(editParam));
|
||||||
model.setKey(editParam.getKey());
|
model.setKey(editParam.getKey());
|
||||||
model.setMemo(editParam.getMemo());
|
model.setMemo(editParam.getMemo());
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
dictMapper.updateById(model);
|
this.dictRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SysDict = dictMapper.selectOne(
|
const model: SysDict = this.dictRepository.findOne(
|
||||||
new QueryWrapper<SysDict>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
dictMapper.deleteById(model);
|
this.dictRepository.delete(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getAll
|
* getAll
|
||||||
*/
|
*/
|
||||||
async getAll(...args: any[]): Promise<any> {
|
async getAll(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysDict> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
|
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const voList: SysDict[] = dictMapper.selectList(queryWrapper);
|
SysDict[] voList = this.dictRepository.find(queryWrapper);
|
||||||
const list: DictListVo[] = [];
|
DictListVo[] list = [];
|
||||||
for (const item of voList) {
|
for (const item of voList) {
|
||||||
const vo: DictListVo = new DictListVo();
|
const vo: DictListVo = new DictListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export class DiyRouteServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const linkEnum: Record<string, any> = LinkEnum.getLink();
|
const linkEnum: Record<string, any> = LinkEnum.getLink();
|
||||||
const routerList: DiyRouteListVo[] = [];
|
DiyRouteListVo[] routerList = [];
|
||||||
const sort: number = 0;
|
const sort: number = 0;
|
||||||
|
|
||||||
for (const key of linkEnum.keySet()) {
|
for (const key of linkEnum.keySet()) {
|
||||||
@@ -33,15 +33,15 @@ export class DiyRouteServiceImplService {
|
|||||||
* getInfoByName
|
* getInfoByName
|
||||||
*/
|
*/
|
||||||
async getInfoByName(...args: any[]): Promise<any> {
|
async getInfoByName(...args: any[]): Promise<any> {
|
||||||
const model: DiyRoute = diyRouteMapper.selectOne(
|
const model: DiyRoute = this.diyRouteRepository.findOne(
|
||||||
new QueryWrapper<DiyRoute>()
|
new ()
|
||||||
.eq("name", name)
|
.eq("name", name)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
if (model == null) return null;
|
if (model == null) return null;
|
||||||
|
|
||||||
const vo: DiyRouteInfoVo = new DiyRouteInfoVo();
|
const vo: DiyRouteInfoVo = new DiyRouteInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -50,20 +50,20 @@ export class DiyRouteServiceImplService {
|
|||||||
* modifyShare
|
* modifyShare
|
||||||
*/
|
*/
|
||||||
async modifyShare(...args: any[]): Promise<any> {
|
async modifyShare(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper = new QueryWrapper<DiyRoute>()
|
const queryWrapper: QueryWrapper = new ()
|
||||||
.eq("name", path.basename(editParam))
|
.eq("name", path.basename(editParam))
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.last("limit 1");
|
.last("limit 1");
|
||||||
const model: DiyRoute = diyRouteMapper.selectOne(queryWrapper);
|
const model: DiyRoute = this.diyRouteRepository.findOne(queryWrapper);
|
||||||
|
|
||||||
if (model != null) {
|
if (model != null) {
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
diyRouteMapper.update(model, queryWrapper);
|
diyRouteMapper.update(model, queryWrapper);
|
||||||
} else {
|
} else {
|
||||||
const insertModel: DiyRoute = new DiyRoute();
|
const insertModel: DiyRoute = new DiyRoute();
|
||||||
BeanUtils.copyProperties(editParam, insertModel);
|
Object.assign(insertModel, editParam);
|
||||||
insertModel.setSiteId(RequestUtils.siteId());
|
insertModel.setSiteId(RequestUtils.siteId());
|
||||||
diyRouteMapper.insert(insertModel);
|
this.diyRouteRepository.save(insertModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,56 +17,56 @@ export class DiyServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<DiyPage> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTitle())) queryWrapper.like("title", searchParam.getTitle());
|
if (!!searchParam.getTitle()) queryWrapper.like("title", searchParam.getTitle());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMode())) queryWrapper.eq("mode", searchParam.getMode());
|
if (!!searchParam.getMode()) queryWrapper.eq("mode", searchParam.getMode());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) queryWrapper.eq("type", searchParam.getType());
|
if (!!searchParam.getType()) queryWrapper.eq("type", searchParam.getType());
|
||||||
|
|
||||||
const template: Record<string, any> = TemplateEnum.getTemplate();
|
const template: Record<string, any> = TemplateEnum.getTemplate();
|
||||||
const templateAddon: Record<string, any>[] = TemplateEnum.getTemplateAddons((RequestUtils.siteId()));
|
Record<String, Object[]> templateAddon = TemplateEnum.getTemplateAddons((RequestUtils.siteId()));
|
||||||
const iPage: IPage<DiyPage> = diyPageMapper.selectPage(new Page<DiyPage>(page, limit), queryWrapper);
|
iPage = this.diyPageRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: DiyPageListVo[] = [];
|
DiyPageListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: DiyPageListVo = new DiyPageListVo();
|
const vo: DiyPageListVo = new DiyPageListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setTypeName(ObjectUtil.defaultIfNull(template.getByPath(vo.getType() + ".title", String.class), ""));
|
vo.setTypeName(ObjectUtil.defaultIfNull(template.getByPath(vo.getType() + ".title", String.class), ""));
|
||||||
vo.setTypePage(ObjectUtil.defaultIfNull(template.getByPath(vo.getType() + ".page", String.class), ""));
|
vo.setTypePage(ObjectUtil.defaultIfNull(template.getByPath(vo.getType() + ".page", String.class), ""));
|
||||||
const addonName: string = templateAddon.stream()
|
const addonName: string = templateAddon
|
||||||
.filter(temp => vo.getType() != null && vo.getType() === temp.get("type"))
|
.filter(temp => vo.getType() != null && vo.getType() === temp.get("type"))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.map(addon => ObjectUtil.defaultIfNull(addon.get("title"), "").toString())
|
.map(addon => ObjectUtil.defaultIfNull(addon.get("title"), "").toString())
|
||||||
.orElse("");
|
.orElse("");
|
||||||
vo.setAddonName(addonName);
|
vo.setAddonName(addonName);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* allList
|
* allList
|
||||||
*/
|
*/
|
||||||
async allList(...args: any[]): Promise<any> {
|
async allList(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<DiyPage> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTitle())) queryWrapper.like("title", searchParam.getTitle());
|
if (!!searchParam.getTitle()) queryWrapper.like("title", searchParam.getTitle());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMode())) queryWrapper.eq("mode", searchParam.getMode());
|
if (!!searchParam.getMode()) queryWrapper.eq("mode", searchParam.getMode());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) {
|
if (!!searchParam.getType()) {
|
||||||
const type: string[] = Arrays.stream(searchParam.getType()).collect(Collectors.toList());
|
String[] type = Arrays.stream(searchParam.getType());
|
||||||
queryWrapper.in("type", type);
|
queryWrapper.in("type", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
const pages: DiyPage[] = diyPageMapper.selectList(queryWrapper);
|
DiyPage[] pages = this.diyPageRepository.find(queryWrapper);
|
||||||
const list: DiyPageListVo[] = [];
|
DiyPageListVo[] list = [];
|
||||||
|
|
||||||
for (const item of pages) {
|
for (const item of pages) {
|
||||||
const vo: DiyPageListVo = new DiyPageListVo();
|
const vo: DiyPageListVo = new DiyPageListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -75,15 +75,15 @@ export class DiyServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: DiyPage = diyPageMapper.selectOne(
|
const model: DiyPage = this.diyPageRepository.findOne(
|
||||||
new QueryWrapper<DiyPage>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
if (model == null) return null;
|
if (model == null) return null;
|
||||||
|
|
||||||
const vo: DiyPageInfoVo = new DiyPageInfoVo();
|
const vo: DiyPageInfoVo = new DiyPageInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -92,8 +92,8 @@ export class DiyServiceImplService {
|
|||||||
* infoByName
|
* infoByName
|
||||||
*/
|
*/
|
||||||
async infoByName(...args: any[]): Promise<any> {
|
async infoByName(...args: any[]): Promise<any> {
|
||||||
const model: DiyPage = diyPageMapper.selectOne(
|
const model: DiyPage = this.diyPageRepository.findOne(
|
||||||
new QueryWrapper<DiyPage>()
|
new ()
|
||||||
.eq("name", name)
|
.eq("name", name)
|
||||||
.eq("is_default", 1)
|
.eq("is_default", 1)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
@@ -101,7 +101,7 @@ export class DiyServiceImplService {
|
|||||||
if (model == null) return null;
|
if (model == null) return null;
|
||||||
|
|
||||||
const vo: DiyPageInfoVo = new DiyPageInfoVo();
|
const vo: DiyPageInfoVo = new DiyPageInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -111,50 +111,50 @@ export class DiyServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const model: DiyPage = new DiyPage();
|
const model: DiyPage = new DiyPage();
|
||||||
BeanUtils.copyProperties(addParam, model);
|
Object.assign(model, addParam);
|
||||||
model.setSiteId(addParam.getSiteId() == null ? RequestUtils.siteId() : addParam.getSiteId());
|
model.setSiteId(addParam.getSiteId() == null ? RequestUtils.siteId() : addParam.getSiteId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
diyPageMapper.insert(model);
|
this.diyPageRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: DiyPage = diyPageMapper.selectOne(
|
const model: DiyPage = this.diyPageRepository.findOne(
|
||||||
new QueryWrapper<DiyPage>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
diyPageMapper.updateById(model);
|
this.diyPageRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
diyPageMapper.delete(new QueryWrapper<DiyPage>().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
this.diyPageRepository.delete(new ().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* setUse
|
* setUse
|
||||||
*/
|
*/
|
||||||
async setUse(...args: any[]): Promise<any> {
|
async setUse(...args: any[]): Promise<any> {
|
||||||
const model: DiyPage = diyPageMapper.selectOne(new QueryWrapper<DiyPage>().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
const model: DiyPage = this.diyPageRepository.findOne(new ().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
||||||
Assert.notNull(model, "页面不存在!");
|
if (!model) throw new BadRequestException("页面不存在!");
|
||||||
|
|
||||||
const update: DiyPage = new DiyPage();
|
const update: DiyPage = new DiyPage();
|
||||||
update.setIsDefault(0);
|
update.setIsDefault(0);
|
||||||
diyPageMapper.update(update, new QueryWrapper<DiyPage>().eq("name", path.basename(model)).eq("site_id", RequestUtils.siteId()));
|
diyPageMapper.update(update, new ().eq("name", path.basename(model)).eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
update.setId(id);
|
update.setId(id);
|
||||||
update.setIsDefault(1);
|
update.setIsDefault(1);
|
||||||
update.setUpdateTime(System.currentTimeMillis() / 1000);
|
update.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
diyPageMapper.updateById(update);
|
this.diyPageRepository.save(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -167,16 +167,16 @@ export class DiyServiceImplService {
|
|||||||
|
|
||||||
item.put("name", key);
|
item.put("name", key);
|
||||||
|
|
||||||
if (!"DIY_PAGE" === key && item.containsKey("child_list")) {
|
if (!"DIY_PAGE".equals(key) && item.containsKey("child_list")) {
|
||||||
const childList: JSONArray = item.getJSONArray("child_list");
|
const childList: JSONArray = item.getJSONArray("child_list");
|
||||||
for (const i of number = 0; i < childList.size(); i++) {
|
for (const i of number = 0; i < childList.length; i++) {
|
||||||
const child: Record<string, any> = childList.getJSONObject(i);
|
const child: Record<string, any> = childList.getJSONObject(i);
|
||||||
child.put("parent", key);
|
child.put("parent", key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key === "DIY_PAGE") {
|
if (key === "DIY_PAGE") {
|
||||||
const queryWrapper: QueryWrapper<DiyPage> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId())
|
queryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.and(wrapper => wrapper
|
.and(wrapper => wrapper
|
||||||
.eq("type", "DIY_PAGE")
|
.eq("type", "DIY_PAGE")
|
||||||
@@ -186,14 +186,14 @@ export class DiyServiceImplService {
|
|||||||
)
|
)
|
||||||
.orderByDesc("update_time");
|
.orderByDesc("update_time");
|
||||||
|
|
||||||
const pageList: DiyPage[] = diyPageMapper.selectList(queryWrapper);
|
DiyPage[] pageList = this.diyPageRepository.find(queryWrapper);
|
||||||
const newChildList: JSONArray = new JSONArray();
|
const newChildList: JSONArray = new JSONArray();
|
||||||
for (const diyPage of pageList) {
|
for (const diyPage of pageList) {
|
||||||
const child: Record<string, any> = new Record<string, any>();
|
const child: Record<string, any> = new Record<string, any>();
|
||||||
child.put("name", path.basename(diyPage));
|
child.put("name", path.basename(diyPage));
|
||||||
child.put("title", diyPage.getPageTitle());
|
child.put("title", diyPage.getPageTitle());
|
||||||
child.put("url", "/app/pages/index/diy?id=" + diyPage.getId());
|
child.put("url", "/app/pages/index/diy?id=" + diyPage.getId());
|
||||||
newChildList.add(child);
|
newChildList.push(child);
|
||||||
}
|
}
|
||||||
item.put("child_list", newChildList);
|
item.put("child_list", newChildList);
|
||||||
}
|
}
|
||||||
@@ -220,7 +220,7 @@ export class DiyServiceImplService {
|
|||||||
if (StringUtils.isNotBlank(path.basename(param))) {
|
if (StringUtils.isNotBlank(path.basename(param))) {
|
||||||
const startConfig: StartUpPageConfigVo = coreDiyConfigService.getStartUpPageConfig(RequestUtils.siteId(), path.basename(param));
|
const startConfig: StartUpPageConfigVo = coreDiyConfigService.getStartUpPageConfig(RequestUtils.siteId(), path.basename(param));
|
||||||
if (startConfig != null) {
|
if (startConfig != null) {
|
||||||
if ("DIY_PAGE" === startConfig.getParent()) {
|
if ("DIY_PAGE".equals(startConfig.getParent())) {
|
||||||
const page: string = startConfig.getPage();
|
const page: string = startConfig.getPage();
|
||||||
const id: number = number.parseInt(page.replace("/app/pages/index/diy?id=", ""));
|
const id: number = number.parseInt(page.replace("/app/pages/index/diy?id=", ""));
|
||||||
info = this.info(id);
|
info = this.info(id);
|
||||||
@@ -252,7 +252,7 @@ export class DiyServiceImplService {
|
|||||||
info.setPage(page.getStr("page"));
|
info.setPage(page.getStr("page"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const time: number = System.currentTimeMillis() / 1000;
|
const time: number = Math.floor(Date.now() / 1000);
|
||||||
const pageTitle: string = ObjectUtil.defaultIfBlank(param.getTitle(), "页面" + time);
|
const pageTitle: string = ObjectUtil.defaultIfBlank(param.getTitle(), "页面" + time);
|
||||||
const type: string = ObjectUtil.defaultIfBlank(param.getType(), "DIY_PAGE");
|
const type: string = ObjectUtil.defaultIfBlank(param.getType(), "DIY_PAGE");
|
||||||
const name: string = type === "DIY_PAGE" ? "DIY_PAGE_RANDOM_" + time : type;
|
const name: string = type === "DIY_PAGE" ? "DIY_PAGE_RANDOM_" + time : type;
|
||||||
@@ -284,7 +284,7 @@ export class DiyServiceImplService {
|
|||||||
typeName = pageObj.getStr("title");
|
typeName = pageObj.getStr("title");
|
||||||
pageRoute = pageObj.getStr("page");
|
pageRoute = pageObj.getStr("page");
|
||||||
|
|
||||||
const count: number = diyPageMapper.selectCount(new LambdaQueryWrapper<DiyPage>()
|
const count: number = this.diyPageRepository.count(new Lambda()
|
||||||
.eq(DiyPage::getSiteId, RequestUtils.siteId())
|
.eq(DiyPage::getSiteId, RequestUtils.siteId())
|
||||||
.eq(DiyPage::getType, param.getType()));
|
.eq(DiyPage::getType, param.getType()));
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
@@ -294,7 +294,7 @@ export class DiyServiceImplService {
|
|||||||
|
|
||||||
// 页面标题(用于前台展示)
|
// 页面标题(用于前台展示)
|
||||||
const title: string = pageTitle;
|
const title: string = pageTitle;
|
||||||
if (!"DIY_PAGE" === type) {
|
if (!"DIY_PAGE".equals(type)) {
|
||||||
title = typeName;
|
title = typeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,7 +338,7 @@ export class DiyServiceImplService {
|
|||||||
|
|
||||||
// 安全遍历顶层数据
|
// 安全遍历顶层数据
|
||||||
const categoryIterator: Iterator<String> = data.keySet().iterator();
|
const categoryIterator: Iterator<String> = data.keySet().iterator();
|
||||||
const categoryToRemove: string[] = [];
|
String[] categoryToRemove = [];
|
||||||
|
|
||||||
while (categoryIterator.hasNext()) {
|
while (categoryIterator.hasNext()) {
|
||||||
const categoryKey: string = categoryIterator.next();
|
const categoryKey: string = categoryIterator.next();
|
||||||
@@ -349,7 +349,7 @@ export class DiyServiceImplService {
|
|||||||
const sortMap: Record<string, any> = new Record<string, any>();
|
const sortMap: Record<string, any> = new Record<string, any>();
|
||||||
|
|
||||||
// 安全遍历组件列表
|
// 安全遍历组件列表
|
||||||
const keysToRemove: string[] = [];
|
String[] keysToRemove = [];
|
||||||
for (const componentKey of new ArrayList<>(componentList.keySet())) {
|
for (const componentKey of new ArrayList<>(componentList.keySet())) {
|
||||||
const component: Record<string, any> = componentList.getJSONObject(componentKey);
|
const component: Record<string, any> = componentList.getJSONObject(componentKey);
|
||||||
const supportPage: JSONArray = component.getJSONArray("support_page");
|
const supportPage: JSONArray = component.getJSONArray("support_page");
|
||||||
@@ -361,7 +361,7 @@ export class DiyServiceImplService {
|
|||||||
component.remove("sort");
|
component.remove("sort");
|
||||||
component.remove("support_page");
|
component.remove("support_page");
|
||||||
} else {
|
} else {
|
||||||
keysToRemove.add(componentKey);
|
keysToRemove.push(componentKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,7 +370,7 @@ export class DiyServiceImplService {
|
|||||||
componentList.remove(key);
|
componentList.remove(key);
|
||||||
}
|
}
|
||||||
if (componentList.length === 0) {
|
if (componentList.length === 0) {
|
||||||
categoryToRemove.add(categoryKey);
|
categoryToRemove.push(categoryKey);
|
||||||
} else {
|
} else {
|
||||||
sortComponentsBySortValues(componentList, sortMap);
|
sortComponentsBySortValues(componentList, sortMap);
|
||||||
}
|
}
|
||||||
@@ -465,8 +465,8 @@ export class DiyServiceImplService {
|
|||||||
|
|
||||||
const diyRouteSearchParam: DiyRouteSearchParam = new DiyRouteSearchParam();
|
const diyRouteSearchParam: DiyRouteSearchParam = new DiyRouteSearchParam();
|
||||||
diyRouteSearchParam.setUrl(useTemplate.getStr("page"));
|
diyRouteSearchParam.setUrl(useTemplate.getStr("page"));
|
||||||
const otherPage: DiyRouteListVo[] = diyRouteService.list(diyRouteSearchParam);
|
DiyRouteListVo[] otherPage = diyRouteService.list(diyRouteSearchParam);
|
||||||
if (otherPage.size() > 0) {
|
if (otherPage.length > 0) {
|
||||||
const route: DiyRouteListVo = otherPage.get(0);
|
const route: DiyRouteListVo = otherPage.get(0);
|
||||||
useTemplate.set("title", route.getTitle());
|
useTemplate.set("title", route.getTitle());
|
||||||
useTemplate.set("name", path.basename(route));
|
useTemplate.set("name", path.basename(route));
|
||||||
@@ -493,7 +493,7 @@ export class DiyServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<DiyPage> = new QueryWrapper<DiyPage>()
|
queryWrapper = new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("type", "DIY_PAGE")
|
.eq("type", "DIY_PAGE")
|
||||||
.notIn("value", Arrays.asList("top_fixed", "right_fixed", "bottom_fixed", "left_fixed", "fixed"))
|
.notIn("value", Arrays.asList("top_fixed", "right_fixed", "bottom_fixed", "left_fixed", "fixed"))
|
||||||
@@ -504,14 +504,14 @@ export class DiyServiceImplService {
|
|||||||
.notIn("value", Arrays.asList("top_fixed", "right_fixed", "bottom_fixed", "left_fixed", "fixed"))
|
.notIn("value", Arrays.asList("top_fixed", "right_fixed", "bottom_fixed", "left_fixed", "fixed"))
|
||||||
.orderByDesc("id");
|
.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<DiyPage> = diyPageMapper.selectPage(new Page<DiyPage>(page, limit), queryWrapper);
|
iPage = this.diyPageRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: DiyPageListVo[] = [];
|
DiyPageListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: DiyPageListVo = new DiyPageListVo();
|
const vo: DiyPageListVo = new DiyPageListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -531,7 +531,7 @@ export class DiyServiceImplService {
|
|||||||
addonTemplateParam.setAddon(param.getAddon());
|
addonTemplateParam.setAddon(param.getAddon());
|
||||||
addonTemplateParam.setType(param.getType());
|
addonTemplateParam.setType(param.getType());
|
||||||
const addonTemplate: Record<string, any> = getTemplate(addonTemplateParam);
|
const addonTemplate: Record<string, any> = getTemplate(addonTemplateParam);
|
||||||
if (addonTemplate != null && addonTemplate.length !== 0) {
|
if (addonTemplate != null && addonTemplate.length > 0) {
|
||||||
addonFlag = addonTemplate.keySet().iterator().next();
|
addonFlag = addonTemplate.keySet().iterator().next();
|
||||||
template = addonTemplate.getJSONObject(addonFlag);
|
template = addonTemplate.getJSONObject(addonFlag);
|
||||||
}
|
}
|
||||||
@@ -543,7 +543,7 @@ export class DiyServiceImplService {
|
|||||||
const pageKey: string = pages.keySet().iterator().next();
|
const pageKey: string = pages.keySet().iterator().next();
|
||||||
const page: Record<string, any> = pages.getJSONObject(pageKey);
|
const page: Record<string, any> = pages.getJSONObject(pageKey);
|
||||||
|
|
||||||
const info: DiyPage = diyPageMapper.selectOne(new QueryWrapper<DiyPage>()
|
const info: DiyPage = this.diyPageRepository.findOne(new ()
|
||||||
.eq("name", addonFlag)
|
.eq("name", addonFlag)
|
||||||
.eq("site_id", param.getSiteId())
|
.eq("site_id", param.getSiteId())
|
||||||
.eq("is_default", 1)
|
.eq("is_default", 1)
|
||||||
@@ -561,13 +561,13 @@ export class DiyServiceImplService {
|
|||||||
addParam.setMode(page.getStr("mode", ""));
|
addParam.setMode(page.getStr("mode", ""));
|
||||||
addParam.setIsDefault(1);
|
addParam.setIsDefault(1);
|
||||||
addParam.setIsChange(0);
|
addParam.setIsChange(0);
|
||||||
this.add(addParam);
|
this.push(addParam);
|
||||||
} else {
|
} else {
|
||||||
if (path.basename(info) === "DIY_INDEX" && info.getType() === "DIY_INDEX") {
|
if (path.basename(info) === "DIY_INDEX" && info.getType() === "DIY_INDEX") {
|
||||||
const update: DiyPage = new DiyPage();
|
const update: DiyPage = new DiyPage();
|
||||||
update.setId(info.getId());
|
update.setId(info.getId());
|
||||||
update.setValue(page.getJSONObject("data").toString());
|
update.setValue(page.getJSONObject("data").toString());
|
||||||
diyPageMapper.updateById(update);
|
this.diyPageRepository.save(update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -586,7 +586,7 @@ export class DiyServiceImplService {
|
|||||||
* copy
|
* copy
|
||||||
*/
|
*/
|
||||||
async copy(...args: any[]): Promise<any> {
|
async copy(...args: any[]): Promise<any> {
|
||||||
const page: DiyPage = diyPageMapper.selectOne(new QueryWrapper<DiyPage>().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
const page: DiyPage = this.diyPageRepository.findOne(new ().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
||||||
if (page == null) throw new BadRequestException("页面不存在");
|
if (page == null) throw new BadRequestException("页面不存在");
|
||||||
|
|
||||||
page.setId(null);
|
page.setId(null);
|
||||||
@@ -594,8 +594,8 @@ export class DiyServiceImplService {
|
|||||||
page.setIsChange(0);
|
page.setIsChange(0);
|
||||||
page.setIsDefault(0);
|
page.setIsDefault(0);
|
||||||
page.setShare("");
|
page.setShare("");
|
||||||
page.setCreateTime(System.currentTimeMillis() / 1000);
|
page.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
diyPageMapper.insert(page);
|
this.diyPageRepository.save(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -605,21 +605,21 @@ export class DiyServiceImplService {
|
|||||||
// 获取参数
|
// 获取参数
|
||||||
const mainAppStr: string = params.get("main_app").toString();
|
const mainAppStr: string = params.get("main_app").toString();
|
||||||
const mainApp: JSONArray = JSONUtil.parseArray(mainAppStr);
|
const mainApp: JSONArray = JSONUtil.parseArray(mainAppStr);
|
||||||
const count: number = mainApp.size();
|
const count: number = mainApp.length;
|
||||||
const tag: string = params.getOrDefault("tag", "add");
|
const tag: string = (String) params.getOrDefault("tag", "add");
|
||||||
const siteId: number = params.get("site_id");
|
const siteId: number = (number) params.get("site_id");
|
||||||
|
|
||||||
// 创建addon数组,在开头添加空字符串
|
// 创建addon数组,在开头添加空字符串
|
||||||
const addon: JSONArray = new JSONArray();
|
const addon: JSONArray = new JSONArray();
|
||||||
addon.add("");
|
addon.push("");
|
||||||
addon.addAll(mainApp);
|
addon.addAll(mainApp);
|
||||||
|
|
||||||
// 遍历处理
|
// 遍历处理
|
||||||
for (const k of number = 0; k < addon.size(); k++) {
|
for (const k of number = 0; k < addon.length; k++) {
|
||||||
const v: string = addon.get(k).toString();
|
const v: string = addon.get(k).toString();
|
||||||
int isStart;
|
int isStart;
|
||||||
|
|
||||||
if ("add" === tag) {
|
if ("add".equals(tag)) {
|
||||||
if (count > 1) {
|
if (count > 1) {
|
||||||
// 站点多应用,使用系统的页面
|
// 站点多应用,使用系统的页面
|
||||||
isStart = (k == 0) ? 1 : 0;
|
isStart = (k == 0) ? 1 : 0;
|
||||||
@@ -660,21 +660,21 @@ export class DiyServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<DiyPage> = new QueryWrapper<DiyPage>()
|
queryWrapper = new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.and(i => i.eq("type", "DIY_PAGE").or().ne("type", "DIY_PAGE").eq("is_default", 0))
|
.and(i => i.eq("type", "DIY_PAGE").or().ne("type", "DIY_PAGE").eq("is_default", 0))
|
||||||
.orderByDesc("update_time");
|
.orderByDesc("update_time");
|
||||||
|
|
||||||
const templates: Record<string, any> = TemplateEnum.getTemplate(new TemplateParam());
|
const templates: Record<string, any> = TemplateEnum.getTemplate(new TemplateParam());
|
||||||
|
|
||||||
const iPage: IPage<DiyPage> = diyPageMapper.selectPage(new Page<DiyPage>(page, limit), queryWrapper);
|
iPage = this.diyPageRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: DiyPageListVo[] = [];
|
DiyPageListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: DiyPageListVo = new DiyPageListVo();
|
const vo: DiyPageListVo = new DiyPageListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setTypeName(templates.getByPath(item.getType() + ".title", String.class));
|
vo.setTypeName(templates.getByPath(item.getType() + ".title", String.class));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,25 +15,25 @@ export class DiyThemeServiceImplService {
|
|||||||
async getDiyTheme(...args: any[]): Promise<any> {
|
async getDiyTheme(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const siteCache: SiteInfoVo = coreSiteService.getSiteCache(siteId);
|
const siteCache: SiteInfoVo = coreSiteService.getSiteCache(siteId);
|
||||||
const themeDataList: DiyTheme[] = diyThemeMapper.selectList(new QueryWrapper<DiyTheme>().eq("site_id", siteId).eq("type", "app").eq("is_selected", 1));
|
DiyTheme[] themeDataList = this.diyThemeRepository.find(new ().eq("site_id", siteId).eq("type", "app").eq("is_selected", 1));
|
||||||
const themeData: Record<string, any> = {};
|
const themeData: Record<String, DiyTheme> = new HashRecord<>();
|
||||||
if (themeDataList.length !== 0){
|
if (themeDataList.length > 0){
|
||||||
themeData = themeDataList.stream().collect(Collectors.toMap(theme => theme.getAddon(), theme => theme));
|
themeData = themeDataList.collect(Collectors.toMap(theme => theme.getAddon(), theme => theme));
|
||||||
}
|
}
|
||||||
|
|
||||||
const systemTheme: Record<string, any> = coreDiyService.getDefaultThemeColor("app");
|
const systemTheme: Record<string, any> = coreDiyService.getDefaultThemeColor("app");
|
||||||
const appTheme: Record<string, any> = new Record<string, any>();
|
const appTheme: Record<string, any> = new Record<string, any>();
|
||||||
const appThemeObj: Record<string, any> = new Record<string, any>();
|
const appThemeObj: Record<string, any> = new Record<string, any>();
|
||||||
appThemeObj.set("id", ObjectUtil.isNotEmpty(themeData.get("app")) ? themeData.get("app").getId() : "");
|
appThemeObj.set("id", !!themeData.get("app") ? themeData.get("app").getId() : "");
|
||||||
appThemeObj.set("icon", "");
|
appThemeObj.set("icon", "");
|
||||||
appThemeObj.set("addon_title", "系统");
|
appThemeObj.set("addon_title", "系统");
|
||||||
appThemeObj.set("title", ObjectUtil.isNotEmpty(themeData.get("app")) ? themeData.get("app").getTitle() : (systemTheme.length !== 0 ? systemTheme.getJSONArray("theme_color").getJSONObject(0).get("title") : ""));
|
appThemeObj.set("title", !!themeData.get("app") ? themeData.get("app").getTitle() : (systemTheme.length > 0 ? systemTheme.getJSONArray("theme_color").getJSONObject(0).get("title") : ""));
|
||||||
|
|
||||||
const themeValue: any = ObjectUtil.isNotEmpty(themeData.get("app")) ?
|
const themeValue: any = !!themeData.get("app") ?
|
||||||
themeData.get("app").getTheme() :
|
themeData.get("app").getTheme() :
|
||||||
(systemTheme.length !== 0 ? systemTheme.getJSONArray("theme_color").getJSONObject(0).get("theme") : "");
|
(systemTheme.length > 0 ? systemTheme.getJSONArray("theme_color").getJSONObject(0).get("theme") : "");
|
||||||
if (themeValue instanceof String) {
|
if (themeValue instanceof String) {
|
||||||
appThemeObj.set("theme", JSONUtil.parseObj(themeValue));
|
appThemeObj.set("theme", JSON.parse(themeValue));
|
||||||
} else {
|
} else {
|
||||||
appThemeObj.set("theme", themeValue);
|
appThemeObj.set("theme", themeValue);
|
||||||
}
|
}
|
||||||
@@ -41,22 +41,22 @@ export class DiyThemeServiceImplService {
|
|||||||
appTheme.putOpt("app", appThemeObj);
|
appTheme.putOpt("app", appThemeObj);
|
||||||
|
|
||||||
const data: Record<string, any> = new Record<string, any>();
|
const data: Record<string, any> = new Record<string, any>();
|
||||||
const appsAndAddons: Addon[] = siteCache.getApps();
|
Addon[] appsAndAddons = siteCache.getApps();
|
||||||
appsAndAddons.addAll(siteCache.getSiteAddons());
|
appsAndAddons.addAll(siteCache.getSiteAddons());
|
||||||
for (const value of appsAndAddons) {
|
for (const value of appsAndAddons) {
|
||||||
const addonTheme: Record<string, any> = coreDiyService.getDefaultThemeColor(value.getKey());
|
const addonTheme: Record<string, any> = coreDiyService.getDefaultThemeColor(value.getKey());
|
||||||
if (addonTheme.length !== 0 && addonTheme.containsKey("theme_color")) {
|
if (addonTheme.length > 0 && addonTheme.containsKey("theme_color")) {
|
||||||
const addonData: Record<string, any> = new Record<string, any>();
|
const addonData: Record<string, any> = new Record<string, any>();
|
||||||
addonData.set("id", ObjectUtil.isNotEmpty(themeData.get(value.getKey())) ? themeData.get(value.getKey()).getId() : "");
|
addonData.set("id", !!themeData.get(value.getKey()) ? themeData.get(value.getKey()).getId() : "");
|
||||||
addonData.set("icon", value.getIcon() != null ? value.getIcon() : "");
|
addonData.set("icon", value.getIcon() != null ? value.getIcon() : "");
|
||||||
addonData.set("addon_title", value.getTitle() != null ? value.getTitle() : "");
|
addonData.set("addon_title", value.getTitle() != null ? value.getTitle() : "");
|
||||||
addonData.set("title", ObjectUtil.isNotEmpty(themeData.get(value.getKey())) ? themeData.get(value.getKey()).getTitle() : addonTheme.getJSONArray("theme_color").getJSONObject(0).get("title"));
|
addonData.set("title", !!themeData.get(value.getKey()) ? themeData.get(value.getKey()).getTitle() : addonTheme.getJSONArray("theme_color").getJSONObject(0).get("title"));
|
||||||
|
|
||||||
const addonThemeValue: any = ObjectUtil.isNotEmpty(themeData.get(value.getKey())) ?
|
const addonThemeValue: any = !!themeData.get(value.getKey()) ?
|
||||||
themeData.get(value.getKey()).getTheme() :
|
themeData.get(value.getKey()).getTheme() :
|
||||||
addonTheme.getJSONArray("theme_color").getJSONObject(0).get("theme");
|
addonTheme.getJSONArray("theme_color").getJSONObject(0).get("theme");
|
||||||
if (addonThemeValue instanceof String) {
|
if (addonThemeValue instanceof String) {
|
||||||
addonData.set("theme", JSONUtil.parseObj(addonThemeValue));
|
addonData.set("theme", JSON.parse(addonThemeValue));
|
||||||
} else {
|
} else {
|
||||||
addonData.set("theme", addonThemeValue);
|
addonData.set("theme", addonThemeValue);
|
||||||
}
|
}
|
||||||
@@ -89,12 +89,12 @@ export class DiyThemeServiceImplService {
|
|||||||
async setDiyTheme(...args: any[]): Promise<any> {
|
async setDiyTheme(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const diyTheme: DiyTheme = diyThemeMapper.selectById(data.getId());
|
const diyTheme: DiyTheme = diyThemeMapper.selectById(data.getId());
|
||||||
if (ObjectUtil.isEmpty(diyTheme)) {
|
if (!diyTheme) {
|
||||||
throw new BadRequestException("主题色不存在");
|
throw new BadRequestException("主题色不存在");
|
||||||
}
|
}
|
||||||
const addonData: Addon[] = addonMapper.selectList(new QueryWrapper<Addon>().eq("support_app", data.getAddon()));
|
Addon[] addonData = this.addonRepository.find(new ().eq("support_app", data.getAddon()));
|
||||||
const addonSaveData: DiyTheme[] = [];
|
DiyTheme[] addonSaveData = [];
|
||||||
if(ObjectUtil.isNotEmpty(addonData)){
|
if(!!addonData){
|
||||||
for (const addon of addonData) {
|
for (const addon of addonData) {
|
||||||
const saveData: DiyTheme = new DiyTheme();
|
const saveData: DiyTheme = new DiyTheme();
|
||||||
saveData.setSiteId(siteId);
|
saveData.setSiteId(siteId);
|
||||||
@@ -104,20 +104,20 @@ export class DiyThemeServiceImplService {
|
|||||||
saveData.setTheme(data.getTheme().toString());
|
saveData.setTheme(data.getTheme().toString());
|
||||||
saveData.setNewTheme(data.getNewTheme().toString());
|
saveData.setNewTheme(data.getNewTheme().toString());
|
||||||
saveData.setIsSelected(1);
|
saveData.setIsSelected(1);
|
||||||
saveData.setUpdateTime(System.currentTimeMillis() / 1000);
|
saveData.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
addonSaveData.add(saveData);
|
addonSaveData.push(saveData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
diyThemeMapper.update(null, new UpdateWrapper<DiyTheme>().eq("site_id", siteId).eq("addon", data.getAddon()).eq("type", "addon").set("is_selected", 0));
|
diyThemeMapper.update(null, new UpdateWrapper<DiyTheme>().eq("site_id", siteId).eq("addon", data.getAddon()).eq("type", "addon").set("is_selected", 0));
|
||||||
|
|
||||||
const model: DiyTheme = new DiyTheme();
|
const model: DiyTheme = new DiyTheme();
|
||||||
BeanUtils.copyProperties(data, model);
|
Object.assign(model, data);
|
||||||
model.setIsSelected(1);
|
model.setIsSelected(1);
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
diyThemeMapper.updateById(model);
|
this.diyThemeRepository.save(model);
|
||||||
|
|
||||||
if (!ObjectUtil.isNotEmpty(addonSaveData)) {
|
if (!!!addonSaveData) {
|
||||||
for (const saveData of addonSaveData) {
|
for (const saveData of addonSaveData) {
|
||||||
|
|
||||||
diyThemeMapper.update(null, new UpdateWrapper<DiyTheme>().eq("site_id", siteId).eq("addon", saveData.getAddon()).eq("type", "addon").set("is_selected", 0));
|
diyThemeMapper.update(null, new UpdateWrapper<DiyTheme>().eq("site_id", siteId).eq("addon", saveData.getAddon()).eq("type", "addon").set("is_selected", 0));
|
||||||
@@ -131,16 +131,16 @@ export class DiyThemeServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getDefaultThemeColor(...args: any[]): Promise<any> {
|
async getDefaultThemeColor(...args: any[]): Promise<any> {
|
||||||
const addon: string = data.getAddon();
|
const addon: string = data.getAddon();
|
||||||
const themeList: DiyTheme[] = diyThemeMapper.selectList(new QueryWrapper<DiyTheme>().eq("site_id", RequestUtils.siteId()).eq("addon", addon));
|
DiyTheme[] themeList = this.diyThemeRepository.find(new ().eq("site_id", RequestUtils.siteId()).eq("addon", addon));
|
||||||
const voList: DiyThemeInfoVo[] = [];
|
DiyThemeInfoVo[] voList = [];
|
||||||
for (const theme of themeList) {
|
for (const theme of themeList) {
|
||||||
const vo: DiyThemeInfoVo = new DiyThemeInfoVo();
|
const vo: DiyThemeInfoVo = new DiyThemeInfoVo();
|
||||||
BeanUtils.copyProperties(theme, vo);
|
Object.assign(vo, theme);
|
||||||
const addonTheme: Record<string, any> = coreDiyService.getDefaultThemeColor(theme.getAddon());
|
const addonTheme: Record<string, any> = coreDiyService.getDefaultThemeColor(theme.getAddon());
|
||||||
if (addonTheme.length !== 0 && addonTheme.containsKey("theme_field")) {
|
if (addonTheme.length > 0 && addonTheme.containsKey("theme_field")) {
|
||||||
vo.setThemeField(addonTheme.getJSONArray("theme_field"));
|
vo.setThemeField(addonTheme.getJSONArray("theme_field"));
|
||||||
}
|
}
|
||||||
voList.add(vo);
|
voList.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return voList;
|
return voList;
|
||||||
@@ -151,9 +151,9 @@ export class DiyThemeServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async addDiyTheme(...args: any[]): Promise<any> {
|
async addDiyTheme(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const addonData: Addon[] = addonMapper.selectList(new QueryWrapper<Addon>().eq("support_app", data.getAddon()));
|
Addon[] addonData = this.addonRepository.find(new ().eq("support_app", data.getAddon()));
|
||||||
const addonSaveData: DiyTheme[] = [];
|
DiyTheme[] addonSaveData = [];
|
||||||
if (addonData.length !== 0) {
|
if (addonData.length > 0) {
|
||||||
for (const addon of addonData) {
|
for (const addon of addonData) {
|
||||||
|
|
||||||
const diyTheme: DiyTheme = new DiyTheme();
|
const diyTheme: DiyTheme = new DiyTheme();
|
||||||
@@ -165,20 +165,20 @@ export class DiyThemeServiceImplService {
|
|||||||
diyTheme.setNewTheme(data.getNewTheme().toString());
|
diyTheme.setNewTheme(data.getNewTheme().toString());
|
||||||
diyTheme.setDefaultTheme(data.getDefaultTheme().toString());
|
diyTheme.setDefaultTheme(data.getDefaultTheme().toString());
|
||||||
diyTheme.setThemeType("diy");
|
diyTheme.setThemeType("diy");
|
||||||
diyTheme.setCreateTime(System.currentTimeMillis() / 1000);
|
diyTheme.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
addonSaveData.add(diyTheme);
|
addonSaveData.push(diyTheme);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const model: DiyTheme = new DiyTheme();
|
const model: DiyTheme = new DiyTheme();
|
||||||
BeanUtils.copyProperties(data, model);
|
Object.assign(model, data);
|
||||||
model.setType("app");
|
model.setType("app");
|
||||||
model.setThemeType("diy");
|
model.setThemeType("diy");
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
addonSaveData.add(model);
|
addonSaveData.push(model);
|
||||||
if (ObjectUtil.isNotEmpty(addonSaveData)) {
|
if (!!addonSaveData) {
|
||||||
for (const diyTheme of addonSaveData) {
|
for (const diyTheme of addonSaveData) {
|
||||||
diyThemeMapper.insert(diyTheme);
|
this.diyThemeRepository.save(diyTheme);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -188,12 +188,12 @@ export class DiyThemeServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async editDiyTheme(...args: any[]): Promise<any> {
|
async editDiyTheme(...args: any[]): Promise<any> {
|
||||||
const diyThemeInfo: DiyTheme = diyThemeMapper.selectById(id);
|
const diyThemeInfo: DiyTheme = diyThemeMapper.selectById(id);
|
||||||
if (ObjectUtil.isEmpty(diyThemeInfo)) {
|
if (!diyThemeInfo) {
|
||||||
throw new Error("主题色不存在");
|
throw new RuntimeException("主题色不存在");
|
||||||
}
|
}
|
||||||
const addonData: DiyTheme[] = diyThemeMapper.selectList(new QueryWrapper<DiyTheme>().eq("type", "addon").eq("title", diyThemeInfo.getTitle()));
|
DiyTheme[] addonData = this.diyThemeRepository.find(new ().eq("type", "addon").eq("title", diyThemeInfo.getTitle()));
|
||||||
const addonSaveData: DiyTheme[] = [];
|
DiyTheme[] addonSaveData = [];
|
||||||
if (ObjectUtil.isNotEmpty(addonData)) {
|
if (!!addonData) {
|
||||||
for (const diyTheme of addonData) {
|
for (const diyTheme of addonData) {
|
||||||
const saveData: DiyTheme = new DiyTheme();
|
const saveData: DiyTheme = new DiyTheme();
|
||||||
saveData.setId(diyTheme.getId());
|
saveData.setId(diyTheme.getId());
|
||||||
@@ -201,19 +201,19 @@ export class DiyThemeServiceImplService {
|
|||||||
saveData.setTitle(diyTheme.getTitle());
|
saveData.setTitle(diyTheme.getTitle());
|
||||||
saveData.setTheme(data.getTheme().toString());
|
saveData.setTheme(data.getTheme().toString());
|
||||||
saveData.setNewTheme(data.getNewTheme().toString());
|
saveData.setNewTheme(data.getNewTheme().toString());
|
||||||
saveData.setUpdateTime(System.currentTimeMillis() / 1000);
|
saveData.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
addonSaveData.add(saveData);
|
addonSaveData.push(saveData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BeanUtils.copyProperties(data, diyThemeInfo);
|
Object.assign(diyThemeInfo, data);
|
||||||
diyThemeInfo.setUpdateTime(System.currentTimeMillis() / 1000);
|
diyThemeInfo.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
diyThemeMapper.updateById(diyThemeInfo);
|
this.diyThemeRepository.save(diyThemeInfo);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(addonSaveData)) {
|
if (!!addonSaveData) {
|
||||||
for (const diyTheme of addonSaveData) {
|
for (const diyTheme of addonSaveData) {
|
||||||
diyThemeMapper.updateById(diyTheme);
|
this.diyThemeRepository.save(diyTheme);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -223,26 +223,26 @@ export class DiyThemeServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async delDiyTheme(...args: any[]): Promise<any> {
|
async delDiyTheme(...args: any[]): Promise<any> {
|
||||||
const diyThemeInfo: DiyTheme = diyThemeMapper.selectById(id);
|
const diyThemeInfo: DiyTheme = diyThemeMapper.selectById(id);
|
||||||
if (ObjectUtil.isEmpty(diyThemeInfo)) {
|
if (!diyThemeInfo) {
|
||||||
throw new BadRequestException("主题色不存在");
|
throw new BadRequestException("主题色不存在");
|
||||||
}
|
}
|
||||||
if (diyThemeInfo.getThemeType() === "default") {
|
if (diyThemeInfo.getThemeType() === "default") {
|
||||||
throw new BadRequestException("默认主题色不能删除");
|
throw new BadRequestException("默认主题色不能删除");
|
||||||
}
|
}
|
||||||
diyThemeMapper.deleteById(diyThemeInfo);
|
this.diyThemeRepository.delete(diyThemeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* checkDiyThemeTitleUnique
|
* checkDiyThemeTitleUnique
|
||||||
*/
|
*/
|
||||||
async checkDiyThemeTitleUnique(...args: any[]): Promise<any> {
|
async checkDiyThemeTitleUnique(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<DiyTheme> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("title", data.getTitle());
|
queryWrapper.eq("title", data.getTitle());
|
||||||
queryWrapper.eq("addon", data.getAddon());
|
queryWrapper.eq("addon", data.getAddon());
|
||||||
if(ObjectUtil.isNotEmpty(data.getId()))
|
if(!!data.getId())
|
||||||
{
|
{
|
||||||
queryWrapper.ne("id", data.getId());
|
queryWrapper.ne("id", data.getId());
|
||||||
}
|
}
|
||||||
return diyThemeMapper.selectCount(queryWrapper) == 0;
|
return this.diyThemeRepository.count(queryWrapper) == 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DiyFormRecordsServiceImplService {
|
export class DiyFormRecordsServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -16,18 +15,18 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
async getPage(...args: any[]): Promise<any> {
|
async getPage(...args: any[]): Promise<any> {
|
||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
const queryWrapper: MPJQueryWrapper<DiyFormRecords> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
|
|
||||||
//sql语句
|
//sql语句
|
||||||
queryWrapper.select("ndfr.form_id, ndfr.member_id, nm.username, nm.member_no, nm.mobile, nm.nickname, nm.headimg,count(*) as write_count")
|
queryWrapper.select("ndfr.form_id, ndfr.member_id, nm.username, nm.member_no, nm.mobile, nm.nickname, nm.headimg,count(*) as write_count")
|
||||||
.setAlias("ndfr")
|
.setAlias("ndfr")
|
||||||
.leftJoin("?_member nm ON ndfr.member_id = nm.member_id".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_member nm ON ndfr.member_id = nm.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
|
|
||||||
queryWrapper.eq("ndfr.site_id", RequestUtils.siteId());
|
queryWrapper.eq("ndfr.site_id", RequestUtils.siteId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getFormId())) {
|
if (!!searchParam.getFormId()) {
|
||||||
queryWrapper.eq("ndfr.form_id", searchParam.getFormId());
|
queryWrapper.eq("ndfr.form_id", searchParam.getFormId());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeyword())) {
|
if (!!searchParam.getKeyword()) {
|
||||||
queryWrapper.and(i => i.or(j => j.like("nm.nickname", searchParam.getKeyword()))
|
queryWrapper.and(i => i.or(j => j.like("nm.nickname", searchParam.getKeyword()))
|
||||||
.or(j => j.like("nm.mobile", searchParam.getKeyword()))
|
.or(j => j.like("nm.mobile", searchParam.getKeyword()))
|
||||||
);
|
);
|
||||||
@@ -36,10 +35,10 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
|
|
||||||
|
|
||||||
queryWrapper.orderByDesc("ndfr.form_id");
|
queryWrapper.orderByDesc("ndfr.form_id");
|
||||||
const iPage: IPage<DiyFormRecordsListVo> = diyFormRecordsMapper.selectJoinPage(new Page<>(page, limit), DiyFormRecordsListVo.class, queryWrapper);
|
iPage = diyFormRecordsMapper.selectJoinPage({ /* pagination */ }, DiyFormRecordsListVo.class, queryWrapper);
|
||||||
for (const vo of iPage.getRecords()) {
|
for (const vo of records) {
|
||||||
const memberVo: Member = new Member();
|
const memberVo: Member = new Member();
|
||||||
BeanUtils.copyProperties(vo, memberVo);
|
Object.assign(memberVo, vo);
|
||||||
vo.setMember(memberVo);
|
vo.setMember(memberVo);
|
||||||
}
|
}
|
||||||
return PageResult.build(iPage);
|
return PageResult.build(iPage);
|
||||||
@@ -51,48 +50,48 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
async getFieldStatList(...args: any[]): Promise<any> {
|
async getFieldStatList(...args: any[]): Promise<any> {
|
||||||
const diyFormRecordsFieldsSearchParam: DiyFormRecordsFieldsSearchParam = new DiyFormRecordsFieldsSearchParam();
|
const diyFormRecordsFieldsSearchParam: DiyFormRecordsFieldsSearchParam = new DiyFormRecordsFieldsSearchParam();
|
||||||
diyFormRecordsFieldsSearchParam.setFormId(searchParam.getFormId());
|
diyFormRecordsFieldsSearchParam.setFormId(searchParam.getFormId());
|
||||||
const fieldsList: DiyFormFieldsListVo[] = diyFormService.getFieldsList(diyFormRecordsFieldsSearchParam);
|
DiyFormFieldsListVo[] fieldsList = diyFormService.getFieldsList(diyFormRecordsFieldsSearchParam);
|
||||||
|
|
||||||
// 过滤简单字段列表
|
// 过滤简单字段列表
|
||||||
String[] simpleTypes = {"FormRadio", "FormCheckbox", "FormDateScope", "FormTimeScope", "FormImage"};
|
String[] simpleTypes = {"FormRadio", "FormCheckbox", "FormDateScope", "FormTimeScope", "FormImage"};
|
||||||
const simpleFieldList: DiyFormFieldsListVo[] = fieldsList.stream()
|
DiyFormFieldsListVo[] simpleFieldList = fieldsList
|
||||||
.filter(e => !Arrays.asList(simpleTypes).includes(e.getFieldType()))
|
.filter(e => !Arrays.asList(simpleTypes).includes(e.getFieldType()))
|
||||||
.collect(Collectors.toList());
|
;
|
||||||
|
|
||||||
// 过滤 JSON 字段列表
|
// 过滤 JSON 字段列表
|
||||||
String[] jsonTypes = {"FormRadio", "FormCheckbox", "FormDateScope", "FormTimeScope"};
|
String[] jsonTypes = {"FormRadio", "FormCheckbox", "FormDateScope", "FormTimeScope"};
|
||||||
const jsonFieldList: DiyFormFieldsListVo[] = fieldsList.stream()
|
DiyFormFieldsListVo[] jsonFieldList = fieldsList
|
||||||
.filter(e => Arrays.asList(jsonTypes).includes(e.getFieldType()))
|
.filter(e => Arrays.asList(jsonTypes).includes(e.getFieldType()))
|
||||||
.collect(Collectors.toList());
|
;
|
||||||
|
|
||||||
const totalCount: number = 0;
|
const totalCount: number = 0;
|
||||||
for (const field of simpleFieldList) {
|
for (const field of simpleFieldList) {
|
||||||
// 统计每个字段值的填写数量
|
// 统计每个字段值的填写数量
|
||||||
const valueQueryWrapper: QueryWrapper<DiyFormRecordsFields> = new QueryWrapper<>();
|
valueQueryWrapper = {};
|
||||||
valueQueryWrapper.eq("site_id", RequestUtils.siteId())
|
valueQueryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("field_key", field.getFieldKey())
|
.eq("field_key", field.getFieldKey())
|
||||||
.eq("field_type", field.getFieldType());
|
.eq("field_type", field.getFieldType());
|
||||||
if (searchParam.getFormId() != null) {
|
if (searchParam.getFormId() != null) {
|
||||||
valueQueryWrapper.eq("form_id", searchParam.getFormId());
|
valueQueryWrapper.eq("form_id", searchParam.getFormId());
|
||||||
}
|
}
|
||||||
const valueList: Record<string, any>[] = diyFormRecordsFieldsMapper.selectMaps(valueQueryWrapper
|
Record<String, Object[]> valueList = diyFormRecordsFieldsMapper.selectMaps(valueQueryWrapper
|
||||||
.select("form_id, field_key, field_type, field_value, count(*) as write_count")
|
.select("form_id, field_key, field_type, field_value, count(*) as write_count")
|
||||||
.groupBy("field_value"));
|
.groupBy("field_value"));
|
||||||
for (const i of number = 0; i < valueList.size(); i++) {
|
for (const i of number = 0; i < valueList.length; i++) {
|
||||||
const value: Record<string, any> = valueList.get(i);
|
const value: Record<String, Object> = valueList.get(i);
|
||||||
const diyFormComponentEnum: DiyFormComponentEnum = new DiyFormComponentEnum();
|
const diyFormComponentEnum: DiyFormComponentEnum = new DiyFormComponentEnum();
|
||||||
const component: Record<string, any> = diyFormComponentEnum.getComponent(value.get("field_type").toString());
|
const component: Record<string, any> = diyFormComponentEnum.getComponent(value.get("field_type").toString());
|
||||||
if(component.containsKey("render")){
|
if(component.containsKey("render")){
|
||||||
const driver: string = component.getStr("render");
|
const driver: string = component.getStr("render");
|
||||||
if(ObjectUtil.isNotEmpty(driver))
|
if(!!driver)
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
Class<?> clazz = ClassLoaderUtil.loadClass(driver);
|
Class<?> clazz = ClassLoaderUtil.loadClass(driver);
|
||||||
const obj: any = clazz.getDeclaredConstructor().newInstance();
|
const obj: any = clazz.getDeclaredConstructor().newInstance();
|
||||||
const method: Method = clazz.getMethod("render", String.class, String.class);
|
const method: Method = clazz.getMethod("render", String.class, String.class);
|
||||||
value.put("render_value", method.invoke(obj, value.get("field_value").toString(), value.get("field_type").toString()));
|
value.put("render_value", method.invoke(obj, value.get("field_value").toString(), value.get("field_type").toString()));
|
||||||
}catch (e){
|
}catch (Exception e){
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -102,19 +101,19 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算总数量
|
// 计算总数量
|
||||||
totalCount = diyFormRecordsFieldsMapper.selectCount(new QueryWrapper<DiyFormRecordsFields>().eq("site_id", RequestUtils.siteId())
|
totalCount = this.diyFormRecordsFieldsRepository.count(new ().eq("site_id", RequestUtils.siteId())
|
||||||
.eq("field_key", field.getFieldKey())
|
.eq("field_key", field.getFieldKey())
|
||||||
.eq("field_type", field.getFieldType()));
|
.eq("field_type", field.getFieldType()));
|
||||||
|
|
||||||
if (totalCount > 0) {
|
if (totalCount > 0) {
|
||||||
const totalPercent: number = 100;
|
const totalPercent: number = 100;
|
||||||
for (const i of number = 0; i < valueList.size(); i++) {
|
for (const i of number = 0; i < valueList.length; i++) {
|
||||||
const value: Record<string, any> = valueList.get(i);
|
const value: Record<String, Object> = valueList.get(i);
|
||||||
double itemPercent;
|
double itemPercent;
|
||||||
if (i == valueList.size() - 1) {
|
if (i == valueList.length - 1) {
|
||||||
itemPercent = totalPercent;
|
itemPercent = totalPercent;
|
||||||
} else {
|
} else {
|
||||||
itemPercent = Math.round((number.parseInt(value.get("write_count").toString()) / totalCount) * 100 * 100) / 100.0;
|
itemPercent = Math.round((number.parseInt(value.get("write_count").toString()) / (double) totalCount) * 100 * 100) / 100.0;
|
||||||
}
|
}
|
||||||
value.put("write_percent", itemPercent);
|
value.put("write_percent", itemPercent);
|
||||||
totalPercent = totalPercent - itemPercent;
|
totalPercent = totalPercent - itemPercent;
|
||||||
@@ -126,29 +125,29 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
// 处理 JSON 字段列表
|
// 处理 JSON 字段列表
|
||||||
for (const field of jsonFieldList) {
|
for (const field of jsonFieldList) {
|
||||||
// 查询字段记录
|
// 查询字段记录
|
||||||
const fieldQueryWrapper: QueryWrapper<DiyFormRecordsFields> = new QueryWrapper<>();
|
fieldQueryWrapper = {};
|
||||||
fieldQueryWrapper.eq("site_id", RequestUtils.siteId())
|
fieldQueryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("field_key", field.getFieldKey())
|
.eq("field_key", field.getFieldKey())
|
||||||
.eq("field_type", field.getFieldType());
|
.eq("field_type", field.getFieldType());
|
||||||
if (searchParam.getFormId() != null) {
|
if (searchParam.getFormId() != null) {
|
||||||
fieldQueryWrapper.eq("form_id", searchParam.getFormId());
|
fieldQueryWrapper.eq("form_id", searchParam.getFormId());
|
||||||
}
|
}
|
||||||
const fieldList: Record<string, any>[] = diyFormRecordsFieldsMapper.selectMaps(fieldQueryWrapper);
|
Record<String, Object[]> fieldList = diyFormRecordsFieldsMapper.selectMaps(fieldQueryWrapper);
|
||||||
for (const i of number = 0; i < fieldList.size(); i++) {
|
for (const i of number = 0; i < fieldList.length; i++) {
|
||||||
const value: Record<string, any> = fieldList.get(i);
|
const value: Record<String, Object> = fieldList.get(i);
|
||||||
const diyFormComponentEnum: DiyFormComponentEnum = new DiyFormComponentEnum();
|
const diyFormComponentEnum: DiyFormComponentEnum = new DiyFormComponentEnum();
|
||||||
const component: Record<string, any> = diyFormComponentEnum.getComponent(value.get("field_type").toString());
|
const component: Record<string, any> = diyFormComponentEnum.getComponent(value.get("field_type").toString());
|
||||||
if(component.containsKey("render")){
|
if(component.containsKey("render")){
|
||||||
const driver: string = component.getStr("render");
|
const driver: string = component.getStr("render");
|
||||||
if(ObjectUtil.isNotEmpty(driver))
|
if(!!driver)
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
Class<?> clazz = ClassLoaderUtil.loadClass(driver);
|
Class<?> clazz = ClassLoaderUtil.loadClass(driver);
|
||||||
const obj: any = clazz.getDeclaredConstructor().newInstance();
|
const obj: any = clazz.getDeclaredConstructor().newInstance();
|
||||||
const method: Method = clazz.getMethod("render", String.class, String.class);
|
const method: Method = clazz.getMethod("render", String.class, String.class);
|
||||||
value.put("render_value", method.invoke(obj, value.get("field_value").toString(), value.get("field_type").toString()));
|
value.put("render_value", method.invoke(obj, value.get("field_value").toString(), value.get("field_type").toString()));
|
||||||
}catch (e){
|
}catch (Exception e){
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -157,12 +156,12 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
totalCount = 0;
|
totalCount = 0;
|
||||||
const valueMap: Record<string, any> = {};
|
const valueMap: Record<String, Map<String, Object>> = new HashRecord<>();
|
||||||
for (const record of fieldList) {
|
for (const record of fieldList) {
|
||||||
if (!"FormCheckbox" === record.get("field_type")) {
|
if (!"FormCheckbox".equals(record.get("field_type"))) {
|
||||||
const key: string = record.get("field_key") + "_" + record.get("render_value");
|
const key: string = record.get("field_key") + "_" + record.get("render_value");
|
||||||
if (valueMap.containsKey(key)) {
|
if (valueMap.containsKey(key)) {
|
||||||
valueMap.get(key).put("write_count", valueMap.get(key).get("write_count") + 1);
|
valueMap.get(key).put("write_count", (number) valueMap.get(key).get("write_count") + 1);
|
||||||
totalCount++;
|
totalCount++;
|
||||||
} else {
|
} else {
|
||||||
valueMap.put(key, record);
|
valueMap.put(key, record);
|
||||||
@@ -174,10 +173,10 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
for (const value of values) {
|
for (const value of values) {
|
||||||
const key: string = record.get("field_key") + "_" + value;
|
const key: string = record.get("field_key") + "_" + value;
|
||||||
if (valueMap.containsKey(key)) {
|
if (valueMap.containsKey(key)) {
|
||||||
valueMap.get(key).put("write_count", valueMap.get(key).get("write_count") + 1);
|
valueMap.get(key).put("write_count", (number) valueMap.get(key).get("write_count") + 1);
|
||||||
totalCount++;
|
totalCount++;
|
||||||
} else {
|
} else {
|
||||||
const newRecord: Record<string, any> = new HashMap<>(record);
|
const newRecord: Record<String, Object> = new HashRecord<>(record);
|
||||||
newRecord.put("render_value", value);
|
newRecord.put("render_value", value);
|
||||||
newRecord.put("write_count", 1);
|
newRecord.put("write_count", 1);
|
||||||
valueMap.put(key, newRecord);
|
valueMap.put(key, newRecord);
|
||||||
@@ -188,15 +187,15 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (totalCount > 0) {
|
if (totalCount > 0) {
|
||||||
const valueList: Record<string, any>[] = new ArrayList<>(valueMap.values());
|
Record<String, Object[]> valueList = new ArrayList<>(valueMap.values());
|
||||||
const totalPercent: number = 100;
|
const totalPercent: number = 100;
|
||||||
for (const i of number = 0; i < valueList.size(); i++) {
|
for (const i of number = 0; i < valueList.length; i++) {
|
||||||
const value: Record<string, any> = valueList.get(i);
|
const value: Record<String, Object> = valueList.get(i);
|
||||||
double itemPercent;
|
double itemPercent;
|
||||||
if (i == valueList.size() - 1) {
|
if (i == valueList.length - 1) {
|
||||||
itemPercent = totalPercent;
|
itemPercent = totalPercent;
|
||||||
} else {
|
} else {
|
||||||
itemPercent = Math.round((number.parseInt(value.get("write_count").toString()) / totalCount) * 100 * 100) / 100.0;
|
itemPercent = Math.round((number.parseInt(value.get("write_count").toString()) / (double) totalCount) * 100 * 100) / 100.0;
|
||||||
}
|
}
|
||||||
value.put("write_percent", itemPercent);
|
value.put("write_percent", itemPercent);
|
||||||
totalPercent = totalPercent - itemPercent;
|
totalPercent = totalPercent - itemPercent;
|
||||||
@@ -206,7 +205,7 @@ export class DiyFormRecordsServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 合并结果
|
// 合并结果
|
||||||
const resultList: DiyFormFieldsListVo[] = [];
|
DiyFormFieldsListVo[] resultList = [];
|
||||||
resultList.addAll(simpleFieldList);
|
resultList.addAll(simpleFieldList);
|
||||||
resultList.addAll(jsonFieldList);
|
resultList.addAll(jsonFieldList);
|
||||||
|
|
||||||
|
|||||||
@@ -16,71 +16,71 @@ export class DiyFormServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<DiyForm> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTitle())) {
|
if (!!searchParam.getTitle()) {
|
||||||
queryWrapper.eq("title", searchParam.getTitle());
|
queryWrapper.eq("title", searchParam.getTitle());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTitle())) {
|
if (!!searchParam.getTitle()) {
|
||||||
queryWrapper.and(i => i.or(j => j.like("title", searchParam.getTitle()))
|
queryWrapper.and(i => i.or(j => j.like("title", searchParam.getTitle()))
|
||||||
.or(j => j.like("page_title", searchParam.getTitle()))
|
.or(j => j.like("page_title", searchParam.getTitle()))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) {
|
if (!!searchParam.getType()) {
|
||||||
queryWrapper.eq("type", searchParam.getType());
|
queryWrapper.eq("type", searchParam.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getAddon())) {
|
if (!!searchParam.getAddon()) {
|
||||||
queryWrapper.eq("addon", searchParam.getAddon());
|
queryWrapper.eq("addon", searchParam.getAddon());
|
||||||
}
|
}
|
||||||
|
|
||||||
queryWrapper.orderByDesc("form_id");
|
queryWrapper.orderByDesc("form_id");
|
||||||
|
|
||||||
const iPage: IPage<DiyForm> = diyFormMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.diyFormRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: DiyFormListVo[] = [];
|
DiyFormListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: DiyFormListVo = new DiyFormListVo();
|
const vo: DiyFormListVo = new DiyFormListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getList
|
* getList
|
||||||
*/
|
*/
|
||||||
async getList(...args: any[]): Promise<any> {
|
async getList(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<DiyForm> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTitle())) {
|
if (!!searchParam.getTitle()) {
|
||||||
queryWrapper.eq("title", searchParam.getTitle());
|
queryWrapper.eq("title", searchParam.getTitle());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTitle())) {
|
if (!!searchParam.getTitle()) {
|
||||||
queryWrapper.and(i => i.or(j => j.like("title", searchParam.getTitle()))
|
queryWrapper.and(i => i.or(j => j.like("title", searchParam.getTitle()))
|
||||||
.or(j => j.like("page_title", searchParam.getTitle()))
|
.or(j => j.like("page_title", searchParam.getTitle()))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) {
|
if (!!searchParam.getType()) {
|
||||||
queryWrapper.eq("type", searchParam.getType());
|
queryWrapper.eq("type", searchParam.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getAddon())) {
|
if (!!searchParam.getAddon()) {
|
||||||
queryWrapper.eq("addon", searchParam.getAddon());
|
queryWrapper.eq("addon", searchParam.getAddon());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getStatus())) {
|
if (!!searchParam.getStatus()) {
|
||||||
queryWrapper.eq("status", searchParam.getStatus());
|
queryWrapper.eq("status", searchParam.getStatus());
|
||||||
}
|
}
|
||||||
queryWrapper.orderByDesc("form_id");
|
queryWrapper.orderByDesc("form_id");
|
||||||
const list: DiyForm[] = diyFormMapper.selectList(queryWrapper);
|
DiyForm[] list = this.diyFormRepository.find(queryWrapper);
|
||||||
const voList: DiyFormListVo[] = [];
|
DiyFormListVo[] voList = [];
|
||||||
for (const item of list) {
|
for (const item of list) {
|
||||||
const vo: DiyFormListVo = new DiyFormListVo();
|
const vo: DiyFormListVo = new DiyFormListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
voList.add(vo);
|
voList.push(vo);
|
||||||
}
|
}
|
||||||
return voList;
|
return voList;
|
||||||
}
|
}
|
||||||
@@ -89,16 +89,16 @@ export class DiyFormServiceImplService {
|
|||||||
* getInfo
|
* getInfo
|
||||||
*/
|
*/
|
||||||
async getInfo(...args: any[]): Promise<any> {
|
async getInfo(...args: any[]): Promise<any> {
|
||||||
const model: DiyForm = diyFormMapper.selectOne(
|
const model: DiyForm = this.diyFormRepository.findOne(
|
||||||
new QueryWrapper<DiyForm>()
|
new ()
|
||||||
.eq("form_id", id)
|
.eq("form_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
|
|
||||||
Assert.notNull(model, "万能表单不存在");
|
if (!model) throw new BadRequestException("万能表单不存在");
|
||||||
|
|
||||||
const vo: DiyFormInfoVo = new DiyFormInfoVo();
|
const vo: DiyFormInfoVo = new DiyFormInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,14 +106,14 @@ export class DiyFormServiceImplService {
|
|||||||
* getCount
|
* getCount
|
||||||
*/
|
*/
|
||||||
async getCount(...args: any[]): Promise<any> {
|
async getCount(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<DiyForm> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) {
|
if (!!searchParam.getType()) {
|
||||||
queryWrapper.eq("type", searchParam.getType());
|
queryWrapper.eq("type", searchParam.getType());
|
||||||
}
|
}
|
||||||
const count: number = diyFormMapper.selectCount(queryWrapper);
|
const count: number = this.diyFormRepository.count(queryWrapper);
|
||||||
if(ObjectUtil.isEmpty(count))
|
if(!count)
|
||||||
{
|
{
|
||||||
count = 0L;
|
count = 0L;
|
||||||
}
|
}
|
||||||
@@ -144,18 +144,18 @@ export class DiyFormServiceImplService {
|
|||||||
model.setShare(addParam.getShare());
|
model.setShare(addParam.getShare());
|
||||||
model.setRemark(addParam.getRemark());
|
model.setRemark(addParam.getRemark());
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
diyFormMapper.insert(model);
|
this.diyFormRepository.save(model);
|
||||||
const diyFormFields: DiyFormFields[] = [];
|
DiyFormFields[] diyFormFields = [];
|
||||||
if (ObjectUtil.isNotEmpty(addParam.getValue())) {
|
if (!!addParam.getValue()) {
|
||||||
const value: Record<string, any> = JSONUtil.parseObj(addParam.getValue());
|
const value: Record<string, any> = JSON.parse(addParam.getValue());
|
||||||
const components: JSONArray = value.getJSONArray("value");
|
const components: JSONArray = value.getJSONArray("value");
|
||||||
for (const componentObj of components) {
|
for (const componentObj of components) {
|
||||||
const component: Record<string, any> = JSONUtil.parseObj(componentObj);
|
const component: Record<string, any> = JSON.parse(componentObj);
|
||||||
const componentType: string = component.getStr("componentType");
|
const componentType: string = component.getStr("componentType");
|
||||||
const componentName: string = component.getStr("componentName");
|
const componentName: string = component.getStr("componentName");
|
||||||
if (!"diy_form" === componentType || "FormSubmit" === componentName) {
|
if (!"diy_form".equals(componentType) || "FormSubmit".equals(componentName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const field: Record<string, any> = component.getJSONObject("field");
|
const field: Record<string, any> = component.getJSONObject("field");
|
||||||
@@ -183,13 +183,13 @@ export class DiyFormServiceImplService {
|
|||||||
fieldRecord.setFieldHidden(component.getInt("isHidden"));
|
fieldRecord.setFieldHidden(component.getInt("isHidden"));
|
||||||
fieldRecord.setFieldUnique(field.containsKey("unique") ? field.getInt("unique") : 0);
|
fieldRecord.setFieldUnique(field.containsKey("unique") ? field.getInt("unique") : 0);
|
||||||
fieldRecord.setPrivacyProtection(field.containsKey("privacyProtection") ? field.getInt("privacyProtection") : 0);
|
fieldRecord.setPrivacyProtection(field.containsKey("privacyProtection") ? field.getInt("privacyProtection") : 0);
|
||||||
fieldRecord.setCreateTime(System.currentTimeMillis() / 1000);
|
fieldRecord.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
fieldRecord.setUpdateTime(System.currentTimeMillis() / 1000);
|
fieldRecord.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
diyFormFields.add(fieldRecord);
|
diyFormFields.push(fieldRecord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (diyFormFields.length !== 0) {
|
if (diyFormFields.length > 0) {
|
||||||
diyFormFieldsMapper.insert(diyFormFields);
|
this.diyFormFieldsRepository.save(diyFormFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
const writeParam: DiyFormWriteConfigParam = new DiyFormWriteConfigParam();
|
const writeParam: DiyFormWriteConfigParam = new DiyFormWriteConfigParam();
|
||||||
@@ -211,30 +211,30 @@ export class DiyFormServiceImplService {
|
|||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: DiyForm = diyFormMapper.selectOne(
|
const model: DiyForm = this.diyFormRepository.findOne(
|
||||||
new QueryWrapper<DiyForm>()
|
new ()
|
||||||
.eq("form_id", id)
|
.eq("form_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "万能表单不存在");
|
if (!model) throw new BadRequestException("万能表单不存在");
|
||||||
model.setTitle(editParam.getTitle());
|
model.setTitle(editParam.getTitle());
|
||||||
model.setPageTitle(editParam.getPageTitle());
|
model.setPageTitle(editParam.getPageTitle());
|
||||||
model.setTemplate(editParam.getTemplate());
|
model.setTemplate(editParam.getTemplate());
|
||||||
model.setValue(editParam.getValue());
|
model.setValue(editParam.getValue());
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
diyFormMapper.updateById(model);
|
this.diyFormRepository.save(model);
|
||||||
const formFieldsList: DiyFormFields[] = diyFormFieldsMapper.selectList(new QueryWrapper<DiyFormFields>().eq("form_id", id));
|
DiyFormFields[] formFieldsList = this.diyFormFieldsRepository.find(new ().eq("form_id", id));
|
||||||
const formFieldsListMap: Record<string, any> = formFieldsList.stream().collect(Collectors.toMap(DiyFormFields::getFieldKey, a => a));
|
const formFieldsListMap: Record<String, DiyFormFields> = formFieldsList.collect(Collectors.toMap(DiyFormFields::getFieldKey, a => a));
|
||||||
const existFieldKeys: string[] = [];
|
String[] existFieldKeys = [];
|
||||||
const diyFormFields: DiyFormFields[] = [];
|
DiyFormFields[] diyFormFields = [];
|
||||||
if (ObjectUtil.isNotEmpty(editParam.getValue())) {
|
if (!!editParam.getValue()) {
|
||||||
const value: Record<string, any> = JSONUtil.parseObj(editParam.getValue());
|
const value: Record<string, any> = JSON.parse(editParam.getValue());
|
||||||
const components: JSONArray = value.getJSONArray("value");
|
const components: JSONArray = value.getJSONArray("value");
|
||||||
for (const componentObj of components) {
|
for (const componentObj of components) {
|
||||||
const component: Record<string, any> = JSONUtil.parseObj(componentObj);
|
const component: Record<string, any> = JSON.parse(componentObj);
|
||||||
const componentType: string = component.getStr("componentType");
|
const componentType: string = component.getStr("componentType");
|
||||||
const componentName: string = component.getStr("componentName");
|
const componentName: string = component.getStr("componentName");
|
||||||
if (!"diy_form" === componentType || "FormSubmit" === componentName) {
|
if (!"diy_form".equals(componentType) || "FormSubmit".equals(componentName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const field: Record<string, any> = component.getJSONObject("field");
|
const field: Record<string, any> = component.getJSONObject("field");
|
||||||
@@ -262,28 +262,28 @@ export class DiyFormServiceImplService {
|
|||||||
fieldRecord.setFieldHidden(component.getInt("isHidden"));
|
fieldRecord.setFieldHidden(component.getInt("isHidden"));
|
||||||
fieldRecord.setFieldUnique(field.containsKey("unique") ? field.getInt("unique") : 0);
|
fieldRecord.setFieldUnique(field.containsKey("unique") ? field.getInt("unique") : 0);
|
||||||
fieldRecord.setPrivacyProtection(field.containsKey("privacyProtection") ? field.getInt("privacyProtection") : 0);
|
fieldRecord.setPrivacyProtection(field.containsKey("privacyProtection") ? field.getInt("privacyProtection") : 0);
|
||||||
fieldRecord.setUpdateTime(System.currentTimeMillis() / 1000);
|
fieldRecord.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
if(formFieldsListMap.containsKey(component.getStr("id")))
|
if(formFieldsListMap.containsKey(component.getStr("id")))
|
||||||
{
|
{
|
||||||
diyFormFieldsMapper.update(fieldRecord, new QueryWrapper<DiyFormFields>().eq("site_id", RequestUtils.siteId()).eq("field_id", formFieldsListMap.get(component.getStr("id")).getFieldId()));
|
diyFormFieldsMapper.update(fieldRecord, new ().eq("site_id", RequestUtils.siteId()).eq("field_id", formFieldsListMap.get(component.getStr("id")).getFieldId()));
|
||||||
existFieldKeys.add(component.getStr("id"));
|
existFieldKeys.push(component.getStr("id"));
|
||||||
}else{
|
}else{
|
||||||
diyFormFields.add(fieldRecord);
|
diyFormFields.push(fieldRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (diyFormFields.length !== 0) {
|
if (diyFormFields.length > 0) {
|
||||||
diyFormFieldsMapper.insert(diyFormFields);
|
this.diyFormFieldsRepository.save(diyFormFields);
|
||||||
}
|
}
|
||||||
for (Map.Entry<String, DiyFormFields> entry : formFieldsListMap.entrySet()) {
|
for (Map.Entry<String, DiyFormFields> entry : formFieldsListMap.entrySet()) {
|
||||||
|
|
||||||
if(!existFieldKeys.includes(entry.getKey())) {
|
if(!existFieldKeys.includes(entry.getKey())) {
|
||||||
diyFormFieldsMapper.delete(new QueryWrapper<DiyFormFields>().eq("site_id", RequestUtils.siteId()).eq("field_id", entry.getValue().getFieldId()));
|
this.diyFormFieldsRepository.delete(new ().eq("site_id", RequestUtils.siteId()).eq("field_id", entry.getValue().getFieldId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
diyFormFieldsMapper.delete(new QueryWrapper<DiyFormFields>().eq("site_id", RequestUtils.siteId()).eq("form_id", model.getFormId()));
|
this.diyFormFieldsRepository.delete(new ().eq("site_id", RequestUtils.siteId()).eq("form_id", model.getFormId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ export class DiyFormServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const count: number = diyFormMapper.selectCount(new QueryWrapper<DiyForm>().in("form_id", formIds).eq("site_id", RequestUtils.siteId()).eq("status", 1));
|
const count: number = this.diyFormRepository.count(new ().in("form_id", formIds).eq("site_id", RequestUtils.siteId()).eq("status", 1));
|
||||||
if(count > 0){
|
if(count > 0){
|
||||||
throw new BadRequestException("存在正在使用的表单,无法删除");
|
throw new BadRequestException("存在正在使用的表单,无法删除");
|
||||||
}
|
}
|
||||||
@@ -300,39 +300,39 @@ export class DiyFormServiceImplService {
|
|||||||
for (const formId of formIds) {
|
for (const formId of formIds) {
|
||||||
event.setFormId(formId);
|
event.setFormId(formId);
|
||||||
event.setSiteId(RequestUtils.siteId());
|
event.setSiteId(RequestUtils.siteId());
|
||||||
const result: DiyFormDelBeforeEventDefiner.DiyFromDelBeforeResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
DiyFormDelBeforeEventDefiner.DiyFromDelBeforeResult[] result = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
||||||
for (DiyFormDelBeforeEventDefiner.DiyFromDelBeforeResult res : result) {
|
for (DiyFormDelBeforeEventDefiner.DiyFromDelBeforeResult res : result) {
|
||||||
if(ObjectUtil.isNotEmpty(res))
|
if(!!res)
|
||||||
{
|
{
|
||||||
if(!res.getAllowOperate()) throw new BadRequestException("存在正在使用的表单,无法删除");
|
if(!res.getAllowOperate()) throw new BadRequestException("存在正在使用的表单,无法删除");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
diyFormMapper.delete(new QueryWrapper<DiyForm>().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
this.diyFormRepository.delete(new ().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
||||||
diyFormFieldsMapper.delete(new QueryWrapper<DiyFormFields>().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
this.diyFormFieldsRepository.delete(new ().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
||||||
diyFormSubmitConfigMapper.delete(new QueryWrapper<DiyFormSubmitConfig>().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
this.diyFormSubmitConfigRepository.delete(new ().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
||||||
diyFormWriteConfigMapper.delete(new QueryWrapper<DiyFormWriteConfig>().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
this.diyFormWriteConfigRepository.delete(new ().eq("site_id", RequestUtils.siteId()).in("form_id", formIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getInit
|
* getInit
|
||||||
*/
|
*/
|
||||||
async getInit(...args: any[]): Promise<any> {
|
async getInit(...args: any[]): Promise<any> {
|
||||||
const time: number = System.currentTimeMillis() / 1000;
|
const time: number = Math.floor(Date.now() / 1000);
|
||||||
const data: DiyFormInfoVo = new DiyFormInfoVo();
|
const data: DiyFormInfoVo = new DiyFormInfoVo();
|
||||||
|
|
||||||
if (params.getFormId() !== 0) {
|
if (params.getFormId() !== 0) {
|
||||||
data = getInfo(params.getFormId());
|
data = getInfo(params.getFormId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(data.getType())) {
|
if (!!data.getType()) {
|
||||||
const diyFormTypeEnum: DiyFormTypeEnum = new DiyFormTypeEnum();
|
const diyFormTypeEnum: DiyFormTypeEnum = new DiyFormTypeEnum();
|
||||||
const currentType: Record<string, any> = diyFormTypeEnum.getType(data.getType());
|
const currentType: Record<string, any> = diyFormTypeEnum.getType(data.getType());
|
||||||
const typeName: string = currentType.getStr("title");
|
const typeName: string = currentType.getStr("title");
|
||||||
data.setTypeName(typeName);
|
data.setTypeName(typeName);
|
||||||
} else {
|
} else {
|
||||||
if (ObjectUtil.isEmpty(params.getType())) {
|
if (!params.getType()) {
|
||||||
throw new BadRequestException("DIY_FORM_TYPE_NOT_EXIST");
|
throw new BadRequestException("DIY_FORM_TYPE_NOT_EXIST");
|
||||||
}
|
}
|
||||||
const type: string = params.getType();
|
const type: string = params.getType();
|
||||||
@@ -356,7 +356,7 @@ export class DiyFormServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const initVo: DiyFormInitVo = new DiyFormInitVo();
|
const initVo: DiyFormInitVo = new DiyFormInitVo();
|
||||||
BeanUtils.copyProperties(data, initVo);
|
Object.assign(initVo, data);
|
||||||
initVo.setComponent(getComponentList(data.getType()));
|
initVo.setComponent(getComponentList(data.getType()));
|
||||||
initVo.setDomainUrl(systemConfigService.getSceneDomain(RequestUtils.siteId()));
|
initVo.setDomainUrl(systemConfigService.getSceneDomain(RequestUtils.siteId()));
|
||||||
return initVo;
|
return initVo;
|
||||||
@@ -368,7 +368,7 @@ export class DiyFormServiceImplService {
|
|||||||
async modifyShare(...args: any[]): Promise<any> {
|
async modifyShare(...args: any[]): Promise<any> {
|
||||||
const diyForm: DiyForm = new DiyForm();
|
const diyForm: DiyForm = new DiyForm();
|
||||||
diyForm.setShare(share);
|
diyForm.setShare(share);
|
||||||
diyFormMapper.update(diyForm, new QueryWrapper<DiyForm>().eq("form_id", formId).eq("site_id", RequestUtils.siteId()));
|
diyFormMapper.update(diyForm, new ().eq("form_id", formId).eq("site_id", RequestUtils.siteId()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,11 +383,11 @@ export class DiyFormServiceImplService {
|
|||||||
const list: Record<string, any> = formComponent.getJSONObject("list");
|
const list: Record<string, any> = formComponent.getJSONObject("list");
|
||||||
Iterator<Map.const iterator: Entry<String, Object>> = list.entrySet().iterator();
|
Iterator<Map.const iterator: Entry<String, Object>> = list.entrySet().iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
const cv: Record<string, any> = JSONUtil.parseObj(iterator.next());
|
const cv: Record<string, any> = JSON.parse(iterator.next());
|
||||||
if(cv.containsKey("support"))
|
if(cv.containsKey("support"))
|
||||||
{
|
{
|
||||||
const support: JSONArray = cv.getJSONArray("support");
|
const support: JSONArray = cv.getJSONArray("support");
|
||||||
if (support != null && support.size() > 0 && !support.includes(type)) {
|
if (support != null && support.length > 0 && !support.includes(type)) {
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -402,7 +402,7 @@ export class DiyFormServiceImplService {
|
|||||||
componentType(formComponentList, "diy_form");
|
componentType(formComponentList, "diy_form");
|
||||||
|
|
||||||
const data: Record<string, any> = formComponentList;
|
const data: Record<string, any> = formComponentList;
|
||||||
if ("DIY_FORM" === type) {
|
if ("DIY_FORM".equals(type)) {
|
||||||
const diyComponentList: Record<string, any> = diyService.getComponentList("");
|
const diyComponentList: Record<string, any> = diyService.getComponentList("");
|
||||||
componentType(diyComponentList, "diy");
|
componentType(diyComponentList, "diy");
|
||||||
data = mergeJsonObjects(formComponentList, diyComponentList);;
|
data = mergeJsonObjects(formComponentList, diyComponentList);;
|
||||||
@@ -421,40 +421,40 @@ export class DiyFormServiceImplService {
|
|||||||
* copy
|
* copy
|
||||||
*/
|
*/
|
||||||
async copy(...args: any[]): Promise<any> {
|
async copy(...args: any[]): Promise<any> {
|
||||||
const diyForm: DiyForm = diyFormMapper.selectOne(new QueryWrapper<DiyForm>().eq("form_id", formId).eq("site_id", RequestUtils.siteId()));
|
const diyForm: DiyForm = this.diyFormRepository.findOne(new ().eq("form_id", formId).eq("site_id", RequestUtils.siteId()));
|
||||||
if(ObjectUtil.isEmpty(diyForm)) throw new BadRequestException("万能表单不存在");
|
if(!diyForm) throw new BadRequestException("万能表单不存在");
|
||||||
const diyFormSubmitConfig: DiyFormSubmitConfig = diyFormSubmitConfigMapper.selectOne(new QueryWrapper<DiyFormSubmitConfig>().eq("form_id", formId));
|
const diyFormSubmitConfig: DiyFormSubmitConfig = this.diyFormSubmitConfigRepository.findOne(new ().eq("form_id", formId));
|
||||||
const diyFormWriteConfig: DiyFormWriteConfig = diyFormWriteConfigMapper.selectOne(new QueryWrapper<DiyFormWriteConfig>().eq("form_id", formId));
|
const diyFormWriteConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne(new ().eq("form_id", formId));
|
||||||
const diyFormFields: DiyFormFields[] = diyFormFieldsMapper.selectList(new QueryWrapper<DiyFormFields>().eq("form_id", formId));
|
DiyFormFields[] diyFormFields = this.diyFormFieldsRepository.find(new ().eq("form_id", formId));
|
||||||
|
|
||||||
// 复制表单信息
|
// 复制表单信息
|
||||||
const newDiyForm: DiyForm = new DiyForm();
|
const newDiyForm: DiyForm = new DiyForm();
|
||||||
BeanUtils.copyProperties(diyForm, newDiyForm);
|
Object.assign(newDiyForm, diyForm);
|
||||||
newDiyForm.setFormId(null); // 清空原有的 form_id,让数据库自动生成新的
|
newDiyForm.setFormId(null); // 清空原有的 form_id,让数据库自动生成新的
|
||||||
newDiyForm.setPageTitle(newDiyForm.getPageTitle() + "_副本");
|
newDiyForm.setPageTitle(newDiyForm.getPageTitle() + "_副本");
|
||||||
newDiyForm.setStatus(0);
|
newDiyForm.setStatus(0);
|
||||||
newDiyForm.setShare("");
|
newDiyForm.setShare("");
|
||||||
newDiyForm.setWriteNum(0);
|
newDiyForm.setWriteNum(0);
|
||||||
const currentTime: number = System.currentTimeMillis() / 1000;
|
const currentTime: number = Math.floor(Date.now() / 1000);
|
||||||
newDiyForm.setCreateTime(currentTime);
|
newDiyForm.setCreateTime(currentTime);
|
||||||
newDiyForm.setUpdateTime(currentTime);
|
newDiyForm.setUpdateTime(currentTime);
|
||||||
|
|
||||||
// 插入新的表单信息
|
// 插入新的表单信息
|
||||||
diyFormMapper.insert(newDiyForm);
|
this.diyFormRepository.save(newDiyForm);
|
||||||
const newFormId: number = newDiyForm.getFormId();
|
const newFormId: number = newDiyForm.getFormId();
|
||||||
|
|
||||||
// 复制表单字段
|
// 复制表单字段
|
||||||
if (!ObjectUtil.isEmpty(diyFormFields)) {
|
if (!!diyFormFields) {
|
||||||
const newFormFieldList: DiyFormFields[] = [];
|
DiyFormFields[] newFormFieldList = [];
|
||||||
for (const item of diyFormFields) {
|
for (const item of diyFormFields) {
|
||||||
const newField: DiyFormFields = new DiyFormFields();
|
const newField: DiyFormFields = new DiyFormFields();
|
||||||
BeanUtils.copyProperties(item, newField);
|
Object.assign(newField, item);
|
||||||
newField.setFieldId(null); // 清空原有的 field_id,让数据库自动生成新的
|
newField.setFieldId(null); // 清空原有的 field_id,让数据库自动生成新的
|
||||||
newField.setFormId(newFormId);
|
newField.setFormId(newFormId);
|
||||||
newField.setWriteNum(0);
|
newField.setWriteNum(0);
|
||||||
newField.setCreateTime(currentTime);
|
newField.setCreateTime(currentTime);
|
||||||
newField.setUpdateTime(currentTime);
|
newField.setUpdateTime(currentTime);
|
||||||
newFormFieldList.add(newField);
|
newFormFieldList.push(newField);
|
||||||
}
|
}
|
||||||
const mybatisBatch: MybatisBatch<DiyFormFields> = new MybatisBatch<>(sqlSessionFactory, newFormFieldList);
|
const mybatisBatch: MybatisBatch<DiyFormFields> = new MybatisBatch<>(sqlSessionFactory, newFormFieldList);
|
||||||
MybatisBatch.const method: Method<DiyFormFields> = new MybatisBatch.Method<>(DiyFormFieldsMapper.class);
|
MybatisBatch.const method: Method<DiyFormFields> = new MybatisBatch.Method<>(DiyFormFieldsMapper.class);
|
||||||
@@ -462,18 +462,18 @@ export class DiyFormServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 复制填写配置
|
// 复制填写配置
|
||||||
if (!ObjectUtil.isEmpty(diyFormWriteConfig)) {
|
if (!!diyFormWriteConfig) {
|
||||||
const newWriteConfig: DiyFormWriteConfigParam = new DiyFormWriteConfigParam();
|
const newWriteConfig: DiyFormWriteConfigParam = new DiyFormWriteConfigParam();
|
||||||
BeanUtils.copyProperties(diyFormWriteConfig, newWriteConfig);
|
Object.assign(newWriteConfig, diyFormWriteConfig);
|
||||||
newWriteConfig.setFormId(newFormId);
|
newWriteConfig.setFormId(newFormId);
|
||||||
newWriteConfig.setId(null);
|
newWriteConfig.setId(null);
|
||||||
coreDiyFormConfigService.addWriteConfig(newWriteConfig);
|
coreDiyFormConfigService.addWriteConfig(newWriteConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 复制提交配置
|
// 复制提交配置
|
||||||
if (!ObjectUtil.isEmpty(diyFormSubmitConfig)) {
|
if (!!diyFormSubmitConfig) {
|
||||||
const newSubmitConfig: DiyFormSubmitConfigParam = new DiyFormSubmitConfigParam();
|
const newSubmitConfig: DiyFormSubmitConfigParam = new DiyFormSubmitConfigParam();
|
||||||
BeanUtils.copyProperties(diyFormSubmitConfig, newSubmitConfig);
|
Object.assign(newSubmitConfig, diyFormSubmitConfig);
|
||||||
newSubmitConfig.setFormId(newFormId);
|
newSubmitConfig.setFormId(newFormId);
|
||||||
newSubmitConfig.setId(null);
|
newSubmitConfig.setId(null);
|
||||||
coreDiyFormConfigService.addSubmitConfig(newSubmitConfig);
|
coreDiyFormConfigService.addSubmitConfig(newSubmitConfig);
|
||||||
@@ -504,7 +504,7 @@ export class DiyFormServiceImplService {
|
|||||||
async modifyStatus(...args: any[]): Promise<any> {
|
async modifyStatus(...args: any[]): Promise<any> {
|
||||||
const diyForm: DiyForm = new DiyForm();
|
const diyForm: DiyForm = new DiyForm();
|
||||||
diyForm.setStatus(formStatusParam.getStatus());
|
diyForm.setStatus(formStatusParam.getStatus());
|
||||||
diyFormMapper.update(diyForm, new QueryWrapper<DiyForm>().eq("form_id", formStatusParam.getFormId()).eq("site_id", RequestUtils.siteId()));
|
diyFormMapper.update(diyForm, new ().eq("form_id", formStatusParam.getFormId()).eq("site_id", RequestUtils.siteId()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -529,28 +529,28 @@ export class DiyFormServiceImplService {
|
|||||||
async delRecord(...args: any[]): Promise<any> {
|
async delRecord(...args: any[]): Promise<any> {
|
||||||
try {
|
try {
|
||||||
// 减少填写数量
|
// 减少填写数量
|
||||||
const formQueryWrapper: QueryWrapper<DiyForm> = new QueryWrapper<>();
|
formQueryWrapper = {};
|
||||||
formQueryWrapper.eq("form_id", formId);
|
formQueryWrapper.eq("form_id", formId);
|
||||||
const diyForm: DiyForm = diyFormMapper.selectOne(formQueryWrapper);
|
const diyForm: DiyForm = this.diyFormRepository.findOne(formQueryWrapper);
|
||||||
if (diyForm != null) {
|
if (diyForm != null) {
|
||||||
diyForm.setWriteNum(diyForm.getWriteNum() - 1);
|
diyForm.setWriteNum(diyForm.getWriteNum() - 1);
|
||||||
diyFormMapper.updateById(diyForm);
|
this.diyFormRepository.save(diyForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除记录
|
// 删除记录
|
||||||
const recordsQueryWrapper: QueryWrapper<DiyFormRecords> = new QueryWrapper<>();
|
recordsQueryWrapper = {};
|
||||||
recordsQueryWrapper.eq("site_id", RequestUtils.siteId())
|
recordsQueryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("record_id", recordId);
|
.eq("record_id", recordId);
|
||||||
diyFormRecordsMapper.delete(recordsQueryWrapper);
|
this.diyFormRecordsRepository.delete(recordsQueryWrapper);
|
||||||
|
|
||||||
// 删除万能表单填写字段
|
// 删除万能表单填写字段
|
||||||
const fieldsQueryWrapper: QueryWrapper<DiyFormRecordsFields> = new QueryWrapper<>();
|
fieldsQueryWrapper = {};
|
||||||
fieldsQueryWrapper.eq("site_id", RequestUtils.siteId())
|
fieldsQueryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("record_id", recordId);
|
.eq("record_id", recordId);
|
||||||
diyFormRecordsFieldsMapper.delete(fieldsQueryWrapper);
|
this.diyFormRecordsFieldsRepository.delete(fieldsQueryWrapper);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
// 事务会自动回滚,因为使用了 @Transactional 注解
|
// 事务会自动回滚,因为使用了 @Transactional 注解
|
||||||
throw new BadRequestException("删除记录失败: " + e.message);
|
throw new BadRequestException("删除记录失败: " + e.message);
|
||||||
}
|
}
|
||||||
@@ -560,7 +560,7 @@ export class DiyFormServiceImplService {
|
|||||||
* getFieldsList
|
* getFieldsList
|
||||||
*/
|
*/
|
||||||
async getFieldsList(...args: any[]): Promise<any> {
|
async getFieldsList(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<DiyFormFields> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId())
|
queryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("form_id", diyFormRecordsFieldsSearchParam.getFormId());
|
.eq("form_id", diyFormRecordsFieldsSearchParam.getFormId());
|
||||||
if(diyFormRecordsFieldsSearchParam.getSort() === "asc")
|
if(diyFormRecordsFieldsSearchParam.getSort() === "asc")
|
||||||
@@ -569,12 +569,12 @@ export class DiyFormServiceImplService {
|
|||||||
}else {
|
}else {
|
||||||
queryWrapper.orderByDesc(diyFormRecordsFieldsSearchParam.getOrder());
|
queryWrapper.orderByDesc(diyFormRecordsFieldsSearchParam.getOrder());
|
||||||
}
|
}
|
||||||
const list: DiyFormFields[] = diyFormFieldsMapper.selectList(queryWrapper);
|
DiyFormFields[] list = this.diyFormFieldsRepository.find(queryWrapper);
|
||||||
const listVo: DiyFormFieldsListVo[] = [];
|
DiyFormFieldsListVo[] listVo = [];
|
||||||
for (const item of list) {
|
for (const item of list) {
|
||||||
const vo: DiyFormFieldsListVo = new DiyFormFieldsListVo();
|
const vo: DiyFormFieldsListVo = new DiyFormFieldsListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
listVo.add(vo);
|
listVo.push(vo);
|
||||||
}
|
}
|
||||||
return listVo;
|
return listVo;
|
||||||
}
|
}
|
||||||
@@ -586,22 +586,22 @@ export class DiyFormServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
// 验证表单ID集合
|
// 验证表单ID集合
|
||||||
const verifyFormIds: number[] = [];
|
number[] verifyFormIds = [];
|
||||||
if (param.getVerifyFormIds() != null && !param.getVerifyFormIds().isEmpty()) {
|
if (param.getVerifyFormIds() != null && !param.getVerifyFormIds().isEmpty()) {
|
||||||
// 查询存在的表单const existForms: ID
|
// 查询存在的表单ID
|
||||||
List<DiyForm> = diyFormMapper.selectList(
|
DiyForm[] existForms = this.diyFormRepository.find(
|
||||||
new QueryWrapper<DiyForm>()
|
new ()
|
||||||
.select("form_id")
|
.select("form_id")
|
||||||
.in("form_id", param.getVerifyFormIds())
|
.in("form_id", param.getVerifyFormIds())
|
||||||
);
|
);
|
||||||
|
|
||||||
verifyFormIds = existForms.stream()
|
verifyFormIds = existForms
|
||||||
.map(DiyForm::getFormId)
|
.map(DiyForm::getFormId)
|
||||||
.collect(Collectors.toList());
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
const queryWrapper: LambdaQueryWrapper<DiyForm> = new LambdaQueryWrapper<>();
|
LambdaqueryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(DiyForm::getSiteId, RequestUtils.siteId())
|
queryWrapper.eq(DiyForm::getSiteId, RequestUtils.siteId())
|
||||||
.eq(DiyForm::getStatus, 1)
|
.eq(DiyForm::getStatus, 1)
|
||||||
.orderByDesc(DiyForm::getFormId);
|
.orderByDesc(DiyForm::getFormId);
|
||||||
@@ -618,23 +618,23 @@ export class DiyFormServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 分页查询
|
// 分页查询
|
||||||
const formPage: IPage<DiyForm> = diyFormMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
formPage = this.diyFormRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
|
|
||||||
if (formPage.getTotal() == 0){
|
if (total == 0){
|
||||||
return PageResult.build(page, limit, 0, []);
|
return PageResult.build(page, limit, 0, []);
|
||||||
}
|
}
|
||||||
const resultList: DiyFormInfoVo[] = [];
|
DiyFormInfoVo[] resultList = [];
|
||||||
formPage.getRecords().forEach(item => {
|
records.forEach(item => {
|
||||||
const diyFormInfoVo: DiyFormInfoVo = new DiyFormInfoVo();
|
const diyFormInfoVo: DiyFormInfoVo = new DiyFormInfoVo();
|
||||||
BeanUtils.copyProperties(item, diyFormInfoVo);
|
Object.assign(diyFormInfoVo, item);
|
||||||
const currentType: Record<string, any> = new DiyFormTypeEnum().getType(item.getType());
|
const currentType: Record<string, any> = new DiyFormTypeEnum().getType(item.getType());
|
||||||
const typeName: string = currentType.getStr("title");
|
const typeName: string = currentType.getStr("title");
|
||||||
diyFormInfoVo.setTypeName(typeName);
|
diyFormInfoVo.setTypeName(typeName);
|
||||||
const addon: Addon = addonMapper.selectOne(new LambdaQueryWrapper<Addon>().eq(Addon::getKey, item.getAddon()));
|
const addon: Addon = this.addonRepository.findOne(new Lambda().eq(Addon::getKey, item.getAddon()));
|
||||||
const addonName: string = ObjectUtil.isNotEmpty(addon) ? addon.getTitle() : "";
|
const addonName: string = !!addon ? addon.getTitle() : "";
|
||||||
diyFormInfoVo.setAddonName(addonName);
|
diyFormInfoVo.setAddonName(addonName);
|
||||||
resultList.add(diyFormInfoVo);
|
resultList.push(diyFormInfoVo);
|
||||||
});
|
});
|
||||||
return PageResult.build(page, limit, formPage.getTotal(), resultList);
|
return PageResult.build(page, limit, total, resultList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class GenerateServiceImplService {
|
export class GenerateServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,19 +16,19 @@ export class GenerateServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<GenerateTable> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("ngt");
|
queryWrapper.setAlias("ngt");
|
||||||
queryWrapper.select("ngt.id, ngt.table_name, ngt.table_content, ngt.module_name, ngt.class_name, ngt.create_time, ngt.edit_type, ngt.addon_name, ngt.order_type, ngt.parent_menu, ngt.relations, ngt.synchronous_number, na.title, na.`key`");
|
queryWrapper.select("ngt.id, ngt.table_name, ngt.table_content, ngt.module_name, ngt.class_name, ngt.create_time, ngt.edit_type, ngt.addon_name, ngt.order_type, ngt.parent_menu, ngt.relations, ngt.synchronous_number, na.title, na.`key`");
|
||||||
queryWrapper.leftJoin("?_addon na ON na.`key` = ngt.addon_name".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.leftJoin("?_addon na ON na.`key` = ngt.addon_name".replace("?_", this.appConfig.tablePrefix));
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTableName())) {
|
if (!!searchParam.getTableName()) {
|
||||||
queryWrapper.like("ngt.table_name", searchParam.getTableName());
|
queryWrapper.like("ngt.table_name", searchParam.getTableName());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTableContent())) {
|
if (!!searchParam.getTableContent()) {
|
||||||
queryWrapper.eq("ngt.table_content", searchParam.getTableContent());
|
queryWrapper.eq("ngt.table_content", searchParam.getTableContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getAddonName())) {
|
if (!!searchParam.getAddonName()) {
|
||||||
if (searchParam.getAddonName() === "2") {
|
if (searchParam.getAddonName() === "2") {
|
||||||
queryWrapper.eq("ngt.addon_name", "");
|
queryWrapper.eq("ngt.addon_name", "");
|
||||||
} else {
|
} else {
|
||||||
@@ -39,7 +38,7 @@ export class GenerateServiceImplService {
|
|||||||
|
|
||||||
queryWrapper.orderByDesc("ngt.create_time");
|
queryWrapper.orderByDesc("ngt.create_time");
|
||||||
|
|
||||||
const iPage: IPage<GenerateListVo> = generateTableMapper.selectJoinPage(new Page<>(page, limit), GenerateListVo.class, queryWrapper);
|
iPage = generateTableMapper.selectJoinPage({ /* pagination */ }, GenerateListVo.class, queryWrapper);
|
||||||
return PageResult.build(iPage);
|
return PageResult.build(iPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,32 +47,32 @@ export class GenerateServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getInfo(...args: any[]): Promise<any> {
|
async getInfo(...args: any[]): Promise<any> {
|
||||||
const generateTable: GenerateTable = generateTableMapper.selectById(id);
|
const generateTable: GenerateTable = generateTableMapper.selectById(id);
|
||||||
if (ObjectUtil.isEmpty(generateTable)) throw new AdminException("生成表不存在");
|
if (!generateTable) throw new AdminException("生成表不存在");
|
||||||
const vo: GenerateDetailVo = new GenerateDetailVo();
|
const vo: GenerateDetailVo = new GenerateDetailVo();
|
||||||
BeanUtils.copyProperties(generateTable, vo);
|
Object.assign(vo, generateTable);
|
||||||
|
|
||||||
if (vo.getOrderType() != 0) {
|
if (vo.getOrderType() != 0) {
|
||||||
const orderColumn: GenerateColumn = generateColumnMapper.selectOne(new QueryWrapper<GenerateColumn>().eq("table_id", id).eq("is_order", 1));
|
const orderColumn: GenerateColumn = this.generateColumnRepository.findOne(new ().eq("table_id", id).eq("is_order", 1));
|
||||||
if (ObjectUtil.isNotEmpty(orderColumn)) {
|
if (!!orderColumn) {
|
||||||
vo.setOrderColumnName(orderColumn.getColumnName());
|
vo.setOrderColumnName(orderColumn.getColumnName());
|
||||||
} else {
|
} else {
|
||||||
vo.setOrderColumnName("");
|
vo.setOrderColumnName("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const deleteColumn: GenerateColumn = generateColumnMapper.selectOne(new QueryWrapper<GenerateColumn>().eq("table_id", id).eq("is_delete", 1));
|
const deleteColumn: GenerateColumn = this.generateColumnRepository.findOne(new ().eq("table_id", id).eq("is_delete", 1));
|
||||||
if (ObjectUtil.isNotEmpty(deleteColumn)) {
|
if (!!deleteColumn) {
|
||||||
vo.setDeleteColumnName(deleteColumn.getColumnName());
|
vo.setDeleteColumnName(deleteColumn.getColumnName());
|
||||||
vo.setIsDelete(1);
|
vo.setIsDelete(1);
|
||||||
} else {
|
} else {
|
||||||
vo.setDeleteColumnName("");
|
vo.setDeleteColumnName("");
|
||||||
vo.setIsDelete(0);
|
vo.setIsDelete(0);
|
||||||
}
|
}
|
||||||
const columnList: GenerateColumn[] = generateColumnMapper.selectList(new QueryWrapper<GenerateColumn>().eq("table_id", id));
|
GenerateColumn[] columnList = this.generateColumnRepository.find(new ().eq("table_id", id));
|
||||||
if (ObjectUtil.isNotEmpty(columnList)) {
|
if (!!columnList) {
|
||||||
const columnVoList: GenerateColumnVo[] = [];
|
GenerateColumnVo[] columnVoList = [];
|
||||||
for (const column of columnList) {
|
for (const column of columnList) {
|
||||||
const generateColumnVo: GenerateColumnVo = new GenerateColumnVo();
|
const generateColumnVo: GenerateColumnVo = new GenerateColumnVo();
|
||||||
BeanUtils.copyProperties(column, generateColumnVo);
|
Object.assign(generateColumnVo, column);
|
||||||
if (column.getViewType() === "number") {
|
if (column.getViewType() === "number") {
|
||||||
if (!column.getValidateType().isEmpty()) {
|
if (!column.getValidateType().isEmpty()) {
|
||||||
if (column.getValidateType().startsWith("[")) {
|
if (column.getValidateType().startsWith("[")) {
|
||||||
@@ -130,7 +129,7 @@ export class GenerateServiceImplService {
|
|||||||
} else {
|
} else {
|
||||||
generateColumnVo.setSelectType(1);
|
generateColumnVo.setSelectType(1);
|
||||||
}
|
}
|
||||||
columnVoList.add(generateColumnVo);
|
columnVoList.push(generateColumnVo);
|
||||||
}
|
}
|
||||||
vo.setTableColumn(columnVoList);
|
vo.setTableColumn(columnVoList);
|
||||||
}
|
}
|
||||||
@@ -142,14 +141,14 @@ export class GenerateServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const sql: string = "SHOW TABLE STATUS WHERE 1=1 ";
|
const sql: string = "SHOW TABLE STATUS WHERE 1=1 ";
|
||||||
const tablePrefix: string = this.config.get('tablePrefix');
|
const tablePrefix: string = this.appConfig.tablePrefix;
|
||||||
if (!generateParam.getTableName().isEmpty()) {
|
if (!generateParam.getTableName().isEmpty()) {
|
||||||
sql += " const Name: AND = '" + generateParam.getTableName() + "'";
|
sql += " const Name: AND = '" + generateParam.getTableName() + "'";
|
||||||
}
|
}
|
||||||
const listData: Record<string, any>[] = jdbcTemplate.queryForList(sql);
|
Record<String, Object[]> listData = jdbcTemplate.queryForList(sql);
|
||||||
if (ObjectUtil.isEmpty(listData)) throw new AdminException("数据表不存在");
|
if (!listData) throw new AdminException("数据表不存在");
|
||||||
const table: Record<string, any> = listData.get(0);
|
const table: Record<String, Object> = listData.get(0);
|
||||||
if (ObjectUtil.isEmpty(table)) throw new AdminException("数据表不存在");
|
if (!table) throw new AdminException("数据表不存在");
|
||||||
const tableName: string = table.get("Name").toString().substring(tablePrefix.length());
|
const tableName: string = table.get("Name").toString().substring(tablePrefix.length());
|
||||||
|
|
||||||
//添加生成表数据
|
//添加生成表数据
|
||||||
@@ -157,20 +156,20 @@ export class GenerateServiceImplService {
|
|||||||
generateTable.setTableName(tableName);
|
generateTable.setTableName(tableName);
|
||||||
generateTable.setTableContent(table.get("Comment").toString());
|
generateTable.setTableContent(table.get("Comment").toString());
|
||||||
generateTable.setClassName(tableName);
|
generateTable.setClassName(tableName);
|
||||||
generateTable.setCreateTime(System.currentTimeMillis() / 1000);
|
generateTable.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
generateTable.setModuleName(tableName);
|
generateTable.setModuleName(tableName);
|
||||||
generateTableMapper.insert(generateTable);
|
this.generateTableRepository.save(generateTable);
|
||||||
|
|
||||||
//添加生成字段数据
|
//添加生成字段数据
|
||||||
const columns: Record<string, any>[] = jdbcTemplate.queryForList("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) and TABLE_NAME='" + tablePrefix + tableName + "'");
|
Record<String, Object[]> columns = jdbcTemplate.queryForList("SELECT * FROM information_schema.const TABLE_SCHEMA: COLUMNS WHERE = (SELECT DATABASE()) and TABLE_NAME='" + tablePrefix + tableName + "'");
|
||||||
const id: number = generateTable.getId();
|
const id: number = generateTable.getId();
|
||||||
const list: GenerateColumn[] = [];
|
GenerateColumn[] list = [];
|
||||||
for (const column of columns) {
|
for (const column of columns) {
|
||||||
const generateColumn: GenerateColumn = new GenerateColumn();
|
const generateColumn: GenerateColumn = new GenerateColumn();
|
||||||
|
|
||||||
generateColumn.setIsRequired(0);
|
generateColumn.setIsRequired(0);
|
||||||
String[] defaultColumn = {"id", "create_time", "update_time"};
|
String[] defaultColumn = {"id", "create_time", "update_time"};
|
||||||
if (column.get("IS_NULLABLE").toString() === "NO" && !column.get("COLUMN_KEY") === "PRI" && Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString())) {
|
if (column.get("IS_NULLABLE").toString() === "NO" && !column.get("COLUMN_KEY").equals("PRI") && Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString())) {
|
||||||
generateColumn.setIsRequired(1);
|
generateColumn.setIsRequired(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,7 +180,7 @@ export class GenerateServiceImplService {
|
|||||||
generateColumn.setColumnType("number");
|
generateColumn.setColumnType("number");
|
||||||
}
|
}
|
||||||
generateColumn.setColumnComment(column.get("COLUMN_COMMENT").toString());
|
generateColumn.setColumnComment(column.get("COLUMN_COMMENT").toString());
|
||||||
generateColumn.setIsPk(column.get("COLUMN_KEY") === "PRI" ? 1 : 0);
|
generateColumn.setIsPk(column.get("COLUMN_KEY").equals("PRI") ? 1 : 0);
|
||||||
generateColumn.setIsInsert(Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString()) ? 0 : 1);
|
generateColumn.setIsInsert(Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString()) ? 0 : 1);
|
||||||
generateColumn.setIsUpdate(Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString()) ? 0 : 1);
|
generateColumn.setIsUpdate(Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString()) ? 0 : 1);
|
||||||
generateColumn.setIsLists(Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString()) ? 0 : 1);
|
generateColumn.setIsLists(Arrays.asList(defaultColumn).includes(column.get("COLUMN_NAME").toString()) ? 0 : 1);
|
||||||
@@ -193,9 +192,9 @@ export class GenerateServiceImplService {
|
|||||||
generateColumn.setModel("");
|
generateColumn.setModel("");
|
||||||
generateColumn.setLabelKey("");
|
generateColumn.setLabelKey("");
|
||||||
generateColumn.setValueKey("");
|
generateColumn.setValueKey("");
|
||||||
generateColumn.setCreateTime(System.currentTimeMillis() / 1000);
|
generateColumn.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
generateColumn.setUpdateTime(System.currentTimeMillis() / 1000);
|
generateColumn.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
list.add(generateColumn);
|
list.push(generateColumn);
|
||||||
|
|
||||||
}
|
}
|
||||||
generateColumnService.insertAll(list);
|
generateColumnService.insertAll(list);
|
||||||
@@ -218,13 +217,13 @@ export class GenerateServiceImplService {
|
|||||||
generateTable.setOrderType(generateParam.getOrderType());
|
generateTable.setOrderType(generateParam.getOrderType());
|
||||||
generateTable.setParentMenu(generateParam.getParentMenu());
|
generateTable.setParentMenu(generateParam.getParentMenu());
|
||||||
generateTable.setRelations(generateParam.getRelations());
|
generateTable.setRelations(generateParam.getRelations());
|
||||||
generateTableMapper.updateById(generateTable);
|
this.generateTableRepository.save(generateTable);
|
||||||
//更新表字段
|
//更新表字段
|
||||||
generateColumnMapper.delete(new QueryWrapper<GenerateColumn>().eq("table_id", id));
|
this.generateColumnRepository.delete(new ().eq("table_id", id));
|
||||||
const columns: JSONArray = JSONUtil.parseArray(generateParam.getTableColumn());
|
const columns: JSONArray = JSONUtil.parseArray(generateParam.getTableColumn());
|
||||||
const list: GenerateColumn[] = [];
|
GenerateColumn[] list = [];
|
||||||
|
|
||||||
for (const i of number = 0; i < columns.size(); i++) {
|
for (const i of number = 0; i < columns.length; i++) {
|
||||||
const generateColumn: GenerateColumn = new GenerateColumn();
|
const generateColumn: GenerateColumn = new GenerateColumn();
|
||||||
const column: Record<string, any> = columns.getJSONObject(i);
|
const column: Record<string, any> = columns.getJSONObject(i);
|
||||||
generateColumn.setTableId(id);
|
generateColumn.setTableId(id);
|
||||||
@@ -239,58 +238,58 @@ export class GenerateServiceImplService {
|
|||||||
generateColumn.setIsDelete(0);
|
generateColumn.setIsDelete(0);
|
||||||
generateColumn.setIsOrder(0);
|
generateColumn.setIsOrder(0);
|
||||||
generateColumn.setQueryType(column.getStr("query_type"));
|
generateColumn.setQueryType(column.getStr("query_type"));
|
||||||
generateColumn.setViewType(ObjectUtil.isEmpty(column.getStr("view_type")) ? "input" : column.getStr("view_type"));
|
generateColumn.setViewType(!column.getStr("view_type") ? "input" : column.getStr("view_type"));
|
||||||
generateColumn.setDictType(ObjectUtil.isEmpty(column.getStr("dict_type")) ? "" : column.getStr("dict_type"));
|
generateColumn.setDictType(!column.getStr("dict_type") ? "" : column.getStr("dict_type"));
|
||||||
generateColumn.setAddon(ObjectUtil.isEmpty(column.getStr("addon")) ? "" : column.getStr("addon"));
|
generateColumn.setAddon(!column.getStr("addon") ? "" : column.getStr("addon"));
|
||||||
generateColumn.setModel(ObjectUtil.isEmpty(column.getStr("model")) ? "" : column.getStr("model"));
|
generateColumn.setModel(!column.getStr("model") ? "" : column.getStr("model"));
|
||||||
generateColumn.setLabelKey(ObjectUtil.isEmpty(column.getStr("label_key")) ? "" : column.getStr("label_key"));
|
generateColumn.setLabelKey(!column.getStr("label_key") ? "" : column.getStr("label_key"));
|
||||||
generateColumn.setValueKey(ObjectUtil.isEmpty(column.getStr("value_key")) ? "" : column.getStr("value_key"));
|
generateColumn.setValueKey(!column.getStr("value_key") ? "" : column.getStr("value_key"));
|
||||||
generateColumn.setUpdateTime(System.currentTimeMillis() / 1000);
|
generateColumn.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
generateColumn.setCreateTime(System.currentTimeMillis() / 1000);
|
generateColumn.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
generateColumn.setColumnType(ObjectUtil.isEmpty(column.getStr("column_type")) ? "String" : column.getStr("column_type"));
|
generateColumn.setColumnType(!column.getStr("column_type") ? "String" : column.getStr("column_type"));
|
||||||
generateColumn.setValidateType(ObjectUtil.isEmpty(column.getStr("validate_type")) ? "" : column.getStr("validate_type"));
|
generateColumn.setValidateType(!column.getStr("validate_type") ? "" : column.getStr("validate_type"));
|
||||||
//传入字段rule暂时不知含义,待定
|
//传入字段rule暂时不知含义,待定
|
||||||
|
|
||||||
if (generateParam.getIsDelete() == 1) {
|
if (generateParam.getIsDelete() == 1) {
|
||||||
if (column.getStr("column_name") === generateParam.getDeleteColumnName()) {
|
if (column.getStr("column_name").equals(generateParam.getDeleteColumnName())) {
|
||||||
generateColumn.setIsDelete(1);
|
generateColumn.setIsDelete(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (generateParam.getOrderType() != 0) {
|
if (generateParam.getOrderType() != 0) {
|
||||||
if (column.getStr("column_name") === generateParam.getOrderColumnName()) {
|
if (column.getStr("column_name").equals(generateParam.getOrderColumnName())) {
|
||||||
generateColumn.setIsOrder(1);
|
generateColumn.setIsOrder(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(column.getStr("validate_type")) && !column.getStr("view_type") === "number") {
|
if (!!column.getStr("validate_type") && !column.getStr("view_type").equals("number")) {
|
||||||
if (column.getStr("validate_type") === "between") {
|
if (column.getStr("validate_type").equals("between")) {
|
||||||
const jsonArray: JSONArray = new JSONArray();
|
const jsonArray: JSONArray = new JSONArray();
|
||||||
jsonArray.add("between");
|
jsonArray.push("between");
|
||||||
jsonArray.add(new String[]{column.getStr("min_number"), column.getStr("max_number")});
|
jsonArray.push(new String[]{column.getStr("min_number"), column.getStr("max_number")});
|
||||||
generateColumn.setValidateType(jsonArray.toString());
|
generateColumn.setValidateType(jsonArray.toString());
|
||||||
} else if (column.getStr("validate_type") === "max") {
|
} else if (column.getStr("validate_type").equals("max")) {
|
||||||
const jsonArray: JSONArray = new JSONArray();
|
const jsonArray: JSONArray = new JSONArray();
|
||||||
jsonArray.add("max");
|
jsonArray.push("max");
|
||||||
jsonArray.add(new String[]{column.getStr("max_number")});
|
jsonArray.push(new String[]{column.getStr("max_number")});
|
||||||
generateColumn.setValidateType(jsonArray.toString());
|
generateColumn.setValidateType(jsonArray.toString());
|
||||||
} else if (column.getStr("validate_type") === "min") {
|
} else if (column.getStr("validate_type").equals("min")) {
|
||||||
const jsonArray: JSONArray = new JSONArray();
|
const jsonArray: JSONArray = new JSONArray();
|
||||||
jsonArray.add("min");
|
jsonArray.push("min");
|
||||||
jsonArray.add(new String[]{column.getStr("min_number")});
|
jsonArray.push(new String[]{column.getStr("min_number")});
|
||||||
generateColumn.setValidateType(jsonArray.toString());
|
generateColumn.setValidateType(jsonArray.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (column.getStr("view_type") === "number") {
|
if (column.getStr("view_type").equals("number")) {
|
||||||
const numJsonArray: JSONArray = new JSONArray();
|
const numJsonArray: JSONArray = new JSONArray();
|
||||||
numJsonArray.add("between");
|
numJsonArray.push("between");
|
||||||
numJsonArray.add(new String[]{column.getStr("view_min"), column.getStr("view_max")});
|
numJsonArray.push(new String[]{column.getStr("view_min"), column.getStr("view_max")});
|
||||||
generateColumn.setValidateType(numJsonArray.toString());
|
generateColumn.setValidateType(numJsonArray.toString());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(column.getStr("model"))) {
|
if (!!column.getStr("model")) {
|
||||||
generateColumn.setDictType("");
|
generateColumn.setDictType("");
|
||||||
}
|
}
|
||||||
list.add(generateColumn);
|
list.push(generateColumn);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,8 +300,8 @@ export class GenerateServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
generateTableMapper.deleteById(id);
|
this.generateTableRepository.delete(id);
|
||||||
generateColumnMapper.delete(new QueryWrapper<GenerateColumn>().eq("table_id", id));
|
this.generateColumnRepository.delete(new ().eq("table_id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -310,13 +309,13 @@ export class GenerateServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async generate(...args: any[]): Promise<any> {
|
async generate(...args: any[]): Promise<any> {
|
||||||
const generateTable: GenerateTable = generateTableMapper.selectById(generateCodeParam.getId());
|
const generateTable: GenerateTable = generateTableMapper.selectById(generateCodeParam.getId());
|
||||||
const columnList: GenerateColumn[] = generateColumnMapper.selectList(new QueryWrapper<GenerateColumn>().eq("table_id", generateCodeParam.getId()));
|
GenerateColumn[] columnList = this.generateColumnRepository.find(new ().eq("table_id", generateCodeParam.getId()));
|
||||||
const coreGenerateService: CoreGenerateService = new CoreGenerateService();
|
const coreGenerateService: CoreGenerateService = new CoreGenerateService();
|
||||||
const list: CoreGenerateTemplateVo[] = coreGenerateService.generateCode(generateTable, columnList);
|
CoreGenerateTemplateVo[] list = coreGenerateService.generateCode(generateTable, columnList);
|
||||||
|
|
||||||
// 下载
|
// 下载
|
||||||
if (generateCodeParam.getGenerateType() === "2") {
|
if (generateCodeParam.getGenerateType() === "2") {
|
||||||
const tempDir: string = this.config.get('webRootDownResource') + "upload/generate/";
|
const tempDir: string = this.appConfig.webRootDownResource + "upload/generate/";
|
||||||
const packageDir: string = tempDir + "package/";
|
const packageDir: string = tempDir + "package/";
|
||||||
FileTools.createDirs(packageDir);
|
FileTools.createDirs(packageDir);
|
||||||
FileUtil.clean(tempDir);
|
FileUtil.clean(tempDir);
|
||||||
@@ -327,13 +326,13 @@ export class GenerateServiceImplService {
|
|||||||
const zipFile: string = ZipUtil.zip(packageDir, tempDir + "package.zip");
|
const zipFile: string = ZipUtil.zip(packageDir, tempDir + "package.zip");
|
||||||
} else {
|
} else {
|
||||||
// 同步
|
// 同步
|
||||||
if (this.config.get('envType') !== "dev") throw new BadRequestException("只有在开发模式下才能进行同步代码");
|
if (this.appConfig.envType !== "dev") throw new BadRequestException("只有在开发模式下才能进行同步代码");
|
||||||
|
|
||||||
for (const coreGenerateTemplateVo of list) {
|
for (const coreGenerateTemplateVo of list) {
|
||||||
if (coreGenerateTemplateVo.getType() === "sql") {
|
if (coreGenerateTemplateVo.getType() === "sql") {
|
||||||
SQLScriptRunnerTools.execScript(coreGenerateTemplateVo.getData());
|
SQLScriptRunnerTools.execScript(coreGenerateTemplateVo.getData());
|
||||||
} else {
|
} else {
|
||||||
FileUtil.writeUtf8String(coreGenerateTemplateVo.getData(), this.config.get('projectRoot' + "/" + coreGenerateTemplateVo, coreGenerateTemplateVo.getFileName()));
|
FileUtil.writeUtf8String(coreGenerateTemplateVo.getData(), this.appConfig.projectRoot + "/" + coreGenerateTemplateVo.getPath(, coreGenerateTemplateVo.getFileName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -344,17 +343,17 @@ export class GenerateServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async preview(...args: any[]): Promise<any> {
|
async preview(...args: any[]): Promise<any> {
|
||||||
const generateTable: GenerateTable = generateTableMapper.selectById(id);
|
const generateTable: GenerateTable = generateTableMapper.selectById(id);
|
||||||
const list: GenerateColumn[] = generateColumnMapper.selectList(new QueryWrapper<GenerateColumn>().eq("table_id", id));
|
GenerateColumn[] list = this.generateColumnRepository.find(new ().eq("table_id", id));
|
||||||
const coreGenerateService: CoreGenerateService = new CoreGenerateService();
|
const coreGenerateService: CoreGenerateService = new CoreGenerateService();
|
||||||
const columnList: CoreGenerateTemplateVo[] = coreGenerateService.generateCode(generateTable, list);
|
CoreGenerateTemplateVo[] columnList = coreGenerateService.generateCode(generateTable, list);
|
||||||
const voList: GeneratePreviewVo[] = [];
|
GeneratePreviewVo[] voList = [];
|
||||||
for (const coreGenerateTemplateVo of columnList) {
|
for (const coreGenerateTemplateVo of columnList) {
|
||||||
const vo: GeneratePreviewVo = new GeneratePreviewVo();
|
const vo: GeneratePreviewVo = new GeneratePreviewVo();
|
||||||
vo.setName(coreGenerateTemplateVo.getFileName());
|
vo.setName(coreGenerateTemplateVo.getFileName());
|
||||||
vo.setType(coreGenerateTemplateVo.getType());
|
vo.setType(coreGenerateTemplateVo.getType());
|
||||||
vo.setContent(coreGenerateTemplateVo.getData());
|
vo.setContent(coreGenerateTemplateVo.getData());
|
||||||
vo.setFileDir(coreGenerateTemplateVo + "/");
|
vo.setFileDir(coreGenerateTemplateVo + "/");
|
||||||
voList.add(vo);
|
voList.push(vo);
|
||||||
}
|
}
|
||||||
return voList;
|
return voList;
|
||||||
}
|
}
|
||||||
@@ -364,7 +363,7 @@ export class GenerateServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getDbFieldType(...args: any[]): Promise<any> {
|
async getDbFieldType(...args: any[]): Promise<any> {
|
||||||
type = getDbType(type);
|
type = getDbType(type);
|
||||||
const map: Record<string, any> = SqlColumnEnum.getMap();
|
Record<String, String[]> map = SqlColumnEnum.getMap();
|
||||||
const field: string = "";
|
const field: string = "";
|
||||||
for (Map.Entry<String, String[]> entry : map.entrySet()) {
|
for (Map.Entry<String, String[]> entry : map.entrySet()) {
|
||||||
if (Arrays.asList(entry.getValue()).includes(type)) {
|
if (Arrays.asList(entry.getValue()).includes(type)) {
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MemberAccountServiceImplService {
|
export class MemberAccountServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -19,35 +18,35 @@ export class MemberAccountServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<MemberAccountLog> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("mal").innerJoin("?_member m ON mal.member_id = m.member_id".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("mal").innerJoin("?_member m ON mal.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("mal.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
queryWrapper.select("mal.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
||||||
queryWrapper.eq("mal.site_id", siteId);
|
queryWrapper.eq("mal.site_id", siteId);
|
||||||
queryWrapper.eq("mal.account_type", searchParam.getAccountType());
|
queryWrapper.eq("mal.account_type", searchParam.getAccountType());
|
||||||
queryWrapper.orderByDesc("mal.id");
|
queryWrapper.orderByDesc("mal.id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeywords()))
|
if (!!searchParam.getKeywords())
|
||||||
queryWrapper.like("m.member_no|m.username|m.nickname|m.mobile", searchParam.getKeywords());
|
queryWrapper.like("m.member_no|m.username|m.nickname|m.mobile", searchParam.getKeywords());
|
||||||
if (ObjectUtil.defaultIfNull(searchParam.getMemberId(), 0) > 0)
|
if (ObjectUtil.defaultIfNull(searchParam.getMemberId(), 0) > 0)
|
||||||
queryWrapper.eq("mal.member_id", searchParam.getMemberId());
|
queryWrapper.eq("mal.member_id", searchParam.getMemberId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getFromType()))
|
if (!!searchParam.getFromType())
|
||||||
queryWrapper.eq("mal.from_type", searchParam.getFromType());
|
queryWrapper.eq("mal.from_type", searchParam.getFromType());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime()))
|
if (!!searchParam.getCreateTime())
|
||||||
QueryMapperUtils.buildByTime(queryWrapper, "mal.create_time", searchParam.getCreateTime());
|
QueryMapperUtils.buildByTime(queryWrapper, "mal.create_time", searchParam.getCreateTime());
|
||||||
|
|
||||||
const iPage: IPage<MemberAccountLogVo> = memberAccountLogMapper.selectJoinPage(new Page<>(page, limit), MemberAccountLogVo.class, queryWrapper);
|
iPage = memberAccountLogMapper.selectJoinPage({ /* pagination */ }, MemberAccountLogVo.class, queryWrapper);
|
||||||
const list: MemberAccountLogListVo[] = [];
|
MemberAccountLogListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: MemberAccountLogListVo = new MemberAccountLogListVo();
|
const vo: MemberAccountLogListVo = new MemberAccountLogListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
|
|
||||||
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(item, memberInfoVo);
|
Object.assign(memberInfoVo, item);
|
||||||
|
|
||||||
vo.setMember(memberInfoVo);
|
vo.setMember(memberInfoVo);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,13 +55,13 @@ export class MemberAccountServiceImplService {
|
|||||||
async getMemberAccountInfo(...args: any[]): Promise<number> {
|
async getMemberAccountInfo(...args: any[]): Promise<number> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>()
|
const member: Member = this.memberRepository.findOne(new ()
|
||||||
.eq("member_id", memberId)
|
.eq("member_id", memberId)
|
||||||
.eq("site_id", siteId));
|
.eq("site_id", siteId));
|
||||||
Assert.notNull(member, "会员不存在");
|
if (!member) throw new BadRequestException("会员不存在");
|
||||||
|
|
||||||
const memberAccountVo: MemberAccountVo = new MemberAccountVo();
|
const memberAccountVo: MemberAccountVo = new MemberAccountVo();
|
||||||
BeanUtils.copyProperties(member, memberAccountVo);
|
Object.assign(memberAccountVo, member);
|
||||||
|
|
||||||
return memberAccountVo;
|
return memberAccountVo;
|
||||||
}
|
}
|
||||||
@@ -75,12 +74,12 @@ export class MemberAccountServiceImplService {
|
|||||||
const vo: SumCommissionVo = new SumCommissionVo();
|
const vo: SumCommissionVo = new SumCommissionVo();
|
||||||
const zero: number = (new BigDecimal(0));
|
const zero: number = (new BigDecimal(0));
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMemberId()) && searchParam.getMemberId() > 0) {
|
if (!!searchParam.getMemberId() && searchParam.getMemberId() > 0) {
|
||||||
const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.getMemberId());
|
const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.getMemberId());
|
||||||
vo.setCommission(memberAccountInfo.getCommission());
|
vo.setCommission(memberAccountInfo.getCommission());
|
||||||
vo.setCommissionCashOuting(memberAccountInfo.getCommissionCashOuting());
|
vo.setCommissionCashOuting(memberAccountInfo.getCommissionCashOuting());
|
||||||
vo.setTotalCommission(memberAccountInfo.getCommissionGet());
|
vo.setTotalCommission(memberAccountInfo.getCommissionGet());
|
||||||
const memberAccountLog: MemberAccountLog = memberAccountLogMapper.selectOne(new QueryWrapper<MemberAccountLog>()
|
const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne(new ()
|
||||||
.select("SUM(account_data) AS account_sum")
|
.select("SUM(account_data) AS account_sum")
|
||||||
.eq("member_id", searchParam.getMemberId())
|
.eq("member_id", searchParam.getMemberId())
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
@@ -88,14 +87,14 @@ export class MemberAccountServiceImplService {
|
|||||||
.eq("from_type", "cash_out"));
|
.eq("from_type", "cash_out"));
|
||||||
vo.setWithdrawnCommission(memberAccountLog == null ? zero : memberAccountLog.getAccountSum());
|
vo.setWithdrawnCommission(memberAccountLog == null ? zero : memberAccountLog.getAccountSum());
|
||||||
} else {
|
} else {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>()
|
const member: Member = this.memberRepository.findOne(new ()
|
||||||
.select("SUM(commission_get) AS commission_get,SUM(commission) AS commission, SUM(commission_cash_outing) AS commission_cash_outing")
|
.select("SUM(commission_get) AS commission_get,SUM(commission) AS commission, SUM(commission_cash_outing) AS commission_cash_outing")
|
||||||
.eq("site_id", siteId));
|
.eq("site_id", siteId));
|
||||||
|
|
||||||
vo.setCommission(member == null ? zero : member.getCommission());
|
vo.setCommission(member == null ? zero : member.getCommission());
|
||||||
vo.setCommissionCashOuting(member == null ? zero : member.getCommissionCashOuting());
|
vo.setCommissionCashOuting(member == null ? zero : member.getCommissionCashOuting());
|
||||||
vo.setTotalCommission(member == null ? zero : member.getCommissionGet());
|
vo.setTotalCommission(member == null ? zero : member.getCommissionGet());
|
||||||
const memberAccountLog: MemberAccountLog = memberAccountLogMapper.selectOne(new QueryWrapper<MemberAccountLog>()
|
const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne(new ()
|
||||||
.select("SUM(account_data) AS account_sum")
|
.select("SUM(account_data) AS account_sum")
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("account_type", AccountTypeEnum.COMMISSION.getType())
|
.eq("account_type", AccountTypeEnum.COMMISSION.getType())
|
||||||
@@ -112,13 +111,13 @@ export class MemberAccountServiceImplService {
|
|||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const vo: SumBalanceVo = new SumBalanceVo();
|
const vo: SumBalanceVo = new SumBalanceVo();
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMemberId()) && searchParam.getMemberId() > 0) {
|
if (!!searchParam.getMemberId() && searchParam.getMemberId() > 0) {
|
||||||
const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.getMemberId());
|
const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.getMemberId());
|
||||||
|
|
||||||
vo.setBalance(memberAccountInfo == null ? new BigDecimal(0) : memberAccountInfo.getBalance());
|
vo.setBalance(memberAccountInfo == null ? new BigDecimal(0) : memberAccountInfo.getBalance());
|
||||||
vo.setMoney(memberAccountInfo == null ? new BigDecimal(0) : memberAccountInfo.getMoney());
|
vo.setMoney(memberAccountInfo == null ? new BigDecimal(0) : memberAccountInfo.getMoney());
|
||||||
} else {
|
} else {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>()
|
const member: Member = this.memberRepository.findOne(new ()
|
||||||
.select("SUM(balance) AS balance,SUM(money) AS money")
|
.select("SUM(balance) AS balance,SUM(money) AS money")
|
||||||
.eq("site_id", siteId));
|
.eq("site_id", siteId));
|
||||||
|
|
||||||
@@ -136,9 +135,9 @@ export class MemberAccountServiceImplService {
|
|||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const vo: SumPointVo = new SumPointVo();
|
const vo: SumPointVo = new SumPointVo();
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMemberId()) && searchParam.getMemberId() > 0) {
|
if (!!searchParam.getMemberId() && searchParam.getMemberId() > 0) {
|
||||||
const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.getMemberId());
|
const memberAccountInfo: MemberAccountVo = this.getMemberAccountInfo(searchParam.getMemberId());
|
||||||
const memberAccountLog: MemberAccountLog = memberAccountLogMapper.selectOne(new QueryWrapper<MemberAccountLog>()
|
const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne(new ()
|
||||||
.select("SUM(account_data) AS account_sum")
|
.select("SUM(account_data) AS account_sum")
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("member_id", searchParam.getMemberId())
|
.eq("member_id", searchParam.getMemberId())
|
||||||
@@ -147,12 +146,12 @@ export class MemberAccountServiceImplService {
|
|||||||
vo.setPointGet(memberAccountInfo.getPointGet());
|
vo.setPointGet(memberAccountInfo.getPointGet());
|
||||||
vo.setPointUse(memberAccountLog == null ? 0 : memberAccountLog.getAccountSum().abs().intValue());
|
vo.setPointUse(memberAccountLog == null ? 0 : memberAccountLog.getAccountSum().abs().intValue());
|
||||||
} else {
|
} else {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>()
|
const member: Member = this.memberRepository.findOne(new ()
|
||||||
.select("SUM(point_get) AS point_get")
|
.select("SUM(point_get) AS point_get")
|
||||||
.eq("site_id", siteId));
|
.eq("site_id", siteId));
|
||||||
vo.setPointGet(member == null ? 0 : member.getPointGet());
|
vo.setPointGet(member == null ? 0 : member.getPointGet());
|
||||||
|
|
||||||
const memberAccountLog: MemberAccountLog = memberAccountLogMapper.selectOne(new QueryWrapper<MemberAccountLog>()
|
const memberAccountLog: MemberAccountLog = this.memberAccountLogRepository.findOne(new ()
|
||||||
.select("SUM(account_data) AS account_sum")
|
.select("SUM(account_data) AS account_sum")
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("account_type", AccountTypeEnum.POINT.getType())
|
.eq("account_type", AccountTypeEnum.POINT.getType())
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -13,17 +13,17 @@ export class MemberAddressServiceImplService {
|
|||||||
* list
|
* list
|
||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const queryWrapper: QueryWrapper<MemberAddress> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMemberId())) queryWrapper.eq("member_id", searchParam.getMemberId());
|
if (!!searchParam.getMemberId()) queryWrapper.eq("member_id", searchParam.getMemberId());
|
||||||
|
|
||||||
const records: MemberAddress[] = memberAddressMapper.selectList(queryWrapper);
|
MemberAddress[] records = this.memberAddressRepository.find(queryWrapper);
|
||||||
const list: MemberAddressListVo[] = [];
|
MemberAddressListVo[] list = [];
|
||||||
for (const item of records) {
|
for (const item of records) {
|
||||||
const vo: MemberAddressListVo = new MemberAddressListVo();
|
const vo: MemberAddressListVo = new MemberAddressListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -32,16 +32,16 @@ export class MemberAddressServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: MemberAddress = memberAddressMapper.selectOne(
|
const model: MemberAddress = this.memberAddressRepository.findOne(
|
||||||
new QueryWrapper<MemberAddress>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: MemberAddressInfoVo = new MemberAddressInfoVo();
|
const vo: MemberAddressInfoVo = new MemberAddressInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,37 +50,37 @@ export class MemberAddressServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const model: MemberAddress = new MemberAddress();
|
const model: MemberAddress = new MemberAddress();
|
||||||
BeanUtils.copyProperties(addParam, model);
|
Object.assign(model, addParam);
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
memberAddressMapper.insert(model);
|
this.memberAddressRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: MemberAddress = memberAddressMapper.selectOne(
|
const model: MemberAddress = this.memberAddressRepository.findOne(
|
||||||
new QueryWrapper<MemberAddress>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
memberAddressMapper.updateById(model);
|
this.memberAddressRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: MemberAddress = memberAddressMapper.selectOne(
|
const model: MemberAddress = this.memberAddressRepository.findOne(
|
||||||
new QueryWrapper<MemberAddress>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
memberAddressMapper.delete(new QueryWrapper<MemberAddress>().eq("id", id));
|
this.memberAddressRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MemberCashOutServiceImplService {
|
export class MemberCashOutServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -18,33 +17,33 @@ export class MemberCashOutServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<MemberCashOut> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("mco").innerJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("mco").innerJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
queryWrapper.select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
||||||
queryWrapper.eq("mco.site_id", siteId);
|
queryWrapper.eq("mco.site_id", siteId);
|
||||||
queryWrapper.orderByDesc("mco.id");
|
queryWrapper.orderByDesc("mco.id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeywords())) {
|
if (!!searchParam.getKeywords()) {
|
||||||
queryWrapper.and(i => i.like("m.member_no", searchParam.getKeywords())
|
queryWrapper.and(i => i.like("m.member_no", searchParam.getKeywords())
|
||||||
.or().like("m.username", searchParam.getKeywords())
|
.or().like("m.username", searchParam.getKeywords())
|
||||||
.or().like("m.nickname", searchParam.getKeywords())
|
.or().like("m.nickname", searchParam.getKeywords())
|
||||||
.or().like("m.mobile", searchParam.getKeywords())
|
.or().like("m.mobile", searchParam.getKeywords())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMemberId()) && searchParam.getMemberId() > 0) queryWrapper.eq("mco.member_id", searchParam.getMemberId());
|
if (!!searchParam.getMemberId() && searchParam.getMemberId() > 0) queryWrapper.eq("mco.member_id", searchParam.getMemberId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getStatus())) queryWrapper.eq("mco.status", searchParam.getStatus());
|
if (!!searchParam.getStatus()) queryWrapper.eq("mco.status", searchParam.getStatus());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCashOutNo())) queryWrapper.like("mco.cash_out_no", searchParam.getCashOutNo());
|
if (!!searchParam.getCashOutNo()) queryWrapper.like("mco.cash_out_no", searchParam.getCashOutNo());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTransferType())) queryWrapper.like("mco.transfer_type", searchParam.getTransferType());
|
if (!!searchParam.getTransferType()) queryWrapper.like("mco.transfer_type", searchParam.getTransferType());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) QueryMapperUtils.buildByTime(queryWrapper, "mco.create_time", searchParam.getCreateTime());
|
if (!!searchParam.getCreateTime()) QueryMapperUtils.buildByTime(queryWrapper, "mco.create_time", searchParam.getCreateTime());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTransferTime())) QueryMapperUtils.buildByTime(queryWrapper, "mco.transfer_time", searchParam.getTransferTime());
|
if (!!searchParam.getTransferTime()) QueryMapperUtils.buildByTime(queryWrapper, "mco.transfer_time", searchParam.getTransferTime());
|
||||||
|
|
||||||
const iPage: IPage<MemberCashOutListVo> = memberCashOutMapper.selectJoinPage(new Page<>(page, limit), MemberCashOutListVo.class, queryWrapper);
|
iPage = memberCashOutMapper.selectJoinPage({ /* pagination */ }, MemberCashOutListVo.class, queryWrapper);
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(item, memberInfoVo);
|
Object.assign(memberInfoVo, item);
|
||||||
item.setMember(memberInfoVo);
|
item.setMember(memberInfoVo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(iPage.getRecords());
|
return PageResult.build(page, limit, total).setData(records);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -55,13 +54,13 @@ export class MemberCashOutServiceImplService {
|
|||||||
|
|
||||||
const vo: MemberCashOutInfoVo = memberCashOutMapper.selectJoinOne(
|
const vo: MemberCashOutInfoVo = memberCashOutMapper.selectJoinOne(
|
||||||
MemberCashOutInfoVo.class,
|
MemberCashOutInfoVo.class,
|
||||||
new MPJQueryWrapper<MemberCashOut>()
|
new MPJ()
|
||||||
.select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg,pt.transfer_voucher,pt.transfer_remark")
|
.select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg,pt.transfer_voucher,pt.transfer_remark")
|
||||||
.eq("mco.id", id)
|
.eq("mco.id", id)
|
||||||
.eq("mco.site_id", siteId)
|
.eq("mco.site_id", siteId)
|
||||||
.setAlias("mco")
|
.setAlias("mco")
|
||||||
.leftJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.config.get('tablePrefix')))
|
.leftJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix))
|
||||||
.leftJoin("?_pay_transfer pt ON mco.transfer_no = pt.transfer_no".replace("?_", this.config.get('tablePrefix')))
|
.leftJoin("?_pay_transfer pt ON mco.transfer_no = pt.transfer_no".replace("?_", this.appConfig.tablePrefix))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (vo != null) {
|
if (vo != null) {
|
||||||
@@ -82,15 +81,15 @@ export class MemberCashOutServiceImplService {
|
|||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const vo: CashOutStatVo = new CashOutStatVo();
|
const vo: CashOutStatVo = new CashOutStatVo();
|
||||||
|
|
||||||
const transfered: MemberCashOut = memberCashOutMapper.selectOne(
|
const transfered: MemberCashOut = this.memberCashOutRepository.findOne(
|
||||||
new QueryWrapper<MemberCashOut>()
|
new ()
|
||||||
.eq("status", MemberCashOutStatusEnum.TRANSFERED.getStatus())
|
.eq("status", MemberCashOutStatusEnum.TRANSFERED.getStatus())
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.select("SUM(apply_money) AS apply_money")
|
.select("SUM(apply_money) AS apply_money")
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
const allMoney: MemberCashOut = memberCashOutMapper.selectOne(
|
const allMoney: MemberCashOut = this.memberCashOutRepository.findOne(
|
||||||
new QueryWrapper<MemberCashOut>()
|
new ()
|
||||||
.ge("status", 0)
|
.ge("status", 0)
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.select("SUM(apply_money) AS apply_money")
|
.select("SUM(apply_money) AS apply_money")
|
||||||
@@ -119,13 +118,13 @@ export class MemberCashOutServiceImplService {
|
|||||||
async transfer(...args: any[]): Promise<any> {
|
async transfer(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const model: MemberCashOut = memberCashOutMapper.selectOne(
|
const model: MemberCashOut = this.memberCashOutRepository.findOne(
|
||||||
new QueryWrapper<MemberCashOut>()
|
new ()
|
||||||
.eq("id", param.getId())
|
.eq("id", param.getId())
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
iCoreMemberCashOutService.transfer(model, param);
|
iCoreMemberCashOutService.transfer(model, param);
|
||||||
}
|
}
|
||||||
@@ -141,15 +140,15 @@ export class MemberCashOutServiceImplService {
|
|||||||
* remark
|
* remark
|
||||||
*/
|
*/
|
||||||
async remark(...args: any[]): Promise<any> {
|
async remark(...args: any[]): Promise<any> {
|
||||||
const model: MemberCashOut = memberCashOutMapper.selectOne(
|
const model: MemberCashOut = this.memberCashOutRepository.findOne(
|
||||||
new QueryWrapper<MemberCashOut>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
);
|
);
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
model.setRemark(param.getRemark());
|
model.setRemark(param.getRemark());
|
||||||
memberCashOutMapper.updateById(model);
|
this.memberCashOutRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -18,28 +18,28 @@ export class MemberLabelServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<MemberLabel> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", siteId);
|
queryWrapper.eq("site_id", siteId);
|
||||||
queryWrapper.orderByDesc("label_id");
|
queryWrapper.orderByDesc("label_id");
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getLabelName())){
|
if (!!searchParam.getLabelName()){
|
||||||
queryWrapper.like("label_name", searchParam.getLabelName());
|
queryWrapper.like("label_name", searchParam.getLabelName());
|
||||||
}
|
}
|
||||||
const iPage: IPage<MemberLabel> = memberLabelMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.memberLabelRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: MemberLabelListVo[] = [];
|
MemberLabelListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: MemberLabelListVo = new MemberLabelListVo();
|
const vo: MemberLabelListVo = new MemberLabelListVo();
|
||||||
const labelId: number = item.getLabelId();
|
const labelId: number = item.getLabelId();
|
||||||
const wrapper: QueryWrapper<Member> = new QueryWrapper<>();
|
wrapper = {};
|
||||||
wrapper.eq("site_id",siteId);
|
wrapper.eq("site_id",siteId);
|
||||||
const canshu: string = String.valueOf(labelId);
|
const canshu: string = String(labelId);
|
||||||
//添加如果是空值判断
|
//添加如果是空值判断
|
||||||
wrapper.apply("JSON_VALID(member_label) = 1 AND JSON_SEARCH(member_label, 'one', {0}) IS NOT NULL",canshu);
|
wrapper.apply("JSON_VALID(member_label) = 1 AND JSON_SEARCH(member_label, 'one', {0}) IS NOT NULL",canshu);
|
||||||
const members: Member[] = memberMapper.selectList(wrapper);
|
Member[] members = this.memberRepository.find(wrapper);
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setMemberNum(members.size());
|
vo.setMemberNum(members.length);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,16 +48,16 @@ export class MemberLabelServiceImplService {
|
|||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const model: MemberLabel = memberLabelMapper.selectOne(
|
const model: MemberLabel = this.memberLabelRepository.findOne(
|
||||||
new QueryWrapper<MemberLabel>()
|
new ()
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("label_id", id)
|
.eq("label_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "标签不存在");
|
if (!model) throw new BadRequestException("标签不存在");
|
||||||
|
|
||||||
const vo: MemberLabelInfoVo = new MemberLabelInfoVo();
|
const vo: MemberLabelInfoVo = new MemberLabelInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,9 +72,9 @@ export class MemberLabelServiceImplService {
|
|||||||
model.setLabelName(addParam.getLabelName());
|
model.setLabelName(addParam.getLabelName());
|
||||||
model.setMemo(addParam.getMemo());
|
model.setMemo(addParam.getMemo());
|
||||||
model.setSort(addParam.getSort());
|
model.setSort(addParam.getSort());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
memberLabelMapper.insert(model);
|
this.memberLabelRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -91,7 +91,7 @@ export class MemberLabelServiceImplService {
|
|||||||
model.setLabelName(editParam.getLabelName());
|
model.setLabelName(editParam.getLabelName());
|
||||||
model.setMemo(editParam.getMemo());
|
model.setMemo(editParam.getMemo());
|
||||||
model.setSort(editParam.getSort());
|
model.setSort(editParam.getSort());
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
memberLabelMapper.update(model, updateWrapper);
|
memberLabelMapper.update(model, updateWrapper);
|
||||||
}
|
}
|
||||||
@@ -102,11 +102,11 @@ export class MemberLabelServiceImplService {
|
|||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<MemberLabel> = new QueryWrapper<MemberLabel>()
|
queryWrapper = new ()
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("label_id", id);
|
.eq("label_id", id);
|
||||||
|
|
||||||
memberLabelMapper.delete(queryWrapper);
|
this.memberLabelRepository.delete(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -115,16 +115,16 @@ export class MemberLabelServiceImplService {
|
|||||||
async all(...args: any[]): Promise<any> {
|
async all(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<MemberLabel> = new MPJQueryWrapper<MemberLabel>();
|
MPJqueryWrapper = new MPJ();
|
||||||
queryWrapper.select("label_id,label_name").eq("site_id", siteId);
|
queryWrapper.select("label_id,label_name").eq("site_id", siteId);
|
||||||
|
|
||||||
const labels: MemberLabel[] = memberLabelMapper.selectList(queryWrapper); // 调用 selectList 方法
|
MemberLabel[] labels = this.memberLabelRepository.find(queryWrapper); // 调用 selectList 方法
|
||||||
|
|
||||||
const list: MemberLabelAllListVo[] = [];
|
MemberLabelAllListVo[] list = [];
|
||||||
for (const item of labels) {
|
for (const item of labels) {
|
||||||
const vo: MemberLabelAllListVo = new MemberLabelAllListVo();
|
const vo: MemberLabelAllListVo = new MemberLabelAllListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,22 +17,22 @@ export class MemberLevelServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<MemberLevel> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", siteId);
|
queryWrapper.eq("site_id", siteId);
|
||||||
queryWrapper.orderByAsc("growth");
|
queryWrapper.orderByAsc("growth");
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getLevelName())) queryWrapper.like("level_name", searchParam.getLevelName());
|
if (!!searchParam.getLevelName()) queryWrapper.like("level_name", searchParam.getLevelName());
|
||||||
|
|
||||||
const iPage: IPage<MemberLevel> = memberLevelMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.memberLevelRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: MemberLevelListVo[] = [];
|
MemberLevelListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: MemberLevelListVo = new MemberLevelListVo();
|
const vo: MemberLevelListVo = new MemberLevelListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setMemberNum(memberMapper.selectCount(new QueryWrapper<Member>().eq("member_level", vo.getLevelId())));
|
vo.setMemberNum(this.memberRepository.count(new ().eq("member_level", vo.getLevelId())));
|
||||||
if (ObjectUtil.isNotEmpty(item.getLevelBenefits())) vo.setLevelBenefits(coreMemberService.getBenefitsContent(item.getSiteId(), JSONUtil.parseObj(item.getLevelBenefits()), "admin"));
|
if (!!item.getLevelBenefits()) vo.setLevelBenefits(coreMemberService.getBenefitsContent(item.getSiteId(), JSON.parse(item.getLevelBenefits()), "admin"));
|
||||||
if (ObjectUtil.isNotEmpty(item.getLevelGifts())) vo.setLevelGifts(coreMemberService.getGiftContent(item.getSiteId(), JSONUtil.parseObj(item.getLevelGifts()), "admin"));
|
if (!!item.getLevelGifts()) vo.setLevelGifts(coreMemberService.getGiftContent(item.getSiteId(), JSON.parse(item.getLevelGifts()), "admin"));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,16 +41,16 @@ export class MemberLevelServiceImplService {
|
|||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const model: MemberLevel = memberLevelMapper.selectOne(
|
const model: MemberLevel = this.memberLevelRepository.findOne(
|
||||||
new QueryWrapper<MemberLevel>()
|
new ()
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("level_id", id)
|
.eq("level_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "等级不存在");
|
if (!model) throw new BadRequestException("等级不存在");
|
||||||
|
|
||||||
const vo: MemberLevelInfoVo = new MemberLevelInfoVo();
|
const vo: MemberLevelInfoVo = new MemberLevelInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,11 +66,11 @@ export class MemberLevelServiceImplService {
|
|||||||
model.setLevelName(addParam.getLevelName());
|
model.setLevelName(addParam.getLevelName());
|
||||||
model.setGrowth(addParam.getGrowth());
|
model.setGrowth(addParam.getGrowth());
|
||||||
model.setRemark(addParam.getRemark());
|
model.setRemark(addParam.getRemark());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setLevelBenefits(addParam.getLevelBenefits().toString());
|
model.setLevelBenefits(addParam.getLevelBenefits().toString());
|
||||||
model.setLevelGifts(addParam.getLevelGifts().toString());
|
model.setLevelGifts(addParam.getLevelGifts().toString());
|
||||||
|
|
||||||
memberLevelMapper.insert(model);
|
this.memberLevelRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -87,7 +87,7 @@ export class MemberLevelServiceImplService {
|
|||||||
model.setLevelName(editParam.getLevelName());
|
model.setLevelName(editParam.getLevelName());
|
||||||
model.setGrowth(editParam.getGrowth());
|
model.setGrowth(editParam.getGrowth());
|
||||||
model.setRemark(editParam.getRemark());
|
model.setRemark(editParam.getRemark());
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setLevelBenefits(editParam.getLevelBenefits().toString());
|
model.setLevelBenefits(editParam.getLevelBenefits().toString());
|
||||||
model.setLevelGifts(editParam.getLevelGifts().toString());
|
model.setLevelGifts(editParam.getLevelGifts().toString());
|
||||||
|
|
||||||
@@ -100,16 +100,16 @@ export class MemberLevelServiceImplService {
|
|||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const memberNum: number = memberMapper.selectCount(new QueryWrapper<Member>()
|
const memberNum: number = this.memberRepository.count(new ()
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("member_level", id));
|
.eq("member_level", id));
|
||||||
if (memberNum > 0) throw new BadRequestException("该等级下存在会员不允许删除");
|
if (memberNum > 0) throw new BadRequestException("该等级下存在会员不允许删除");
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<MemberLevel> = new QueryWrapper<MemberLevel>()
|
queryWrapper = new ()
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("level_id", id);
|
.eq("level_id", id);
|
||||||
|
|
||||||
memberLevelMapper.delete(queryWrapper);
|
this.memberLevelRepository.delete(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -118,16 +118,16 @@ export class MemberLevelServiceImplService {
|
|||||||
async all(...args: any[]): Promise<any> {
|
async all(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<MemberLevel> = new MPJQueryWrapper<MemberLevel>();
|
MPJqueryWrapper = new MPJ();
|
||||||
queryWrapper.select("level_id,level_name, growth,site_id,level_benefits,level_gifts").eq("site_id", siteId);
|
queryWrapper.select("level_id,level_name, growth,site_id,level_benefits,level_gifts").eq("site_id", siteId);
|
||||||
|
|
||||||
const labels: MemberLevel[] = memberLevelMapper.selectList(queryWrapper); // 调用 selectList 方法
|
MemberLevel[] labels = this.memberLevelRepository.find(queryWrapper); // 调用 selectList 方法
|
||||||
|
|
||||||
const list: MemberLevelAllListVo[] = [];
|
MemberLevelAllListVo[] list = [];
|
||||||
for (const item of labels) {
|
for (const item of labels) {
|
||||||
const vo: MemberLevelAllListVo = new MemberLevelAllListVo();
|
const vo: MemberLevelAllListVo = new MemberLevelAllListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MemberServiceImplService {
|
export class MemberServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -18,58 +17,58 @@ export class MemberServiceImplService {
|
|||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const queryWrapper: MPJQueryWrapper<Member> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("m").leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("m").leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("m.*, ml.level_name as member_level_name");
|
queryWrapper.select("m.*, ml.level_name as member_level_name");
|
||||||
queryWrapper.eq("m.site_id", siteId);
|
queryWrapper.eq("m.site_id", siteId);
|
||||||
queryWrapper.orderByDesc("member_id");
|
queryWrapper.orderByDesc("member_id");
|
||||||
|
|
||||||
// 查询条件
|
// 查询条件
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeyword())) {
|
if (!!searchParam.getKeyword()) {
|
||||||
queryWrapper.and(i => i.like("member_no", searchParam.getKeyword()).or()
|
queryWrapper.and(i => i.like("member_no", searchParam.getKeyword()).or()
|
||||||
.like("username", searchParam.getKeyword()).or()
|
.like("username", searchParam.getKeyword()).or()
|
||||||
.like("nickname", searchParam.getKeyword()).or()
|
.like("nickname", searchParam.getKeyword()).or()
|
||||||
.like("mobile", searchParam.getKeyword()));
|
.like("mobile", searchParam.getKeyword()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotNull(searchParam.getIsDel()) && ObjectUtil.isNotEmpty(searchParam.getKeyword())) {
|
if (ObjectUtil.isNotNull(searchParam.getIsDel()) && !!searchParam.getKeyword()) {
|
||||||
queryWrapper.eq("is_del", searchParam.getIsDel());
|
queryWrapper.eq("is_del", searchParam.getIsDel());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMemberLevel()) && searchParam.getMemberLevel() != 0) {
|
if (!!searchParam.getMemberLevel() && searchParam.getMemberLevel() != 0) {
|
||||||
queryWrapper.eq("member_level", searchParam.getMemberLevel());
|
queryWrapper.eq("member_level", searchParam.getMemberLevel());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getRegisterChannel())) {
|
if (!!searchParam.getRegisterChannel()) {
|
||||||
queryWrapper.eq("register_channel", searchParam.getRegisterChannel());
|
queryWrapper.eq("register_channel", searchParam.getRegisterChannel());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMemberLabel()) && searchParam.getMemberLabel() != 0) {
|
if (!!searchParam.getMemberLabel() && searchParam.getMemberLabel() != 0) {
|
||||||
queryWrapper.like("member_label", searchParam.getMemberLabel());
|
queryWrapper.like("member_label", searchParam.getMemberLabel());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getRegisterType())) {
|
if (!!searchParam.getRegisterType()) {
|
||||||
queryWrapper.eq("register_type", searchParam.getRegisterType());
|
queryWrapper.eq("register_type", searchParam.getRegisterType());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) {
|
if (!!searchParam.getCreateTime()) {
|
||||||
QueryMapperUtils.buildByTime(queryWrapper, "m.create_time", searchParam.getCreateTime());
|
QueryMapperUtils.buildByTime(queryWrapper, "m.create_time", searchParam.getCreateTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
const iPage: IPage<Member> = null;
|
iPage = null;
|
||||||
const memberList: Member[] = [];
|
Member[] memberList = [];
|
||||||
if (page > 0 && limit > 0) {
|
if (page > 0 && limit > 0) {
|
||||||
iPage = memberMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.memberRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
memberList = iPage.getRecords();
|
memberList = records;
|
||||||
} else {
|
} else {
|
||||||
memberList = memberMapper.selectList(queryWrapper);
|
memberList = this.memberRepository.find(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
const levelMap: Record<string, any> = Collections.emptyMap();
|
const levelMap: Record<number, MemberLevel> = Collections.emptyMap();
|
||||||
const levelIds: Set<number> = CollStreamUtil.toSet(memberList, Member::getMemberLevel);
|
number[] levelIds = CollStreamUtil.toSet(memberList, Member::getMemberLevel);
|
||||||
if (ObjectUtil.isNotEmpty(levelIds)) {
|
if (!!levelIds) {
|
||||||
levelMap = memberLevelMapper.selectBatchIds(levelIds).stream().collect(Collectors.toMap(MemberLevel::getLevelId, e => e));
|
levelMap = memberLevelMapper.selectBatchIds(levelIds).collect(Collectors.toMap(MemberLevel::getLevelId, e => e));
|
||||||
}
|
}
|
||||||
|
|
||||||
const list: MemberListVo[] = [];
|
MemberListVo[] list = [];
|
||||||
for (const item of memberList) {
|
for (const item of memberList) {
|
||||||
const vo: MemberListVo = new MemberListVo();
|
const vo: MemberListVo = new MemberListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setSexName(SexEnum.getNameBySex(item.getSex()));
|
vo.setSexName(SexEnum.getNameBySex(item.getSex()));
|
||||||
vo.setStatusName(StatusEnum.getNameByStatus(item.getStatus()));
|
vo.setStatusName(StatusEnum.getNameByStatus(item.getStatus()));
|
||||||
vo.setRegisterChannelName(ChannelEnum.getNameByCode(item.getRegisterChannel()));
|
vo.setRegisterChannelName(ChannelEnum.getNameByCode(item.getRegisterChannel()));
|
||||||
@@ -77,20 +76,20 @@ export class MemberServiceImplService {
|
|||||||
|
|
||||||
if (!item.getMemberLabel().isEmpty()) {
|
if (!item.getMemberLabel().isEmpty()) {
|
||||||
const memberLabelArrays: JSONArray = JSONUtil.parseArray(vo.getMemberLabel());
|
const memberLabelArrays: JSONArray = JSONUtil.parseArray(vo.getMemberLabel());
|
||||||
if (memberLabelArrays != null && memberLabelArrays.size() > 0) {
|
if (memberLabelArrays != null && memberLabelArrays.length > 0) {
|
||||||
const memberLabelArray: MemberLabelAllListVo[] = [];
|
MemberLabelAllListVo[] memberLabelArray = [];
|
||||||
const labelList: MemberLabel[] = memberLabelMapper.selectList(new QueryWrapper<MemberLabel>().select("label_name").in("label_id", memberLabelArrays));
|
MemberLabel[] labelList = this.memberLabelRepository.find(new ().select("label_name").in("label_id", memberLabelArrays));
|
||||||
for (const labelItem of labelList) {
|
for (const labelItem of labelList) {
|
||||||
const labelVo: MemberLabelAllListVo = new MemberLabelAllListVo();
|
const labelVo: MemberLabelAllListVo = new MemberLabelAllListVo();
|
||||||
BeanUtils.copyProperties(labelItem, labelVo);
|
Object.assign(labelVo, labelItem);
|
||||||
memberLabelArray.add(labelVo);
|
memberLabelArray.push(labelVo);
|
||||||
}
|
}
|
||||||
vo.setMemberLabelArray(memberLabelArray);
|
vo.setMemberLabelArray(memberLabelArray);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(const iPage: page, limit, = = null ? list.size() : iPage.getTotal()).setData(list);
|
return PageResult.build(const iPage: page, limit, = = null ? list.length : total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,32 +98,32 @@ export class MemberServiceImplService {
|
|||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const model: Member = memberMapper.selectOne(
|
const model: Member = this.memberRepository.findOne(
|
||||||
new MPJQueryWrapper<Member>()
|
new MPJ()
|
||||||
.setAlias("m")
|
.setAlias("m")
|
||||||
.leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.config.get('tablePrefix')))
|
.leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix))
|
||||||
.select("m.*, ml.level_name as member_level_name")
|
.select("m.*, ml.level_name as member_level_name")
|
||||||
.eq("member_id", id)
|
.eq("member_id", id)
|
||||||
.eq("m.site_id", siteId)
|
.eq("m.site_id", siteId)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: MemberInfoVo = new MemberInfoVo();
|
const vo: MemberInfoVo = new MemberInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
if ("0" === model.getMemberLevel()){
|
if ("0".equals(model.getMemberLevel())){
|
||||||
vo.setMemberLevel("");
|
vo.setMemberLevel("");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.isNotEmpty(model.getMemberLabel()) && !Arrays.asList(model.getMemberLabel()).isEmpty()) {
|
if (StrUtil.isNotEmpty(model.getMemberLabel()) && !Arrays.asList(model.getMemberLabel()).isEmpty()) {
|
||||||
const memberLabelArrays: JSONArray = JSONUtil.parseArray(vo.getMemberLabel());
|
const memberLabelArrays: JSONArray = JSONUtil.parseArray(vo.getMemberLabel());
|
||||||
if (memberLabelArrays != null && memberLabelArrays.size() > 0) {
|
if (memberLabelArrays != null && memberLabelArrays.length > 0) {
|
||||||
const memberLabelArray: MemberLabelAllListVo[] = [];
|
MemberLabelAllListVo[] memberLabelArray = [];
|
||||||
const labelList: MemberLabel[] = memberLabelMapper.selectList(new QueryWrapper<MemberLabel>().select("label_name,label_id").in("label_id", memberLabelArrays));
|
MemberLabel[] labelList = this.memberLabelRepository.find(new ().select("label_name,label_id").in("label_id", memberLabelArrays));
|
||||||
for (const item of labelList) {
|
for (const item of labelList) {
|
||||||
const labelVo: MemberLabelAllListVo = new MemberLabelAllListVo();
|
const labelVo: MemberLabelAllListVo = new MemberLabelAllListVo();
|
||||||
BeanUtils.copyProperties(item, labelVo);
|
Object.assign(labelVo, item);
|
||||||
memberLabelArray.add(labelVo);
|
memberLabelArray.push(labelVo);
|
||||||
}
|
}
|
||||||
vo.setMemberLabelArray(memberLabelArray);
|
vo.setMemberLabelArray(memberLabelArray);
|
||||||
}
|
}
|
||||||
@@ -140,7 +139,7 @@ export class MemberServiceImplService {
|
|||||||
|
|
||||||
addParam.setUsername(addParam.getMobile());
|
addParam.setUsername(addParam.getMobile());
|
||||||
|
|
||||||
const mobileIsExist: Member = memberMapper.selectOne(new QueryWrapper<Member>()
|
const mobileIsExist: Member = this.memberRepository.findOne(new ()
|
||||||
.select("member_id")
|
.select("member_id")
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.and(i => i.eq("mobile", addParam.getMobile()).or().eq("username", addParam.getMobile()))
|
.and(i => i.eq("mobile", addParam.getMobile()).or().eq("username", addParam.getMobile()))
|
||||||
@@ -154,7 +153,7 @@ export class MemberServiceImplService {
|
|||||||
if (addParam.getMemberNo().isEmpty()) {
|
if (addParam.getMemberNo().isEmpty()) {
|
||||||
addParam.setMemberNo(iCoreMemberService.createMemberNo(siteId));
|
addParam.setMemberNo(iCoreMemberService.createMemberNo(siteId));
|
||||||
} else {
|
} else {
|
||||||
const memberNoIsExist: Member = memberMapper.selectOne(new QueryWrapper<Member>()
|
const memberNoIsExist: Member = this.memberRepository.findOne(new ()
|
||||||
.select("member_id")
|
.select("member_id")
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("member_no", addParam.getMemberNo())
|
.eq("member_no", addParam.getMemberNo())
|
||||||
@@ -172,9 +171,9 @@ export class MemberServiceImplService {
|
|||||||
model.setPassword(PasswordEncipher.encode(addParam.getPassword()));
|
model.setPassword(PasswordEncipher.encode(addParam.getPassword()));
|
||||||
model.setRegisterType(MemberRegisterTypeEnum.MANUAL.getType());
|
model.setRegisterType(MemberRegisterTypeEnum.MANUAL.getType());
|
||||||
model.setRegisterChannel(MemberRegisterChannelEnum.MANUAL.getType());
|
model.setRegisterChannel(MemberRegisterChannelEnum.MANUAL.getType());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setMemberLabel("[]");
|
model.setMemberLabel("[]");
|
||||||
memberMapper.insert(model);
|
this.memberRepository.save(model);
|
||||||
// 会员注册事件
|
// 会员注册事件
|
||||||
const registerEvent: MemberRegisterEvent = new MemberRegisterEvent();
|
const registerEvent: MemberRegisterEvent = new MemberRegisterEvent();
|
||||||
registerEvent.setSiteId(RequestUtils.siteId());
|
registerEvent.setSiteId(RequestUtils.siteId());
|
||||||
@@ -215,7 +214,7 @@ export class MemberServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const value: string = String.valueOf(editParam.getValue()).trim();
|
const value: string = String(editParam.getValue()).trim();
|
||||||
|
|
||||||
const updateWrapper: LambdaUpdateWrapper<Member> = new LambdaUpdateWrapper<>();
|
const updateWrapper: LambdaUpdateWrapper<Member> = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.eq(Member::getSiteId, siteId)
|
updateWrapper.eq(Member::getSiteId, siteId)
|
||||||
@@ -241,7 +240,7 @@ export class MemberServiceImplService {
|
|||||||
updateWrapper.set(Member::getSex, value === "" || value === "null" ? 0 : number.parseInt(value));
|
updateWrapper.set(Member::getSex, value === "" || value === "null" ? 0 : number.parseInt(value));
|
||||||
break;
|
break;
|
||||||
case "id_card":
|
case "id_card":
|
||||||
// if (!IdcardUtil.isValidCard(value) && value.length !== 0){
|
// if (!IdcardUtil.isValidCard(value) && value.length > 0){
|
||||||
// throw new AdminException("请输入正确的身份证号");
|
// throw new AdminException("请输入正确的身份证号");
|
||||||
// }
|
// }
|
||||||
updateWrapper.set(Member::getIdCard, value === "" || value === "null" ? "" : value);
|
updateWrapper.set(Member::getIdCard, value === "" || value === "null" ? "" : value);
|
||||||
@@ -250,7 +249,7 @@ export class MemberServiceImplService {
|
|||||||
updateWrapper.set(Member::getRemark, value === "" || value === "null" ? "" : value);
|
updateWrapper.set(Member::getRemark, value === "" || value === "null" ? "" : value);
|
||||||
break;
|
break;
|
||||||
case "mobile":
|
case "mobile":
|
||||||
if (!PhoneUtil.isPhone(value) && value.length !== 0){
|
if (!PhoneUtil.isPhone(value) && value.length > 0){
|
||||||
throw new AdminException("请输入正确的手机号");
|
throw new AdminException("请输入正确的手机号");
|
||||||
}
|
}
|
||||||
updateWrapper.set(Member::getMobile, value === "" || value === "null" ? "" : value);
|
updateWrapper.set(Member::getMobile, value === "" || value === "null" ? "" : value);
|
||||||
@@ -266,12 +265,12 @@ export class MemberServiceImplService {
|
|||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<Member> = new QueryWrapper<Member>()
|
queryWrapper = new ()
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("member_id", id)
|
.eq("member_id", id)
|
||||||
.last("limit 1");
|
.last("limit 1");
|
||||||
|
|
||||||
memberMapper.delete(queryWrapper);
|
this.memberRepository.delete(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -280,18 +279,18 @@ export class MemberServiceImplService {
|
|||||||
async all(...args: any[]): Promise<any> {
|
async all(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<Member> = new MPJQueryWrapper<Member>();
|
MPJqueryWrapper = new MPJ();
|
||||||
queryWrapper.select("member_id,headimg,nickname").eq("site_id", siteId);
|
queryWrapper.select("member_id,headimg,nickname").eq("site_id", siteId);
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeyword()))
|
if (!!searchParam.getKeyword())
|
||||||
queryWrapper.like("member_no|username|nickname|mobile", searchParam.getKeyword());
|
queryWrapper.like("member_no|username|nickname|mobile", searchParam.getKeyword());
|
||||||
|
|
||||||
const members: Member[] = memberMapper.selectList(queryWrapper); // 调用 selectList 方法
|
Member[] members = this.memberRepository.find(queryWrapper); // 调用 selectList 方法
|
||||||
|
|
||||||
const list: MemberAllListVo[] = [];
|
MemberAllListVo[] list = [];
|
||||||
for (const item of members) {
|
for (const item of members) {
|
||||||
const vo: MemberAllListVo = new MemberAllListVo();
|
const vo: MemberAllListVo = new MemberAllListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -336,29 +335,29 @@ export class MemberServiceImplService {
|
|||||||
* batchModify
|
* batchModify
|
||||||
*/
|
*/
|
||||||
async batchModify(...args: any[]): Promise<any> {
|
async batchModify(...args: any[]): Promise<any> {
|
||||||
if (ObjectUtil.isEmpty(param.getValue().toString())){
|
if (!param.getValue(.toString())){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const field: string = param.getField();
|
const field: string = param.getField();
|
||||||
const memberIds: number[] = param.getMemberIds();
|
number[] memberIds = param.getMemberIds();
|
||||||
const isAll: number = param.getIsAll();
|
const isAll: number = param.getIsAll();
|
||||||
if (!"member_label" === field && !"member_level" === field){
|
if (!"member_label".equals(field) && !"member_level".equals(field)){
|
||||||
throw new BadRequestException("不支持的字段:" + field);
|
throw new BadRequestException("不支持的字段:" + field);
|
||||||
}
|
}
|
||||||
const uw: UpdateWrapper<Member> = new UpdateWrapper<>();
|
const uw: UpdateWrapper<Member> = new UpdateWrapper<>();
|
||||||
if (isAll == 0){
|
if (isAll == 0){
|
||||||
if (!(!memberIds || memberIds.length === 0)){
|
if (!StringUtils.isEmptyArray(memberIds)){
|
||||||
uw.in("member_id", memberIds);
|
uw.in("member_id", memberIds);
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
if (!(!memberIds || memberIds.length === 0)) {
|
if (!StringUtils.isEmptyArray(memberIds)) {
|
||||||
uw.notIn("member_id", memberIds);
|
uw.notIn("member_id", memberIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ("member_label" === field){
|
if ("member_label".equals(field)){
|
||||||
const value: JSONArray = JSONUtil.parseArray(param.getValue());
|
const value: JSONArray = JSONUtil.parseArray(param.getValue());
|
||||||
uw.set("member_label", JSONUtil.toJsonStr(value));
|
uw.set("member_label", JSON.stringify(value));
|
||||||
}else if ("member_level" === field){
|
}else if ("member_level".equals(field)){
|
||||||
uw.set("member_level", number.parseInt(param.getValue().toString()));
|
uw.set("member_level", number.parseInt(param.getValue().toString()));
|
||||||
}
|
}
|
||||||
memberMapper.update(uw);
|
memberMapper.update(uw);
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MemberSignServiceImplService {
|
export class MemberSignServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -18,40 +17,40 @@ export class MemberSignServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<MemberSign> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("ms").innerJoin("?_member m ON ms.member_id = m.member_id".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("ms").innerJoin("?_member m ON ms.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("ms.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
queryWrapper.select("ms.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
||||||
queryWrapper.eq("ms.site_id", siteId);
|
queryWrapper.eq("ms.site_id", siteId);
|
||||||
queryWrapper.orderByDesc("ms.sign_id");
|
queryWrapper.orderByDesc("ms.sign_id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeywords())){
|
if (!!searchParam.getKeywords()){
|
||||||
// queryWrapper.like("m.member_no|m.username|m.nickname|m.mobile", searchParam.getKeywords());
|
// queryWrapper.like("m.member_no|m.username|m.nickname|m.mobile", searchParam.getKeywords());
|
||||||
QueryMapperUtils.addMultiLike(queryWrapper, searchParam.getKeywords(),
|
QueryMapperUtils.addMultiLike(queryWrapper, searchParam.getKeywords(),
|
||||||
"m.member_no", "m.username", "m.nickname", "m.mobile");
|
"m.member_no", "m.username", "m.nickname", "m.mobile");
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) {
|
if (!!searchParam.getCreateTime()) {
|
||||||
QueryMapperUtils.buildByTime(queryWrapper, "ms.create_time", searchParam.getCreateTime());
|
QueryMapperUtils.buildByTime(queryWrapper, "ms.create_time", searchParam.getCreateTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
const iPage: IPage<MemberSign> = memberSignMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.memberSignRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: MemberSignListVo[] = [];
|
MemberSignListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: MemberSignListVo = new MemberSignListVo();
|
const vo: MemberSignListVo = new MemberSignListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
|
|
||||||
if (!item.getDayAward().isEmpty()) {
|
if (!item.getDayAward().isEmpty()) {
|
||||||
vo.setDayAward(coreMemberService.getGiftContent(item.getSiteId(), JSONUtil.parseObj(item.getDayAward()), "admin"));
|
vo.setDayAward(coreMemberService.getGiftContent(item.getSiteId(), JSON.parse(item.getDayAward()), "admin"));
|
||||||
}
|
}
|
||||||
if (!item.getContinueAward().isEmpty()) {
|
if (!item.getContinueAward().isEmpty()) {
|
||||||
vo.setContinueAward(coreMemberService.getGiftContent(item.getSiteId(), JSONUtil.parseObj(item.getContinueAward()), "admin"));
|
vo.setContinueAward(coreMemberService.getGiftContent(item.getSiteId(), JSON.parse(item.getContinueAward()), "admin"));
|
||||||
}
|
}
|
||||||
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(item, memberInfoVo);
|
Object.assign(memberInfoVo, item);
|
||||||
|
|
||||||
vo.setMember(memberInfoVo);
|
vo.setMember(memberInfoVo);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -59,13 +58,13 @@ export class MemberSignServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getSignConfig(...args: any[]): Promise<any> {
|
async getSignConfig(...args: any[]): Promise<any> {
|
||||||
const config: Record<string, any> = iCoreConfigService.getConfigValue(RequestUtils.siteId(), "SIGN_CONFIG");
|
const config: Record<string, any> = iCoreConfigService.getConfigValue(RequestUtils.siteId(), "SIGN_CONFIG");
|
||||||
return JSONUtil.toBean(config, SignConfigVo.class);
|
return Object.assign(new SignConfigVo(), config);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* setSignConfig
|
* setSignConfig
|
||||||
*/
|
*/
|
||||||
async setSignConfig(...args: any[]): Promise<any> {
|
async setSignConfig(...args: any[]): Promise<any> {
|
||||||
iCoreConfigService.setConfig(RequestUtils.siteId(), "SIGN_CONFIG", JSONUtil.parseObj(configParam));
|
iCoreConfigService.setConfig(RequestUtils.siteId(), "SIGN_CONFIG", JSON.parse(configParam));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class CloudBuildServiceImplService {
|
export class CloudBuildServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,7 +16,7 @@ export class CloudBuildServiceImplService {
|
|||||||
async getBuildTask(...args: any[]): Promise<any> {
|
async getBuildTask(...args: any[]): Promise<any> {
|
||||||
if (cached.get("cloud_build_task") == null) return null;
|
if (cached.get("cloud_build_task") == null) return null;
|
||||||
this.buildTask = (Record<string, any>) cached.get("cloud_build_task");
|
this.buildTask = (Record<string, any>) cached.get("cloud_build_task");
|
||||||
if (!this.buildTask.getStr("mode") === mode) return null;
|
if (!this.buildTask.getStr("mode").equals(mode)) return null;
|
||||||
return this.buildTask;
|
return this.buildTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +44,7 @@ export class CloudBuildServiceImplService {
|
|||||||
this.buildTask.set("mode", mode);
|
this.buildTask.set("mode", mode);
|
||||||
this.buildTask.set("task_key", taskKey);
|
this.buildTask.set("task_key", taskKey);
|
||||||
|
|
||||||
const tempDir: string = this.config.get('webRootDownRuntime') + "cloud_build/" + taskKey + "/";
|
const tempDir: string = this.appConfig.webRootDownRuntime + "cloud_build/" + taskKey + "/";
|
||||||
const packageDir: string = tempDir + "package/";
|
const packageDir: string = tempDir + "package/";
|
||||||
FileTools.createDirs(packageDir);
|
FileTools.createDirs(packageDir);
|
||||||
|
|
||||||
@@ -55,13 +54,13 @@ export class CloudBuildServiceImplService {
|
|||||||
|
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const actionQuery: Record<string, any> = {};
|
const actionQuery: Record<String, Object> = new HashRecord<>();
|
||||||
actionQuery.put("data[product_key]", instance.getProductKey());
|
actionQuery.put("data[product_key]", instance.getProductKey());
|
||||||
const actionToken: Record<string, any> = niucloudService.getActionToken("cloudbuild", actionQuery);
|
const actionToken: Record<string, any> = niucloudService.getActionToken("cloudbuild", actionQuery);
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<string, any> = new HashRecord<>();
|
||||||
query.put("authorize_code", instance.getCode());
|
query.put("authorize_code", instance.getCode());
|
||||||
query.put("timestamp", System.currentTimeMillis() / 1000);
|
query.put("timestamp", Math.floor(Date.now() / 1000));
|
||||||
query.put("token", actionToken == null ? "" : actionToken.getStr("token"));
|
query.put("token", actionToken == null ? "" : actionToken.getStr("token"));
|
||||||
|
|
||||||
const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/build").query(query)
|
const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/build").query(query)
|
||||||
@@ -70,9 +69,9 @@ export class CloudBuildServiceImplService {
|
|||||||
})
|
})
|
||||||
.method(Method.POST).execute();
|
.method(Method.POST).execute();
|
||||||
|
|
||||||
const res: Record<string, any> = JSONUtil.parseObj(response.body());
|
const res: Record<string, any> = JSON.parse(response.body());
|
||||||
|
|
||||||
if (!res.getInt("code", 0) === 1) throw new BadRequestException(res.getStr("msg"));
|
if (!res.getInt("code", 0).equals(1)) throw new BadRequestException(res.getStr("msg"));
|
||||||
|
|
||||||
this.buildTask.set("timestamp", query.get("timestamp"));
|
this.buildTask.set("timestamp", query.get("timestamp"));
|
||||||
cached.put("cloud_build_task", this.buildTask);
|
cached.put("cloud_build_task", this.buildTask);
|
||||||
@@ -87,23 +86,23 @@ export class CloudBuildServiceImplService {
|
|||||||
getBuildTask(mode);
|
getBuildTask(mode);
|
||||||
|
|
||||||
if (this.buildTask == null) return null;
|
if (this.buildTask == null) return null;
|
||||||
if (!this.buildTask.getStr("mode") === mode) return null;
|
if (!this.buildTask.getStr("mode").equals(mode)) return null;
|
||||||
|
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = new HashRecord<>();
|
||||||
query.put("authorize_code", instance.getCode());
|
query.put("authorize_code", instance.getCode());
|
||||||
query.put("timestamp", this.buildTask.getStr("timestamp"));
|
query.put("timestamp", this.buildTask.getStr("timestamp"));
|
||||||
|
|
||||||
const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/get_build_logs").query(query).method(Method.GET).execute();
|
const response: HttpResponse = new NiucloudUtils.Cloud().useThirdBuild().build("cloud/get_build_logs").query(query).method(Method.GET).execute();
|
||||||
if (!JSONUtil.isJson(response.body())) return null;
|
if (!JSONUtil.isJson(response.body())) return null;
|
||||||
|
|
||||||
const res: Record<string, any> = JSONUtil.parseObj(response.body());
|
const res: Record<string, any> = JSON.parse(response.body());
|
||||||
|
|
||||||
const data: JSONArray = res.getByPath("data.0", JSONArray.class);
|
const data: JSONArray = res.getByPath("data.0", JSONArray.class);
|
||||||
if (data.size() > 0) {
|
if (data.length > 0) {
|
||||||
const last: Record<string, any> = data.getJSONObject(data.size() - 1);
|
const last: Record<string, any> = data.getJSONObject(data.length - 1);
|
||||||
if (last.getInt("percent", 0) === 100 && last.getInt("code", 0) === 1) {
|
if (last.getInt("percent", 0).equals(100) && last.getInt("code", 0).equals(1)) {
|
||||||
res = buildSuccess(res);
|
res = buildSuccess(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,7 +113,7 @@ export class CloudBuildServiceImplService {
|
|||||||
* setLocalCloudCompileConfig
|
* setLocalCloudCompileConfig
|
||||||
*/
|
*/
|
||||||
async setLocalCloudCompileConfig(...args: any[]): Promise<any> {
|
async setLocalCloudCompileConfig(...args: any[]): Promise<any> {
|
||||||
const jsonObject: Record<string, any> = JSONUtil.parseObj(JSONUtil.toJsonPrettyStr(param));
|
const jsonObject: Record<string, any> = JSON.parse(JSONUtil.toJsonPrettyStr(param));
|
||||||
coreConfigService.setConfig(RequestUtils.defaultSiteId(), "LOCAL_CLOUD_COMPILE_CONFIG", jsonObject);
|
coreConfigService.setConfig(RequestUtils.defaultSiteId(), "LOCAL_CLOUD_COMPILE_CONFIG", jsonObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,7 +131,7 @@ export class CloudBuildServiceImplService {
|
|||||||
isConnected =checkLocal(url);
|
isConnected =checkLocal(url);
|
||||||
}
|
}
|
||||||
return isConnected;
|
return isConnected;
|
||||||
} catch (UnknownHostException e) {
|
} catch (e) {
|
||||||
throw new AdminException("联通测试失败");
|
throw new AdminException("联通测试失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -142,10 +141,10 @@ export class CloudBuildServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async clearBuildTask(...args: any[]): Promise<any> {
|
async clearBuildTask(...args: any[]): Promise<any> {
|
||||||
if (this.buildTask == null) return;
|
if (this.buildTask == null) return;
|
||||||
const tempDir: string = this.config.get('webRootDownRuntime' + "cloud_build/" + this.buildTask.getStr("task_key"));
|
const tempDir: string = this.appConfig.webRootDownRuntime + "cloud_build/" + this.buildTask.getStr("task_key");
|
||||||
try {
|
try {
|
||||||
if (fs.existsSync(tempDir)) fs.rmSync(tempDir, { recursive: true, force: true });
|
if (fs.existsSync(tempDir)) fs.rmSync(tempDir, { recursive: true, force: true });
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
cached.remove("cloud_build_task");
|
cached.remove("cloud_build_task");
|
||||||
this.buildTask = null;
|
this.buildTask = null;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export class NiuCloudServiceImplService {
|
|||||||
async getFrameworkLastVersion(...args: any[]): Promise<any> {
|
async getFrameworkLastVersion(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = {};
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
|
|
||||||
const data: Record<string, any> = NiucloudUtils.Niucloud.get("store/framework/lastversion", query).getJSONObject("data");
|
const data: Record<string, any> = NiucloudUtils.Niucloud.get("store/framework/lastversion", query).getJSONObject("data");
|
||||||
@@ -35,15 +35,15 @@ export class NiuCloudServiceImplService {
|
|||||||
async getFrameworkVersionList(...args: any[]): Promise<any> {
|
async getFrameworkVersionList(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = new HashRecord<>();
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
|
|
||||||
const data: JSONArray = NiucloudUtils.Niucloud.get("store/framework/version", query).getJSONArray("data");
|
const data: JSONArray = NiucloudUtils.Niucloud.get("store/framework/version", query).getJSONArray("data");
|
||||||
if (data == null) return null;
|
if (data == null) return null;
|
||||||
|
|
||||||
const list: FrameworkVersionListVo[] = [];
|
FrameworkVersionListVo[] list = [];
|
||||||
for (const i of number = 0; i < data.size(); i++) {
|
for (const i of number = 0; i < data.length; i++) {
|
||||||
list.add(JSONUtil.toBean(data.getJSONObject(i), FrameworkVersionListVo.class));
|
list.push(Object.assign(new FrameworkVersionListVo(), data.getJSONObject(i)));
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ export class NiuCloudServiceImplService {
|
|||||||
async getAuthinfo(...args: any[]): Promise<any> {
|
async getAuthinfo(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = {};
|
||||||
query.put("code", instance.getCode());
|
query.put("code", instance.getCode());
|
||||||
query.put("secret", instance.getSecret());
|
query.put("secret", instance.getSecret());
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
@@ -74,7 +74,7 @@ export class NiuCloudServiceImplService {
|
|||||||
async setAuthorize(...args: any[]): Promise<any> {
|
async setAuthorize(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = {};
|
||||||
query.put("code", param.getAuthCode());
|
query.put("code", param.getAuthCode());
|
||||||
query.put("secret", param.getAuthSecret());
|
query.put("secret", param.getAuthSecret());
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
@@ -92,19 +92,19 @@ export class NiuCloudServiceImplService {
|
|||||||
async getModuleList(...args: any[]): Promise<any> {
|
async getModuleList(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = new HashRecord<>();
|
||||||
query.put("code", instance.getCode());
|
query.put("code", instance.getCode());
|
||||||
query.put("secret", instance.getSecret());
|
query.put("secret", instance.getSecret());
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
|
|
||||||
const addonList: JSONArray = NiucloudUtils.Niucloud.get("member_app_all", query).getJSONArray("data");
|
const addonList: JSONArray = NiucloudUtils.Niucloud.get("member_app_all", query).getJSONArray("data");
|
||||||
if (addonList == null && addonList.size() == 0) return null;
|
if (addonList == null && addonList.length == 0) return null;
|
||||||
|
|
||||||
const list: ModuleListVo[] = [];
|
ModuleListVo[] list = [];
|
||||||
for (const i of number = 0; i < addonList.size(); i++) {
|
for (const i of number = 0; i < addonList.length; i++) {
|
||||||
const item: Record<string, any> = addonList.getJSONObject(i);
|
const item: Record<string, any> = addonList.getJSONObject(i);
|
||||||
const vo: ModuleListVo = JSONUtil.toBean(item, ModuleListVo.class);
|
const vo: ModuleListVo = Object.assign(new ModuleListVo(), item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -122,10 +122,10 @@ export class NiuCloudServiceImplService {
|
|||||||
async checkKey(...args: any[]): Promise<any> {
|
async checkKey(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = {};
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
|
|
||||||
return NiucloudUtils.Niucloud.get("store/app_check/" + key, query).get("data", Boolean.class);
|
return NiucloudUtils.Niucloud.get("store/app_check/" + key, query).get("data", boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -134,16 +134,16 @@ export class NiuCloudServiceImplService {
|
|||||||
async getAppVersionList(...args: any[]): Promise<any> {
|
async getAppVersionList(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = new HashRecord<>();
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
query.put("app_key", param.getAppKey());
|
query.put("app_key", param.getAppKey());
|
||||||
|
|
||||||
const data: JSONArray = ObjectUtil.defaultIfNull(NiucloudUtils.Niucloud.get("store/app_version/list", query).get("data", JSONArray.class), new JSONArray());
|
const data: JSONArray = ObjectUtil.defaultIfNull(NiucloudUtils.Niucloud.get("store/app_version/list", query).get("data", JSONArray.class), new JSONArray());
|
||||||
|
|
||||||
const list: AppVersionListVo[] = [];
|
AppVersionListVo[] list = [];
|
||||||
|
|
||||||
for (const i of number = 0; i < data.size(); i++) {
|
for (const i of number = 0; i < data.length; i++) {
|
||||||
list.add(JSONUtil.toBean(data.getJSONObject(i), AppVersionListVo.class));
|
list.push(Object.assign(new AppVersionListVo(), data.getJSONObject(i)));
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取验证码失败异常信息:{}", e.message);
|
log.error("获取验证码失败异常信息:{}", e.message);
|
||||||
throw new Error(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ export class NuiSmsServiceImplService {
|
|||||||
* sendMobileCode
|
* sendMobileCode
|
||||||
*/
|
*/
|
||||||
async sendMobileCode(...args: any[]): Promise<any> {
|
async sendMobileCode(...args: any[]): Promise<any> {
|
||||||
const body: Record<string, any> = {};
|
const body: Record<String, String> = {};
|
||||||
body.put("mobile", param.getMobile());
|
body.put("mobile", param.getMobile());
|
||||||
body.put("captcha_key", param.getCaptchaKey());
|
body.put("captcha_key", param.getCaptchaKey());
|
||||||
body.put("captcha_code", param.getCaptchaCode());
|
body.put("captcha_code", param.getCaptchaCode());
|
||||||
@@ -40,7 +40,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("发送验证码失败异常信息:{}", e.message);
|
log.error("发送验证码失败异常信息:{}", e.message);
|
||||||
throw new AdminException("发送验证码失败");
|
throw new AdminException("发送验证码失败");
|
||||||
}
|
}
|
||||||
@@ -50,15 +50,15 @@ export class NuiSmsServiceImplService {
|
|||||||
* registerAccount
|
* registerAccount
|
||||||
*/
|
*/
|
||||||
async registerAccount(...args: any[]): Promise<number> {
|
async registerAccount(...args: any[]): Promise<number> {
|
||||||
if (ObjectUtil.isNotEmpty(param.getImgUrl())) {
|
if (!!param.getImgUrl()) {
|
||||||
param.setImgUrl(Paths.get(RequestUtils.getReqeustURI(), param.getImgUrl()).toString());
|
param.setImgUrl(path.join(RequestUtils.getReqeustURI(), param.getImgUrl()).toString());
|
||||||
}
|
}
|
||||||
const result: Record<string, any> = null;
|
const result: Record<string, any> = null;
|
||||||
try {
|
try {
|
||||||
result = NiucloudUtils.Niucloud.post(ACCOUNT_REGISTER_URL, param);
|
result = NiucloudUtils.Niucloud.post(ACCOUNT_REGISTER_URL, param);
|
||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("注册账号失败异常信息:{}", e.message);
|
log.error("注册账号失败异常信息:{}", e.message);
|
||||||
throw new AdminException("注册账号失败");
|
throw new AdminException("注册账号失败");
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,7 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async loginAccount(...args: any[]): Promise<number> {
|
async loginAccount(...args: any[]): Promise<number> {
|
||||||
const url: string = String.format(LOGIN_ACCOUNT_URL, param.getUsername());
|
const url: string = String.format(LOGIN_ACCOUNT_URL, param.getUsername());
|
||||||
const body: Record<string, any> = {};
|
const body: Record<String, String> = {};
|
||||||
body.put("username", param.getUsername());
|
body.put("username", param.getUsername());
|
||||||
body.put("password", param.getPassword());
|
body.put("password", param.getPassword());
|
||||||
try {
|
try {
|
||||||
@@ -85,7 +85,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("登录账号失败异常信息:{}", e.message);
|
log.error("登录账号失败异常信息:{}", e.message);
|
||||||
throw new AdminException(e.message);
|
throw new AdminException(e.message);
|
||||||
}
|
}
|
||||||
@@ -100,8 +100,8 @@ export class NuiSmsServiceImplService {
|
|||||||
const data: Record<string, any> = accountInfo(param.getUsername());
|
const data: Record<string, any> = accountInfo(param.getUsername());
|
||||||
|
|
||||||
// 拆分手机号并验证
|
// 拆分手机号并验证
|
||||||
const mobiles: string = String.valueOf(data.getOrDefault("mobiles", ""));
|
const mobiles: string = String(data.getOrDefault("mobiles", ""));
|
||||||
const mobileList: string[] = Arrays.asList(mobiles.split(","));
|
String[] mobileList = Arrays.asList(mobiles.split(","));
|
||||||
if (!mobileList.includes(param.getMobile())) {
|
if (!mobileList.includes(param.getMobile())) {
|
||||||
throw new AdminException("手机号错误");
|
throw new AdminException("手机号错误");
|
||||||
}
|
}
|
||||||
@@ -110,14 +110,14 @@ export class NuiSmsServiceImplService {
|
|||||||
const newPassword: string = null;
|
const newPassword: string = null;
|
||||||
try {
|
try {
|
||||||
const resetPasswordUrl: string = String.format(RESET_PASSWORD_URL, param.getUsername());
|
const resetPasswordUrl: string = String.format(RESET_PASSWORD_URL, param.getUsername());
|
||||||
const resetPasswordBody: Record<string, any> = {};
|
const resetPasswordBody: Record<String, String> = {};
|
||||||
resetPasswordBody.put("mobile", param.getMobile());
|
resetPasswordBody.put("mobile", param.getMobile());
|
||||||
resetPasswordBody.put("code", param.getCode());
|
resetPasswordBody.put("code", param.getCode());
|
||||||
resetPasswordBody.put("key", param.getKey());
|
resetPasswordBody.put("key", param.getKey());
|
||||||
const resetPasswordJson: Record<string, any> = NiucloudUtils.Niucloud.put(resetPasswordUrl, resetPasswordBody);
|
const resetPasswordJson: Record<string, any> = NiucloudUtils.Niucloud.put(resetPasswordUrl, resetPasswordBody);
|
||||||
const resetPasswordDataJson: Record<string, any> = resetPasswordJson.getJSONObject("data");
|
const resetPasswordDataJson: Record<string, any> = resetPasswordJson.getJSONObject("data");
|
||||||
newPassword = resetPasswordDataJson.getStr("newPassword");
|
newPassword = resetPasswordDataJson.getStr("newPassword");
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("重置密码失败异常信息:{}", e.message);
|
log.error("重置密码失败异常信息:{}", e.message);
|
||||||
throw new AdminException("重置密码失败");
|
throw new AdminException("重置密码失败");
|
||||||
}
|
}
|
||||||
@@ -143,13 +143,13 @@ export class NuiSmsServiceImplService {
|
|||||||
// 获取配置
|
// 获取配置
|
||||||
const nyConfig: Record<string, any> = getConfig(false);
|
const nyConfig: Record<string, any> = getConfig(false);
|
||||||
if (result != null && nyConfig != null && nyConfig.containsKey("username")) {
|
if (result != null && nyConfig != null && nyConfig.containsKey("username")) {
|
||||||
if (nyConfig.getStr("username") === result.getStr("username")) {
|
if (nyConfig.getStr("username").equals(result.getStr("username"))) {
|
||||||
result.set("signature", nyConfig.getOrDefault("signature", "").toString().trim());
|
result.set("signature", nyConfig.getOrDefault("signature", "").toString().trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (JSONException e) {
|
} catch (e) {
|
||||||
log.error("获取用户信息失败异常信息:{}", e.message);
|
log.error("获取用户信息失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取用户信息失败");
|
throw new AdminException("获取用户信息失败");
|
||||||
}
|
}
|
||||||
@@ -161,15 +161,15 @@ export class NuiSmsServiceImplService {
|
|||||||
async getTemplateList(...args: any[]): Promise<any> {
|
async getTemplateList(...args: any[]): Promise<any> {
|
||||||
const config: Record<string, any> = getConfig(false);
|
const config: Record<string, any> = getConfig(false);
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
if (ObjectUtil.isEmpty(config) || !config.getOrDefault("username", "") === username) {
|
if (!config || !config.getOrDefault("username", "").equals(username)) {
|
||||||
throw new ApiException("牛云短信账号异常,请重新登录账号");
|
throw new ApiException("牛云短信账号异常,请重新登录账号");
|
||||||
}
|
}
|
||||||
const list: SysNotice[] = sysNoticeMapper.selectList(new QueryWrapper<SysNotice>().eq("site_id", siteId));
|
SysNotice[] list = this.sysNoticeRepository.find(new ().eq("site_id", siteId));
|
||||||
const map: Record<string, any> = {};
|
const map: Record<String, SysNotice> = new HashRecord<>();
|
||||||
if (!CollectionUtils.isEmpty(list)) {
|
if (!CollectionUtils.isEmpty(list)) {
|
||||||
map = list.stream().collect(Collectors.toMap(SysNotice::getKey, item => item));
|
map = list.collect(Collectors.toMap(SysNotice::getKey, item => item));
|
||||||
}
|
}
|
||||||
const notice: TemplateListVo[] = [];
|
TemplateListVo[] notice = [];
|
||||||
for (Map.Entry<String, NoticeEnumListVo> noticeMap : NoticeEnum.getNiuyunNotice().entrySet()) {
|
for (Map.Entry<String, NoticeEnumListVo> noticeMap : NoticeEnum.getNiuyunNotice().entrySet()) {
|
||||||
const noticeInfoVo: TemplateListVo = new TemplateListVo();
|
const noticeInfoVo: TemplateListVo = new TemplateListVo();
|
||||||
BeanUtil.copyProperties(noticeMap.getValue(), noticeInfoVo);
|
BeanUtil.copyProperties(noticeMap.getValue(), noticeInfoVo);
|
||||||
@@ -177,7 +177,7 @@ export class NuiSmsServiceImplService {
|
|||||||
BeanUtil.copyProperties(map.get(noticeMap.getKey()), noticeInfoVo);
|
BeanUtil.copyProperties(map.get(noticeMap.getKey()), noticeInfoVo);
|
||||||
}
|
}
|
||||||
//针对短信,微信公众号,小程序配置
|
//针对短信,微信公众号,小程序配置
|
||||||
if (ObjectUtil.isNotEmpty(noticeMap.getValue().getSupport_type_map())) {
|
if (!!noticeMap.getValue(.getSupport_type_map())) {
|
||||||
for (Map.Entry<String, Record<string, any>> supportTypeMap : noticeMap.getValue().getSupport_type_map().entrySet()) {
|
for (Map.Entry<String, Record<string, any>> supportTypeMap : noticeMap.getValue().getSupport_type_map().entrySet()) {
|
||||||
if (supportTypeMap.getKey() === "sms") {
|
if (supportTypeMap.getKey() === "sms") {
|
||||||
noticeInfoVo.setSms(supportTypeMap.getValue());
|
noticeInfoVo.setSms(supportTypeMap.getValue());
|
||||||
@@ -191,43 +191,43 @@ export class NuiSmsServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
notice.add(noticeInfoVo);
|
notice.push(noticeInfoVo);
|
||||||
}
|
}
|
||||||
const niuSmsTemplates: NiuSmsTemplate[] = niuSmsTemplateMapper.selectList(new QueryWrapper<NiuSmsTemplate>()
|
NiuSmsTemplate[] niuSmsTemplates = this.niuSmsTemplateRepository.find(new ()
|
||||||
.eq("sms_type", smsType)
|
.eq("sms_type", smsType)
|
||||||
.eq("username", username)
|
.eq("username", username)
|
||||||
.eq("site_id", siteId));
|
.eq("site_id", siteId));
|
||||||
const templateMap: Record<string, any> = {};
|
const templateMap: Record<String, NiuSmsTemplate> = new HashRecord<>();
|
||||||
if (!CollectionUtils.isEmpty(niuSmsTemplates)){
|
if (!CollectionUtils.isEmpty(niuSmsTemplates)){
|
||||||
templateMap = niuSmsTemplates.stream().collect(Collectors.toMap(NiuSmsTemplate::getTemplateKey, item => item));
|
templateMap = niuSmsTemplates.collect(Collectors.toMap(NiuSmsTemplate::getTemplateKey, item => item));
|
||||||
}
|
}
|
||||||
const addonList: Addon[] = coreSiteService.getSiteAddons(siteId);
|
Addon[] addonList = coreSiteService.getSiteAddons(siteId);
|
||||||
const sys: Addon = new Addon();
|
const sys: Addon = new Addon();
|
||||||
sys.setKey("system");
|
sys.setKey("system");
|
||||||
addonList.add(0, sys);
|
addonList.push(0, sys);
|
||||||
const result: TemplateListVo[] = [];
|
TemplateListVo[] result = [];
|
||||||
for (const addon of addonList) {
|
for (const addon of addonList) {
|
||||||
for (const noticeInfoVo of notice) {
|
for (const noticeInfoVo of notice) {
|
||||||
if (addon.getKey() === noticeInfoVo.getAddon()) {
|
if (addon.getKey() === noticeInfoVo.getAddon()) {
|
||||||
if ("system" === noticeInfoVo.getAddon()) {
|
if ("system".equals(noticeInfoVo.getAddon())) {
|
||||||
noticeInfoVo.setAddon("系统");
|
noticeInfoVo.setAddon("系统");
|
||||||
}
|
}
|
||||||
const auditInfo: Record<string, any> = new Record<string, any>();
|
const auditInfo: Record<string, any> = new Record<string, any>();
|
||||||
auditInfo.set("audit_msg", templateMap.containsKey(noticeInfoVo.getKey()) ? templateMap.get(noticeInfoVo.getKey()).getAuditMsg() : "");
|
auditInfo.set("audit_msg", templateMap.containsKey(noticeInfoVo.getKey()) ? templateMap.get(noticeInfoVo.getKey()).getAuditMsg() : "");
|
||||||
auditInfo.set("audit_status", templateMap.containsKey(noticeInfoVo.getKey()) ? templateMap.get(noticeInfoVo.getKey()).getAuditStatus() : TemplateAuditStatus.TEMPLATE_NOT_REPORT.getCode());
|
auditInfo.set("audit_status", templateMap.containsKey(noticeInfoVo.getKey()) ? templateMap.get(noticeInfoVo.getKey()).getAuditStatus() : TemplateAuditStatus.TEMPLATE_NOT_REPORT.getCode());
|
||||||
auditInfo.set("audit_status_name", TemplateAuditStatus.getByCode(auditInfo.getInt("audit_status")).getDescription());
|
auditInfo.set("audit_status_name", TemplateAuditStatus.getByCode(auditInfo.getInt("audit_status")).getDescription());
|
||||||
const paramsJson: string[] = [];
|
String[] paramsJson = [];
|
||||||
if (templateMap.containsKey(noticeInfoVo.getKey())){
|
if (templateMap.containsKey(noticeInfoVo.getKey())){
|
||||||
const paramJson: string = templateMap.get(noticeInfoVo.getKey()).getParamJson();
|
const paramJson: string = templateMap.get(noticeInfoVo.getKey()).getParamJson();
|
||||||
if (ObjectUtil.isNotEmpty(paramJson)){
|
if (!!paramJson){
|
||||||
const jsonObject: Record<string, any> = JSONUtil.parseObj(paramJson);
|
const jsonObject: Record<string, any> = JSON.parse(paramJson);
|
||||||
paramsJson.addAll(jsonObject.keySet());
|
paramsJson.addAll(jsonObject.keySet());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Collections.sort(paramsJson);
|
Collections.sort(paramsJson);
|
||||||
|
|
||||||
const variable: string[] = [];
|
String[] variable = [];
|
||||||
if (ObjectUtil.isNotEmpty(noticeInfoVo.getVariable())) {
|
if (!!noticeInfoVo.getVariable()) {
|
||||||
variable.addAll(noticeInfoVo.getVariable().keySet());
|
variable.addAll(noticeInfoVo.getVariable().keySet());
|
||||||
}
|
}
|
||||||
Collections.sort(variable);
|
Collections.sort(variable);
|
||||||
@@ -236,11 +236,11 @@ export class NuiSmsServiceImplService {
|
|||||||
// 比较两个键列表
|
// 比较两个键列表
|
||||||
if (templateMap.containsKey(noticeInfoVo.getKey()) && variable !== paramsJson) {
|
if (templateMap.containsKey(noticeInfoVo.getKey()) && variable !== paramsJson) {
|
||||||
if (paramsJson.length === 0) {
|
if (paramsJson.length === 0) {
|
||||||
errorStatus = String.valueOf(TemplateAuditStatus.TEMPLATE_NEED_PULL.getCode());
|
errorStatus = String(TemplateAuditStatus.TEMPLATE_NEED_PULL.getCode());
|
||||||
} else {
|
} else {
|
||||||
errorStatus = auditInfo.getInt("audit_status") == TemplateAuditStatus.TEMPLATE_PASS.getCode()
|
errorStatus = auditInfo.getInt("audit_status") == TemplateAuditStatus.TEMPLATE_PASS.getCode()
|
||||||
? String.valueOf(TemplateAuditStatus.TEMPLATE_STATUS_AGAIN_REPORT.getCode())
|
? String(TemplateAuditStatus.TEMPLATE_STATUS_AGAIN_REPORT.getCode())
|
||||||
: String.valueOf(TemplateAuditStatus.TEMPLATE_NEED_EDIT.getCode());
|
: String(TemplateAuditStatus.TEMPLATE_NEED_EDIT.getCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
auditInfo.set("error_status", errorStatus);
|
auditInfo.set("error_status", errorStatus);
|
||||||
@@ -252,14 +252,14 @@ export class NuiSmsServiceImplService {
|
|||||||
noticeInfoVo.setAuditInfo(auditInfo);
|
noticeInfoVo.setAuditInfo(auditInfo);
|
||||||
if (templateMap.containsKey(noticeInfoVo.getKey())){
|
if (templateMap.containsKey(noticeInfoVo.getKey())){
|
||||||
const niuSmsTemplate: NiuSmsTemplate = templateMap.get(noticeInfoVo.getKey());
|
const niuSmsTemplate: NiuSmsTemplate = templateMap.get(noticeInfoVo.getKey());
|
||||||
if ((niuSmsTemplate.getTemplateType( && niuSmsTemplate.getTemplateType(.trim() !== ''))){
|
if (StringUtils.isNotEmpty(niuSmsTemplate.getTemplateType())){
|
||||||
noticeInfoVo.setTemplateTypeName(TemplateTypeEnum.fromCode(number.parseInt(niuSmsTemplate.getTemplateType())).getDescription());
|
noticeInfoVo.setTemplateTypeName(TemplateTypeEnum.fromCode(number.parseInt(niuSmsTemplate.getTemplateType())).getDescription());
|
||||||
}else {
|
}else {
|
||||||
noticeInfoVo.setTemplateTypeName("");
|
noticeInfoVo.setTemplateTypeName("");
|
||||||
}
|
}
|
||||||
noticeInfoVo.setTemplateId(number.parseInt(niuSmsTemplate.getTemplateId()));
|
noticeInfoVo.setTemplateId(number.parseInt(niuSmsTemplate.getTemplateId()));
|
||||||
}
|
}
|
||||||
result.add(noticeInfoVo);
|
result.push(noticeInfoVo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -273,7 +273,7 @@ export class NuiSmsServiceImplService {
|
|||||||
const orderListUrl: string = String.format(ORDER_LIST_URL, username);
|
const orderListUrl: string = String.format(ORDER_LIST_URL, username);
|
||||||
const result: Record<string, any> = null;
|
const result: Record<string, any> = null;
|
||||||
try {
|
try {
|
||||||
const orderListParam: Record<string, any> = {};
|
const orderListParam: Record<String, Object> = {};
|
||||||
orderListParam.put("out_trade_no", param.getOutTradeNo());
|
orderListParam.put("out_trade_no", param.getOutTradeNo());
|
||||||
orderListParam.put("order_status", param.getStatus());
|
orderListParam.put("order_status", param.getStatus());
|
||||||
orderListParam.put("create_time_start", param.getCreateTimeStart());
|
orderListParam.put("create_time_start", param.getCreateTimeStart());
|
||||||
@@ -284,7 +284,7 @@ export class NuiSmsServiceImplService {
|
|||||||
result = jsonObject.getJSONObject("data");
|
result = jsonObject.getJSONObject("data");
|
||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取订单列表失败异常信息:{}", e.message);
|
log.error("获取订单列表失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取订单列表失败");
|
throw new AdminException("获取订单列表失败");
|
||||||
}
|
}
|
||||||
@@ -296,7 +296,7 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async accountSendList(...args: any[]): Promise<number> {
|
async accountSendList(...args: any[]): Promise<number> {
|
||||||
const accountSendUrl: string = String.format(ACCOUNT_SEND_LIST_URL, username);
|
const accountSendUrl: string = String.format(ACCOUNT_SEND_LIST_URL, username);
|
||||||
const accountSendParam: Record<string, any> = {};
|
const accountSendParam: Record<String, Object> = {};
|
||||||
accountSendParam.put("mobile", param.getMobile());
|
accountSendParam.put("mobile", param.getMobile());
|
||||||
accountSendParam.put("content", param.getContent());
|
accountSendParam.put("content", param.getContent());
|
||||||
accountSendParam.put("smsStatus", param.getSmsStatus());
|
accountSendParam.put("smsStatus", param.getSmsStatus());
|
||||||
@@ -308,7 +308,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取发送列表失败异常信息:{}", e.message);
|
log.error("获取发送列表失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取发送列表失败");
|
throw new AdminException("获取发送列表失败");
|
||||||
}
|
}
|
||||||
@@ -321,7 +321,7 @@ export class NuiSmsServiceImplService {
|
|||||||
const registerAccountParam: RegisterAccountParam = new RegisterAccountParam();
|
const registerAccountParam: RegisterAccountParam = new RegisterAccountParam();
|
||||||
if (isEnable == 1) {
|
if (isEnable == 1) {
|
||||||
const config: Record<string, any> = getConfig(true);
|
const config: Record<string, any> = getConfig(true);
|
||||||
if (ObjectUtil.isEmpty(config) ||
|
if (!config ||
|
||||||
!config.containsKey(NIUYUN) ||
|
!config.containsKey(NIUYUN) ||
|
||||||
(config.getJSONObject(NIUYUN)).get("username") == null ||
|
(config.getJSONObject(NIUYUN)).get("username") == null ||
|
||||||
(config.getJSONObject(NIUYUN)).get("username").toString().isEmpty() ||
|
(config.getJSONObject(NIUYUN)).get("username").toString().isEmpty() ||
|
||||||
@@ -344,7 +344,7 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async editAccount(...args: any[]): Promise<number> {
|
async editAccount(...args: any[]): Promise<number> {
|
||||||
const editAccountUrl: string = String.format(ACCOUNT_EDIT_URL, username);
|
const editAccountUrl: string = String.format(ACCOUNT_EDIT_URL, username);
|
||||||
const editAccountBody: Record<string, any> = {};
|
const editAccountBody: Record<String, Object> = {};
|
||||||
editAccountBody.put("new_mobile", param.getNewMobile());
|
editAccountBody.put("new_mobile", param.getNewMobile());
|
||||||
editAccountBody.put("mobile", param.getMobile());
|
editAccountBody.put("mobile", param.getMobile());
|
||||||
editAccountBody.put("code", param.getCode());
|
editAccountBody.put("code", param.getCode());
|
||||||
@@ -357,7 +357,7 @@ export class NuiSmsServiceImplService {
|
|||||||
setConfig(registerAccountParam);
|
setConfig(registerAccountParam);
|
||||||
JacksonUtils.removeNull(jsonObject);
|
JacksonUtils.removeNull(jsonObject);
|
||||||
return jsonObject;
|
return jsonObject;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("修改账号信息失败异常信息:{}", e.message);
|
log.error("修改账号信息失败异常信息:{}", e.message);
|
||||||
throw new AdminException("修改账号信息失败");
|
throw new AdminException("修改账号信息失败");
|
||||||
}
|
}
|
||||||
@@ -370,12 +370,12 @@ export class NuiSmsServiceImplService {
|
|||||||
const config: Record<string, any> = getConfig(false);
|
const config: Record<string, any> = getConfig(false);
|
||||||
param.setPassword(config.getStr("password"));
|
param.setPassword(config.getStr("password"));
|
||||||
try {
|
try {
|
||||||
const failList: any[] = delSign(username, param);
|
Object[] failList = delSign(username, param);
|
||||||
|
|
||||||
const configSignature: string = config.getStr("signature");
|
const configSignature: string = config.getStr("signature");
|
||||||
const signatures: string[] = param.getSignatures();
|
String[] signatures = param.getSignatures();
|
||||||
|
|
||||||
if (signatures != null && failList.length !== 0 &&
|
if (signatures != null && failList.length > 0 &&
|
||||||
signatures.includes(configSignature) &&
|
signatures.includes(configSignature) &&
|
||||||
!failList.includes(configSignature)) {
|
!failList.includes(configSignature)) {
|
||||||
// 如果满足条件,则清空账户的签名
|
// 如果满足条件,则清空账户的签名
|
||||||
@@ -384,7 +384,7 @@ export class NuiSmsServiceImplService {
|
|||||||
editAccount(username, editAccountParam);
|
editAccount(username, editAccountParam);
|
||||||
}
|
}
|
||||||
return failList;
|
return failList;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("删除签名失败异常信息:{}", e.message);
|
log.error("删除签名失败异常信息:{}", e.message);
|
||||||
throw new AdminException("删除签名失败异常");
|
throw new AdminException("删除签名失败异常");
|
||||||
}
|
}
|
||||||
@@ -394,8 +394,8 @@ export class NuiSmsServiceImplService {
|
|||||||
* signCreate
|
* signCreate
|
||||||
*/
|
*/
|
||||||
async signCreate(...args: any[]): Promise<any> {
|
async signCreate(...args: any[]): Promise<any> {
|
||||||
if (ObjectUtil.isNotEmpty(param.getImgUrl())) {
|
if (!!param.getImgUrl()) {
|
||||||
param.setImgUrl(Paths.get(RequestUtils.getReqeustURI(), param.getImgUrl()).toString());
|
param.setImgUrl(path.join(RequestUtils.getReqeustURI(), param.getImgUrl()).toString());
|
||||||
}
|
}
|
||||||
const signCreateUrl: string = String.format(SIGN_ADD_URL, username);
|
const signCreateUrl: string = String.format(SIGN_ADD_URL, username);
|
||||||
try {
|
try {
|
||||||
@@ -405,7 +405,7 @@ export class NuiSmsServiceImplService {
|
|||||||
const failList: JSONArray = data.getJSONArray("failList");
|
const failList: JSONArray = data.getJSONArray("failList");
|
||||||
throw new ApiException(failList.getJSONObject(0).getStr("msg"));
|
throw new ApiException(failList.getJSONObject(0).getStr("msg"));
|
||||||
}
|
}
|
||||||
} catch (ApiException e) {
|
} catch (e) {
|
||||||
log.error("创建签名失败异常信息:{}", e.message);
|
log.error("创建签名失败异常信息:{}", e.message);
|
||||||
throw new AdminException("创建签名失败");
|
throw new AdminException("创建签名失败");
|
||||||
}
|
}
|
||||||
@@ -415,7 +415,7 @@ export class NuiSmsServiceImplService {
|
|||||||
* getSmsPackageList
|
* getSmsPackageList
|
||||||
*/
|
*/
|
||||||
async getSmsPackageList(...args: any[]): Promise<any> {
|
async getSmsPackageList(...args: any[]): Promise<any> {
|
||||||
const pageListParam: Record<string, any> = {};
|
const pageListParam: Record<String, Object> = {};
|
||||||
pageListParam.put("package_name", param.getPackageName());
|
pageListParam.put("package_name", param.getPackageName());
|
||||||
pageListParam.put("sms_num", param.getSmsNum());
|
pageListParam.put("sms_num", param.getSmsNum());
|
||||||
pageListParam.put("price_start", param.getPriceStart());
|
pageListParam.put("price_start", param.getPriceStart());
|
||||||
@@ -432,7 +432,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取套餐列表失败异常信息:{}", e.message);
|
log.error("获取套餐列表失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取套餐列表失败");
|
throw new AdminException("获取套餐列表失败");
|
||||||
}
|
}
|
||||||
@@ -443,7 +443,7 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async orderCalculate(...args: any[]): Promise<any> {
|
async orderCalculate(...args: any[]): Promise<any> {
|
||||||
const orderCalculateUrl: string = String.format(ORDER_CALCULATE_URL, username);
|
const orderCalculateUrl: string = String.format(ORDER_CALCULATE_URL, username);
|
||||||
const orderCalculateBody: Record<string, any> = {};
|
const orderCalculateBody: Record<String, Object> = {};
|
||||||
orderCalculateBody.put("package_id", param.getPackageId());
|
orderCalculateBody.put("package_id", param.getPackageId());
|
||||||
try {
|
try {
|
||||||
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.post(orderCalculateUrl, orderCalculateBody);
|
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.post(orderCalculateUrl, orderCalculateBody);
|
||||||
@@ -451,7 +451,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("计算订单失败异常信息:{}", e.message);
|
log.error("计算订单失败异常信息:{}", e.message);
|
||||||
throw new AdminException("计算订单失败");
|
throw new AdminException("计算订单失败");
|
||||||
}
|
}
|
||||||
@@ -462,7 +462,7 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async createOrder(...args: any[]): Promise<any> {
|
async createOrder(...args: any[]): Promise<any> {
|
||||||
const orderCreateUrl: string = String.format(ORDER_CREATE_URL, username);
|
const orderCreateUrl: string = String.format(ORDER_CREATE_URL, username);
|
||||||
const orderCreateBody: Record<string, any> = {};
|
const orderCreateBody: Record<String, Object> = {};
|
||||||
orderCreateBody.put("package_id", param.getPackageId());
|
orderCreateBody.put("package_id", param.getPackageId());
|
||||||
try {
|
try {
|
||||||
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.post(orderCreateUrl, orderCreateBody);
|
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.post(orderCreateUrl, orderCreateBody);
|
||||||
@@ -470,7 +470,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("创建订单失败异常信息:{}", e.message);
|
log.error("创建订单失败异常信息:{}", e.message);
|
||||||
throw new AdminException("创建订单失败");
|
throw new AdminException("创建订单失败");
|
||||||
}
|
}
|
||||||
@@ -490,7 +490,7 @@ export class NuiSmsServiceImplService {
|
|||||||
}
|
}
|
||||||
const returnUrl: string = String.format("%s://%s/site/setting/sms/pay", protocol, host);
|
const returnUrl: string = String.format("%s://%s/site/setting/sms/pay", protocol, host);
|
||||||
const payInfoUrl: string = String.format(ORDER_PAY_URL, username);
|
const payInfoUrl: string = String.format(ORDER_PAY_URL, username);
|
||||||
const payInfoBody: Record<string, any> = {};
|
const payInfoBody: Record<String, Object> = {};
|
||||||
payInfoBody.put("notify_url", payInfoUrl);
|
payInfoBody.put("notify_url", payInfoUrl);
|
||||||
payInfoBody.put("return_url", returnUrl);
|
payInfoBody.put("return_url", returnUrl);
|
||||||
payInfoBody.put("out_trade_no", outTradeNo);
|
payInfoBody.put("out_trade_no", outTradeNo);
|
||||||
@@ -500,7 +500,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取支付信息失败异常信息:{}", e.message);
|
log.error("获取支付信息失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取支付信息失败");
|
throw new AdminException("获取支付信息失败");
|
||||||
}
|
}
|
||||||
@@ -517,7 +517,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取订单信息失败异常信息:{}", e.message);
|
log.error("获取订单信息失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取订单信息失败");
|
throw new AdminException("获取订单信息失败");
|
||||||
}
|
}
|
||||||
@@ -534,7 +534,7 @@ export class NuiSmsServiceImplService {
|
|||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取订单状态失败异常信息:{}", e.message);
|
log.error("获取订单状态失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取订单状态失败");
|
throw new AdminException("获取订单状态失败");
|
||||||
}
|
}
|
||||||
@@ -545,21 +545,21 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async templateCreate(...args: any[]): Promise<any> {
|
async templateCreate(...args: any[]): Promise<any> {
|
||||||
const templateKey: string = param.getTemplateKey();
|
const templateKey: string = param.getTemplateKey();
|
||||||
const templateList: TemplateListVo[] = getTemplateList(smsType, username);
|
TemplateListVo[] templateList = getTemplateList(smsType, username);
|
||||||
|
|
||||||
// 查找模版信息,如果不存在则抛出异常
|
// 查找模版信息,如果不存在则抛出异常
|
||||||
const templateInfo: TemplateListVo = templateList.stream()
|
const templateInfo: TemplateListVo = templateList
|
||||||
.filter(item => item.getKey() === templateKey)
|
.filter(item => item.getKey() === templateKey)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseThrow(() => new AdminException("当前模版未配置短信内容"));
|
.orElseThrow(() => new AdminException("当前模版未配置短信内容"));
|
||||||
|
|
||||||
// 检查模版是否配置了短信内容,如果未配置则抛出异常
|
// 检查模版是否配置了短信内容,如果未配置则抛出异常
|
||||||
if (ObjectUtil.isEmpty(templateInfo.getSms()) || ObjectUtil.isEmpty(templateInfo.getSms().get("content"))) {
|
if (!templateInfo.getSms() || !templateInfo.getSms(.get("content"))) {
|
||||||
throw new AdminException("当前模版未配置短信内容");
|
throw new AdminException("当前模版未配置短信内容");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查模版是否已经审核通过,如果已通过则抛出异常
|
// 检查模版是否已经审核通过,如果已通过则抛出异常
|
||||||
const modelInfo: NiuSmsTemplate[] = niuSmsTemplateMapper.selectList(new QueryWrapper<NiuSmsTemplate>()
|
NiuSmsTemplate[] modelInfo = this.niuSmsTemplateRepository.find(new ()
|
||||||
.eq("template_key", templateKey)
|
.eq("template_key", templateKey)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("username", username));
|
.eq("username", username));
|
||||||
@@ -569,7 +569,7 @@ export class NuiSmsServiceImplService {
|
|||||||
|
|
||||||
const config: Record<string, any> = getConfig(false);
|
const config: Record<string, any> = getConfig(false);
|
||||||
const templateCreateUrl: string = String.format(TEMPLATE_ADD_URL, username);
|
const templateCreateUrl: string = String.format(TEMPLATE_ADD_URL, username);
|
||||||
const templateCreateBody: Record<string, any> = {};
|
const templateCreateBody: Record<String, Object> = {};
|
||||||
templateCreateBody.put("temName", path.basename(templateInfo));
|
templateCreateBody.put("temName", path.basename(templateInfo));
|
||||||
templateCreateBody.put("temType", param.getTemplateType());
|
templateCreateBody.put("temType", param.getTemplateType());
|
||||||
templateCreateBody.put("temContent", templateInfo.getSms().get("content"));
|
templateCreateBody.put("temContent", templateInfo.getSms().get("content"));
|
||||||
@@ -583,7 +583,7 @@ export class NuiSmsServiceImplService {
|
|||||||
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.post(templateCreateUrl, templateCreateBody);
|
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.post(templateCreateUrl, templateCreateBody);
|
||||||
result = jsonObject.getJSONObject("data");
|
result = jsonObject.getJSONObject("data");
|
||||||
JacksonUtils.removeNull(result); // 删除null值,防止序列化报错
|
JacksonUtils.removeNull(result); // 删除null值,防止序列化报错
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("创建模版失败异常信息:{},", e.message);
|
log.error("创建模版失败异常信息:{},", e.message);
|
||||||
throw new AdminException("创建模版失败");
|
throw new AdminException("创建模版失败");
|
||||||
}
|
}
|
||||||
@@ -599,17 +599,17 @@ export class NuiSmsServiceImplService {
|
|||||||
niuSmsTemplate.setTemplateKey(templateKey);
|
niuSmsTemplate.setTemplateKey(templateKey);
|
||||||
niuSmsTemplate.setAuditStatus(TemplateAuditStatus.TEMPLATE_WAIT.getCode().toString());
|
niuSmsTemplate.setAuditStatus(TemplateAuditStatus.TEMPLATE_WAIT.getCode().toString());
|
||||||
niuSmsTemplate.setTemplateId(temId.toString());
|
niuSmsTemplate.setTemplateId(temId.toString());
|
||||||
niuSmsTemplate.setReportInfo(JSONUtil.toJsonStr(result));
|
niuSmsTemplate.setReportInfo(JSON.stringify(result));
|
||||||
niuSmsTemplate.setCreateTime(System.currentTimeMillis() / 1000);
|
niuSmsTemplate.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
niuSmsTemplate.setUpdateTime(System.currentTimeMillis() / 1000);
|
niuSmsTemplate.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
niuSmsTemplateMapper.insert(niuSmsTemplate);
|
this.niuSmsTemplateRepository.save(niuSmsTemplate);
|
||||||
} else {
|
} else {
|
||||||
const niuSmsTemplate: NiuSmsTemplate = modelInfo.get(0);
|
const niuSmsTemplate: NiuSmsTemplate = modelInfo.get(0);
|
||||||
niuSmsTemplate.setAuditStatus(TemplateAuditStatus.TEMPLATE_WAIT.getCode().toString());
|
niuSmsTemplate.setAuditStatus(TemplateAuditStatus.TEMPLATE_WAIT.getCode().toString());
|
||||||
niuSmsTemplate.setTemplateId(temId.toString());
|
niuSmsTemplate.setTemplateId(temId.toString());
|
||||||
niuSmsTemplate.setReportInfo(JSONUtil.toJsonStr(result));
|
niuSmsTemplate.setReportInfo(JSON.stringify(result));
|
||||||
niuSmsTemplate.setUpdateTime(System.currentTimeMillis() / 1000);
|
niuSmsTemplate.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
niuSmsTemplateMapper.updateById(niuSmsTemplate);
|
this.niuSmsTemplateRepository.save(niuSmsTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result != null ? result : new Record<string, any>();
|
return result != null ? result : new Record<string, any>();
|
||||||
@@ -620,7 +620,7 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async templateDelete(...args: any[]): Promise<any> {
|
async templateDelete(...args: any[]): Promise<any> {
|
||||||
const config: Record<string, any> = getConfig(false);
|
const config: Record<string, any> = getConfig(false);
|
||||||
const deleteBody: Record<string, any> = {};
|
const deleteBody: Record<String, Object> = new HashRecord<>();
|
||||||
const time: number = DateUtil.currentSeconds();
|
const time: number = DateUtil.currentSeconds();
|
||||||
deleteBody.put("tKey", time);
|
deleteBody.put("tKey", time);
|
||||||
deleteBody.put("password", DigestUtil.md5Hex(DigestUtil.md5Hex(config.getStr("password")) + time));
|
deleteBody.put("password", DigestUtil.md5Hex(DigestUtil.md5Hex(config.getStr("password")) + time));
|
||||||
@@ -628,8 +628,8 @@ export class NuiSmsServiceImplService {
|
|||||||
deleteBody.put("temId", templateId);
|
deleteBody.put("temId", templateId);
|
||||||
try {
|
try {
|
||||||
sendHttp(TEMPLATE_DELETE, deleteBody);
|
sendHttp(TEMPLATE_DELETE, deleteBody);
|
||||||
niuSmsTemplateMapper.delete(new QueryWrapper<NiuSmsTemplate>().eq("template_id", templateId));
|
this.niuSmsTemplateRepository.delete(new ().eq("template_id", templateId));
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("删除模版失败异常信息:{},", e.message);
|
log.error("删除模版失败异常信息:{},", e.message);
|
||||||
throw new AdminException("删除模版失败");
|
throw new AdminException("删除模版失败");
|
||||||
}
|
}
|
||||||
@@ -639,28 +639,28 @@ export class NuiSmsServiceImplService {
|
|||||||
* templateInfo
|
* templateInfo
|
||||||
*/
|
*/
|
||||||
async templateInfo(...args: any[]): Promise<any> {
|
async templateInfo(...args: any[]): Promise<any> {
|
||||||
const niuSmsTemplate: NiuSmsTemplate = niuSmsTemplateMapper.selectOne(new LambdaQueryWrapper<NiuSmsTemplate>()
|
const niuSmsTemplate: NiuSmsTemplate = this.niuSmsTemplateRepository.findOne(new Lambda()
|
||||||
.eq(NiuSmsTemplate::getSiteId, RequestUtils.siteId())
|
.eq(NiuSmsTemplate::getSiteId, RequestUtils.siteId())
|
||||||
.eq(NiuSmsTemplate::getSmsType, smsType)
|
.eq(NiuSmsTemplate::getSmsType, smsType)
|
||||||
.eq(NiuSmsTemplate::getUsername, username)
|
.eq(NiuSmsTemplate::getUsername, username)
|
||||||
.eq(NiuSmsTemplate::getTemplateKey, templateKey));
|
.eq(NiuSmsTemplate::getTemplateKey, templateKey));
|
||||||
if (ObjectUtil.isEmpty(niuSmsTemplate)){
|
if (!niuSmsTemplate){
|
||||||
throw new AdminException("短信模版暂未报备");
|
throw new AdminException("短信模版暂未报备");
|
||||||
}
|
}
|
||||||
const orderCreateUrl: string = String.format(TEMPLATE_INFO_URL, username);
|
const orderCreateUrl: string = String.format(TEMPLATE_INFO_URL, username);
|
||||||
const templateInfoParam: Record<string, any> = {};
|
const templateInfoParam: Record<String, Object> = {};
|
||||||
templateInfoParam.put("tem_id", niuSmsTemplate.getTemplateId());
|
templateInfoParam.put("tem_id", niuSmsTemplate.getTemplateId());
|
||||||
try {
|
try {
|
||||||
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.get(orderCreateUrl, templateInfoParam);
|
const jsonObject: Record<string, any> = NiucloudUtils.Niucloud.get(orderCreateUrl, templateInfoParam);
|
||||||
const result: Record<string, any> = jsonObject.getJSONObject("data");
|
const result: Record<string, any> = jsonObject.getJSONObject("data");
|
||||||
//删除null值 防止序列化报错
|
//删除null值 防止序列化报错
|
||||||
JacksonUtils.removeNull(result);
|
JacksonUtils.removeNull(result);
|
||||||
const auditStatus: string = result.containsKey("auditResult") && ObjectUtil.isNotEmpty(result.getJSONObject("auditResult"))
|
const auditStatus: string = result.containsKey("auditResult") && !!result.getJSONObject("auditResult")
|
||||||
? result.getStr("auditResult") : niuSmsTemplate.getAuditStatus();
|
? result.getStr("auditResult") : niuSmsTemplate.getAuditStatus();
|
||||||
niuSmsTemplate.setAuditStatus(auditStatus);
|
niuSmsTemplate.setAuditStatus(auditStatus);
|
||||||
niuSmsTemplateMapper.updateById(niuSmsTemplate);
|
this.niuSmsTemplateRepository.save(niuSmsTemplate);
|
||||||
return niuSmsTemplate;
|
return niuSmsTemplate;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("获取模版信息失败异常信息:{}", e.message);
|
log.error("获取模版信息失败异常信息:{}", e.message);
|
||||||
throw new AdminException("获取模版信息失败");
|
throw new AdminException("获取模版信息失败");
|
||||||
}
|
}
|
||||||
@@ -670,12 +670,12 @@ export class NuiSmsServiceImplService {
|
|||||||
* sendHttp
|
* sendHttp
|
||||||
*/
|
*/
|
||||||
async sendHttp(...args: any[]): Promise<any> {
|
async sendHttp(...args: any[]): Promise<any> {
|
||||||
const response: HttpResponse = HttpRequest.post(url).body(JSONUtil.toJsonStr(body)).execute();
|
const response: HttpResponse = HttpRequest.post(url).body(JSON.stringify(body)).execute();
|
||||||
if (!response.isOk()) {
|
if (!response.isOk()) {
|
||||||
throw new AdminException("HTTP请求失败,状态码: " + response.getStatus());
|
throw new AdminException("HTTP请求失败,状态码: " + response.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
const resJson: Record<string, any> = JSONUtil.parseObj(response.body());
|
const resJson: Record<string, any> = JSON.parse(response.body());
|
||||||
if (resJson.getInt("code") != 200) {
|
if (resJson.getInt("code") != 200) {
|
||||||
throw new AdminException(resJson.getStr("msg"));
|
throw new AdminException(resJson.getStr("msg"));
|
||||||
}
|
}
|
||||||
@@ -687,12 +687,12 @@ export class NuiSmsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async setConfig(...args: any[]): Promise<any> {
|
async setConfig(...args: any[]): Promise<any> {
|
||||||
const config: Record<string, any> = getConfig(true);
|
const config: Record<string, any> = getConfig(true);
|
||||||
config.put("default", ObjectUtil.isNotEmpty(param.getDefaultVal()) ? param.getDefaultVal() : config.getOrDefault("default", ""));
|
config.put("default", !!param.getDefaultVal() ? param.getDefaultVal() : config.getOrDefault("default", ""));
|
||||||
const niuSmsConfig: Record<string, any> = config.getJSONObject(NIUYUN);
|
const niuSmsConfig: Record<string, any> = config.getJSONObject(NIUYUN);
|
||||||
const newNiuSmsConfig: Record<string, any> = {};
|
const newNiuSmsConfig: Record<String, Object> = {};
|
||||||
newNiuSmsConfig.put("username", ObjectUtil.isNotEmpty(param.getUsername()) ? param.getUsername() : niuSmsConfig != null ? niuSmsConfig.getOrDefault("username", "") : "");
|
newNiuSmsConfig.put("username", !!param.getUsername() ? param.getUsername() : niuSmsConfig != null ? niuSmsConfig.getOrDefault("username", "") : "");
|
||||||
newNiuSmsConfig.put("password", ObjectUtil.isNotEmpty(param.getPassword()) ? param.getPassword() : niuSmsConfig != null ? niuSmsConfig.getOrDefault("password", "") : "");
|
newNiuSmsConfig.put("password", !!param.getPassword() ? param.getPassword() : niuSmsConfig != null ? niuSmsConfig.getOrDefault("password", "") : "");
|
||||||
newNiuSmsConfig.put("signature", ObjectUtil.isNotEmpty(param.getSignature()) ? param.getSignature() : niuSmsConfig != null ? niuSmsConfig.getOrDefault("signature", "") : "");
|
newNiuSmsConfig.put("signature", !!param.getSignature() ? param.getSignature() : niuSmsConfig != null ? niuSmsConfig.getOrDefault("signature", "") : "");
|
||||||
config.put(NIUYUN, newNiuSmsConfig);
|
config.put(NIUYUN, newNiuSmsConfig);
|
||||||
coreConfigService.setConfig(RequestUtils.siteId(), "SMS", config);
|
coreConfigService.setConfig(RequestUtils.siteId(), "SMS", config);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class PayChannelServiceImplService {
|
|||||||
for (const channelKey of param.getConfig().keySet()) {
|
for (const channelKey of param.getConfig().keySet()) {
|
||||||
const channel: Record<string, any> = param.getConfig().getJSONObject(channelKey);
|
const channel: Record<string, any> = param.getConfig().getJSONObject(channelKey);
|
||||||
const payTypeList: JSONArray = channel.getJSONArray("pay_type");
|
const payTypeList: JSONArray = channel.getJSONArray("pay_type");
|
||||||
for (const i of number = 0; i < payTypeList.size(); i++) {
|
for (const i of number = 0; i < payTypeList.length; i++) {
|
||||||
const payType: Record<string, any> = payTypeList.getJSONObject(i);
|
const payType: Record<string, any> = payTypeList.getJSONObject(i);
|
||||||
set(channel.getStr("key"), payType.getStr("key"), payType);
|
set(channel.getStr("key"), payType.getStr("key"), payType);
|
||||||
}
|
}
|
||||||
@@ -27,14 +27,14 @@ export class PayChannelServiceImplService {
|
|||||||
* set
|
* set
|
||||||
*/
|
*/
|
||||||
async set(...args: any[]): Promise<any> {
|
async set(...args: any[]): Promise<any> {
|
||||||
const payChannel: PayChannel = payChannelMapper.selectOne(new QueryWrapper<PayChannel>()
|
const payChannel: PayChannel = this.payChannelRepository.findOne(new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("channel", channel)
|
.eq("channel", channel)
|
||||||
.eq("type", type)
|
.eq("type", type)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(payChannel)) {
|
if (!!payChannel) {
|
||||||
const config: Record<string, any> = JSONUtil.parseObj(payChannel.getConfig());
|
const config: Record<string, any> = JSON.parse(payChannel.getConfig());
|
||||||
for (const key of data.getJSONObject("config").keySet()) {
|
for (const key of data.getJSONObject("config").keySet()) {
|
||||||
const value: string = data.getJSONObject("config").getStr(key, "");
|
const value: string = data.getJSONObject("config").getStr(key, "");
|
||||||
if (!value.includes("*")) config.set(key, value);
|
if (!value.includes("*")) config.set(key, value);
|
||||||
@@ -42,7 +42,7 @@ export class PayChannelServiceImplService {
|
|||||||
payChannel.setConfig(config.toString());
|
payChannel.setConfig(config.toString());
|
||||||
payChannel.setSort(data.getInt("sort"));
|
payChannel.setSort(data.getInt("sort"));
|
||||||
payChannel.setStatus(data.getInt("status"));
|
payChannel.setStatus(data.getInt("status"));
|
||||||
payChannelMapper.updateById(payChannel);
|
this.payChannelRepository.save(payChannel);
|
||||||
} else {
|
} else {
|
||||||
const model: PayChannel = new PayChannel();
|
const model: PayChannel = new PayChannel();
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
@@ -51,7 +51,7 @@ export class PayChannelServiceImplService {
|
|||||||
model.setConfig(data.getJSONObject("config").toString());
|
model.setConfig(data.getJSONObject("config").toString());
|
||||||
model.setSort(data.getInt("sort"));
|
model.setSort(data.getInt("sort"));
|
||||||
model.setStatus(data.getInt("status"));
|
model.setStatus(data.getInt("status"));
|
||||||
payChannelMapper.insert(model);
|
this.payChannelRepository.save(model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,17 +59,17 @@ export class PayChannelServiceImplService {
|
|||||||
* getListByChannel
|
* getListByChannel
|
||||||
*/
|
*/
|
||||||
async getListByChannel(...args: any[]): Promise<any> {
|
async getListByChannel(...args: any[]): Promise<any> {
|
||||||
const payChannel: PayChannel[] = payChannelMapper.selectList(new QueryWrapper<PayChannel>()
|
PayChannel[] payChannel = this.payChannelRepository.find(new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("channel", channel)
|
.eq("channel", channel)
|
||||||
);
|
);
|
||||||
|
|
||||||
const list: PayChannelListVo[] = [];
|
PayChannelListVo[] list = [];
|
||||||
for (const item of payChannel) {
|
for (const item of payChannel) {
|
||||||
const vo: PayChannelListVo = new PayChannelListVo();
|
const vo: PayChannelListVo = new PayChannelListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
if (ObjectUtil.isNotEmpty(item.getConfig()) && "transfer" === channel) {
|
if (!!item.getConfig() && "transfer".equals(channel)) {
|
||||||
const config: Record<string, any> = JSONUtil.parseObj(item.getConfig());
|
const config: Record<string, any> = JSON.parse(item.getConfig());
|
||||||
// 定义需要隐藏的配置项列表
|
// 定义需要隐藏的配置项列表
|
||||||
String[] keysToHide = {
|
String[] keysToHide = {
|
||||||
"mch_secret_key",
|
"mch_secret_key",
|
||||||
@@ -81,17 +81,17 @@ export class PayChannelServiceImplService {
|
|||||||
|
|
||||||
for (const key of keysToHide) {
|
for (const key of keysToHide) {
|
||||||
const value: string = config.getStr(key);
|
const value: string = config.getStr(key);
|
||||||
if (ObjectUtil.isNotEmpty(value)) {
|
if (!!value) {
|
||||||
try {
|
try {
|
||||||
config.set(key, StringUtils.hide(value, 0, value.length()));
|
config.set(key, StringUtils.hide(value, 0, value.length()));
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("字段:{},值:{},支付设置脱敏失败{}", key, value, e.message);
|
log.error("字段:{},值:{},支付设置脱敏失败{}", key, value, e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vo.setConfig(config.toString());
|
vo.setConfig(config.toString());
|
||||||
}
|
}
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,40 +16,40 @@ export class PayRefundServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<PayRefund> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getRefundNo())) queryWrapper.eq("refund_no", searchParam.getRefundNo());
|
if (!!searchParam.getRefundNo()) queryWrapper.eq("refund_no", searchParam.getRefundNo());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getStatus())) queryWrapper.eq("status", searchParam.getStatus());
|
if (!!searchParam.getStatus()) queryWrapper.eq("status", searchParam.getStatus());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) QueryMapperUtils.buildByTime(queryWrapper, "create_time", searchParam.getCreateTime());
|
if (!!searchParam.getCreateTime()) QueryMapperUtils.buildByTime(queryWrapper, "create_time", searchParam.getCreateTime());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const payTypeEnum: Record<string, any> = PayTypeEnum.getType();
|
const payTypeEnum: Record<string, any> = PayTypeEnum.getType();
|
||||||
|
|
||||||
const iPage: IPage<PayRefund> = payRefundMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.payRefundRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: PayRefundListVo[] = [];
|
PayRefundListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: PayRefundListVo = new PayRefundListVo();
|
const vo: PayRefundListVo = new PayRefundListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setTypeName(payTypeEnum.getByPath(vo.getType() + ".name", String.class));
|
vo.setTypeName(payTypeEnum.getByPath(vo.getType() + ".name", String.class));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: PayRefund = payRefundMapper.selectOne(
|
const model: PayRefund = this.payRefundRepository.findOne(
|
||||||
new QueryWrapper<PayRefund>()
|
new ()
|
||||||
.eq("refund_no", refundNo)
|
.eq("refund_no", refundNo)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: PayRefundInfoVo = new PayRefundInfoVo();
|
const vo: PayRefundInfoVo = new PayRefundInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,32 +16,32 @@ export class PayServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<Pay> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<Pay> = payMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.payRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: PayListVo[] = [];
|
PayListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: PayListVo = new PayListVo();
|
const vo: PayListVo = new PayListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: Pay = payMapper.selectOne(
|
const model: Pay = this.payRepository.findOne(
|
||||||
new QueryWrapper<Pay>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: PayInfoVo = new PayInfoVo();
|
const vo: PayInfoVo = new PayInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ export class PayServiceImplService {
|
|||||||
model.setVoucher(addParam.getVoucher());
|
model.setVoucher(addParam.getVoucher());
|
||||||
model.setStatus(addParam.getStatus());
|
model.setStatus(addParam.getStatus());
|
||||||
model.setJson(addParam.getJson());
|
model.setJson(addParam.getJson());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setPayTime(addParam.getPayTime());
|
model.setPayTime(addParam.getPayTime());
|
||||||
model.setCancelTime(addParam.getCancelTime());
|
model.setCancelTime(addParam.getCancelTime());
|
||||||
model.setType(addParam.getType());
|
model.setType(addParam.getType());
|
||||||
@@ -69,19 +69,19 @@ export class PayServiceImplService {
|
|||||||
model.setMainType(addParam.getMainType());
|
model.setMainType(addParam.getMainType());
|
||||||
model.setChannel(addParam.getChannel());
|
model.setChannel(addParam.getChannel());
|
||||||
model.setFailReason(addParam.getFailReason());
|
model.setFailReason(addParam.getFailReason());
|
||||||
payMapper.insert(model);
|
this.payRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: Pay = payMapper.selectOne(
|
const model: Pay = this.payRepository.findOne(
|
||||||
new QueryWrapper<Pay>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
model.setId(id);
|
model.setId(id);
|
||||||
model.setSiteId(editParam.getSiteId());
|
model.setSiteId(editParam.getSiteId());
|
||||||
model.setMainId(editParam.getMainId());
|
model.setMainId(editParam.getMainId());
|
||||||
@@ -101,21 +101,21 @@ export class PayServiceImplService {
|
|||||||
model.setMainType(editParam.getMainType());
|
model.setMainType(editParam.getMainType());
|
||||||
model.setChannel(editParam.getChannel());
|
model.setChannel(editParam.getChannel());
|
||||||
model.setFailReason(editParam.getFailReason());
|
model.setFailReason(editParam.getFailReason());
|
||||||
payMapper.updateById(model);
|
this.payRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: Pay = payMapper.selectOne(
|
const model: Pay = this.payRepository.findOne(
|
||||||
new QueryWrapper<Pay>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
payMapper.delete(new QueryWrapper<Pay>().eq("id", id));
|
this.payRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,12 +123,12 @@ export class PayServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getFriendspayInfoByTrade(...args: any[]): Promise<any> {
|
async getFriendspayInfoByTrade(...args: any[]): Promise<any> {
|
||||||
const payInfo: GetInfoByTradeVo = corePayService.getInfoByTrade(RequestUtils.siteId(), param.getTradeType(), param.getTradeId(), param.getChannel(), "friendspay");
|
const payInfo: GetInfoByTradeVo = corePayService.getInfoByTrade(RequestUtils.siteId(), param.getTradeType(), param.getTradeId(), param.getChannel(), "friendspay");
|
||||||
if (ObjectUtil.isEmpty(payInfo)) {
|
if (!payInfo) {
|
||||||
return new FriendsPayInfoByTradeVo();
|
return new FriendsPayInfoByTradeVo();
|
||||||
}
|
}
|
||||||
|
|
||||||
const vo: FriendsPayInfoByTradeVo = new FriendsPayInfoByTradeVo();
|
const vo: FriendsPayInfoByTradeVo = new FriendsPayInfoByTradeVo();
|
||||||
BeanUtils.copyProperties(payInfo, vo);
|
Object.assign(vo, payInfo);
|
||||||
vo.setConfig(payInfo.getConfig());
|
vo.setConfig(payInfo.getConfig());
|
||||||
vo.setCreateTime(DateUtils.timestampToString(payInfo.getCreateTime()));
|
vo.setCreateTime(DateUtils.timestampToString(payInfo.getCreateTime()));
|
||||||
|
|
||||||
@@ -140,21 +140,21 @@ export class PayServiceImplService {
|
|||||||
vo.setPayTime(DateUtils.timestampToString(payInfo.getPayTime()));
|
vo.setPayTime(DateUtils.timestampToString(payInfo.getPayTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
const posterQueryWrapper: QueryWrapper<SysPoster> = new QueryWrapper<>();
|
posterQueryWrapper = {};
|
||||||
posterQueryWrapper.eq("site_id", RequestUtils.siteId())
|
posterQueryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("type", "friendspay")
|
.eq("type", "friendspay")
|
||||||
.eq("status", 1)
|
.eq("status", 1)
|
||||||
.eq("is_default", 1);
|
.eq("is_default", 1);
|
||||||
|
|
||||||
const poster: SysPoster = sysPosterMapper.selectOne(posterQueryWrapper);
|
const poster: SysPoster = this.sysPosterRepository.findOne(posterQueryWrapper);
|
||||||
if (ObjectUtil.isNotEmpty(poster)) {
|
if (!!poster) {
|
||||||
vo.setPosterId(poster.getId());
|
vo.setPosterId(poster.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberQueryWrapper: QueryWrapper<Member> = new QueryWrapper<>();
|
memberQueryWrapper = {};
|
||||||
memberQueryWrapper.eq("site_id", RequestUtils.siteId())
|
memberQueryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("member_id", vo.getMainId());
|
.eq("member_id", vo.getMainId());
|
||||||
const member: Member = memberMapper.selectOne(memberQueryWrapper);
|
const member: Member = this.memberRepository.findOne(memberQueryWrapper);
|
||||||
vo.setMember(member);
|
vo.setMember(member);
|
||||||
|
|
||||||
const qrcode: QR = getQrcode(param.getTradeType(), param.getTradeId(), param.getChannel());
|
const qrcode: QR = getQrcode(param.getTradeType(), param.getTradeId(), param.getChannel());
|
||||||
@@ -167,12 +167,12 @@ export class PayServiceImplService {
|
|||||||
* getPayTypeList
|
* getPayTypeList
|
||||||
*/
|
*/
|
||||||
async getPayTypeList(...args: any[]): Promise<any> {
|
async getPayTypeList(...args: any[]): Promise<any> {
|
||||||
const payTypeList: PayTypeVo[] = corePayService.getPayTypeByTrade(RequestUtils.siteId(), "", ChannelEnum.H5);
|
PayTypeVo[] payTypeList = corePayService.getPayTypeByTrade(RequestUtils.siteId(), "", ChannelEnum.H5);
|
||||||
if (ObjectUtil.isEmpty(payTypeList)) {
|
if (!payTypeList) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
return payTypeList.stream().filter(o => o.getKey() === "balancepay" || o.getKey() === "friendspay").toList();
|
return payTypeList.filter(o => o.getKey() === "balancepay" || o.getKey() === "friendspay").toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export class PayTransferServiceImplService {
|
|||||||
async setSceneId(...args: any[]): Promise<any> {
|
async setSceneId(...args: any[]): Promise<any> {
|
||||||
const config: Record<string, any> = coreTransferSceneService.getWechatTransferSceneConfig(RequestUtils.siteId());
|
const config: Record<string, any> = coreTransferSceneService.getWechatTransferSceneConfig(RequestUtils.siteId());
|
||||||
|
|
||||||
const tradeScenelist: Record<string, any> = TransferSceneEnum.getWechatTransferSceneMap();
|
const tradeScenelist: Record<String, TransferSceneEnum> = TransferSceneEnum.getWechatTransferSceneMap();
|
||||||
if (!tradeScenelist.containsKey(param.getScene())) {
|
if (!tradeScenelist.containsKey(param.getScene())) {
|
||||||
throw new BadRequestException("不存在的商户转账场景");
|
throw new BadRequestException("不存在的商户转账场景");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,77 +16,77 @@ export class SiteAccountLogServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SiteAccountLog> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
//查询条件判断组装
|
//查询条件判断组装
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTradeNo())) {
|
if (!!searchParam.getTradeNo()) {
|
||||||
queryWrapper.like("trade_no", searchParam.getTradeNo());
|
queryWrapper.like("trade_no", searchParam.getTradeNo());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) {
|
if (!!searchParam.getType()) {
|
||||||
queryWrapper.eq("type", searchParam.getType());
|
queryWrapper.eq("type", searchParam.getType());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) {
|
if (!!searchParam.getCreateTime()) {
|
||||||
String[] createTime = searchParam.getCreateTime();
|
String[] createTime = searchParam.getCreateTime();
|
||||||
QueryMapperUtils.buildByTime(queryWrapper, "create_time", createTime);
|
QueryMapperUtils.buildByTime(queryWrapper, "create_time", createTime);
|
||||||
}
|
}
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.orderByDesc("create_time");
|
||||||
const iPage: IPage<SiteAccountLog> = siteAccountLogMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.siteAccountLogRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SiteAccountLogListVo[] = [];
|
SiteAccountLogListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SiteAccountLogListVo = new SiteAccountLogListVo();
|
const vo: SiteAccountLogListVo = new SiteAccountLogListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
const typeModel: any = new Object();
|
const typeModel: any = new Object();
|
||||||
if (item.getType() === "pay") {
|
if (item.getType() === "pay") {
|
||||||
typeModel = payMapper.selectOne(
|
typeModel = this.payRepository.findOne(
|
||||||
new QueryWrapper<Pay>()
|
new ()
|
||||||
.eq("out_trade_no", item.getTradeNo())
|
.eq("out_trade_no", item.getTradeNo())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
} else if (item.getType() === "refund") {
|
} else if (item.getType() === "refund") {
|
||||||
typeModel = payRefundMapper.selectOne(
|
typeModel = this.payRefundRepository.findOne(
|
||||||
new QueryWrapper<PayRefund>()
|
new ()
|
||||||
.eq("refund_no", item.getTradeNo())
|
.eq("refund_no", item.getTradeNo())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
} else {
|
} else {
|
||||||
typeModel = payTransferMapper.selectOne(
|
typeModel = this.payTransferRepository.findOne(
|
||||||
new QueryWrapper<PayTransfer>()
|
new ()
|
||||||
.eq("transfer_no", item.getTradeNo())
|
.eq("transfer_no", item.getTradeNo())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
}
|
}
|
||||||
vo.setPayInfo(typeModel);
|
vo.setPayInfo(typeModel);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SiteAccountLog = siteAccountLogMapper.selectOne(
|
const model: SiteAccountLog = this.siteAccountLogRepository.findOne(
|
||||||
new QueryWrapper<SiteAccountLog>()
|
new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: SiteAccountLogInfoVo = new SiteAccountLogInfoVo();
|
const vo: SiteAccountLogInfoVo = new SiteAccountLogInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
const typeModel: any = new Object();
|
const typeModel: any = new Object();
|
||||||
if (model.getType() === "pay") {
|
if (model.getType() === "pay") {
|
||||||
typeModel = payMapper.selectOne(
|
typeModel = this.payRepository.findOne(
|
||||||
new QueryWrapper<Pay>()
|
new ()
|
||||||
.eq("out_trade_no", model.getTradeNo())
|
.eq("out_trade_no", model.getTradeNo())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
} else if (model.getType() === "refund") {
|
} else if (model.getType() === "refund") {
|
||||||
typeModel = payRefundMapper.selectOne(
|
typeModel = this.payRefundRepository.findOne(
|
||||||
new QueryWrapper<PayRefund>()
|
new ()
|
||||||
.eq("refund_no", model.getTradeNo())
|
.eq("refund_no", model.getTradeNo())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
} else {
|
} else {
|
||||||
typeModel = payTransferMapper.selectOne(
|
typeModel = this.payTransferRepository.findOne(
|
||||||
new QueryWrapper<PayTransfer>()
|
new ()
|
||||||
.eq("transfer_no", model.getTradeNo())
|
.eq("transfer_no", model.getTradeNo())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SiteGroupServiceImplService {
|
export class SiteGroupServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,18 +16,18 @@ export class SiteGroupServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SiteGroup> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeywords())) {
|
if (!!searchParam.getKeywords()) {
|
||||||
queryWrapper.like("group_name", searchParam.getKeywords());
|
queryWrapper.like("group_name", searchParam.getKeywords());
|
||||||
}
|
}
|
||||||
queryWrapper.orderByDesc("group_id");
|
queryWrapper.orderByDesc("group_id");
|
||||||
|
|
||||||
const iPage: IPage<SiteGroup> = siteGroupMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.siteGroupRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
|
|
||||||
//获取所有的const addonList: addon
|
//获取所有的addon
|
||||||
List<Addon> = addonMapper.selectList(new QueryWrapper<Addon>().orderByDesc("id"));
|
Addon[] addonList = this.addonRepository.find(new ().orderByDesc("id"));
|
||||||
const list: SiteGroupListVo[] = [];
|
SiteGroupListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SiteGroupListVo = new SiteGroupListVo();
|
const vo: SiteGroupListVo = new SiteGroupListVo();
|
||||||
vo.setGroupId(item.getGroupId());
|
vo.setGroupId(item.getGroupId());
|
||||||
vo.setGroupName(item.getGroupName());
|
vo.setGroupName(item.getGroupName());
|
||||||
@@ -39,64 +38,64 @@ export class SiteGroupServiceImplService {
|
|||||||
vo.setAddon(addonJson);
|
vo.setAddon(addonJson);
|
||||||
const appJson: JSONArray = JSONUtil.parseArray(item.getApp());
|
const appJson: JSONArray = JSONUtil.parseArray(item.getApp());
|
||||||
vo.setApp(appJson);
|
vo.setApp(appJson);
|
||||||
const addonStr: string[] = [];
|
String[] addonStr = [];
|
||||||
const appStr: string[] = [];
|
String[] appStr = [];
|
||||||
const appList: SiteGroupListVo.IconAndTitle[] = [];
|
SiteGroupListVo.IconAndTitle[] appList = [];
|
||||||
const addonListResult: SiteGroupListVo.IconAndTitle[] = [];
|
SiteGroupListVo.IconAndTitle[] addonListResult = [];
|
||||||
for (const addon of addonList)
|
for (const addon of addonList)
|
||||||
{
|
{
|
||||||
if(addonJson.includes(addon.getKey())){
|
if(addonJson.includes(addon.getKey())){
|
||||||
addonStr.add(addon.getTitle());
|
addonStr.push(addon.getTitle());
|
||||||
SiteGroupListVo.const iconAndTitle: IconAndTitle = new SiteGroupListVo.IconAndTitle();
|
SiteGroupListVo.const iconAndTitle: IconAndTitle = new SiteGroupListVo.IconAndTitle();
|
||||||
iconAndTitle.setTitle(addon.getTitle());
|
iconAndTitle.setTitle(addon.getTitle());
|
||||||
try {
|
try {
|
||||||
iconAndTitle.setIcon(ImageToBase64ConverterUtil.convertToBase64(addon.getIcon()));
|
iconAndTitle.setIcon(ImageToBase64ConverterUtil.convertToBase64(addon.getIcon()));
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
iconAndTitle.setIcon("");
|
iconAndTitle.setIcon("");
|
||||||
}
|
}
|
||||||
addonListResult.add(iconAndTitle);
|
addonListResult.push(iconAndTitle);
|
||||||
}
|
}
|
||||||
if(appJson.includes(addon.getKey())){
|
if(appJson.includes(addon.getKey())){
|
||||||
appStr.add(addon.getTitle());
|
appStr.push(addon.getTitle());
|
||||||
SiteGroupListVo.const iconAndTitle: IconAndTitle = new SiteGroupListVo.IconAndTitle();
|
SiteGroupListVo.const iconAndTitle: IconAndTitle = new SiteGroupListVo.IconAndTitle();
|
||||||
iconAndTitle.setTitle(addon.getTitle());
|
iconAndTitle.setTitle(addon.getTitle());
|
||||||
try {
|
try {
|
||||||
iconAndTitle.setIcon(ImageToBase64ConverterUtil.convertToBase64(addon.getIcon()));
|
iconAndTitle.setIcon(ImageToBase64ConverterUtil.convertToBase64(addon.getIcon()));
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
iconAndTitle.setIcon("");
|
iconAndTitle.setIcon("");
|
||||||
}
|
}
|
||||||
|
|
||||||
appList.add(iconAndTitle);
|
appList.push(iconAndTitle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vo.setAddonName(addonStr);
|
vo.setAddonName(addonStr);
|
||||||
vo.setAppName(appStr);
|
vo.setAppName(appStr);
|
||||||
vo.setAddonList(addonListResult);
|
vo.setAddonList(addonListResult);
|
||||||
vo.setAppList(appList);
|
vo.setAppList(appList);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(iPage.getCurrent(), iPage.getSize(), iPage.getTotal()).setData(list);
|
return PageResult.build(iPage.getCurrent(), iPage.getSize(), total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getAll
|
* getAll
|
||||||
*/
|
*/
|
||||||
async getAll(...args: any[]): Promise<any> {
|
async getAll(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SiteGroup> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("group_id");
|
queryWrapper.orderByDesc("group_id");
|
||||||
return siteGroupMapper.selectList(queryWrapper);
|
return this.siteGroupRepository.find(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SiteGroup = siteGroupMapper.selectOne(
|
const model: SiteGroup = this.siteGroupRepository.findOne(
|
||||||
new QueryWrapper<SiteGroup>()
|
new ()
|
||||||
.eq("group_id", id)
|
.eq("group_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,23 +111,23 @@ export class SiteGroupServiceImplService {
|
|||||||
const model: SiteGroup = new SiteGroup();
|
const model: SiteGroup = new SiteGroup();
|
||||||
model.setGroupName(addParam.getGroupName());
|
model.setGroupName(addParam.getGroupName());
|
||||||
model.setGroupDesc(addParam.getGroupDesc());
|
model.setGroupDesc(addParam.getGroupDesc());
|
||||||
model.setApp(JSONUtil.toJsonStr(addParam.getApp()));
|
model.setApp(JSON.stringify(addParam.getApp()));
|
||||||
model.setAddon(JSONUtil.toJsonStr(addParam.getAddon()));
|
model.setAddon(JSON.stringify(addParam.getAddon()));
|
||||||
model.setCreateTime(DateUtils.currTime());
|
model.setCreateTime(DateUtils.currTime());
|
||||||
model.setUpdateTime(DateUtils.currTime());
|
model.setUpdateTime(DateUtils.currTime());
|
||||||
siteGroupMapper.insert(model);
|
this.siteGroupRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SiteGroup = siteGroupMapper.selectOne(
|
const model: SiteGroup = this.siteGroupRepository.findOne(
|
||||||
new QueryWrapper<SiteGroup>()
|
new ()
|
||||||
.eq("group_id", id)
|
.eq("group_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
const groupRoles: JSONArray = new JSONArray();
|
const groupRoles: JSONArray = new JSONArray();
|
||||||
groupRoles.addAll(editParam.getAddon());
|
groupRoles.addAll(editParam.getAddon());
|
||||||
@@ -141,21 +140,21 @@ export class SiteGroupServiceImplService {
|
|||||||
group.setGroupId(editParam.getGroupId());
|
group.setGroupId(editParam.getGroupId());
|
||||||
group.setGroupName(editParam.getGroupName());
|
group.setGroupName(editParam.getGroupName());
|
||||||
group.setGroupDesc(editParam.getGroupDesc());
|
group.setGroupDesc(editParam.getGroupDesc());
|
||||||
group.setApp(JSONUtil.toJsonStr(editParam.getApp()));
|
group.setApp(JSON.stringify(editParam.getApp()));
|
||||||
group.setAddon(JSONUtil.toJsonStr(editParam.getAddon()));
|
group.setAddon(JSON.stringify(editParam.getAddon()));
|
||||||
group.setUpdateTime(DateUtils.currTime());
|
group.setUpdateTime(DateUtils.currTime());
|
||||||
siteGroupMapper.updateById(group);
|
this.siteGroupRepository.save(group);
|
||||||
this.cached.remove("site_group_menu_ids" + id);
|
this.cached.remove("site_group_menu_ids" + id);
|
||||||
if (model.getApp() !== group.getApp()) {
|
if (model.getApp() !== group.getApp()) {
|
||||||
// 修改站点应用
|
// 修改站点应用
|
||||||
const siteModel: Site = new Site();
|
const siteModel: Site = new Site();
|
||||||
siteModel.setApp(model.getApp());
|
siteModel.setApp(model.getApp());
|
||||||
siteMapper.update(siteModel, new QueryWrapper<Site>().eq("group_id", id));
|
siteMapper.update(siteModel, new ().eq("group_id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (model.getApp() !== group.getApp() || model.getAddon() !== group.getAddon()) {
|
if (model.getApp() !== group.getApp() || model.getAddon() !== group.getAddon()) {
|
||||||
const siteList: Site[] = siteMapper.selectList(new QueryWrapper<Site>().eq("group_id", id));
|
Site[] siteList = this.siteRepository.find(new ().eq("group_id", id));
|
||||||
if (ObjectUtil.isNotEmpty(siteList)) {
|
if (!!siteList) {
|
||||||
for (const site of siteList) {
|
for (const site of siteList) {
|
||||||
siteService.siteAddonChange(site, model);
|
siteService.siteAddonChange(site, model);
|
||||||
coreSiteService.clearSiteCache(site.getSiteId());
|
coreSiteService.clearSiteCache(site.getSiteId());
|
||||||
@@ -169,28 +168,28 @@ export class SiteGroupServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SiteGroup = siteGroupMapper.selectOne(
|
const model: SiteGroup = this.siteGroupRepository.findOne(
|
||||||
new QueryWrapper<SiteGroup>()
|
new ()
|
||||||
.eq("group_id", id)
|
.eq("group_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
const siteCount: number = siteMapper.selectCount(new QueryWrapper<Site>().eq("group_id", id));
|
const siteCount: number = this.siteRepository.count(new ().eq("group_id", id));
|
||||||
if(siteCount>0){
|
if(siteCount>0){
|
||||||
throw new BadRequestException("当前套餐存在站点,不能删除");
|
throw new BadRequestException("当前套餐存在站点,不能删除");
|
||||||
}
|
}
|
||||||
siteGroupMapper.delete(new QueryWrapper<SiteGroup>().eq("group_id", id));
|
this.siteGroupRepository.delete(new ().eq("group_id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* checkAddon
|
* checkAddon
|
||||||
*/
|
*/
|
||||||
async checkAddon(...args: any[]): Promise<any> {
|
async checkAddon(...args: any[]): Promise<any> {
|
||||||
const addonListVoMap: Record<string, any> = coreAddonService.getInstallAddonList();
|
const addonListVoMap: Record<String, InstallAddonListVo> = coreAddonService.getInstallAddonList();
|
||||||
const keys: string[] = new ArrayList<>(addonListVoMap.keySet());
|
String[] keys=new ArrayList<>(addonListVoMap.keySet());
|
||||||
const addonString: string[] = JSONUtil.toList(jsonArray, String.class);
|
String[] addonString=JSONUtil.toList(jsonArray, String.class);
|
||||||
keys.retainAll(addonString);
|
keys.retainAll(addonString);
|
||||||
if(keys.size()!=addonString.size()){
|
if(keys.length!=addonString.length){
|
||||||
throw new AdminException("SITE_GROUP_APP_NOT_EXIST");
|
throw new AdminException("SITE_GROUP_APP_NOT_EXIST");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -199,14 +198,14 @@ export class SiteGroupServiceImplService {
|
|||||||
* getUserSiteGroupAll
|
* getUserSiteGroupAll
|
||||||
*/
|
*/
|
||||||
async getUserSiteGroupAll(...args: any[]): Promise<any> {
|
async getUserSiteGroupAll(...args: any[]): Promise<any> {
|
||||||
const siteGroupListVoList: SiteGroupListVo[] = [];
|
SiteGroupListVo[] siteGroupListVoList=[];
|
||||||
const siteGroupList: SiteGroup[] = siteGroupMapper.selectList(new QueryWrapper<>());
|
SiteGroup[] siteGroupList= this.siteGroupRepository.find({});
|
||||||
|
|
||||||
for (const siteGroup of siteGroupList) {
|
for (const siteGroup of siteGroupList) {
|
||||||
const siteGroupListVo: SiteGroupListVo = new SiteGroupListVo();
|
const siteGroupListVo: SiteGroupListVo = new SiteGroupListVo();
|
||||||
BeanUtils.copyProperties(siteGroup, siteGroupListVo);
|
Object.assign(siteGroupListVo, siteGroup);
|
||||||
siteGroupListVo.setSiteNum(getUserSiteGroupSiteNum(uid, siteGroup.getGroupId()));
|
siteGroupListVo.setSiteNum(getUserSiteGroupSiteNum(uid, siteGroup.getGroupId()));
|
||||||
siteGroupListVoList.add(siteGroupListVo);
|
siteGroupListVoList.push(siteGroupListVo);
|
||||||
}
|
}
|
||||||
return siteGroupListVoList;
|
return siteGroupListVoList;
|
||||||
}
|
}
|
||||||
@@ -215,9 +214,9 @@ export class SiteGroupServiceImplService {
|
|||||||
* getUserSiteGroupSiteNum
|
* getUserSiteGroupSiteNum
|
||||||
*/
|
*/
|
||||||
async getUserSiteGroupSiteNum(...args: any[]): Promise<any> {
|
async getUserSiteGroupSiteNum(...args: any[]): Promise<any> {
|
||||||
const userRoleMPJQueryWrapper: MPJQueryWrapper<SysUserRole> = new MPJQueryWrapper<>();
|
MPJuserRoleMPJQueryWrapper = new MPJQueryWrapper<>();
|
||||||
userRoleMPJQueryWrapper.setAlias("sur")
|
userRoleMPJQueryWrapper.setAlias("sur")
|
||||||
.leftJoin("?_site s ON sur.site_id = s.site_id".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_site s ON sur.site_id = s.site_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
userRoleMPJQueryWrapper.eq("sur.uid", uid);
|
userRoleMPJQueryWrapper.eq("sur.uid", uid);
|
||||||
userRoleMPJQueryWrapper.eq("sur.is_admin", 1);
|
userRoleMPJQueryWrapper.eq("sur.is_admin", 1);
|
||||||
userRoleMPJQueryWrapper.eq("s.group_id", groupId);
|
userRoleMPJQueryWrapper.eq("s.group_id", groupId);
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SiteServiceImplService {
|
export class SiteServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -18,19 +17,19 @@ export class SiteServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<Site> = new MPJQueryWrapper();
|
MPJqueryWrapper = new MPJQueryWrapper();
|
||||||
queryWrapper.setAlias("se")
|
queryWrapper.setAlias("se")
|
||||||
.selectAll(Site.class)
|
.selectAll(Site.class)
|
||||||
.select("sg.group_name")
|
.select("sg.group_name")
|
||||||
.leftJoin("?_site_group sg on sg.group_id = se.group_id".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_site_group sg on sg.group_id = se.group_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
|
|
||||||
|
|
||||||
//查询条件判断组装
|
//查询条件判断组装
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeywords())) {
|
if (!!searchParam.getKeywords()) {
|
||||||
queryWrapper.like("se.siteName", searchParam.getKeywords()).or().like("se.siteName", searchParam.getKeywords());
|
queryWrapper.like("se.siteName", searchParam.getKeywords()).or().like("se.siteName", searchParam.getKeywords());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getApp())) {
|
if (!!searchParam.getApp()) {
|
||||||
queryWrapper.and(wrapper => wrapper
|
queryWrapper.and(wrapper => wrapper
|
||||||
.like("sg.addon", searchParam.getApp())
|
.like("sg.addon", searchParam.getApp())
|
||||||
.or()
|
.or()
|
||||||
@@ -38,19 +37,19 @@ export class SiteServiceImplService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getStatus())) {
|
if (!!searchParam.getStatus()) {
|
||||||
queryWrapper.eq("se.status", searchParam.getStatus());
|
queryWrapper.eq("se.status", searchParam.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getGroupId())) {
|
if (!!searchParam.getGroupId()) {
|
||||||
queryWrapper.eq("se.group_id", searchParam.getGroupId());
|
queryWrapper.eq("se.group_id", searchParam.getGroupId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getSiteDomain())) {
|
if (!!searchParam.getSiteDomain()) {
|
||||||
queryWrapper.like("se.site_domain", searchParam.getSiteDomain());
|
queryWrapper.like("se.site_domain", searchParam.getSiteDomain());
|
||||||
}
|
}
|
||||||
queryWrapper.ne("se.app_type", "admin");
|
queryWrapper.ne("se.app_type", "admin");
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) {
|
if (!!searchParam.getCreateTime()) {
|
||||||
|
|
||||||
String[] createTime = searchParam.getCreateTime();
|
String[] createTime = searchParam.getCreateTime();
|
||||||
const startTime: number = (createTime[0] == null) ? 0L : DateUtils.StringToTimestamp(createTime[0]);
|
const startTime: number = (createTime[0] == null) ? 0L : DateUtils.StringToTimestamp(createTime[0]);
|
||||||
@@ -64,7 +63,7 @@ export class SiteServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getExpireTime())) {
|
if (!!searchParam.getExpireTime()) {
|
||||||
|
|
||||||
String[] expireTime = searchParam.getExpireTime();
|
String[] expireTime = searchParam.getExpireTime();
|
||||||
const startTime: number = (expireTime[0] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[0]);
|
const startTime: number = (expireTime[0] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[0]);
|
||||||
@@ -80,22 +79,22 @@ export class SiteServiceImplService {
|
|||||||
|
|
||||||
queryWrapper.orderByDesc("se.create_time");
|
queryWrapper.orderByDesc("se.create_time");
|
||||||
|
|
||||||
const iPage: IPage<SiteListVo> = siteMapper.selectJoinPage(new Page<>(page, limit), SiteListVo.class, queryWrapper);
|
iPage = siteMapper.selectJoinPage({ /* pagination */ }, SiteListVo.class, queryWrapper);
|
||||||
|
|
||||||
const list: SiteListVo[] = [];
|
SiteListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SiteListVo = new SiteListVo();
|
const vo: SiteListVo = new SiteListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
const userRoleMPJQueryWrapper: MPJQueryWrapper<SysUserRole> = new MPJQueryWrapper<>();
|
MPJuserRoleMPJQueryWrapper = new MPJQueryWrapper<>();
|
||||||
userRoleMPJQueryWrapper.select("nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count")
|
userRoleMPJQueryWrapper.select("nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count")
|
||||||
.setAlias("nsur")
|
.setAlias("nsur")
|
||||||
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix));
|
||||||
userRoleMPJQueryWrapper.eq("nsur.is_admin", 1);
|
userRoleMPJQueryWrapper.eq("nsur.is_admin", 1);
|
||||||
userRoleMPJQueryWrapper.eq("nsur.site_id", item.getSiteId());
|
userRoleMPJQueryWrapper.eq("nsur.site_id", item.getSiteId());
|
||||||
vo.setAdmin(sysUserRoleMapper.selectJoinOne(SiteAdminVo.class, userRoleMPJQueryWrapper));
|
vo.setAdmin(sysUserRoleMapper.selectJoinOne(SiteAdminVo.class, userRoleMPJQueryWrapper));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal(), list);
|
return PageResult.build(page, limit, total, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -110,7 +109,7 @@ export class SiteServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const siteGroup: SiteGroup = siteGroupService.info(addParam.getGroupId());
|
const siteGroup: SiteGroup = siteGroupService.info(addParam.getGroupId());
|
||||||
if (ObjectUtil.isNull(siteGroup) || ObjectUtil.isEmpty(siteGroup)) {
|
if (ObjectUtil.isNull(siteGroup) || !siteGroup) {
|
||||||
throw new BadRequestException("SITE_GROUP_NOT_EXIST");
|
throw new BadRequestException("SITE_GROUP_NOT_EXIST");
|
||||||
}
|
}
|
||||||
const model: Site = new Site();
|
const model: Site = new Site();
|
||||||
@@ -122,7 +121,7 @@ export class SiteServiceImplService {
|
|||||||
model.setApp(siteGroup.getApp());
|
model.setApp(siteGroup.getApp());
|
||||||
model.setAddons("");
|
model.setAddons("");
|
||||||
model.setSiteDomain(addParam.getSiteDomain());
|
model.setSiteDomain(addParam.getSiteDomain());
|
||||||
siteMapper.insert(model);
|
this.siteRepository.save(model);
|
||||||
const siteId: number = model.getSiteId();
|
const siteId: number = model.getSiteId();
|
||||||
if (ObjectUtil.isNull(addParam.getUid()) || addParam.getUid() == 0) {
|
if (ObjectUtil.isNull(addParam.getUid()) || addParam.getUid() == 0) {
|
||||||
//添加用户
|
//添加用户
|
||||||
@@ -140,7 +139,7 @@ export class SiteServiceImplService {
|
|||||||
sysUserRoleParam.setRoleIds(new JsonArray().toString());
|
sysUserRoleParam.setRoleIds(new JsonArray().toString());
|
||||||
sysUserRoleParam.setIsAdmin(1);
|
sysUserRoleParam.setIsAdmin(1);
|
||||||
sysUserRoleParam.setSiteId(siteId);
|
sysUserRoleParam.setSiteId(siteId);
|
||||||
userRoleService.add(sysUserRoleParam);
|
userRoleService.push(sysUserRoleParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
const event: SiteAddAfterEvent = new SiteAddAfterEvent();
|
const event: SiteAddAfterEvent = new SiteAddAfterEvent();
|
||||||
@@ -151,7 +150,7 @@ export class SiteServiceImplService {
|
|||||||
event.setSiteGroup(siteGroup);
|
event.setSiteGroup(siteGroup);
|
||||||
EventAndSubscribeOfPublisher.publishAll(event);
|
EventAndSubscribeOfPublisher.publishAll(event);
|
||||||
|
|
||||||
const param: Record<string, any> = {};
|
const param: Record<String, Object> = {};
|
||||||
param.put("site_id", siteId);
|
param.put("site_id", siteId);
|
||||||
param.put("main_app", siteGroup.getApp());
|
param.put("main_app", siteGroup.getApp());
|
||||||
param.put("tag", "add");
|
param.put("tag", "add");
|
||||||
@@ -162,39 +161,39 @@ export class SiteServiceImplService {
|
|||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: Site = siteMapper.selectOne(
|
const model: Site = this.siteRepository.findOne(
|
||||||
new QueryWrapper<Site>()
|
new ()
|
||||||
.eq("site_id", id)
|
.eq("site_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
if (ObjectUtil.isNotNull(editParam.getGroupId()) && ObjectUtil.isNotEmpty(editParam.getGroupId()) && editParam.getGroupId() !== model.getGroupId()) {
|
if (ObjectUtil.isNotNull(editParam.getGroupId()) && !!editParam.getGroupId() && editParam.getGroupId() !== model.getGroupId()) {
|
||||||
model.setGroupId(editParam.getGroupId());
|
model.setGroupId(editParam.getGroupId());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotNull(editParam.getSiteName()) && ObjectUtil.isNotEmpty(editParam.getSiteName())) {
|
if (ObjectUtil.isNotNull(editParam.getSiteName()) && !!editParam.getSiteName()) {
|
||||||
model.setSiteName(editParam.getSiteName());
|
model.setSiteName(editParam.getSiteName());
|
||||||
}
|
}
|
||||||
|
|
||||||
const oldSiteGroup: SiteGroup = siteGroupService.info(model.getGroupId());
|
const oldSiteGroup: SiteGroup = siteGroupService.info(model.getGroupId());
|
||||||
|
|
||||||
const initallJsonArray: JSONArray = new JSONArray();
|
const initallJsonArray: JSONArray = new JSONArray();
|
||||||
if (ObjectUtil.isNull(model.getInitalledAddon()) || ObjectUtil.isEmpty(model.getInitalledAddon())) {
|
if (ObjectUtil.isNull(model.getInitalledAddon()) || !model.getInitalledAddon()) {
|
||||||
initallJsonArray.addAll(JSONUtil.parseArray(oldSiteGroup.getApp()));
|
initallJsonArray.addAll(JSONUtil.parseArray(oldSiteGroup.getApp()));
|
||||||
initallJsonArray.addAll(JSONUtil.parseArray(oldSiteGroup.getAddon()));
|
initallJsonArray.addAll(JSONUtil.parseArray(oldSiteGroup.getAddon()));
|
||||||
}
|
}
|
||||||
|
|
||||||
const siteGroup: SiteGroup = siteGroupService.info(editParam.getGroupId());
|
const siteGroup: SiteGroup = siteGroupService.info(editParam.getGroupId());
|
||||||
if (ObjectUtil.isNull(siteGroup) || ObjectUtil.isEmpty(siteGroup)) {
|
if (ObjectUtil.isNull(siteGroup) || !siteGroup) {
|
||||||
throw new BadRequestException("SITE_GROUP_NOT_EXIST");
|
throw new BadRequestException("SITE_GROUP_NOT_EXIST");
|
||||||
}
|
}
|
||||||
initallJsonArray.addAll(JSONUtil.parseArray(siteGroup.getApp()));
|
initallJsonArray.addAll(JSONUtil.parseArray(siteGroup.getApp()));
|
||||||
initallJsonArray.addAll(JSONUtil.parseArray(siteGroup.getAddon()));
|
initallJsonArray.addAll(JSONUtil.parseArray(siteGroup.getAddon()));
|
||||||
|
|
||||||
model.setInitalledAddon(JSONUtil.toJsonStr(initallJsonArray));
|
model.setInitalledAddon(JSON.stringify(initallJsonArray));
|
||||||
model.setSiteDomain(editParam.getSiteDomain());
|
model.setSiteDomain(editParam.getSiteDomain());
|
||||||
model.setExpireTime(new DateTime(editParam.getExpireTime()).getTime() / 1000);
|
model.setExpireTime(new DateTime(editParam.getExpireTime()).getTime() / 1000);
|
||||||
model.setStatus(model.getExpireTime() > DateUtils.currTime() ? SiteStatusEnum.ON.getCode() : SiteStatusEnum.EXPIRE.getCode());
|
model.setStatus(model.getExpireTime() > DateUtils.currTime() ? SiteStatusEnum.ON.getCode() : SiteStatusEnum.EXPIRE.getCode());
|
||||||
siteMapper.updateById(model);
|
this.siteRepository.save(model);
|
||||||
|
|
||||||
coreSiteService.clearSiteCache(id);
|
coreSiteService.clearSiteCache(id);
|
||||||
|
|
||||||
@@ -211,15 +210,15 @@ export class SiteServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const siteUserRoles: SysUserRole[] = null;
|
SysUserRole[] siteUserRoles = null;
|
||||||
const delResult: number = 0;
|
const delResult: number = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const model: Site = siteMapper.selectById(id);
|
const model: Site = siteMapper.selectById(id);
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
//获取所有需要处理的Mapper
|
//获取所有需要处理的Mapper
|
||||||
List<Class<? extends BaseMapper<?>>> allModels = new ArrayList<>(generateService.getMappers("system"));
|
Class<? extends BaseMapper<?[]>> allModels = new ArrayList<>(generateService.getMappers("system"));
|
||||||
coreSiteService.getAddonKeysBySiteId(id).forEach(addon => allModels.addAll(generateService.getMappers(addon))
|
coreSiteService.getAddonKeysBySiteId(id).forEach(addon => allModels.addAll(generateService.getMappers(addon))
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -245,7 +244,7 @@ export class SiteServiceImplService {
|
|||||||
const wrapper: any = wrapperConstructor.newInstance(entityClass);
|
const wrapper: any = wrapperConstructor.newInstance(entityClass);
|
||||||
eqMethod.invoke(wrapper, true, "site_id", id);
|
eqMethod.invoke(wrapper, true, "site_id", id);
|
||||||
deleteMethod.invoke(mapper, wrapper);
|
deleteMethod.invoke(mapper, wrapper);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("删除表数据失败: {} | 原因: {}",
|
log.error("删除表数据失败: {} | 原因: {}",
|
||||||
entityClass.getSimpleName(),
|
entityClass.getSimpleName(),
|
||||||
e.getCause() != null ? e.getCause().getMessage() : e.message);
|
e.getCause() != null ? e.getCause().getMessage() : e.message);
|
||||||
@@ -253,14 +252,14 @@ export class SiteServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 处理用户角色关系
|
// 处理用户角色关系
|
||||||
const userRoleWrapper: QueryWrapper<SysUserRole> = new QueryWrapper<>();
|
userRoleWrapper = {};
|
||||||
userRoleWrapper.eq("site_id", id);
|
userRoleWrapper.eq("site_id", id);
|
||||||
siteUserRoles = sysUserRoleMapper.selectList(userRoleWrapper);
|
siteUserRoles = this.sysUserRoleRepository.find(userRoleWrapper);
|
||||||
delResult = sysUserRoleMapper.delete(userRoleWrapper);
|
delResult = this.sysUserRoleRepository.delete(userRoleWrapper);
|
||||||
|
|
||||||
// 删除站点主表
|
// 删除站点主表
|
||||||
siteMapper.deleteById(id);
|
this.siteRepository.delete(id);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("删除站点失败: {}", e.message, e);
|
log.error("删除站点失败: {}", e.message, e);
|
||||||
throw new BadRequestException("删除失败: " + (e.getCause() != null ? e.getCause().getMessage() : e.message));
|
throw new BadRequestException("删除失败: " + (e.getCause() != null ? e.getCause().getMessage() : e.message));
|
||||||
}
|
}
|
||||||
@@ -282,7 +281,7 @@ export class SiteServiceImplService {
|
|||||||
const model: Site = new Site();
|
const model: Site = new Site();
|
||||||
model.setSiteId(siteId);
|
model.setSiteId(siteId);
|
||||||
model.setStatus(SiteStatusEnum.CLOSE.getCode());
|
model.setStatus(SiteStatusEnum.CLOSE.getCode());
|
||||||
siteMapper.updateById(model);
|
this.siteRepository.save(model);
|
||||||
coreSiteService.clearSiteCache(siteId);
|
coreSiteService.clearSiteCache(siteId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,7 +292,7 @@ export class SiteServiceImplService {
|
|||||||
const model: Site = new Site();
|
const model: Site = new Site();
|
||||||
model.setSiteId(siteId);
|
model.setSiteId(siteId);
|
||||||
model.setStatus(SiteStatusEnum.ON.getCode());
|
model.setStatus(SiteStatusEnum.ON.getCode());
|
||||||
siteMapper.updateById(model);
|
this.siteRepository.save(model);
|
||||||
coreSiteService.clearSiteCache(siteId);
|
coreSiteService.clearSiteCache(siteId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,8 +300,8 @@ export class SiteServiceImplService {
|
|||||||
* getSiteCountByCondition
|
* getSiteCountByCondition
|
||||||
*/
|
*/
|
||||||
async getSiteCountByCondition(...args: any[]): Promise<any> {
|
async getSiteCountByCondition(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<Site> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
if (ObjectUtil.isNotEmpty(siteSearchParam.getCreateTime())) {
|
if (!!siteSearchParam.getCreateTime()) {
|
||||||
|
|
||||||
String[] createTime = siteSearchParam.getCreateTime();
|
String[] createTime = siteSearchParam.getCreateTime();
|
||||||
const startTime: number = (createTime[0] == null) ? 0 : DateUtils.StringToTimestamp(createTime[0]);
|
const startTime: number = (createTime[0] == null) ? 0 : DateUtils.StringToTimestamp(createTime[0]);
|
||||||
@@ -316,19 +315,19 @@ export class SiteServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(siteSearchParam.getStatus())) {
|
if (!!siteSearchParam.getStatus()) {
|
||||||
queryWrapper.eq("status", siteSearchParam.getStatus());
|
queryWrapper.eq("status", siteSearchParam.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(siteSearchParam.getGroupId())) {
|
if (!!siteSearchParam.getGroupId()) {
|
||||||
queryWrapper.eq("group_id", siteSearchParam.getGroupId());
|
queryWrapper.eq("group_id", siteSearchParam.getGroupId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(siteSearchParam.getAppType())) {
|
if (!!siteSearchParam.getAppType()) {
|
||||||
queryWrapper.eq("app_type", siteSearchParam.getAppType());
|
queryWrapper.eq("app_type", siteSearchParam.getAppType());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(siteSearchParam.getExpireTime())) {
|
if (!!siteSearchParam.getExpireTime()) {
|
||||||
|
|
||||||
String[] expireTime = siteSearchParam.getExpireTime();
|
String[] expireTime = siteSearchParam.getExpireTime();
|
||||||
const startTime: number = (expireTime[0] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[0]);
|
const startTime: number = (expireTime[0] == null) ? 0 : DateUtils.StringToTimestamp(expireTime[0]);
|
||||||
@@ -341,7 +340,7 @@ export class SiteServiceImplService {
|
|||||||
queryWrapper.le("expire_time", startTime);
|
queryWrapper.le("expire_time", startTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const siteCount: number = siteMapper.selectCount(queryWrapper);
|
const siteCount: number = this.siteRepository.count(queryWrapper);
|
||||||
return siteCount.intValue();
|
return siteCount.intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -349,7 +348,7 @@ export class SiteServiceImplService {
|
|||||||
* getSiteAddons
|
* getSiteAddons
|
||||||
*/
|
*/
|
||||||
async getSiteAddons(...args: any[]): Promise<any> {
|
async getSiteAddons(...args: any[]): Promise<any> {
|
||||||
return addonMapper.selectList(new QueryWrapper<Addon>()
|
return this.addonRepository.find(new ()
|
||||||
.eq("type", AddonTypeEnum.ADDON.getType())
|
.eq("type", AddonTypeEnum.ADDON.getType())
|
||||||
.eq("status", 1)
|
.eq("status", 1)
|
||||||
.in("`key`", coreSiteService.getAddonKeysBySiteId(RequestUtils.siteId())));
|
.in("`key`", coreSiteService.getAddonKeysBySiteId(RequestUtils.siteId())));
|
||||||
@@ -374,10 +373,10 @@ export class SiteServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async siteInit(...args: any[]): Promise<any> {
|
async siteInit(...args: any[]): Promise<any> {
|
||||||
const siteInfo: SiteInfoVo = info(siteId);
|
const siteInfo: SiteInfoVo = info(siteId);
|
||||||
if (ObjectUtil.isEmpty(siteInfo)) {
|
if (!siteInfo) {
|
||||||
throw new AdminException("站点不存在");
|
throw new AdminException("站点不存在");
|
||||||
}
|
}
|
||||||
const tables: string[] = SiteInitEnum.getSiteInitTables(siteId);
|
String[] tables = SiteInitEnum.getSiteInitTables(siteId);
|
||||||
return coreSiteService.siteInitBySiteId(siteId, tables);
|
return coreSiteService.siteInitBySiteId(siteId, tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,8 +387,8 @@ export class SiteServiceImplService {
|
|||||||
const authMenuList: JSONArray = authService.getAuthMenuTreeList(1, "all");
|
const authMenuList: JSONArray = authService.getAuthMenuTreeList(1, "all");
|
||||||
|
|
||||||
// 将菜单列表转换为Map,便于通过menu_key查找
|
// 将菜单列表转换为Map,便于通过menu_key查找
|
||||||
const authMenuMap: Record<string, any> = {};
|
const authMenuMap: Record<String, Record<string, any>> = new HashRecord<>();
|
||||||
for (const i of number = 0; i < authMenuList.size(); i++) {
|
for (const i of number = 0; i < authMenuList.length; i++) {
|
||||||
const menu: Record<string, any> = authMenuList.getJSONObject(i);
|
const menu: Record<string, any> = authMenuList.getJSONObject(i);
|
||||||
authMenuMap.put(menu.get("menu_key").toString(), menu);
|
authMenuMap.put(menu.get("menu_key").toString(), menu);
|
||||||
}
|
}
|
||||||
@@ -400,22 +399,22 @@ export class SiteServiceImplService {
|
|||||||
return new SpecialMenuListVo("addon", []);
|
return new SpecialMenuListVo("addon", []);
|
||||||
}
|
}
|
||||||
|
|
||||||
const showList: Record<string, any> = showCustomer(false);
|
const showList: Record<String, Object> = showCustomer(false);
|
||||||
const addonChildMenus: AddonChildMenuEnum.MenuConfig[] = AddonChildMenuEnum.getAll();
|
AddonChildMenuEnum.MenuConfig[] addonChildMenus = AddonChildMenuEnum.getAll();
|
||||||
|
|
||||||
const menuList: SpecialMenuListVo.MenuVo[] = [];
|
SpecialMenuListVo.MenuVo[] menuList = [];
|
||||||
|
|
||||||
// 遍历插件子菜单,构建菜单列表
|
// 遍历插件子菜单,构建菜单列表
|
||||||
for (AddonChildMenuEnum.MenuConfig item : addonChildMenus) {
|
for (AddonChildMenuEnum.MenuConfig item : addonChildMenus) {
|
||||||
const menuKey: string = item.getKey();
|
const menuKey: string = item.getKey();
|
||||||
const menuKeyList: string[] = [];
|
String[] menuKeyList = [];
|
||||||
if (showList.containsKey(menuKey) && showList.get(menuKey) instanceof Map) {
|
if (showList.containsKey(menuKey) && showList.get(menuKey) instanceof Map) {
|
||||||
const menuItem: Record<string, any> = (Map<String, Object>) showList.get(menuKey);
|
const menuItem: Record<String, Object> = (Record<String, Object>) showList.get(menuKey);
|
||||||
if (menuItem.containsKey("list") && menuItem.get("list") instanceof List) {
|
if (menuItem.containsKey("list") && menuItem.get("list") instanceof List) {
|
||||||
const listItems: Record<string, any>[] = (List<Map<String, Object>>) menuItem.get("list");
|
Record<String, Object[]> listItems = (Record<String, Object[]>) menuItem.get("list");
|
||||||
for (const listItem of listItems) {
|
for (const listItem of listItems) {
|
||||||
if (listItem.containsKey("key")) {
|
if (listItem.containsKey("key")) {
|
||||||
menuKeyList.add(listItem.get("key").toString());
|
menuKeyList.push(listItem.get("key").toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -435,21 +434,21 @@ export class SiteServiceImplService {
|
|||||||
tempMenu.setStatus("1");
|
tempMenu.setStatus("1");
|
||||||
tempMenu.setIsShow("1");
|
tempMenu.setIsShow("1");
|
||||||
|
|
||||||
const children: SpecialMenuListVo.MenuVo[] = [];
|
SpecialMenuListVo.MenuVo[] children = [];
|
||||||
const authChildren: JSONArray = addonMenu.getJSONArray("children");
|
const authChildren: JSONArray = addonMenu.getJSONArray("children");
|
||||||
if (authChildren != null) {
|
if (authChildren != null) {
|
||||||
for (const j of number = 0; j < authChildren.size(); j++) {
|
for (const j of number = 0; j < authChildren.length; j++) {
|
||||||
const child: Record<string, any> = authChildren.getJSONObject(j);
|
const child: Record<string, any> = authChildren.getJSONObject(j);
|
||||||
if (menuKeyList.includes(child.get("menu_key").toString())) {
|
if (menuKeyList.includes(child.get("menu_key").toString())) {
|
||||||
// 转换为MenuVo对象
|
// 转换为MenuVo对象
|
||||||
SpecialMenuListVo.const childMenu: MenuVo = convertToMenuVo(child);
|
SpecialMenuListVo.const childMenu: MenuVo = convertToMenuVo(child);
|
||||||
children.add(childMenu);
|
children.push(childMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tempMenu.setChildren(children);
|
tempMenu.setChildren(children);
|
||||||
menuList.add(tempMenu);
|
menuList.push(tempMenu);
|
||||||
}
|
}
|
||||||
const result: SpecialMenuListVo = new SpecialMenuListVo();
|
const result: SpecialMenuListVo = new SpecialMenuListVo();
|
||||||
result.setParentKey("addon");
|
result.setParentKey("addon");
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SiteUserServiceImplService {
|
export class SiteUserServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,31 +16,31 @@ export class SiteUserServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const userRoleMPJQueryWrapper: MPJQueryWrapper<SysUserRole> = new MPJQueryWrapper<>();
|
MPJuserRoleMPJQueryWrapper = new MPJQueryWrapper<>();
|
||||||
userRoleMPJQueryWrapper.select("nsur.id, nsur.is_admin, nsu.status, nsur.site_id, nsur.role_ids, nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count")
|
userRoleMPJQueryWrapper.select("nsur.id, nsur.is_admin, nsu.status, nsur.site_id, nsur.role_ids, nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count")
|
||||||
.setAlias("nsur")
|
.setAlias("nsur")
|
||||||
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix));
|
||||||
if(ObjectUtil.isNotNull(searchParam.getUsername()) && ObjectUtil.isNotEmpty(searchParam.getUsername())){
|
if(ObjectUtil.isNotNull(searchParam.getUsername()) && !!searchParam.getUsername()){
|
||||||
userRoleMPJQueryWrapper.like("nsu.username", searchParam.getUsername());
|
userRoleMPJQueryWrapper.like("nsu.username", searchParam.getUsername());
|
||||||
}
|
}
|
||||||
userRoleMPJQueryWrapper.eq("nsur.site_id", RequestUtils.siteId());
|
userRoleMPJQueryWrapper.eq("nsur.site_id", RequestUtils.siteId());
|
||||||
userRoleMPJQueryWrapper.isNotNull("nsu.uid");
|
userRoleMPJQueryWrapper.isNotNull("nsu.uid");
|
||||||
userRoleMPJQueryWrapper.orderByDesc("nsur.is_admin");
|
userRoleMPJQueryWrapper.orderByDesc("nsur.is_admin");
|
||||||
userRoleMPJQueryWrapper.orderByDesc("nsur.id");
|
userRoleMPJQueryWrapper.orderByDesc("nsur.id");
|
||||||
const iPage: IPage<SiteUserVo> = sysUserRoleMapper.selectJoinPage(new Page<>(page, limit), SiteUserVo.class, userRoleMPJQueryWrapper);
|
iPage = sysUserRoleMapper.selectJoinPage({ /* pagination */ }, SiteUserVo.class, userRoleMPJQueryWrapper);
|
||||||
for (const siteUserVo of iPage.getRecords()) {
|
for (const siteUserVo of records) {
|
||||||
const roleArray: string[] = [];
|
String[] roleArray=[];
|
||||||
if(ObjectUtil.isNotEmpty(siteUserVo.getRoleIds()) && JSONUtil.parseArray(siteUserVo.getRoleIds()).size()>0){
|
if(!!siteUserVo.getRoleIds() && JSONUtil.parseArray(siteUserVo.getRoleIds()).size()>0){
|
||||||
const roleQueryWrapper: QueryWrapper<SysRole> = new QueryWrapper<>();
|
roleQueryWrapper={};
|
||||||
roleQueryWrapper.in("role_id", JSONUtil.parseArray(siteUserVo.getRoleIds()));
|
roleQueryWrapper.in("role_id", JSONUtil.parseArray(siteUserVo.getRoleIds()));
|
||||||
const roleList: SysRole[] = sysRoleMapper.selectList(roleQueryWrapper);
|
SysRole[] roleList=this.sysRoleRepository.find(roleQueryWrapper);
|
||||||
for (const sysRole of roleList) {
|
for (const sysRole of roleList) {
|
||||||
roleArray.add(sysRole.getRoleName());
|
roleArray.push(sysRole.getRoleName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
siteUserVo.setRoleArray(roleArray);
|
siteUserVo.setRoleArray(roleArray);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(iPage.getRecords());
|
return PageResult.build(page, limit, total).setData(records);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,10 +57,10 @@ export class SiteUserServiceImplService {
|
|||||||
* getInfo
|
* getInfo
|
||||||
*/
|
*/
|
||||||
async getInfo(...args: any[]): Promise<any> {
|
async getInfo(...args: any[]): Promise<any> {
|
||||||
const userRoleMPJQueryWrapper: MPJQueryWrapper<SysUserRole> = new MPJQueryWrapper<>();
|
MPJuserRoleMPJQueryWrapper = new MPJQueryWrapper<>();
|
||||||
userRoleMPJQueryWrapper.select("nsur.id, nsur.is_admin, nsur.status,nsur.site_id, nsur.role_ids, nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count")
|
userRoleMPJQueryWrapper.select("nsur.id, nsur.is_admin, nsur.status,nsur.site_id, nsur.role_ids, nsu.uid, nsu.username, nsu.head_img, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count")
|
||||||
.setAlias("nsur")
|
.setAlias("nsur")
|
||||||
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix));
|
||||||
userRoleMPJQueryWrapper.eq("nsur.site_id", RequestUtils.siteId());
|
userRoleMPJQueryWrapper.eq("nsur.site_id", RequestUtils.siteId());
|
||||||
userRoleMPJQueryWrapper.eq("nsu.uid", uid);
|
userRoleMPJQueryWrapper.eq("nsu.uid", uid);
|
||||||
|
|
||||||
@@ -76,7 +75,7 @@ export class SiteUserServiceImplService {
|
|||||||
try{
|
try{
|
||||||
const sysUserParam: SysUserParam = new SysUserParam();
|
const sysUserParam: SysUserParam = new SysUserParam();
|
||||||
sysUserParam.setHeadImg(siteUserParam.getHeadImg());
|
sysUserParam.setHeadImg(siteUserParam.getHeadImg());
|
||||||
if(ObjectUtil.isNotEmpty(siteUserParam.getPassword())){
|
if(!!siteUserParam.getPassword()){
|
||||||
sysUserParam.setPassword(siteUserParam.getPassword());
|
sysUserParam.setPassword(siteUserParam.getPassword());
|
||||||
}
|
}
|
||||||
sysUserParam.setUsername(siteUserParam.getUsername());
|
sysUserParam.setUsername(siteUserParam.getUsername());
|
||||||
@@ -84,14 +83,14 @@ export class SiteUserServiceImplService {
|
|||||||
sysUserParam.setRealName(siteUserParam.getRealName());
|
sysUserParam.setRealName(siteUserParam.getRealName());
|
||||||
sysUserService.edit(uid, sysUserParam);
|
sysUserService.edit(uid, sysUserParam);
|
||||||
//创建用户站点管理权限
|
//创建用户站点管理权限
|
||||||
const roleIds: string[] = siteUserParam.getRoleIds();
|
String[] roleIds=siteUserParam.getRoleIds();
|
||||||
const sysUserRoleParam: SysUserRoleParam = new SysUserRoleParam();
|
const sysUserRoleParam: SysUserRoleParam = new SysUserRoleParam();
|
||||||
sysUserRoleParam.setSiteId(RequestUtils.siteId());
|
sysUserRoleParam.setSiteId(RequestUtils.siteId());
|
||||||
sysUserRoleParam.setRoleIds(JSONUtil.toJsonStr(roleIds));
|
sysUserRoleParam.setRoleIds(JSON.stringify(roleIds));
|
||||||
sysUserRoleParam.setUid(uid);
|
sysUserRoleParam.setUid(uid);
|
||||||
sysUserRoleParam.setStatus(siteUserParam.getStatus());
|
sysUserRoleParam.setStatus(siteUserParam.getStatus());
|
||||||
sysUserRoleService.edit(sysUserRoleParam);
|
sysUserRoleService.edit(sysUserRoleParam);
|
||||||
}catch (e){
|
}catch (Exception e){
|
||||||
throw new AdminException(e.message);
|
throw new AdminException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,7 +101,7 @@ export class SiteUserServiceImplService {
|
|||||||
async lock(...args: any[]): Promise<any> {
|
async lock(...args: any[]): Promise<any> {
|
||||||
const sysUser: SysUser = sysUserMapper.selectById(uid);
|
const sysUser: SysUser = sysUserMapper.selectById(uid);
|
||||||
sysUser.setStatus(StatusEnum.OFF.getStatus());
|
sysUser.setStatus(StatusEnum.OFF.getStatus());
|
||||||
sysUserMapper.updateById(sysUser);
|
this.sysUserRepository.save(sysUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -111,14 +110,14 @@ export class SiteUserServiceImplService {
|
|||||||
async unlock(...args: any[]): Promise<any> {
|
async unlock(...args: any[]): Promise<any> {
|
||||||
const sysUser: SysUser = sysUserMapper.selectById(uid);
|
const sysUser: SysUser = sysUserMapper.selectById(uid);
|
||||||
sysUser.setStatus(StatusEnum.ON.getStatus());
|
sysUser.setStatus(StatusEnum.ON.getStatus());
|
||||||
sysUserMapper.updateById(sysUser);
|
this.sysUserRepository.save(sysUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* delete
|
* delete
|
||||||
*/
|
*/
|
||||||
async delete(...args: any[]): Promise<void> {
|
async delete(...args: any[]): Promise<void> {
|
||||||
const sysUserRoleList: SysUserRole[] = sysUserRoleMapper.selectList(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUid, uid).eq(SysUserRole::getSiteId, RequestUtils.siteId()).last("limit 1"));
|
SysUserRole[] sysUserRoleList = this.sysUserRoleRepository.find(new Lambda().eq(SysUserRole::getUid, uid).eq(SysUserRole::getSiteId, RequestUtils.siteId()).last("limit 1"));
|
||||||
if (CollectionUtils.isEmpty(sysUserRoleList)){
|
if (CollectionUtils.isEmpty(sysUserRoleList)){
|
||||||
throw new BadRequestException("用户不存在");
|
throw new BadRequestException("用户不存在");
|
||||||
}
|
}
|
||||||
@@ -126,7 +125,7 @@ export class SiteUserServiceImplService {
|
|||||||
if (sysUserRole.getIsAdmin() == 1){
|
if (sysUserRole.getIsAdmin() == 1){
|
||||||
throw new BadRequestException("超级管理员不允许删除");
|
throw new BadRequestException("超级管理员不允许删除");
|
||||||
}
|
}
|
||||||
sysUserMapper.deleteById(uid);
|
this.sysUserRepository.delete(uid);
|
||||||
loginService.clearToken(uid,null, null);
|
loginService.clearToken(uid,null, null);
|
||||||
cached.remove("user_role_list_" + uid);
|
cached.remove("user_role_list_" + uid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,32 +16,32 @@ export class StatHourServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<StatHour> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<StatHour> = statHourMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.statHourRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: StatHourListVo[] = [];
|
StatHourListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: StatHourListVo = new StatHourListVo();
|
const vo: StatHourListVo = new StatHourListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: StatHour = statHourMapper.selectOne(
|
const model: StatHour = this.statHourRepository.findOne(
|
||||||
new QueryWrapper<StatHour>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: StatHourInfoVo = new StatHourInfoVo();
|
const vo: StatHourInfoVo = new StatHourInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ export class StatHourServiceImplService {
|
|||||||
model.setYear(addParam.getYear());
|
model.setYear(addParam.getYear());
|
||||||
model.setMonth(addParam.getMonth());
|
model.setMonth(addParam.getMonth());
|
||||||
model.setDay(addParam.getDay());
|
model.setDay(addParam.getDay());
|
||||||
model.setStartTime(System.currentTimeMillis() / 1000);
|
model.setStartTime(Math.floor(Date.now() / 1000));
|
||||||
model.setLastTime(addParam.getLastTime());
|
model.setLastTime(addParam.getLastTime());
|
||||||
model.setHour0(addParam.getHour0());
|
model.setHour0(addParam.getHour0());
|
||||||
model.setHour1(addParam.getHour1());
|
model.setHour1(addParam.getHour1());
|
||||||
@@ -83,19 +83,19 @@ export class StatHourServiceImplService {
|
|||||||
model.setHour21(addParam.getHour21());
|
model.setHour21(addParam.getHour21());
|
||||||
model.setHour22(addParam.getHour22());
|
model.setHour22(addParam.getHour22());
|
||||||
model.setHour23(addParam.getHour23());
|
model.setHour23(addParam.getHour23());
|
||||||
statHourMapper.insert(model);
|
this.statHourRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: StatHour = statHourMapper.selectOne(
|
const model: StatHour = this.statHourRepository.findOne(
|
||||||
new QueryWrapper<StatHour>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
model.setId(id);
|
model.setId(id);
|
||||||
model.setSiteId(editParam.getSiteId());
|
model.setSiteId(editParam.getSiteId());
|
||||||
model.setAddon(editParam.getAddon());
|
model.setAddon(editParam.getAddon());
|
||||||
@@ -129,20 +129,20 @@ export class StatHourServiceImplService {
|
|||||||
model.setHour21(editParam.getHour21());
|
model.setHour21(editParam.getHour21());
|
||||||
model.setHour22(editParam.getHour22());
|
model.setHour22(editParam.getHour22());
|
||||||
model.setHour23(editParam.getHour23());
|
model.setHour23(editParam.getHour23());
|
||||||
statHourMapper.updateById(model);
|
this.statHourRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: StatHour = statHourMapper.selectOne(
|
const model: StatHour = this.statHourRepository.findOne(
|
||||||
new QueryWrapper<StatHour>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
statHourMapper.delete(new QueryWrapper<StatHour>().eq("id", id));
|
this.statHourRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,9 +71,9 @@ export class StatServiceImplService {
|
|||||||
*/
|
*/
|
||||||
const memberCountVo: StatDateVo = new StatDateVo();
|
const memberCountVo: StatDateVo = new StatDateVo();
|
||||||
const siteCountVo: StatDateVo = new StatDateVo();
|
const siteCountVo: StatDateVo = new StatDateVo();
|
||||||
const dates: string[] = [];
|
String[] dates = [];
|
||||||
const memberValues: number[] = [];
|
number[] memberValues = [];
|
||||||
const siteValues: number[] = [];
|
number[] siteValues = [];
|
||||||
const statNum: number = 7;
|
const statNum: number = 7;
|
||||||
for (const i of number = 0; i <= statNum; i++) {
|
for (const i of number = 0; i <= statNum; i++) {
|
||||||
|
|
||||||
@@ -83,12 +83,12 @@ export class StatServiceImplService {
|
|||||||
const itemMemberParam: MemberStatSearchParam = new MemberStatSearchParam();
|
const itemMemberParam: MemberStatSearchParam = new MemberStatSearchParam();
|
||||||
itemMemberParam.setCreateTime(startEndDate);
|
itemMemberParam.setCreateTime(startEndDate);
|
||||||
const itemMemberCount: number = coreMemberService.getMemberCount(itemMemberParam);
|
const itemMemberCount: number = coreMemberService.getMemberCount(itemMemberParam);
|
||||||
dates.add(startEndDate[0]);
|
dates.push(startEndDate[0]);
|
||||||
memberValues.add(itemMemberCount);
|
memberValues.push(itemMemberCount);
|
||||||
const itemSiteParam: SiteSearchParam = new SiteSearchParam();
|
const itemSiteParam: SiteSearchParam = new SiteSearchParam();
|
||||||
itemSiteParam.setCreateTime(startEndDate);
|
itemSiteParam.setCreateTime(startEndDate);
|
||||||
const itemSiteCount: number = siteService.getSiteCountByCondition(itemSiteParam);
|
const itemSiteCount: number = siteService.getSiteCountByCondition(itemSiteParam);
|
||||||
siteValues.add(itemSiteCount);
|
siteValues.push(itemSiteCount);
|
||||||
}
|
}
|
||||||
memberCountVo.setDate(dates);
|
memberCountVo.setDate(dates);
|
||||||
memberCountVo.setValue(memberValues);
|
memberCountVo.setValue(memberValues);
|
||||||
@@ -102,20 +102,20 @@ export class StatServiceImplService {
|
|||||||
* 会员性别类型统计
|
* 会员性别类型统计
|
||||||
*/
|
*/
|
||||||
const memberStat: StatTypeVo = new StatTypeVo();
|
const memberStat: StatTypeVo = new StatTypeVo();
|
||||||
const sexlist: string[] = [];
|
String[] sexlist = [];
|
||||||
sexlist.add(SexEnum.path.basename(MAN));
|
sexlist.push(SexEnum.path.basename(MAN));
|
||||||
sexlist.add(SexEnum.path.basename(WOMAN));
|
sexlist.push(SexEnum.path.basename(WOMAN));
|
||||||
sexlist.add(SexEnum.path.basename(UNKNOWN));
|
sexlist.push(SexEnum.path.basename(UNKNOWN));
|
||||||
|
|
||||||
const sexCountList: number[] = [];
|
number[] sexCountList = [];
|
||||||
const sexMemberParam: MemberStatSearchParam = new MemberStatSearchParam();
|
const sexMemberParam: MemberStatSearchParam = new MemberStatSearchParam();
|
||||||
sexMemberParam.setSex(SexEnum.MAN.getValue());
|
sexMemberParam.setSex(SexEnum.MAN.getValue());
|
||||||
const manSexCount: number = coreMemberService.getMemberCount(sexMemberParam);
|
const manSexCount: number = coreMemberService.getMemberCount(sexMemberParam);
|
||||||
sexMemberParam.setSex(SexEnum.WOMAN.getValue());
|
sexMemberParam.setSex(SexEnum.WOMAN.getValue());
|
||||||
const womanSexCount: number = coreMemberService.getMemberCount(sexMemberParam);
|
const womanSexCount: number = coreMemberService.getMemberCount(sexMemberParam);
|
||||||
sexCountList.add(manSexCount);
|
sexCountList.push(manSexCount);
|
||||||
sexCountList.add(womanSexCount);
|
sexCountList.push(womanSexCount);
|
||||||
sexCountList.add(totalMemberCount - manSexCount - womanSexCount);
|
sexCountList.push(totalMemberCount - manSexCount - womanSexCount);
|
||||||
memberStat.setType(sexlist);
|
memberStat.setType(sexlist);
|
||||||
memberStat.setValue(sexCountList);
|
memberStat.setValue(sexCountList);
|
||||||
statInfoVo.setMemberStat(memberStat);
|
statInfoVo.setMemberStat(memberStat);
|
||||||
@@ -124,15 +124,15 @@ export class StatServiceImplService {
|
|||||||
* 站点分组 统计
|
* 站点分组 统计
|
||||||
*/
|
*/
|
||||||
const siteGroupStat: StatTypeVo = new StatTypeVo();
|
const siteGroupStat: StatTypeVo = new StatTypeVo();
|
||||||
const grouplist: string[] = [];
|
String[] grouplist = [];
|
||||||
const groupCountList: number[] = [];
|
number[] groupCountList = [];
|
||||||
|
|
||||||
const groupList: SiteGroup[] = siteGroupService.getAll();
|
SiteGroup[] groupList = siteGroupService.getAll();
|
||||||
for (const siteGroup of groupList) {
|
for (const siteGroup of groupList) {
|
||||||
grouplist.add(siteGroup.getGroupName());
|
grouplist.push(siteGroup.getGroupName());
|
||||||
const siteGroupParam: SiteSearchParam = new SiteSearchParam();
|
const siteGroupParam: SiteSearchParam = new SiteSearchParam();
|
||||||
siteGroupParam.setGroupId(siteGroup.getGroupId());
|
siteGroupParam.setGroupId(siteGroup.getGroupId());
|
||||||
groupCountList.add(siteService.getSiteCountByCondition(siteGroupParam));
|
groupCountList.push(siteService.getSiteCountByCondition(siteGroupParam));
|
||||||
}
|
}
|
||||||
siteGroupStat.setType(grouplist);
|
siteGroupStat.setType(grouplist);
|
||||||
siteGroupStat.setValue(groupCountList);
|
siteGroupStat.setValue(groupCountList);
|
||||||
|
|||||||
@@ -14,13 +14,13 @@ export class SysAgreementServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const typeJson: Record<string, any> = AgreementEnum.getType();
|
const typeJson: Record<string, any> = AgreementEnum.getType();
|
||||||
const list: SysAgreementListVo[] = [];
|
SysAgreementListVo[] list = [];
|
||||||
|
|
||||||
for (Map.Entry<String, Object> map : typeJson.entrySet()) {
|
for (Map.Entry<String, Object> map : typeJson.entrySet()) {
|
||||||
const vo: SysAgreementListVo = new SysAgreementListVo();
|
const vo: SysAgreementListVo = new SysAgreementListVo();
|
||||||
const sysAgreement: SysAgreement = coreAgreementService.getAgreement(RequestUtils.siteId(), map.getKey());
|
const sysAgreement: SysAgreement = coreAgreementService.getAgreement(RequestUtils.siteId(), map.getKey());
|
||||||
BeanUtils.copyProperties(sysAgreement, vo);
|
Object.assign(vo, sysAgreement);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
@@ -32,7 +32,7 @@ export class SysAgreementServiceImplService {
|
|||||||
async getAgreement(...args: any[]): Promise<any> {
|
async getAgreement(...args: any[]): Promise<any> {
|
||||||
const sysAgreement: SysAgreement = coreAgreementService.getAgreement(RequestUtils.siteId(), key);
|
const sysAgreement: SysAgreement = coreAgreementService.getAgreement(RequestUtils.siteId(), key);
|
||||||
const vo: SysAgreementInfoVo = new SysAgreementInfoVo();
|
const vo: SysAgreementInfoVo = new SysAgreementInfoVo();
|
||||||
BeanUtils.copyProperties(sysAgreement, vo);
|
Object.assign(vo, sysAgreement);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,19 +14,19 @@ export class SysAreaServiceImplService {
|
|||||||
* getListByPid
|
* getListByPid
|
||||||
*/
|
*/
|
||||||
async getListByPid(...args: any[]): Promise<any> {
|
async getListByPid(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysArea> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("pid", pid);
|
queryWrapper.eq("pid", pid);
|
||||||
return sysAreaMapper.selectList(queryWrapper);
|
return this.sysAreaRepository.find(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getAreaTree
|
* getAreaTree
|
||||||
*/
|
*/
|
||||||
async getAreaTree(...args: any[]): Promise<any> {
|
async getAreaTree(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysArea> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.le("level", level);
|
queryWrapper.le("level", level);
|
||||||
const list: SysArea[] = sysAreaMapper.selectList(queryWrapper);
|
SysArea[] list = this.sysAreaRepository.find(queryWrapper);
|
||||||
const jsonArray: JSONArray = JSONUtil.parseArray(JSONUtil.toJsonStr(list));
|
const jsonArray: JSONArray = JSONUtil.parseArray(JSON.stringify(list));
|
||||||
return TreeUtils.listToTree(jsonArray, "id", "pid", "child");
|
return TreeUtils.listToTree(jsonArray, "id", "pid", "child");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ export class SysAreaServiceImplService {
|
|||||||
* getAreaId
|
* getAreaId
|
||||||
*/
|
*/
|
||||||
async getAreaId(...args: any[]): Promise<any> {
|
async getAreaId(...args: any[]): Promise<any> {
|
||||||
const areaInfo: SysArea = sysAreaMapper.selectOne(new QueryWrapper<SysArea>().like("name", name).eq("level", level).last("limit 1"));
|
const areaInfo: SysArea = this.sysAreaRepository.findOne(new ().like("name", name).eq("level", level).last("limit 1"));
|
||||||
if (areaInfo != null) {
|
if (areaInfo != null) {
|
||||||
return areaInfo.getId();
|
return areaInfo.getId();
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,7 @@ export class SysAreaServiceImplService {
|
|||||||
* getAreaName
|
* getAreaName
|
||||||
*/
|
*/
|
||||||
async getAreaName(...args: any[]): Promise<any> {
|
async getAreaName(...args: any[]): Promise<any> {
|
||||||
const areaInfo: SysArea = sysAreaMapper.selectOne(new QueryWrapper<SysArea>().eq("id", id).last("limit 1"));
|
const areaInfo: SysArea = this.sysAreaRepository.findOne(new ().eq("id", id).last("limit 1"));
|
||||||
if (areaInfo != null) {
|
if (areaInfo != null) {
|
||||||
return path.basename(areaInfo);
|
return path.basename(areaInfo);
|
||||||
}
|
}
|
||||||
@@ -59,17 +59,17 @@ export class SysAreaServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysArea> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||||
|
|
||||||
const iPage: IPage<SysArea> = sysAreaMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysAreaRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysAreaListVo[] = [];
|
SysAreaListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysAreaListVo = new SysAreaListVo();
|
const vo: SysAreaListVo = new SysAreaListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,7 +79,7 @@ export class SysAreaServiceImplService {
|
|||||||
const map: SysMapVo = coreSysConfigService.getMap(RequestUtils.siteId());
|
const map: SysMapVo = coreSysConfigService.getMap(RequestUtils.siteId());
|
||||||
const result: string = HttpUtil.get("https://apis.map.qq.com/ws/geocoder/v1/?location="+ location +"&key=" + map.getKey());
|
const result: string = HttpUtil.get("https://apis.map.qq.com/ws/geocoder/v1/?location="+ location +"&key=" + map.getKey());
|
||||||
if (!JSONUtil.isJson(result)) return null;
|
if (!JSONUtil.isJson(result)) return null;
|
||||||
return JSONUtil.parseObj(result);
|
return JSON.parse(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -89,6 +89,6 @@ export class SysAreaServiceImplService {
|
|||||||
const map: SysMapVo = coreSysConfigService.getMap(RequestUtils.siteId());
|
const map: SysMapVo = coreSysConfigService.getMap(RequestUtils.siteId());
|
||||||
const result: string = HttpUtil.get("https://apis.map.qq.com/ws/geocoder/v1/?address="+ address +"&key=" + map.getKey());
|
const result: string = HttpUtil.get("https://apis.map.qq.com/ws/geocoder/v1/?address="+ address +"&key=" + map.getKey());
|
||||||
if (!JSONUtil.isJson(result)) return null;
|
if (!JSONUtil.isJson(result)) return null;
|
||||||
return JSONUtil.parseObj(result);
|
return JSON.parse(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,22 +17,22 @@ export class SysAttachmentServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysAttachment> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("att_id");
|
queryWrapper.orderByDesc("att_id");
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getAttType())) queryWrapper.eq("att_type", searchParam.getAttType());
|
if (!!searchParam.getAttType()) queryWrapper.eq("att_type", searchParam.getAttType());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCateId()) && searchParam.getCateId() > 0) queryWrapper.eq("cate_id", searchParam.getCateId());
|
if (!!searchParam.getCateId() && searchParam.getCateId() > 0) queryWrapper.eq("cate_id", searchParam.getCateId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getRealName())) queryWrapper.like("real_name", searchParam.getRealName());
|
if (!!searchParam.getRealName()) queryWrapper.like("real_name", searchParam.getRealName());
|
||||||
|
|
||||||
const iPage: IPage<SysAttachment> = sysAttachmentMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysAttachmentRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysAttachmentListVo[] = [];
|
SysAttachmentListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysAttachmentListVo = new SysAttachmentListVo();
|
const vo: SysAttachmentListVo = new SysAttachmentListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setThumb(CommonUtils.thumbImageSmall(item.getSiteId(), item));
|
vo.setThumb(CommonUtils.thumbImageSmall(item.getSiteId(), item));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,7 +73,7 @@ export class SysAttachmentServiceImplService {
|
|||||||
async batchMoveCategory(...args: any[]): Promise<any> {
|
async batchMoveCategory(...args: any[]): Promise<any> {
|
||||||
const model: SysAttachment = new SysAttachment();
|
const model: SysAttachment = new SysAttachment();
|
||||||
model.setCateId(param.getCateId());
|
model.setCateId(param.getCateId());
|
||||||
sysAttachmentMapper.update(model, new QueryWrapper<SysAttachment>()
|
sysAttachmentMapper.update(model, new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.in("att_id", param.getAttIds()));
|
.in("att_id", param.getAttIds()));
|
||||||
}
|
}
|
||||||
@@ -82,8 +82,8 @@ export class SysAttachmentServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const sysAttachmentList: SysAttachment[] = sysAttachmentMapper.selectList(
|
SysAttachment[] sysAttachmentList = this.sysAttachmentRepository.find(
|
||||||
new QueryWrapper<SysAttachment>()
|
new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.in("att_id", param.getAttIds()));
|
.in("att_id", param.getAttIds()));
|
||||||
if (sysAttachmentList.length === 0) {
|
if (sysAttachmentList.length === 0) {
|
||||||
@@ -92,7 +92,7 @@ export class SysAttachmentServiceImplService {
|
|||||||
for (const sysAttachment of sysAttachmentList) {
|
for (const sysAttachment of sysAttachmentList) {
|
||||||
coreUploadService.delete(sysAttachment.getSiteId(), sysAttachment.getStorageType(), sysAttachment);
|
coreUploadService.delete(sysAttachment.getSiteId(), sysAttachment.getStorageType(), sysAttachment);
|
||||||
}
|
}
|
||||||
sysAttachmentMapper.delete(new QueryWrapper<SysAttachment>().eq("site_id", RequestUtils.siteId()).in("att_id", param.getAttIds()));
|
this.sysAttachmentRepository.delete(new ().eq("site_id", RequestUtils.siteId()).in("att_id", param.getAttIds()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,18 +101,18 @@ export class SysAttachmentServiceImplService {
|
|||||||
async getCategoryList(...args: any[]): Promise<any> {
|
async getCategoryList(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<SysAttachmentCategory> = new MPJQueryWrapper<SysAttachmentCategory>();
|
MPJqueryWrapper = new MPJ();
|
||||||
queryWrapper.select("id,name,type").eq("site_id", siteId);
|
queryWrapper.select("id,name,type").eq("site_id", siteId);
|
||||||
if (ObjectUtil.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam));
|
if (!!path.basename(searchParam)) queryWrapper.like("name", path.basename(searchParam));
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) queryWrapper.eq("type", searchParam.getType());
|
if (!!searchParam.getType()) queryWrapper.eq("type", searchParam.getType());
|
||||||
|
|
||||||
const categorys: SysAttachmentCategory[] = sysAttachmentCategoryMapper.selectList(queryWrapper); // 调用 selectList 方法
|
SysAttachmentCategory[] categorys = this.sysAttachmentCategoryRepository.find(queryWrapper); // 调用 selectList 方法
|
||||||
|
|
||||||
const list: SysAttachmentCategoryListVo[] = [];
|
SysAttachmentCategoryListVo[] list = [];
|
||||||
for (const item of categorys) {
|
for (const item of categorys) {
|
||||||
const vo: SysAttachmentCategoryListVo = new SysAttachmentCategoryListVo();
|
const vo: SysAttachmentCategoryListVo = new SysAttachmentCategoryListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -121,13 +121,13 @@ export class SysAttachmentServiceImplService {
|
|||||||
* addCategory
|
* addCategory
|
||||||
*/
|
*/
|
||||||
async addCategory(...args: any[]): Promise<any> {
|
async addCategory(...args: any[]): Promise<any> {
|
||||||
if (ObjectUtil.isEmpty(addParam.getType())) throw new BadRequestException("type参数不能为空");
|
if (!addParam.getType()) throw new BadRequestException("type参数不能为空");
|
||||||
|
|
||||||
const model: SysAttachmentCategory = new SysAttachmentCategory();
|
const model: SysAttachmentCategory = new SysAttachmentCategory();
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setType(addParam.getType());
|
model.setType(addParam.getType());
|
||||||
model.setName(path.basename(addParam));
|
model.setName(path.basename(addParam));
|
||||||
sysAttachmentCategoryMapper.insert(model);
|
this.sysAttachmentCategoryRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -151,10 +151,10 @@ export class SysAttachmentServiceImplService {
|
|||||||
async delCategory(...args: any[]): Promise<any> {
|
async delCategory(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysAttachmentCategory> = new QueryWrapper<SysAttachmentCategory>()
|
queryWrapper = new ()
|
||||||
.eq("site_id", siteId)
|
.eq("site_id", siteId)
|
||||||
.eq("id", id);
|
.eq("id", id);
|
||||||
|
|
||||||
sysAttachmentCategoryMapper.delete(queryWrapper);
|
this.sysAttachmentCategoryRepository.delete(queryWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SysBackupRecordsServiceImplService {
|
export class SysBackupRecordsServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -18,7 +17,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysBackupRecords> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.orderByDesc("create_time");
|
||||||
|
|
||||||
if (searchParam != null) {
|
if (searchParam != null) {
|
||||||
@@ -27,19 +26,19 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const iPage: IPage<SysBackupRecords> = sysBackupRecordsMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysBackupRecordsRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysBackupRecordsListVo[] = [];
|
SysBackupRecordsListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysBackupRecordsListVo = new SysBackupRecordsListVo();
|
const vo: SysBackupRecordsListVo = new SysBackupRecordsListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
||||||
vo.setCompleteTime(DateUtils.timestampToString(item.getCompleteTime()));
|
vo.setCompleteTime(DateUtils.timestampToString(item.getCompleteTime()));
|
||||||
vo.setStatusName(BackupRecordStatusEnum.getNameByStatus(vo.getStatus()));
|
vo.setStatusName(BackupRecordStatusEnum.getNameByStatus(vo.getStatus()));
|
||||||
vo.setBackupDir("webroot/runtime/upgrade/"+vo.getBackupKey()+"/backup");
|
vo.setBackupDir("webroot/runtime/upgrade/"+vo.getBackupKey()+"/backup");
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -47,29 +46,29 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const model: SysBackupRecords = new SysBackupRecords();
|
const model: SysBackupRecords = new SysBackupRecords();
|
||||||
BeanUtils.copyProperties(addParam, model);
|
Object.assign(model, addParam);
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
sysBackupRecordsMapper.insert(model);
|
this.sysBackupRecordsRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysBackupRecords = sysBackupRecordsMapper.selectOne(
|
const model: SysBackupRecords = this.sysBackupRecordsRepository.findOne(
|
||||||
new QueryWrapper<SysBackupRecords>()
|
new ()
|
||||||
.eq("id", id));
|
.eq("id", id));
|
||||||
Assert.notNull(model, "备份记录不存在");
|
if (!model) throw new BadRequestException("备份记录不存在");
|
||||||
|
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
sysBackupRecordsMapper.updateById(model);
|
this.sysBackupRecordsRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clear
|
* clear
|
||||||
*/
|
*/
|
||||||
async clear(...args: any[]): Promise<any> {
|
async clear(...args: any[]): Promise<any> {
|
||||||
sysBackupRecordsMapper.delete(new QueryWrapper<SysBackupRecords>()
|
this.sysBackupRecordsRepository.delete(new ()
|
||||||
.lt("create_time", threshold).in("status", STATUS_READY, STATUS_FAIL));
|
.lt("create_time", threshold).in("status", STATUS_READY, STATUS_FAIL));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,31 +76,31 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper = new QueryWrapper<SysUpgradeRecords>();
|
const queryWrapper: QueryWrapper = new ();
|
||||||
|
|
||||||
if (delParam.getIds() instanceof ArrayList<?>) {
|
if (delParam.getIds() instanceof Array?[]) {
|
||||||
const intArray: number[] = [];
|
number[] intArray = [];
|
||||||
((ArrayList<?>) delParam.getIds()).forEach(item => {
|
((Array?[]) delParam.getIds()).forEach(item => {
|
||||||
Assert.notNull(item, "id不能为空");
|
if (!item) throw new BadRequestException("id不能为空");
|
||||||
intArray.add(item);
|
intArray.push((number) item);
|
||||||
});
|
});
|
||||||
queryWrapper.in("id", intArray);
|
queryWrapper.in("id", intArray);
|
||||||
} else {
|
} else {
|
||||||
queryWrapper.eq("id", delParam.getIds());
|
queryWrapper.eq("id", delParam.getIds());
|
||||||
}
|
}
|
||||||
|
|
||||||
const backupRecords: SysBackupRecords[] = sysBackupRecordsMapper.selectList(queryWrapper);
|
SysBackupRecords[] backupRecords = this.sysBackupRecordsRepository.find(queryWrapper);
|
||||||
if (ObjectUtil.isNotEmpty(backupRecords)) {
|
if (!!backupRecords) {
|
||||||
for (const item of backupRecords) {
|
for (const item of backupRecords) {
|
||||||
const file: string = backupDir(item.getBackupKey(), "backup");
|
const file: string = backupDir(item.getBackupKey(), "backup");
|
||||||
if (fs.existsSync(file)) {
|
if (fs.existsSync(file)) {
|
||||||
try {
|
try {
|
||||||
fs.rmSync(file, { recursive: true, force: true });
|
fs.rmSync(file, { recursive: true, force: true });
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sysBackupRecordsMapper.delete(queryWrapper);
|
this.sysBackupRecordsRepository.delete(queryWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +113,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
const vo: BackupTaskVo = getRestoreTask();
|
const vo: BackupTaskVo = getRestoreTask();
|
||||||
if (vo == null) {
|
if (vo == null) {
|
||||||
vo = new BackupTaskVo();
|
vo = new BackupTaskVo();
|
||||||
LinkedHashMap<String, BackupTaskVo.const steps: Step> = new LinkedHashMap<>();
|
LinkedHashRecord<String, BackupTaskVo.const steps: Step> = new LinkedHashRecord<>();
|
||||||
steps.put("startRestore", new BackupTaskVo.Step("startRestore", "开始恢复"));
|
steps.put("startRestore", new BackupTaskVo.Step("startRestore", "开始恢复"));
|
||||||
steps.put("backupCode", new BackupTaskVo.Step("backupCode", "备份源码"));
|
steps.put("backupCode", new BackupTaskVo.Step("backupCode", "备份源码"));
|
||||||
steps.put("backupSql", new BackupTaskVo.Step("backupSql", "备份数据库"));
|
steps.put("backupSql", new BackupTaskVo.Step("backupSql", "备份数据库"));
|
||||||
@@ -133,22 +132,22 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
addParam.setBackupKey(vo.getKey());
|
addParam.setBackupKey(vo.getKey());
|
||||||
addParam.setStatus(BackupRecordStatusEnum.STATUS_READY.getStatus());
|
addParam.setStatus(BackupRecordStatusEnum.STATUS_READY.getStatus());
|
||||||
addParam.setContent("自动备份");
|
addParam.setContent("自动备份");
|
||||||
addParam.setVersion(this.config.get('version'));
|
addParam.setVersion(this.appConfig.version);
|
||||||
add(addParam);
|
add(addParam);
|
||||||
}
|
}
|
||||||
vo.setBackupRecord(record);
|
vo.setBackupRecord(record);
|
||||||
if (vo.getTask() !== "") return vo;
|
if (vo.getTask() !== "") return vo;
|
||||||
|
|
||||||
const steps: string[] = vo.getSteps().keySet().stream().collect(Collectors.toList());
|
String[] steps = vo.getSteps().keySet();
|
||||||
const step: string = steps.indexOf(vo.getStep()) < steps.size() - 1 ? steps.get(steps.indexOf(vo.getStep()) + 1) : "";
|
const step: string = steps.indexOf(vo.getStep()) < steps.length - 1 ? steps.get(steps.indexOf(vo.getStep()) + 1) : "";
|
||||||
|
|
||||||
if (step.length !== 0) {
|
if (step.length > 0) {
|
||||||
if (!vo.getExecuted().includes(step)) {
|
if (!vo.getExecuted().includes(step)) {
|
||||||
vo.getExecuted().add(step);
|
vo.getExecuted().add(step);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const param: Record<string, any> = null;
|
const param: Record<string, any> = null;
|
||||||
param = (Map<String, Object>) dynamicMethodCall(step, vo);
|
param = (Record<String, Object>) dynamicMethodCall(step, vo);
|
||||||
if (param != null) {
|
if (param != null) {
|
||||||
vo.setParams(param);
|
vo.setParams(param);
|
||||||
} else {
|
} else {
|
||||||
@@ -156,14 +155,14 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
vo.setParams(null);
|
vo.setParams(null);
|
||||||
}
|
}
|
||||||
setBackupRestoreTaskCache(vo);
|
setBackupRestoreTaskCache(vo);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
vo.setStep(step);
|
vo.setStep(step);
|
||||||
vo.setTask("fail");
|
vo.setTask("fail");
|
||||||
vo.setContent("备份恢复失败,稍后请手动恢复,备份文件路径:webroot/runtime/upgrade/"+ record.getBackupKey() +"/backup,失败原因:" + e.message);
|
vo.setContent("备份恢复失败,稍后请手动恢复,备份文件路径:webroot/runtime/upgrade/"+ record.getBackupKey() +"/backup,失败原因:" + e.message);
|
||||||
setBackupRestoreTaskCache(vo);
|
setBackupRestoreTaskCache(vo);
|
||||||
// 删除备份记录
|
// 删除备份记录
|
||||||
sysBackupRecordsMapper.delete(new QueryWrapper<SysBackupRecords>().eq("backup_key", vo.getKey()));
|
this.sysBackupRecordsRepository.delete(new ().eq("backup_key", vo.getKey()));
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
console.log("恢复异常.");
|
console.log("恢复异常.");
|
||||||
|
|
||||||
sysUpgradeRecordsService.clearRestoreTaskCache(5);
|
sysUpgradeRecordsService.clearRestoreTaskCache(5);
|
||||||
@@ -188,20 +187,20 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
addParam.setBackupKey(vo.getKey());
|
addParam.setBackupKey(vo.getKey());
|
||||||
addParam.setStatus(BackupRecordStatusEnum.STATUS_READY.getStatus());
|
addParam.setStatus(BackupRecordStatusEnum.STATUS_READY.getStatus());
|
||||||
addParam.setContent("手动备份");
|
addParam.setContent("手动备份");
|
||||||
addParam.setVersion(this.config.get('version'));
|
addParam.setVersion(this.appConfig.version);
|
||||||
add(addParam);
|
add(addParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
const steps: string[] = vo.getSteps().keySet().stream().collect(Collectors.toList());
|
String[] steps = vo.getSteps().keySet();
|
||||||
const step: string = steps.indexOf(vo.getStep()) < steps.size() - 1 ? steps.get(steps.indexOf(vo.getStep()) + 1) : "";
|
const step: string = steps.indexOf(vo.getStep()) < steps.length - 1 ? steps.get(steps.indexOf(vo.getStep()) + 1) : "";
|
||||||
|
|
||||||
if (step.length !== 0) {
|
if (step.length > 0) {
|
||||||
if (!vo.getExecuted().includes(step)) {
|
if (!vo.getExecuted().includes(step)) {
|
||||||
vo.getExecuted().add(step);
|
vo.getExecuted().add(step);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const param: Record<string, any> = null;
|
const param: Record<String, Object> = null;
|
||||||
param = (Map<String, Object>) dynamicMethodCall(step, vo);
|
param = (Record<String, Object>) dynamicMethodCall(step, vo);
|
||||||
if (param != null) {
|
if (param != null) {
|
||||||
vo.setParams(param);
|
vo.setParams(param);
|
||||||
} else {
|
} else {
|
||||||
@@ -209,14 +208,14 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
vo.setParams(null);
|
vo.setParams(null);
|
||||||
}
|
}
|
||||||
setBackupTaskCache(vo);
|
setBackupTaskCache(vo);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
vo.setStep(step);
|
vo.setStep(step);
|
||||||
vo.setTask("fail");
|
vo.setTask("fail");
|
||||||
vo.setContent("备份失败,稍后请重新手动备份,失败原因:" + e.message);
|
vo.setContent("备份失败,稍后请重新手动备份,失败原因:" + e.message);
|
||||||
setBackupTaskCache(vo);
|
setBackupTaskCache(vo);
|
||||||
// 删除备份记录
|
// 删除备份记录
|
||||||
sysBackupRecordsMapper.delete(new QueryWrapper<SysBackupRecords>().eq("backup_key", vo.getKey()));
|
this.sysBackupRecordsRepository.delete(new ().eq("backup_key", vo.getKey()));
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
console.log("备份异常.");
|
console.log("备份异常.");
|
||||||
|
|
||||||
sysUpgradeRecordsService.clearBackupTaskCache(5);
|
sysUpgradeRecordsService.clearBackupTaskCache(5);
|
||||||
@@ -231,8 +230,8 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
async backupComplete(...args: any[]): Promise<any> {
|
async backupComplete(...args: any[]): Promise<any> {
|
||||||
const backupRecord: SysBackupRecords = new SysBackupRecords();
|
const backupRecord: SysBackupRecords = new SysBackupRecords();
|
||||||
backupRecord.setStatus(UpgradeRecordStatusEnum.STATUS_COMPLETE.getStatus());
|
backupRecord.setStatus(UpgradeRecordStatusEnum.STATUS_COMPLETE.getStatus());
|
||||||
backupRecord.setCompleteTime(System.currentTimeMillis() / 1000);
|
backupRecord.setCompleteTime(Math.floor(Date.now() / 1000));
|
||||||
sysBackupRecordsMapper.update(backupRecord, new QueryWrapper<SysBackupRecords>().eq("backup_key", vo.getKey()));
|
sysBackupRecordsMapper.update(backupRecord, new ().eq("backup_key", vo.getKey()));
|
||||||
|
|
||||||
vo.setTask("end");
|
vo.setTask("end");
|
||||||
|
|
||||||
@@ -245,8 +244,8 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
async restoreBackupComplete(...args: any[]): Promise<any> {
|
async restoreBackupComplete(...args: any[]): Promise<any> {
|
||||||
const backupRecord: SysBackupRecords = new SysBackupRecords();
|
const backupRecord: SysBackupRecords = new SysBackupRecords();
|
||||||
backupRecord.setStatus(UpgradeRecordStatusEnum.STATUS_COMPLETE.getStatus());
|
backupRecord.setStatus(UpgradeRecordStatusEnum.STATUS_COMPLETE.getStatus());
|
||||||
backupRecord.setCompleteTime(System.currentTimeMillis() / 1000);
|
backupRecord.setCompleteTime(Math.floor(Date.now() / 1000));
|
||||||
sysBackupRecordsMapper.update(backupRecord, new QueryWrapper<SysBackupRecords>().eq("backup_key", vo.getKey()));
|
sysBackupRecordsMapper.update(backupRecord, new ().eq("backup_key", vo.getKey()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -262,7 +261,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async setBackupTaskCache(...args: any[]): Promise<any> {
|
async setBackupTaskCache(...args: any[]): Promise<any> {
|
||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
cache.put("backup_task", JSONUtil.parseObj(vo).toString(), 1800);
|
cache.put("backup_task", JSON.parse(vo).toString(), 1800);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -270,7 +269,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async setBackupRestoreTaskCache(...args: any[]): Promise<any> {
|
async setBackupRestoreTaskCache(...args: any[]): Promise<any> {
|
||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
cache.put("backup_restore_task", JSONUtil.parseObj(vo).toString(), 1800);
|
cache.put("backup_restore_task", JSON.parse(vo).toString(), 1800);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -280,7 +279,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
if (delayed > 0) {
|
if (delayed > 0) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(delayed * 1000);
|
Thread.sleep(delayed * 1000);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
@@ -294,7 +293,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
if (delayed > 0) {
|
if (delayed > 0) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(delayed * 1000);
|
Thread.sleep(delayed * 1000);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
@@ -308,7 +307,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
const data: any = cache.get("backup_task");
|
const data: any = cache.get("backup_task");
|
||||||
if (data == null) return null;
|
if (data == null) return null;
|
||||||
return JSONUtil.toBean(JSONUtil.parseObj(data), BackupTaskVo.class);
|
return Object.assign(new BackupTaskVo(), JSON.parse(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -318,7 +317,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
const data: any = cache.get("backup_restore_task");
|
const data: any = cache.get("backup_restore_task");
|
||||||
if (data == null) return null;
|
if (data == null) return null;
|
||||||
return JSONUtil.toBean(JSONUtil.parseObj(data), BackupTaskVo.class);
|
return Object.assign(new BackupTaskVo(), JSON.parse(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -326,14 +325,14 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async checkDir(...args: any[]): Promise<any> {
|
async checkDir(...args: any[]): Promise<any> {
|
||||||
const record: SysBackupRecords = sysBackupRecordsMapper.selectById(param.getId());
|
const record: SysBackupRecords = sysBackupRecordsMapper.selectById(param.getId());
|
||||||
Assert.notNull(record, "备份记录不存在");
|
if (!record) throw new BadRequestException("备份记录不存在");
|
||||||
if (record.getStatus() !== BackupRecordStatusEnum.STATUS_COMPLETE.getStatus()) throw new Error("备份记录未完成");
|
if (record.getStatus() !== BackupRecordStatusEnum.STATUS_COMPLETE.getStatus()) throw new RuntimeException("备份记录未完成");
|
||||||
|
|
||||||
const code: string = this.config.get('webRootDownRuntime' + "upgrade/"+ record.getBackupKey() + "/backup/code");
|
const code: string = this.appConfig.webRootDownRuntime + "upgrade/"+ record.getBackupKey( + "/backup/code");
|
||||||
if (!fs.existsSync(code)) throw new Error("未找到备份的源码文件");
|
if (!fs.existsSync(code)) throw new RuntimeException("未找到备份的源码文件");
|
||||||
|
|
||||||
const sql: string = this.config.get('webRootDownRuntime' + "upgrade/"+ record.getBackupKey() + "/backup/sql");
|
const sql: string = this.appConfig.webRootDownRuntime + "upgrade/"+ record.getBackupKey( + "/backup/sql");
|
||||||
if (!fs.existsSync(sql)) throw new Error("未找到备份的数据库文件");
|
if (!fs.existsSync(sql)) throw new RuntimeException("未找到备份的数据库文件");
|
||||||
|
|
||||||
return record;
|
return record;
|
||||||
}
|
}
|
||||||
@@ -350,8 +349,8 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
const readableDir: JSONArray = new JSONArray();
|
const readableDir: JSONArray = new JSONArray();
|
||||||
const writeDir: JSONArray = new JSONArray();
|
const writeDir: JSONArray = new JSONArray();
|
||||||
|
|
||||||
if (this.config.get('envType') === "dev") {
|
if (this.appConfig.envType === "dev") {
|
||||||
rootPath = this.config.get('projectRoot') + "/";
|
rootPath = this.appConfig.projectRoot + "/";
|
||||||
runtimePath = rootPath;
|
runtimePath = rootPath;
|
||||||
|
|
||||||
readableDir.put(new Record<string, any>().set("dir", rootPath + "niucloud-addon").set("status", true));
|
readableDir.put(new Record<string, any>().set("dir", rootPath + "niucloud-addon").set("status", true));
|
||||||
@@ -359,7 +358,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
readableDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
readableDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
||||||
writeDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
writeDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
||||||
} else {
|
} else {
|
||||||
rootPath = this.config.get('webRoot') + "/";
|
rootPath = this.appConfig.webRoot + "/";
|
||||||
runtimePath = rootPath + "runtime/";
|
runtimePath = rootPath + "runtime/";
|
||||||
|
|
||||||
readableDir.put(new Record<string, any>().set("dir", runtimePath).set("status", true));
|
readableDir.put(new Record<string, any>().set("dir", runtimePath).set("status", true));
|
||||||
@@ -374,7 +373,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
writeDir.put(new Record<string, any>().set("dir", runtimePath + "uni-app").set("status", true));
|
writeDir.put(new Record<string, any>().set("dir", runtimePath + "uni-app").set("status", true));
|
||||||
writeDir.put(new Record<string, any>().set("dir", runtimePath + "web").set("status", true));
|
writeDir.put(new Record<string, any>().set("dir", runtimePath + "web").set("status", true));
|
||||||
|
|
||||||
for (const i of number = 0; i < readableDir.size(); i++) {
|
for (const i of number = 0; i < readableDir.length; i++) {
|
||||||
const dir: Record<string, any> = readableDir.getJSONObject(i);
|
const dir: Record<string, any> = readableDir.getJSONObject(i);
|
||||||
dir.set("status", dir.getStr("dir").canRead());
|
dir.set("status", dir.getStr("dir").canRead());
|
||||||
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
||||||
@@ -382,7 +381,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
if (!dir.getBool("status")) upgradeCheck = false;
|
if (!dir.getBool("status")) upgradeCheck = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const i of number = 0; i < writeDir.size(); i++) {
|
for (const i of number = 0; i < writeDir.length; i++) {
|
||||||
const dir: Record<string, any> = writeDir.getJSONObject(i);
|
const dir: Record<string, any> = writeDir.getJSONObject(i);
|
||||||
dir.set("status", dir.getStr("dir").canWrite());
|
dir.set("status", dir.getStr("dir").canWrite());
|
||||||
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
||||||
@@ -417,7 +416,7 @@ export class SysBackupRecordsServiceImplService {
|
|||||||
((InvocationTargetException) e).getCause().printStackTrace();
|
((InvocationTargetException) e).getCause().printStackTrace();
|
||||||
throw new BadRequestException(((InvocationTargetException) e).getCause().getMessage());
|
throw new BadRequestException(((InvocationTargetException) e).getCause().getMessage());
|
||||||
} else {
|
} else {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,15 +16,15 @@ export class SysExportServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysExport> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
queryWrapper.like("export_key", searchParam.getExportKey());
|
queryWrapper.like("export_key", searchParam.getExportKey());
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getExportKey())) {
|
if (!!searchParam.getExportKey()) {
|
||||||
queryWrapper.eq("export_status", searchParam.getExportStatus());
|
queryWrapper.eq("export_status", searchParam.getExportStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) {
|
if (!!searchParam.getCreateTime()) {
|
||||||
String[] createTime = searchParam.getCreateTime();
|
String[] createTime = searchParam.getCreateTime();
|
||||||
const startTime: number = (createTime[0] == null) ? 0 : DateUtils.StringToTimestamp(createTime[0]);
|
const startTime: number = (createTime[0] == null) ? 0 : DateUtils.StringToTimestamp(createTime[0]);
|
||||||
const endTime: number = (createTime[1] == null) ? 0 : DateUtils.StringToTimestamp(createTime[1]);
|
const endTime: number = (createTime[1] == null) ? 0 : DateUtils.StringToTimestamp(createTime[1]);
|
||||||
@@ -39,13 +39,13 @@ export class SysExportServiceImplService {
|
|||||||
|
|
||||||
const results: JSONArray = JsonModuleLoader.build().mergeResultSet("export/ExportType.json");
|
const results: JSONArray = JsonModuleLoader.build().mergeResultSet("export/ExportType.json");
|
||||||
|
|
||||||
const iPage: IPage<SysExport> = sysExportMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysExportRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const converted: IPage<SysExportListVo> = iPage.convert(export => {
|
converted = iPage.convert(export => {
|
||||||
SysExportListVo vo = new SysExportListVo();
|
const vo: SysExportListVo = new SysExportListVo();
|
||||||
BeanUtils.copyProperties(export, vo);
|
Object.assign(vo, export);
|
||||||
vo.setCreateTime(DateUtils.timestampToString(export.getCreateTime()));
|
vo.setCreateTime(DateUtils.timestampToString(export.getCreateTime()));
|
||||||
vo.setExportStatusName(ExportEnum.getNameByCode(export.getExportStatus()));
|
vo.setExportStatusName(ExportEnum.getNameByCode(export.getExportStatus()));
|
||||||
results.stream()
|
results
|
||||||
.map(JSONUtil::parseObj)
|
.map(JSONUtil::parseObj)
|
||||||
.filter(o => o.containsKey(export.getExportKey()))
|
.filter(o => o.containsKey(export.getExportKey()))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
@@ -62,14 +62,14 @@ export class SysExportServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SysExport = sysExportMapper.selectOne(
|
const model: SysExport = this.sysExportRepository.findOne(
|
||||||
new QueryWrapper<SysExport>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
sysExportMapper.delete(new QueryWrapper<SysExport>().eq("id", id));
|
this.sysExportRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,8 +79,8 @@ export class SysExportServiceImplService {
|
|||||||
const pageParam: PageParam = new PageParam();
|
const pageParam: PageParam = new PageParam();
|
||||||
pageParam.setPage(number.parseInt(whereMap.getOrDefault("page", 0).toString()));
|
pageParam.setPage(number.parseInt(whereMap.getOrDefault("page", 0).toString()));
|
||||||
pageParam.setLimit(number.parseInt(whereMap.getOrDefault("limit", 0).toString()));
|
pageParam.setLimit(number.parseInt(whereMap.getOrDefault("limit", 0).toString()));
|
||||||
const jsonArray: JSONArray = coreExportService.getExportData(RequestUtils.siteId(), type, JSONUtil.parseObj(whereMap), pageParam);
|
const jsonArray: JSONArray = coreExportService.getExportData(RequestUtils.siteId(), type, JSON.parse(whereMap), pageParam);
|
||||||
return jsonArray.length !== 0;
|
return jsonArray.length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -89,18 +89,18 @@ export class SysExportServiceImplService {
|
|||||||
async exportData(...args: any[]): Promise<any> {
|
async exportData(...args: any[]): Promise<any> {
|
||||||
const siteId: number = RequestUtils.siteId();
|
const siteId: number = RequestUtils.siteId();
|
||||||
const pageParam: PageParam = new PageParam();
|
const pageParam: PageParam = new PageParam();
|
||||||
pageParam.setPage(whereMap.getOrDefault("page", 0));
|
pageParam.setPage((number) whereMap.getOrDefault("page", 0));
|
||||||
pageParam.setLimit(whereMap.getOrDefault("limit", 0));
|
pageParam.setLimit((number) whereMap.getOrDefault("limit", 0));
|
||||||
|
|
||||||
const dataColumn: JSONArray = coreExportService.getExportDataColumn(type);
|
const dataColumn: JSONArray = coreExportService.getExportDataColumn(type);
|
||||||
const dataArray: JSONArray = coreExportService.getExportData(siteId, type, JSONUtil.parseObj(whereMap), pageParam);
|
const dataArray: JSONArray = coreExportService.getExportData(siteId, type, JSON.parse(whereMap), pageParam);
|
||||||
|
|
||||||
const export: SysExport = new SysExport();
|
const export: SysExport = new SysExport();
|
||||||
export.setSiteId(RequestUtils.siteId());
|
export.setSiteId(RequestUtils.siteId());
|
||||||
export.setExportKey(type);
|
export.setExportKey(type);
|
||||||
export.setExportNum(CollectionUtil.size(dataArray));
|
export.setExportNum(CollectionUtil.size(dataArray));
|
||||||
export.setCreateTime(System.currentTimeMillis() / 1000);
|
export.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
coreExportService.add(export);
|
coreExportService.push(export);
|
||||||
|
|
||||||
coreExportService.export(siteId, export.getId(), type, dataColumn, dataArray);
|
coreExportService.export(siteId, export.getId(), type, dataColumn, dataArray);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -13,15 +13,15 @@ export class SysMenuServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysMenu = sysMenuMapper.selectOne(
|
const model: SysMenu = this.sysMenuRepository.findOne(
|
||||||
new QueryWrapper<SysMenu>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: SysMenuInfoVo = new SysMenuInfoVo();
|
const vo: SysMenuInfoVo = new SysMenuInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,11 +29,11 @@ export class SysMenuServiceImplService {
|
|||||||
* get
|
* get
|
||||||
*/
|
*/
|
||||||
async get(...args: any[]): Promise<any> {
|
async get(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper={};
|
||||||
queryWrapper.eq("app_type", appType);
|
queryWrapper.eq("app_type", appType);
|
||||||
queryWrapper.eq("menu_key", menuKey);
|
queryWrapper.eq("menu_key", menuKey);
|
||||||
const sysMenu: SysMenu = sysMenuMapper.selectOne(queryWrapper);
|
const sysMenu: SysMenu = this.sysMenuRepository.findOne(queryWrapper);
|
||||||
Assert.notNull(sysMenu, "菜单数据不存在");
|
if (!sysMenu) throw new BadRequestException("菜单数据不存在");
|
||||||
const sysMenuInfoVo: SysMenuInfoVo = new SysMenuInfoVo();
|
const sysMenuInfoVo: SysMenuInfoVo = new SysMenuInfoVo();
|
||||||
BeanUtil.copyProperties(sysMenu, sysMenuInfoVo);
|
BeanUtil.copyProperties(sysMenu, sysMenuInfoVo);
|
||||||
return sysMenuInfoVo;
|
return sysMenuInfoVo;
|
||||||
@@ -52,7 +52,7 @@ export class SysMenuServiceImplService {
|
|||||||
BeanUtil.copyProperties(addParam, model);
|
BeanUtil.copyProperties(addParam, model);
|
||||||
model.setCreateTime(DateUtils.currTime());
|
model.setCreateTime(DateUtils.currTime());
|
||||||
model.setSource(MenuSourceEnum.CREATE.getCode());
|
model.setSource(MenuSourceEnum.CREATE.getCode());
|
||||||
sysMenuMapper.insert(model);
|
this.sysMenuRepository.save(model);
|
||||||
/** 清理缓存 */
|
/** 清理缓存 */
|
||||||
cached.tag(cacheTagName).clear();
|
cached.tag(cacheTagName).clear();
|
||||||
}
|
}
|
||||||
@@ -61,14 +61,14 @@ export class SysMenuServiceImplService {
|
|||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysMenu = sysMenuMapper.selectOne(
|
const model: SysMenu = this.sysMenuRepository.findOne(
|
||||||
new QueryWrapper<SysMenu>()
|
new ()
|
||||||
.eq("app_type", appType)
|
.eq("app_type", appType)
|
||||||
.eq("menu_key", menuKey)
|
.eq("menu_key", menuKey)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
BeanUtil.copyProperties(editParam, model);
|
BeanUtil.copyProperties(editParam, model);
|
||||||
sysMenuMapper.updateById(model);
|
this.sysMenuRepository.save(model);
|
||||||
/** 清理缓存 */
|
/** 清理缓存 */
|
||||||
cached.tag(cacheTagName).clear();
|
cached.tag(cacheTagName).clear();
|
||||||
}
|
}
|
||||||
@@ -77,11 +77,11 @@ export class SysMenuServiceImplService {
|
|||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const keyCount: number = sysMenuMapper.selectCount(new QueryWrapper<SysMenu>().eq("parent_key", menuKey).eq("app_type", appType));
|
const keyCount: number = this.sysMenuRepository.count(new ().eq("parent_key", menuKey).eq("app_type", appType));
|
||||||
if(keyCount>0){
|
if(keyCount>0){
|
||||||
throw new AdminException("MENU_NOT_ALLOW_DELETE");
|
throw new AdminException("MENU_NOT_ALLOW_DELETE");
|
||||||
}
|
}
|
||||||
sysMenuMapper.delete(new QueryWrapper<SysMenu>().eq("app_type", appType).eq("menu_key", menuKey));
|
this.sysMenuRepository.delete(new ().eq("app_type", appType).eq("menu_key", menuKey));
|
||||||
/** 清理缓存 */
|
/** 清理缓存 */
|
||||||
cached.tag(cacheTagName).clear();
|
cached.tag(cacheTagName).clear();
|
||||||
}
|
}
|
||||||
@@ -92,10 +92,10 @@ export class SysMenuServiceImplService {
|
|||||||
async menuTree(...args: any[]): Promise<any> {
|
async menuTree(...args: any[]): Promise<any> {
|
||||||
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("menuTree"), uniqueKey => {
|
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("menuTree"), uniqueKey => {
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("app_type", "site");
|
queryWrapper.eq("app_type", "site");
|
||||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||||
const sysMenuList: SysMenu[] = sysMenuMapper.selectList(queryWrapper);
|
SysMenu[] sysMenuList = this.sysMenuRepository.find(queryWrapper);
|
||||||
const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList));
|
const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList));
|
||||||
return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children");
|
return TreeUtils.listToTree(jsonArray, "menu_key", "parent_key", "children");
|
||||||
});
|
});
|
||||||
@@ -106,13 +106,13 @@ export class SysMenuServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getMenuListByCondition(...args: any[]): Promise<any> {
|
async getMenuListByCondition(...args: any[]): Promise<any> {
|
||||||
return cached.remember(useCache, cacheTagName, Arrays.asList("getMenuListByCondition", appType, siteId, status, isButton, menuKeys, addon), uniqueKey => {
|
return cached.remember(useCache, cacheTagName, Arrays.asList("getMenuListByCondition", appType, siteId, status, isButton, menuKeys, addon), uniqueKey => {
|
||||||
const addonList: string[] = coreSiteService.getAddonKeysBySiteId(siteId);
|
String[] addonList = coreSiteService.getAddonKeysBySiteId(siteId);
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
if (ObjectUtil.isNotEmpty(appType)) {
|
if (!!appType) {
|
||||||
queryWrapper.eq("app_type", appType);
|
queryWrapper.eq("app_type", appType);
|
||||||
}
|
}
|
||||||
if (addonList.size() > 0) {
|
if (addonList.length > 0) {
|
||||||
addonList.add("");
|
addonList.push("");
|
||||||
queryWrapper.in("addon", addonList);
|
queryWrapper.in("addon", addonList);
|
||||||
} else {
|
} else {
|
||||||
queryWrapper.in("addon", "");
|
queryWrapper.in("addon", "");
|
||||||
@@ -120,7 +120,7 @@ export class SysMenuServiceImplService {
|
|||||||
if (status != 100) {
|
if (status != 100) {
|
||||||
queryWrapper.eq("status", status);
|
queryWrapper.eq("status", status);
|
||||||
}
|
}
|
||||||
if (menuKeys.size() > 0) {
|
if (menuKeys.length > 0) {
|
||||||
queryWrapper.in("menu_key", menuKeys);
|
queryWrapper.in("menu_key", menuKeys);
|
||||||
}
|
}
|
||||||
if (isButton == 0) {
|
if (isButton == 0) {
|
||||||
@@ -129,7 +129,7 @@ export class SysMenuServiceImplService {
|
|||||||
|
|
||||||
//排除菜单 后期处理
|
//排除菜单 后期处理
|
||||||
|
|
||||||
const menuList: SysMenu[] = sysMenuMapper.selectList(queryWrapper);
|
SysMenu[] menuList = this.sysMenuRepository.find(queryWrapper);
|
||||||
return menuList;
|
return menuList;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -141,16 +141,16 @@ export class SysMenuServiceImplService {
|
|||||||
const menuKeysVal: string = String.join("_", menuKeys);
|
const menuKeysVal: string = String.join("_", menuKeys);
|
||||||
const menuKeysValMD5: string = SecureUtil.md5(menuKeysVal);
|
const menuKeysValMD5: string = SecureUtil.md5(menuKeysVal);
|
||||||
const menuCatch: string = "menu" + menuKeysValMD5 + isTree.toString() + addon + siteId;
|
const menuCatch: string = "menu" + menuKeysValMD5 + isTree.toString() + addon + siteId;
|
||||||
const outterMenuList: SysMenu[] = cached.cache(useCache, cacheTagName, menuCatch, uniqueKey => {
|
SysMenu[] outterMenuList = cached.cache(useCache, cacheTagName, menuCatch, uniqueKey => {
|
||||||
//通过站点id获取支持的应用插件
|
//通过站点id获取支持的应用插件
|
||||||
List<String> addonList = coreSiteService.getAddonKeysBySiteId(siteId);
|
String[] addonList = coreSiteService.getAddonKeysBySiteId(siteId);
|
||||||
|
|
||||||
//组装查询条件
|
//组装查询条件
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
if (menuKeys.size() > 0) {
|
if (menuKeys.length > 0) {
|
||||||
queryWrapper.in("menu_key", menuKeys);
|
queryWrapper.in("menu_key", menuKeys);
|
||||||
}
|
}
|
||||||
const paichuList: SysMenu[] = null;
|
SysMenu[] paichuList = null;
|
||||||
if(addon !== "all"){
|
if(addon !== "all"){
|
||||||
queryWrapper.eq("addon",addon);
|
queryWrapper.eq("addon",addon);
|
||||||
|
|
||||||
@@ -160,27 +160,27 @@ export class SysMenuServiceImplService {
|
|||||||
paichuList = JSONUtil.toList(delJsonInfo,SysMenu.class);
|
paichuList = JSONUtil.toList(delJsonInfo,SysMenu.class);
|
||||||
}else{
|
}else{
|
||||||
queryWrapper.in("addon", addonList);
|
queryWrapper.in("addon", addonList);
|
||||||
for (const i of number = 0; i<addonList.size(); i++){
|
for (const i of number = 0; i<addonList.length; i++){
|
||||||
const jsonModuleLoader: JsonModuleLoader = new JsonModuleLoader();
|
const jsonModuleLoader: JsonModuleLoader = new JsonModuleLoader();
|
||||||
const jsonObject: Record<string, any> = jsonModuleLoader.getResultElement(addonList.get(i), "menu/site.json");
|
const jsonObject: Record<string, any> = jsonModuleLoader.getResultElement(addonList.get(i), "menu/site.json");
|
||||||
const delJsonInfo: JSONArray = jsonObject.getJSONArray("delete");
|
const delJsonInfo: JSONArray = jsonObject.getJSONArray("delete");
|
||||||
paichuList = JSONUtil.toList(delJsonInfo,SysMenu.class);
|
paichuList = JSONUtil.toList(delJsonInfo,SysMenu.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(appType)) {
|
if (!!appType) {
|
||||||
queryWrapper.eq("app_type", appType);
|
queryWrapper.eq("app_type", appType);
|
||||||
}
|
}
|
||||||
|
|
||||||
//排除菜单
|
//排除菜单
|
||||||
if(ObjectUtil.isNotNull(paichuList) && paichuList.size()>0){
|
if(ObjectUtil.isNotNull(paichuList) && paichuList.length>0){
|
||||||
const paichuArr: string[] = [];
|
String[] paichuArr = [];
|
||||||
for (const i of number = 0; i<paichuList.size(); i++){
|
for (const i of number = 0; i<paichuList.length; i++){
|
||||||
paichuArr.add(paichuList.get(i).getMenuKey());
|
paichuArr.push(paichuList.get(i).getMenuKey());
|
||||||
}
|
}
|
||||||
queryWrapper.notIn("menu_key", paichuArr);
|
queryWrapper.notIn("menu_key", paichuArr);
|
||||||
}
|
}
|
||||||
|
|
||||||
const menuList: SysMenu[] = sysMenuMapper.selectList(queryWrapper);
|
SysMenu[] menuList = this.sysMenuRepository.find(queryWrapper);
|
||||||
for (const menu of menuList) {
|
for (const menu of menuList) {
|
||||||
const langMenuKey: string = "dict_menu_" + menu.getAppType() + "." + menu.getMenuKey();
|
const langMenuKey: string = "dict_menu_" + menu.getAppType() + "." + menu.getMenuKey();
|
||||||
const langMenuName: string = LanguageUtils.get(langMenuKey);
|
const langMenuName: string = LanguageUtils.get(langMenuKey);
|
||||||
@@ -204,20 +204,20 @@ export class SysMenuServiceImplService {
|
|||||||
// 缓存Key值计算参数
|
// 缓存Key值计算参数
|
||||||
const key: string = "menuList_"+appType+"_"+status + siteId.toString();
|
const key: string = "menuList_"+appType+"_"+status + siteId.toString();
|
||||||
|
|
||||||
const outterMenuList: SysMenu[] = cached.cache(useCache, cacheTagName, key, uniqueKey => {
|
SysMenu[] outterMenuList= cached.cache(useCache, cacheTagName, key, uniqueKey => {
|
||||||
List<SysMenu> menuList = [];
|
SysMenu[] menuList = [];
|
||||||
try {
|
try {
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
if (ObjectUtil.isNotEmpty(appType)) {
|
if (!!appType) {
|
||||||
queryWrapper.eq("app_type", appType);
|
queryWrapper.eq("app_type", appType);
|
||||||
}
|
}
|
||||||
|
|
||||||
//站点相关插件
|
//站点相关插件
|
||||||
if (RequestUtils.defaultSiteId() !== siteId) {
|
if (RequestUtils.defaultSiteId() !== siteId) {
|
||||||
const addonList: string[] = coreSiteService.getAddonKeysBySiteId(siteId);
|
String[] addonList = coreSiteService.getAddonKeysBySiteId(siteId);
|
||||||
|
|
||||||
if (addonList.size() > 0) {
|
if (addonList.length > 0) {
|
||||||
addonList.add("");
|
addonList.push("");
|
||||||
queryWrapper.in("addon", addonList);
|
queryWrapper.in("addon", addonList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -226,8 +226,8 @@ export class SysMenuServiceImplService {
|
|||||||
queryWrapper.eq("status", status);
|
queryWrapper.eq("status", status);
|
||||||
}
|
}
|
||||||
//排除菜单
|
//排除菜单
|
||||||
menuList = sysMenuMapper.selectList(queryWrapper);
|
menuList = this.sysMenuRepository.find(queryWrapper);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BaseException("查询菜单错误");
|
throw new BaseException("查询菜单错误");
|
||||||
}
|
}
|
||||||
return menuList;
|
return menuList;
|
||||||
@@ -241,14 +241,14 @@ export class SysMenuServiceImplService {
|
|||||||
* find
|
* find
|
||||||
*/
|
*/
|
||||||
async find(...args: any[]): Promise<any> {
|
async find(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper= {};
|
||||||
if(ObjectUtil.isNotNull(menuKey) && ObjectUtil.isNotEmpty(menuKey)){
|
if(ObjectUtil.isNotNull(menuKey) && !!menuKey){
|
||||||
queryWrapper.eq("menu_key", menuKey);
|
queryWrapper.eq("menu_key", menuKey);
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isNotNull(appType) && ObjectUtil.isNotEmpty(appType)){
|
if(ObjectUtil.isNotNull(appType) && !!appType){
|
||||||
queryWrapper.eq("app_type", appType);
|
queryWrapper.eq("app_type", appType);
|
||||||
}
|
}
|
||||||
const sysMenu: SysMenu = sysMenuMapper.selectOne(queryWrapper);
|
const sysMenu: SysMenu = this.sysMenuRepository.findOne(queryWrapper);
|
||||||
return sysMenu;
|
return sysMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,13 +256,13 @@ export class SysMenuServiceImplService {
|
|||||||
* getMenuByTypeDir
|
* getMenuByTypeDir
|
||||||
*/
|
*/
|
||||||
async getMenuByTypeDir(...args: any[]): Promise<any> {
|
async getMenuByTypeDir(...args: any[]): Promise<any> {
|
||||||
const outterMenuList: SysMenu[] = cached.remember(useCache, cacheTagName, Arrays.asList("getMenuByTypeDir", addon), uniqueKey => {
|
SysMenu[] outterMenuList= cached.remember(useCache, cacheTagName, Arrays.asList("getMenuByTypeDir", addon), uniqueKey => {
|
||||||
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("app_type", "site");
|
queryWrapper.eq("app_type", "site");
|
||||||
queryWrapper.eq("menu_type", "0");
|
queryWrapper.eq("menu_type", "0");
|
||||||
queryWrapper.eq("addon", addon === "system"? "": addon);
|
queryWrapper.eq("addon", addon === "system"? "": addon);
|
||||||
queryWrapper.orderByDesc("sort");
|
queryWrapper.orderByDesc("sort");
|
||||||
return sysMenuMapper.selectList(queryWrapper);
|
return this.sysMenuRepository.find(queryWrapper);
|
||||||
});
|
});
|
||||||
|
|
||||||
//暂无多语言设计
|
//暂无多语言设计
|
||||||
@@ -276,7 +276,7 @@ export class SysMenuServiceImplService {
|
|||||||
async getAddonMenu(...args: any[]): Promise<any> {
|
async getAddonMenu(...args: any[]): Promise<any> {
|
||||||
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("getAddonMenu", appKey, status, isTree.toString(), isButton.toString()), uniqueKey => {
|
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("getAddonMenu", appKey, status, isTree.toString(), isButton.toString()), uniqueKey => {
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("app_type", "site");
|
queryWrapper.eq("app_type", "site");
|
||||||
queryWrapper.eq("addon", appKey);
|
queryWrapper.eq("addon", appKey);
|
||||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||||
@@ -286,7 +286,7 @@ export class SysMenuServiceImplService {
|
|||||||
if (isButton == 0) {
|
if (isButton == 0) {
|
||||||
queryWrapper.in("menu_type", new number[]{0, 1});
|
queryWrapper.in("menu_type", new number[]{0, 1});
|
||||||
}
|
}
|
||||||
const sysMenuList: SysMenu[] = sysMenuMapper.selectList(queryWrapper);
|
SysMenu[] sysMenuList = this.sysMenuRepository.find(queryWrapper);
|
||||||
const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList));
|
const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList));
|
||||||
if (isTree == 0) {
|
if (isTree == 0) {
|
||||||
return jsonArray;
|
return jsonArray;
|
||||||
@@ -300,7 +300,7 @@ export class SysMenuServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getSystemMenu(...args: any[]): Promise<any> {
|
async getSystemMenu(...args: any[]): Promise<any> {
|
||||||
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("getSystemMenu", status, isTree.toString(), isButton.toString()), uniqueKey => {
|
return cached.rememberObject(useCache, cacheTagName, Arrays.asList("getSystemMenu", status, isTree.toString(), isButton.toString()), uniqueKey => {
|
||||||
const queryWrapper: QueryWrapper<SysMenu> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("app_type", "site");
|
queryWrapper.eq("app_type", "site");
|
||||||
queryWrapper.eq("addon", "");
|
queryWrapper.eq("addon", "");
|
||||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||||
@@ -310,7 +310,7 @@ export class SysMenuServiceImplService {
|
|||||||
if (isButton == 0) {
|
if (isButton == 0) {
|
||||||
queryWrapper.in("menu_type", new number[]{0, 1});
|
queryWrapper.in("menu_type", new number[]{0, 1});
|
||||||
}
|
}
|
||||||
const sysMenuList: SysMenu[] = sysMenuMapper.selectList(queryWrapper);
|
SysMenu[] sysMenuList = this.sysMenuRepository.find(queryWrapper);
|
||||||
const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList));
|
const jsonArray: JSONArray = JSONUtil.parseArray(JacksonUtils.toSnakeCaseJSONString(sysMenuList));
|
||||||
if (isTree == 0) {
|
if (isTree == 0) {
|
||||||
return jsonArray;
|
return jsonArray;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,40 +16,40 @@ export class SysNoticeLogServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysNoticeLog> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getReceiver())) queryWrapper.eq("receiver", searchParam.getReceiver());
|
if (!!searchParam.getReceiver()) queryWrapper.eq("receiver", searchParam.getReceiver());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKey())) queryWrapper.eq("`key`", searchParam.getKey());
|
if (!!searchParam.getKey()) queryWrapper.eq("`key`", searchParam.getKey());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) QueryMapperUtils.buildByTime(queryWrapper, "create_time", searchParam.getCreateTime());
|
if (!!searchParam.getCreateTime()) QueryMapperUtils.buildByTime(queryWrapper, "create_time", searchParam.getCreateTime());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const noticeEnum: Record<string, any> = NoticeEnum.getNotice();
|
const noticeEnum: Record<String, NoticeEnumListVo> = NoticeEnum.getNotice();
|
||||||
|
|
||||||
const iPage: IPage<SysNoticeLog> = sysNoticeLogMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysNoticeLogRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysNoticeLogListVo[] = [];
|
SysNoticeLogListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysNoticeLogListVo = new SysNoticeLogListVo();
|
const vo: SysNoticeLogListVo = new SysNoticeLogListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setName(noticeEnum.get(item.getKey()) != null ? noticeEnum.get(item.getKey()).getName() : "");
|
vo.setName(noticeEnum.get(item.getKey()) != null ? noticeEnum.get(item.getKey()).getName() : "");
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysNoticeLog = sysNoticeLogMapper.selectOne(
|
const model: SysNoticeLog = this.sysNoticeLogRepository.findOne(
|
||||||
new QueryWrapper<SysNoticeLog>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: SysNoticeLogInfoVo = new SysNoticeLogInfoVo();
|
const vo: SysNoticeLogInfoVo = new SysNoticeLogInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,32 +16,32 @@ export class SysNoticeServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysNotice> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<SysNotice> = sysNoticeMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysNoticeRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysNoticeListVo[] = [];
|
SysNoticeListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysNoticeListVo = new SysNoticeListVo();
|
const vo: SysNoticeListVo = new SysNoticeListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysNotice = sysNoticeMapper.selectOne(
|
const model: SysNotice = this.sysNoticeRepository.findOne(
|
||||||
new QueryWrapper<SysNotice>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: SysNoticeInfoVo = new SysNoticeInfoVo();
|
const vo: SysNoticeInfoVo = new SysNoticeInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,22 +59,22 @@ export class SysNoticeServiceImplService {
|
|||||||
model.setWechatTemplateId(addParam.getWechatTemplateId());
|
model.setWechatTemplateId(addParam.getWechatTemplateId());
|
||||||
model.setWeappTemplateId(addParam.getWeappTemplateId());
|
model.setWeappTemplateId(addParam.getWeappTemplateId());
|
||||||
model.setSmsId(addParam.getSmsId());
|
model.setSmsId(addParam.getSmsId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setWechatFirst(addParam.getWechatFirst());
|
model.setWechatFirst(addParam.getWechatFirst());
|
||||||
model.setWechatRemark(addParam.getWechatRemark());
|
model.setWechatRemark(addParam.getWechatRemark());
|
||||||
sysNoticeMapper.insert(model);
|
this.sysNoticeRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysNotice = sysNoticeMapper.selectOne(
|
const model: SysNotice = this.sysNoticeRepository.findOne(
|
||||||
new QueryWrapper<SysNotice>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
model.setId(id);
|
model.setId(id);
|
||||||
model.setSiteId(editParam.getSiteId());
|
model.setSiteId(editParam.getSiteId());
|
||||||
model.setKey(editParam.getKey());
|
model.setKey(editParam.getKey());
|
||||||
@@ -87,20 +87,20 @@ export class SysNoticeServiceImplService {
|
|||||||
model.setSmsId(editParam.getSmsId());
|
model.setSmsId(editParam.getSmsId());
|
||||||
model.setWechatFirst(editParam.getWechatFirst());
|
model.setWechatFirst(editParam.getWechatFirst());
|
||||||
model.setWechatRemark(editParam.getWechatRemark());
|
model.setWechatRemark(editParam.getWechatRemark());
|
||||||
sysNoticeMapper.updateById(model);
|
this.sysNoticeRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SysNotice = sysNoticeMapper.selectOne(
|
const model: SysNotice = this.sysNoticeRepository.findOne(
|
||||||
new QueryWrapper<SysNotice>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
sysNoticeMapper.delete(new QueryWrapper<SysNotice>().eq("id", id));
|
this.sysNoticeRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,42 +16,42 @@ export class SysNoticeSmsLogServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysNoticeSmsLog> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKey())) queryWrapper.eq("`key`", searchParam.getKey());
|
if (!!searchParam.getKey()) queryWrapper.eq("`key`", searchParam.getKey());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getSmsType())) queryWrapper.eq("sms_type", searchParam.getSmsType());
|
if (!!searchParam.getSmsType()) queryWrapper.eq("sms_type", searchParam.getSmsType());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getMobile())) queryWrapper.eq("mobile", searchParam.getMobile());
|
if (!!searchParam.getMobile()) queryWrapper.eq("mobile", searchParam.getMobile());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) QueryMapperUtils.buildByTime(queryWrapper,"create_time" ,searchParam.getCreateTime());
|
if (!!searchParam.getCreateTime()) QueryMapperUtils.buildByTime(queryWrapper,"create_time" ,searchParam.getCreateTime());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const smsTypeEnum: Record<string, any> = SmsTypeEnum.getType();
|
const smsTypeEnum: Record<string, any> = SmsTypeEnum.getType();
|
||||||
const notice: Record<string, any> = NoticeEnum.getNotice();
|
const notice: Record<String, NoticeEnumListVo> = NoticeEnum.getNotice();
|
||||||
|
|
||||||
const iPage: IPage<SysNoticeSmsLog> = sysNoticeSmsLogMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysNoticeSmsLogRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysNoticeSmsLogListVo[] = [];
|
SysNoticeSmsLogListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysNoticeSmsLogListVo = new SysNoticeSmsLogListVo();
|
const vo: SysNoticeSmsLogListVo = new SysNoticeSmsLogListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setSmsTypeName(smsTypeEnum.getByPath(item.getSmsType() + ".name", String.class));
|
vo.setSmsTypeName(smsTypeEnum.getByPath(item.getSmsType() + ".name", String.class));
|
||||||
vo.setName(ObjectUtil.defaultIfNull(notice.get(item.getKey()).getName(), ""));
|
vo.setName(ObjectUtil.defaultIfNull(notice.get(item.getKey()).getName(), ""));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysNoticeSmsLog = sysNoticeSmsLogMapper.selectOne(
|
const model: SysNoticeSmsLog = this.sysNoticeSmsLogRepository.findOne(
|
||||||
new QueryWrapper<SysNoticeSmsLog>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
if (model == null) return null;
|
if (model == null) return null;
|
||||||
|
|
||||||
const vo: SysNoticeSmsLogInfoVo = new SysNoticeSmsLogInfoVo();
|
const vo: SysNoticeSmsLogInfoVo = new SysNoticeSmsLogInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -17,40 +17,40 @@ export class SysPosterServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysPoster> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam));
|
if (!!path.basename(searchParam)) queryWrapper.like("name", path.basename(searchParam));
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) queryWrapper.eq("type", searchParam.getType());
|
if (!!searchParam.getType()) queryWrapper.eq("type", searchParam.getType());
|
||||||
|
|
||||||
const iPage: IPage<SysPoster> = sysPosterMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysPosterRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysPosterListVo[] = [];
|
SysPosterListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysPosterListVo = new SysPosterListVo();
|
const vo: SysPosterListVo = new SysPosterListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* list
|
* list
|
||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const queryWrapper: QueryWrapper<SysPoster> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam));
|
if (!!path.basename(searchParam)) queryWrapper.like("name", path.basename(searchParam));
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) queryWrapper.eq("type", searchParam.getType());
|
if (!!searchParam.getType()) queryWrapper.eq("type", searchParam.getType());
|
||||||
|
|
||||||
const records: SysPoster[] = sysPosterMapper.selectList(queryWrapper);
|
SysPoster[] records = this.sysPosterRepository.find(queryWrapper);
|
||||||
const list: SysPosterListVo[] = [];
|
SysPosterListVo[] list = [];
|
||||||
for (const item of records) {
|
for (const item of records) {
|
||||||
const vo: SysPosterListVo = new SysPosterListVo();
|
const vo: SysPosterListVo = new SysPosterListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -59,15 +59,15 @@ export class SysPosterServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysPoster = sysPosterMapper.selectOne(
|
const model: SysPoster = this.sysPosterRepository.findOne(
|
||||||
new QueryWrapper<SysPoster>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "海报不存在");
|
if (!model) throw new BadRequestException("海报不存在");
|
||||||
|
|
||||||
const vo: SysPosterInfoVo = new SysPosterInfoVo();
|
const vo: SysPosterInfoVo = new SysPosterInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,22 +84,22 @@ export class SysPosterServiceImplService {
|
|||||||
sysPosterMapper.update(null, update);
|
sysPosterMapper.update(null, update);
|
||||||
}
|
}
|
||||||
const model: SysPoster = new SysPoster();
|
const model: SysPoster = new SysPoster();
|
||||||
BeanUtils.copyProperties(addParam, model);
|
Object.assign(model, addParam);
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
sysPosterMapper.insert(model);
|
this.sysPosterRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysPoster = sysPosterMapper.selectOne(
|
const model: SysPoster = this.sysPosterRepository.findOne(
|
||||||
new QueryWrapper<SysPoster>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "海报不存在!");
|
if (!model) throw new BadRequestException("海报不存在!");
|
||||||
|
|
||||||
if (editParam.getIsDefault() === 1) {
|
if (editParam.getIsDefault() === 1) {
|
||||||
const update: UpdateWrapper = new UpdateWrapper<>();
|
const update: UpdateWrapper = new UpdateWrapper<>();
|
||||||
@@ -110,23 +110,23 @@ export class SysPosterServiceImplService {
|
|||||||
sysPosterMapper.update(null, update);
|
sysPosterMapper.update(null, update);
|
||||||
}
|
}
|
||||||
|
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
sysPosterMapper.updateById(model);
|
this.sysPosterRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SysPoster = sysPosterMapper.selectOne(
|
const model: SysPoster = this.sysPosterRepository.findOne(
|
||||||
new QueryWrapper<SysPoster>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "海报不存在!");
|
if (!model) throw new BadRequestException("海报不存在!");
|
||||||
|
|
||||||
sysPosterMapper.delete(new QueryWrapper<SysPoster>().eq("id", id));
|
this.sysPosterRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -134,19 +134,19 @@ export class SysPosterServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async init(...args: any[]): Promise<any> {
|
async init(...args: any[]): Promise<any> {
|
||||||
const vo: SysPosterInitVo = new SysPosterInitVo();
|
const vo: SysPosterInitVo = new SysPosterInitVo();
|
||||||
BeanUtils.copyProperties(param, vo);
|
Object.assign(vo, param);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(param.getId()) && param.getId() > 0) {
|
if (!!param.getId() && param.getId() > 0) {
|
||||||
const poster: SysPoster = sysPosterMapper.selectOne(
|
const poster: SysPoster = this.sysPosterRepository.findOne(
|
||||||
new QueryWrapper<SysPoster>()
|
new ()
|
||||||
.eq("id", param.getId())
|
.eq("id", param.getId())
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
Assert.notNull(poster, "海报不存在!");
|
if (!poster) throw new BadRequestException("海报不存在!");
|
||||||
BeanUtils.copyProperties(poster, vo);
|
Object.assign(vo, poster);
|
||||||
}
|
}
|
||||||
|
|
||||||
vo.setPosterType(PosterTypeEnum.getType(vo.getType()));
|
vo.setPosterType(PosterTypeEnum.getType(vo.getType()));
|
||||||
if (ObjectUtil.isNotEmpty(vo.getPosterType()) && ObjectUtil.isEmpty(vo.getAddon())) vo.setAddon(vo.getPosterType().getStr("addon", ""));
|
if (!!vo.getPosterType() && !vo.getAddon()) vo.setAddon(vo.getPosterType().getStr("addon", ""));
|
||||||
|
|
||||||
const components: Record<string, any> = JsonModuleLoader.build().mergeResultElement("poster/components.json");
|
const components: Record<string, any> = JsonModuleLoader.build().mergeResultElement("poster/components.json");
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ export class SysPosterServiceImplService {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const support: JSONArray = ObjectUtil.defaultIfNull(item.getJSONArray("support"), new JSONArray());
|
const support: JSONArray = ObjectUtil.defaultIfNull(item.getJSONArray("support"), new JSONArray());
|
||||||
if (key !== vo.getType() && support.size() > 0 && !support.includes(vo.getType())) {
|
if (key !== vo.getType() && support.length > 0 && !support.includes(vo.getType())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
vo.getComponent().put(key, item);
|
vo.getComponent().put(key, item);
|
||||||
@@ -179,19 +179,19 @@ export class SysPosterServiceImplService {
|
|||||||
async modifyStatus(...args: any[]): Promise<any> {
|
async modifyStatus(...args: any[]): Promise<any> {
|
||||||
const model: SysPoster = new SysPoster();
|
const model: SysPoster = new SysPoster();
|
||||||
model.setStatus(status);
|
model.setStatus(status);
|
||||||
sysPosterMapper.update(model, new QueryWrapper<SysPoster>().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
sysPosterMapper.update(model, new ().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* modifyDefault
|
* modifyDefault
|
||||||
*/
|
*/
|
||||||
async modifyDefault(...args: any[]): Promise<any> {
|
async modifyDefault(...args: any[]): Promise<any> {
|
||||||
const model: SysPoster = sysPosterMapper.selectOne(
|
const model: SysPoster = this.sysPosterRepository.findOne(
|
||||||
new QueryWrapper<SysPoster>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "海报不存在!");
|
if (!model) throw new BadRequestException("海报不存在!");
|
||||||
|
|
||||||
const update: UpdateWrapper = new UpdateWrapper<>();
|
const update: UpdateWrapper = new UpdateWrapper<>();
|
||||||
update.setSql("is_default = 0");
|
update.setSql("is_default = 0");
|
||||||
@@ -203,7 +203,7 @@ export class SysPosterServiceImplService {
|
|||||||
const updateModel: SysPoster = new SysPoster();
|
const updateModel: SysPoster = new SysPoster();
|
||||||
updateModel.setIsDefault(1);
|
updateModel.setIsDefault(1);
|
||||||
updateModel.setId(id);
|
updateModel.setId(id);
|
||||||
sysPosterMapper.updateById(updateModel);
|
this.sysPosterRepository.save(updateModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -215,7 +215,7 @@ export class SysPosterServiceImplService {
|
|||||||
getPosterParam.setType(param.getType());
|
getPosterParam.setType(param.getType());
|
||||||
getPosterParam.setSiteId(RequestUtils.siteId());
|
getPosterParam.setSiteId(RequestUtils.siteId());
|
||||||
getPosterParam.setChannel(ObjectUtil.defaultIfNull(param.getChannel(), "h5"));
|
getPosterParam.setChannel(ObjectUtil.defaultIfNull(param.getChannel(), "h5"));
|
||||||
const posterParam: Record<string, any> = {};
|
const posterParam: Record<String, Object> = {};
|
||||||
posterParam.put("mode", "preview");
|
posterParam.put("mode", "preview");
|
||||||
getPosterParam.setParam(posterParam);
|
getPosterParam.setParam(posterParam);
|
||||||
getPosterParam.setIsThrowException(true);
|
getPosterParam.setIsThrowException(true);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -17,49 +17,49 @@ export class SysPrinterServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysPrinter> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId())
|
queryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.orderByDesc("create_time");
|
.orderByDesc("create_time");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getPrinterName())) {
|
if (!!searchParam.getPrinterName()) {
|
||||||
queryWrapper.like("printer_name", searchParam.getPrinterName());
|
queryWrapper.like("printer_name", searchParam.getPrinterName());
|
||||||
}
|
}
|
||||||
|
|
||||||
const iPage: IPage<SysPrinter> = sysPrinterMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysPrinterRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysPrinterListVo[] = [];
|
SysPrinterListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysPrinterListVo = new SysPrinterListVo();
|
const vo: SysPrinterListVo = new SysPrinterListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setBrandName(SysPrinterBrandEnum.getNameByBrand(item.getBrand()));
|
vo.setBrandName(SysPrinterBrandEnum.getNameByBrand(item.getBrand()));
|
||||||
vo.setTrigger(JSONArray.parseArray(item.getTrigger(), String.class));
|
vo.setTrigger(JSONArray.parseArray(item.getTrigger(), String.class));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getList
|
* getList
|
||||||
*/
|
*/
|
||||||
async getList(...args: any[]): Promise<any> {
|
async getList(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysPrinter> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId())
|
queryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.orderByDesc("create_time")
|
.orderByDesc("create_time")
|
||||||
.select("printer_id, apikey, brand, create_time, open_id, print_width, printer_code, printer_key, printer_name, site_id, status, template_type, 'trigger', update_time, value");
|
.select("printer_id, apikey, brand, create_time, open_id, print_width, printer_code, printer_key, printer_name, site_id, status, template_type, 'trigger', update_time, value");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(param.getPrinterName())) {
|
if (!!param.getPrinterName()) {
|
||||||
queryWrapper.like("printer_name", param.getPrinterName());
|
queryWrapper.like("printer_name", param.getPrinterName());
|
||||||
}
|
}
|
||||||
|
|
||||||
const list: SysPrinterListVo[] = [];
|
SysPrinterListVo[] list = [];
|
||||||
for (const item of sysPrinterMapper.selectList(queryWrapper)) {
|
for (const item of this.sysPrinterRepository.find(queryWrapper)) {
|
||||||
const vo: SysPrinterListVo = new SysPrinterListVo();
|
const vo: SysPrinterListVo = new SysPrinterListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setBrandName(SysPrinterBrandEnum.getNameByBrand(item.getBrand()));
|
vo.setBrandName(SysPrinterBrandEnum.getNameByBrand(item.getBrand()));
|
||||||
vo.setValue(JSON.parseObject(item.getValue()));
|
vo.setValue(JSON.parseObject(item.getValue()));
|
||||||
vo.setTrigger(JSONArray.parseArray(item.getTrigger(), String.class));
|
vo.setTrigger(JSONArray.parseArray(item.getTrigger(), String.class));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
@@ -69,15 +69,15 @@ export class SysPrinterServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinter = sysPrinterMapper.selectOne(
|
const model: SysPrinter = this.sysPrinterRepository.findOne(
|
||||||
new QueryWrapper<SysPrinter>()
|
new ()
|
||||||
.eq("printer_id", id)
|
.eq("printer_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "小票打印机不存在");
|
if (!model) throw new BadRequestException("小票打印机不存在");
|
||||||
|
|
||||||
const vo: SysPrinterInfoVo = new SysPrinterInfoVo();
|
const vo: SysPrinterInfoVo = new SysPrinterInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
vo.setValue(JSON.parseObject(model.getValue()));
|
vo.setValue(JSON.parseObject(model.getValue()));
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -87,17 +87,17 @@ export class SysPrinterServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinter = new SysPrinter();
|
const model: SysPrinter = new SysPrinter();
|
||||||
BeanUtils.copyProperties(addParam, model);
|
Object.assign(model, addParam);
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setValue(JSON.toJSONString(addParam.getValue()));
|
model.setValue(JSON.toJSONString(addParam.getValue()));
|
||||||
model.setTemplateType(addParam.getTemplateType().get(0));
|
model.setTemplateType(addParam.getTemplateType().get(0));
|
||||||
model.setTrigger(JSON.toJSONString(addParam.getTrigger()));
|
model.setTrigger(JSON.toJSONString(addParam.getTrigger()));
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
sysPrinterMapper.insert(model);
|
this.sysPrinterRepository.save(model);
|
||||||
|
|
||||||
if (addParam.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
if (addParam.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
||||||
const addPrinterYlyParam: SysPrinterAddPrinterYlyParam = new SysPrinterAddPrinterYlyParam();
|
const addPrinterYlyParam: SysPrinterAddPrinterYlyParam = new SysPrinterAddPrinterYlyParam();
|
||||||
BeanUtils.copyProperties(addParam, addPrinterYlyParam);
|
Object.assign(addPrinterYlyParam, addParam);
|
||||||
corePrinterService.addPrinterYly(addPrinterYlyParam);
|
corePrinterService.addPrinterYly(addPrinterYlyParam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -106,22 +106,22 @@ export class SysPrinterServiceImplService {
|
|||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinter = sysPrinterMapper.selectOne(
|
const model: SysPrinter = this.sysPrinterRepository.findOne(
|
||||||
new QueryWrapper<SysPrinter>()
|
new ()
|
||||||
.eq("printer_id", id)
|
.eq("printer_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "小票打印机不存在");
|
if (!model) throw new BadRequestException("小票打印机不存在");
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
model.setValue(JSON.toJSONString(editParam.getValue()));
|
model.setValue(JSON.toJSONString(editParam.getValue()));
|
||||||
model.setTemplateType(editParam.getTemplateType().get(0));
|
model.setTemplateType(editParam.getTemplateType().get(0));
|
||||||
model.setTrigger(JSON.toJSONString(editParam.getTrigger()));
|
model.setTrigger(JSON.toJSONString(editParam.getTrigger()));
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
sysPrinterMapper.updateById(model);
|
this.sysPrinterRepository.save(model);
|
||||||
|
|
||||||
if (editParam.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
if (editParam.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
||||||
const addPrinterYlyParam: SysPrinterAddPrinterYlyParam = new SysPrinterAddPrinterYlyParam();
|
const addPrinterYlyParam: SysPrinterAddPrinterYlyParam = new SysPrinterAddPrinterYlyParam();
|
||||||
BeanUtils.copyProperties(editParam, addPrinterYlyParam);
|
Object.assign(addPrinterYlyParam, editParam);
|
||||||
corePrinterService.addPrinterYly(addPrinterYlyParam);
|
corePrinterService.addPrinterYly(addPrinterYlyParam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,28 +130,28 @@ export class SysPrinterServiceImplService {
|
|||||||
* modifyStatus
|
* modifyStatus
|
||||||
*/
|
*/
|
||||||
async modifyStatus(...args: any[]): Promise<any> {
|
async modifyStatus(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinter = sysPrinterMapper.selectOne(
|
const model: SysPrinter = this.sysPrinterRepository.findOne(
|
||||||
new QueryWrapper<SysPrinter>()
|
new ()
|
||||||
.eq("printer_id", param.getPrinterId())
|
.eq("printer_id", param.getPrinterId())
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
model.setStatus(param.getStatus());
|
model.setStatus(param.getStatus());
|
||||||
sysPrinterMapper.updateById(model);
|
this.sysPrinterRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinter = sysPrinterMapper.selectOne(
|
const model: SysPrinter = this.sysPrinterRepository.findOne(
|
||||||
new QueryWrapper<SysPrinter>()
|
new ()
|
||||||
.eq("printer_id", id)
|
.eq("printer_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(model)) {
|
if (!model) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sysPrinterMapper.deleteById(id);
|
this.sysPrinterRepository.delete(id);
|
||||||
|
|
||||||
if (model.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
if (model.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
||||||
corePrinterService.deletePrinterYly(model);
|
corePrinterService.deletePrinterYly(model);
|
||||||
@@ -164,7 +164,7 @@ export class SysPrinterServiceImplService {
|
|||||||
async getBrand(...args: any[]): Promise<any> {
|
async getBrand(...args: any[]): Promise<any> {
|
||||||
const jsonObject: Record<string, any> = new Record<string, any>();
|
const jsonObject: Record<string, any> = new Record<string, any>();
|
||||||
for (const value of SysPrinterBrandEnum.values()) {
|
for (const value of SysPrinterBrandEnum.values()) {
|
||||||
if (ObjectUtil.isEmpty(value.getBrand())) {
|
if (!value.getBrand()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,13 +177,13 @@ export class SysPrinterServiceImplService {
|
|||||||
* refreshToken
|
* refreshToken
|
||||||
*/
|
*/
|
||||||
async refreshToken(...args: any[]): Promise<any> {
|
async refreshToken(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinter = sysPrinterMapper.selectOne(
|
const model: SysPrinter = this.sysPrinterRepository.findOne(
|
||||||
new QueryWrapper<SysPrinter>()
|
new ()
|
||||||
.eq("printer_id", id)
|
.eq("printer_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(model)) {
|
if (!model) {
|
||||||
throw new Error("打印机不存在");
|
throw new RuntimeException("打印机不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
return corePrinterService.refreshToken(model);
|
return corePrinterService.refreshToken(model);
|
||||||
@@ -193,13 +193,13 @@ export class SysPrinterServiceImplService {
|
|||||||
* testPrint
|
* testPrint
|
||||||
*/
|
*/
|
||||||
async testPrint(...args: any[]): Promise<any> {
|
async testPrint(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinter = sysPrinterMapper.selectOne(
|
const model: SysPrinter = this.sysPrinterRepository.findOne(
|
||||||
new QueryWrapper<SysPrinter>()
|
new ()
|
||||||
.eq("printer_id", id)
|
.eq("printer_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(model)) {
|
if (!model) {
|
||||||
throw new Error("打印机不存在");
|
throw new RuntimeException("打印机不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (model.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
if (model.getBrand() === SysPrinterBrandEnum.YI_LIAN_YUN.getBrand()) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,61 +16,61 @@ export class SysPrinterTemplateServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysPrinterTemplate> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId())
|
queryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.orderByDesc("create_time");
|
.orderByDesc("create_time");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTemplateId())) {
|
if (!!searchParam.getTemplateId()) {
|
||||||
queryWrapper.eq("template_id", searchParam.getTemplateId());
|
queryWrapper.eq("template_id", searchParam.getTemplateId());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTemplateName())) {
|
if (!!searchParam.getTemplateName()) {
|
||||||
queryWrapper.like("template_name", searchParam.getTemplateName());
|
queryWrapper.like("template_name", searchParam.getTemplateName());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTemplateType())) {
|
if (!!searchParam.getTemplateType()) {
|
||||||
queryWrapper.eq("template_type", searchParam.getTemplateType());
|
queryWrapper.eq("template_type", searchParam.getTemplateType());
|
||||||
}
|
}
|
||||||
|
|
||||||
const iPage: IPage<SysPrinterTemplate> = sysPrinterTemplateMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysPrinterTemplateRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysPrinterTemplateListVo[] = [];
|
SysPrinterTemplateListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysPrinterTemplateListVo = new SysPrinterTemplateListVo();
|
const vo: SysPrinterTemplateListVo = new SysPrinterTemplateListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setTemplateTypeName(SysPrinterTypeEnum.getTypeName(item.getTemplateType()));
|
vo.setTemplateTypeName(SysPrinterTypeEnum.getTypeName(item.getTemplateType()));
|
||||||
vo.setValue(JSON.parseObject(item.getValue()));
|
vo.setValue(JSON.parseObject(item.getValue()));
|
||||||
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getList
|
* getList
|
||||||
*/
|
*/
|
||||||
async getList(...args: any[]): Promise<any> {
|
async getList(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysPrinterTemplate> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
|
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId())
|
queryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.orderByDesc("create_time");
|
.orderByDesc("create_time");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTemplateId())) {
|
if (!!searchParam.getTemplateId()) {
|
||||||
queryWrapper.eq("template_id", searchParam.getTemplateId());
|
queryWrapper.eq("template_id", searchParam.getTemplateId());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTemplateName())) {
|
if (!!searchParam.getTemplateName()) {
|
||||||
queryWrapper.like("template_name", searchParam.getTemplateName());
|
queryWrapper.like("template_name", searchParam.getTemplateName());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getTemplateType())) {
|
if (!!searchParam.getTemplateType()) {
|
||||||
queryWrapper.eq("template_type", searchParam.getTemplateType());
|
queryWrapper.eq("template_type", searchParam.getTemplateType());
|
||||||
}
|
}
|
||||||
|
|
||||||
const voList: SysPrinterTemplateListVo[] = [];
|
SysPrinterTemplateListVo[] voList = [];
|
||||||
for (const item of sysPrinterTemplateMapper.selectList(queryWrapper)) {
|
for (const item of this.sysPrinterTemplateRepository.find(queryWrapper)) {
|
||||||
const vo: SysPrinterTemplateListVo = new SysPrinterTemplateListVo();
|
const vo: SysPrinterTemplateListVo = new SysPrinterTemplateListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setTemplateTypeName(SysPrinterTypeEnum.getTypeName(item.getTemplateType()));
|
vo.setTemplateTypeName(SysPrinterTypeEnum.getTypeName(item.getTemplateType()));
|
||||||
vo.setValue(JSON.parseObject(item.getValue()));
|
vo.setValue(JSON.parseObject(item.getValue()));
|
||||||
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
||||||
voList.add(vo);
|
voList.push(vo);
|
||||||
}
|
}
|
||||||
return voList;
|
return voList;
|
||||||
}
|
}
|
||||||
@@ -79,15 +79,15 @@ export class SysPrinterTemplateServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinterTemplate = sysPrinterTemplateMapper.selectOne(
|
const model: SysPrinterTemplate = this.sysPrinterTemplateRepository.findOne(
|
||||||
new QueryWrapper<SysPrinterTemplate>()
|
new ()
|
||||||
.eq("template_id", id)
|
.eq("template_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "小票打印模板不存在");
|
if (!model) throw new BadRequestException("小票打印模板不存在");
|
||||||
|
|
||||||
const vo: SysPrinterTemplateInfoVo = new SysPrinterTemplateInfoVo();
|
const vo: SysPrinterTemplateInfoVo = new SysPrinterTemplateInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
vo.setValue(JSON.parseObject(model.getValue()));
|
vo.setValue(JSON.parseObject(model.getValue()));
|
||||||
vo.setCreateTime(DateUtils.timestampToString(model.getCreateTime()));
|
vo.setCreateTime(DateUtils.timestampToString(model.getCreateTime()));
|
||||||
return vo;
|
return vo;
|
||||||
@@ -98,26 +98,26 @@ export class SysPrinterTemplateServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinterTemplate = new SysPrinterTemplate();
|
const model: SysPrinterTemplate = new SysPrinterTemplate();
|
||||||
BeanUtils.copyProperties(addParam, model);
|
Object.assign(model, addParam);
|
||||||
model.setValue(JSON.toJSONString(addParam.getValue()));
|
model.setValue(JSON.toJSONString(addParam.getValue()));
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
|
|
||||||
sysPrinterTemplateMapper.insert(model);
|
this.sysPrinterTemplateRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysPrinterTemplate = sysPrinterTemplateMapper.selectOne(
|
const model: SysPrinterTemplate = this.sysPrinterTemplateRepository.findOne(
|
||||||
new QueryWrapper<SysPrinterTemplate>()
|
new ()
|
||||||
.eq("template_id", id)
|
.eq("template_id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|
||||||
Assert.notNull(model, "小票打印模板不存在");
|
if (!model) throw new BadRequestException("小票打印模板不存在");
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
sysPrinterTemplateMapper.updateById(model);
|
this.sysPrinterTemplateRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -126,22 +126,22 @@ export class SysPrinterTemplateServiceImplService {
|
|||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const template: SysPrinterTemplate = sysPrinterTemplateMapper.selectById(id);
|
const template: SysPrinterTemplate = sysPrinterTemplateMapper.selectById(id);
|
||||||
|
|
||||||
const printerLambdaQueryWrapper: LambdaQueryWrapper<SysPrinter> = new LambdaQueryWrapper<>();
|
LambdaprinterLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
printerLambdaQueryWrapper.eq(SysPrinter::getSiteId, RequestUtils.siteId())
|
printerLambdaQueryWrapper.eq(SysPrinter::getSiteId, RequestUtils.siteId())
|
||||||
.like(SysPrinter::getTemplateType, template.getTemplateType());
|
.like(SysPrinter::getTemplateType, template.getTemplateType());
|
||||||
const printers: SysPrinter[] = sysPrinterMapper.selectList(printerLambdaQueryWrapper);
|
SysPrinter[] printers = this.sysPrinterRepository.find(printerLambdaQueryWrapper);
|
||||||
|
|
||||||
const illegalPrinter: Optional<SysPrinter> = printers.stream()
|
const illegalPrinter: Optional<SysPrinter> = printers
|
||||||
.filter(printer => ObjectUtil.isNotEmpty(printer.getValue()))
|
.filter(printer => !!printer.getValue())
|
||||||
.filter(printer => JSON.parseArray(printer.getValue()).stream()
|
.filter(printer => JSON.parseArray(printer.getValue())
|
||||||
.anyMatch(value => JSON.parseArray(value.toString()).stream()
|
.anyMatch(value => JSON.parseArray(value.toString())
|
||||||
.anyMatch(o => id === JSON.parseObject(o.toString().getInteger("template_id")))))
|
.anyMatch(o => id === JSON.parseObject(o.toString().getInteger("template_id")))))
|
||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
if (illegalPrinter.isPresent()) {
|
if (illegalPrinter.isPresent()) {
|
||||||
throw new Error("该模板已被打印机[" + illegalPrinter.get().getPrinterName() + "]使用,无法删除");
|
throw new RuntimeException("该模板已被打印机[" + illegalPrinter.get().getPrinterName() + "]使用,无法删除");
|
||||||
}
|
}
|
||||||
|
|
||||||
sysPrinterTemplateMapper.deleteById(id);
|
this.sysPrinterTemplateRepository.delete(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,35 +16,35 @@ export class SysRoleServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysRole> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("role_id");
|
queryWrapper.orderByDesc("role_id");
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
if(ObjectUtil.isNotNull(searchParam.getRoleName()) && ObjectUtil.isNotEmpty(searchParam.getRoleName())){
|
if(ObjectUtil.isNotNull(searchParam.getRoleName()) && !!searchParam.getRoleName()){
|
||||||
queryWrapper.like("role_name", searchParam.getRoleName());
|
queryWrapper.like("role_name", searchParam.getRoleName());
|
||||||
}
|
}
|
||||||
const iPage: IPage<SysRole> = sysRoleMapper.selectPage(new Page<SysRole>(page, limit), queryWrapper);
|
iPage = this.sysRoleRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysRoleListVo[] = [];
|
SysRoleListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysRoleListVo = new SysRoleListVo();
|
const vo: SysRoleListVo = new SysRoleListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysRole = sysRoleMapper.selectOne(
|
const model: SysRole = this.sysRoleRepository.findOne(
|
||||||
new QueryWrapper<SysRole>()
|
new ()
|
||||||
.eq("role_id", id)
|
.eq("role_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: SysRoleInfoVo = new SysRoleInfoVo();
|
const vo: SysRoleInfoVo = new SysRoleInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ export class SysRoleServiceImplService {
|
|||||||
* add
|
* add
|
||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const isExist: SysRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>()
|
const isExist: SysRole = this.sysRoleRepository.findOne(new ()
|
||||||
.select("role_id")
|
.select("role_id")
|
||||||
.eq("role_name", addParam.getRoleName())
|
.eq("role_name", addParam.getRoleName())
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
@@ -63,18 +63,18 @@ export class SysRoleServiceImplService {
|
|||||||
const model: SysRole = new SysRole();
|
const model: SysRole = new SysRole();
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setRoleName(addParam.getRoleName());
|
model.setRoleName(addParam.getRoleName());
|
||||||
model.setRules(JSONUtil.toJsonStr(addParam.getRules()));
|
model.setRules(JSON.stringify(addParam.getRules()));
|
||||||
model.setStatus(addParam.getStatus());
|
model.setStatus(addParam.getStatus());
|
||||||
model.setCreateTime(DateUtils.currTime());
|
model.setCreateTime(DateUtils.currTime());
|
||||||
model.setUpdateTime(DateUtils.currTime());
|
model.setUpdateTime(DateUtils.currTime());
|
||||||
sysRoleMapper.insert(model);
|
this.sysRoleRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const isExist: SysRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>()
|
const isExist: SysRole = this.sysRoleRepository.findOne(new ()
|
||||||
.select("role_id")
|
.select("role_id")
|
||||||
.eq("role_name", editParam.getRoleName())
|
.eq("role_name", editParam.getRoleName())
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
@@ -83,55 +83,55 @@ export class SysRoleServiceImplService {
|
|||||||
);
|
);
|
||||||
if (isExist != null) throw new AdminException("管理员角色已存在");
|
if (isExist != null) throw new AdminException("管理员角色已存在");
|
||||||
|
|
||||||
const model: SysRole = sysRoleMapper.selectOne(
|
const model: SysRole = this.sysRoleRepository.findOne(
|
||||||
new QueryWrapper<SysRole>()
|
new ()
|
||||||
.eq("role_id", roleId)
|
.eq("role_id", roleId)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setRoleName(editParam.getRoleName());
|
model.setRoleName(editParam.getRoleName());
|
||||||
model.setRules(JSONUtil.toJsonStr(editParam.getRules()));
|
model.setRules(JSON.stringify(editParam.getRules()));
|
||||||
model.setStatus(editParam.getStatus());
|
model.setStatus(editParam.getStatus());
|
||||||
model.setUpdateTime(DateUtils.currTime());
|
model.setUpdateTime(DateUtils.currTime());
|
||||||
sysRoleMapper.updateById(model);
|
this.sysRoleRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SysRole = sysRoleMapper.selectOne(
|
const model: SysRole = this.sysRoleRepository.findOne(
|
||||||
new QueryWrapper<SysRole>()
|
new ()
|
||||||
.eq("role_id", id)
|
.eq("role_id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
const userRoleCount: number = sysUserRoleMapper.selectCount(new QueryWrapper<SysUserRole>().like("role_ids", id));
|
const userRoleCount: number = this.sysUserRoleRepository.count(new ().like("role_ids", id));
|
||||||
if(userRoleCount>0){
|
if(userRoleCount>0){
|
||||||
throw new AdminException("USER_ROLE_NOT_ALLOW_DELETE");
|
throw new AdminException("USER_ROLE_NOT_ALLOW_DELETE");
|
||||||
}
|
}
|
||||||
sysRoleMapper.delete(new QueryWrapper<SysRole>().eq("role_id", id));
|
this.sysRoleRepository.delete(new ().eq("role_id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getMenuIdsByRoleIds
|
* getMenuIdsByRoleIds
|
||||||
*/
|
*/
|
||||||
async getMenuIdsByRoleIds(...args: any[]): Promise<any> {
|
async getMenuIdsByRoleIds(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper = new QueryWrapper<SysRole>();
|
const queryWrapper: QueryWrapper = new ();
|
||||||
queryWrapper.eq("status", RoleStatusEnum.ON.getCode());
|
queryWrapper.eq("status", RoleStatusEnum.ON.getCode());
|
||||||
// 判断roleIds不能为空
|
// 判断roleIds不能为空
|
||||||
if(ObjectUtil.isNotNull(roleIds) && roleIds.size()>0){
|
if(ObjectUtil.isNotNull(roleIds) && roleIds.length>0){
|
||||||
queryWrapper.in("role_id", roleIds);
|
queryWrapper.in("role_id", roleIds);
|
||||||
}
|
}
|
||||||
const roleList: SysRole[] = sysRoleMapper.selectList(queryWrapper);
|
SysRole[] roleList=this.sysRoleRepository.find(queryWrapper);
|
||||||
const roleMenuJson: JSONArray = new JSONArray();
|
const roleMenuJson: JSONArray = new JSONArray();
|
||||||
for (const sysRole of roleList) {
|
for (const sysRole of roleList) {
|
||||||
const ruleJson: JSONArray = JSONUtil.parseArray(sysRole.getRules());
|
const ruleJson: JSONArray = JSONUtil.parseArray(sysRole.getRules());
|
||||||
roleMenuJson.addAll(ruleJson);
|
roleMenuJson.addAll(ruleJson);
|
||||||
}
|
}
|
||||||
//去重
|
//去重
|
||||||
const list: string[] = JSONUtil.toList(roleMenuJson, String.class);
|
String[] list = JSONUtil.toList(roleMenuJson, String.class);
|
||||||
return CollectionUtil.distinct(list);
|
return CollectionUtil.distinct(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,35 +139,35 @@ export class SysRoleServiceImplService {
|
|||||||
* getAllRole
|
* getAllRole
|
||||||
*/
|
*/
|
||||||
async getAllRole(...args: any[]): Promise<any> {
|
async getAllRole(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysRole> = new QueryWrapper<>();
|
queryWrapper={};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.eq("status", 1);
|
queryWrapper.eq("status", 1);
|
||||||
const roleList: SysRole[] = sysRoleMapper.selectList(queryWrapper);
|
SysRole[] roleList=this.sysRoleRepository.find(queryWrapper);
|
||||||
const sysRoleListVoList: SysRoleListVo[] = [];
|
SysRoleListVo[] sysRoleListVoList=[];
|
||||||
for (const sysRole of roleList) {
|
for (const sysRole of roleList) {
|
||||||
const vo: SysRoleListVo = new SysRoleListVo();
|
const vo: SysRoleListVo = new SysRoleListVo();
|
||||||
BeanUtils.copyProperties(sysRole, vo);
|
Object.assign(vo, sysRole);
|
||||||
sysRoleListVoList.add(vo);
|
sysRoleListVoList.push(vo);
|
||||||
}
|
}
|
||||||
const sysUserRole: SysUserRole = null;
|
const sysUserRole: SysUserRole = null;
|
||||||
const isAdmin: boolean = false;
|
const isAdmin: boolean = false;
|
||||||
if (authService.isSuperAdmin()){
|
if (authService.isSuperAdmin()){
|
||||||
isAdmin=true;
|
isAdmin=true;
|
||||||
}else {
|
}else {
|
||||||
sysUserRole = sysUserRoleMapper.selectOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getSiteId, RequestUtils.siteId()).eq(SysUserRole::getUid, RequestUtils.uid()));
|
sysUserRole = this.sysUserRoleRepository.findOne(new Lambda().eq(SysUserRole::getSiteId, RequestUtils.siteId()).eq(SysUserRole::getUid, RequestUtils.uid()));
|
||||||
if (ObjectUtil.isEmpty(sysUserRole)){
|
if (!sysUserRole){
|
||||||
return List.of();
|
return List.of();
|
||||||
}
|
}
|
||||||
isAdmin = sysUserRole.getIsAdmin() == 1 ? true : false;
|
isAdmin = sysUserRole.getIsAdmin() == 1 ? true : false;
|
||||||
}
|
}
|
||||||
if (!isAdmin){
|
if (!isAdmin){
|
||||||
if ((sysUserRole.getRoleIds( && sysUserRole.getRoleIds(.trim() !== '')) && "[]" === sysUserRole.getRoleIds()){
|
if (StringUtils.isNotEmpty(sysUserRole.getRoleIds()) && "[]".equals(sysUserRole.getRoleIds())){
|
||||||
const roleIdsStr: string = sysUserRole.getRoleIds().replaceAll("[\\[\\]\"]", "");
|
const roleIdsStr: string = sysUserRole.getRoleIds().replaceAll("[\\[\\]\"]", "");
|
||||||
const menuIdsByRoleIds: string[] = getMenuIdsByRoleIds(RequestUtils.siteId(), Arrays.stream(roleIdsStr.split(",")).collect(Collectors.toList()));
|
String[] menuIdsByRoleIds = getMenuIdsByRoleIds(RequestUtils.siteId(), Arrays.stream(roleIdsStr.split(",")));
|
||||||
for (const sysRoleListVo of sysRoleListVoList) {
|
for (const sysRoleListVo of sysRoleListVoList) {
|
||||||
const diff: string[] = new ArrayList<>(Collections.singleton(sysRoleListVo.getRules()));
|
String[] diff = new ArrayList<>(Collections.singleton(sysRoleListVo.getRules()));
|
||||||
diff.removeAll(menuIdsByRoleIds);
|
diff.removeAll(menuIdsByRoleIds);
|
||||||
if (diff.length !== 0){
|
if (diff.length > 0){
|
||||||
sysRoleListVo.setDisabled(true);
|
sysRoleListVo.setDisabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ export class SysScheduleServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async init(...args: any[]): Promise<any> {
|
async init(...args: any[]): Promise<any> {
|
||||||
// 通过 ApplicationContext 获取所有 IJobProvider 实现
|
// 通过 ApplicationContext 获取所有 IJobProvider 实现
|
||||||
const providers: Record<string, any> = applicationContext.getBeansOfType(IJobProvider.class);
|
const providers: Record<String, IJobProvider> = applicationContext.getBeansOfType(IJobProvider.class);
|
||||||
log.info("Loaded job provider count: {}", providers.size());
|
log.info("Loaded job provider count: {}", providers.length);
|
||||||
for (const provider of providers.values()) {
|
for (const provider of providers.values()) {
|
||||||
log.info("Loaded job provider: {}", provider.getClass().getName());
|
log.info("Loaded job provider: {}", provider.getClass().getName());
|
||||||
const annotation: JobProvider = provider.getClass().getAnnotation(JobProvider.class);
|
const annotation: JobProvider = provider.getClass().getAnnotation(JobProvider.class);
|
||||||
@@ -38,10 +38,10 @@ export class SysScheduleServiceImplService {
|
|||||||
* getSysEnableList
|
* getSysEnableList
|
||||||
*/
|
*/
|
||||||
async getSysEnableList(...args: any[]): Promise<any> {
|
async getSysEnableList(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysSchedule> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("status", 1);
|
queryWrapper.eq("status", 1);
|
||||||
queryWrapper.orderByDesc("sort", "id");
|
queryWrapper.orderByDesc("sort", "id");
|
||||||
return sysScheduleMapper.selectList(queryWrapper);
|
return this.sysScheduleRepository.find(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -52,26 +52,26 @@ export class SysScheduleServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
// 构造查询条件执行查询
|
// 构造查询条件执行查询
|
||||||
const queryWrapper: LambdaQueryWrapper<SysSchedule> = new LambdaQueryWrapper<>();
|
LambdaqueryWrapper = new LambdaQueryWrapper<>();
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getStatus()) && !"all" === searchParam.getStatus()){
|
if (!!searchParam.getStatus() && !"all".equals(searchParam.getStatus())){
|
||||||
if ("0" === searchParam.getStatus()){
|
if ("0".equals(searchParam.getStatus())){
|
||||||
searchParam.setStatus("2");
|
searchParam.setStatus("2");
|
||||||
}
|
}
|
||||||
queryWrapper.eq( SysSchedule::getStatus, searchParam.getStatus());
|
queryWrapper.eq( SysSchedule::getStatus, searchParam.getStatus());
|
||||||
}
|
}
|
||||||
queryWrapper.eq(ObjectUtil.isNotEmpty(searchParam.getKey()), SysSchedule::getKey, searchParam.getKey());
|
queryWrapper.eq(!!searchParam.getKey(), SysSchedule::getKey, searchParam.getKey());
|
||||||
queryWrapper.orderByDesc(SysSchedule::getSort, SysSchedule::getId);
|
queryWrapper.orderByDesc(SysSchedule::getSort, SysSchedule::getId);
|
||||||
const sysSchedulePage: IPage<SysSchedule> = sysScheduleMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
sysSchedulePage = this.sysScheduleRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
// 返回结果集
|
// 返回结果集
|
||||||
const sysScheduleListVoList: SysScheduleListVo[] = [];
|
SysScheduleListVo[] sysScheduleListVoList = [];
|
||||||
for (const sysSchedule of sysSchedulePage.getRecords()) {
|
for (const sysSchedule of records) {
|
||||||
const sysScheduleListVo: SysScheduleListVo = new SysScheduleListVo();
|
const sysScheduleListVo: SysScheduleListVo = new SysScheduleListVo();
|
||||||
BeanUtils.copyProperties(sysSchedule, sysScheduleListVo);
|
Object.assign(sysScheduleListVo, sysSchedule);
|
||||||
sysScheduleListVo.setTimeObject(sysSchedule.getTime());
|
sysScheduleListVo.setTimeObject(sysSchedule.getTime());
|
||||||
sysScheduleListVo.setCrontabContent(QuartzJobManager.convertCronContent(sysSchedule.getTime()));
|
sysScheduleListVo.setCrontabContent(QuartzJobManager.convertCronContent(sysSchedule.getTime()));
|
||||||
sysScheduleListVoList.add(sysScheduleListVo);
|
sysScheduleListVoList.push(sysScheduleListVo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, sysSchedulePage.getTotal()).setData(sysScheduleListVoList);
|
return PageResult.build(page, limit, total).setData(sysScheduleListVoList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -80,7 +80,7 @@ export class SysScheduleServiceImplService {
|
|||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const sysSchedule: SysSchedule = sysScheduleMapper.selectById(id);
|
const sysSchedule: SysSchedule = sysScheduleMapper.selectById(id);
|
||||||
const sysScheduleInfoVo: SysScheduleInfoVo = new SysScheduleInfoVo();
|
const sysScheduleInfoVo: SysScheduleInfoVo = new SysScheduleInfoVo();
|
||||||
BeanUtils.copyProperties(sysSchedule, sysScheduleInfoVo);
|
Object.assign(sysScheduleInfoVo, sysSchedule);
|
||||||
return sysScheduleInfoVo;
|
return sysScheduleInfoVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ export class SysScheduleServiceImplService {
|
|||||||
newSysSchedule.setId(oldSysSchedule.getId());
|
newSysSchedule.setId(oldSysSchedule.getId());
|
||||||
newSysSchedule.setStatus(sysScheduleStatusParam.getStatus());
|
newSysSchedule.setStatus(sysScheduleStatusParam.getStatus());
|
||||||
newSysSchedule.setUpdateTime(DateUtils.currTime());
|
newSysSchedule.setUpdateTime(DateUtils.currTime());
|
||||||
sysScheduleMapper.updateById(newSysSchedule);
|
this.sysScheduleRepository.save(newSysSchedule);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -109,24 +109,24 @@ export class SysScheduleServiceImplService {
|
|||||||
const jobKey: string = sysScheduleParam.getKey();
|
const jobKey: string = sysScheduleParam.getKey();
|
||||||
const jobInfo: JobInfo = JobProviderFactory.getJobInfo(jobKey);
|
const jobInfo: JobInfo = JobProviderFactory.getJobInfo(jobKey);
|
||||||
if (jobInfo == null) {
|
if (jobInfo == null) {
|
||||||
throw new Error("任务不存在.");
|
throw new RuntimeException("任务不存在.");
|
||||||
}
|
}
|
||||||
// 校验任务是否存在
|
// 校验任务是否存在
|
||||||
const queryWrapper: QueryWrapper<SysSchedule> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.eq("`key`", jobKey);
|
queryWrapper.eq("`key`", jobKey);
|
||||||
const sysScheduleList: SysSchedule[] = sysScheduleMapper.selectList(queryWrapper);
|
SysSchedule[] sysScheduleList = this.sysScheduleRepository.find(queryWrapper);
|
||||||
if (sysScheduleList != null && sysScheduleList.size() > 0) {
|
if (sysScheduleList != null && sysScheduleList.length > 0) {
|
||||||
throw new Error("任务已经存在.");
|
throw new RuntimeException("任务已经存在.");
|
||||||
}
|
}
|
||||||
// 新增一个任务
|
// 新增一个任务
|
||||||
const newSysSchedule: SysSchedule = new SysSchedule();
|
const newSysSchedule: SysSchedule = new SysSchedule();
|
||||||
BeanUtils.copyProperties(sysScheduleParam, newSysSchedule);
|
Object.assign(newSysSchedule, sysScheduleParam);
|
||||||
newSysSchedule.setTime(JSONUtil.toJsonStr(sysScheduleParam.getTime()));
|
newSysSchedule.setTime(JSON.stringify(sysScheduleParam.getTime()));
|
||||||
newSysSchedule.setCreateTime(DateUtils.currTime());
|
newSysSchedule.setCreateTime(DateUtils.currTime());
|
||||||
newSysSchedule.setUpdateTime(DateUtils.currTime());
|
newSysSchedule.setUpdateTime(DateUtils.currTime());
|
||||||
newSysSchedule.setSiteId(RequestUtils.adminSiteId());
|
newSysSchedule.setSiteId(RequestUtils.adminSiteId());
|
||||||
newSysSchedule.setAddon(jobInfo.getSource());
|
newSysSchedule.setAddon(jobInfo.getSource());
|
||||||
const result: number = sysScheduleMapper.insert(newSysSchedule);
|
const result: number = this.sysScheduleRepository.save(newSysSchedule);
|
||||||
if (result > 0) {
|
if (result > 0) {
|
||||||
if (newSysSchedule.getStatus() == 1) {
|
if (newSysSchedule.getStatus() == 1) {
|
||||||
// 如果是启动状态,就启动任务
|
// 如果是启动状态,就启动任务
|
||||||
@@ -143,12 +143,12 @@ export class SysScheduleServiceImplService {
|
|||||||
this.findByIdAndCheck(id);
|
this.findByIdAndCheck(id);
|
||||||
// 构建更新对象
|
// 构建更新对象
|
||||||
const newSysSchedule: SysSchedule = new SysSchedule();
|
const newSysSchedule: SysSchedule = new SysSchedule();
|
||||||
BeanUtils.copyProperties(sysScheduleParam, newSysSchedule);
|
Object.assign(newSysSchedule, sysScheduleParam);
|
||||||
newSysSchedule.setId(id);
|
newSysSchedule.setId(id);
|
||||||
newSysSchedule.setSiteId(RequestUtils.adminSiteId());
|
newSysSchedule.setSiteId(RequestUtils.adminSiteId());
|
||||||
newSysSchedule.setUpdateTime(DateUtils.currTime());
|
newSysSchedule.setUpdateTime(DateUtils.currTime());
|
||||||
newSysSchedule.setTime(JSONUtil.toJsonStr(sysScheduleParam.getTime()));
|
newSysSchedule.setTime(JSON.stringify(sysScheduleParam.getTime()));
|
||||||
const result: number = sysScheduleMapper.updateById(newSysSchedule);
|
const result: number = this.sysScheduleRepository.save(newSysSchedule);
|
||||||
if (result <= 0) {
|
if (result <= 0) {
|
||||||
log.error("更新系统任务失败:id={}", id);
|
log.error("更新系统任务失败:id={}", id);
|
||||||
}
|
}
|
||||||
@@ -169,15 +169,15 @@ export class SysScheduleServiceImplService {
|
|||||||
if (sysSchedule.getStatus() == 1) {
|
if (sysSchedule.getStatus() == 1) {
|
||||||
QuartzJobManager.stopJob(sysSchedule);
|
QuartzJobManager.stopJob(sysSchedule);
|
||||||
}
|
}
|
||||||
sysScheduleMapper.deleteById(id);
|
this.sysScheduleRepository.delete(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* template
|
* template
|
||||||
*/
|
*/
|
||||||
async template(...args: any[]): Promise<any> {
|
async template(...args: any[]): Promise<any> {
|
||||||
const sysScheduleTemplateVoList: SysScheduleTemplateVo[] = [];
|
SysScheduleTemplateVo[] sysScheduleTemplateVoList = [];
|
||||||
const jobKeys: Set<String> = JobProviderFactory.jobKeys();
|
String[] jobKeys = JobProviderFactory.jobKeys();
|
||||||
for (const jobKey of jobKeys) {
|
for (const jobKey of jobKeys) {
|
||||||
const jobInfo: JobInfo = JobProviderFactory.getJobInfo(jobKey);
|
const jobInfo: JobInfo = JobProviderFactory.getJobInfo(jobKey);
|
||||||
const sysScheduleTemplateVo: SysScheduleTemplateVo = new SysScheduleTemplateVo();
|
const sysScheduleTemplateVo: SysScheduleTemplateVo = new SysScheduleTemplateVo();
|
||||||
@@ -186,7 +186,7 @@ export class SysScheduleServiceImplService {
|
|||||||
sysScheduleTemplateVo.setDesc(jobInfo.getDescribe());
|
sysScheduleTemplateVo.setDesc(jobInfo.getDescribe());
|
||||||
sysScheduleTemplateVo.setClazz(jobInfo.getJobClass());
|
sysScheduleTemplateVo.setClazz(jobInfo.getJobClass());
|
||||||
sysScheduleTemplateVo.setFunction(jobInfo.getJobClass());
|
sysScheduleTemplateVo.setFunction(jobInfo.getJobClass());
|
||||||
sysScheduleTemplateVoList.add(sysScheduleTemplateVo);
|
sysScheduleTemplateVoList.push(sysScheduleTemplateVo);
|
||||||
}
|
}
|
||||||
return sysScheduleTemplateVoList;
|
return sysScheduleTemplateVoList;
|
||||||
}
|
}
|
||||||
@@ -195,11 +195,11 @@ export class SysScheduleServiceImplService {
|
|||||||
* deleteScheduleLog
|
* deleteScheduleLog
|
||||||
*/
|
*/
|
||||||
async deleteScheduleLog(...args: any[]): Promise<void> {
|
async deleteScheduleLog(...args: any[]): Promise<void> {
|
||||||
const sysScheduleLogs: SysScheduleLog[] = sysScheduleLogMapper.selectList(new QueryWrapper<SysScheduleLog>().eq("status", status).lt("execute_time", successThreshold));
|
SysScheduleLog[] sysScheduleLogs = this.sysScheduleLogRepository.find(new ().eq("status", status).lt("execute_time", successThreshold));
|
||||||
if (CollectionUtils.isEmpty(sysScheduleLogs)) {
|
if (CollectionUtils.isEmpty(sysScheduleLogs)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const delIds: Set<number> = sysScheduleLogs.stream().map(SysScheduleLog::getId).collect(Collectors.toSet());
|
number[] delIds = sysScheduleLogs.map(SysScheduleLog::getId).collect(Collectors.toSet());
|
||||||
sysScheduleLogMapper.deleteBatchIds(delIds);
|
sysScheduleLogMapper.deleteBatchIds(delIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,35 +216,35 @@ export class SysScheduleServiceImplService {
|
|||||||
async logList(...args: any[]): Promise<any> {
|
async logList(...args: any[]): Promise<any> {
|
||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
const qw: LambdaQueryWrapper<SysScheduleLog> = new LambdaQueryWrapper<>();
|
Lambdaqw = new LambdaQueryWrapper<>();
|
||||||
qw.eq(ObjectUtil.isNotEmpty(searchParam.getScheduleId()), SysScheduleLog::getScheduleId, searchParam.getScheduleId());
|
qw.eq(!!searchParam.getScheduleId(), SysScheduleLog::getScheduleId, searchParam.getScheduleId());
|
||||||
qw.eq(ObjectUtil.isNotEmpty(searchParam.getKey()), SysScheduleLog::getKey, searchParam.getKey());
|
qw.eq(!!searchParam.getKey(), SysScheduleLog::getKey, searchParam.getKey());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getStatus()) && !"all" === searchParam.getStatus()){
|
if (!!searchParam.getStatus() && !"all".equals(searchParam.getStatus())){
|
||||||
qw.eq(SysScheduleLog::getStatus, searchParam.getStatus());
|
qw.eq(SysScheduleLog::getStatus, searchParam.getStatus());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getExecuteTime())) {
|
if (!!searchParam.getExecuteTime()) {
|
||||||
QueryMapperUtils.buildByTime(qw, SysScheduleLog::getExecuteTime, searchParam.getExecuteTime());
|
QueryMapperUtils.buildByTime(qw, SysScheduleLog::getExecuteTime, searchParam.getExecuteTime());
|
||||||
}
|
}
|
||||||
const sysScheduleLogPage: Page<SysScheduleLog> = sysScheduleLogMapper.selectPage(new Page<>(page, limit), qw);
|
const sysScheduleLogPage: Page<SysScheduleLog> = this.sysScheduleLogRepository.findAndCount({ /* pagination */ }, qw);
|
||||||
const result: SysScheduleLogListVo[] = [];
|
SysScheduleLogListVo[] result = [];
|
||||||
sysScheduleLogPage.getRecords().forEach(sysScheduleLog => {
|
records.forEach(sysScheduleLog => {
|
||||||
const sysScheduleLogListVo: SysScheduleLogListVo = new SysScheduleLogListVo();
|
const sysScheduleLogListVo: SysScheduleLogListVo = new SysScheduleLogListVo();
|
||||||
BeanUtils.copyProperties(sysScheduleLog, sysScheduleLogListVo);
|
Object.assign(sysScheduleLogListVo, sysScheduleLog);
|
||||||
result.add(sysScheduleLogListVo);
|
result.push(sysScheduleLogListVo);
|
||||||
});
|
});
|
||||||
return PageResult.build(page, limit, sysScheduleLogPage.getTotal()).setData(result);
|
return PageResult.build(page, limit, total).setData(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* addLog
|
* addLog
|
||||||
*/
|
*/
|
||||||
async addLog(...args: any[]): Promise<any> {
|
async addLog(...args: any[]): Promise<any> {
|
||||||
const sysSchedule: SysSchedule = sysScheduleMapper.selectOne(new LambdaQueryWrapper<SysSchedule>()
|
const sysSchedule: SysSchedule = this.sysScheduleRepository.findOne(new Lambda()
|
||||||
.eq(SysSchedule::getKey, log.getKey()).eq(SysSchedule::getAddon, log.getAddon()));
|
.eq(SysSchedule::getKey, log.getKey()).eq(SysSchedule::getAddon, log.getAddon()));
|
||||||
if (sysSchedule == null) return;
|
if (sysSchedule == null) return;
|
||||||
log.setScheduleId(sysSchedule.getId());
|
log.setScheduleId(sysSchedule.getId());
|
||||||
log.setExecuteTime(DateUtils.currTime());
|
log.setExecuteTime(DateUtils.currTime());
|
||||||
sysScheduleLogMapper.insert(log);
|
this.sysScheduleLogRepository.save(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -285,7 +285,7 @@ export class SysScheduleServiceImplService {
|
|||||||
.job(classPath)
|
.job(classPath)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
// 获取任务名称(即使在异常情况下也尝试获取)
|
// 获取任务名称(即使在异常情况下也尝试获取)
|
||||||
const errorMsg: string = "计划任务:" + path.basename(sysSchedule) + "发生错误, 错误原因:" + e.message +
|
const errorMsg: string = "计划任务:" + path.basename(sysSchedule) + "发生错误, 错误原因:" + e.message +
|
||||||
" at " + e.getStackTrace()[0].toString();
|
" at " + e.getStackTrace()[0].toString();
|
||||||
@@ -314,6 +314,6 @@ export class SysScheduleServiceImplService {
|
|||||||
* clearLog
|
* clearLog
|
||||||
*/
|
*/
|
||||||
async clearLog(...args: any[]): Promise<any> {
|
async clearLog(...args: any[]): Promise<any> {
|
||||||
sysScheduleLogMapper.delete(new QueryWrapper<SysScheduleLog>().eq("schedule_id", scheduleId));
|
this.sysScheduleLogRepository.delete(new ().eq("schedule_id", scheduleId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class SysUpgradeRecordsServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysUpgradeRecords> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.orderByDesc("create_time");
|
||||||
|
|
||||||
if (searchParam != null) {
|
if (searchParam != null) {
|
||||||
@@ -26,11 +26,11 @@ export class SysUpgradeRecordsServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const iPage: IPage<SysUpgradeRecords> = sysUpgradeRecordsMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.sysUpgradeRecordsRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: SysUpgradeRecordsListVo[] = [];
|
SysUpgradeRecordsListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysUpgradeRecordsListVo = new SysUpgradeRecordsListVo();
|
const vo: SysUpgradeRecordsListVo = new SysUpgradeRecordsListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
vo.setCreateTime(DateUtils.timestampToString(item.getCreateTime()));
|
||||||
vo.setCompleteTime(DateUtils.timestampToString(item.getCompleteTime()));
|
vo.setCompleteTime(DateUtils.timestampToString(item.getCompleteTime()));
|
||||||
vo.setStatusName(UpgradeRecordStatusEnum.getNameByStatus(vo.getStatus()));
|
vo.setStatusName(UpgradeRecordStatusEnum.getNameByStatus(vo.getStatus()));
|
||||||
@@ -45,36 +45,36 @@ export class SysUpgradeRecordsServiceImplService {
|
|||||||
vo.setContent(value);
|
vo.setContent(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(SysUpgradeRecordsParam addParam) {
|
public void add(SysUpgradeRecordsParam addParam) {
|
||||||
const model: SysUpgradeRecords = new SysUpgradeRecords();
|
const model: SysUpgradeRecords = new SysUpgradeRecords();
|
||||||
BeanUtils.copyProperties(addParam, model);
|
Object.assign(model, addParam);
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
sysUpgradeRecordsMapper.insert(model);
|
this.sysUpgradeRecordsRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void edit(String key, SysUpgradeRecordsParam editParam) {
|
public void edit(String key, SysUpgradeRecordsParam editParam) {
|
||||||
const model: SysUpgradeRecords = new SysUpgradeRecords();
|
const model: SysUpgradeRecords = new SysUpgradeRecords();
|
||||||
BeanUtils.copyProperties(editParam, model);
|
Object.assign(model, editParam);
|
||||||
sysUpgradeRecordsMapper.update(model, new QueryWrapper<SysUpgradeRecords>().eq("upgrade_key", key));
|
sysUpgradeRecordsMapper.update(model, new ().eq("upgrade_key", key));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clear(long threshold) {
|
public void clear(long threshold) {
|
||||||
sysUpgradeRecordsMapper.delete(new QueryWrapper<SysUpgradeRecords>()
|
this.sysUpgradeRecordsRepository.delete(new ()
|
||||||
.lt("create_time", threshold).in("status", STATUS_READY, STATUS_FAIL));
|
.lt("create_time", threshold).in("status", STATUS_READY, STATUS_FAIL));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void del(SysUpgradeRecordsDelParam delParam) {
|
public void del(SysUpgradeRecordsDelParam delParam) {
|
||||||
const queryWrapper: QueryWrapper = new QueryWrapper<SysUpgradeRecords>();
|
const queryWrapper: QueryWrapper = new ();
|
||||||
|
|
||||||
if (delParam.getIds().getClass().getName().startsWith("[")) {
|
if (delParam.getIds().getClass().getName().startsWith("[")) {
|
||||||
String[] stringIds = (String[]) delParam.getIds();
|
String[] stringIds = (String[]) delParam.getIds();
|
||||||
@@ -82,7 +82,7 @@ export class SysUpgradeRecordsServiceImplService {
|
|||||||
} else {
|
} else {
|
||||||
queryWrapper.eq("id", delParam.getIds());
|
queryWrapper.eq("id", delParam.getIds());
|
||||||
}
|
}
|
||||||
sysUpgradeRecordsMapper.delete(queryWrapper);
|
this.sysUpgradeRecordsRepository.delete(queryWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -16,44 +16,44 @@ export class SysUserLogServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<SysUserLog> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
if(ObjectUtil.isNotNull(searchParam.getUsername()) && ObjectUtil.isNotEmpty(searchParam.getUsername())){
|
if(ObjectUtil.isNotNull(searchParam.getUsername()) && !!searchParam.getUsername()){
|
||||||
queryWrapper.like("username", searchParam.getUsername());
|
queryWrapper.like("username", searchParam.getUsername());
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isNotNull(searchParam.getIp()) && ObjectUtil.isNotEmpty(searchParam.getIp())){
|
if(ObjectUtil.isNotNull(searchParam.getIp()) && !!searchParam.getIp()){
|
||||||
queryWrapper.like("ip", searchParam.getIp());
|
queryWrapper.like("ip", searchParam.getIp());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ObjectUtil.isNotNull(searchParam.getUrl()) && ObjectUtil.isNotEmpty(searchParam.getUrl())){
|
if(ObjectUtil.isNotNull(searchParam.getUrl()) && !!searchParam.getUrl()){
|
||||||
queryWrapper.like("url", searchParam.getUrl());
|
queryWrapper.like("url", searchParam.getUrl());
|
||||||
}
|
}
|
||||||
const iPage: IPage<SysUserLog> = sysUserLogMapper.selectPage(new Page<SysUserLog>(page, limit), queryWrapper);
|
iPage = this.sysUserLogRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
|
|
||||||
const list: SysUserLogListVo[] = [];
|
SysUserLogListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SysUserLogListVo = new SysUserLogListVo();
|
const vo: SysUserLogListVo = new SysUserLogListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysUserLog = sysUserLogMapper.selectOne(
|
const model: SysUserLog = this.sysUserLogRepository.findOne(
|
||||||
new QueryWrapper<SysUserLog>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: SysUserLogInfoVo = new SysUserLogInfoVo();
|
const vo: SysUserLogInfoVo = new SysUserLogInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,6 +61,6 @@ export class SysUserLogServiceImplService {
|
|||||||
* destroy
|
* destroy
|
||||||
*/
|
*/
|
||||||
async destroy(...args: any[]): Promise<any> {
|
async destroy(...args: any[]): Promise<any> {
|
||||||
sysUserLogMapper.delete(new QueryWrapper<SysUserLog>().eq("site_id", RequestUtils.siteId()));
|
this.sysUserLogRepository.delete(new ().eq("site_id", RequestUtils.siteId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SysUserRoleServiceImplService {
|
export class SysUserRoleServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,23 +16,23 @@ export class SysUserRoleServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<SysUserRole> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
|
|
||||||
//sql语句
|
//sql语句
|
||||||
queryWrapper.select("nsu.uid, nsu.username, nsu.head_img, nsu.password, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count, nsu.status, nsu.is_del, nsu.delete_time, nsu.update_time, nsur.id, nsur.site_id, nsur.role_ids, nsur.is_admin")
|
queryWrapper.select("nsu.uid, nsu.username, nsu.head_img, nsu.password, nsu.real_name, nsu.last_ip, nsu.last_time, nsu.create_time, nsu.login_count, nsu.status, nsu.is_del, nsu.delete_time, nsu.update_time, nsur.id, nsur.site_id, nsur.role_ids, nsur.is_admin")
|
||||||
.setAlias("nsur")
|
.setAlias("nsur")
|
||||||
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_sys_user nsu ON nsur.uid = nsu.uid".replace("?_", this.appConfig.tablePrefix));
|
||||||
|
|
||||||
//查询条件判断组装
|
//查询条件判断组装
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getUid())) {
|
if (!!searchParam.getUid()) {
|
||||||
queryWrapper.eq("nsu.uid", searchParam.getUid());
|
queryWrapper.eq("nsu.uid", searchParam.getUid());
|
||||||
}
|
}
|
||||||
|
|
||||||
//排序
|
//排序
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
//分页查询
|
//分页查询
|
||||||
const iPage: IPage<SysUserRoleListVo> = sysUserRoleMapper.selectJoinPage(
|
iPage = sysUserRoleMapper.selectJoinPage(
|
||||||
new Page<>(page, limit),
|
{ /* pagination */ },
|
||||||
SysUserRoleListVo.class,
|
SysUserRoleListVo.class,
|
||||||
queryWrapper);
|
queryWrapper);
|
||||||
|
|
||||||
@@ -45,15 +44,15 @@ export class SysUserRoleServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const model: SysUserRole = sysUserRoleMapper.selectOne(
|
const model: SysUserRole = this.sysUserRoleRepository.findOne(
|
||||||
new QueryWrapper<SysUserRole>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: SysUserRoleInfoVo = new SysUserRoleInfoVo();
|
const vo: SysUserRoleInfoVo = new SysUserRoleInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,8 +60,8 @@ export class SysUserRoleServiceImplService {
|
|||||||
* add
|
* add
|
||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const userRoleCount: number = sysUserRoleMapper.selectCount(
|
const userRoleCount: number = this.sysUserRoleRepository.count(
|
||||||
new QueryWrapper<SysUserRole>()
|
new ()
|
||||||
.eq("uid", addParam.getUid())
|
.eq("uid", addParam.getUid())
|
||||||
.eq("site_id", addParam.getSiteId())
|
.eq("site_id", addParam.getSiteId())
|
||||||
);
|
);
|
||||||
@@ -78,21 +77,21 @@ export class SysUserRoleServiceImplService {
|
|||||||
model.setIsAdmin(addParam.getIsAdmin()==null?0:addParam.getIsAdmin());
|
model.setIsAdmin(addParam.getIsAdmin()==null?0:addParam.getIsAdmin());
|
||||||
model.setStatus(ObjectUtil.isNull(addParam.getStatus())? StatusEnum.ON.getStatus() : addParam.getStatus());
|
model.setStatus(ObjectUtil.isNull(addParam.getStatus())? StatusEnum.ON.getStatus() : addParam.getStatus());
|
||||||
if(model.getStatus()<1){
|
if(model.getStatus()<1){
|
||||||
model.setRoleIds(addParam.getRoleIds()==null? JSONUtil.toJsonStr(new JsonArray()):addParam.getRoleIds());
|
model.setRoleIds(addParam.getRoleIds()==null? JSON.stringify(new JsonArray()):addParam.getRoleIds());
|
||||||
}
|
}
|
||||||
sysUserRoleMapper.insert(model);
|
this.sysUserRoleRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const model: SysUserRole = sysUserRoleMapper.selectOne(
|
const model: SysUserRole = this.sysUserRoleRepository.findOne(
|
||||||
new QueryWrapper<SysUserRole>()
|
new ()
|
||||||
.eq("uid", editParam.getUid())
|
.eq("uid", editParam.getUid())
|
||||||
.eq("site_id", editParam.getSiteId())
|
.eq("site_id", editParam.getSiteId())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
const isAdmin: number = model.getIsAdmin();
|
const isAdmin: number = model.getIsAdmin();
|
||||||
if(isAdmin>0){
|
if(isAdmin>0){
|
||||||
//超级管理员不允许改动权限
|
//超级管理员不允许改动权限
|
||||||
@@ -100,31 +99,31 @@ export class SysUserRoleServiceImplService {
|
|||||||
}
|
}
|
||||||
model.setStatus(editParam.getStatus());
|
model.setStatus(editParam.getStatus());
|
||||||
model.setRoleIds(editParam.getRoleIds());
|
model.setRoleIds(editParam.getRoleIds());
|
||||||
sysUserRoleMapper.updateById(model);
|
this.sysUserRoleRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
const model: SysUserRole = sysUserRoleMapper.selectOne(
|
const model: SysUserRole = this.sysUserRoleRepository.findOne(
|
||||||
new QueryWrapper<SysUserRole>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().eq("id", id));
|
this.sysUserRoleRepository.delete(new ().eq("id", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getUserRole
|
* getUserRole
|
||||||
*/
|
*/
|
||||||
async getUserRole(...args: any[]): Promise<any> {
|
async getUserRole(...args: any[]): Promise<any> {
|
||||||
const model: SysUserRole = sysUserRoleMapper.selectOne(new QueryWrapper<SysUserRole>().eq("uid", uid).eq("site_id", site_id).last(" limit 1"));
|
const model: SysUserRole = this.sysUserRoleRepository.findOne(new ().eq("uid", uid).eq("site_id", site_id).last(" limit 1"));
|
||||||
const vo: SysUserRoleInfoVo = new SysUserRoleInfoVo();
|
const vo: SysUserRoleInfoVo = new SysUserRoleInfoVo();
|
||||||
if(ObjectUtil.isNotNull(model)){
|
if(ObjectUtil.isNotNull(model)){
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}else{
|
}else{
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export class SystemServiceImplService {
|
|||||||
* clearCache
|
* clearCache
|
||||||
*/
|
*/
|
||||||
async clearCache(...args: any[]): Promise<any> {
|
async clearCache(...args: any[]): Promise<any> {
|
||||||
cached.getAllKeys().stream().forEach(key => cached.remove(key));
|
cached.getAllKeys().forEach(key => cached.remove(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,15 +40,15 @@ export class SystemServiceImplService {
|
|||||||
const vo: SpreadQrcodeVo = new SpreadQrcodeVo();
|
const vo: SpreadQrcodeVo = new SpreadQrcodeVo();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const data: Record<string, any> = {};
|
const data: Record<String, Object> = {};
|
||||||
for (SpreadQrcodeParam.Param qrcodeParam : param.getParams()) {
|
for (SpreadQrcodeParam.Param qrcodeParam : param.getParams()) {
|
||||||
const jsonArray: JSONArray = JSONUtil.parseArray(qrcodeParam);
|
const jsonArray: JSONArray = JSONUtil.parseArray(qrcodeParam);
|
||||||
const jsonObject: Record<string, any> = JSONUtil.parseObj(jsonArray);
|
const jsonObject: Record<string, any> = JSON.parse(jsonArray);
|
||||||
data.put(jsonObject.getStr("name"), qrcodeParam.getColumnValue());
|
data.put(jsonObject.getStr("name"), qrcodeParam.getColumnValue());
|
||||||
}
|
}
|
||||||
const dir: string = "upload/qrcode/" + RequestUtils.siteId() + "/" + param.getFolder();
|
const dir: string = "upload/qrcode/" + RequestUtils.siteId() + "/" + param.getFolder();
|
||||||
vo.setWeappPath(QrcodeUtils.qrcodeToFile(RequestUtils.siteId(), "weapp", "", param.getPage(), data, dir));
|
vo.setWeappPath(QrcodeUtils.qrcodeToFile(RequestUtils.siteId(), "weapp", "", param.getPage(), data, dir));
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
return vo;
|
return vo;
|
||||||
@@ -61,7 +61,7 @@ export class SystemServiceImplService {
|
|||||||
try (const connection: Connection = dataSource.getConnection()) {
|
try (const connection: Connection = dataSource.getConnection()) {
|
||||||
DatabaseMetaData metaData = connection.getMetaData();
|
DatabaseMetaData metaData = connection.getMetaData();
|
||||||
return metaData.getDatabaseProductVersion();
|
return metaData.getDatabaseProductVersion();
|
||||||
}catch (SQLException e) {
|
}catch (e) {
|
||||||
return "未知";
|
return "未知";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UpgradeServiceImplService {
|
export class UpgradeServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -22,7 +21,7 @@ export class UpgradeServiceImplService {
|
|||||||
* upgradeCheck
|
* upgradeCheck
|
||||||
*/
|
*/
|
||||||
async upgradeCheck(...args: any[]): Promise<any> {
|
async upgradeCheck(...args: any[]): Promise<any> {
|
||||||
if (this.config.get('runActive') === "dev") throw new BadRequestException("开发环境下请先关闭服务启动webroot/jar下的web-app-boot-exec进行升级");
|
if (this.appConfig.runActive === "dev") throw new BadRequestException("开发环境下请先关闭服务启动webroot/jar下的web-app-boot-exec进行升级");
|
||||||
|
|
||||||
const upgradeCheck: boolean = true;
|
const upgradeCheck: boolean = true;
|
||||||
|
|
||||||
@@ -32,8 +31,8 @@ export class UpgradeServiceImplService {
|
|||||||
const readableDir: JSONArray = new JSONArray();
|
const readableDir: JSONArray = new JSONArray();
|
||||||
const writeDir: JSONArray = new JSONArray();
|
const writeDir: JSONArray = new JSONArray();
|
||||||
|
|
||||||
if (this.config.get('envType') === "dev") {
|
if (this.appConfig.envType === "dev") {
|
||||||
rootPath = this.config.get('projectRoot') + "/";
|
rootPath = this.appConfig.projectRoot + "/";
|
||||||
runtimePath = rootPath;
|
runtimePath = rootPath;
|
||||||
|
|
||||||
readableDir.put(new Record<string, any>().set("dir", rootPath + "niucloud-addon").set("status", true));
|
readableDir.put(new Record<string, any>().set("dir", rootPath + "niucloud-addon").set("status", true));
|
||||||
@@ -41,7 +40,7 @@ export class UpgradeServiceImplService {
|
|||||||
readableDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
readableDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
||||||
writeDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
writeDir.put(new Record<string, any>().set("dir", rootPath + "webroot").set("status", true));
|
||||||
} else {
|
} else {
|
||||||
rootPath = this.config.get('webRoot') + "/";
|
rootPath = this.appConfig.webRoot + "/";
|
||||||
runtimePath = rootPath + "runtime/";
|
runtimePath = rootPath + "runtime/";
|
||||||
|
|
||||||
readableDir.put(new Record<string, any>().set("dir", runtimePath).set("status", true));
|
readableDir.put(new Record<string, any>().set("dir", runtimePath).set("status", true));
|
||||||
@@ -56,7 +55,7 @@ export class UpgradeServiceImplService {
|
|||||||
writeDir.put(new Record<string, any>().set("dir", runtimePath + "uni-app").set("status", true));
|
writeDir.put(new Record<string, any>().set("dir", runtimePath + "uni-app").set("status", true));
|
||||||
writeDir.put(new Record<string, any>().set("dir", runtimePath + "web").set("status", true));
|
writeDir.put(new Record<string, any>().set("dir", runtimePath + "web").set("status", true));
|
||||||
|
|
||||||
for (const i of number = 0; i < readableDir.size(); i++) {
|
for (const i of number = 0; i < readableDir.length; i++) {
|
||||||
const dir: Record<string, any> = readableDir.getJSONObject(i);
|
const dir: Record<string, any> = readableDir.getJSONObject(i);
|
||||||
dir.set("status", dir.getStr("dir").canRead());
|
dir.set("status", dir.getStr("dir").canRead());
|
||||||
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
||||||
@@ -64,7 +63,7 @@ export class UpgradeServiceImplService {
|
|||||||
if (!dir.getBool("status")) upgradeCheck = false;
|
if (!dir.getBool("status")) upgradeCheck = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const i of number = 0; i < writeDir.size(); i++) {
|
for (const i of number = 0; i < writeDir.length; i++) {
|
||||||
const dir: Record<string, any> = writeDir.getJSONObject(i);
|
const dir: Record<string, any> = writeDir.getJSONObject(i);
|
||||||
dir.set("status", dir.getStr("dir").canWrite());
|
dir.set("status", dir.getStr("dir").canWrite());
|
||||||
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
dir.set("dir", dir.getStr("dir").replace(rootPath, ""));
|
||||||
@@ -84,25 +83,25 @@ export class UpgradeServiceImplService {
|
|||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
const vo: UpgradeContentVo = new UpgradeContentVo();
|
const vo: UpgradeContentVo = new UpgradeContentVo();
|
||||||
|
|
||||||
const apps: Record<string, any>[] = [];
|
LinkedMap[] apps = [];
|
||||||
|
|
||||||
if (addon.length === 0) {
|
if (addon.length === 0) {
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = new HashRecord<>();
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
query.put("app_key", this.config.get('appKey'));
|
query.put("app_key", this.appConfig.appKey);
|
||||||
query.put("version", this.config.get('version'));
|
query.put("version", this.appConfig.version);
|
||||||
apps.add(query);
|
apps.push(query);
|
||||||
} else {
|
} else {
|
||||||
for (const key of addon.split(",")) {
|
for (const key of addon.split(",")) {
|
||||||
const addonModel: Addon = addonMapper.selectOne(new QueryWrapper<Addon>().eq("`key`", key).select("version,type"));
|
const addonModel: Addon = this.addonRepository.findOne(new ().eq("`key`", key).select("version,type"));
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = new HashRecord<>();
|
||||||
query.put("product_key", instance.getProductKey());
|
query.put("product_key", instance.getProductKey());
|
||||||
query.put("app_key", key);
|
query.put("app_key", key);
|
||||||
query.put("version", addonModel.getVersion());
|
query.put("version", addonModel.getVersion());
|
||||||
if (addonModel.getType() === AddonTypeEnum.APP.getType()) {
|
if (addonModel.getType() === AddonTypeEnum.APP.getType()) {
|
||||||
apps.addFirst(query);
|
apps.addFirst(query);
|
||||||
} else {
|
} else {
|
||||||
apps.add(query);
|
apps.push(query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,7 +115,7 @@ export class UpgradeServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vo.setLastBackup(sysBackupRecordsMapper.selectOne(new QueryWrapper<SysBackupRecords>()
|
vo.setLastBackup(this.sysBackupRecordsRepository.findOne(new ()
|
||||||
.eq("status", "complete")
|
.eq("status", "complete")
|
||||||
.orderByDesc("complete_time")
|
.orderByDesc("complete_time")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
@@ -129,39 +128,39 @@ export class UpgradeServiceImplService {
|
|||||||
* upgrade
|
* upgrade
|
||||||
*/
|
*/
|
||||||
async upgrade(...args: any[]): Promise<any> {
|
async upgrade(...args: any[]): Promise<any> {
|
||||||
if (this.config.get('runActive') === "dev") throw new BadRequestException("开发环境下请先关闭服务启动webroot/jar下的web-app-boot-exec进行升级");
|
if (this.appConfig.runActive === "dev") throw new BadRequestException("开发环境下请先关闭服务启动webroot/jar下的web-app-boot-exec进行升级");
|
||||||
if (getUpgradeTask() != null) throw new BadRequestException("已经有正在升级中的任务");
|
if (getUpgradeTask() != null) throw new BadRequestException("已经有正在升级中的任务");
|
||||||
|
|
||||||
const upgradeContent: UpgradeContentVo = getUpgradeContent(upgradeParam.getAddon());
|
const upgradeContent: UpgradeContentVo = getUpgradeContent(upgradeParam.getAddon());
|
||||||
upgradeContent.setContent(upgradeContent.getContent().stream().filter(c => c.getVersionList().size() > 0).toList());
|
upgradeContent.setContent(upgradeContent.getContent().filter(c => c.getVersionList().size() > 0).toList());
|
||||||
upgradeContent.setUpgradeApps(upgradeContent.getContent().stream().map(c => c.getApp().getAppKey()).toList());
|
upgradeContent.setUpgradeApps(upgradeContent.getContent().map(c => c.getApp().getAppKey()).toList());
|
||||||
if (upgradeContent.getContent().size() == 0) throw new BadRequestException("没有获取到可以升级的内容");
|
if (upgradeContent.getContent().size() == 0) throw new BadRequestException("没有获取到可以升级的内容");
|
||||||
|
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
// 获取下载const actionQuery: token
|
// 获取下载const actionQuery: token
|
||||||
Map<String, Object> = {};
|
Record<String, Object> = new HashRecord<>();
|
||||||
actionQuery.put("data[product_key]", instance.getProductKey());
|
actionQuery.put("data[product_key]", instance.getProductKey());
|
||||||
actionQuery.put("data[framework_version]", this.config.get('version'));
|
actionQuery.put("data[framework_version]", this.appConfig.version);
|
||||||
actionQuery.put("data[app_key]", upgradeContent.getContent().get(0).getApp().getAppKey());
|
actionQuery.put("data[app_key]", upgradeContent.getContent().get(0).getApp().getAppKey());
|
||||||
actionQuery.put("data[version]", upgradeContent.getContent().get(0).getVersion());
|
actionQuery.put("data[version]", upgradeContent.getContent().get(0).getVersion());
|
||||||
|
|
||||||
const actionToken: Record<string, any> = niucloudService.getActionToken("upgrade", actionQuery);
|
const actionToken: Record<string, any> = niucloudService.getActionToken("upgrade", actionQuery);
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<string, any> = new HashRecord<>();
|
||||||
query.put("authorize_code", instance.getCode());
|
query.put("authorize_code", instance.getCode());
|
||||||
query.put("token", actionToken == null ? "" : actionToken.getStr("token"));
|
query.put("token", actionToken == null ? "" : actionToken.getStr("token"));
|
||||||
const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/upgrade").query(query).method(Method.GET).execute();
|
const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/upgrade").query(query).method(Method.GET).execute();
|
||||||
|
|
||||||
if (response.getStatus() != 200) throw new BadRequestException("升级请求失败");
|
if (response.getStatus() != 200) throw new BadRequestException("升级请求失败");
|
||||||
|
|
||||||
const body: Record<string, any> = JSONUtil.parseObj(response.body());
|
const body: Record<string, any> = JSON.parse(response.body());
|
||||||
if (body.getInt("code") === 0) throw new Error(body.getStr("msg"));
|
if (body.getInt("code").equals(0)) throw new RuntimeException(body.getStr("msg"));
|
||||||
|
|
||||||
const vo: UpgradeTaskVo = new UpgradeTaskVo();
|
const vo: UpgradeTaskVo = new UpgradeTaskVo();
|
||||||
vo.setEnvType(this.config.get('envType'));
|
vo.setEnvType(this.appConfig.envType);
|
||||||
vo.setUpgradeTime(DateUtil.now());
|
vo.setUpgradeTime(DateUtil.now());
|
||||||
vo.setAddon(actionQuery.get("data[app_key]"));
|
vo.setAddon((String) actionQuery.get("data[app_key]"));
|
||||||
vo.setKey(RandomUtil.randomString(10));
|
vo.setKey(RandomUtil.randomString(10));
|
||||||
vo.setUpgrade(actionQuery);
|
vo.setUpgrade(actionQuery);
|
||||||
vo.setStep("requestUpgrade");
|
vo.setStep("requestUpgrade");
|
||||||
@@ -181,7 +180,7 @@ export class UpgradeServiceImplService {
|
|||||||
|
|
||||||
// 添加升级记录
|
// 添加升级记录
|
||||||
const content: JSONArray = new JSONArray();
|
const content: JSONArray = new JSONArray();
|
||||||
upgradeContent.getContent().stream().forEach(i => {
|
upgradeContent.getContent().forEach(i => {
|
||||||
const item: Record<string, any> = new Record<string, any>();
|
const item: Record<string, any> = new Record<string, any>();
|
||||||
item.set("app_key", i.getApp().getAppKey());
|
item.set("app_key", i.getApp().getAppKey());
|
||||||
item.putByPath("app.name", i.getApp().getAppName());
|
item.putByPath("app.name", i.getApp().getAppName());
|
||||||
@@ -193,7 +192,7 @@ export class UpgradeServiceImplService {
|
|||||||
record.setUpgradeKey(vo.getKey());
|
record.setUpgradeKey(vo.getKey());
|
||||||
record.setStatus(UpgradeRecordStatusEnum.STATUS_READY.getStatus());
|
record.setStatus(UpgradeRecordStatusEnum.STATUS_READY.getStatus());
|
||||||
record.setContent(content.toString());
|
record.setContent(content.toString());
|
||||||
sysUpgradeRecordsService.add(record);
|
sysUpgradeRecordsService.push(record);
|
||||||
|
|
||||||
setUpgradeTaskCache(vo);
|
setUpgradeTaskCache(vo);
|
||||||
return vo;
|
return vo;
|
||||||
@@ -206,7 +205,7 @@ export class UpgradeServiceImplService {
|
|||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
const data: any = cache.get("upgrade");
|
const data: any = cache.get("upgrade");
|
||||||
if (data == null) return null;
|
if (data == null) return null;
|
||||||
return JSONUtil.toBean(JSONUtil.parseObj(data), UpgradeTaskVo.class);
|
return Object.assign(new UpgradeTaskVo(), JSON.parse(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -214,7 +213,7 @@ export class UpgradeServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async setUpgradeTaskCache(...args: any[]): Promise<any> {
|
async setUpgradeTaskCache(...args: any[]): Promise<any> {
|
||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
cache.put("upgrade", JSONUtil.parseObj(vo).toString());
|
cache.put("upgrade", JSON.parse(vo).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -224,7 +223,7 @@ export class UpgradeServiceImplService {
|
|||||||
if (delayed > 0) {
|
if (delayed > 0) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(delayed * 1000);
|
Thread.sleep(delayed * 1000);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const cache: Cached = CacheFactory.getCacheOperator();
|
const cache: Cached = CacheFactory.getCacheOperator();
|
||||||
@@ -238,19 +237,19 @@ export class UpgradeServiceImplService {
|
|||||||
const vo: UpgradeTaskVo = this.getUpgradeTask();
|
const vo: UpgradeTaskVo = this.getUpgradeTask();
|
||||||
if (vo == null) return;
|
if (vo == null) return;
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(vo.getStatus()) && vo.getStatus() === "restarting") return;
|
if (!!vo.getStatus() && vo.getStatus() === "restarting") return;
|
||||||
|
|
||||||
const steps: string[] = vo.getSteps().keySet().stream().collect(Collectors.toList());
|
String[] steps = vo.getSteps().keySet();
|
||||||
const step: string = steps.indexOf(vo.getStep()) < steps.size() - 1 ? steps.get(steps.indexOf(vo.getStep()) + 1) : "";
|
const step: string = steps.indexOf(vo.getStep()) < steps.length - 1 ? steps.get(steps.indexOf(vo.getStep()) + 1) : "";
|
||||||
|
|
||||||
if (step.length !== 0) {
|
if (step.length > 0) {
|
||||||
if (!vo.getExecuted().includes(step)) {
|
if (!vo.getExecuted().includes(step)) {
|
||||||
vo.getExecuted().add(step);
|
vo.getExecuted().add(step);
|
||||||
vo.getLog().add(vo.getSteps().get(step).getTitle());
|
vo.getLog().add(vo.getSteps().get(step).getTitle());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const param: Record<string, any> = null;
|
const param: Record<String, Object> = null;
|
||||||
param = (Map<String, Object>) dynamicMethodCall(step, vo);
|
param = (Record<String, Object>) dynamicMethodCall(step, vo);
|
||||||
if (param != null) {
|
if (param != null) {
|
||||||
vo.setParams(param);
|
vo.setParams(param);
|
||||||
} else {
|
} else {
|
||||||
@@ -259,7 +258,7 @@ export class UpgradeServiceImplService {
|
|||||||
vo.setAddon(vo.getUpgradeApps().get(0));
|
vo.setAddon(vo.getUpgradeApps().get(0));
|
||||||
}
|
}
|
||||||
setUpgradeTaskCache(vo);
|
setUpgradeTaskCache(vo);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
if (e.message.includes("队列")) {
|
if (e.message.includes("队列")) {
|
||||||
throw e;
|
throw e;
|
||||||
} else {
|
} else {
|
||||||
@@ -267,7 +266,7 @@ export class UpgradeServiceImplService {
|
|||||||
vo.getError().add(e.message);
|
vo.getError().add(e.message);
|
||||||
setUpgradeTaskCache(vo);
|
setUpgradeTaskCache(vo);
|
||||||
this.upgradeErrorHandle(vo);
|
this.upgradeErrorHandle(vo);
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
console.log("升级异常.");
|
console.log("升级异常.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -278,41 +277,41 @@ export class UpgradeServiceImplService {
|
|||||||
* coverCode
|
* coverCode
|
||||||
*/
|
*/
|
||||||
async coverCode(...args: any[]): Promise<any> {
|
async coverCode(...args: any[]): Promise<any> {
|
||||||
if (this.config.get('envType') === "dev") {
|
if (this.appConfig.envType === "dev") {
|
||||||
vo.getUpgradeContent().getContent().forEach(item => {
|
vo.getUpgradeContent().getContent().forEach(item => {
|
||||||
const appKey: string = item.getApp().getAppKey();
|
const appKey: string = item.getApp().getAppKey();
|
||||||
const codeDir: string = upgradeDir(vo + "/download/" + appKey);
|
const codeDir: string = upgradeDir(vo + "/download/" + appKey);
|
||||||
|
|
||||||
// 判断目录存在并且不为空
|
// 判断目录存在并且不为空
|
||||||
if (fs.existsSync(codeDir) && fs.readdirSync(codeDir).length > 0) {
|
if (fs.existsSync(codeDir) && fs.readdirSync(codeDir).length > 0) {
|
||||||
item.getVersionList().stream().collect(Collectors.collectingAndThen(
|
item.getVersionList().collect(Collectors.collectingAndThen(
|
||||||
Collectors.toList(),
|
Collectors.toList(),
|
||||||
l => {
|
l => {
|
||||||
Collections.reverse(l);
|
Collections.reverse(l);
|
||||||
return l.stream();
|
return l;
|
||||||
})).forEach(version => {
|
})).forEach(version => {
|
||||||
// 如果是框架
|
// 如果是框架
|
||||||
const rootDir: string = null;
|
const rootDir: string = null;
|
||||||
if (appKey === this.config.get('appKey')) {
|
if (appKey === this.appConfig.appKey) {
|
||||||
rootDir = this.config.get('projectRoot');
|
rootDir = this.appConfig.projectRoot;
|
||||||
} else {
|
} else {
|
||||||
rootDir = this.config.get('webRootDownAddon', appKey);
|
rootDir = this.appConfig.webRootDownAddon, appKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理文件变更记录
|
// 处理文件变更记录
|
||||||
const changeRecord: string = codeDir, version.getVersionNo( + ".txt");
|
const changeRecord: string = codeDir, version.getVersionNo( + ".txt");
|
||||||
if (fs.existsSync(changeRecord)) {
|
if (fs.existsSync(changeRecord)) {
|
||||||
// 移除新版本删除的文件
|
// 移除新版本删除的文件
|
||||||
const change: string[] = null;
|
String[] change = null;
|
||||||
try {
|
try {
|
||||||
change = Arrays.asList(fs.readFileSync(changeRecord, "UTF-8", 'utf-8').split("\n"));
|
change = Arrays.asList(fs.readFileSync(changeRecord, "UTF-8", 'utf-8').split("\n"));
|
||||||
} catch (IOException e) {
|
} catch (e) {
|
||||||
throw new Error(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(change)) {
|
if (!!change) {
|
||||||
for (const line of change) {
|
for (const line of change) {
|
||||||
String[] content = line.split(" ");
|
String[] content = line.split(" ");
|
||||||
if (content[0] === "-") {
|
if (content[0].equals("-")) {
|
||||||
(rootDir, content[2]).deleteOnExit();
|
(rootDir, content[2]).deleteOnExit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -323,25 +322,25 @@ export class UpgradeServiceImplService {
|
|||||||
if (fs.existsSync(changeDir)) {
|
if (fs.existsSync(changeDir)) {
|
||||||
try {
|
try {
|
||||||
FileUtils.copyDirectory(changeDir, rootDir);
|
FileUtils.copyDirectory(changeDir, rootDir);
|
||||||
} catch (IOException e) {
|
} catch (e) {
|
||||||
throw new Error(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const projectDir: string = this.config.get('projectNiucloudAddon', appKey);
|
const projectDir: string = this.appConfig.projectNiucloudAddon, appKey;
|
||||||
if (fs.existsSync(projectDir)) {
|
if (fs.existsSync(projectDir)) {
|
||||||
try {
|
try {
|
||||||
FileUtils.copyDirectory(this.config.get('webRootDownAddon' + appKey + "/java"), projectDir);
|
FileUtils.copyDirectory(this.appConfig.webRootDownAddon + appKey + "/java", projectDir);
|
||||||
} catch (IOException e) {
|
} catch (e) {
|
||||||
throw new Error(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 合并resource
|
// 合并resource
|
||||||
try {
|
try {
|
||||||
FileUtils.copyDirectory(this.config.get('webRootDownAddon' + appKey + "/resource"), this.config.get('webRootDownResource', appKey));
|
FileUtils.copyDirectory(this.appConfig.webRootDownAddon + appKey + "/resource", this.appConfig.webRootDownResource, appKey);
|
||||||
} catch (IOException e) {
|
} catch (e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -352,8 +351,8 @@ export class UpgradeServiceImplService {
|
|||||||
vo.setStep("coverCode");
|
vo.setStep("coverCode");
|
||||||
vo.setStatus("restarting");
|
vo.setStatus("restarting");
|
||||||
setUpgradeTaskCache(vo);
|
setUpgradeTaskCache(vo);
|
||||||
fs.writeFileSync(upgradeDir(vo, "upgrade.json", 'utf-8'), JSONUtil.parseObj(vo.getUpgradeContent()).toString(), "UTF-8");
|
fs.writeFileSync(upgradeDir(vo, "upgrade.json", 'utf-8'), JSON.parse(vo.getUpgradeContent()).toString(), "UTF-8");
|
||||||
PipeNameUtils.noticeBootRestartByUpgrade(this.config.get('applicationName'), vo.getKey(), vo.getUpgradeContent().getLastBackup().getBackupKey());
|
PipeNameUtils.noticeBootRestartByUpgrade(this.appConfig.applicationName, vo.getKey(), vo.getUpgradeContent().getLastBackup().getBackupKey());
|
||||||
Thread.sleep(3000);
|
Thread.sleep(3000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -362,10 +361,10 @@ export class UpgradeServiceImplService {
|
|||||||
* handleVue
|
* handleVue
|
||||||
*/
|
*/
|
||||||
async handleVue(...args: any[]): Promise<any> {
|
async handleVue(...args: any[]): Promise<any> {
|
||||||
const envs: WebAppEnvs = this.config;
|
const envs: WebAppEnvs = this.appConfig;
|
||||||
|
|
||||||
for (const key of vo.getUpgradeApps()) {
|
for (const key of vo.getUpgradeApps()) {
|
||||||
if (key !== this.config.get('appKey')) {
|
if (key !== this.appConfig.appKey) {
|
||||||
const sourceDir: string = envs.webRootDownAddon + key;
|
const sourceDir: string = envs.webRootDownAddon + key;
|
||||||
if (fs.existsSync(sourceDir)) {
|
if (fs.existsSync(sourceDir)) {
|
||||||
addonInstallTools.installVue(key);
|
addonInstallTools.installVue(key);
|
||||||
@@ -373,10 +372,10 @@ export class UpgradeServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const addons: string[] = addonMapper.selectList(new MPJQueryWrapper<Addon>()
|
String[] addons = this.addonRepository.find(new MPJ()
|
||||||
.select("`key`")
|
.select("`key`")
|
||||||
.eq("status", AddonStatusEnum.ON.getCode()))
|
.eq("status", AddonStatusEnum.ON.getCode()))
|
||||||
.stream().map(i => i.getKey()).collect(Collectors.toList())
|
.map(i => i.getKey())
|
||||||
;
|
;
|
||||||
|
|
||||||
// 处理pages.json
|
// 处理pages.json
|
||||||
@@ -411,19 +410,19 @@ export class UpgradeServiceImplService {
|
|||||||
vo.setStatus("success");
|
vo.setStatus("success");
|
||||||
|
|
||||||
for (const key of vo.getUpgradeApps()) {
|
for (const key of vo.getUpgradeApps()) {
|
||||||
if (key !== this.config.get('appKey')) {
|
if (key !== this.appConfig.appKey) {
|
||||||
const addon: Addon = JSONUtil.toBean(coreAddonService.getAddonConfig(key), Addon.class);
|
const addon: Addon = Object.assign(new Addon(), coreAddonService.getAddonConfig(key));
|
||||||
coreAddonService.set(addon);
|
coreAddonService.set(addon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const backupDir: string = upgradeDir(vo);
|
const backupDir: string = upgradeDir(vo);
|
||||||
FileUtil.writeUtf8String(JSONUtil.toJsonPrettyStr(JSONUtil.parseObj(vo)), backupDir, DateUtil.now( + ".log"));
|
FileUtil.writeUtf8String(JSONUtil.toJsonPrettyStr(JSON.parse(vo)), backupDir, DateUtil.now( + ".log"));
|
||||||
|
|
||||||
// 变更升级记录
|
// 变更升级记录
|
||||||
const editParam: SysUpgradeRecordsParam = new SysUpgradeRecordsParam();
|
const editParam: SysUpgradeRecordsParam = new SysUpgradeRecordsParam();
|
||||||
editParam.setStatus(UpgradeRecordStatusEnum.STATUS_COMPLETE.getStatus());
|
editParam.setStatus(UpgradeRecordStatusEnum.STATUS_COMPLETE.getStatus());
|
||||||
editParam.setCompleteTime(System.currentTimeMillis() / 1000);
|
editParam.setCompleteTime(Math.floor(Date.now() / 1000));
|
||||||
sysUpgradeRecordsService.edit(vo.getKey(), editParam);
|
sysUpgradeRecordsService.edit(vo.getKey(), editParam);
|
||||||
|
|
||||||
upgradeService.clearUpgradeTask(5);
|
upgradeService.clearUpgradeTask(5);
|
||||||
@@ -435,7 +434,7 @@ export class UpgradeServiceImplService {
|
|||||||
* upgradeErrorHandle
|
* upgradeErrorHandle
|
||||||
*/
|
*/
|
||||||
async upgradeErrorHandle(...args: any[]): Promise<any> {
|
async upgradeErrorHandle(...args: any[]): Promise<any> {
|
||||||
LinkedHashMap<String, UpgradeTaskVo.const steps: Step> = new LinkedHashMap<>();
|
LinkedHashRecord<String, UpgradeTaskVo.const steps: Step> = new LinkedHashMap<>();
|
||||||
steps.put("rollback", new UpgradeTaskVo.Step("rollback", "升级失败开始回滚"));
|
steps.put("rollback", new UpgradeTaskVo.Step("rollback", "升级失败开始回滚"));
|
||||||
|
|
||||||
if (vo.getExecuted().includes("coverCode")) {
|
if (vo.getExecuted().includes("coverCode")) {
|
||||||
@@ -509,7 +508,7 @@ export class UpgradeServiceImplService {
|
|||||||
((InvocationTargetException) e).getCause().printStackTrace();
|
((InvocationTargetException) e).getCause().printStackTrace();
|
||||||
throw new BadRequestException(((InvocationTargetException) e).getCause().getMessage());
|
throw new BadRequestException(((InvocationTargetException) e).getCause().getMessage());
|
||||||
} else {
|
} else {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export class StorageConfigServiceImplService {
|
|||||||
*/
|
*/
|
||||||
const storageConfig: Record<string, any> = coreStorageService.getStorageConfig(RequestUtils.siteId());
|
const storageConfig: Record<string, any> = coreStorageService.getStorageConfig(RequestUtils.siteId());
|
||||||
|
|
||||||
const storageValues: Record<string, any> = JSONUtil.parseObj(storageTypeList.get(storageType));
|
const storageValues: Record<string, any> = JSON.parse(storageTypeList.get(storageType));
|
||||||
const coreStorAgeConfigVo: CoreStorAgeConfigVo = new CoreStorAgeConfigVo();
|
const coreStorAgeConfigVo: CoreStorAgeConfigVo = new CoreStorAgeConfigVo();
|
||||||
coreStorAgeConfigVo.setStorageType(storageType);
|
coreStorAgeConfigVo.setStorageType(storageType);
|
||||||
coreStorAgeConfigVo.setIsUse(storageType === storageConfig.get("default") ? StorageEnum.ON.getCode() : StorageEnum.OFF.getCode());
|
coreStorAgeConfigVo.setIsUse(storageType === storageConfig.get("default") ? StorageEnum.ON.getCode() : StorageEnum.OFF.getCode());
|
||||||
@@ -40,17 +40,17 @@ export class StorageConfigServiceImplService {
|
|||||||
|
|
||||||
const params: Record<string, any> = new Record<string, any>();
|
const params: Record<string, any> = new Record<string, any>();
|
||||||
if (ObjectUtil.isNotNull(storageValues.get("params"))) {
|
if (ObjectUtil.isNotNull(storageValues.get("params"))) {
|
||||||
const valuesParams: Record<string, any> = JSONUtil.parseObj(storageValues.get("params"));
|
const valuesParams: Record<string, any> = JSON.parse(storageValues.get("params"));
|
||||||
const configParams: Record<string, any> = new Record<string, any>();
|
const configParams: Record<string, any> = new Record<string, any>();
|
||||||
if (ObjectUtil.isNotNull(storageConfig.get(storageType))) {
|
if (ObjectUtil.isNotNull(storageConfig.get(storageType))) {
|
||||||
configParams = JSONUtil.parseObj(storageConfig.get(storageType));
|
configParams = JSON.parse(storageConfig.get(storageType));
|
||||||
}
|
}
|
||||||
for (const paramsKey of valuesParams.keySet()) {
|
for (const paramsKey of valuesParams.keySet()) {
|
||||||
const itemParam: Record<string, any> = new Record<string, any>();
|
const itemParam: Record<string, any> = new Record<string, any>();
|
||||||
const paramsValues: string = valuesParams.get(paramsKey).toString();
|
const paramsValues: string = valuesParams.get(paramsKey).toString();
|
||||||
itemParam.set("name", paramsValues);
|
itemParam.set("name", paramsValues);
|
||||||
const value: string = configParams.getStr(paramsKey);
|
const value: string = configParams.getStr(paramsKey);
|
||||||
if (encryptParams.includes(paramsKey) && ObjectUtil.isNotEmpty(value)) {
|
if (encryptParams.includes(paramsKey) && !!value) {
|
||||||
value = StringUtils.hide(value, 0, value.length());
|
value = StringUtils.hide(value, 0, value.length());
|
||||||
}
|
}
|
||||||
itemParam.set("value", value);
|
itemParam.set("value", value);
|
||||||
@@ -80,22 +80,22 @@ export class StorageConfigServiceImplService {
|
|||||||
*/
|
*/
|
||||||
const storageConfig: Record<string, any> = coreStorageService.getStorageConfig(RequestUtils.siteId());
|
const storageConfig: Record<string, any> = coreStorageService.getStorageConfig(RequestUtils.siteId());
|
||||||
|
|
||||||
const storageValues: Record<string, any> = JSONUtil.parseObj(storageTypeList.get(storageType));
|
const storageValues: Record<string, any> = JSON.parse(storageTypeList.get(storageType));
|
||||||
if (storageData.getInt("is_use") == 1) {
|
if (storageData.getInt("is_use") == 1) {
|
||||||
storageConfig.set("default", storageType);
|
storageConfig.set("default", storageType);
|
||||||
} else {
|
} else {
|
||||||
if (storageData.getStr("storage_type") === storageConfig.get("default")) {
|
if (storageData.getStr("storage_type").equals(storageConfig.get("default"))) {
|
||||||
storageConfig.set("default", "");
|
storageConfig.set("default", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const configParams: Record<string, any> = new Record<string, any>();
|
const configParams: Record<string, any> = new Record<string, any>();
|
||||||
if (ObjectUtil.isNotNull(storageConfig.get(storageType))) {
|
if (ObjectUtil.isNotNull(storageConfig.get(storageType))) {
|
||||||
configParams = JSONUtil.parseObj(storageConfig.get(storageType));
|
configParams = JSON.parse(storageConfig.get(storageType));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isNotNull(storageValues.get("params"))) {
|
if (ObjectUtil.isNotNull(storageValues.get("params"))) {
|
||||||
const valuesParams: Record<string, any> = JSONUtil.parseObj(storageValues.get("params"));
|
const valuesParams: Record<string, any> = JSON.parse(storageValues.get("params"));
|
||||||
for (const paramsKey of valuesParams.keySet()) {
|
for (const paramsKey of valuesParams.keySet()) {
|
||||||
const value: string = storageData.getStr(paramsKey);
|
const value: string = storageData.getStr(paramsKey);
|
||||||
if (!value.includes("*")) {
|
if (!value.includes("*")) {
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class VerifierServiceImplService {
|
export class VerifierServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,49 +16,49 @@ export class VerifierServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<Verifier> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("v").innerJoin("?_member m ON v.member_id = m.member_id".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("v").innerJoin("?_member m ON v.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
||||||
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<VerifierVo> = verifierMapper.selectJoinPage(new Page<>(page, limit), VerifierVo.class, queryWrapper);
|
iPage = verifierMapper.selectJoinPage({ /* pagination */ }, VerifierVo.class, queryWrapper);
|
||||||
const list: VerifierListVo[] = [];
|
VerifierListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: VerifierListVo = new VerifierListVo();
|
const vo: VerifierListVo = new VerifierListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
|
|
||||||
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(item, memberInfoVo);
|
Object.assign(memberInfoVo, item);
|
||||||
vo.setMember(memberInfoVo);
|
vo.setMember(memberInfoVo);
|
||||||
|
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* all
|
* all
|
||||||
*/
|
*/
|
||||||
async all(...args: any[]): Promise<any> {
|
async all(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: MPJQueryWrapper<Verifier> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("v").innerJoin("?_member m ON v.member_id = m.member_id".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("v").innerJoin("?_member m ON v.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
||||||
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const verifierList: VerifierVo[] = verifierMapper.selectJoinList(VerifierVo.class, queryWrapper);
|
VerifierVo[] verifierList = verifierMapper.selectJoinList(VerifierVo.class, queryWrapper);
|
||||||
|
|
||||||
const list: VerifierListVo[] = [];
|
VerifierListVo[] list = [];
|
||||||
for (const item of verifierList) {
|
for (const item of verifierList) {
|
||||||
const vo: VerifierListVo = new VerifierListVo();
|
const vo: VerifierListVo = new VerifierListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
|
|
||||||
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(item, memberInfoVo);
|
Object.assign(memberInfoVo, item);
|
||||||
vo.setMember(memberInfoVo);
|
vo.setMember(memberInfoVo);
|
||||||
|
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -68,25 +67,25 @@ export class VerifierServiceImplService {
|
|||||||
* add
|
* add
|
||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("member_id", addParam.getMemberId()).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().select("member_id").eq("member_id", addParam.getMemberId()).eq("site_id", RequestUtils.siteId()));
|
||||||
Assert.notNull(member, "会员不存在");
|
if (!member) throw new BadRequestException("会员不存在");
|
||||||
|
|
||||||
const verifier: Verifier = verifierMapper.selectOne(new QueryWrapper<Verifier>().select("id").eq("member_id", addParam.getMemberId()).eq("site_id", RequestUtils.siteId()));
|
const verifier: Verifier = this.verifierRepository.findOne(new ().select("id").eq("member_id", addParam.getMemberId()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotEmpty(verifier)) return;
|
if (!!verifier) return;
|
||||||
|
|
||||||
const model: Verifier = new Verifier();
|
const model: Verifier = new Verifier();
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setMemberId(addParam.getMemberId());
|
model.setMemberId(addParam.getMemberId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setVerifyType(JSONUtil.parseArray(addParam.getVerifyType()).toString());
|
model.setVerifyType(JSONUtil.parseArray(addParam.getVerifyType()).toString());
|
||||||
|
|
||||||
verifierMapper.insert(model);
|
this.verifierRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* del
|
* del
|
||||||
*/
|
*/
|
||||||
async del(...args: any[]): Promise<any> {
|
async del(...args: any[]): Promise<any> {
|
||||||
verifierMapper.delete(new QueryWrapper<Verifier>().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
this.verifierRepository.delete(new ().eq("id", id).eq("site_id", RequestUtils.siteId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class VerifyServiceImplService {
|
export class VerifyServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,58 +16,58 @@ export class VerifyServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: MPJQueryWrapper<Verify> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("v").innerJoin("?_member m ON v.verifier_member_id = m.member_id".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("v").innerJoin("?_member m ON v.verifier_member_id = m.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
||||||
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCode())) queryWrapper.eq("code", searchParam.getCode());
|
if (!!searchParam.getCode()) queryWrapper.eq("code", searchParam.getCode());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) queryWrapper.eq("type", searchParam.getType());
|
if (!!searchParam.getType()) queryWrapper.eq("type", searchParam.getType());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getVerifierMemberId())) queryWrapper.eq("verifier_member_id", searchParam.getVerifierMemberId());
|
if (!!searchParam.getVerifierMemberId()) queryWrapper.eq("verifier_member_id", searchParam.getVerifierMemberId());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getCreateTime())) QueryMapperUtils.buildByTime(queryWrapper, "v.create_time", searchParam.getCreateTime());
|
if (!!searchParam.getCreateTime()) QueryMapperUtils.buildByTime(queryWrapper, "v.create_time", searchParam.getCreateTime());
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getOrderId())){
|
if (!!searchParam.getOrderId()){
|
||||||
queryWrapper.like("data", searchParam.getOrderId());
|
queryWrapper.like("data", searchParam.getOrderId());
|
||||||
}
|
}
|
||||||
|
|
||||||
const iPage: IPage<VerifyVo> = verifyMapper.selectJoinPage(new Page<>(page, limit), VerifyVo.class, queryWrapper);
|
iPage = verifyMapper.selectJoinPage({ /* pagination */ }, VerifyVo.class, queryWrapper);
|
||||||
const list: VerifyListVo[] = [];
|
VerifyListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: VerifyListVo = new VerifyListVo();
|
const vo: VerifyListVo = new VerifyListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
|
|
||||||
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(item, memberInfoVo);
|
Object.assign(memberInfoVo, item);
|
||||||
vo.setMember(memberInfoVo);
|
vo.setMember(memberInfoVo);
|
||||||
|
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* detail
|
* detail
|
||||||
*/
|
*/
|
||||||
async detail(...args: any[]): Promise<any> {
|
async detail(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: MPJQueryWrapper<Verify> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("v").innerJoin("?_member m ON v.verifier_member_id = m.member_id".replace("?_", this.config.get('tablePrefix')));
|
queryWrapper.setAlias("v").innerJoin("?_member m ON v.verifier_member_id = m.member_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
queryWrapper.select("v.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg");
|
||||||
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
queryWrapper.eq("v.site_id", RequestUtils.siteId());
|
||||||
queryWrapper.eq("v.code", code);
|
queryWrapper.eq("v.code", code);
|
||||||
|
|
||||||
const model: VerifyVo = verifyMapper.selectJoinOne(VerifyVo.class, queryWrapper);
|
const model: VerifyVo = verifyMapper.selectJoinOne(VerifyVo.class, queryWrapper);
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: VerifyInfoVo = new VerifyInfoVo();
|
const vo: VerifyInfoVo = new VerifyInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
|
|
||||||
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const memberInfoVo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(model, memberInfoVo);
|
Object.assign(memberInfoVo, model);
|
||||||
vo.setMember(memberInfoVo);
|
vo.setMember(memberInfoVo);
|
||||||
|
|
||||||
VerifyInfoEventDefiner.const event: VerifyInfoEvent = new VerifyInfoEventDefiner.VerifyInfoEvent();
|
VerifyInfoEventDefiner.const event: VerifyInfoEvent = new VerifyInfoEventDefiner.VerifyInfoEvent();
|
||||||
event.setData(vo);
|
event.setData(vo);
|
||||||
const list: VerifyInfoEventDefiner.VerifyInfoEventResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
VerifyInfoEventDefiner.VerifyInfoEventResult[] list = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
||||||
if (!CollectionUtils.isEmpty(list)){
|
if (!CollectionUtils.isEmpty(list)){
|
||||||
for (VerifyInfoEventDefiner.VerifyInfoEventResult verifyInfoEventResult : list) {
|
for (VerifyInfoEventDefiner.VerifyInfoEventResult verifyInfoEventResult : list) {
|
||||||
if (verifyInfoEventResult != null && verifyInfoEventResult.getDataMap() != null && !verifyInfoEventResult.getDataMap().isEmpty()){
|
if (verifyInfoEventResult != null && verifyInfoEventResult.getDataMap() != null && !verifyInfoEventResult.getDataMap().isEmpty()){
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export class WeappConfigServiceImplService {
|
|||||||
domain.setDownloaddomain(String.join(";", domainResult.getDownloadDomain()));
|
domain.setDownloaddomain(String.join(";", domainResult.getDownloadDomain()));
|
||||||
weappConfigVo.setDomain(domain);
|
weappConfigVo.setDomain(domain);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,14 +50,14 @@ export class WeappConfigServiceImplService {
|
|||||||
const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(RequestUtils.siteId());
|
const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(RequestUtils.siteId());
|
||||||
wxOpenMaService.modifyDomain(
|
wxOpenMaService.modifyDomain(
|
||||||
"set",
|
"set",
|
||||||
ObjectUtil.isNotEmpty(param.getRequestdomain()) ? Arrays.asList(param.getRequestdomain().split(";")) : [],
|
!!param.getRequestdomain() ? Arrays.asList(param.getRequestdomain().split(";")) : [],
|
||||||
ObjectUtil.isNotEmpty(param.getWsrequestdomain())? Arrays.asList(param.getWsrequestdomain().split(";")) : [],
|
!!param.getWsrequestdomain()? Arrays.asList(param.getWsrequestdomain().split(";")) : [],
|
||||||
ObjectUtil.isNotEmpty(param.getUploaddomain())? Arrays.asList(param.getUploaddomain().split(";")) : [],
|
!!param.getUploaddomain()? Arrays.asList(param.getUploaddomain().split(";")) : [],
|
||||||
ObjectUtil.isNotEmpty(param.getDownloaddomain())? Arrays.asList(param.getDownloaddomain().split(";")) : [],
|
!!param.getDownloaddomain()? Arrays.asList(param.getDownloaddomain().split(";")) : [],
|
||||||
ObjectUtil.isNotEmpty(param.getTcpdomain())? Arrays.asList(param.getTcpdomain().split(";")) : [],
|
!!param.getTcpdomain()? Arrays.asList(param.getTcpdomain().split(";")) : [],
|
||||||
ObjectUtil.isNotEmpty(param.getUdpdomain())? Arrays.asList(param.getUdpdomain().split(";")) : []
|
!!param.getUdpdomain()? Arrays.asList(param.getUdpdomain().split(";")) : []
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,7 @@ export class WeappConfigServiceImplService {
|
|||||||
try {
|
try {
|
||||||
const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(RequestUtils.siteId());
|
const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(RequestUtils.siteId());
|
||||||
return wxOpenMaService.getPrivacyService().getPrivacySetting(2);
|
return wxOpenMaService.getPrivacyService().getPrivacySetting(2);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,10 +80,10 @@ export class WeappConfigServiceImplService {
|
|||||||
async setPrivacySetting(...args: any[]): Promise<any> {
|
async setPrivacySetting(...args: any[]): Promise<any> {
|
||||||
try {
|
try {
|
||||||
const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(RequestUtils.siteId());
|
const wxOpenMaService: WxOpenMaService = (WxOpenMaService) WechatUtils.miniapp(RequestUtils.siteId());
|
||||||
const setPrivacySetting: SetPrivacySetting = JSONUtil.toBean(privacySetting, SetPrivacySetting.class);
|
const setPrivacySetting: SetPrivacySetting = Object.assign(new SetPrivacySetting(), privacySetting);
|
||||||
setPrivacySetting.setPrivacyVer(2);
|
setPrivacySetting.setPrivacyVer(2);
|
||||||
wxOpenMaService.getPrivacyService().setPrivacySetting(setPrivacySetting);
|
wxOpenMaService.getPrivacyService().setPrivacySetting(setPrivacySetting);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ export class WeappTemplateServiceImplService {
|
|||||||
* list
|
* list
|
||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const addonNoticeList: AddonNoticeListVo[] = coreNoticeService.getAddonList(RequestUtils.siteId());
|
AddonNoticeListVo[] addonNoticeList = coreNoticeService.getAddonList(RequestUtils.siteId());
|
||||||
|
|
||||||
for (const item of addonNoticeList) {
|
for (const item of addonNoticeList) {
|
||||||
const filter: NoticeInfoVo[] = [];
|
NoticeInfoVo[] filter = [];
|
||||||
for (const noticeItem of item.getNotice()) {
|
for (const noticeItem of item.getNotice()) {
|
||||||
if (noticeItem.getSupport_type().indexOf("weapp") != -1) {
|
if (noticeItem.getSupport_type().indexOf("weapp") != -1) {
|
||||||
filter.add(noticeItem);
|
filter.push(noticeItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item.setNotice(filter);
|
item.setNotice(filter);
|
||||||
@@ -31,11 +31,11 @@ export class WeappTemplateServiceImplService {
|
|||||||
* sync
|
* sync
|
||||||
*/
|
*/
|
||||||
async sync(...args: any[]): Promise<any> {
|
async sync(...args: any[]): Promise<any> {
|
||||||
const list: Record<string, any> = coreNoticeService.getList(RequestUtils.siteId(), param.getKeys());
|
const list: Record<String, NoticeInfoVo> = coreNoticeService.getList(RequestUtils.siteId(), param.getKeys());
|
||||||
const keys: string[] = Arrays.asList(param.getKeys());
|
String[] keys = Arrays.asList(param.getKeys());
|
||||||
|
|
||||||
for (const item of list.values()) {
|
for (const item of list.values()) {
|
||||||
if (item.getWeapp() != null && (keys.size() == 0 || keys.includes(item.getKey()))) {
|
if (item.getWeapp() != null && (keys.length == 0 || keys.includes(item.getKey()))) {
|
||||||
if (item.getWeappTemplateId().length() > 0) {
|
if (item.getWeappTemplateId().length() > 0) {
|
||||||
deleteTemplate(item.getWeappTemplateId());
|
deleteTemplate(item.getWeappTemplateId());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,19 +17,19 @@ export class WeappVersionServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<WeappVersion> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const iPage: IPage<WeappVersion> = weappVersionMapper.selectPage(new Page<WeappVersion>(page, limit), queryWrapper);
|
iPage = this.weappVersionRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
|
|
||||||
const list: WeappVersionListVo[] = [];
|
WeappVersionListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: WeappVersionListVo = new WeappVersionListVo();
|
const vo: WeappVersionListVo = new WeappVersionListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page,limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page,limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,13 +42,13 @@ export class WeappVersionServiceImplService {
|
|||||||
if (weappConfig.getAppId().isEmpty()) throw new BadRequestException("还没有配置微信小程序");
|
if (weappConfig.getAppId().isEmpty()) throw new BadRequestException("还没有配置微信小程序");
|
||||||
if (weappConfig.getUploadPrivateKey().isEmpty()) throw new BadRequestException("还没有配置微信小程序代码上传秘钥");
|
if (weappConfig.getUploadPrivateKey().isEmpty()) throw new BadRequestException("还没有配置微信小程序代码上传秘钥");
|
||||||
|
|
||||||
const uploading: WeappVersion = weappVersionMapper.selectOne(new QueryWrapper<WeappVersion>().select("id").eq("site_id", RequestUtils.siteId()).eq("status", WeappVersionStatusEnum.APPLET_UPLOADING));
|
const uploading: WeappVersion = this.weappVersionRepository.findOne(new ().select("id").eq("site_id", RequestUtils.siteId()).eq("status", WeappVersionStatusEnum.APPLET_UPLOADING));
|
||||||
if (uploading != null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作");
|
if (uploading != null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作");
|
||||||
|
|
||||||
const lastVersion: WeappVersion = weappVersionMapper.selectOne(new QueryWrapper<WeappVersion>().select("version_no").eq("site_id", RequestUtils.siteId()).orderByDesc("version_no").last("limit 1"));
|
const lastVersion: WeappVersion = this.weappVersionRepository.findOne(new ().select("version_no").eq("site_id", RequestUtils.siteId()).orderByDesc("version_no").last("limit 1"));
|
||||||
const versionNo: number = lastVersion == null ? 1 : lastVersion.getVersionNo() + 1;
|
const versionNo: number = lastVersion == null ? 1 : lastVersion.getVersionNo() + 1;
|
||||||
|
|
||||||
const addons: string[] = coreSiteService.getAddonKeysBySiteId(RequestUtils.siteId());
|
String[] addons = coreSiteService.getAddonKeysBySiteId(RequestUtils.siteId());
|
||||||
|
|
||||||
const uploadParam: WeappUploadParam = new WeappUploadParam();
|
const uploadParam: WeappUploadParam = new WeappUploadParam();
|
||||||
uploadParam.setBaseUrl(RequestUtils.getDomain(true));
|
uploadParam.setBaseUrl(RequestUtils.getDomain(true));
|
||||||
@@ -66,9 +66,9 @@ export class WeappVersionServiceImplService {
|
|||||||
model.setVersionNo(versionNo);
|
model.setVersionNo(versionNo);
|
||||||
model.setDesc(param.getDesc());
|
model.setDesc(param.getDesc());
|
||||||
model.setTaskKey(taskKey);
|
model.setTaskKey(taskKey);
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
weappVersionMapper.insert(model);
|
this.weappVersionRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,23 +78,23 @@ export class WeappVersionServiceImplService {
|
|||||||
const log: Record<string, any> = coreWeappCloudService.getWeappCompileLog(key);
|
const log: Record<string, any> = coreWeappCloudService.getWeappCompileLog(key);
|
||||||
if (log != null) {
|
if (log != null) {
|
||||||
const data: JSONArray = ObjectUtil.defaultIfNull(log.getByPath("data.0", JSONArray.class), new JSONArray());
|
const data: JSONArray = ObjectUtil.defaultIfNull(log.getByPath("data.0", JSONArray.class), new JSONArray());
|
||||||
if (data.size() > 0) {
|
if (data.length > 0) {
|
||||||
const last: Record<string, any> = data.getJSONObject(data.size() - 1);
|
const last: Record<string, any> = data.getJSONObject(data.length - 1);
|
||||||
if (last.getInt("code", -1) === 0) {
|
if (last.getInt("code", -1).equals(0)) {
|
||||||
const model: WeappVersion = new WeappVersion();
|
const model: WeappVersion = new WeappVersion();
|
||||||
model.setStatus(WeappVersionStatusEnum.APPLET_UPLOAD_FAIL.getStatus());
|
model.setStatus(WeappVersionStatusEnum.APPLET_UPLOAD_FAIL.getStatus());
|
||||||
model.setFailReason(last.getStr("msg", ""));
|
model.setFailReason(last.getStr("msg", ""));
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
weappVersionMapper.update(model, new QueryWrapper<WeappVersion>().eq("task_key", key));
|
weappVersionMapper.update(model, new ().eq("task_key", key));
|
||||||
return log;
|
return log;
|
||||||
}
|
}
|
||||||
if (last.getInt("percent", 0) === 100) {
|
if (last.getInt("percent", 0).equals(100)) {
|
||||||
const model: WeappVersion = new WeappVersion();
|
const model: WeappVersion = new WeappVersion();
|
||||||
model.setStatus(WeappVersionStatusEnum.APPLET_UPLOAD_SUCCESS.getStatus());
|
model.setStatus(WeappVersionStatusEnum.APPLET_UPLOAD_SUCCESS.getStatus());
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
weappVersionMapper.update(model, new QueryWrapper<WeappVersion>().eq("task_key", key));
|
weappVersionMapper.update(model, new ().eq("task_key", key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -106,7 +106,7 @@ export class WeappVersionServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getWeappPreviewImage(...args: any[]): Promise<any> {
|
async getWeappPreviewImage(...args: any[]): Promise<any> {
|
||||||
number[] status = new number[] { WeappVersionStatusEnum.APPLET_AUDITING.getStatus(), WeappVersionStatusEnum.APPLET_UPLOAD_SUCCESS.getStatus() };
|
number[] status = new number[] { WeappVersionStatusEnum.APPLET_AUDITING.getStatus(), WeappVersionStatusEnum.APPLET_UPLOAD_SUCCESS.getStatus() };
|
||||||
const version: WeappVersion = weappVersionMapper.selectOne(new QueryWrapper<WeappVersion>()
|
const version: WeappVersion = this.weappVersionRepository.findOne(new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.in("status", status)
|
.in("status", status)
|
||||||
.orderByDesc("id")
|
.orderByDesc("id")
|
||||||
@@ -124,7 +124,7 @@ export class WeappVersionServiceImplService {
|
|||||||
return "data:image/jpeg;base64," + Base64.getEncoder().encodeToString(FileUtils.readFileToByteArray(qrcode));
|
return "data:image/jpeg;base64," + Base64.getEncoder().encodeToString(FileUtils.readFileToByteArray(qrcode));
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class WechatMediaServiceImplService {
|
export class WechatMediaServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,20 +16,20 @@ export class WechatMediaServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<WechatMedia> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getType())) queryWrapper.eq("type", searchParam.getType());
|
if (!!searchParam.getType()) queryWrapper.eq("type", searchParam.getType());
|
||||||
|
|
||||||
const iPage: IPage<WechatMedia> = wechatMediaMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.wechatMediaRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: WechatMediaListVo[] = [];
|
WechatMediaListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: WechatMediaListVo = new WechatMediaListVo();
|
const vo: WechatMediaListVo = new WechatMediaListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,7 +45,7 @@ export class WechatMediaServiceImplService {
|
|||||||
const uploadRes: AttachmentUploadVo = coreUploadService.upload(param);
|
const uploadRes: AttachmentUploadVo = coreUploadService.upload(param);
|
||||||
|
|
||||||
const wxMaterial: WxMpMaterial = new WxMpMaterial();
|
const wxMaterial: WxMpMaterial = new WxMpMaterial();
|
||||||
wxMaterial.setFile(this.config.get('webRootDownResource' + uploadRes.getUrl()));
|
wxMaterial.setFile(this.appConfig.webRootDownResource + uploadRes.getUrl());
|
||||||
wxMaterial.setName(param.getNewFilename());
|
wxMaterial.setName(param.getNewFilename());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -57,13 +56,13 @@ export class WechatMediaServiceImplService {
|
|||||||
model.setType(WechatMediaTypeEnum.IMAGE.getType());
|
model.setType(WechatMediaTypeEnum.IMAGE.getType());
|
||||||
model.setValue(uploadRes.getUrl());
|
model.setValue(uploadRes.getUrl());
|
||||||
model.setMediaId(res.getMediaId());
|
model.setMediaId(res.getMediaId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
wechatMediaMapper.insert(model);
|
this.wechatMediaRepository.save(model);
|
||||||
|
|
||||||
const vo: WechatMediaInfoVo = new WechatMediaInfoVo();
|
const vo: WechatMediaInfoVo = new WechatMediaInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -81,7 +80,7 @@ export class WechatMediaServiceImplService {
|
|||||||
const uploadRes: AttachmentUploadVo = coreUploadService.upload(param);
|
const uploadRes: AttachmentUploadVo = coreUploadService.upload(param);
|
||||||
|
|
||||||
const wxMaterial: WxMpMaterial = new WxMpMaterial();
|
const wxMaterial: WxMpMaterial = new WxMpMaterial();
|
||||||
wxMaterial.setFile(this.config.get('webRootDownResource' + uploadRes.getUrl()));
|
wxMaterial.setFile(this.appConfig.webRootDownResource + uploadRes.getUrl());
|
||||||
wxMaterial.setName(param.getNewFilename());
|
wxMaterial.setName(param.getNewFilename());
|
||||||
wxMaterial.setVideoIntroduction((new SimpleDateFormat("yyyyMM/dd").format(new Date())) + "上传");
|
wxMaterial.setVideoIntroduction((new SimpleDateFormat("yyyyMM/dd").format(new Date())) + "上传");
|
||||||
wxMaterial.setVideoTitle(param.getNewFilename());
|
wxMaterial.setVideoTitle(param.getNewFilename());
|
||||||
@@ -94,13 +93,13 @@ export class WechatMediaServiceImplService {
|
|||||||
model.setType(WechatMediaTypeEnum.VIDEO.getType());
|
model.setType(WechatMediaTypeEnum.VIDEO.getType());
|
||||||
model.setValue(uploadRes.getUrl());
|
model.setValue(uploadRes.getUrl());
|
||||||
model.setMediaId(res.getMediaId());
|
model.setMediaId(res.getMediaId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
wechatMediaMapper.insert(model);
|
this.wechatMediaRepository.save(model);
|
||||||
|
|
||||||
const vo: WechatMediaInfoVo = new WechatMediaInfoVo();
|
const vo: WechatMediaInfoVo = new WechatMediaInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -115,20 +114,20 @@ export class WechatMediaServiceImplService {
|
|||||||
const result: WxMpMaterialNewsBatchGetResult = WechatUtils.mp(RequestUtils.siteId()).getMaterialService().materialNewsBatchGet(offset, count);
|
const result: WxMpMaterialNewsBatchGetResult = WechatUtils.mp(RequestUtils.siteId()).getMaterialService().materialNewsBatchGet(offset, count);
|
||||||
if (result.getItemCount() > 0) {
|
if (result.getItemCount() > 0) {
|
||||||
for (WxMpMaterialNewsBatchGetResult.WxMaterialNewsBatchGetNewsItem item: result.getItems()) {
|
for (WxMpMaterialNewsBatchGetResult.WxMaterialNewsBatchGetNewsItem item: result.getItems()) {
|
||||||
const media: WechatMedia = wechatMediaMapper.selectOne(new QueryWrapper<WechatMedia>().eq("site_id", RequestUtils.siteId()).eq("media_id", item.getMediaId()));
|
const media: WechatMedia = this.wechatMediaRepository.findOne(new ().eq("site_id", RequestUtils.siteId()).eq("media_id", item.getMediaId()));
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(media)) {
|
if (!!media) {
|
||||||
media.setValue(JSONUtil.toJsonStr(item.getContent()));
|
media.setValue(JSON.stringify(item.getContent()));
|
||||||
media.setUpdateTime(System.currentTimeMillis() / 1000);
|
media.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
wechatMediaMapper.updateById(media);
|
this.wechatMediaRepository.save(media);
|
||||||
} else {
|
} else {
|
||||||
const model: WechatMedia = new WechatMedia();
|
const model: WechatMedia = new WechatMedia();
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setType(WechatMediaTypeEnum.VIDEO.getType());
|
model.setType(WechatMediaTypeEnum.VIDEO.getType());
|
||||||
model.setValue(JSONUtil.toJsonStr(item.getContent()));
|
model.setValue(JSON.stringify(item.getContent()));
|
||||||
model.setMediaId(item.getMediaId());
|
model.setMediaId(item.getMediaId());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
wechatMediaMapper.insert(model);
|
this.wechatMediaRepository.save(model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,7 +135,7 @@ export class WechatMediaServiceImplService {
|
|||||||
offset++;
|
offset++;
|
||||||
this.syncNews(offset);
|
this.syncNews(offset);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,11 +21,11 @@ export class WechatMenuServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
try{
|
try{
|
||||||
const params: Record<string, any> = {};
|
const params: Record<String , JSONArray> = {};
|
||||||
params.put("button", data);
|
params.put("button", data);
|
||||||
WechatUtils.mp(RequestUtils.siteId()).getMenuService().menuCreate(JSONUtil.parseObj(params).toString()) ;
|
WechatUtils.mp(RequestUtils.siteId()).getMenuService().menuCreate(JSON.parse(params).toString()) ;
|
||||||
coreConfigService.setConfig(RequestUtils.siteId(), "WECHAT_MENU", data);
|
coreConfigService.setConfig(RequestUtils.siteId(), "WECHAT_MENU", data);
|
||||||
}catch (WxErrorException e){
|
}catch (e){
|
||||||
throw new AdminException(e.message);
|
throw new AdminException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
@@ -17,38 +17,38 @@ export class WechatReplyServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<WechatReply> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType());
|
queryWrapper.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType());
|
||||||
queryWrapper.eq("site_id", RequestUtils.siteId());
|
queryWrapper.eq("site_id", RequestUtils.siteId());
|
||||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(searchParam.getKeyword())) queryWrapper.like("keyword", searchParam.getKeyword());
|
if (!!searchParam.getKeyword()) queryWrapper.like("keyword", searchParam.getKeyword());
|
||||||
if (ObjectUtil.isNotEmpty(path.basename(searchParam))) queryWrapper.like("name", path.basename(searchParam));
|
if (!!path.basename(searchParam)) queryWrapper.like("name", path.basename(searchParam));
|
||||||
|
|
||||||
const iPage: IPage<WechatReply> = wechatReplyMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.wechatReplyRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const list: WechatReplyListVo[] = [];
|
WechatReplyListVo[] list = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: WechatReplyListVo = new WechatReplyListVo();
|
const vo: WechatReplyListVo = new WechatReplyListVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getKeywordInfo
|
* getKeywordInfo
|
||||||
*/
|
*/
|
||||||
async getKeywordInfo(...args: any[]): Promise<any> {
|
async getKeywordInfo(...args: any[]): Promise<any> {
|
||||||
const model: WechatReply = wechatReplyMapper.selectOne(
|
const model: WechatReply = this.wechatReplyRepository.findOne(
|
||||||
new QueryWrapper<WechatReply>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType()));
|
.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType()));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在");
|
if (!model) throw new BadRequestException("数据不存在");
|
||||||
|
|
||||||
const vo: WechatReplyInfoVo = new WechatReplyInfoVo();
|
const vo: WechatReplyInfoVo = new WechatReplyInfoVo();
|
||||||
BeanUtils.copyProperties(model, vo);
|
Object.assign(vo, model);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,31 +64,31 @@ export class WechatReplyServiceImplService {
|
|||||||
model.setMatchingType(addParam.getMatchingType());
|
model.setMatchingType(addParam.getMatchingType());
|
||||||
model.setContent(addParam.getContent().toString());
|
model.setContent(addParam.getContent().toString());
|
||||||
model.setSort(addParam.getSort());
|
model.setSort(addParam.getSort());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setReplyMethod(addParam.getReplyMethod());
|
model.setReplyMethod(addParam.getReplyMethod());
|
||||||
wechatReplyMapper.insert(model);
|
this.wechatReplyRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* editKeyword
|
* editKeyword
|
||||||
*/
|
*/
|
||||||
async editKeyword(...args: any[]): Promise<any> {
|
async editKeyword(...args: any[]): Promise<any> {
|
||||||
const model: WechatReply = wechatReplyMapper.selectOne(
|
const model: WechatReply = this.wechatReplyRepository.findOne(
|
||||||
new QueryWrapper<WechatReply>()
|
new ()
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType()));
|
.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType()));
|
||||||
|
|
||||||
Assert.notNull(model, "数据不存在!");
|
if (!model) throw new BadRequestException("数据不存在!");
|
||||||
|
|
||||||
model.setName(path.basename(editParam));
|
model.setName(path.basename(editParam));
|
||||||
model.setKeyword(editParam.getKeyword());
|
model.setKeyword(editParam.getKeyword());
|
||||||
model.setMatchingType(editParam.getMatchingType());
|
model.setMatchingType(editParam.getMatchingType());
|
||||||
model.setContent(editParam.getContent().toString());
|
model.setContent(editParam.getContent().toString());
|
||||||
model.setSort(editParam.getSort());
|
model.setSort(editParam.getSort());
|
||||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
model.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setReplyMethod(editParam.getReplyMethod());
|
model.setReplyMethod(editParam.getReplyMethod());
|
||||||
wechatReplyMapper.updateById(model);
|
this.wechatReplyRepository.save(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,18 +102,18 @@ export class WechatReplyServiceImplService {
|
|||||||
* editDefault
|
* editDefault
|
||||||
*/
|
*/
|
||||||
async editDefault(...args: any[]): Promise<any> {
|
async editDefault(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper = new QueryWrapper<WechatReply>()
|
const queryWrapper: QueryWrapper = new ()
|
||||||
.eq("reply_type", WechatReplyTypeEnum.REPLY_DEFAULT.getType())
|
.eq("reply_type", WechatReplyTypeEnum.REPLY_DEFAULT.getType())
|
||||||
.eq("site_id", RequestUtils.siteId());
|
.eq("site_id", RequestUtils.siteId());
|
||||||
|
|
||||||
const reply: WechatReply = wechatReplyMapper.selectOne(queryWrapper);
|
const reply: WechatReply = this.wechatReplyRepository.findOne(queryWrapper);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(reply)) {
|
if (!reply) {
|
||||||
const model: WechatReply = new WechatReply();
|
const model: WechatReply = new WechatReply();
|
||||||
model.setContent(param.getContent().toString());
|
model.setContent(param.getContent().toString());
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setReplyType(WechatReplyTypeEnum.REPLY_DEFAULT.getType());
|
model.setReplyType(WechatReplyTypeEnum.REPLY_DEFAULT.getType());
|
||||||
wechatReplyMapper.insert(model);
|
this.wechatReplyRepository.save(model);
|
||||||
} else {
|
} else {
|
||||||
const model: WechatReply = new WechatReply();
|
const model: WechatReply = new WechatReply();
|
||||||
model.setContent(param.getContent().toString());
|
model.setContent(param.getContent().toString());
|
||||||
@@ -132,18 +132,18 @@ export class WechatReplyServiceImplService {
|
|||||||
* editSubscribe
|
* editSubscribe
|
||||||
*/
|
*/
|
||||||
async editSubscribe(...args: any[]): Promise<any> {
|
async editSubscribe(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper = new QueryWrapper<WechatReply>()
|
const queryWrapper: QueryWrapper = new ()
|
||||||
.eq("reply_type", WechatReplyTypeEnum.REPLY_SUBSCRIBE.getType())
|
.eq("reply_type", WechatReplyTypeEnum.REPLY_SUBSCRIBE.getType())
|
||||||
.eq("site_id", RequestUtils.siteId());
|
.eq("site_id", RequestUtils.siteId());
|
||||||
|
|
||||||
const reply: WechatReply = wechatReplyMapper.selectOne(queryWrapper);
|
const reply: WechatReply = this.wechatReplyRepository.findOne(queryWrapper);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(reply)) {
|
if (!reply) {
|
||||||
const model: WechatReply = new WechatReply();
|
const model: WechatReply = new WechatReply();
|
||||||
model.setContent(param.getContent().toString());
|
model.setContent(param.getContent().toString());
|
||||||
model.setSiteId(RequestUtils.siteId());
|
model.setSiteId(RequestUtils.siteId());
|
||||||
model.setReplyType(WechatReplyTypeEnum.REPLY_DEFAULT.getType());
|
model.setReplyType(WechatReplyTypeEnum.REPLY_DEFAULT.getType());
|
||||||
wechatReplyMapper.insert(model);
|
this.wechatReplyRepository.save(model);
|
||||||
} else {
|
} else {
|
||||||
const model: WechatReply = new WechatReply();
|
const model: WechatReply = new WechatReply();
|
||||||
model.setContent(param.getContent().toString());
|
model.setContent(param.getContent().toString());
|
||||||
@@ -155,7 +155,7 @@ export class WechatReplyServiceImplService {
|
|||||||
* delKeyword
|
* delKeyword
|
||||||
*/
|
*/
|
||||||
async delKeyword(...args: any[]): Promise<any> {
|
async delKeyword(...args: any[]): Promise<any> {
|
||||||
wechatReplyMapper.delete(new QueryWrapper<WechatReply>()
|
this.wechatReplyRepository.delete(new ()
|
||||||
.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType())
|
.eq("reply_type", WechatReplyTypeEnum.REPLY_KEYWORD.getType())
|
||||||
.eq("id", id)
|
.eq("id", id)
|
||||||
.eq("site_id", RequestUtils.siteId()));
|
.eq("site_id", RequestUtils.siteId()));
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ export class WechatTemplateServiceImplService {
|
|||||||
* list
|
* list
|
||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const addonNoticeList: AddonNoticeListVo[] = coreNoticeService.getAddonList(RequestUtils.siteId());
|
AddonNoticeListVo[] addonNoticeList = coreNoticeService.getAddonList(RequestUtils.siteId());
|
||||||
|
|
||||||
for (const item of addonNoticeList) {
|
for (const item of addonNoticeList) {
|
||||||
const filter: NoticeInfoVo[] = [];
|
NoticeInfoVo[] filter = [];
|
||||||
for (const noticeItem of item.getNotice()) {
|
for (const noticeItem of item.getNotice()) {
|
||||||
if (noticeItem.getSupport_type().indexOf("wechat") != -1) {
|
if (noticeItem.getSupport_type().indexOf("wechat") != -1) {
|
||||||
filter.add(noticeItem);
|
filter.push(noticeItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item.setNotice(filter);
|
item.setNotice(filter);
|
||||||
@@ -31,11 +31,11 @@ export class WechatTemplateServiceImplService {
|
|||||||
* sync
|
* sync
|
||||||
*/
|
*/
|
||||||
async sync(...args: any[]): Promise<any> {
|
async sync(...args: any[]): Promise<any> {
|
||||||
const list: Record<string, any> = coreNoticeService.getList(RequestUtils.siteId(), param.getKeys());
|
const list: Record<String, NoticeInfoVo> = coreNoticeService.getList(RequestUtils.siteId(), param.getKeys());
|
||||||
const keys: string[] = Arrays.asList(param.getKeys());
|
String[] keys = Arrays.asList(param.getKeys());
|
||||||
|
|
||||||
for (const item of list.values()) {
|
for (const item of list.values()) {
|
||||||
if (item.getWechat() != null && (keys.size() == 0 || keys.includes(item.getKey()))) {
|
if (item.getWechat() != null && (keys.length == 0 || keys.includes(item.getKey()))) {
|
||||||
if (item.getWeappTemplateId().length() > 0) {
|
if (item.getWeappTemplateId().length() > 0) {
|
||||||
deleteTemplate(item.getWeappTemplateId());
|
deleteTemplate(item.getWeappTemplateId());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export class OplatformServerServiceImplService {
|
|||||||
authorizationParam.setAuthCode(inMessage.getAuthorizationCode());
|
authorizationParam.setAuthCode(inMessage.getAuthorizationCode());
|
||||||
oplatformService.authorization(authorizationParam);
|
oplatformService.authorization(authorizationParam);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("处理开放平台授权事件消息异常", e);
|
log.error("处理开放平台授权事件消息异常", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class OplatformServiceImplService {
|
|||||||
try {
|
try {
|
||||||
const url: string = RequestUtils.getDomain(true) + "/site/wxoplatform/callback";
|
const url: string = RequestUtils.getDomain(true) + "/site/wxoplatform/callback";
|
||||||
return WechatUtils.WxOpen().getWxOpenComponentService().getPreAuthUrl(url);
|
return WechatUtils.WxOpen().getWxOpenComponentService().getPreAuthUrl(url);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,7 +36,7 @@ export class OplatformServiceImplService {
|
|||||||
const authorization: WxOpenAuthorizationInfo = result.getAuthorizationInfo();
|
const authorization: WxOpenAuthorizationInfo = result.getAuthorizationInfo();
|
||||||
|
|
||||||
// 小程序
|
// 小程序
|
||||||
if (ObjectUtil.isNotEmpty(authorizerInfo.getMiniProgramInfo())) {
|
if (!!authorizerInfo.getMiniProgramInfo()) {
|
||||||
this.weappCheck(authorizerInfo, authorization);
|
this.weappCheck(authorizerInfo, authorization);
|
||||||
|
|
||||||
const weappConfig: WeappConfigParam = new WeappConfigParam();
|
const weappConfig: WeappConfigParam = new WeappConfigParam();
|
||||||
@@ -61,7 +61,7 @@ export class OplatformServiceImplService {
|
|||||||
|
|
||||||
coreWechatConfigService.setWechatAuthorizationInfo(RequestUtils.siteId(), result);
|
coreWechatConfigService.setWechatAuthorizationInfo(RequestUtils.siteId(), result);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,7 @@ export class OplatformServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async clearAuthorization(...args: any[]): Promise<any> {
|
async clearAuthorization(...args: any[]): Promise<any> {
|
||||||
String[] configKey = new String[]{ ConfigKeyEnum.path.basename(WECHAT), ConfigKeyEnum.path.basename(WEAPP), ConfigKeyEnum.path.basename(WEAPP_AUTHORIZATION_INFO), ConfigKeyEnum.path.basename(WECHAT_AUTHORIZATION_INFO)};
|
String[] configKey = new String[]{ ConfigKeyEnum.path.basename(WECHAT), ConfigKeyEnum.path.basename(WEAPP), ConfigKeyEnum.path.basename(WEAPP_AUTHORIZATION_INFO), ConfigKeyEnum.path.basename(WECHAT_AUTHORIZATION_INFO)};
|
||||||
sysConfigMapper.delete(new QueryWrapper<SysConfig>().like("value", appid).in("config_key", configKey));
|
this.sysConfigRepository.delete(new ().like("value", appid).in("config_key", configKey));
|
||||||
coreConfigService.cacheClear();
|
coreConfigService.cacheClear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,18 +88,18 @@ export class OplatformServiceImplService {
|
|||||||
wrapper.in(SysConfig::getConfigKey, ConfigKeyEnum.path.basename(WECHAT_AUTHORIZATION_INFO), ConfigKeyEnum.path.basename(WEAPP_AUTHORIZATION_INFO));
|
wrapper.in(SysConfig::getConfigKey, ConfigKeyEnum.path.basename(WECHAT_AUTHORIZATION_INFO), ConfigKeyEnum.path.basename(WEAPP_AUTHORIZATION_INFO));
|
||||||
wrapper.eq(SysConfig::getSiteId, RequestUtils.siteId());
|
wrapper.eq(SysConfig::getSiteId, RequestUtils.siteId());
|
||||||
wrapper.orderByDesc(SysConfig::getUpdateTime);
|
wrapper.orderByDesc(SysConfig::getUpdateTime);
|
||||||
const pageObj: Page<SysConfig> = new Page<>(page, limit);
|
const pageObj: Page<SysConfig> = { /* pagination */ };
|
||||||
const iPage: IPage<SysConfig> = sysConfigMapper.selectPage(pageObj, wrapper);
|
iPage = this.sysConfigRepository.findAndCount(pageObj, wrapper);
|
||||||
const listInfo: OplatformRecordVo[] = [];
|
OplatformRecordVo[] listInfo = [];
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: OplatformRecordVo = new OplatformRecordVo();
|
const vo: OplatformRecordVo = new OplatformRecordVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
vo.setValue(JSONUtil.parseObj(item.getValue()));
|
vo.setValue(JSON.parse(item.getValue()));
|
||||||
const siteInfo: Site = new Site();
|
const siteInfo: Site = new Site();
|
||||||
siteInfo.setSiteName(item.getSiteName());
|
siteInfo.setSiteName(item.getSiteName());
|
||||||
vo.setSite(siteInfo);
|
vo.setSite(siteInfo);
|
||||||
listInfo.add(vo);
|
listInfo.push(vo);
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(listInfo);
|
return PageResult.build(page, limit, total).setData(listInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class WeappVersionServiceImplService {
|
export class WeappVersionServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -22,13 +21,13 @@ export class WeappVersionServiceImplService {
|
|||||||
* getLastCommitRecord
|
* getLastCommitRecord
|
||||||
*/
|
*/
|
||||||
async getLastCommitRecord(...args: any[]): Promise<any> {
|
async getLastCommitRecord(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<WxOplatfromWeappVersion> = new QueryWrapper<>();
|
queryWrapper={};
|
||||||
queryWrapper.orderByDesc("id")
|
queryWrapper.orderByDesc("id")
|
||||||
.last("limit 1");
|
.last("limit 1");
|
||||||
const wxOplatfromWeappVersion: WxOplatfromWeappVersion = wxOplatfromWeappVersionMapper.selectOne(queryWrapper);
|
const wxOplatfromWeappVersion: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne(queryWrapper);
|
||||||
if (wxOplatfromWeappVersion==null) return null;
|
if (wxOplatfromWeappVersion==null) return null;
|
||||||
const wxOplatfromWeappVersionVo: WxOplatfromWeappVersionVo = new WxOplatfromWeappVersionVo();
|
const wxOplatfromWeappVersionVo: WxOplatfromWeappVersionVo = new WxOplatfromWeappVersionVo();
|
||||||
BeanUtils.copyProperties(wxOplatfromWeappVersion, wxOplatfromWeappVersionVo);
|
Object.assign(wxOplatfromWeappVersionVo, wxOplatfromWeappVersion);
|
||||||
return wxOplatfromWeappVersionVo;
|
return wxOplatfromWeappVersionVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,36 +38,36 @@ export class WeappVersionServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const queryWrapper: QueryWrapper<WxOplatfromWeappVersion> = new QueryWrapper<>();
|
queryWrapper={};
|
||||||
queryWrapper.orderByDesc("id");
|
queryWrapper.orderByDesc("id");
|
||||||
|
|
||||||
const wxOplatfromMPJQueryWrapper: MPJQueryWrapper<WxOplatfromWeappVersion> = new MPJQueryWrapper<>();
|
MPJwxOplatfromMPJQueryWrapper = new MPJQueryWrapper<>();
|
||||||
wxOplatfromMPJQueryWrapper.select("wowv.id, wowv.site_group_id, wowv.template_id, wowv.user_version, wowv.user_desc, wowv.task_key, wowv.status, wowv.fail_reason, wowv.version_no, wowv.create_time, wowv.update_time, nsg.group_name as site_group_name")
|
wxOplatfromMPJQueryWrapper.select("wowv.id, wowv.site_group_id, wowv.template_id, wowv.user_version, wowv.user_desc, wowv.task_key, wowv.status, wowv.fail_reason, wowv.version_no, wowv.create_time, wowv.update_time, nsg.group_name as site_group_name")
|
||||||
.setAlias("wowv")
|
.setAlias("wowv")
|
||||||
.leftJoin("?_site_group nsg ON nsg.group_id = wowv.site_group_id".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_site_group nsg ON nsg.group_id = wowv.site_group_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
wxOplatfromMPJQueryWrapper.orderByDesc("wowv.id");
|
wxOplatfromMPJQueryWrapper.orderByDesc("wowv.id");
|
||||||
|
|
||||||
const iPage: IPage<WxOplatfromWeappVersionVo> = wxOplatfromWeappVersionMapper.selectJoinPage(new Page<>(page, limit), WxOplatfromWeappVersionVo.class, wxOplatfromMPJQueryWrapper);
|
iPage = wxOplatfromWeappVersionMapper.selectJoinPage({ /* pagination */ }, WxOplatfromWeappVersionVo.class, wxOplatfromMPJQueryWrapper);
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(iPage.getRecords());
|
return PageResult.build(page, limit, total).setData(records);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* add
|
* add
|
||||||
*/
|
*/
|
||||||
async add(...args: any[]): Promise<any> {
|
async add(...args: any[]): Promise<any> {
|
||||||
const siteGroupList: SiteGroup[] = siteGroupMapper.selectList(new QueryWrapper<SiteGroup>().gt("group_id", 0).orderByAsc("create_time"));
|
SiteGroup[] siteGroupList = this.siteGroupRepository.find(new ().gt("group_id", 0).orderByAsc("create_time"));
|
||||||
if (ObjectUtil.isEmpty(siteGroupList)) throw new BadRequestException("请先添加站点套餐");
|
if (!siteGroupList) throw new BadRequestException("请先添加站点套餐");
|
||||||
|
|
||||||
const siteGroup: SiteGroup = siteGroupId == null || siteGroupId == 0 ? siteGroupList.get(0) : siteGroupMapper.selectById(siteGroupId);
|
const siteGroup: SiteGroup = siteGroupId == null || siteGroupId == 0 ? siteGroupList.get(0) : siteGroupMapper.selectById(siteGroupId);
|
||||||
|
|
||||||
const uploading: WxOplatfromWeappVersion = wxOplatfromWeappVersionMapper.selectOne(new QueryWrapper<WxOplatfromWeappVersion>()
|
const uploading: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne(new ()
|
||||||
.eq("site_group_id", siteGroup.getGroupId())
|
.eq("site_group_id", siteGroup.getGroupId())
|
||||||
.eq("status", 0)
|
.eq("status", 0)
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
if (uploading != null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作");
|
if (uploading != null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作");
|
||||||
|
|
||||||
const lastVersion: WxOplatfromWeappVersion = wxOplatfromWeappVersionMapper.selectOne(new QueryWrapper<WxOplatfromWeappVersion>()
|
const lastVersion: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne(new ()
|
||||||
.select("version_no")
|
.select("version_no")
|
||||||
.eq("site_group_id", siteGroup.getGroupId())
|
.eq("site_group_id", siteGroup.getGroupId())
|
||||||
.orderByDesc("id")
|
.orderByDesc("id")
|
||||||
@@ -77,7 +76,7 @@ export class WeappVersionServiceImplService {
|
|||||||
|
|
||||||
const config: OplatformConfigVo = coreOplatformConfigService.getWxOplatformConfig();
|
const config: OplatformConfigVo = coreOplatformConfigService.getWxOplatformConfig();
|
||||||
|
|
||||||
const addon: string[] = CollUtil.newArrayList();
|
String[] addon = CollUtil.newArrayList();
|
||||||
if (!siteGroup.getApp().isEmpty()) CollUtil.addAll(addon, JSONUtil.parseArray(siteGroup.getApp()));
|
if (!siteGroup.getApp().isEmpty()) CollUtil.addAll(addon, JSONUtil.parseArray(siteGroup.getApp()));
|
||||||
if (!siteGroup.getAddon().isEmpty()) CollUtil.addAll(addon, JSONUtil.parseArray(siteGroup.getAddon()));
|
if (!siteGroup.getAddon().isEmpty()) CollUtil.addAll(addon, JSONUtil.parseArray(siteGroup.getAddon()));
|
||||||
|
|
||||||
@@ -94,9 +93,9 @@ export class WeappVersionServiceImplService {
|
|||||||
model.setSiteGroupId(siteGroup.getGroupId());
|
model.setSiteGroupId(siteGroup.getGroupId());
|
||||||
model.setUserVersion(weappUploadParam.getVersion());
|
model.setUserVersion(weappUploadParam.getVersion());
|
||||||
model.setVersionNo(lastVersion == null ? 1 : lastVersion.getVersionNo() + 1);
|
model.setVersionNo(lastVersion == null ? 1 : lastVersion.getVersionNo() + 1);
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setTaskKey(taskKey);
|
model.setTaskKey(taskKey);
|
||||||
wxOplatfromWeappVersionMapper.insert(model);
|
this.wxOplatfromWeappVersionRepository.save(model);
|
||||||
|
|
||||||
weappVersionService.getVersionUploadResult(taskKey, isAll);
|
weappVersionService.getVersionUploadResult(taskKey, isAll);
|
||||||
}
|
}
|
||||||
@@ -115,26 +114,26 @@ export class WeappVersionServiceImplService {
|
|||||||
* uploadSuccess
|
* uploadSuccess
|
||||||
*/
|
*/
|
||||||
async uploadSuccess(...args: any[]): Promise<any> {
|
async uploadSuccess(...args: any[]): Promise<any> {
|
||||||
const version: WxOplatfromWeappVersion = wxOplatfromWeappVersionMapper.selectOne(new QueryWrapper<WxOplatfromWeappVersion>().eq("task_key", taskKey));
|
const version: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne(new ().eq("task_key", taskKey));
|
||||||
|
|
||||||
const wxOpenService: WxOpenComponentService = WechatUtils.WxOpen().getWxOpenComponentService();
|
const wxOpenService: WxOpenComponentService = WechatUtils.WxOpen().getWxOpenComponentService();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const draftList: WxOpenMaCodeTemplate[] = wxOpenService.getTemplateDraftList();
|
WxOpenMaCodeTemplate[] draftList = wxOpenService.getTemplateDraftList();
|
||||||
if (ObjectUtil.isNotEmpty(draftList)) {
|
if (!!draftList) {
|
||||||
for (const item of draftList) {
|
for (const item of draftList) {
|
||||||
if (item.getUserVersion() === version.getUserVersion()) {
|
if (item.getUserVersion() === version.getUserVersion()) {
|
||||||
// 添加模板
|
// 添加模板
|
||||||
wxOpenService.addToTemplate(item.getDraftId());
|
wxOpenService.addToTemplate(item.getDraftId());
|
||||||
|
|
||||||
const templateList: WxOpenMaCodeTemplate[] = wxOpenService.getTemplateList();
|
WxOpenMaCodeTemplate[] templateList = wxOpenService.getTemplateList();
|
||||||
for (const template of templateList) {
|
for (const template of templateList) {
|
||||||
if (template.getUserVersion() === version.getUserVersion()) {
|
if (template.getUserVersion() === version.getUserVersion()) {
|
||||||
version.setTemplateId(template.getTemplateId().toString());
|
version.setTemplateId(template.getTemplateId().toString());
|
||||||
wxOplatfromWeappVersionMapper.updateById(version);
|
this.wxOplatfromWeappVersionRepository.save(version);
|
||||||
|
|
||||||
// 删除之前的模板
|
// 删除之前的模板
|
||||||
const prev: WxOplatfromWeappVersion = wxOplatfromWeappVersionMapper.selectOne(new QueryWrapper<WxOplatfromWeappVersion>()
|
const prev: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne(new ()
|
||||||
.select("template_id")
|
.select("template_id")
|
||||||
.eq("site_group_id", version.getSiteGroupId())
|
.eq("site_group_id", version.getSiteGroupId())
|
||||||
.lt("id", version.getId())
|
.lt("id", version.getId())
|
||||||
@@ -150,20 +149,20 @@ export class WeappVersionServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
console.log("小程序模板上传成功获取模板id异常");
|
console.log("小程序模板上传成功获取模板id异常");
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAll) {
|
if (isAll) {
|
||||||
const siteGroup: SiteGroup = siteGroupMapper.selectOne(new QueryWrapper<SiteGroup>()
|
const siteGroup: SiteGroup = this.siteGroupRepository.findOne(new ()
|
||||||
.select("group_id")
|
.select("group_id")
|
||||||
.gt("group_id", version.getSiteGroupId())
|
.gt("group_id", version.getSiteGroupId())
|
||||||
.orderByDesc("group_id")
|
.orderByDesc("group_id")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
if (siteGroup != null) {
|
if (siteGroup != null) {
|
||||||
weappVersionService.add(siteGroup.getGroupId(), true);
|
weappVersionService.push(siteGroup.getGroupId(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,7 +172,7 @@ export class WeappVersionServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async weappCommit(...args: any[]): Promise<any> {
|
async weappCommit(...args: any[]): Promise<any> {
|
||||||
if (version == null) {
|
if (version == null) {
|
||||||
version = wxOplatfromWeappVersionMapper.selectOne(new QueryWrapper<WxOplatfromWeappVersion>()
|
version = this.wxOplatfromWeappVersionRepository.findOne(new ()
|
||||||
.eq("site_group_id", siteGroupId)
|
.eq("site_group_id", siteGroupId)
|
||||||
.ne("template_id", "")
|
.ne("template_id", "")
|
||||||
.orderByDesc("id")
|
.orderByDesc("id")
|
||||||
@@ -181,7 +180,7 @@ export class WeappVersionServiceImplService {
|
|||||||
if (version == null) throw new BadRequestException("平台尚未上传小程序到模板库");
|
if (version == null) throw new BadRequestException("平台尚未上传小程序到模板库");
|
||||||
}
|
}
|
||||||
|
|
||||||
const uploading: WeappVersion = weappVersionMapper.selectOne(new QueryWrapper<WeappVersion>().select("site_id").eq("site_id", siteId).eq("status", WeappVersionStatusEnum.APPLET_AUDITING.getStatus()).last("limit 1"));
|
const uploading: WeappVersion = this.weappVersionRepository.findOne(new ().select("site_id").eq("site_id", siteId).eq("status", WeappVersionStatusEnum.APPLET_AUDITING.getStatus()).last("limit 1"));
|
||||||
if (uploading!= null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作");
|
if (uploading!= null) throw new BadRequestException("小程序有正在上传的版本,请等待上一版本上传完毕后再进行操作");
|
||||||
|
|
||||||
const weappCofig: WeappConfigVo = coreWeappConfigService.getWeappConfig(siteId);
|
const weappCofig: WeappConfigVo = coreWeappConfigService.getWeappConfig(siteId);
|
||||||
@@ -205,15 +204,15 @@ export class WeappVersionServiceImplService {
|
|||||||
model.setVersionNo(version.getVersionNo());
|
model.setVersionNo(version.getVersionNo());
|
||||||
model.setDesc(version.getUserDesc());
|
model.setDesc(version.getUserDesc());
|
||||||
model.setStatus(WeappVersionStatusEnum.APPLET_AUDITING.getStatus());
|
model.setStatus(WeappVersionStatusEnum.APPLET_AUDITING.getStatus());
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setFromType("open_platform");
|
model.setFromType("open_platform");
|
||||||
weappVersionMapper.insert(model);
|
this.weappVersionRepository.save(model);
|
||||||
|
|
||||||
// 提交审核
|
// 提交审核
|
||||||
weappVersionService.submitAudit(siteId, model.getId());
|
weappVersionService.submitAudit(siteId, model.getId());
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
console.log("小程序提交代码异常");
|
console.log("小程序提交代码异常");
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,8 +230,8 @@ export class WeappVersionServiceImplService {
|
|||||||
if (privacyInfo.getErrcode() !== "0") {
|
if (privacyInfo.getErrcode() !== "0") {
|
||||||
version.setStatus(WeappVersionStatusEnum.APPLET_AUDIT_FAIL.getStatus());
|
version.setStatus(WeappVersionStatusEnum.APPLET_AUDIT_FAIL.getStatus());
|
||||||
version.setFailReason(privacyInfo.getErrmsg());
|
version.setFailReason(privacyInfo.getErrmsg());
|
||||||
version.setUpdateTime(System.currentTimeMillis() / 1000);
|
version.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
weappVersionMapper.updateById(version);
|
this.weappVersionRepository.save(version);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,15 +240,15 @@ export class WeappVersionServiceImplService {
|
|||||||
|
|
||||||
version.setStatus(submitResult.getErrcode() === "0" ? WeappVersionStatusEnum.APPLET_AUDITING.getStatus() : WeappVersionStatusEnum.APPLET_AUDIT_FAIL.getStatus());
|
version.setStatus(submitResult.getErrcode() === "0" ? WeappVersionStatusEnum.APPLET_AUDITING.getStatus() : WeappVersionStatusEnum.APPLET_AUDIT_FAIL.getStatus());
|
||||||
version.setFailReason(submitResult.getErrmsg());
|
version.setFailReason(submitResult.getErrmsg());
|
||||||
version.setUpdateTime(System.currentTimeMillis() / 1000);
|
version.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
version.setAuditid(ObjectUtil.isNotNull(submitResult.getAuditId()) ? submitResult.getAuditId().toString() : "");
|
version.setAuditid(ObjectUtil.isNotNull(submitResult.getAuditId()) ? submitResult.getAuditId().toString() : "");
|
||||||
|
|
||||||
weappVersionMapper.updateById(version);
|
this.weappVersionRepository.save(version);
|
||||||
|
|
||||||
if (scheduler != null && !scheduler.isShutdown()) {
|
if (scheduler != null && !scheduler.isShutdown()) {
|
||||||
scheduler.shutdown();
|
scheduler.shutdown();
|
||||||
}
|
}
|
||||||
} catch (WxErrorException e) {
|
} catch (e) {
|
||||||
// 如果检测任务结束未结束
|
// 如果检测任务结束未结束
|
||||||
if (e.getError().getErrorCode() == 61039) {
|
if (e.getError().getErrorCode() == 61039) {
|
||||||
if (scheduler == null || scheduler.isShutdown() || scheduler.isTerminated()) {
|
if (scheduler == null || scheduler.isShutdown() || scheduler.isTerminated()) {
|
||||||
@@ -259,15 +258,15 @@ export class WeappVersionServiceImplService {
|
|||||||
} else {
|
} else {
|
||||||
version.setStatus(WeappVersionStatusEnum.APPLET_AUDIT_FAIL.getStatus());
|
version.setStatus(WeappVersionStatusEnum.APPLET_AUDIT_FAIL.getStatus());
|
||||||
version.setFailReason(e.getError().getErrorMsg());
|
version.setFailReason(e.getError().getErrorMsg());
|
||||||
version.setUpdateTime(System.currentTimeMillis() / 1000);
|
version.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
weappVersionMapper.updateById(version);
|
this.weappVersionRepository.save(version);
|
||||||
|
|
||||||
if (scheduler != null && !scheduler.isShutdown()) {
|
if (scheduler != null && !scheduler.isShutdown()) {
|
||||||
scheduler.shutdown();
|
scheduler.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("小程序提交审核异常");
|
console.log("小程序提交审核异常");
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,31 +287,31 @@ export class WeappVersionServiceImplService {
|
|||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
|
|
||||||
const iPage: IPage<SiteGroup> = siteGroupMapper.selectPage(new Page<>(page, limit), new QueryWrapper<SiteGroup>().select("group_id,group_name"));
|
iPage = this.siteGroupRepository.findAndCount({ /* pagination */ }, new ().select("group_id,group_name"));
|
||||||
const list: SiteGroupWeappVersionVo[] = [];
|
SiteGroupWeappVersionVo[] list = [];
|
||||||
|
|
||||||
for (const item of iPage.getRecords()) {
|
for (const item of records) {
|
||||||
const vo: SiteGroupWeappVersionVo = new SiteGroupWeappVersionVo();
|
const vo: SiteGroupWeappVersionVo = new SiteGroupWeappVersionVo();
|
||||||
BeanUtils.copyProperties(item, vo);
|
Object.assign(vo, item);
|
||||||
|
|
||||||
const lastVersion: WxOplatfromWeappVersion = wxOplatfromWeappVersionMapper.selectOne(new QueryWrapper<WxOplatfromWeappVersion>().eq("site_group_id", item.getGroupId()).orderByDesc("id").last("limit 1"));
|
const lastVersion: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne(new ().eq("site_group_id", item.getGroupId()).orderByDesc("id").last("limit 1"));
|
||||||
if (lastVersion != null) {
|
if (lastVersion != null) {
|
||||||
const versionVo: WxOplatfromWeappVersionVo = new WxOplatfromWeappVersionVo();
|
const versionVo: WxOplatfromWeappVersionVo = new WxOplatfromWeappVersionVo();
|
||||||
BeanUtils.copyProperties(lastVersion, versionVo);
|
Object.assign(versionVo, lastVersion);
|
||||||
vo.setCommitRecord(versionVo);
|
vo.setCommitRecord(versionVo);
|
||||||
}
|
}
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
|
return PageResult.build(page, limit, total).setData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* undoAudit
|
* undoAudit
|
||||||
*/
|
*/
|
||||||
async undoAudit(...args: any[]): Promise<any> {
|
async undoAudit(...args: any[]): Promise<any> {
|
||||||
const version: WeappVersion = weappVersionMapper.selectOne(new QueryWrapper<WeappVersion>().eq("id", param.getId()).eq("site_id", RequestUtils.siteId()));
|
const version: WeappVersion = this.weappVersionRepository.findOne(new ().eq("id", param.getId()).eq("site_id", RequestUtils.siteId()));
|
||||||
Assert.notNull(version, "未获取到小程序版本提交记录");
|
if (!version) throw new BadRequestException("未获取到小程序版本提交记录");
|
||||||
if (version.getStatus() !== WeappVersionStatusEnum.APPLET_AUDITING.getStatus()) throw new BadRequestException("只有审核中的才可以撤回");
|
if (version.getStatus() !== WeappVersionStatusEnum.APPLET_AUDITING.getStatus()) throw new BadRequestException("只有审核中的才可以撤回");
|
||||||
|
|
||||||
const weappCofig: WeappConfigVo = coreWeappConfigService.getWeappConfig(RequestUtils.siteId());
|
const weappCofig: WeappConfigVo = coreWeappConfigService.getWeappConfig(RequestUtils.siteId());
|
||||||
@@ -320,31 +319,31 @@ export class WeappVersionServiceImplService {
|
|||||||
try {
|
try {
|
||||||
const commitResult: WxOpenResult = WechatUtils.WxOpen().getWxOpenComponentService()
|
const commitResult: WxOpenResult = WechatUtils.WxOpen().getWxOpenComponentService()
|
||||||
.getWxMaServiceByAppid(weappCofig.getAppId()).undoCodeAudit();
|
.getWxMaServiceByAppid(weappCofig.getAppId()).undoCodeAudit();
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
version.setStatus(WeappVersionStatusEnum.APPLET_AUDIT_UNDO.getStatus());
|
version.setStatus(WeappVersionStatusEnum.APPLET_AUDIT_UNDO.getStatus());
|
||||||
version.setUpdateTime(System.currentTimeMillis() / 1000);
|
version.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
weappVersionMapper.updateById(version);
|
this.weappVersionRepository.save(version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* syncSiteGroupAuthWeapp
|
* syncSiteGroupAuthWeapp
|
||||||
*/
|
*/
|
||||||
async syncSiteGroupAuthWeapp(...args: any[]): Promise<any> {
|
async syncSiteGroupAuthWeapp(...args: any[]): Promise<any> {
|
||||||
const version: WxOplatfromWeappVersion = wxOplatfromWeappVersionMapper.selectOne(new QueryWrapper<WxOplatfromWeappVersion>()
|
const version: WxOplatfromWeappVersion = this.wxOplatfromWeappVersionRepository.findOne(new ()
|
||||||
.eq("site_group_id", param.getSiteGroupId())
|
.eq("site_group_id", param.getSiteGroupId())
|
||||||
.ne("template_id", "")
|
.ne("template_id", "")
|
||||||
.orderByDesc("id")
|
.orderByDesc("id")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
Assert.notNull(version, "平台尚未上传小程序到模板库");
|
if (!version) throw new BadRequestException("平台尚未上传小程序到模板库");
|
||||||
|
|
||||||
const siteIds: number[] = siteMapper.selectList(new QueryWrapper<Site>().select("site_id").eq("group_id", param.getSiteGroupId())).stream().map(Site::getSiteId).toList();
|
number[] siteIds = this.siteRepository.find(new ().select("site_id").eq("group_id", param.getSiteGroupId())).map(Site::getSiteId).toList();
|
||||||
if (ObjectUtil.isNotEmpty(siteIds)) {
|
if (!!siteIds) {
|
||||||
const authSite: SysConfig[] = sysConfigMapper.selectList(new QueryWrapper<SysConfig>().in("site_id", siteIds).eq("config_key", ConfigKeyEnum.path.basename(WEAPP_AUTHORIZATION_INFO)));
|
SysConfig[] authSite = this.sysConfigRepository.find(new ().in("site_id", siteIds).eq("config_key", ConfigKeyEnum.path.basename(WEAPP_AUTHORIZATION_INFO)));
|
||||||
if (ObjectUtil.isNotEmpty(authSite)) {
|
if (!!authSite) {
|
||||||
authSite.forEach(item => {
|
authSite.forEach(item => {
|
||||||
weappCommit(item.getSiteId(), param.getSiteGroupId(), version);
|
weappCommit(item.getSiteId(), param.getSiteGroupId(), version);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -13,16 +13,16 @@ export class AgreementServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<SysAgreement> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.select("site_id, agreement_key, title, content, create_time, update_time");
|
queryWrapper.select("site_id, agreement_key, title, content, create_time, update_time");
|
||||||
queryWrapper.eq("agreement_key", param.getKey());
|
queryWrapper.eq("agreement_key", param.getKey());
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
const sysAgreement: SysAgreement = sysAgreementMapper.selectOne(queryWrapper);
|
const sysAgreement: SysAgreement = this.sysAgreementRepository.findOne(queryWrapper);
|
||||||
if (sysAgreement == null) {
|
if (sysAgreement == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const agreementInfoVo: AgreementInfoVo = new AgreementInfoVo();
|
const agreementInfoVo: AgreementInfoVo = new AgreementInfoVo();
|
||||||
BeanUtils.copyProperties(sysAgreement, agreementInfoVo);
|
Object.assign(agreementInfoVo, sysAgreement);
|
||||||
return agreementInfoVo;
|
return agreementInfoVo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export class AppServiceImplService {
|
|||||||
ObjectUtil.defaultIfNull(wxUser.getHeadImgUrl(), ""),
|
ObjectUtil.defaultIfNull(wxUser.getHeadImgUrl(), ""),
|
||||||
param.getPid()
|
param.getPid()
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ export class AppServiceImplService {
|
|||||||
* getNewVersion
|
* getNewVersion
|
||||||
*/
|
*/
|
||||||
async getNewVersion(...args: any[]): Promise<any> {
|
async getNewVersion(...args: any[]): Promise<any> {
|
||||||
const appVersion: AppVersion = appVersionMapper.selectOne(new QueryWrapper<AppVersion>()
|
const appVersion: AppVersion = this.appVersionRepository.findOne(new ()
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("platform", param.getPlatform())
|
.eq("platform", param.getPlatform())
|
||||||
.gt("version_code", param.getVersionCode())
|
.gt("version_code", param.getVersionCode())
|
||||||
@@ -83,11 +83,11 @@ export class AppServiceImplService {
|
|||||||
async wechatRegister(...args: any[]): Promise<any> {
|
async wechatRegister(...args: any[]): Promise<any> {
|
||||||
if (param.getOpenid().isEmpty()) throw new BadRequestException("openid不能为空");
|
if (param.getOpenid().isEmpty()) throw new BadRequestException("openid不能为空");
|
||||||
try {
|
try {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wxapp_openid", param.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().eq("wxapp_openid", param.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
||||||
|
|
||||||
if (!param.getUnionid().isEmpty()) {
|
if (!param.getUnionid().isEmpty()) {
|
||||||
const unionidMember: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wx_unionid", param.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
const unionidMember: Member = this.memberRepository.findOne(new ().eq("wx_unionid", param.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ export class AppServiceImplService {
|
|||||||
registerMember.setWxUnionid(param.getUnionid());
|
registerMember.setWxUnionid(param.getUnionid());
|
||||||
registerMember.setPid(param.getPid());
|
registerMember.setPid(param.getPid());
|
||||||
return registerService.register(registerMember);
|
return registerService.register(registerMember);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DiyFormServiceImplService {
|
export class DiyFormServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -15,24 +14,24 @@ export class DiyFormServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getInfo(...args: any[]): Promise<any> {
|
async getInfo(...args: any[]): Promise<any> {
|
||||||
// 查询 const writeConfigWrapper: DiyFormWriteConfig
|
// 查询 const writeConfigWrapper: DiyFormWriteConfig
|
||||||
QueryWrapper<DiyFormWriteConfig> = new QueryWrapper<>();
|
= {};
|
||||||
writeConfigWrapper.eq("form_id", formId)
|
writeConfigWrapper.eq("form_id", formId)
|
||||||
.eq("site_id", RequestUtils.siteId());
|
.eq("site_id", RequestUtils.siteId());
|
||||||
const writeConfig: DiyFormWriteConfig = diyFormWriteConfigMapper.selectOne(writeConfigWrapper);
|
const writeConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne(writeConfigWrapper);
|
||||||
|
|
||||||
// 查询表单信息
|
// 查询表单信息
|
||||||
const formWrapper: QueryWrapper<DiyForm> = new QueryWrapper<>();
|
formWrapper = {};
|
||||||
formWrapper.eq("form_id", formId)
|
formWrapper.eq("form_id", formId)
|
||||||
.eq("status", 1)
|
.eq("status", 1)
|
||||||
.eq("site_id", RequestUtils.siteId());
|
.eq("site_id", RequestUtils.siteId());
|
||||||
const formInfo: DiyForm = diyFormMapper.selectOne(formWrapper);
|
const formInfo: DiyForm = this.diyFormRepository.findOne(formWrapper);
|
||||||
|
|
||||||
const error: Record<string, any>[] = [];
|
Record<String, String[]> error = [];
|
||||||
const info: DiyFormInfoVo = new DiyFormInfoVo();
|
const info: DiyFormInfoVo = new DiyFormInfoVo();
|
||||||
if (formInfo != null) {
|
if (formInfo != null) {
|
||||||
BeanUtil.copyProperties(formInfo, info);
|
BeanUtil.copyProperties(formInfo, info);
|
||||||
// 过滤隐藏的组件
|
// 过滤隐藏的组件
|
||||||
const valueObj: Record<string, any> = JSONUtil.parseObj(formInfo.getValue());
|
const valueObj: Record<string, any> = JSON.parse(formInfo.getValue());
|
||||||
if (valueObj.containsKey("value")) {
|
if (valueObj.containsKey("value")) {
|
||||||
const valueArray: JSONArray = valueObj.getJSONArray("value");
|
const valueArray: JSONArray = valueObj.getJSONArray("value");
|
||||||
if (valueArray != null) {
|
if (valueArray != null) {
|
||||||
@@ -40,7 +39,7 @@ export class DiyFormServiceImplService {
|
|||||||
for (const obj of valueArray) {
|
for (const obj of valueArray) {
|
||||||
const item: Record<string, any> = (Record<string, any>) obj;
|
const item: Record<string, any> = (Record<string, any>) obj;
|
||||||
if (!item.getBool("isHidden", false)) {
|
if (!item.getBool("isHidden", false)) {
|
||||||
newArray.add(item);
|
newArray.push(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
valueObj.put("value", newArray);
|
valueObj.put("value", newArray);
|
||||||
@@ -52,30 +51,30 @@ export class DiyFormServiceImplService {
|
|||||||
// 检查会员相关限制
|
// 检查会员相关限制
|
||||||
const memberId: number = RequestUtils.memberId();
|
const memberId: number = RequestUtils.memberId();
|
||||||
if (writeConfig != null && memberId != null) {
|
if (writeConfig != null && memberId != null) {
|
||||||
Map<String, String> errorMsg;
|
Record<String, String> errorMsg;
|
||||||
errorMsg = checkMemberCanJoinOrNot(memberId, writeConfig);
|
errorMsg = checkMemberCanJoinOrNot(memberId, writeConfig);
|
||||||
if (ObjectUtil.isNotEmpty(errorMsg)) {
|
if (!!errorMsg) {
|
||||||
error.add(errorMsg);
|
error.push(errorMsg);
|
||||||
}
|
}
|
||||||
errorMsg = checkFormWriteTime(writeConfig);
|
errorMsg = checkFormWriteTime(writeConfig);
|
||||||
if (ObjectUtil.isNotEmpty(errorMsg)) {
|
if (!!errorMsg) {
|
||||||
error.add(errorMsg);
|
error.push(errorMsg);
|
||||||
}
|
}
|
||||||
errorMsg = checkFormWriteLimitNum(formId, writeConfig);
|
errorMsg = checkFormWriteLimitNum(formId, writeConfig);
|
||||||
if (ObjectUtil.isNotEmpty(errorMsg)) {
|
if (!!errorMsg) {
|
||||||
error.add(errorMsg);
|
error.push(errorMsg);
|
||||||
}
|
}
|
||||||
errorMsg = checkMemberWriteLimitNum(memberId, formId, writeConfig);
|
errorMsg = checkMemberWriteLimitNum(memberId, formId, writeConfig);
|
||||||
if (ObjectUtil.isNotEmpty(errorMsg)) {
|
if (!!errorMsg) {
|
||||||
error.add(errorMsg);
|
error.push(errorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const errorMap: Record<string, any> = {};
|
const errorMap: Record<String, String> = {};
|
||||||
errorMap.put("title", "当前表单无法查看");
|
errorMap.put("title", "当前表单无法查看");
|
||||||
errorMap.put("type", "表单状态");
|
errorMap.put("type", "表单状态");
|
||||||
errorMap.put("desc", "该表单已关闭");
|
errorMap.put("desc", "该表单已关闭");
|
||||||
error.add(errorMap);
|
error.push(errorMap);
|
||||||
}
|
}
|
||||||
info.setError(error);
|
info.setError(error);
|
||||||
return info;
|
return info;
|
||||||
@@ -89,10 +88,10 @@ export class DiyFormServiceImplService {
|
|||||||
diyFormRecordsParam.setMemberId(RequestUtils.memberId());
|
diyFormRecordsParam.setMemberId(RequestUtils.memberId());
|
||||||
|
|
||||||
// 检查表单是否存在且已开启
|
// 检查表单是否存在且已开启
|
||||||
const formQueryWrapper: QueryWrapper<DiyForm> = new QueryWrapper<>();
|
formQueryWrapper = {};
|
||||||
formQueryWrapper.eq("form_id", diyFormRecordsParam.getFormId())
|
formQueryWrapper.eq("form_id", diyFormRecordsParam.getFormId())
|
||||||
.eq("site_id", RequestUtils.siteId());
|
.eq("site_id", RequestUtils.siteId());
|
||||||
const formInfo: DiyForm = diyFormMapper.selectOne(formQueryWrapper);
|
const formInfo: DiyForm = this.diyFormRepository.findOne(formQueryWrapper);
|
||||||
if (formInfo == null) {
|
if (formInfo == null) {
|
||||||
throw new ApiException("表单不存在");
|
throw new ApiException("表单不存在");
|
||||||
}
|
}
|
||||||
@@ -101,52 +100,52 @@ export class DiyFormServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查询表单填写配置
|
// 查询表单填写配置
|
||||||
const writeConfigQueryWrapper: QueryWrapper<DiyFormWriteConfig> = new QueryWrapper<>();
|
writeConfigQueryWrapper = {};
|
||||||
writeConfigQueryWrapper.eq("form_id", diyFormRecordsParam.getFormId())
|
writeConfigQueryWrapper.eq("form_id", diyFormRecordsParam.getFormId())
|
||||||
.eq("site_id", RequestUtils.siteId());
|
.eq("site_id", RequestUtils.siteId());
|
||||||
const writeConfig: DiyFormWriteConfig = diyFormWriteConfigMapper.selectOne(writeConfigQueryWrapper);
|
const writeConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne(writeConfigQueryWrapper);
|
||||||
|
|
||||||
if (writeConfig != null) {
|
if (writeConfig != null) {
|
||||||
// 检查会员是否可以参与
|
// 检查会员是否可以参与
|
||||||
const canJoinError: Record<string, any> = checkMemberCanJoinOrNot(RequestUtils.memberId(), writeConfig);
|
const canJoinError: Record<String, String> = checkMemberCanJoinOrNot(RequestUtils.memberId(), writeConfig);
|
||||||
if (canJoinError.length !== 0) {
|
if (canJoinError.length > 0) {
|
||||||
throw new ApiException(canJoinError.get("desc"));
|
throw new ApiException(canJoinError.get("desc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查表单填写时间
|
// 检查表单填写时间
|
||||||
const timeError: Record<string, any> = checkFormWriteTime(writeConfig);
|
const timeError: Record<String, String> = checkFormWriteTime(writeConfig);
|
||||||
if (timeError.length !== 0) {
|
if (timeError.length > 0) {
|
||||||
throw new ApiException(timeError.get("desc"));
|
throw new ApiException(timeError.get("desc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查表单总填写次数限制
|
// 检查表单总填写次数限制
|
||||||
const formLimitError: Record<string, any> = checkFormWriteLimitNum(diyFormRecordsParam.getFormId(), writeConfig);
|
const formLimitError: Record<String, String> = checkFormWriteLimitNum(diyFormRecordsParam.getFormId(), writeConfig);
|
||||||
if (formLimitError.length !== 0) {
|
if (formLimitError.length > 0) {
|
||||||
throw new ApiException(formLimitError.get("desc"));
|
throw new ApiException(formLimitError.get("desc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查会员填写次数限制
|
// 检查会员填写次数限制
|
||||||
const memberLimitError: Record<string, any> = checkMemberWriteLimitNum(RequestUtils.memberId(), diyFormRecordsParam.getFormId(), writeConfig);
|
const memberLimitError: Record<String, String> = checkMemberWriteLimitNum(RequestUtils.memberId(), diyFormRecordsParam.getFormId(), writeConfig);
|
||||||
if (memberLimitError.length !== 0) {
|
if (memberLimitError.length > 0) {
|
||||||
throw new ApiException(memberLimitError.get("desc"));
|
throw new ApiException(memberLimitError.get("desc"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调用核心服务添加记录
|
// 调用核心服务添加记录
|
||||||
return coreDiyFormRecordsService.add(diyFormRecordsParam);
|
return coreDiyFormRecordsService.push(diyFormRecordsParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getResult
|
* getResult
|
||||||
*/
|
*/
|
||||||
async getResult(...args: any[]): Promise<any> {
|
async getResult(...args: any[]): Promise<any> {
|
||||||
const diyFormRecords: DiyFormRecords = diyFormRecordsMapper.selectOne(new QueryWrapper<DiyFormRecords>().eq("record_id", recordId).eq("site_id", RequestUtils.siteId()).eq("member_id", RequestUtils.memberId()));
|
const diyFormRecords: DiyFormRecords = this.diyFormRecordsRepository.findOne(new ().eq("record_id", recordId).eq("site_id", RequestUtils.siteId()).eq("member_id", RequestUtils.memberId()));
|
||||||
if (ObjectUtil.isEmpty(diyFormRecords)) throw new ApiException("表单记录不存在");
|
if (!diyFormRecords) throw new ApiException("表单记录不存在");
|
||||||
const vo: DiyFormRecordsInfoVo = new DiyFormRecordsInfoVo();
|
const vo: DiyFormRecordsInfoVo = new DiyFormRecordsInfoVo();
|
||||||
BeanUtil.copyProperties(diyFormRecords, vo);
|
BeanUtil.copyProperties(diyFormRecords, vo);
|
||||||
const diyFormSubmitConfig: DiyFormSubmitConfig = diyFormSubmitConfigMapper.selectOne(new QueryWrapper<DiyFormSubmitConfig>().eq("form_id", vo.getFormId()));
|
const diyFormSubmitConfig: DiyFormSubmitConfig = this.diyFormSubmitConfigRepository.findOne(new ().eq("form_id", vo.getFormId()));
|
||||||
const configInfoVo: DiyFormSubmitConfigInfoVo = new DiyFormSubmitConfigInfoVo();
|
const configInfoVo: DiyFormSubmitConfigInfoVo = new DiyFormSubmitConfigInfoVo();
|
||||||
if (ObjectUtil.isNotEmpty(diyFormSubmitConfig)) {
|
if (!!diyFormSubmitConfig) {
|
||||||
BeanUtil.copyProperties(diyFormSubmitConfig, configInfoVo);
|
BeanUtil.copyProperties(diyFormSubmitConfig, configInfoVo);
|
||||||
}
|
}
|
||||||
vo.setDiyFormSubmitConfig(configInfoVo);
|
vo.setDiyFormSubmitConfig(configInfoVo);
|
||||||
@@ -157,19 +156,19 @@ export class DiyFormServiceImplService {
|
|||||||
* getFormRecordInfo
|
* getFormRecordInfo
|
||||||
*/
|
*/
|
||||||
async getFormRecordInfo(...args: any[]): Promise<any> {
|
async getFormRecordInfo(...args: any[]): Promise<any> {
|
||||||
const diyFormRecords: DiyFormRecords = diyFormRecordsMapper.selectOne(new QueryWrapper<DiyFormRecords>().eq("record_id", recordId).eq("site_id", RequestUtils.siteId()).eq("member_id", RequestUtils.memberId()));
|
const diyFormRecords: DiyFormRecords = this.diyFormRecordsRepository.findOne(new ().eq("record_id", recordId).eq("site_id", RequestUtils.siteId()).eq("member_id", RequestUtils.memberId()));
|
||||||
const vo: DiyFormRecordsDetailVo = new DiyFormRecordsDetailVo();
|
const vo: DiyFormRecordsDetailVo = new DiyFormRecordsDetailVo();
|
||||||
if (ObjectUtil.isEmpty(diyFormRecords)) {
|
if (!diyFormRecords) {
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
BeanUtil.copyProperties(diyFormRecords, vo);
|
BeanUtil.copyProperties(diyFormRecords, vo);
|
||||||
const list: DiyFormRecordsFields[] = diyFormRecordsFieldsMapper.selectList(new QueryWrapper<DiyFormRecordsFields>().eq("record_id", vo.getRecordId()));
|
DiyFormRecordsFields[] list = this.diyFormRecordsFieldsRepository.find(new ().eq("record_id", vo.getRecordId()));
|
||||||
if (ObjectUtil.isNotEmpty(list)) {
|
if (!!list) {
|
||||||
const volist: DiyFormRecordsFieldsListVo[] = [];
|
DiyFormRecordsFieldsListVo[] volist = [];
|
||||||
for (const item of list) {
|
for (const item of list) {
|
||||||
const diyFormRecordsFieldsListVo: DiyFormRecordsFieldsListVo = new DiyFormRecordsFieldsListVo();
|
const diyFormRecordsFieldsListVo: DiyFormRecordsFieldsListVo = new DiyFormRecordsFieldsListVo();
|
||||||
BeanUtils.copyProperties(item, diyFormRecordsFieldsListVo);
|
Object.assign(diyFormRecordsFieldsListVo, item);
|
||||||
volist.add(diyFormRecordsFieldsListVo);
|
volist.push(diyFormRecordsFieldsListVo);
|
||||||
}
|
}
|
||||||
vo.setRecordsFieldList(volist);
|
vo.setRecordsFieldList(volist);
|
||||||
}
|
}
|
||||||
@@ -181,35 +180,35 @@ export class DiyFormServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getMemberInfoRecord(...args: any[]): Promise<any> {
|
async getMemberInfoRecord(...args: any[]): Promise<any> {
|
||||||
const memberConfig: MemberConfigVo = coreMemberConfigService.getMemberConfig(RequestUtils.siteId());
|
const memberConfig: MemberConfigVo = coreMemberConfigService.getMemberConfig(RequestUtils.siteId());
|
||||||
if (ObjectUtil.isEmpty(memberConfig.getFormId())) {
|
if (!memberConfig.getFormId()) {
|
||||||
return List.of();
|
return List.of();
|
||||||
}
|
}
|
||||||
const formId: number = memberConfig.getFormId();
|
const formId: number = memberConfig.getFormId();
|
||||||
const mpjqw: MPJQueryWrapper<DiyFormRecords> = new MPJQueryWrapper<>();
|
MPJmpjqw = new MPJQueryWrapper<>();
|
||||||
mpjqw.setAlias("fr").leftJoin("?_diy_form_records_fields frf on frf.record_id = fr.record_id".replace("?_", this.config.get('tablePrefix')));
|
mpjqw.setAlias("fr").leftJoin("?_diy_form_records_fields frf on frf.record_id = fr.record_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
mpjqw.select("frf.form_id, frf.form_field_id, frf.field_key, frf.field_type, frf.field_name, frf.field_value, frf.field_required, frf.field_unique, frf.privacy_protection");
|
mpjqw.select("frf.form_id, frf.form_field_id, frf.field_key, frf.field_type, frf.field_name, frf.field_value, frf.field_required, frf.field_unique, frf.privacy_protection");
|
||||||
mpjqw.eq("fr.member_id", RequestUtils.memberId())
|
mpjqw.eq("fr.member_id", RequestUtils.memberId())
|
||||||
.eq("fr.form_id", formId)
|
.eq("fr.form_id", formId)
|
||||||
.orderByDesc("fr.create_time");
|
.orderByDesc("fr.create_time");
|
||||||
const diyFormRecordsFields: DiyFormRecordsFields[] = diyFormRecordsMapper.selectJoinList(DiyFormRecordsFields.class, mpjqw);
|
DiyFormRecordsFields[] diyFormRecordsFields = diyFormRecordsMapper.selectJoinList(DiyFormRecordsFields.class, mpjqw);
|
||||||
|
|
||||||
const diyFormMpjqw: MPJQueryWrapper<DiyForm> = new MPJQueryWrapper<>();
|
MPJdiyFormMpjqw = new MPJQueryWrapper<>();
|
||||||
diyFormMpjqw.setAlias("df")
|
diyFormMpjqw.setAlias("df")
|
||||||
.leftJoin("?_diy_form_fields dfi on dfi.form_id = df.form_id".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_diy_form_fields dfi on dfi.form_id = df.form_id".replace("?_", this.appConfig.tablePrefix));
|
||||||
diyFormMpjqw.select("df.form_id,df.type, dfi.field_id, dfi.field_key, dfi.field_type, dfi.field_name, dfi.field_required, dfi.field_hidden, dfi.field_unique, dfi.privacy_protection");
|
diyFormMpjqw.select("df.form_id,df.type, dfi.field_id, dfi.field_key, dfi.field_type, dfi.field_name, dfi.field_required, dfi.field_hidden, dfi.field_unique, dfi.privacy_protection");
|
||||||
diyFormMpjqw.eq("df.form_id", formId).eq("df.status", 1);
|
diyFormMpjqw.eq("df.form_id", formId).eq("df.status", 1);
|
||||||
const diyFormFields: DiyFormFields[] = diyFormMapper.selectJoinList(DiyFormFields.class, diyFormMpjqw);
|
DiyFormFields[] diyFormFields = diyFormMapper.selectJoinList(DiyFormFields.class, diyFormMpjqw);
|
||||||
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(diyFormFields)) {
|
if (!diyFormFields) {
|
||||||
return List.of();
|
return List.of();
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isEmpty(diyFormRecordsFields)) {
|
if (!diyFormRecordsFields) {
|
||||||
return setResult(diyFormFields);
|
return setResult(diyFormFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
const result: DiyMemberRecordVo = setResult(diyFormFields);
|
const result: DiyMemberRecordVo = setResult(diyFormFields);
|
||||||
const fieldMap: Record<string, any> = diyFormRecordsFields.stream().collect(Collectors.toMap(DiyFormRecordsFields::getFieldKey, field => field));
|
const fieldMap: Record<String, DiyFormRecordsFields> = diyFormRecordsFields.collect(Collectors.toMap(DiyFormRecordsFields::getFieldKey, field => field));
|
||||||
for (const field of result.getFormField()) {
|
for (const field of result.getFormField()) {
|
||||||
if (fieldMap.containsKey(field.getFieldKey())) {
|
if (fieldMap.containsKey(field.getFieldKey())) {
|
||||||
field.setFieldValue(fieldMap.get(field.getFieldKey()).getFieldValue() == null ? "" : fieldMap.get(field.getFieldKey()).getFieldValue());
|
field.setFieldValue(fieldMap.get(field.getFieldKey()).getFieldValue() == null ? "" : fieldMap.get(field.getFieldKey()).getFieldValue());
|
||||||
@@ -223,44 +222,44 @@ export class DiyFormServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async editRecord(...args: any[]): Promise<any> {
|
async editRecord(...args: any[]): Promise<any> {
|
||||||
const diyFormRecords: DiyFormRecords = diyFormRecordsMapper.selectById(param.getRecordId());
|
const diyFormRecords: DiyFormRecords = diyFormRecordsMapper.selectById(param.getRecordId());
|
||||||
if (ObjectUtil.isEmpty(diyFormRecords)) {
|
if (!diyFormRecords) {
|
||||||
throw new ApiException("表单记录不存在");
|
throw new ApiException("表单记录不存在");
|
||||||
}
|
}
|
||||||
const diyForm: DiyForm = diyFormMapper.selectOne(new LambdaQueryWrapper<DiyForm>().eq(DiyForm::getFormId, param.getFormId()));
|
const diyForm: DiyForm = this.diyFormRepository.findOne(new Lambda().eq(DiyForm::getFormId, param.getFormId()));
|
||||||
if (ObjectUtil.isEmpty(diyForm)) {
|
if (!diyForm) {
|
||||||
throw new ApiException("表单不存在");
|
throw new ApiException("表单不存在");
|
||||||
}
|
}
|
||||||
if (diyForm.getStatus() == 0) {
|
if (diyForm.getStatus() == 0) {
|
||||||
throw new ApiException("该表单已关闭");
|
throw new ApiException("该表单已关闭");
|
||||||
}
|
}
|
||||||
// 查询表单填写配置
|
// 查询表单填写配置
|
||||||
const writeConfigQueryWrapper: QueryWrapper<DiyFormWriteConfig> = new QueryWrapper<>();
|
writeConfigQueryWrapper = {};
|
||||||
writeConfigQueryWrapper.eq("form_id", param.getFormId())
|
writeConfigQueryWrapper.eq("form_id", param.getFormId())
|
||||||
.eq("site_id", RequestUtils.siteId());
|
.eq("site_id", RequestUtils.siteId());
|
||||||
const writeConfig: DiyFormWriteConfig = diyFormWriteConfigMapper.selectOne(writeConfigQueryWrapper);
|
const writeConfig: DiyFormWriteConfig = this.diyFormWriteConfigRepository.findOne(writeConfigQueryWrapper);
|
||||||
|
|
||||||
if (writeConfig != null) {
|
if (writeConfig != null) {
|
||||||
// 检查会员是否可以参与
|
// 检查会员是否可以参与
|
||||||
const canJoinError: Record<string, any> = checkMemberCanJoinOrNot(RequestUtils.memberId(), writeConfig);
|
const canJoinError: Record<String, String> = checkMemberCanJoinOrNot(RequestUtils.memberId(), writeConfig);
|
||||||
if (canJoinError.length !== 0) {
|
if (canJoinError.length > 0) {
|
||||||
throw new ApiException(canJoinError.get("desc"));
|
throw new ApiException(canJoinError.get("desc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查表单填写时间
|
// 检查表单填写时间
|
||||||
const timeError: Record<string, any> = checkFormWriteTime(writeConfig);
|
const timeError: Record<String, String> = checkFormWriteTime(writeConfig);
|
||||||
if (timeError.length !== 0) {
|
if (timeError.length > 0) {
|
||||||
throw new ApiException(timeError.get("desc"));
|
throw new ApiException(timeError.get("desc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查表单总填写次数限制
|
// 检查表单总填写次数限制
|
||||||
const formLimitError: Record<string, any> = checkFormWriteLimitNum(param.getFormId(), writeConfig);
|
const formLimitError: Record<String, String> = checkFormWriteLimitNum(param.getFormId(), writeConfig);
|
||||||
if (formLimitError.length !== 0) {
|
if (formLimitError.length > 0) {
|
||||||
throw new ApiException(formLimitError.get("desc"));
|
throw new ApiException(formLimitError.get("desc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查会员填写次数限制
|
// 检查会员填写次数限制
|
||||||
const memberLimitError: Record<string, any> = checkMemberWriteLimitNum(RequestUtils.memberId(), param.getFormId(), writeConfig);
|
const memberLimitError: Record<String, String> = checkMemberWriteLimitNum(RequestUtils.memberId(), param.getFormId(), writeConfig);
|
||||||
if (memberLimitError.length !== 0) {
|
if (memberLimitError.length > 0) {
|
||||||
throw new ApiException(memberLimitError.get("desc"));
|
throw new ApiException(memberLimitError.get("desc"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export class DiyServiceImplService {
|
|||||||
if (!StrUtil.isEmpty(name)) {
|
if (!StrUtil.isEmpty(name)) {
|
||||||
// 查询启动页
|
// 查询启动页
|
||||||
startUpPage = coreDiyConfigService.getStartUpPageConfig(param.siteId(), name);
|
startUpPage = coreDiyConfigService.getStartUpPageConfig(param.siteId(), name);
|
||||||
log.info("startUpPage: {}", JSONUtil.toJsonStr(startUpPage));
|
log.info("startUpPage: {}", JSON.stringify(startUpPage));
|
||||||
|
|
||||||
const templateParam: TemplateParam = new TemplateParam();
|
const templateParam: TemplateParam = new TemplateParam();
|
||||||
String[] key = { name };
|
String[] key = { name };
|
||||||
@@ -37,7 +37,7 @@ export class DiyServiceImplService {
|
|||||||
log.info("enter if, template: {}", template.toString());
|
log.info("enter if, template: {}", template.toString());
|
||||||
return startUpPage;
|
return startUpPage;
|
||||||
} else {
|
} else {
|
||||||
const queryWrapper: QueryWrapper<DiyPage> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
log.info("site_id: {}",param.siteId() );
|
log.info("site_id: {}",param.siteId() );
|
||||||
|
|
||||||
@@ -46,19 +46,19 @@ export class DiyServiceImplService {
|
|||||||
log.info("id: {}, name: {}", id, name);
|
log.info("id: {}, name: {}", id, name);
|
||||||
if (id > 0) {
|
if (id > 0) {
|
||||||
queryWrapper.eq("id", id);
|
queryWrapper.eq("id", id);
|
||||||
info = diyPageMapper.selectOne(queryWrapper);
|
info = this.diyPageRepository.findOne(queryWrapper);
|
||||||
} else if (name.length !== 0) {
|
} else if (name.length > 0) {
|
||||||
queryWrapper.eq("name", name);
|
queryWrapper.eq("name", name);
|
||||||
queryWrapper.eq("is_default", 1);
|
queryWrapper.eq("is_default", 1);
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.orderByDesc("create_time");
|
||||||
queryWrapper.last("limit 1");
|
queryWrapper.last("limit 1");
|
||||||
info = diyPageMapper.selectOne(queryWrapper);
|
info = this.diyPageRepository.findOne(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("info: {}", JSONUtil.toJsonStr(info));
|
log.info("info: {}", JSON.stringify(info));
|
||||||
|
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
if (name.length !== 0) {
|
if (name.length > 0) {
|
||||||
const pageData: Record<string, any> = getFirstPageData(name, "");
|
const pageData: Record<string, any> = getFirstPageData(name, "");
|
||||||
if (pageData != null) {
|
if (pageData != null) {
|
||||||
info = new DiyPage();
|
info = new DiyPage();
|
||||||
@@ -74,12 +74,12 @@ export class DiyServiceImplService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("info: {}", JSONUtil.toJsonStr(info));
|
log.info("info: {}", JSON.stringify(info));
|
||||||
if (info == null) return null;
|
if (info == null) return null;
|
||||||
|
|
||||||
const vo: DiyInfoVo = new DiyInfoVo();
|
const vo: DiyInfoVo = new DiyInfoVo();
|
||||||
BeanUtils.copyProperties(info, vo);
|
Object.assign(vo, info);
|
||||||
log.info("vo: {}", JSONUtil.toJsonStr(vo));
|
log.info("vo: {}", JSON.stringify(vo));
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,14 +111,14 @@ export class DiyServiceImplService {
|
|||||||
* tabbarList
|
* tabbarList
|
||||||
*/
|
*/
|
||||||
async tabbarList(...args: any[]): Promise<any> {
|
async tabbarList(...args: any[]): Promise<any> {
|
||||||
const list: BottomConfigVo[] = coreDiyConfigService.getBottomList();
|
BottomConfigVo[] list = coreDiyConfigService.getBottomList();
|
||||||
const site: SiteInfoVo = coreSiteService.getSiteCache(param.siteId());
|
const site: SiteInfoVo = coreSiteService.getSiteCache(param.siteId());
|
||||||
|
|
||||||
const tabbarList: BottomConfigVo[] = [];
|
BottomConfigVo[] tabbarList = [];
|
||||||
for (const item of list) {
|
for (const item of list) {
|
||||||
if (item.getKey() === "app" && list.size() > 1 && site.getApps().size() == 1) continue;
|
if (item.getKey() === "app" && list.length > 1 && site.getApps().size() == 1) continue;
|
||||||
const config: BottomConfigVo = coreDiyConfigService.getBottomConfig(param.siteId(), item.getKey());
|
const config: BottomConfigVo = coreDiyConfigService.getBottomConfig(param.siteId(), item.getKey());
|
||||||
tabbarList.add(config);
|
tabbarList.push(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
return tabbarList;
|
return tabbarList;
|
||||||
@@ -128,22 +128,22 @@ export class DiyServiceImplService {
|
|||||||
* share
|
* share
|
||||||
*/
|
*/
|
||||||
async share(...args: any[]): Promise<any> {
|
async share(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<DiyRoute> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("id,title,name,page,share,is_share");
|
queryWrapper.select("id,title,name,page,share,is_share");
|
||||||
queryWrapper.eq("page", param.getRoute());
|
queryWrapper.eq("page", param.getRoute());
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
|
|
||||||
const diyRoute: DiyRoute = diyRouteMapper.selectOne(queryWrapper);
|
const diyRoute: DiyRoute = this.diyRouteRepository.findOne(queryWrapper);
|
||||||
if (diyRoute == null || diyRoute.getShare().isEmpty()) return new Record<string, any>();
|
if (diyRoute == null || diyRoute.getShare().isEmpty()) return new Record<string, any>();
|
||||||
|
|
||||||
const share: Record<string, any> = JSONUtil.parseObj(diyRoute.getShare());
|
const share: Record<string, any> = JSON.parse(diyRoute.getShare());
|
||||||
share.set("route", diyRoute.getPage());
|
share.set("route", diyRoute.getPage());
|
||||||
share.set("query", "");
|
share.set("query", "");
|
||||||
|
|
||||||
const query: Record<string, any> = new Record<string, any>();
|
const query: Record<string, any> = new Record<string, any>();
|
||||||
|
|
||||||
if (param.getParams() != null && !param.getParams().isEmpty()) {
|
if (param.getParams() != null && !param.getParams().isEmpty()) {
|
||||||
query = JSONUtil.parseObj(param.getParams());
|
query = JSON.parse(param.getParams());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (param.memberId() != null && param.memberId() > 0) {
|
if (param.memberId() != null && param.memberId() > 0) {
|
||||||
|
|||||||
@@ -16,13 +16,13 @@ export class AuthServiceImplService {
|
|||||||
const siteId: number = RequestUtils.apiSiteId();
|
const siteId: number = RequestUtils.apiSiteId();
|
||||||
|
|
||||||
if (siteId == 0) {
|
if (siteId == 0) {
|
||||||
const site: Site = siteMapper.selectOne(new QueryWrapper<Site>().select("site_id").eq("site_domain", RequestUtils.getRequestDomain()));
|
const site: Site = this.siteRepository.findOne(new ().select("site_id").eq("site_domain", RequestUtils.getRequestDomain()));
|
||||||
if (site == null) throw new UnauthorizedException("站点不存在", 403);
|
if (site == null) throw new UnauthorizedException("站点不存在", 403);
|
||||||
siteId = site.getSiteId();
|
siteId = site.getSiteId();
|
||||||
}
|
}
|
||||||
|
|
||||||
const siteInfoVo: SiteInfoVo = coreSiteService.getSiteCache(siteId);
|
const siteInfoVo: SiteInfoVo = coreSiteService.getSiteCache(siteId);
|
||||||
if(ObjectUtil.isEmpty(siteInfoVo)){
|
if(!siteInfoVo){
|
||||||
throw new UnauthorizedException("站点不存在", 403);
|
throw new UnauthorizedException("站点不存在", 403);
|
||||||
}
|
}
|
||||||
const rule: string = RequestUtils.getReqeustURI();
|
const rule: string = RequestUtils.getReqeustURI();
|
||||||
@@ -43,7 +43,7 @@ export class AuthServiceImplService {
|
|||||||
memberInfoParam.setMemberId(RequestUtils.memberId());
|
memberInfoParam.setMemberId(RequestUtils.memberId());
|
||||||
memberInfoParam.setSiteId(RequestUtils.siteId());
|
memberInfoParam.setSiteId(RequestUtils.siteId());
|
||||||
const memberInfoVo: MemberInfoVo = memberService.info(memberInfoParam);
|
const memberInfoVo: MemberInfoVo = memberService.info(memberInfoParam);
|
||||||
if(ObjectUtil.isNull(memberInfoVo) || ObjectUtil.isEmpty(memberInfoVo)){
|
if(ObjectUtil.isNull(memberInfoVo) || !memberInfoVo){
|
||||||
// 退出登录
|
// 退出登录
|
||||||
StpUtil.logout(RequestUtils.apiToken());
|
StpUtil.logout(RequestUtils.apiToken());
|
||||||
throw new UnauthorizedException("MEMBER_NOT_EXIST", 401);
|
throw new UnauthorizedException("MEMBER_NOT_EXIST", 401);
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ export class RegisterServiceImplService {
|
|||||||
* account
|
* account
|
||||||
*/
|
*/
|
||||||
async account(...args: any[]): Promise<number> {
|
async account(...args: any[]): Promise<number> {
|
||||||
const memberExist: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("username", param.getUsername()).eq("site_id", RequestUtils.siteId()));
|
const memberExist: Member = this.memberRepository.findOne(new ().select("member_id").eq("username", param.getUsername()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(memberExist)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(memberExist)) throw new BadRequestException("账号已存在");
|
||||||
|
|
||||||
if (!param.getMobile().isEmpty()) {
|
if (!param.getMobile().isEmpty()) {
|
||||||
const mobileExist: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("mobile", param.getMobile()).eq("site_id", RequestUtils.siteId()));
|
const mobileExist: Member = this.memberRepository.findOne(new ().select("member_id").eq("mobile", param.getMobile()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(mobileExist)) throw new BadRequestException("当前手机号已绑定账号");
|
if (ObjectUtil.isNotNull(mobileExist)) throw new BadRequestException("当前手机号已绑定账号");
|
||||||
this.checkMobileCode(param.getMobile(), param.getMobileKey(), param.getMobileCode());
|
this.checkMobileCode(param.getMobile(), param.getMobileKey(), param.getMobileCode());
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ export class RegisterServiceImplService {
|
|||||||
* mobile
|
* mobile
|
||||||
*/
|
*/
|
||||||
async mobile(...args: any[]): Promise<any> {
|
async mobile(...args: any[]): Promise<any> {
|
||||||
const memberExist: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("mobile", param.getMobile()).eq("site_id", RequestUtils.siteId()));
|
const memberExist: Member = this.memberRepository.findOne(new ().select("member_id").eq("mobile", param.getMobile()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(memberExist)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(memberExist)) throw new BadRequestException("账号已存在");
|
||||||
|
|
||||||
const member: Member = new Member();
|
const member: Member = new Member();
|
||||||
@@ -68,20 +68,20 @@ export class RegisterServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async register(...args: any[]): Promise<any> {
|
async register(...args: any[]): Promise<any> {
|
||||||
const request: HttpServletRequest = RequestUtils.handler();
|
const request: HttpServletRequest = RequestUtils.handler();
|
||||||
const pid: number = ObjectUtil.defaultIfNull(member.getPid(), 0);
|
const pid: number = (number) ObjectUtil.defaultIfNull(member.getPid(), 0);
|
||||||
if (pid > 0) {
|
if (pid > 0) {
|
||||||
const inviteMember: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("member_id", member.getPid()).eq("site_id", RequestUtils.siteId()));
|
const inviteMember: Member = this.memberRepository.findOne(new ().select("member_id").eq("member_id", member.getPid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (inviteMember == null) member.setPid(0);
|
if (inviteMember == null) member.setPid(0);
|
||||||
}
|
}
|
||||||
if (member.getMobile() != null && !member.getMobile().isEmpty()) {
|
if (member.getMobile() != null && !member.getMobile().isEmpty()) {
|
||||||
const mobile: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("mobile", member.getMobile()).eq("site_id", RequestUtils.siteId()));
|
const mobile: Member = this.memberRepository.findOne(new ().select("member_id").eq("mobile", member.getMobile()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(mobile)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(mobile)) throw new BadRequestException("账号已存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(member.getNickname())) {
|
if (!member.getNickname()) {
|
||||||
if (ObjectUtil.isNotEmpty(member.getUsername())) {
|
if (!!member.getUsername()) {
|
||||||
member.setNickname(member.getUsername());
|
member.setNickname(member.getUsername());
|
||||||
} else if (ObjectUtil.isNotEmpty(member.getMobile())) {
|
} else if (!!member.getMobile()) {
|
||||||
member.setNickname(member.getMobile().substring(0, 3) + "****" + member.getMobile().substring(7));
|
member.setNickname(member.getMobile().substring(0, 3) + "****" + member.getMobile().substring(7));
|
||||||
} else {
|
} else {
|
||||||
member.setNickname(createName());
|
member.setNickname(createName());
|
||||||
@@ -89,10 +89,10 @@ export class RegisterServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
member.setSiteId(RequestUtils.siteId());
|
member.setSiteId(RequestUtils.siteId());
|
||||||
member.setCreateTime(System.currentTimeMillis() / 1000);
|
member.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
member.setMemberNo(coreMemberService.createMemberNo(RequestUtils.siteId()));
|
member.setMemberNo(coreMemberService.createMemberNo(RequestUtils.siteId()));
|
||||||
member.setRegisterChannel(RequestUtils.channel());
|
member.setRegisterChannel(RequestUtils.channel());
|
||||||
this.memberMapper.insert(member);
|
this.this.memberRepository.save(member);
|
||||||
|
|
||||||
// 会员注册事件
|
// 会员注册事件
|
||||||
const registerEvent: MemberRegisterEvent = new MemberRegisterEvent();
|
const registerEvent: MemberRegisterEvent = new MemberRegisterEvent();
|
||||||
@@ -111,11 +111,11 @@ export class RegisterServiceImplService {
|
|||||||
async checkMobileCode(...args: any[]): Promise<any> {
|
async checkMobileCode(...args: any[]): Promise<any> {
|
||||||
if (mobile.length === 0) throw new BadRequestException("手机号必须填写");
|
if (mobile.length === 0) throw new BadRequestException("手机号必须填写");
|
||||||
const request: HttpServletRequest = RequestUtils.handler();
|
const request: HttpServletRequest = RequestUtils.handler();
|
||||||
if (ObjectUtil.isEmpty(mobileKey) || ObjectUtil.isEmpty(mobileCode)) throw new BadRequestException("手机验证码有误");
|
if (!mobileKey || !mobileCode) throw new BadRequestException("手机验证码有误");
|
||||||
const cache: any = cached.get(mobileKey);
|
const cache: any = cached.get(mobileKey);
|
||||||
if (ObjectUtil.isNull(cache)) throw new BadRequestException("手机验证码有误");
|
if (ObjectUtil.isNull(cache)) throw new BadRequestException("手机验证码有误");
|
||||||
const vo: MobileCodeCacheVo = new MobileCodeCacheVo();
|
const vo: MobileCodeCacheVo = new MobileCodeCacheVo();
|
||||||
BeanUtils.copyProperties(cache, vo);
|
Object.assign(vo, cache);
|
||||||
if (vo.getMobile() !== mobile || !vo.getCode() === mobileCode) throw new BadRequestException("手机验证码有误");
|
if (vo.getMobile() !== mobile || !vo.getCode() === mobileCode) throw new BadRequestException("手机验证码有误");
|
||||||
cached.remove(mobileKey);
|
cached.remove(mobileKey);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export class MemberAccountServiceImplService {
|
|||||||
* accountRecords
|
* accountRecords
|
||||||
*/
|
*/
|
||||||
async accountRecords(...args: any[]): Promise<number> {
|
async accountRecords(...args: any[]): Promise<number> {
|
||||||
const queryWrapper: QueryWrapper<MemberAccountLog> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("id");
|
queryWrapper.select("id");
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
if (StrUtil.isNotEmpty(param.getAccountType())) {
|
if (StrUtil.isNotEmpty(param.getAccountType())) {
|
||||||
@@ -22,10 +22,10 @@ export class MemberAccountServiceImplService {
|
|||||||
if (StrUtil.isNotEmpty(param.getFromType())) {
|
if (StrUtil.isNotEmpty(param.getFromType())) {
|
||||||
queryWrapper.eq("from_type", param.getFromType());
|
queryWrapper.eq("from_type", param.getFromType());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(param.getCreateTime())) {
|
if (!!param.getCreateTime()) {
|
||||||
QueryMapperUtils.buildByTime(queryWrapper, "create_time", param.getCreateTime());
|
QueryMapperUtils.buildByTime(queryWrapper, "create_time", param.getCreateTime());
|
||||||
}
|
}
|
||||||
const count: number = this.memberAccountLogMapper.selectCount(queryWrapper);
|
const count: number = this.this.memberAccountLogRepository.count(queryWrapper);
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,11 +46,11 @@ export class MemberAccountServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async pointCount(...args: any[]): Promise<any> {
|
async pointCount(...args: any[]): Promise<any> {
|
||||||
const accountPointCountVo: AccountPointCountVo = new AccountPointCountVo();
|
const accountPointCountVo: AccountPointCountVo = new AccountPointCountVo();
|
||||||
const queryWrapper: QueryWrapper<Member> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("point,point_get");
|
queryWrapper.select("point,point_get");
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
const member: Member = this.memberMapper.selectOne(queryWrapper);
|
const member: Member = this.this.memberRepository.findOne(queryWrapper);
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
throw new BaseException("会员不存在");
|
throw new BaseException("会员不存在");
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@ export class MemberAccountServiceImplService {
|
|||||||
accountPointCountVo.setPointGet(member.getPointGet());
|
accountPointCountVo.setPointGet(member.getPointGet());
|
||||||
}
|
}
|
||||||
|
|
||||||
const accountLog: MemberAccountLog = memberAccountLogMapper.selectOne(new QueryWrapper<MemberAccountLog>()
|
const accountLog: MemberAccountLog = this.memberAccountLogRepository.findOne(new ()
|
||||||
.eq("site_id", param.siteId())
|
.eq("site_id", param.siteId())
|
||||||
.eq("member_id", param.memberId())
|
.eq("member_id", param.memberId())
|
||||||
.eq("account_type", AccountTypeEnum.POINT.getType())
|
.eq("account_type", AccountTypeEnum.POINT.getType())
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export class MemberAddressServiceImplService {
|
|||||||
if (param.getIsDefault() != null && param.getIsDefault() == 1) {
|
if (param.getIsDefault() != null && param.getIsDefault() == 1) {
|
||||||
try {
|
try {
|
||||||
this.deleteDefaultAddress(param.memberId());
|
this.deleteDefaultAddress(param.memberId());
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("更新会员默认地址数据库操作错误:", e.message);
|
log.error("更新会员默认地址数据库操作错误:", e.message);
|
||||||
throw new BaseException("添加会员收货地址错误.");
|
throw new BaseException("添加会员收货地址错误.");
|
||||||
}
|
}
|
||||||
@@ -31,7 +31,7 @@ export class MemberAddressServiceImplService {
|
|||||||
newMemberAddress.setMemberId(param.memberId());
|
newMemberAddress.setMemberId(param.memberId());
|
||||||
// 插入显式的设置为空
|
// 插入显式的设置为空
|
||||||
newMemberAddress.setId(null);
|
newMemberAddress.setId(null);
|
||||||
const result: number = this.memberAddressMapper.insert(newMemberAddress);
|
const result: number = this.this.memberAddressRepository.save(newMemberAddress);
|
||||||
if (result <= 0) {
|
if (result <= 0) {
|
||||||
throw new BaseException("添加会员收货地址失败.");
|
throw new BaseException("添加会员收货地址失败.");
|
||||||
}
|
}
|
||||||
@@ -42,11 +42,11 @@ export class MemberAddressServiceImplService {
|
|||||||
* delete
|
* delete
|
||||||
*/
|
*/
|
||||||
async delete(...args: any[]): Promise<void> {
|
async delete(...args: any[]): Promise<void> {
|
||||||
const queryWrapper: QueryWrapper<MemberAddress> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
queryWrapper.eq("id", param.getId());
|
queryWrapper.eq("id", param.getId());
|
||||||
const result: number = this.memberAddressMapper.delete(queryWrapper);
|
const result: number = this.this.memberAddressRepository.delete(queryWrapper);
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
throw new BaseException("删除会员收货地址失败.");
|
throw new BaseException("删除会员收货地址失败.");
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ export class MemberAddressServiceImplService {
|
|||||||
if (param.getIsDefault() != null && param.getIsDefault() == 1) {
|
if (param.getIsDefault() != null && param.getIsDefault() == 1) {
|
||||||
try {
|
try {
|
||||||
deleteDefaultAddress(param.memberId());
|
deleteDefaultAddress(param.memberId());
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("更新会员默认地址数据库操作错误:", e.message);
|
log.error("更新会员默认地址数据库操作错误:", e.message);
|
||||||
throw new BaseException("添加会员收货地址错误.");
|
throw new BaseException("添加会员收货地址错误.");
|
||||||
}
|
}
|
||||||
@@ -76,7 +76,7 @@ export class MemberAddressServiceImplService {
|
|||||||
// 修改实体表
|
// 修改实体表
|
||||||
const newMemberAddress: MemberAddress = CollectUtils.build(param, MemberAddress.class);
|
const newMemberAddress: MemberAddress = CollectUtils.build(param, MemberAddress.class);
|
||||||
newMemberAddress.setId(oldMemberAddress.getId());
|
newMemberAddress.setId(oldMemberAddress.getId());
|
||||||
return this.memberAddressMapper.updateById(newMemberAddress);
|
return this.this.memberAddressRepository.save(newMemberAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -85,7 +85,7 @@ export class MemberAddressServiceImplService {
|
|||||||
async getInfo(...args: any[]): Promise<any> {
|
async getInfo(...args: any[]): Promise<any> {
|
||||||
const memberAddress: MemberAddress = this.getMemberAddress(param.siteId(), param.memberId(), param.getId());
|
const memberAddress: MemberAddress = this.getMemberAddress(param.siteId(), param.memberId(), param.getId());
|
||||||
const memberAddressGetInfoVo: MemberAddressGetInfoVo = new MemberAddressGetInfoVo();
|
const memberAddressGetInfoVo: MemberAddressGetInfoVo = new MemberAddressGetInfoVo();
|
||||||
BeanUtils.copyProperties(memberAddress, memberAddressGetInfoVo);
|
Object.assign(memberAddressGetInfoVo, memberAddress);
|
||||||
return memberAddressGetInfoVo;
|
return memberAddressGetInfoVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,13 +93,13 @@ export class MemberAddressServiceImplService {
|
|||||||
* getList
|
* getList
|
||||||
*/
|
*/
|
||||||
async getList(...args: any[]): Promise<any> {
|
async getList(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<MemberAddress> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.select("id,member_id,name,mobile,address,address_name,full_address,is_default,lng,lat");
|
queryWrapper.select("id,member_id,name,mobile,address,address_name,full_address,is_default,lng,lat");
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
queryWrapper.orderByDesc(Arrays.asList("is_default", "id"));
|
queryWrapper.orderByDesc(Arrays.asList("is_default", "id"));
|
||||||
const memberAddressList: MemberAddress[] = memberAddressMapper.selectList(queryWrapper);
|
MemberAddress[] memberAddressList = this.memberAddressRepository.find(queryWrapper);
|
||||||
const memberAddressListInfoVo: MemberAddressListInfoVo[] = CollectUtils.convert(memberAddressList, MemberAddressListInfoVo.class);
|
MemberAddressListInfoVo[] memberAddressListInfoVo = CollectUtils.convert(memberAddressList, MemberAddressListInfoVo.class);
|
||||||
return memberAddressListInfoVo;
|
return memberAddressListInfoVo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MemberCashOutServiceImplService {
|
export class MemberCashOutServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -16,14 +15,14 @@ export class MemberCashOutServiceImplService {
|
|||||||
async cashOutInfo(...args: any[]): Promise<any> {
|
async cashOutInfo(...args: any[]): Promise<any> {
|
||||||
const vo: MemberCashOutInfoVo = memberCashOutMapper.selectJoinOne(
|
const vo: MemberCashOutInfoVo = memberCashOutMapper.selectJoinOne(
|
||||||
MemberCashOutInfoVo.class,
|
MemberCashOutInfoVo.class,
|
||||||
new MPJQueryWrapper<MemberCashOut>()
|
new MPJ()
|
||||||
.select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg,pt.transfer_voucher,pt.transfer_remark,pt.extra,pt.package_info")
|
.select("mco.*,m.member_no,m.username,m.nickname,m.mobile,m.headimg,pt.transfer_voucher,pt.transfer_remark,pt.extra,pt.package_info")
|
||||||
.eq("mco.id", param.getId())
|
.eq("mco.id", param.getId())
|
||||||
.eq("mco.member_id", param.memberId())
|
.eq("mco.member_id", param.memberId())
|
||||||
.eq("mco.site_id", param.siteId())
|
.eq("mco.site_id", param.siteId())
|
||||||
.setAlias("mco")
|
.setAlias("mco")
|
||||||
.leftJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.config.get('tablePrefix')))
|
.leftJoin("?_member m ON mco.member_id = m.member_id".replace("?_", this.appConfig.tablePrefix))
|
||||||
.leftJoin("?_pay_transfer pt ON mco.transfer_no = pt.transfer_no".replace("?_", this.config.get('tablePrefix')))
|
.leftJoin("?_pay_transfer pt ON mco.transfer_no = pt.transfer_no".replace("?_", this.appConfig.tablePrefix))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (vo != null) {
|
if (vo != null) {
|
||||||
@@ -66,11 +65,11 @@ export class MemberCashOutServiceImplService {
|
|||||||
* cashOutCancel
|
* cashOutCancel
|
||||||
*/
|
*/
|
||||||
async cashOutCancel(...args: any[]): Promise<any> {
|
async cashOutCancel(...args: any[]): Promise<any> {
|
||||||
const cashOut: MemberCashOut = memberCashOutMapper.selectOne(new QueryWrapper<MemberCashOut>()
|
const cashOut: MemberCashOut = this.memberCashOutRepository.findOne(new ()
|
||||||
.eq("member_id", param.memberId())
|
.eq("member_id", param.memberId())
|
||||||
.eq("site_id", param.siteId())
|
.eq("site_id", param.siteId())
|
||||||
.eq("id", param.getId()));
|
.eq("id", param.getId()));
|
||||||
if (ObjectUtil.isEmpty(cashOut)) throw new BadRequestException("提现申请不存在");
|
if (!cashOut) throw new BadRequestException("提现申请不存在");
|
||||||
|
|
||||||
coreMemberCashOutService.cancel(cashOut.getSiteId(), cashOut.getId());
|
coreMemberCashOutService.cancel(cashOut.getSiteId(), cashOut.getId());
|
||||||
return true;
|
return true;
|
||||||
@@ -80,11 +79,11 @@ export class MemberCashOutServiceImplService {
|
|||||||
* transfer
|
* transfer
|
||||||
*/
|
*/
|
||||||
async transfer(...args: any[]): Promise<any> {
|
async transfer(...args: any[]): Promise<any> {
|
||||||
const cashOut: MemberCashOut = memberCashOutMapper.selectOne(new QueryWrapper<MemberCashOut>()
|
const cashOut: MemberCashOut = this.memberCashOutRepository.findOne(new ()
|
||||||
.eq("member_id", RequestUtils.memberId())
|
.eq("member_id", RequestUtils.memberId())
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("id", param.getId()));
|
.eq("id", param.getId()));
|
||||||
if (ObjectUtil.isEmpty(cashOut)) throw new BadRequestException("提现申请不存在");
|
if (!cashOut) throw new BadRequestException("提现申请不存在");
|
||||||
if (cashOut.getStatus() !== MemberCashOutStatusEnum.WAIT_TRANSFER.getStatus()) throw new BadRequestException("当前提现申请未处于待转账状态");
|
if (cashOut.getStatus() !== MemberCashOutStatusEnum.WAIT_TRANSFER.getStatus()) throw new BadRequestException("当前提现申请未处于待转账状态");
|
||||||
|
|
||||||
return coreMemberCashOutService.transfer(cashOut, param);
|
return coreMemberCashOutService.transfer(cashOut, param);
|
||||||
@@ -96,29 +95,29 @@ export class MemberCashOutServiceImplService {
|
|||||||
async accountList(...args: any[]): Promise<number> {
|
async accountList(...args: any[]): Promise<number> {
|
||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
const queryWrapper: QueryWrapper<MemberCashOutAccount> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code");
|
queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code");
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
if (ObjectUtil.isNotEmpty(param.getAccountType())) queryWrapper.eq("account_type", param.getAccountType());
|
if (!!param.getAccountType()) queryWrapper.eq("account_type", param.getAccountType());
|
||||||
queryWrapper.orderByDesc(Arrays.asList("create_time"));
|
queryWrapper.orderByDesc(Arrays.asList("create_time"));
|
||||||
const iPage: IPage<MemberCashOutAccount> = this.memberCashOutAccountMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.this.memberCashOutAccountRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const dataList: MemberCashOutAccountVo[] = CollectUtils.convert(iPage.getRecords(), MemberCashOutAccountVo.class);
|
MemberCashOutAccountVo[] dataList = CollectUtils.convert(records, MemberCashOutAccountVo.class);
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(dataList);
|
return PageResult.build(page, limit, total).setData(dataList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* accountDetails
|
* accountDetails
|
||||||
*/
|
*/
|
||||||
async accountDetails(...args: any[]): Promise<number> {
|
async accountDetails(...args: any[]): Promise<number> {
|
||||||
const queryWrapper: QueryWrapper<MemberCashOutAccount> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code");
|
queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code");
|
||||||
queryWrapper.eq("account_id", param.getAccountId());
|
queryWrapper.eq("account_id", param.getAccountId());
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
const memberCashOutAccount: MemberCashOutAccount = this.memberCashOutAccountMapper.selectOne(queryWrapper);
|
const memberCashOutAccount: MemberCashOutAccount = this.this.memberCashOutAccountRepository.findOne(queryWrapper);
|
||||||
const memberCashOutAccountDetailsVo: MemberCashOutAccountDetailsVo = new MemberCashOutAccountDetailsVo();
|
const memberCashOutAccountDetailsVo: MemberCashOutAccountDetailsVo = new MemberCashOutAccountDetailsVo();
|
||||||
BeanUtils.copyProperties(memberCashOutAccount, memberCashOutAccountDetailsVo);
|
Object.assign(memberCashOutAccountDetailsVo, memberCashOutAccount);
|
||||||
return memberCashOutAccountDetailsVo;
|
return memberCashOutAccountDetailsVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,17 +125,17 @@ export class MemberCashOutServiceImplService {
|
|||||||
* accountDetailsOfFirst
|
* accountDetailsOfFirst
|
||||||
*/
|
*/
|
||||||
async accountDetailsOfFirst(...args: any[]): Promise<number> {
|
async accountDetailsOfFirst(...args: any[]): Promise<number> {
|
||||||
const queryWrapper: QueryWrapper<MemberCashOutAccount> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code");
|
queryWrapper.select("account_id,site_id,member_id,account_type,bank_name,realname,account_no,transfer_payment_code");
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
if (ObjectUtil.isNotEmpty(param.getAccountType())) queryWrapper.eq("account_type", param.getAccountType());
|
if (!!param.getAccountType()) queryWrapper.eq("account_type", param.getAccountType());
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.orderByDesc("create_time");
|
||||||
queryWrapper.last("limit 1");
|
queryWrapper.last("limit 1");
|
||||||
const memberCashOutAccount: MemberCashOutAccount = this.memberCashOutAccountMapper.selectOne(queryWrapper);
|
const memberCashOutAccount: MemberCashOutAccount = this.this.memberCashOutAccountRepository.findOne(queryWrapper);
|
||||||
if (memberCashOutAccount == null) return null;
|
if (memberCashOutAccount == null) return null;
|
||||||
const memberCashOutFirstAccountDetailsVo: MemberCashOutFirstAccountDetailsVo = new MemberCashOutFirstAccountDetailsVo();
|
const memberCashOutFirstAccountDetailsVo: MemberCashOutFirstAccountDetailsVo = new MemberCashOutFirstAccountDetailsVo();
|
||||||
BeanUtils.copyProperties(memberCashOutAccount, memberCashOutFirstAccountDetailsVo);
|
Object.assign(memberCashOutFirstAccountDetailsVo, memberCashOutAccount);
|
||||||
return memberCashOutFirstAccountDetailsVo;
|
return memberCashOutFirstAccountDetailsVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,9 +147,9 @@ export class MemberCashOutServiceImplService {
|
|||||||
const newMemberCashOutAccount: MemberCashOutAccount = new MemberCashOutAccount();
|
const newMemberCashOutAccount: MemberCashOutAccount = new MemberCashOutAccount();
|
||||||
newMemberCashOutAccount.setSiteId(param.siteId());
|
newMemberCashOutAccount.setSiteId(param.siteId());
|
||||||
newMemberCashOutAccount.setMemberId(param.memberId());
|
newMemberCashOutAccount.setMemberId(param.memberId());
|
||||||
newMemberCashOutAccount.setCreateTime(System.currentTimeMillis() / 1000);
|
newMemberCashOutAccount.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
BeanUtils.copyProperties(param, newMemberCashOutAccount);
|
Object.assign(newMemberCashOutAccount, param);
|
||||||
this.memberCashOutAccountMapper.insert(newMemberCashOutAccount);
|
this.this.memberCashOutAccountRepository.save(newMemberCashOutAccount);
|
||||||
// 返回当前对象的ID
|
// 返回当前对象的ID
|
||||||
return newMemberCashOutAccount.getAccountId();
|
return newMemberCashOutAccount.getAccountId();
|
||||||
}
|
}
|
||||||
@@ -160,24 +159,24 @@ export class MemberCashOutServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async editAccount(...args: any[]): Promise<number> {
|
async editAccount(...args: any[]): Promise<number> {
|
||||||
// 根据ID查找实体对象,对象存在即更新数据库
|
// 根据ID查找实体对象,对象存在即更新数据库
|
||||||
const oldMemberCashOutAccount: MemberCashOutAccount = this.memberCashOutAccountMapper.selectOne(new QueryWrapper<MemberCashOutAccount>()
|
const oldMemberCashOutAccount: MemberCashOutAccount = this.this.memberCashOutAccountRepository.findOne(new ()
|
||||||
.eq("account_id", accountId)
|
.eq("account_id", accountId)
|
||||||
.eq("member_id", param.memberId()));
|
.eq("member_id", param.memberId()));
|
||||||
if (oldMemberCashOutAccount == null) {
|
if (oldMemberCashOutAccount == null) {
|
||||||
throw new Error("会员账户不存在");
|
throw new RuntimeException("会员账户不存在");
|
||||||
}
|
}
|
||||||
const newMemberCashOutAccount: MemberCashOutAccount = new MemberCashOutAccount();
|
const newMemberCashOutAccount: MemberCashOutAccount = new MemberCashOutAccount();
|
||||||
BeanUtils.copyProperties(param, newMemberCashOutAccount);
|
Object.assign(newMemberCashOutAccount, param);
|
||||||
newMemberCashOutAccount.setAccountId(accountId);
|
newMemberCashOutAccount.setAccountId(accountId);
|
||||||
newMemberCashOutAccount.setUpdateTime(System.currentTimeMillis() / 1000);
|
newMemberCashOutAccount.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
return this.memberCashOutAccountMapper.updateById(newMemberCashOutAccount);
|
return this.this.memberCashOutAccountRepository.save(newMemberCashOutAccount);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deleteAccount
|
* deleteAccount
|
||||||
*/
|
*/
|
||||||
async deleteAccount(...args: any[]): Promise<number> {
|
async deleteAccount(...args: any[]): Promise<number> {
|
||||||
return this.memberCashOutAccountMapper.delete(new QueryWrapper<MemberCashOutAccount>()
|
return this.this.memberCashOutAccountRepository.delete(new ()
|
||||||
.eq("account_id", param.getAccountId())
|
.eq("account_id", param.getAccountId())
|
||||||
.eq("member_id", param.memberId()));
|
.eq("member_id", param.memberId()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MemberLevelServiceImplService {
|
export class MemberLevelServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -21,10 +20,10 @@ export class MemberLevelServiceImplService {
|
|||||||
* findByIds
|
* findByIds
|
||||||
*/
|
*/
|
||||||
async findByIds(...args: any[]): Promise<any> {
|
async findByIds(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<MemberLevel> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("level_id,level_name");
|
queryWrapper.select("level_id,level_name");
|
||||||
queryWrapper.in("id", idSet);
|
queryWrapper.in("id", idSet);
|
||||||
const memberLevelList: MemberLevel[] = memberLevelMapper.selectList(queryWrapper);
|
MemberLevel[] memberLevelList = this.memberLevelRepository.find(queryWrapper);
|
||||||
return CollectUtils.convert(memberLevelList, MemberLevelSimpleInfoVo.class);
|
return CollectUtils.convert(memberLevelList, MemberLevelSimpleInfoVo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,10 +31,10 @@ export class MemberLevelServiceImplService {
|
|||||||
* list
|
* list
|
||||||
*/
|
*/
|
||||||
async list(...args: any[]): Promise<any[]> {
|
async list(...args: any[]): Promise<any[]> {
|
||||||
const queryWrapper: QueryWrapper<MemberLevel> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("level_id,site_id,level_name,growth,remark,level_benefits,level_gifts");
|
queryWrapper.select("level_id,site_id,level_name,growth,remark,level_benefits,level_gifts");
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
const memberLevelList: MemberLevel[] = memberLevelMapper.selectList(queryWrapper);
|
MemberLevel[] memberLevelList = this.memberLevelRepository.find(queryWrapper);
|
||||||
|
|
||||||
if (memberLevelList == null) return null;
|
if (memberLevelList == null) return null;
|
||||||
|
|
||||||
@@ -48,13 +47,13 @@ export class MemberLevelServiceImplService {
|
|||||||
filling.put("benefits_three", new Record<string, any>().set("title", "尊享客服").set("desc", "尊享客服").set("icon", "/static/resource/images/member/benefits/benefits_badge.png"));
|
filling.put("benefits_three", new Record<string, any>().set("title", "尊享客服").set("desc", "尊享客服").set("icon", "/static/resource/images/member/benefits/benefits_badge.png"));
|
||||||
|
|
||||||
const index: number = 0;
|
const index: number = 0;
|
||||||
const list: MemberLevelInfoVo[] = [];
|
MemberLevelInfoVo[] list = [];
|
||||||
for (const level of memberLevelList) {
|
for (const level of memberLevelList) {
|
||||||
const vo: MemberLevelInfoVo = new MemberLevelInfoVo();
|
const vo: MemberLevelInfoVo = new MemberLevelInfoVo();
|
||||||
BeanUtils.copyProperties(level, vo);
|
Object.assign(vo, level);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(level.getLevelBenefits())) {
|
if (!!level.getLevelBenefits()) {
|
||||||
const benefits: Record<string, any> = JSONUtil.parseObj(level.getLevelBenefits());
|
const benefits: Record<string, any> = JSON.parse(level.getLevelBenefits());
|
||||||
benefits = coreMemberService.getBenefitsContent(param.siteId(), benefits, "member_level");
|
benefits = coreMemberService.getBenefitsContent(param.siteId(), benefits, "member_level");
|
||||||
vo.setLevelBenefits(benefits);
|
vo.setLevelBenefits(benefits);
|
||||||
} else {
|
} else {
|
||||||
@@ -69,7 +68,7 @@ export class MemberLevelServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!level.getLevelGifts().isEmpty()) {
|
if (!level.getLevelGifts().isEmpty()) {
|
||||||
const gifts: Record<string, any> = JSONUtil.parseObj(level.getLevelGifts());
|
const gifts: Record<string, any> = JSON.parse(level.getLevelGifts());
|
||||||
gifts = coreMemberService.getGiftContent(param.siteId(), gifts, "member_level");
|
gifts = coreMemberService.getGiftContent(param.siteId(), gifts, "member_level");
|
||||||
vo.setLevelGifts(gifts);
|
vo.setLevelGifts(gifts);
|
||||||
}
|
}
|
||||||
@@ -80,7 +79,7 @@ export class MemberLevelServiceImplService {
|
|||||||
vo.setLevelTag("/static/resource/images/member/level/level_" + levelKey + ".png");
|
vo.setLevelTag("/static/resource/images/member/level/level_" + levelKey + ".png");
|
||||||
vo.setLevelStyle(levelStyle.getJSONObject("level_" + levelKey));
|
vo.setLevelStyle(levelStyle.getJSONObject("level_" + levelKey));
|
||||||
|
|
||||||
list.add(vo);
|
list.push(vo);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,9 +90,9 @@ export class MemberLevelServiceImplService {
|
|||||||
* findMemberLevel
|
* findMemberLevel
|
||||||
*/
|
*/
|
||||||
async findMemberLevel(...args: any[]): Promise<any> {
|
async findMemberLevel(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: MPJQueryWrapper<Member> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("m")
|
queryWrapper.setAlias("m")
|
||||||
.leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("ml.*");
|
queryWrapper.select("ml.*");
|
||||||
queryWrapper.eq("m.member_id", memberId);
|
queryWrapper.eq("m.member_id", memberId);
|
||||||
queryWrapper.ne("m.member_level", 0);
|
queryWrapper.ne("m.member_level", 0);
|
||||||
@@ -101,10 +100,10 @@ export class MemberLevelServiceImplService {
|
|||||||
if (level == null) return null;
|
if (level == null) return null;
|
||||||
|
|
||||||
const vo: MemberLevelInfoVo = new MemberLevelInfoVo();
|
const vo: MemberLevelInfoVo = new MemberLevelInfoVo();
|
||||||
BeanUtils.copyProperties(level, vo);
|
Object.assign(vo, level);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(level.getLevelBenefits()) && JSONUtil.isJson(level.getLevelBenefits())) vo.setLevelBenefits(JSONUtil.parseObj(level.getLevelBenefits()));
|
if (!!level.getLevelBenefits() && JSONUtil.isJson(level.getLevelBenefits())) vo.setLevelBenefits(JSON.parse(level.getLevelBenefits()));
|
||||||
if (ObjectUtil.isNotEmpty(level.getLevelGifts()) && JSONUtil.isJson(level.getLevelGifts())) vo.setLevelGifts(JSONUtil.parseObj(level.getLevelGifts()));
|
if (!!level.getLevelGifts() && JSONUtil.isJson(level.getLevelGifts())) vo.setLevelGifts(JSON.parse(level.getLevelGifts()));
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -117,13 +116,13 @@ export class MemberLevelServiceImplService {
|
|||||||
const phoneInfo: WxMaPhoneNumberInfo = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getPhoneNoInfo(mobileCode);
|
const phoneInfo: WxMaPhoneNumberInfo = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getPhoneNoInfo(mobileCode);
|
||||||
const mobile: string = phoneInfo.getPurePhoneNumber();
|
const mobile: string = phoneInfo.getPurePhoneNumber();
|
||||||
|
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("mobile", mobile).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().select("member_id").eq("mobile", mobile).eq("site_id", RequestUtils.siteId()));
|
||||||
if (member != null) throw new BadRequestException("当前手机号已绑定账号");
|
if (member != null) throw new BadRequestException("当前手机号已绑定账号");
|
||||||
|
|
||||||
const vo: MemberGetMobileVo = new MemberGetMobileVo();
|
const vo: MemberGetMobileVo = new MemberGetMobileVo();
|
||||||
vo.setMobile(mobile);
|
vo.setMobile(mobile);
|
||||||
return vo;
|
return vo;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MemberServiceImplService {
|
export class MemberServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -14,24 +13,24 @@ export class MemberServiceImplService {
|
|||||||
* info
|
* info
|
||||||
*/
|
*/
|
||||||
async info(...args: any[]): Promise<any> {
|
async info(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: MPJQueryWrapper<Member> = new MPJQueryWrapper<>();
|
MPJqueryWrapper = new MPJQueryWrapper<>();
|
||||||
queryWrapper.setAlias("m")
|
queryWrapper.setAlias("m")
|
||||||
.leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.config.get('tablePrefix')));
|
.leftJoin("?_member_level ml ON ml.level_id = m.member_level".replace("?_", this.appConfig.tablePrefix));
|
||||||
queryWrapper.select("member_id, m.site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, m.create_time, last_visit_time, last_consum_time, sex, m.status, birthday, point, balance, m.growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, wx_openid, weapp_openid, commission, commission_get, commission_cash_outing, ml.level_name as member_level_name");
|
queryWrapper.select("member_id, m.site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, m.create_time, last_visit_time, last_consum_time, sex, m.status, birthday, point, balance, m.growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, wx_openid, weapp_openid, commission, commission_get, commission_cash_outing, ml.level_name as member_level_name");
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
// SAAS域控制(交给SQL引擎处理)
|
// SAAS域控制(交给SQL引擎处理)
|
||||||
queryWrapper.eq("m.site_id", param.siteId());
|
queryWrapper.eq("m.site_id", param.siteId());
|
||||||
const memberInfoVo: MemberInfoVo = memberMapper.selectJoinOne(MemberInfoVo.class, queryWrapper);
|
const memberInfoVo: MemberInfoVo = memberMapper.selectJoinOne(MemberInfoVo.class, queryWrapper);
|
||||||
if (ObjectUtil.isNotEmpty(memberInfoVo)){
|
if (!!memberInfoVo){
|
||||||
const memberConfig: MemberConfigVo = coreMemberConfigService.getMemberConfig(memberInfoVo.getSiteId());
|
const memberConfig: MemberConfigVo = coreMemberConfigService.getMemberConfig(memberInfoVo.getSiteId());
|
||||||
memberInfoVo.setFormId(memberConfig.getFormId() == null ? "" : memberConfig.getFormId().toString());
|
memberInfoVo.setFormId(memberConfig.getFormId() == null ? "" : memberConfig.getFormId().toString());
|
||||||
memberInfoVo.setFormRecordId("");
|
memberInfoVo.setFormRecordId("");
|
||||||
if ((memberInfoVo.getFormId( && memberInfoVo.getFormId(.trim() !== ''))){
|
if (StringUtils.isNotEmpty(memberInfoVo.getFormId())){
|
||||||
const diyFormRecords: DiyFormRecords = diyFormRecordsMapper.selectOne(new LambdaQueryWrapper<DiyFormRecords>()
|
const diyFormRecords: DiyFormRecords = this.diyFormRecordsRepository.findOne(new Lambda()
|
||||||
.eq(DiyFormRecords::getFormId, memberConfig.getFormId())
|
.eq(DiyFormRecords::getFormId, memberConfig.getFormId())
|
||||||
.eq(DiyFormRecords::getMemberId, memberInfoVo.getMemberId())
|
.eq(DiyFormRecords::getMemberId, memberInfoVo.getMemberId())
|
||||||
.orderByDesc(DiyFormRecords::getCreateTime));
|
.orderByDesc(DiyFormRecords::getCreateTime));
|
||||||
if (ObjectUtil.isNotEmpty(diyFormRecords)){
|
if (!!diyFormRecords){
|
||||||
memberInfoVo.setFormRecordId(diyFormRecords.getRecordId().toString());
|
memberInfoVo.setFormRecordId(diyFormRecords.getRecordId().toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,17 +42,17 @@ export class MemberServiceImplService {
|
|||||||
* center
|
* center
|
||||||
*/
|
*/
|
||||||
async center(...args: any[]): Promise<any> {
|
async center(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<Member> = new QueryWrapper();
|
queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.select("member_id, site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, commission, commission_get, commission_cash_outing");
|
queryWrapper.select("member_id, site_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, commission, commission_get, commission_cash_outing");
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
const member: Member = memberMapper.selectOne(queryWrapper);
|
const member: Member = this.memberRepository.findOne(queryWrapper);
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberCenterVo: MemberCenterVo = new MemberCenterVo();
|
const memberCenterVo: MemberCenterVo = new MemberCenterVo();
|
||||||
BeanUtils.copyProperties(member, memberCenterVo);
|
Object.assign(memberCenterVo, member);
|
||||||
return memberCenterVo;
|
return memberCenterVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,34 +61,34 @@ export class MemberServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async modify(...args: any[]): Promise<any> {
|
async modify(...args: any[]): Promise<any> {
|
||||||
const oldMember: Member = this.memberMapper.selectById(param.memberId());
|
const oldMember: Member = this.memberMapper.selectById(param.memberId());
|
||||||
Assert.notNull(oldMember, "会员不存在");
|
if (!oldMember) throw new BadRequestException("会员不存在");
|
||||||
|
|
||||||
const newMember: Member = new Member();
|
const newMember: Member = new Member();
|
||||||
newMember.setMemberId(oldMember.getMemberId());
|
newMember.setMemberId(oldMember.getMemberId());
|
||||||
|
|
||||||
switch (param.getField()) {
|
switch (param.getField()) {
|
||||||
case "nickname":
|
case "nickname":
|
||||||
newMember.setNickname(String.valueOf(param.getValue()));
|
newMember.setNickname(String(param.getValue()));
|
||||||
break;
|
break;
|
||||||
case "headimg":
|
case "headimg":
|
||||||
newMember.setHeadimg(String.valueOf(param.getValue()));
|
newMember.setHeadimg(String(param.getValue()));
|
||||||
break;
|
break;
|
||||||
case "member_label":
|
case "member_label":
|
||||||
newMember.setMemberLabel(String.valueOf(param.getValue()));
|
newMember.setMemberLabel(String(param.getValue()));
|
||||||
break;
|
break;
|
||||||
case "member_level":
|
case "member_level":
|
||||||
newMember.setMemberLevel(number.parseInt(String.valueOf(param.getValue())));
|
newMember.setMemberLevel(number.parseInt(String(param.getValue())));
|
||||||
break;
|
break;
|
||||||
case "birthday":
|
case "birthday":
|
||||||
newMember.setBirthday(String.valueOf(param.getValue()));
|
newMember.setBirthday(String(param.getValue()));
|
||||||
break;
|
break;
|
||||||
case "sex":
|
case "sex":
|
||||||
newMember.setSex(number.parseInt(String.valueOf(param.getValue())));
|
newMember.setSex(number.parseInt(String(param.getValue())));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new BadRequestException("不允许修改的信息");
|
throw new BadRequestException("不允许修改的信息");
|
||||||
}
|
}
|
||||||
return this.memberMapper.updateById(newMember);
|
return this.this.memberRepository.save(newMember);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -97,16 +96,16 @@ export class MemberServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async edit(...args: any[]): Promise<any> {
|
async edit(...args: any[]): Promise<any> {
|
||||||
const oldMember: Member = this.memberMapper.selectById(param.memberId());
|
const oldMember: Member = this.memberMapper.selectById(param.memberId());
|
||||||
Assert.notNull(oldMember, "会员不存在");
|
if (!oldMember) throw new BadRequestException("会员不存在");
|
||||||
|
|
||||||
const newMember: Member = new Member();
|
const newMember: Member = new Member();
|
||||||
newMember.setMemberId(oldMember.getMemberId());
|
newMember.setMemberId(oldMember.getMemberId());
|
||||||
if (ObjectUtil.isNotEmpty(param.getData().getNickname())) newMember.setNickname(param.getData().getNickname());
|
if (!!param.getData(.getNickname())) newMember.setNickname(param.getData().getNickname());
|
||||||
if (ObjectUtil.isNotEmpty(param.getData().getHeadimg())) newMember.setHeadimg(param.getData().getHeadimg());
|
if (!!param.getData(.getHeadimg())) newMember.setHeadimg(param.getData().getHeadimg());
|
||||||
if (ObjectUtil.isNotEmpty(param.getData().getBirthday())) newMember.setBirthday(param.getData().getBirthday());
|
if (!!param.getData(.getBirthday())) newMember.setBirthday(param.getData().getBirthday());
|
||||||
if (ObjectUtil.isNotEmpty(param.getData().getSex())) newMember.setSex(param.getData().getSex());
|
if (!!param.getData(.getSex())) newMember.setSex(param.getData().getSex());
|
||||||
if (ObjectUtil.isNotEmpty(param.getData().getLastVisitTime())) newMember.setLastVisitTime(param.getData().getLastVisitTime());
|
if (!!param.getData(.getLastVisitTime())) newMember.setLastVisitTime(param.getData().getLastVisitTime());
|
||||||
return this.memberMapper.updateById(newMember);
|
return this.this.memberRepository.save(newMember);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -114,29 +113,29 @@ export class MemberServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async mobile(...args: any[]): Promise<any> {
|
async mobile(...args: any[]): Promise<any> {
|
||||||
const oldMember: Member = this.memberMapper.selectById(param.memberId());
|
const oldMember: Member = this.memberMapper.selectById(param.memberId());
|
||||||
Assert.notNull(oldMember, "会员不存在");
|
if (!oldMember) throw new BadRequestException("会员不存在");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(param.getMobile())) {
|
if (!!param.getMobile()) {
|
||||||
registerService.checkMobileCode(param.getMobile(), param.getMobileKey(), param.getMobileCode());
|
registerService.checkMobileCode(param.getMobile(), param.getMobileKey(), param.getMobileCode());
|
||||||
} else if (ObjectUtil.isNotEmpty(param.getMobileCode())) {
|
} else if (!!param.getMobileCode()) {
|
||||||
try {
|
try {
|
||||||
const phoneInfo: WxMaPhoneNumberInfo = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getPhoneNoInfo(param.getMobileCode());
|
const phoneInfo: WxMaPhoneNumberInfo = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getPhoneNoInfo(param.getMobileCode());
|
||||||
param.setMobile(phoneInfo.getPurePhoneNumber());
|
param.setMobile(phoneInfo.getPurePhoneNumber());
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new BadRequestException("手机号不存在");
|
throw new BadRequestException("手机号不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
const mobileExist: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("member_id").eq("mobile", param.getMobile()).eq("site_id", RequestUtils.siteId()));
|
const mobileExist: Member = this.memberRepository.findOne(new ().select("member_id").eq("mobile", param.getMobile()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(mobileExist)) throw new BadRequestException("当前手机号已绑定账号");
|
if (ObjectUtil.isNotNull(mobileExist)) throw new BadRequestException("当前手机号已绑定账号");
|
||||||
|
|
||||||
const newMember: Member = new Member();
|
const newMember: Member = new Member();
|
||||||
newMember.setMemberId(param.memberId());
|
newMember.setMemberId(param.memberId());
|
||||||
newMember.setMobile(param.getMobile());
|
newMember.setMobile(param.getMobile());
|
||||||
|
|
||||||
return this.memberMapper.updateById(newMember);
|
return this.this.memberRepository.save(newMember);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,7 +145,7 @@ export class MemberServiceImplService {
|
|||||||
const updateMember: Member = new Member();
|
const updateMember: Member = new Member();
|
||||||
updateMember.setMemberId(param.memberId());
|
updateMember.setMemberId(param.memberId());
|
||||||
updateMember.setLastVisitTime(DateUtils.currTime());
|
updateMember.setLastVisitTime(DateUtils.currTime());
|
||||||
this.memberMapper.updateById(updateMember);
|
this.this.memberRepository.save(updateMember);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ export class MemberSignServiceImplService {
|
|||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
queryWrapper.orderByDesc(Arrays.asList("create_time"));
|
queryWrapper.orderByDesc(Arrays.asList("create_time"));
|
||||||
|
|
||||||
const iPage: IPage<MemberSign> = this.memberSignMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.this.memberSignRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const dataList: MemberSignRecordVo[] = CollectUtils.convert(iPage.getRecords(), MemberSignRecordVo.class);
|
MemberSignRecordVo[] dataList = CollectUtils.convert(records, MemberSignRecordVo.class);
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(dataList);
|
return PageResult.build(page, limit, total).setData(dataList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,11 +36,11 @@ export class MemberSignServiceImplService {
|
|||||||
queryWrapper.eq("sign_id", param.getSignId());
|
queryWrapper.eq("sign_id", param.getSignId());
|
||||||
queryWrapper.eq("site_id", param.siteId());
|
queryWrapper.eq("site_id", param.siteId());
|
||||||
queryWrapper.eq("member_id", param.memberId());
|
queryWrapper.eq("member_id", param.memberId());
|
||||||
const memberSignList: MemberSign[] = this.memberSignMapper.selectList(queryWrapper);
|
MemberSign[] memberSignList = this.this.memberSignRepository.find(queryWrapper);
|
||||||
const memberSignDetailsVo: MemberSignDetailsVo = null;
|
const memberSignDetailsVo: MemberSignDetailsVo = null;
|
||||||
if (memberSignList != null && memberSignList.size() > 0) {
|
if (memberSignList != null && memberSignList.length > 0) {
|
||||||
memberSignDetailsVo = new MemberSignDetailsVo();
|
memberSignDetailsVo = new MemberSignDetailsVo();
|
||||||
BeanUtils.copyProperties(memberSignList.get(0), memberSignDetailsVo);
|
Object.assign(memberSignDetailsVo, memberSignList.get(0));
|
||||||
}
|
}
|
||||||
return memberSignDetailsVo;
|
return memberSignDetailsVo;
|
||||||
}
|
}
|
||||||
@@ -50,13 +50,13 @@ export class MemberSignServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async signOperate(...args: any[]): Promise<any> {
|
async signOperate(...args: any[]): Promise<any> {
|
||||||
const signConfig: Record<string, any> = coreConfigService.getConfigValue(RequestUtils.siteId(), "SIGN_CONFIG");
|
const signConfig: Record<string, any> = coreConfigService.getConfigValue(RequestUtils.siteId(), "SIGN_CONFIG");
|
||||||
const config: MemberSignConfigVo = JSONUtil.toBean(signConfig, MemberSignConfigVo.class);
|
const config: MemberSignConfigVo = Object.assign(new MemberSignConfigVo(), signConfig);
|
||||||
|
|
||||||
if (!config.getIsUse()) throw new Error("签到未开启");
|
if (!config.getIsUse()) throw new RuntimeException("签到未开启");
|
||||||
|
|
||||||
// 获取今天的签到
|
// 获取今天的签到
|
||||||
const todayMemberSign: MemberSign = this.queryMemberSign(param.siteId(), param.memberId(), DateUtils.getFormatTodayString());
|
const todayMemberSign: MemberSign = this.queryMemberSign(param.siteId(), param.memberId(), DateUtils.getFormatTodayString());
|
||||||
if (todayMemberSign != null) throw new Error("今日已签到");
|
if (todayMemberSign != null) throw new RuntimeException("今日已签到");
|
||||||
|
|
||||||
const vo: MemberSignOperateVo = new MemberSignOperateVo();
|
const vo: MemberSignOperateVo = new MemberSignOperateVo();
|
||||||
vo.setTitle("签到成功");
|
vo.setTitle("签到成功");
|
||||||
@@ -72,7 +72,7 @@ export class MemberSignServiceImplService {
|
|||||||
if (days > config.getSignPeriod()) {
|
if (days > config.getSignPeriod()) {
|
||||||
days = 1;
|
days = 1;
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(config.getContinueAward())) {
|
if (!!config.getContinueAward()) {
|
||||||
const continueSigns: JSONArray = config.getContinueAward();
|
const continueSigns: JSONArray = config.getContinueAward();
|
||||||
CollUtil.sort(continueSigns, Comparator.comparing(o => ((Record<string, any>) o).getInt("continue_sign")).reversed());
|
CollUtil.sort(continueSigns, Comparator.comparing(o => ((Record<string, any>) o).getInt("continue_sign")).reversed());
|
||||||
// 获取最大的连签天数
|
// 获取最大的连签天数
|
||||||
@@ -88,15 +88,15 @@ export class MemberSignServiceImplService {
|
|||||||
model.setSiteId(param.siteId());
|
model.setSiteId(param.siteId());
|
||||||
model.setMemberId(param.memberId());
|
model.setMemberId(param.memberId());
|
||||||
model.setIsSign(1);
|
model.setIsSign(1);
|
||||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
model.setCreateTime(Math.floor(Date.now() / 1000));
|
||||||
model.setDays(days);
|
model.setDays(days);
|
||||||
model.setDayAward(config.getDayAward().toString());
|
model.setDayAward(config.getDayAward().toString());
|
||||||
model.setContinueAward("");
|
model.setContinueAward("");
|
||||||
if (days === 1) model.setStartTime(System.currentTimeMillis() / 1000);
|
if (days === 1) model.setStartTime(Math.floor(Date.now() / 1000));
|
||||||
memberSignMapper.insert(model);
|
this.memberSignRepository.save(model);
|
||||||
|
|
||||||
// 发放日签奖励
|
// 发放日签奖励
|
||||||
const dayAwardVar: Record<string, any> = {};
|
const dayAwardVar: Record<String, Object> = new HashRecord<>();
|
||||||
dayAwardVar.put("from_type", "day_sign_award");
|
dayAwardVar.put("from_type", "day_sign_award");
|
||||||
dayAwardVar.put("memo", "日签奖励");
|
dayAwardVar.put("memo", "日签奖励");
|
||||||
coreMemberService.memberGiftGrant(param.siteId(), param.memberId(), config.getDayAward(), dayAwardVar);
|
coreMemberService.memberGiftGrant(param.siteId(), param.memberId(), config.getDayAward(), dayAwardVar);
|
||||||
@@ -107,11 +107,11 @@ export class MemberSignServiceImplService {
|
|||||||
const continueAward: Record<string, any> = null;
|
const continueAward: Record<string, any> = null;
|
||||||
for (const i of number = 0; i < config.getContinueAward().size(); i++) {
|
for (const i of number = 0; i < config.getContinueAward().size(); i++) {
|
||||||
const item: Record<string, any> = config.getContinueAward().getJSONObject(i);
|
const item: Record<string, any> = config.getContinueAward().getJSONObject(i);
|
||||||
if (item.getInt("continue_sign") === days) {
|
if (item.getInt("continue_sign").equals(days)) {
|
||||||
// 是否限制领取
|
// 是否限制领取
|
||||||
if (item.getInt("receive_limit") === 2) {
|
if (item.getInt("receive_limit").equals(2)) {
|
||||||
// 周期开始时间
|
// 周期开始时间
|
||||||
const periodStartTime: number = memberSignMapper.selectOne(new QueryWrapper<MemberSign>()
|
const periodStartTime: number = this.memberSignRepository.findOne(new ()
|
||||||
.select("start_time")
|
.select("start_time")
|
||||||
.eq("member_id", param.memberId())
|
.eq("member_id", param.memberId())
|
||||||
.eq("site_id", param.siteId())
|
.eq("site_id", param.siteId())
|
||||||
@@ -123,7 +123,7 @@ export class MemberSignServiceImplService {
|
|||||||
// 周期结束时间
|
// 周期结束时间
|
||||||
const periodEndTime: number = periodStartTime + (config.getSignPeriod() * 86400);
|
const periodEndTime: number = periodStartTime + (config.getSignPeriod() * 86400);
|
||||||
// 领取次数
|
// 领取次数
|
||||||
const receiveNum: number = memberSignMapper.selectCount(new QueryWrapper<MemberSign>()
|
const receiveNum: number = this.memberSignRepository.count(new ()
|
||||||
.eq("member_id", param.memberId())
|
.eq("member_id", param.memberId())
|
||||||
.eq("site_id", param.siteId())
|
.eq("site_id", param.siteId())
|
||||||
.between("create_time", periodStartTime, periodEndTime)
|
.between("create_time", periodStartTime, periodEndTime)
|
||||||
@@ -146,13 +146,13 @@ export class MemberSignServiceImplService {
|
|||||||
continueAward.remove("receive_limit");
|
continueAward.remove("receive_limit");
|
||||||
continueAward.remove("receive_num");
|
continueAward.remove("receive_num");
|
||||||
|
|
||||||
const continueAwardVar: Record<string, any> = {};
|
const continueAwardVar: Record<String, Object> = {};
|
||||||
continueAwardVar.put("from_type", "continue_sign_award");
|
continueAwardVar.put("from_type", "continue_sign_award");
|
||||||
continueAwardVar.put("memo", "连签奖励");
|
continueAwardVar.put("memo", "连签奖励");
|
||||||
coreMemberService.memberGiftGrant(param.siteId(), param.memberId(), continueAward, continueAwardVar);
|
coreMemberService.memberGiftGrant(param.siteId(), param.memberId(), continueAward, continueAwardVar);
|
||||||
|
|
||||||
model.setContinueAward(continueAward.toString());
|
model.setContinueAward(continueAward.toString());
|
||||||
memberSignMapper.updateById(model);
|
this.memberSignRepository.save(model);
|
||||||
|
|
||||||
vo.setInfo("连签" + days.toString() + "天恭喜您获得以下奖励");
|
vo.setInfo("连签" + days.toString() + "天恭喜您获得以下奖励");
|
||||||
vo.setAwards(coreMemberService.getGiftContent(param.siteId(), continueAward, "member_sign"));
|
vo.setAwards(coreMemberService.getGiftContent(param.siteId(), continueAward, "member_sign"));
|
||||||
@@ -167,21 +167,21 @@ export class MemberSignServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async signMonthRecord(...args: any[]): Promise<any> {
|
async signMonthRecord(...args: any[]): Promise<any> {
|
||||||
const vo: MemberSignMonthRecordVo = new MemberSignMonthRecordVo();
|
const vo: MemberSignMonthRecordVo = new MemberSignMonthRecordVo();
|
||||||
const days: number[] = [];
|
number[] days = [];
|
||||||
const period: MemberSignMonthRecordVo.Period[] = [];
|
MemberSignMonthRecordVo.Period[] period = [];
|
||||||
|
|
||||||
const date: Date = DateUtil.parse(param.getYear() + "-" + param.getMonth() + "-1");
|
const date: Date = DateUtil.parse(param.getYear() + "-" + param.getMonth() + "-1");
|
||||||
|
|
||||||
const signRecord: MemberSign[] = this.memberSignMapper.selectList(new QueryWrapper<MemberSign>()
|
MemberSign[] signRecord = this.this.memberSignRepository.find(new ()
|
||||||
.eq("member_id", param.memberId())
|
.eq("member_id", param.memberId())
|
||||||
.between("create_time",
|
.between("create_time",
|
||||||
DateUtil.beginOfMonth(date).getTime() / 1000,
|
DateUtil.beginOfMonth(date).getTime() / 1000,
|
||||||
DateUtil.endOfMonth(date).getTime() / 1000)
|
DateUtil.endOfMonth(date).getTime() / 1000)
|
||||||
.orderByAsc("create_time"));
|
.orderByAsc("create_time"));
|
||||||
|
|
||||||
if (signRecord.size() > 0) {
|
if (signRecord.length > 0) {
|
||||||
for (const item of signRecord) {
|
for (const item of signRecord) {
|
||||||
days.add(number.parseInt(DateUtil.format(new Date(item.getCreateTime() * 1000), "dd")));
|
days.push(number.parseInt(DateUtil.format(new Date(item.getCreateTime() * 1000), "dd")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ export class MemberSignServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async signConfig(...args: any[]): Promise<any> {
|
async signConfig(...args: any[]): Promise<any> {
|
||||||
const config: Record<string, any> = coreConfigService.getConfigValue(RequestUtils.siteId(), "SIGN_CONFIG");
|
const config: Record<string, any> = coreConfigService.getConfigValue(RequestUtils.siteId(), "SIGN_CONFIG");
|
||||||
const signConfig: MemberSignConfigVo = JSONUtil.toBean(config, MemberSignConfigVo.class);
|
const signConfig: MemberSignConfigVo = Object.assign(new MemberSignConfigVo(), config);
|
||||||
|
|
||||||
if (!signConfig.getDayAward().isEmpty()) {
|
if (!signConfig.getDayAward().isEmpty()) {
|
||||||
signConfig.setDayAward(coreMemberService.getGiftContent(RequestUtils.siteId(), signConfig.getDayAward(), "member_sign"));
|
signConfig.setDayAward(coreMemberService.getGiftContent(RequestUtils.siteId(), signConfig.getDayAward(), "member_sign"));
|
||||||
@@ -221,23 +221,23 @@ export class MemberSignServiceImplService {
|
|||||||
|
|
||||||
const award: Record<string, any> = coreMemberService.getGiftContent(RequestUtils.siteId(), item, "member_sign_continue");
|
const award: Record<string, any> = coreMemberService.getGiftContent(RequestUtils.siteId(), item, "member_sign_continue");
|
||||||
|
|
||||||
const content: string[] = [];
|
String[] content = [];
|
||||||
const icon: string = "";
|
const icon: string = "";
|
||||||
|
|
||||||
for (const key of award.keySet()) {
|
for (const key of award.keySet()) {
|
||||||
if (award.getJSONObject(key).get("content") != null) {
|
if (award.getJSONObject(key).get("content") != null) {
|
||||||
content.add(award.getByPath(key + ".content.text", String.class));
|
content.push(award.getByPath(key + ".content.text", String.class));
|
||||||
icon = award.getByPath(key + ".content.icon", String.class);
|
icon = award.getByPath(key + ".content.icon", String.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const gift: Record<string, any> = new Record<string, any>();
|
const gift: Record<string, any> = new Record<string, any>();
|
||||||
if (content.size() > 0) {
|
if (content.length > 0) {
|
||||||
gift.set("text", String.join("+", content));
|
gift.set("text", String.join("+", content));
|
||||||
gift.set("icon", content.size() > 1 ? "static/resource/images/member/sign/pack01.png" : icon);
|
gift.set("icon", content.length > 1 ? "static/resource/images/member/sign/pack01.png" : icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
awardItem.set("gift", new Record<string, any>().set("total", gift));
|
awardItem.set("gift", new Record<string, any>().set("total", gift));
|
||||||
continueAward.add(awardItem);
|
continueAward.push(awardItem);
|
||||||
}
|
}
|
||||||
signConfig.setContinueAward(continueAward);
|
signConfig.setContinueAward(continueAward);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ export class PayServiceImplService {
|
|||||||
param.setBuyerId(RequestUtils.memberId());
|
param.setBuyerId(RequestUtils.memberId());
|
||||||
|
|
||||||
if (RequestUtils.channel() === ChannelEnum.WECHAT.getCode() && param.getOpenid().isEmpty()) {
|
if (RequestUtils.channel() === ChannelEnum.WECHAT.getCode() && param.getOpenid().isEmpty()) {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("wx_openid").eq("site_id", param.getSiteId()).eq("member_id", RequestUtils.memberId()));
|
const member: Member = this.memberRepository.findOne(new ().select("wx_openid").eq("site_id", param.getSiteId()).eq("member_id", RequestUtils.memberId()));
|
||||||
param.setOpenid(ObjectUtil.defaultIfNull(member.getWxOpenid(), ""));
|
param.setOpenid(ObjectUtil.defaultIfNull(member.getWxOpenid(), ""));
|
||||||
}
|
}
|
||||||
if (RequestUtils.channel() === ChannelEnum.WEAPP.getCode() && param.getOpenid().isEmpty()) {
|
if (RequestUtils.channel() === ChannelEnum.WEAPP.getCode() && param.getOpenid().isEmpty()) {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().select("weapp_openid").eq("site_id", param.getSiteId()).eq("member_id", RequestUtils.memberId()));
|
const member: Member = this.memberRepository.findOne(new ().select("weapp_openid").eq("site_id", param.getSiteId()).eq("member_id", RequestUtils.memberId()));
|
||||||
param.setOpenid(ObjectUtil.defaultIfNull(member.getWeappOpenid(), ""));
|
param.setOpenid(ObjectUtil.defaultIfNull(member.getWeappOpenid(), ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,16 +47,16 @@ export class PayServiceImplService {
|
|||||||
* friendspayInfo
|
* friendspayInfo
|
||||||
*/
|
*/
|
||||||
async friendspayInfo(...args: any[]): Promise<any> {
|
async friendspayInfo(...args: any[]): Promise<any> {
|
||||||
const payQueryWrapper: QueryWrapper<Pay> = new QueryWrapper<>();
|
payQueryWrapper = {};
|
||||||
payQueryWrapper.eq("trade_type", tradeType)
|
payQueryWrapper.eq("trade_type", tradeType)
|
||||||
.eq("trade_id", tradeId);
|
.eq("trade_id", tradeId);
|
||||||
const fromPayInfos: Pay[] = payMapper.selectList(payQueryWrapper);
|
Pay[] fromPayInfos = this.payRepository.find(payQueryWrapper);
|
||||||
if (ObjectUtil.isEmpty(fromPayInfos) || fromPayInfos.stream().noneMatch(o => o.getSiteId() === RequestUtils.siteId())) {
|
if (!fromPayInfos || fromPayInfos.noneMatch(o => o.getSiteId() === RequestUtils.siteId())) {
|
||||||
throw new Error("支付单据不存在");
|
throw new RuntimeException("支付单据不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
const payInfo: GetInfoByTradeVo = getInfoByTrade(tradeType, tradeId, "friendspay");
|
const payInfo: GetInfoByTradeVo = getInfoByTrade(tradeType, tradeId, "friendspay");
|
||||||
if (ObjectUtil.isEmpty(payInfo)) {
|
if (!payInfo) {
|
||||||
return new FriendspayInfoVo();
|
return new FriendspayInfoVo();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,20 +74,20 @@ export class PayServiceImplService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PayTradeInfoDefiner.const event: PayTradeInfoEvent = new PayTradeInfoDefiner.PayTradeInfoEvent(tradeType, tradeId);
|
PayTradeInfoDefiner.const event: PayTradeInfoEvent = new PayTradeInfoDefiner.PayTradeInfoEvent(tradeType, tradeId);
|
||||||
const trades: PayTradeInfoDefiner.PayTradeInfoEventResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
PayTradeInfoDefiner.PayTradeInfoEventResult[] trades = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
||||||
if (ObjectUtil.isNotEmpty(trades)) {
|
if (!!trades) {
|
||||||
vo.setTradeInfo(trades.get(0).getJsonObject());
|
vo.setTradeInfo(trades.get(0).getJsonObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
vo.setSelf(payInfo.getMainId() === RequestUtils.memberId());
|
vo.setSelf(payInfo.getMainId() === RequestUtils.memberId());
|
||||||
|
|
||||||
const posterQueryWrapper: QueryWrapper<SysPoster> = new QueryWrapper<>();
|
posterQueryWrapper = {};
|
||||||
posterQueryWrapper.eq("site_id", RequestUtils.siteId())
|
posterQueryWrapper.eq("site_id", RequestUtils.siteId())
|
||||||
.eq("type", "friendspay")
|
.eq("type", "friendspay")
|
||||||
.eq("status", 1)
|
.eq("status", 1)
|
||||||
.eq("is_default", 1);
|
.eq("is_default", 1);
|
||||||
const sysPoster: SysPoster = sysPosterMapper.selectOne(posterQueryWrapper);
|
const sysPoster: SysPoster = this.sysPosterRepository.findOne(posterQueryWrapper);
|
||||||
if (ObjectUtil.isNotEmpty(sysPoster)) {
|
if (!!sysPoster) {
|
||||||
vo.setPosterId(sysPoster.getId());
|
vo.setPosterId(sysPoster.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class SysAreaServiceImplService {
|
|||||||
// 缓存分组名称
|
// 缓存分组名称
|
||||||
const group: string = SysArea.class.getSimpleName();
|
const group: string = SysArea.class.getSimpleName();
|
||||||
// 缓存Key值计算参数
|
// 缓存Key值计算参数
|
||||||
const paramList: any[] = Arrays.asList(id);
|
Object[] paramList = Arrays.asList(id);
|
||||||
// 自动缓存
|
// 自动缓存
|
||||||
return cached.rememberObject(useCache, group, paramList, (uniqueKey) => {
|
return cached.rememberObject(useCache, group, paramList, (uniqueKey) => {
|
||||||
const sysArea: SysArea = sysAreaMapper.selectById(id);
|
const sysArea: SysArea = sysAreaMapper.selectById(id);
|
||||||
@@ -32,17 +32,17 @@ export class SysAreaServiceImplService {
|
|||||||
// 缓存分组名称
|
// 缓存分组名称
|
||||||
const group: string = SysAreaListVo.class.getSimpleName();
|
const group: string = SysAreaListVo.class.getSimpleName();
|
||||||
// 缓存Key值计算参数
|
// 缓存Key值计算参数
|
||||||
const paramList: any[] = Arrays.asList(pid);
|
Object[] paramList = Arrays.asList(pid);
|
||||||
// 自动缓存
|
// 自动缓存
|
||||||
const outterSysAreaList: SysAreaListVo[] = cached.remember(useCache, group, paramList, uniqueKey => {
|
SysAreaListVo[] outterSysAreaList = cached.remember(useCache, group, paramList, uniqueKey => {
|
||||||
List<SysAreaListVo> sysAreaVoList = null;
|
SysAreaListVo[] sysAreaVoList = null;
|
||||||
try {
|
try {
|
||||||
const queryWrapper: QueryWrapper<SysArea> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.select("id,name");
|
queryWrapper.select("id,name");
|
||||||
queryWrapper.eq("pid", pid);
|
queryWrapper.eq("pid", pid);
|
||||||
const sysAreaList: SysArea[] = sysAreaMapper.selectList(queryWrapper);
|
SysArea[] sysAreaList = this.sysAreaRepository.find(queryWrapper);
|
||||||
sysAreaVoList = CollectUtils.convert(sysAreaList, SysAreaListVo.class);
|
sysAreaVoList = CollectUtils.convert(sysAreaList, SysAreaListVo.class);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("查询区域错误:", e.message);
|
log.error("查询区域错误:", e.message);
|
||||||
throw new BaseException("查询区域错误");
|
throw new BaseException("查询区域错误");
|
||||||
}
|
}
|
||||||
@@ -57,28 +57,28 @@ export class SysAreaServiceImplService {
|
|||||||
async getAreaTree(...args: any[]): Promise<any> {
|
async getAreaTree(...args: any[]): Promise<any> {
|
||||||
if (level == 1) {
|
if (level == 1) {
|
||||||
// 参数级别:1,返回1级
|
// 参数级别:1,返回1级
|
||||||
const queryWrapper: QueryWrapper<SysArea> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.select("id, pid, name");
|
queryWrapper.select("id, pid, name");
|
||||||
queryWrapper.eq("level", level);
|
queryWrapper.eq("level", level);
|
||||||
const sysAreaList: SysArea[] = sysAreaMapper.selectList(queryWrapper);
|
SysArea[] sysAreaList = this.sysAreaRepository.find(queryWrapper);
|
||||||
return CollectUtils.convert(sysAreaList, SysAreaLevelVo.class);
|
return CollectUtils.convert(sysAreaList, SysAreaLevelVo.class);
|
||||||
} else if (level == 2) {
|
} else if (level == 2) {
|
||||||
// 参数级别:2,返回1级包含2级
|
// 参数级别:2,返回1级包含2级
|
||||||
const queryWrapper: QueryWrapper<SysArea> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.select("id, pid, name, level");
|
queryWrapper.select("id, pid, name, level");
|
||||||
queryWrapper.in("level", 1, 2);
|
queryWrapper.in("level", 1, 2);
|
||||||
const sysAreaList: SysArea[] = sysAreaMapper.selectList(queryWrapper);
|
SysArea[] sysAreaList = this.sysAreaRepository.find(queryWrapper);
|
||||||
const sysAreaLevelVoList: SysAreaLevelVo[] = CollectUtils.convert(sysAreaList, SysAreaLevelVo.class);
|
SysAreaLevelVo[] sysAreaLevelVoList = CollectUtils.convert(sysAreaList, SysAreaLevelVo.class);
|
||||||
const sysAreaMap: Record<string, any> = ObjectGroupUtils.groupList(sysAreaLevelVoList, "pid");
|
Record<number, SysAreaLevelVo[]> sysAreaMap = ObjectGroupUtils.groupList(sysAreaLevelVoList, "pid");
|
||||||
return assembleAreaTree(sysAreaLevelVoList, sysAreaMap, 1, 2);
|
return assembleAreaTree(sysAreaLevelVoList, sysAreaMap, 1, 2);
|
||||||
} else if (level == 3) {
|
} else if (level == 3) {
|
||||||
// 参数级别:3,返回1级包含2级,2级包含3级
|
// 参数级别:3,返回1级包含2级,2级包含3级
|
||||||
const queryWrapper: QueryWrapper<SysArea> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
queryWrapper.select("id, pid, name, level");
|
queryWrapper.select("id, pid, name, level");
|
||||||
queryWrapper.in("level", 1, 2, 3);
|
queryWrapper.in("level", 1, 2, 3);
|
||||||
const sysAreaList: SysArea[] = sysAreaMapper.selectList(queryWrapper);
|
SysArea[] sysAreaList = this.sysAreaRepository.find(queryWrapper);
|
||||||
const sysAreaLevelVoList: SysAreaLevelVo[] = CollectUtils.convert(sysAreaList, SysAreaLevelVo.class);
|
SysAreaLevelVo[] sysAreaLevelVoList = CollectUtils.convert(sysAreaList, SysAreaLevelVo.class);
|
||||||
const sysAreaMap: Record<string, any> = ObjectGroupUtils.groupList(sysAreaLevelVoList, "pid");
|
Record<number, SysAreaLevelVo[]> sysAreaMap = ObjectGroupUtils.groupList(sysAreaLevelVoList, "pid");
|
||||||
return assembleAreaTree(sysAreaLevelVoList, sysAreaMap, 1, 3);
|
return assembleAreaTree(sysAreaLevelVoList, sysAreaMap, 1, 3);
|
||||||
}
|
}
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SysVerifyServiceImplService {
|
export class SysVerifyServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -15,8 +14,8 @@ export class SysVerifyServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async getVerifyCode(...args: any[]): Promise<any> {
|
async getVerifyCode(...args: any[]): Promise<any> {
|
||||||
// 生成核销码(对应业务调用)
|
// 生成核销码(对应业务调用)
|
||||||
const verifyCodeList: string[] = this.createVerifyCode(param.siteId(), param.memberId(), param.getType(), param.getData());
|
String[] verifyCodeList = this.createVerifyCode(param.siteId(), param.memberId(), param.getType(), param.getData());
|
||||||
const sysVerifyGetCodeVoList: SysVerifyGetCodeVo[] = [];
|
SysVerifyGetCodeVo[] sysVerifyGetCodeVoList = [];
|
||||||
for (const verifyCode of verifyCodeList) {
|
for (const verifyCode of verifyCodeList) {
|
||||||
const sysVerifyGetCodeVo: SysVerifyGetCodeVo = new SysVerifyGetCodeVo();
|
const sysVerifyGetCodeVo: SysVerifyGetCodeVo = new SysVerifyGetCodeVo();
|
||||||
sysVerifyGetCodeVo.setCode(verifyCode);
|
sysVerifyGetCodeVo.setCode(verifyCode);
|
||||||
@@ -24,16 +23,16 @@ export class SysVerifyServiceImplService {
|
|||||||
if (param.getNeedBarcode() == 1){
|
if (param.getNeedBarcode() == 1){
|
||||||
const barcode: string = null;
|
const barcode: string = null;
|
||||||
try {
|
try {
|
||||||
const qrcodeDir: string = this.config.get('webRootDownResource') + "upload/temp/";
|
const qrcodeDir: string = this.appConfig.webRootDownResource + "upload/temp/";
|
||||||
const barcodePath: string = BarcodeUtils.generateBarcode(verifyCode, qrcodeDir);
|
const barcodePath: string = BarcodeUtils.generateBarcode(verifyCode, qrcodeDir);
|
||||||
barcode = ImageUtils.imageToBase64(barcodePath);
|
barcode = ImageUtils.imageToBase64(barcodePath);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
log.error("条形码生成失败:{}", e.message, e);
|
log.error("条形码生成失败:{}", e.message, e);
|
||||||
throw new BadRequestException("条形码生成失败");
|
throw new BadRequestException("条形码生成失败");
|
||||||
}
|
}
|
||||||
sysVerifyGetCodeVo.setBarcode(barcode);
|
sysVerifyGetCodeVo.setBarcode(barcode);
|
||||||
}
|
}
|
||||||
sysVerifyGetCodeVoList.add(sysVerifyGetCodeVo);
|
sysVerifyGetCodeVoList.push(sysVerifyGetCodeVo);
|
||||||
}
|
}
|
||||||
return sysVerifyGetCodeVoList;
|
return sysVerifyGetCodeVoList;
|
||||||
}
|
}
|
||||||
@@ -42,7 +41,7 @@ export class SysVerifyServiceImplService {
|
|||||||
* checkVerifier
|
* checkVerifier
|
||||||
*/
|
*/
|
||||||
async checkVerifier(...args: any[]): Promise<any> {
|
async checkVerifier(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: LambdaQueryWrapper<Verifier> = new LambdaQueryWrapper();
|
LambdaqueryWrapper = new LambdaQueryWrapper();
|
||||||
queryWrapper.eq(Verifier::getMemberId, RequestUtils.memberId());
|
queryWrapper.eq(Verifier::getMemberId, RequestUtils.memberId());
|
||||||
queryWrapper.eq(Verifier::getSiteId, RequestUtils.siteId());
|
queryWrapper.eq(Verifier::getSiteId, RequestUtils.siteId());
|
||||||
return verifierMapper.exists(queryWrapper);
|
return verifierMapper.exists(queryWrapper);
|
||||||
@@ -65,7 +64,7 @@ export class SysVerifyServiceImplService {
|
|||||||
if (StrUtil.isNotEmpty(param.getType())) {
|
if (StrUtil.isNotEmpty(param.getType())) {
|
||||||
queryWrapper.eq("type", param.getType());
|
queryWrapper.eq("type", param.getType());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(param.getCreateTime())) {
|
if (!!param.getCreateTime()) {
|
||||||
QueryMapperUtils.buildByTime(queryWrapper, "create_time", param.getCreateTime());
|
QueryMapperUtils.buildByTime(queryWrapper, "create_time", param.getCreateTime());
|
||||||
}
|
}
|
||||||
if (StrUtil.isNotEmpty(param.getRelateTag())) {
|
if (StrUtil.isNotEmpty(param.getRelateTag())) {
|
||||||
@@ -76,29 +75,29 @@ export class SysVerifyServiceImplService {
|
|||||||
}
|
}
|
||||||
queryWrapper.orderByDesc(Arrays.asList("create_time"));
|
queryWrapper.orderByDesc(Arrays.asList("create_time"));
|
||||||
|
|
||||||
const iPage: IPage<Verify> = this.verifyMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
iPage = this.this.verifyRepository.findAndCount({ /* pagination */ }, queryWrapper);
|
||||||
const dataList: SysVerifyRecordsVo[] = CollectUtils.convert(iPage.getRecords(), SysVerifyRecordsVo.class);
|
SysVerifyRecordsVo[] dataList = CollectUtils.convert(records, SysVerifyRecordsVo.class);
|
||||||
|
|
||||||
if (dataList.size() > 0) {
|
if (dataList.length > 0) {
|
||||||
// 以下代码块=====>用以填充SysVerifyRecordsVo类对象的:nickname, mobile, headimg属性
|
// 以下代码块=====>用以填充SysVerifyRecordsVo类对象的:nickname, mobile, headimg属性
|
||||||
// 根据集合ID主键索引查询到对象列表
|
// 根据集合ID主键索引查询到对象列表
|
||||||
const withQueryWrapper: QueryWrapper = new QueryWrapper();
|
const withQueryWrapper: QueryWrapper = new QueryWrapper();
|
||||||
withQueryWrapper.select("member_id, nickname, mobile, headimg");
|
withQueryWrapper.select("member_id, nickname, mobile, headimg");
|
||||||
const memberIdList: number[] = CollectBuildUtils.getKeyValueList(dataList, "verifierMemberId");
|
number[] memberIdList = CollectBuildUtils.getKeyValueList(dataList, "verifierMemberId");
|
||||||
withQueryWrapper.in("member_id", memberIdList);
|
withQueryWrapper.in("member_id", memberIdList);
|
||||||
const memberList: Member[] = memberMapper.selectList(withQueryWrapper);
|
Member[] memberList = this.memberRepository.find(withQueryWrapper);
|
||||||
// 先将数据分组,然后放入结果集
|
// 先将数据分组,然后放入结果集
|
||||||
const memberMap: Record<string, any> = ObjectGroupUtils.group(memberList, "memberId");
|
const memberMap: Record<number, Member> = ObjectGroupUtils.group(memberList, "memberId");
|
||||||
dataList.stream().forEach(bean => {
|
dataList.forEach(bean => {
|
||||||
const member: Member = memberMap.get(bean.getVerifierMemberId());
|
const member: Member = memberMap.get(bean.getVerifierMemberId());
|
||||||
if (member != null) {
|
if (member != null) {
|
||||||
const membervo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const membervo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(member, membervo);
|
Object.assign(membervo, member);
|
||||||
bean.setMember(membervo);
|
bean.setMember(membervo);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(dataList);
|
return PageResult.build(page, limit, total).setData(dataList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -107,62 +106,62 @@ export class SysVerifyServiceImplService {
|
|||||||
async records2(...args: any[]): Promise<any> {
|
async records2(...args: any[]): Promise<any> {
|
||||||
const page: number = pageParam.getPage();
|
const page: number = pageParam.getPage();
|
||||||
const limit: number = pageParam.getLimit();
|
const limit: number = pageParam.getLimit();
|
||||||
const mpjQueryWrapper: MPJQueryWrapper<Member> = new MPJQueryWrapper<>();
|
MPJmpjQueryWrapper = new MPJQueryWrapper<>();
|
||||||
mpjQueryWrapper.select("t.*");
|
mpjQueryWrapper.select("t.*");
|
||||||
mpjQueryWrapper.setAlias("t");
|
mpjQueryWrapper.setAlias("t");
|
||||||
mpjQueryWrapper.innerJoin("?_site_group nsg ON ns.group_id = nsg.group_id");
|
mpjQueryWrapper.innerJoin("?_site_group nsg ON ns.group_id = nsg.group_id");
|
||||||
mpjQueryWrapper.eq("site_id", param.siteId());
|
mpjQueryWrapper.eq("site_id", param.siteId());
|
||||||
mpjQueryWrapper.eq("verifier_member_id", param.memberId());
|
mpjQueryWrapper.eq("verifier_member_id", param.memberId());
|
||||||
const iPage: IPage<SysVerifyRecordsVo> = memberMapper.selectJoinPage(new Page<>(page, limit), SysVerifyRecordsVo.class, mpjQueryWrapper );
|
iPage = memberMapper.selectJoinPage({ /* pagination */ }, SysVerifyRecordsVo.class, mpjQueryWrapper );
|
||||||
return PageResult.build(page, limit, iPage.getTotal()).setData(iPage.getRecords());
|
return PageResult.build(page, limit, total).setData(records);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* detail
|
* detail
|
||||||
*/
|
*/
|
||||||
async detail(...args: any[]): Promise<any> {
|
async detail(...args: any[]): Promise<any> {
|
||||||
const verifyQueryWrapper: QueryWrapper<Verify> = new QueryWrapper();
|
verifyQueryWrapper = new QueryWrapper();
|
||||||
verifyQueryWrapper.eq("site_id", param.siteId());
|
verifyQueryWrapper.eq("site_id", param.siteId());
|
||||||
verifyQueryWrapper.eq("verifier_member_id", param.memberId());
|
verifyQueryWrapper.eq("verifier_member_id", param.memberId());
|
||||||
verifyQueryWrapper.eq("code", param.getCode());
|
verifyQueryWrapper.eq("code", param.getCode());
|
||||||
const verify: Verify = this.verifyMapper.selectOne(verifyQueryWrapper);
|
const verify: Verify = this.this.verifyRepository.findOne(verifyQueryWrapper);
|
||||||
const sysVerifyDetailVo: SysVerifyDetailVo = new SysVerifyDetailVo();
|
const sysVerifyDetailVo: SysVerifyDetailVo = new SysVerifyDetailVo();
|
||||||
if (verify != null) {
|
if (verify != null) {
|
||||||
BeanUtils.copyProperties(verify, sysVerifyDetailVo);
|
Object.assign(sysVerifyDetailVo, verify);
|
||||||
const memberQueryWrapper: QueryWrapper<Member> = new QueryWrapper();
|
memberQueryWrapper = new QueryWrapper();
|
||||||
memberQueryWrapper.select("member_id, nickname, mobile, headimg");
|
memberQueryWrapper.select("member_id, nickname, mobile, headimg");
|
||||||
memberQueryWrapper.eq("member_id", param.memberId());
|
memberQueryWrapper.eq("member_id", param.memberId());
|
||||||
const member: Member = this.memberMapper.selectOne(memberQueryWrapper);
|
const member: Member = this.this.memberRepository.findOne(memberQueryWrapper);
|
||||||
if (member != null) {
|
if (member != null) {
|
||||||
const membervo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
const membervo: MemberBriefInfoVo = new MemberBriefInfoVo();
|
||||||
BeanUtils.copyProperties(member, membervo);
|
Object.assign(membervo, member);
|
||||||
sysVerifyDetailVo.setMember(membervo);
|
sysVerifyDetailVo.setMember(membervo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理时间的问题 解析JSON字符串
|
//处理时间的问题 解析JSON字符串
|
||||||
const jsonObject: Record<string, any> = JSONUtil.parseObj(sysVerifyDetailVo.getValue().toString());
|
const jsonObject: Record<string, any> = JSON.parse(sysVerifyDetailVo.getValue().toString());
|
||||||
// 获取content下的diy数组
|
// 获取content下的diy数组
|
||||||
const diyArray: JSONArray = jsonObject.getJSONObject("content").getJSONArray("diy");
|
const diyArray: JSONArray = jsonObject.getJSONObject("content").getJSONArray("diy");
|
||||||
// 遍历diy数组
|
// 遍历diy数组
|
||||||
for (const i of number = 0; i < diyArray.size(); i++) {
|
for (const i of number = 0; i < diyArray.length; i++) {
|
||||||
const diyItem: Record<string, any> = diyArray.getJSONObject(i);
|
const diyItem: Record<string, any> = diyArray.getJSONObject(i);
|
||||||
const listArray: JSONArray = diyItem.getJSONArray("list");
|
const listArray: JSONArray = diyItem.getJSONArray("list");
|
||||||
|
|
||||||
// 遍历list数组
|
// 遍历list数组
|
||||||
for (const j of number = 0; j < listArray.size(); j++) {
|
for (const j of number = 0; j < listArray.length; j++) {
|
||||||
const listItem: Record<string, any> = listArray.getJSONObject(j);
|
const listItem: Record<string, any> = listArray.getJSONObject(j);
|
||||||
const title: string = listItem.getStr("title");
|
const title: string = listItem.getStr("title");
|
||||||
|
|
||||||
// 如果是支付时间,则转换格式
|
// 如果是支付时间,则转换格式
|
||||||
if ("支付时间" === title) {
|
if ("支付时间".equals(title)) {
|
||||||
const timestamp: number = listItem.getLong("value");
|
const timestamp: number = listItem.getLong("value");
|
||||||
const timeStr: string = DateUtils.timestampToString(timestamp);
|
const timeStr: string = DateUtils.timestampToString(timestamp);
|
||||||
listItem.put("value", timeStr);
|
listItem.put("value", timeStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sysVerifyDetailVo.setValue(JSONUtil.toJsonStr(jsonObject));
|
sysVerifyDetailVo.setValue(JSON.stringify(jsonObject));
|
||||||
|
|
||||||
return sysVerifyDetailVo;
|
return sysVerifyDetailVo;
|
||||||
}
|
}
|
||||||
@@ -172,22 +171,22 @@ export class SysVerifyServiceImplService {
|
|||||||
*/
|
*/
|
||||||
async verifyCode(...args: any[]): Promise<any> {
|
async verifyCode(...args: any[]): Promise<any> {
|
||||||
// 1、获取核销码数据
|
// 1、获取核销码数据
|
||||||
const verifyMap: Record<string, any> = this.getCodeData(param.getCode());
|
const verifyMap: Record<String, Object> = this.getCodeData(param.getCode());
|
||||||
// 检测站点数据
|
// 检测站点数据
|
||||||
if (verifyMap.get("site_id") == null || !verifyMap.get("site_id") === param.siteId()) {
|
if (verifyMap.get("site_id") == null || !verifyMap.get("site_id").equals(param.siteId())) {
|
||||||
// 核销码已过期
|
// 核销码已过期
|
||||||
throw new Error("当前核销码已核销或已失效");
|
throw new RuntimeException("当前核销码已核销或已失效");
|
||||||
}
|
}
|
||||||
// 检测核销员身份
|
// 检测核销员身份
|
||||||
const queryWrapper: LambdaQueryWrapper<Verifier> = new LambdaQueryWrapper();
|
LambdaqueryWrapper = new LambdaQueryWrapper();
|
||||||
queryWrapper.eq(Verifier::getMemberId, param.memberId());
|
queryWrapper.eq(Verifier::getMemberId, param.memberId());
|
||||||
queryWrapper.eq(Verifier::getSiteId, param.siteId());
|
queryWrapper.eq(Verifier::getSiteId, param.siteId());
|
||||||
const verifier: boolean = verifierMapper.exists(queryWrapper);
|
const verifier: boolean = verifierMapper.exists(queryWrapper);
|
||||||
if (!verifier) {
|
if (!verifier) {
|
||||||
throw new Error("核销员不存在");
|
throw new RuntimeException("核销员不存在");
|
||||||
}
|
}
|
||||||
// 核销操作
|
// 核销操作
|
||||||
const verifyDataMap: Record<string, any> = {};
|
const verifyDataMap: Record<String, Object> = {};
|
||||||
verifyDataMap.put("site_id", verifyMap.get("site_id"));
|
verifyDataMap.put("site_id", verifyMap.get("site_id"));
|
||||||
verifyDataMap.put("code", param.getCode());
|
verifyDataMap.put("code", param.getCode());
|
||||||
verifyDataMap.put("body", verifyMap.get("body"));
|
verifyDataMap.put("body", verifyMap.get("body"));
|
||||||
@@ -205,9 +204,9 @@ export class SysVerifyServiceImplService {
|
|||||||
|
|
||||||
// 添加核销记录
|
// 添加核销记录
|
||||||
const model: Verify = new Verify();
|
const model: Verify = new Verify();
|
||||||
BeanUtils.copyProperties(verifyEvent, model);
|
Object.assign(model, verifyEvent);
|
||||||
model.setData(JSONUtil.parseObj(verifyEvent.getData()).toString());
|
model.setData(JSON.parse(verifyEvent.getData()).toString());
|
||||||
verifyMapper.insert(model);
|
this.verifyRepository.save(model);
|
||||||
|
|
||||||
// 核销码失效
|
// 核销码失效
|
||||||
this.clearCode(param.getCode());
|
this.clearCode(param.getCode());
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ export class ServeServiceImplService {
|
|||||||
|
|
||||||
const inMessage: WxMaMessage = null;
|
const inMessage: WxMaMessage = null;
|
||||||
|
|
||||||
if ("raw" === encryptType) {
|
if ("raw".equals(encryptType)) {
|
||||||
// 明文传输的消息
|
// 明文传输的消息
|
||||||
inMessage = inMessage.fromXml(request.getInputStream());
|
inMessage = inMessage.fromXml(request.getInputStream());
|
||||||
} else if ("aes" === encryptType) {
|
} else if ("aes".equals(encryptType)) {
|
||||||
// 是aes加密的消息
|
// 是aes加密的消息
|
||||||
const msgSignature: string = request.getParameter("msg_signature");
|
const msgSignature: string = request.getParameter("msg_signature");
|
||||||
inMessage = WxMaMessage.fromEncryptedXml(request.getInputStream(), wxMaService.getWxMaConfig(), timestamp, nonce, msgSignature);
|
inMessage = WxMaMessage.fromEncryptedXml(request.getInputStream(), wxMaService.getWxMaConfig(), timestamp, nonce, msgSignature);
|
||||||
@@ -52,15 +52,15 @@ export class ServeServiceImplService {
|
|||||||
|
|
||||||
const outMessage: WxMaXmlOutMessage = this.message(inMessage);
|
const outMessage: WxMaXmlOutMessage = this.message(inMessage);
|
||||||
if (outMessage != null) {
|
if (outMessage != null) {
|
||||||
if ("raw" === encryptType) {
|
if ("raw".equals(encryptType)) {
|
||||||
response.getWriter().write(outMessage.toXml());
|
response.getWriter().write(outMessage.toXml());
|
||||||
} else if ("aes" === encryptType) {
|
} else if ("aes".equals(encryptType)) {
|
||||||
response.getWriter().write(outMessage.toEncryptedXml(wxMaService.getWxMaConfig()));
|
response.getWriter().write(outMessage.toEncryptedXml(wxMaService.getWxMaConfig()));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,13 +16,13 @@ export class WeappServiceImplService {
|
|||||||
try {
|
try {
|
||||||
const wxUser: WxMaJscode2SessionResult = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getSessionInfo(param.getCode());
|
const wxUser: WxMaJscode2SessionResult = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getSessionInfo(param.getCode());
|
||||||
|
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("weapp_openid", wxUser.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().eq("weapp_openid", wxUser.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(member)) {
|
if (ObjectUtil.isNotNull(member)) {
|
||||||
const vo: LoginVo = loginService.login(member);
|
const vo: LoginVo = loginService.login(member);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(wxUser.getUnionid())) {
|
if (!!wxUser.getUnionid()) {
|
||||||
const unionidMember: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wx_unionid", wxUser.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
const unionidMember: Member = this.memberRepository.findOne(new ().eq("wx_unionid", wxUser.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(unionidMember)) {
|
if (ObjectUtil.isNotNull(unionidMember)) {
|
||||||
const vo: LoginVo = loginService.login(unionidMember);
|
const vo: LoginVo = loginService.login(unionidMember);
|
||||||
return vo;
|
return vo;
|
||||||
@@ -47,15 +47,15 @@ export class WeappServiceImplService {
|
|||||||
// 开启自动注册会员
|
// 开启自动注册会员
|
||||||
if (config.getIsAuthRegister() == 1) {
|
if (config.getIsAuthRegister() == 1) {
|
||||||
if (config.getIsBindMobile() == 1 && config.getIsForceAccessUserInfo() == 1) {
|
if (config.getIsBindMobile() == 1 && config.getIsForceAccessUserInfo() == 1) {
|
||||||
if (ObjectUtil.isNotEmpty(param.getMobile()) && ObjectUtil.isNotEmpty(param.getHeadimg()) && ObjectUtil.isNotEmpty(param.getNickname())) {
|
if (!!param.getMobile() && !!param.getHeadimg() && !!param.getNickname()) {
|
||||||
return this.register(registerParam);
|
return this.register(registerParam);
|
||||||
}
|
}
|
||||||
} else if (config.getIsForceAccessUserInfo() == 1) {
|
} else if (config.getIsForceAccessUserInfo() == 1) {
|
||||||
if (ObjectUtil.isNotEmpty(param.getHeadimg()) && ObjectUtil.isNotEmpty(param.getNickname())) {
|
if (!!param.getHeadimg() && !!param.getNickname()) {
|
||||||
return this.register(registerParam);
|
return this.register(registerParam);
|
||||||
}
|
}
|
||||||
} else if (config.getIsBindMobile() == 1) {
|
} else if (config.getIsBindMobile() == 1) {
|
||||||
if (ObjectUtil.isNotEmpty(param.getMobile()) || ObjectUtil.isNotEmpty(param.getMobileCode())) {
|
if (!!param.getMobile() || !!param.getMobileCode()) {
|
||||||
return this.register(registerParam);
|
return this.register(registerParam);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -64,14 +64,14 @@ export class WeappServiceImplService {
|
|||||||
} else {
|
} else {
|
||||||
// 关闭自动注册,但是开启了强制绑定手机号,必须获取手机号才能进行注册
|
// 关闭自动注册,但是开启了强制绑定手机号,必须获取手机号才能进行注册
|
||||||
if (config.getIsBindMobile() == 1 || config.getIsMobile() == 1) {
|
if (config.getIsBindMobile() == 1 || config.getIsMobile() == 1) {
|
||||||
if (ObjectUtil.isNotEmpty(param.getMobile()) || ObjectUtil.isNotEmpty(param.getMobileCode())) {
|
if (!!param.getMobile() || !!param.getMobileCode()) {
|
||||||
return this.register(registerParam);
|
return this.register(registerParam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return loginVo;
|
return loginVo;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,11 +82,11 @@ export class WeappServiceImplService {
|
|||||||
async register(...args: any[]): Promise<any> {
|
async register(...args: any[]): Promise<any> {
|
||||||
if (param.getOpenid().isEmpty()) throw new BadRequestException("openid不能为空");
|
if (param.getOpenid().isEmpty()) throw new BadRequestException("openid不能为空");
|
||||||
try {
|
try {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("weapp_openid", param.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().eq("weapp_openid", param.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
||||||
|
|
||||||
if (!param.getUnionid().isEmpty()) {
|
if (!param.getUnionid().isEmpty()) {
|
||||||
const unionidMember: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wx_unionid", param.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
const unionidMember: Member = this.memberRepository.findOne(new ().eq("wx_unionid", param.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ export class WeappServiceImplService {
|
|||||||
registerMember.setNickname(param.getNickname());
|
registerMember.setNickname(param.getNickname());
|
||||||
registerMember.setHeadimg(param.getHeadimg());
|
registerMember.setHeadimg(param.getHeadimg());
|
||||||
return registerService.register(registerMember);
|
return registerService.register(registerMember);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,14 +122,14 @@ export class WeappServiceImplService {
|
|||||||
try {
|
try {
|
||||||
const wxUser: WxMaJscode2SessionResult = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getSessionInfo(param.getCode());
|
const wxUser: WxMaJscode2SessionResult = WechatUtils.miniapp(RequestUtils.siteId()).getUserService().getSessionInfo(param.getCode());
|
||||||
|
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wx_openid", wxUser.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().eq("wx_openid", wxUser.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
||||||
|
|
||||||
const updateMember: Member = new Member();
|
const updateMember: Member = new Member();
|
||||||
updateMember.setMemberId(RequestUtils.memberId());
|
updateMember.setMemberId(RequestUtils.memberId());
|
||||||
updateMember.setWxOpenid(wxUser.getOpenid());
|
updateMember.setWxOpenid(wxUser.getOpenid());
|
||||||
this.memberMapper.updateById(updateMember);
|
this.this.memberRepository.save(updateMember);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,13 +138,13 @@ export class WeappServiceImplService {
|
|||||||
* subscribeMessage
|
* subscribeMessage
|
||||||
*/
|
*/
|
||||||
async subscribeMessage(...args: any[]): Promise<any> {
|
async subscribeMessage(...args: any[]): Promise<any> {
|
||||||
return sysNoticeMapper.selectList(new QueryWrapper<SysNotice>()
|
return this.sysNoticeRepository.find(new ()
|
||||||
.select("weapp_template_id")
|
.select("weapp_template_id")
|
||||||
.in("`key`", keys.split(","))
|
.in("`key`", keys.split(","))
|
||||||
.eq("is_weapp", 1)
|
.eq("is_weapp", 1)
|
||||||
.eq("site_id", RequestUtils.siteId())
|
.eq("site_id", RequestUtils.siteId())
|
||||||
.ne("weapp_template_id", "")
|
.ne("weapp_template_id", "")
|
||||||
).stream().map(item => item.getWeappTemplateId()).collect(Collectors.toList());
|
).map(item => item.getWeappTemplateId());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -158,13 +158,13 @@ export class WeappServiceImplService {
|
|||||||
* getMsgJumpPath
|
* getMsgJumpPath
|
||||||
*/
|
*/
|
||||||
async getMsgJumpPath(...args: any[]): Promise<any> {
|
async getMsgJumpPath(...args: any[]): Promise<any> {
|
||||||
const pay: Pay = payMapper.selectOne(new QueryWrapper<Pay>().eq("out_trade_no", outTradeNo));
|
const pay: Pay = this.payRepository.findOne(new ().eq("out_trade_no", outTradeNo));
|
||||||
if (pay == null) return null;
|
if (pay == null) return null;
|
||||||
|
|
||||||
WapOrderDetailPathDefiner.const event: WapOrderDetailPathEvent = new WapOrderDetailPathDefiner.WapOrderDetailPathEvent(pay);
|
WapOrderDetailPathDefiner.const event: WapOrderDetailPathEvent = new WapOrderDetailPathDefiner.WapOrderDetailPathEvent(pay);
|
||||||
const eventData: WapOrderDetailPathDefiner.WapOrderDetailPathResult[] = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
WapOrderDetailPathDefiner.WapOrderDetailPathResult[] eventData = EventAndSubscribeOfPublisher.publishAndCallback(event);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(eventData)) {
|
if (!!eventData) {
|
||||||
return eventData.get(0);
|
return eventData.get(0);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ export class ServeServiceImplService {
|
|||||||
|
|
||||||
const inMessage: WxMpXmlMessage = null;
|
const inMessage: WxMpXmlMessage = null;
|
||||||
|
|
||||||
if ("raw" === encryptType) {
|
if ("raw".equals(encryptType)) {
|
||||||
// 明文传输的消息
|
// 明文传输的消息
|
||||||
inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
|
inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
|
||||||
} else if ("aes" === encryptType) {
|
} else if ("aes".equals(encryptType)) {
|
||||||
// 是aes加密的消息
|
// 是aes加密的消息
|
||||||
const msgSignature: string = request.getParameter("msg_signature");
|
const msgSignature: string = request.getParameter("msg_signature");
|
||||||
inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), wxMpService.getWxMpConfigStorage(), timestamp, nonce, msgSignature);
|
inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), wxMpService.getWxMpConfigStorage(), timestamp, nonce, msgSignature);
|
||||||
@@ -53,15 +53,15 @@ export class ServeServiceImplService {
|
|||||||
|
|
||||||
const outMessage: WxMpXmlOutMessage = this.message(inMessage);
|
const outMessage: WxMpXmlOutMessage = this.message(inMessage);
|
||||||
if (outMessage != null) {
|
if (outMessage != null) {
|
||||||
if ("raw" === encryptType) {
|
if ("raw".equals(encryptType)) {
|
||||||
response.getWriter().write(outMessage.toXml());
|
response.getWriter().write(outMessage.toXml());
|
||||||
} else if ("aes" === encryptType) {
|
} else if ("aes".equals(encryptType)) {
|
||||||
response.getWriter().write(outMessage.toEncryptedXml(wxMpService.getWxMpConfigStorage()));
|
response.getWriter().write(outMessage.toEncryptedXml(wxMpService.getWxMpConfigStorage()));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export class WechatServiceImplService {
|
|||||||
ObjectUtil.defaultIfNull(wxUser.getHeadImgUrl(), ""),
|
ObjectUtil.defaultIfNull(wxUser.getHeadImgUrl(), ""),
|
||||||
param.getPid()
|
param.getPid()
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ export class WechatServiceImplService {
|
|||||||
* wechatLogin
|
* wechatLogin
|
||||||
*/
|
*/
|
||||||
async wechatLogin(...args: any[]): Promise<any> {
|
async wechatLogin(...args: any[]): Promise<any> {
|
||||||
const data: Record<string, any> = JSONUtil.parseObj(param.getData());
|
const data: Record<string, any> = JSON.parse(param.getData());
|
||||||
|
|
||||||
return this.login(
|
return this.login(
|
||||||
data.getStr("openid", ""),
|
data.getStr("openid", ""),
|
||||||
@@ -67,11 +67,11 @@ export class WechatServiceImplService {
|
|||||||
async register(...args: any[]): Promise<any> {
|
async register(...args: any[]): Promise<any> {
|
||||||
if (param.getOpenid().isEmpty()) throw new BadRequestException("openid不能为空");
|
if (param.getOpenid().isEmpty()) throw new BadRequestException("openid不能为空");
|
||||||
try {
|
try {
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wx_openid", param.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().eq("wx_openid", param.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
||||||
|
|
||||||
if (!param.getUnionid().isEmpty()) {
|
if (!param.getUnionid().isEmpty()) {
|
||||||
const unionidMember: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wx_unionid", param.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
const unionidMember: Member = this.memberRepository.findOne(new ().eq("wx_unionid", param.getUnionid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(unionidMember)) throw new BadRequestException("账号已存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ export class WechatServiceImplService {
|
|||||||
registerMember.setWxUnionid(param.getUnionid());
|
registerMember.setWxUnionid(param.getUnionid());
|
||||||
registerMember.setPid(param.getPid());
|
registerMember.setPid(param.getPid());
|
||||||
return registerService.register(registerMember);
|
return registerService.register(registerMember);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,8 +104,8 @@ export class WechatServiceImplService {
|
|||||||
member.setMemberId(RequestUtils.memberId());
|
member.setMemberId(RequestUtils.memberId());
|
||||||
member.setNickname(ObjectUtil.defaultIfNull(wxUser.getNickname(), ""));
|
member.setNickname(ObjectUtil.defaultIfNull(wxUser.getNickname(), ""));
|
||||||
member.setHeadimg(ObjectUtil.defaultIfNull(wxUser.getHeadImgUrl(), ""));
|
member.setHeadimg(ObjectUtil.defaultIfNull(wxUser.getHeadImgUrl(), ""));
|
||||||
this.memberMapper.updateById(member);
|
this.this.memberRepository.save(member);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,7 +130,7 @@ export class WechatServiceImplService {
|
|||||||
vo.setAvatar(ObjectUtil.defaultIfNull(userInfo.getHeadImgUrl(), ""));
|
vo.setAvatar(ObjectUtil.defaultIfNull(userInfo.getHeadImgUrl(), ""));
|
||||||
}
|
}
|
||||||
return vo;
|
return vo;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -149,7 +149,7 @@ export class WechatServiceImplService {
|
|||||||
vo.setUrl(url);
|
vo.setUrl(url);
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,14 +162,14 @@ export class WechatServiceImplService {
|
|||||||
const wxOAuth2AccessToken: WxOAuth2AccessToken = WechatUtils.mp(RequestUtils.siteId()).getOAuth2Service().getAccessToken(param.getCode());
|
const wxOAuth2AccessToken: WxOAuth2AccessToken = WechatUtils.mp(RequestUtils.siteId()).getOAuth2Service().getAccessToken(param.getCode());
|
||||||
const wxUser: WxOAuth2UserInfo = WechatUtils.mp(RequestUtils.siteId()).getOAuth2Service().getUserInfo(wxOAuth2AccessToken, null);
|
const wxUser: WxOAuth2UserInfo = WechatUtils.mp(RequestUtils.siteId()).getOAuth2Service().getUserInfo(wxOAuth2AccessToken, null);
|
||||||
|
|
||||||
const member: Member = memberMapper.selectOne(new QueryWrapper<Member>().eq("wx_openid", wxUser.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
const member: Member = this.memberRepository.findOne(new ().eq("wx_openid", wxUser.getOpenid()).eq("site_id", RequestUtils.siteId()));
|
||||||
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
if (ObjectUtil.isNotNull(member)) throw new BadRequestException("账号已存在");
|
||||||
|
|
||||||
const updateMember: Member = new Member();
|
const updateMember: Member = new Member();
|
||||||
updateMember.setMemberId(RequestUtils.memberId());
|
updateMember.setMemberId(RequestUtils.memberId());
|
||||||
updateMember.setWxOpenid(wxUser.getOpenid());
|
updateMember.setWxOpenid(wxUser.getOpenid());
|
||||||
this.memberMapper.updateById(updateMember);
|
this.this.memberRepository.save(updateMember);
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class CoreAddonServiceImplService {
|
export class CoreAddonServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -16,7 +15,7 @@ export class CoreAddonServiceImplService {
|
|||||||
* getInfoByKey
|
* getInfoByKey
|
||||||
*/
|
*/
|
||||||
async getInfoByKey(...args: any[]): Promise<any> {
|
async getInfoByKey(...args: any[]): Promise<any> {
|
||||||
return addonMapper.selectOne(new MPJQueryWrapper<Addon>().select("*").eq("`key`", key));
|
return this.addonRepository.findOne(new MPJ().select("*").eq("`key`", key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -26,17 +25,17 @@ export class CoreAddonServiceImplService {
|
|||||||
const localAddonCount: number = 0;
|
const localAddonCount: number = 0;
|
||||||
try {
|
try {
|
||||||
// 获取本地所有的插件
|
// 获取本地所有的插件
|
||||||
const localAddons: string[] = Files.list(Paths.get(this.config.get('webRootDownAddon')))
|
File[] localAddons = Files.list(path.join(this.appConfig.webRootDownAddon))
|
||||||
.map(path => path.toFile())
|
.map(path => path.toFile())
|
||||||
.filter(file => fs.lstatSync(file).isDirectory())
|
.filter(file => fs.lstatSync(file).isDirectory())
|
||||||
.collect(Collectors.toList());
|
;
|
||||||
|
|
||||||
for (const file of localAddons) {
|
for (const file of localAddons) {
|
||||||
if (file, "info.json".exists()) {
|
if (fs.existsSync(path.join(file, "info.json"))) {
|
||||||
localAddonCount++;
|
localAddonCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
return localAddonCount;
|
return localAddonCount;
|
||||||
}
|
}
|
||||||
@@ -45,8 +44,8 @@ export class CoreAddonServiceImplService {
|
|||||||
* getAddonCountByCondition
|
* getAddonCountByCondition
|
||||||
*/
|
*/
|
||||||
async getAddonCountByCondition(...args: any[]): Promise<any> {
|
async getAddonCountByCondition(...args: any[]): Promise<any> {
|
||||||
const queryWrapper: QueryWrapper<Addon> = new QueryWrapper<>();
|
queryWrapper = {};
|
||||||
const addonCount: number = addonMapper.selectCount(queryWrapper);
|
const addonCount: number = this.addonRepository.count(queryWrapper);
|
||||||
return addonCount.intValue();
|
return addonCount.intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,14 +53,14 @@ export class CoreAddonServiceImplService {
|
|||||||
* set
|
* set
|
||||||
*/
|
*/
|
||||||
async set(...args: any[]): Promise<any> {
|
async set(...args: any[]): Promise<any> {
|
||||||
const model: Addon = addonMapper.selectOne(new QueryWrapper<Addon>().eq("`key`", addon.getKey()));
|
const model: Addon = this.addonRepository.findOne(new ().eq("`key`", addon.getKey()));
|
||||||
|
|
||||||
if (model != null) {
|
if (model != null) {
|
||||||
addon.setUpdateTime(System.currentTimeMillis() / 1000);
|
addon.setUpdateTime(Math.floor(Date.now() / 1000));
|
||||||
addonMapper.update(addon, new QueryWrapper<Addon>().eq("`key`", addon.getKey()));
|
addonMapper.update(addon, new ().eq("`key`", addon.getKey()));
|
||||||
} else {
|
} else {
|
||||||
addon.setInstallTime(System.currentTimeMillis() / 1000);
|
addon.setInstallTime(Math.floor(Date.now() / 1000));
|
||||||
addonMapper.insert(addon);
|
this.addonRepository.save(addon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class CoreAliappConfigServiceImplService {
|
|||||||
const vo: AliappConfigVo = new AliappConfigVo();
|
const vo: AliappConfigVo = new AliappConfigVo();
|
||||||
if(ObjectUtil.isNotNull(coreSysConfigVo.getValueJson()))
|
if(ObjectUtil.isNotNull(coreSysConfigVo.getValueJson()))
|
||||||
{
|
{
|
||||||
vo = JSONUtil.toBean(coreSysConfigVo.getValueJson(), AliappConfigVo.class);
|
vo = Object.assign(new AliappConfigVo(), coreSysConfigVo.getValueJson());
|
||||||
}
|
}
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ export class CoreAliappConfigServiceImplService {
|
|||||||
* setAliappConfig
|
* setAliappConfig
|
||||||
*/
|
*/
|
||||||
async setAliappConfig(...args: any[]): Promise<any> {
|
async setAliappConfig(...args: any[]): Promise<any> {
|
||||||
const json: Record<string, any> = JSONUtil.parseObj(aliappConfigParam);
|
const json: Record<string, any> = JSON.parse(aliappConfigParam);
|
||||||
coreConfigService.setConfig(siteId, "aliapp", json);
|
coreConfigService.setConfig(siteId, "aliapp", json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export class CoreCaptchaImgServiceImplService {
|
|||||||
const responseModel: ResponseModel = captchaService.get(captchaVO);
|
const responseModel: ResponseModel = captchaService.get(captchaVO);
|
||||||
const coreCaptchaInfoVo: CoreCaptchaInfoVo = new CoreCaptchaInfoVo();
|
const coreCaptchaInfoVo: CoreCaptchaInfoVo = new CoreCaptchaInfoVo();
|
||||||
if(responseModel.isSuccess()){
|
if(responseModel.isSuccess()){
|
||||||
const jsonObject: Record<string, any> = JSONUtil.parseObj(responseModel.getRepData());
|
const jsonObject: Record<string, any> = JSON.parse(responseModel.getRepData());
|
||||||
coreCaptchaInfoVo.setToken(jsonObject.getStr("token"));
|
coreCaptchaInfoVo.setToken(jsonObject.getStr("token"));
|
||||||
coreCaptchaInfoVo.setJigsawImageBase64(jsonObject.getStr("jigsawImageBase64"));
|
coreCaptchaInfoVo.setJigsawImageBase64(jsonObject.getStr("jigsawImageBase64"));
|
||||||
coreCaptchaInfoVo.setOriginalImageBase64(jsonObject.getStr("originalImageBase64"));
|
coreCaptchaInfoVo.setOriginalImageBase64(jsonObject.getStr("originalImageBase64"));
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export class DefaultCaptchaServiceImplService {
|
|||||||
if (captchaVO == null) {
|
if (captchaVO == null) {
|
||||||
return RepCodeEnum.NULL_ERROR.parseError("captchaVO");
|
return RepCodeEnum.NULL_ERROR.parseError("captchaVO");
|
||||||
} else {
|
} else {
|
||||||
return (!captchaVO.getCaptchaType( || captchaVO.getCaptchaType(.trim() === '')) ? RepCodeEnum.NULL_ERROR.parseError("类型") : this.getService(captchaVO.getCaptchaType()).get(captchaVO);
|
return StringUtils.isEmpty(captchaVO.getCaptchaType()) ? RepCodeEnum.NULL_ERROR.parseError("类型") : this.getService(captchaVO.getCaptchaType()).get(captchaVO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,10 +55,10 @@ export class DefaultCaptchaServiceImplService {
|
|||||||
async check(...args: any[]): Promise<any> {
|
async check(...args: any[]): Promise<any> {
|
||||||
if (captchaVO == null) {
|
if (captchaVO == null) {
|
||||||
return RepCodeEnum.NULL_ERROR.parseError("captchaVO");
|
return RepCodeEnum.NULL_ERROR.parseError("captchaVO");
|
||||||
} else if ((!captchaVO.getCaptchaType( || captchaVO.getCaptchaType(.trim() === ''))) {
|
} else if (StringUtils.isEmpty(captchaVO.getCaptchaType())) {
|
||||||
return RepCodeEnum.NULL_ERROR.parseError("类型");
|
return RepCodeEnum.NULL_ERROR.parseError("类型");
|
||||||
} else {
|
} else {
|
||||||
return (!captchaVO.getToken( || captchaVO.getToken(.trim() === '')) ? RepCodeEnum.NULL_ERROR.parseError("token") : this.getService(captchaVO.getCaptchaType()).check(captchaVO);
|
return StringUtils.isEmpty(captchaVO.getToken()) ? RepCodeEnum.NULL_ERROR.parseError("token") : this.getService(captchaVO.getCaptchaType()).check(captchaVO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ export class DefaultCaptchaServiceImplService {
|
|||||||
async verification(...args: any[]): Promise<any> {
|
async verification(...args: any[]): Promise<any> {
|
||||||
if (captchaVO == null) {
|
if (captchaVO == null) {
|
||||||
return RepCodeEnum.NULL_ERROR.parseError("captchaVO");
|
return RepCodeEnum.NULL_ERROR.parseError("captchaVO");
|
||||||
} else if ((!captchaVO.getCaptchaVerification( || captchaVO.getCaptchaVerification(.trim() === ''))) {
|
} else if (StringUtils.isEmpty(captchaVO.getCaptchaVerification())) {
|
||||||
return RepCodeEnum.NULL_ERROR.parseError("二次校验参数");
|
return RepCodeEnum.NULL_ERROR.parseError("二次校验参数");
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
@@ -77,7 +77,7 @@ export class DefaultCaptchaServiceImplService {
|
|||||||
return ResponseModel.errorMsg(RepCodeEnum.API_CAPTCHA_INVALID);
|
return ResponseModel.errorMsg(RepCodeEnum.API_CAPTCHA_INVALID);
|
||||||
}
|
}
|
||||||
CaptchaServiceFactory.getCache(cacheType).delete(codeKey);
|
CaptchaServiceFactory.getCache(cacheType).delete(codeKey);
|
||||||
} catch (var3) {
|
} catch (Exception var3) {
|
||||||
this.logger.error("验证码坐标解析失败", var3);
|
this.logger.error("验证码坐标解析失败", var3);
|
||||||
return ResponseModel.errorMsg(var3.message);
|
return ResponseModel.errorMsg(var3.message);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import { Injectable, BadRequestException } from '@nestjs/common';
|
import { Injectable, BadRequestException } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { QueueService, EventBus, Result, ConfigService } from '@wwjBoot';
|
import { QueueService, EventBus, Result } from '@wwjBoot';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class CoreAppCloudServiceImplService {
|
export class CoreAppCloudServiceImplService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly eventBus: EventBus,
|
private readonly eventBus: EventBus,
|
||||||
private readonly queueService: QueueService,
|
private readonly queueService: QueueService,
|
||||||
) {}
|
) {}
|
||||||
@@ -17,14 +16,14 @@ export class CoreAppCloudServiceImplService {
|
|||||||
async appCloudBuid(...args: any[]): Promise<any> {
|
async appCloudBuid(...args: any[]): Promise<any> {
|
||||||
const appConfig: AppConfigVo = coreAppService.getConfig(param.getSiteId());
|
const appConfig: AppConfigVo = coreAppService.getConfig(param.getSiteId());
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(appConfig.getAppName())) throw new BadRequestException("请先配置应用名称");
|
if (!appConfig.getAppName()) throw new BadRequestException("请先配置应用名称");
|
||||||
if (ObjectUtil.isEmpty(appConfig.getUniAppId())) throw new BadRequestException("请先配置应用ID");
|
if (!appConfig.getUniAppId()) throw new BadRequestException("请先配置应用ID");
|
||||||
if (ObjectUtil.isEmpty(appConfig.getAndroidAppKey())) throw new BadRequestException("请先配置应用密钥");
|
if (!appConfig.getAndroidAppKey()) throw new BadRequestException("请先配置应用密钥");
|
||||||
if (ObjectUtil.isEmpty(appConfig.getApplicationId())) throw new BadRequestException("请先配置应用包名");
|
if (!appConfig.getApplicationId()) throw new BadRequestException("请先配置应用包名");
|
||||||
|
|
||||||
const taskKey: string = String.valueOf(System.currentTimeMillis() / 1000);
|
const taskKey: string = String(Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
const tempDir: string = this.config.get('webRootDownRuntime') + "app_build/" + taskKey + "/";
|
const tempDir: string = this.appConfig.webRootDownRuntime + "app_build/" + taskKey + "/";
|
||||||
const packageDir: string = tempDir + "package/";
|
const packageDir: string = tempDir + "package/";
|
||||||
FileTools.createDirs(packageDir);
|
FileTools.createDirs(packageDir);
|
||||||
|
|
||||||
@@ -59,14 +58,14 @@ export class CoreAppCloudServiceImplService {
|
|||||||
|
|
||||||
// 拷贝证书文件
|
// 拷贝证书文件
|
||||||
if (param.getCert().getType() === "private"){
|
if (param.getCert().getType() === "private"){
|
||||||
const certFile: string = this.config.get('webRootDownResource', param.getCert().getFile());
|
const certFile: string = this.appConfig.webRootDownResource, param.getCert(.getFile());
|
||||||
if (!fs.existsSync(certFile)) throw new BadRequestException("证书文件不存在");
|
if (!fs.existsSync(certFile)) throw new BadRequestException("证书文件不存在");
|
||||||
|
|
||||||
fs.copyFileSync(certFile, packageDir, "cert.jks");
|
fs.copyFileSync(certFile, packageDir, "cert.jks");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 拷贝icon文件
|
// 拷贝icon文件
|
||||||
const iconFile: string = this.config.get('webRootDownResource', param.getBuild().getIcon());
|
const iconFile: string = this.appConfig.webRootDownResource, param.getBuild(.getIcon());
|
||||||
if (!fs.existsSync(iconFile)) throw new BadRequestException("icon文件不存在");
|
if (!fs.existsSync(iconFile)) throw new BadRequestException("icon文件不存在");
|
||||||
fs.copyFileSync(iconFile, packageDir, "drawable.zip");
|
fs.copyFileSync(iconFile, packageDir, "drawable.zip");
|
||||||
|
|
||||||
@@ -75,11 +74,11 @@ export class CoreAppCloudServiceImplService {
|
|||||||
|
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const actionQuery: Record<string, any> = {};
|
const actionQuery: Record<String, Object> = new HashRecord<>();
|
||||||
actionQuery.put("data[product_key]", instance.getProductKey());
|
actionQuery.put("data[product_key]", instance.getProductKey());
|
||||||
const actionToken: Record<string, any> = niucloudService.getActionToken("appbuild", actionQuery);
|
const actionToken: Record<string, any> = niucloudService.getActionToken("appbuild", actionQuery);
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<string, any> = new HashRecord<>();
|
||||||
query.put("authorize_code", instance.getCode());
|
query.put("authorize_code", instance.getCode());
|
||||||
query.put("timestamp", taskKey);
|
query.put("timestamp", taskKey);
|
||||||
query.put("token", actionToken == null ? "" : actionToken.getStr("token"));
|
query.put("token", actionToken == null ? "" : actionToken.getStr("token"));
|
||||||
@@ -90,12 +89,12 @@ export class CoreAppCloudServiceImplService {
|
|||||||
})
|
})
|
||||||
.method(Method.POST).execute();
|
.method(Method.POST).execute();
|
||||||
|
|
||||||
const res: Record<string, any> = JSONUtil.parseObj(response.body());
|
const res: Record<string, any> = JSON.parse(response.body());
|
||||||
|
|
||||||
if (!res.getInt("code", 0) === 1) throw new BadRequestException(res.getStr("msg"));
|
if (!res.getInt("code", 0).equals(1)) throw new BadRequestException(res.getStr("msg"));
|
||||||
|
|
||||||
return taskKey;
|
return taskKey;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -106,33 +105,33 @@ export class CoreAppCloudServiceImplService {
|
|||||||
async getAppCompileLog(...args: any[]): Promise<any> {
|
async getAppCompileLog(...args: any[]): Promise<any> {
|
||||||
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
const instance: NiucloudUtils = NiucloudUtils.getInstance();
|
||||||
|
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = new HashRecord<>();
|
||||||
query.put("authorize_code", instance.getCode());
|
query.put("authorize_code", instance.getCode());
|
||||||
query.put("timestamp", key);
|
query.put("timestamp", key);
|
||||||
|
|
||||||
const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/get_appbuild_logs").query(query).method(Method.GET).execute();
|
const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/get_appbuild_logs").query(query).method(Method.GET).execute();
|
||||||
try {
|
try {
|
||||||
const vo: AppCompileLogVo = new AppCompileLogVo();
|
const vo: AppCompileLogVo = new AppCompileLogVo();
|
||||||
const log: Record<string, any> = JSONUtil.parseObj(response.body());
|
const log: Record<string, any> = JSON.parse(response.body());
|
||||||
vo.setBuildLog(log);
|
vo.setBuildLog(log);
|
||||||
|
|
||||||
if (log != null) {
|
if (log != null) {
|
||||||
const data: JSONArray = ObjectUtil.defaultIfNull(log.getByPath("data.0", JSONArray.class), new JSONArray());
|
const data: JSONArray = ObjectUtil.defaultIfNull(log.getByPath("data.0", JSONArray.class), new JSONArray());
|
||||||
if (data.size() > 0) {
|
if (data.length > 0) {
|
||||||
const last: Record<string, any> = data.getJSONObject(data.size() - 1);
|
const last: Record<string, any> = data.getJSONObject(data.length - 1);
|
||||||
if (last.getInt("code", -1) === 0) {
|
if (last.getInt("code", -1).equals(0)) {
|
||||||
vo.setStatus("fail");
|
vo.setStatus("fail");
|
||||||
vo.setFailReason(last.getStr("msg", ""));
|
vo.setFailReason(last.getStr("msg", ""));
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
if (last.getInt("percent", 0) === 100) {
|
if (last.getInt("percent", 0).equals(100)) {
|
||||||
buildSuccess(key, vo);
|
buildSuccess(key, vo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -141,7 +140,7 @@ export class CoreAppCloudServiceImplService {
|
|||||||
* generateSignCert
|
* generateSignCert
|
||||||
*/
|
*/
|
||||||
async generateSignCert(...args: any[]): Promise<any> {
|
async generateSignCert(...args: any[]): Promise<any> {
|
||||||
const query: Record<string, any> = {};
|
const query: Record<String, Object> = {};
|
||||||
query.put("key_alias", param.getKeyAlias());
|
query.put("key_alias", param.getKeyAlias());
|
||||||
query.put("key_password", param.getKeyPassword());
|
query.put("key_password", param.getKeyPassword());
|
||||||
query.put("store_password", param.getStorePassword());
|
query.put("store_password", param.getStorePassword());
|
||||||
@@ -150,14 +149,14 @@ export class CoreAppCloudServiceImplService {
|
|||||||
|
|
||||||
const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/getcert").query(query).method(Method.GET).execute();
|
const response: HttpResponse = new NiucloudUtils.Cloud().build("cloud/getcert").query(query).method(Method.GET).execute();
|
||||||
|
|
||||||
if (response.header("Content-Type") === "application/json") {
|
if (response.header("Content-Type").equals("application/json")) {
|
||||||
const content: Record<string, any> = JSONUtil.parseObj(response.body());
|
const content: Record<string, any> = JSON.parse(response.body());
|
||||||
if (content.getInt("code", -1) == 0) {
|
if (content.getInt("code", -1) == 0) {
|
||||||
throw new BadRequestException(ObjectUtil.defaultIfBlank(content.getStr("msg", ""), "获取证书失败"));
|
throw new BadRequestException(ObjectUtil.defaultIfBlank(content.getStr("msg", ""), "获取证书失败"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const tempDir: string = this.config.get('webRootDownResource') + "upload/download/cert/";
|
const tempDir: string = this.appConfig.webRootDownResource + "upload/download/cert/";
|
||||||
FileTools.createDirs(tempDir);
|
FileTools.createDirs(tempDir);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -165,8 +164,8 @@ export class CoreAppCloudServiceImplService {
|
|||||||
const fos: FileOutputStream = new FileOutputStream(file, true);
|
const fos: FileOutputStream = new FileOutputStream(file, true);
|
||||||
fos.write(response.bodyBytes());
|
fos.write(response.bodyBytes());
|
||||||
return "upload/download/cert/" + param.getKeyAlias() + ".zip";
|
return "upload/download/cert/" + param.getKeyAlias() + ".zip";
|
||||||
} catch (e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
console.error(e);
|
||||||
throw new BadRequestException(e.message);
|
throw new BadRequestException(e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,13 +18,13 @@ export class CoreAppServiceImplService {
|
|||||||
if (config == null || config.getValueJson() == null) {
|
if (config == null || config.getValueJson() == null) {
|
||||||
return new AppConfigVo();
|
return new AppConfigVo();
|
||||||
}
|
}
|
||||||
return JSONUtil.toBean(config.getValueJson(), AppConfigVo.class);
|
return Object.assign(new AppConfigVo(), config.getValueJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* setConfig
|
* setConfig
|
||||||
*/
|
*/
|
||||||
async setConfig(...args: any[]): Promise<any> {
|
async setConfig(...args: any[]): Promise<any> {
|
||||||
coreConfigService.setConfig(siteId, ConfigKeyEnum.path.basename(APP), JSONUtil.parseObj(param));
|
coreConfigService.setConfig(siteId, ConfigKeyEnum.path.basename(APP), JSON.parse(param));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user