From 50e840bb613a7e1caca909e8b5ff1f187bb0fca9 Mon Sep 17 00:00:00 2001 From: yqy Date: Sat, 13 Aug 2022 15:21:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=96=E9=9F=B3=E5=88=97=E8=A1=A8=E4=B8=8A?= =?UTF-8?q?=E5=8F=B7=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baiye/core/base/MybatisBaseEntity.java | 50 +++++ .../com/baiye/core/constant/AddGroup.java | 4 + .../core/constant/TiktokRequestConstants.java | 24 +++ .../baiye/core/constant/TiktokResponse.java | 25 +++ .../com/baiye/core/constant/UpdateGroup.java | 4 + .../main/resources/config/application-dev.yml | 6 + .../dy-tool-member/dy-tool-member-api/pom.xml | 10 + .../com/baiye/TiktokMemberApiApplication.java | 17 ++ .../controller/TiktokAccountController.java | 28 +++ .../controller/TiktokEquipmentController.java | 39 ++++ .../controller/TiktokOrganizeController.java | 69 +++++++ .../main/resources/config/application-dev.yml | 64 ++++++ .../resources/config/application-prod.yml | 0 .../src/main/resources/config/application.yml | 43 ++++ .../dy-tool-member-service/pom.xml | 78 +++++++- .../baiye/config/thread/ThreadPoolConfig.java | 53 +++++ .../java/com/baiye/dao/OrganizeMapper.java | 18 ++ .../com/baiye/dao/TiktokAccountMapper.java | 10 + .../com/baiye/dao/TiktokEquipmentMapper.java | 21 ++ .../src/main/java/com/baiye/dto/LoginDto.java | 25 +++ .../main/java/com/baiye/dto/OrganizeDto.java | 50 +++++ .../main/java/com/baiye/dto/ReqEquipment.java | 11 ++ .../java/com/baiye/dto/ReqEquipmentSon.java | 15 ++ .../java/com/baiye/entity/OrganizeEntity.java | 55 ++++++ .../com/baiye/entity/TiktokAccountEntity.java | 66 +++++++ .../baiye/entity/TiktokEquipmentEntity.java | 95 +++++++++ .../com/baiye/gengeator/CodeGenerator.java | 186 ++++++++++++++++++ .../baiye/properties/TiktokProperties.java | 18 ++ .../com/baiye/service/OrganizeService.java | 28 +++ .../baiye/service/TiktokAccountService.java | 7 + .../baiye/service/TiktokEquipmentService.java | 29 +++ .../com/baiye/service/TiktokUserService.java | 26 +++ .../service/impl/OrganizeServiceImpl.java | 77 ++++++++ .../impl/TiktokAccountServiceImpl.java | 15 ++ .../impl/TiktokEquipmentServiceImpl.java | 186 ++++++++++++++++++ .../service/impl/TiktokUserServiceImpl.java | 103 ++++++++++ .../java/com/baiye/vo/TiktokAccountVo.java | 54 +++++ .../java/com/baiye/vo/TiktokEquipmentVo.java | 31 +++ .../resources/mapper/OrganizeEntityMapper.xml | 17 ++ .../resources/mapper/TiktokAccountMapper.xml | 4 + .../mapper/TiktokEquipmentMapper.xml | 61 ++++++ 41 files changed, 1721 insertions(+), 1 deletion(-) create mode 100644 cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/MybatisBaseEntity.java create mode 100644 cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/AddGroup.java create mode 100644 cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokRequestConstants.java create mode 100644 cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokResponse.java create mode 100644 cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/UpdateGroup.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokAccountController.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokOrganizeController.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application-dev.yml create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application-prod.yml create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application.yml create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/OrganizeMapper.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokAccountMapper.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/LoginDto.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/OrganizeDto.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipment.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipmentSon.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/OrganizeEntity.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokAccountEntity.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokEquipmentEntity.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/gengeator/CodeGenerator.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/properties/TiktokProperties.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/OrganizeService.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokAccountService.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokUserService.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/OrganizeServiceImpl.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokAccountServiceImpl.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokUserServiceImpl.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokAccountVo.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokEquipmentVo.java create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/OrganizeEntityMapper.xml create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokAccountMapper.xml create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokEquipmentMapper.xml diff --git a/cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/MybatisBaseEntity.java b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/MybatisBaseEntity.java new file mode 100644 index 0000000..30a7539 --- /dev/null +++ b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/MybatisBaseEntity.java @@ -0,0 +1,50 @@ +package com.baiye.core.base; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 基础公共字段,具体哪些字段抽出来公用,需要根据业务来决定 + * + * @author yqy + */ +@Data +public class MybatisBaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 创建人 + */ + @TableField(value = "create_by", fill = FieldFill.INSERT) + private String createBy; + + /** + * 修改时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 修改人 + */ + @TableField(value = "update_by", fill = FieldFill.UPDATE) + private String updateBy; + +} diff --git a/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/AddGroup.java b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/AddGroup.java new file mode 100644 index 0000000..01e4143 --- /dev/null +++ b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/AddGroup.java @@ -0,0 +1,4 @@ +package com.baiye.core.constant; + +public interface AddGroup { +} diff --git a/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokRequestConstants.java b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokRequestConstants.java new file mode 100644 index 0000000..1a1264b --- /dev/null +++ b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokRequestConstants.java @@ -0,0 +1,24 @@ +package com.baiye.core.constant; + +/** + * 抖音请求路径常量类 + * @author yqy + * @date 2022/08/09 + */ +public interface TiktokRequestConstants { + + /** + * 获取所有设备信息 + */ + String DY_OBTAIN_INFO = "/api/device/batchQueryDevice"; + + /** + * 账号密码登录 + */ + String DY_ACCOUNT_LOGIN = "/api/device/passwordLogin"; + + /** + * 手机号登录 + */ + String DY_PHONE_LOGIN = "/api/device/smsCodeLogin"; +} diff --git a/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokResponse.java b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokResponse.java new file mode 100644 index 0000000..1e3cd4f --- /dev/null +++ b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/TiktokResponse.java @@ -0,0 +1,25 @@ +package com.baiye.core.constant; + +import lombok.Data; +import lombok.ToString; + +import java.io.Serializable; + +/** + * @author Enzo + * @date : 2022/6/23 + */ +@Data +@ToString +public class TiktokResponse implements Serializable { + + private static final long serialVersionUID = 6763956796736587193L; + + private T data; + + private String msg; + + private Integer status; + + private Boolean success; +} diff --git a/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/UpdateGroup.java b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/UpdateGroup.java new file mode 100644 index 0000000..08000a7 --- /dev/null +++ b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/constant/UpdateGroup.java @@ -0,0 +1,4 @@ +package com.baiye.core.constant; + +public interface UpdateGroup { +} diff --git a/cdp-iaas/gateway-server/src/main/resources/config/application-dev.yml b/cdp-iaas/gateway-server/src/main/resources/config/application-dev.yml index 1fa7fe5..d061be1 100644 --- a/cdp-iaas/gateway-server/src/main/resources/config/application-dev.yml +++ b/cdp-iaas/gateway-server/src/main/resources/config/application-dev.yml @@ -35,6 +35,12 @@ spring: - Path=/api-file/** filters: - StripPrefix=1 + - id: dy-tool-member-api + uri: lb://dy-tool-member-api + predicates: + - Path=/api-tiktok/** + filters: + - StripPrefix=1 nacos: server-addr: 8.130.96.163:8848 # server-addr: 101.35.109.129 diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/pom.xml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/pom.xml index f2bb6eb..ef5080e 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/pom.xml +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/pom.xml @@ -17,4 +17,14 @@ 8 + + + + com.baiye + dy-tool-member-service + 1.0-SNAPSHOT + + + + diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java new file mode 100644 index 0000000..d31a0be --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java @@ -0,0 +1,17 @@ +package com.baiye; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.scheduling.annotation.EnableAsync; + +@SpringBootApplication +@EnableDiscoveryClient +@MapperScan("com.baiye.dao") +@EnableAsync +public class TiktokMemberApiApplication { + public static void main(String[] args) { + SpringApplication.run(TiktokMemberApiApplication.class,args); + } +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokAccountController.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokAccountController.java new file mode 100644 index 0000000..e47c0ba --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokAccountController.java @@ -0,0 +1,28 @@ +package com.baiye.controller; + +import com.baiye.core.base.api.Result; +import com.baiye.dto.LoginDto; +import com.baiye.service.TiktokUserService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/tiktok/account") +public class TiktokAccountController { + + private final TiktokUserService tiktokUserService; + + @PostMapping("/phoneLogin") + public Result phoneNumberLogin(@Validated @RequestBody LoginDto loginDto){ + return tiktokUserService.phoneNumberLogin(loginDto); + } + + @PostMapping("/accountLogin") + public Result accountLogin(@Validated @RequestBody LoginDto loginDto){ + return tiktokUserService.accountLogin(loginDto); + } +} \ No newline at end of file diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java new file mode 100644 index 0000000..2d2f2da --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java @@ -0,0 +1,39 @@ +package com.baiye.controller; + +import com.baiye.core.base.api.Result; +import com.baiye.core.constant.UpdateGroup; +import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baiye.service.TiktokEquipmentService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/tiktok/equipment") +public class TiktokEquipmentController { + + private final TiktokEquipmentService tiktokEquipmentService; + + /** + * 分页查询 + */ + @PostMapping("/pageList/{current}/{limit}") + public Result getAccountList(@PathVariable int current, @PathVariable int limit, @RequestBody TiktokEquipmentEntity9999 tiktokAccountEntity){ + return Result.data(tiktokEquipmentService.getEquipmentList(current, limit, tiktokAccountEntity)); + } + + /** + * 修改 + */ + @PostMapping("/update") + public Result update(@Validated({UpdateGroup.class}) @RequestBody TiktokEquipmentEntity9999 tiktokAccountEntity){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("dy_user_id", tiktokAccountEntity.getDyUserId()); + tiktokEquipmentService.update(tiktokAccountEntity, wrapper); + return Result.success(); + } +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokOrganizeController.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokOrganizeController.java new file mode 100644 index 0000000..bd74f8c --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokOrganizeController.java @@ -0,0 +1,69 @@ +package com.baiye.controller; + +import com.baiye.core.base.api.Result; +import com.baiye.core.constant.AddGroup; +import com.baiye.core.constant.UpdateGroup; +import com.baiye.core.page.PageResult; +import com.baiye.dto.OrganizeDto; +import com.baiye.entity.OrganizeEntity; +import com.baiye.service.OrganizeService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/tiktok/organize") +public class TiktokOrganizeController { + + private final OrganizeService organizeService; + + /** + * 新增 + * @param organizeEntity + * @return + */ + @PostMapping("/save") + public Result add(@Validated({AddGroup.class}) @RequestBody OrganizeEntity organizeEntity){ + organizeService.save(organizeEntity); + return Result.success(); + } + + /** + * 列表 + * @return + */ + @GetMapping("/list") + public Result> list(){ + return Result.data(organizeService.list(new QueryWrapper<>())); + } + + /** + * 分页查询 + */ + @PostMapping("/pageList/{current}/{limit}") + public Result pageList(@PathVariable long current, @PathVariable long limit, @RequestBody OrganizeDto organizeDto){ + return Result.data(organizeService.pageList(current, limit, organizeDto)); + } + + /** + * 删除 + */ + @GetMapping("/del/{id}") + public Result del(@PathVariable Long id){ + organizeService.del(id); + return Result.success(); + } + + /** + * 修改 + */ + @PostMapping("/update") + public Result update(@Validated({UpdateGroup.class}) @RequestBody OrganizeEntity organizeEntity){ + organizeService.updateById(organizeEntity); + return Result.success(); + } +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application-dev.yml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application-dev.yml new file mode 100644 index 0000000..a7411dc --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application-dev.yml @@ -0,0 +1,64 @@ + +#配置数据源 +spring: + cloud: + nacos: + discovery: + server-addr: 8.130.96.163:8848 + redis: + database: 4 + host: 8.130.96.163 + timeout: 5000 + datasource: + druid: + db-type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://8.130.96.163:3306/db_tiktok?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true + username: root + password: y7z7noq2 + # 初始连接数 + initial-size: 5 + # 最小连接数 + min-idle: 15 + # 最大连接数 + max-active: 30 + # 超时时间(以秒数为单位) + remove-abandoned-timeout: 180 + # 获取连接超时时间 + max-wait: 3000 + # 连接有效性检测时间 + time-between-eviction-runs-millis: 60000 + # 连接在池中最小生存的时间 + min-evictable-idle-time-millis: 300000 + # 连接在池中最大生存的时间 + max-evictable-idle-time-millis: 900000 + # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除 + test-while-idle: true + # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个 + test-on-borrow: true + # 是否在归还到池中前进行检验 + test-on-return: false + # 检测连接是否有效 + validation-query: select 1 + # 配置监控统计 + webStatFilter: + enabled: true + stat-view-servlet: + enabled: true + url-pattern: /druid/* + reset-enable: false + filter: + stat: + enabled: true + # 记录慢SQL + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: false + wall: + config: + multi-statement-allow: true + +#是否开启 swagger-ui +swagger: + enabled: true + diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application-prod.yml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application-prod.yml new file mode 100644 index 0000000..e69de29 diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application.yml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application.yml new file mode 100644 index 0000000..179ad33 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/resources/config/application.yml @@ -0,0 +1,43 @@ +server: + port: 7325 + +spring: + main: + allow-bean-definition-overriding: true + application: + name: @artifactId@ + freemarker: + check-template-location: false + profiles: + active: dev + jackson: + time-zone: GMT+8 + data: + redis: + repositories: + enabled: false + servlet: + multipart: + max-request-size: 200MB + max-file-size: 200MB +mybatis-plus: + mapper-locations: classpath:mapper/*Mapper.xml +# configuration: +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #控制台打印sql语句 + +snowflake: + workerId: 9 + datacenterId: 9 + +# 线程池配置 +save: + task: + thread_pool: + corePoolSize: 2 + maxPoolSize: 16 + queueCapacity: 3 + ThreadNamePrefix: poolExecutor- + +tiktok: + gatewayHost: http://dy-api-test.xhuatea.com + sessionKey: 220422 diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/pom.xml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/pom.xml index 5188a96..7fb33a4 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/pom.xml +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/pom.xml @@ -19,9 +19,85 @@ com.baiye - dy-tool-member-api + cdp-common-exception 1.0-SNAPSHOT + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + jsr305 + com.google.code.findbugs + + + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + jsr305 + com.google.code.findbugs + + + + + + com.alibaba + druid-spring-boot-starter + + + + mysql + mysql-connector-java + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + + + + com.baiye + cdp-common-mybatis-plus + 1.0-SNAPSHOT + + + + org.mapstruct + mapstruct + + + + + + + + + + + + + + + + + + + + + + + org.springframework.boot + spring-boot-starter-validation + + + diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java new file mode 100644 index 0000000..2751a48 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java @@ -0,0 +1,53 @@ +package com.baiye.config.thread; + +import cn.hutool.core.thread.NamedThreadFactory; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; + +import java.util.concurrent.Executor; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; + +/** + * 线程池配置总类,用于配置线程池 + */ +@Configuration +@EnableAsync +public class ThreadPoolConfig { + + /** + * 从配置文件中加载线程池相关的配置 + */ + + //常驻线程数量 + @Value(value = "${save.task.thread_pool.corePoolSize}") + private int saveCorePoolSize = 4; + //最大线程数量 + @Value(value = "${save.task.thread_pool.maxPoolSize}") + private int saveMaxPoolSize = 32; + //阻塞队列数量 + @Value(value = "${save.task.thread_pool.queueCapacity}") + private int saveQueueCapacity = 100; + //线程名称前缀 + @Value(value = "${save.task.thread_pool.ThreadNamePrefix}") + private String saveThreadNamePrefix; + + + @Bean(value = "poolExecutor") + public Executor poolExecutor(){ + ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( + saveCorePoolSize, + saveMaxPoolSize, + 3, + TimeUnit.SECONDS, + new LinkedBlockingDeque<>(saveQueueCapacity), + new NamedThreadFactory(saveThreadNamePrefix, false), + new ThreadPoolExecutor.DiscardOldestPolicy() + ); + return threadPoolExecutor; + } + +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/OrganizeMapper.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/OrganizeMapper.java new file mode 100644 index 0000000..c5cb576 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/OrganizeMapper.java @@ -0,0 +1,18 @@ +package com.baiye.dao; + +import com.baiye.entity.OrganizeEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author yqy + * @since 2022-08-10 + */ +@Mapper +public interface OrganizeMapper extends BaseMapper { + +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokAccountMapper.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokAccountMapper.java new file mode 100644 index 0000000..de085b5 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokAccountMapper.java @@ -0,0 +1,10 @@ +package com.baiye.dao; + +import com.baiye.entity.TiktokAccountEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TiktokAccountMapper extends BaseMapper { + +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java new file mode 100644 index 0000000..d35db0b --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java @@ -0,0 +1,21 @@ +package com.baiye.dao; + +import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baiye.vo.TiktokEquipmentVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Mapper +public interface TiktokEquipmentMapper extends BaseMapper { + + List getEquipmentList(); + + List> findOrganizeCount(); + + void updateByUserId(@Param("entities") List entities, @Param("userIds") Set userIdList); +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/LoginDto.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/LoginDto.java new file mode 100644 index 0000000..64aa020 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/LoginDto.java @@ -0,0 +1,25 @@ +package com.baiye.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 抖音调用登录接口dto + */ +@Data +public class LoginDto { + + @NotNull(message = "账号不能为空") + private String account; + + /** + * 验证码 + */ + private String smsCode; + + /** + * 抖音密码 + */ + private String password; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/OrganizeDto.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/OrganizeDto.java new file mode 100644 index 0000000..8d06bec --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/OrganizeDto.java @@ -0,0 +1,50 @@ +package com.baiye.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class OrganizeDto { + + /** + * 小组表主键ID + */ + private Long id; + + /** + * 小组名称 + */ + private String organizeName; + + /** + * 标识 + */ + private String identification; + + /** + * 说明 + */ + private String remark; + + /** + * 账号数量 + */ + private Integer accountNum; + + /** + * 开始时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date beginTime; + + /** + * 结束时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipment.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipment.java new file mode 100644 index 0000000..28c3fd5 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipment.java @@ -0,0 +1,11 @@ +package com.baiye.dto; + +import lombok.Data; + +@Data +public class ReqEquipment { + + private String sessionKey; + + private ReqEquipmentSon data; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipmentSon.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipmentSon.java new file mode 100644 index 0000000..81b7a83 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dto/ReqEquipmentSon.java @@ -0,0 +1,15 @@ +package com.baiye.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class ReqEquipmentSon { + + private String type; + + private List vendorIds; + + private List customParameters; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/OrganizeEntity.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/OrganizeEntity.java new file mode 100644 index 0000000..b92e285 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/OrganizeEntity.java @@ -0,0 +1,55 @@ +package com.baiye.entity; + +import com.baiye.core.base.MybatisBaseEntity; +import com.baiye.core.constant.AddGroup; +import com.baiye.core.constant.UpdateGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + *

+ * 小组表 + *

+ * + * @author yqy + * @since 2022-08-10 + */ +@Data +@TableName("tb_organize") +public class OrganizeEntity extends MybatisBaseEntity { + + /** + * 小组表主键ID + */ + @NotNull(groups = UpdateGroup.class, message = "ID不能为空") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 小组名称 + */ + @NotNull(groups = AddGroup.class, message = "小组名称不能为空") + private String organizeName; + + /** + * 标识 + */ + private String identification; + + /** + * 说明 + */ + private String remark; + + /** + * 账号数量 + */ + @TableField(exist = false) //排除字段 + private Integer accountNum; + +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokAccountEntity.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokAccountEntity.java new file mode 100644 index 0000000..510c869 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokAccountEntity.java @@ -0,0 +1,66 @@ +package com.baiye.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Accessors(chain = true) +@TableName("tb_account") +public class TiktokAccountEntity { + + /** + * ID + */ + @TableId(type = IdType.AUTO) + private Long Id; + + /** + * 抖音昵称 + */ + @TableField("nick_name") + private String nickName; + + /** + * 好友数 + */ + @TableField("friend_num") + private Integer friendNum; + + /** + * 登录状态 0:在线 -1:离线 + */ + @TableField("sign_in_status") + private Integer signInStatus; + + /** + * 工作状态 + */ + @TableField("work_status") + private Integer workStatus; + + /** + * 最后登录时间 + */ + @TableField("last_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date lastTime; + + /** + * 设备信息 + */ + @TableField("equipment_info") + private String equipmentInfo; + + /** + * 小组id + */ + @TableField("organize_id") + private Long organizeId; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokEquipmentEntity.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokEquipmentEntity.java new file mode 100644 index 0000000..8941b09 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/entity/TiktokEquipmentEntity.java @@ -0,0 +1,95 @@ +package com.baiye.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baiye.core.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @author yqy + * @since 2022-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("tb_equipment") +public class TiktokEquipmentEntity extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "设备信息主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "设备号 ") + private String dyVendorId; + + @ApiModelProperty(value = "管理员ID") + private String adminId; + + @ApiModelProperty(value = "设备登录状态") + private String deviceLoginStatus; + + @ApiModelProperty(value = "设备登录状态描述") + private String deviceLoginDesc; + + @ApiModelProperty(value = "用户ID") + private String dyUserId; + + @ApiModelProperty(value = "抖音设备标识") + private String dyCdid; + + @ApiModelProperty(value = "抖音ID") + private String dyUserNo; + + @ApiModelProperty(value = "平台token") + private String dyTtToken; + + @ApiModelProperty(value = "设备是否在线 0-离线;1-在线") + private String deviceStatus; + + @ApiModelProperty(value = "设备描述-来源") + private String deviceDesc; + + @ApiModelProperty(value = "客户自定义标识") + private String customParameters; + + @ApiModelProperty(value = "抖音昵称") + private String screenName; + + @ApiModelProperty(value = "头像") + private String avatarUrl; + + @ApiModelProperty(value = "性别") + private String gender; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "滑块验证地址") + private String verifyLink; + + @ApiModelProperty(value = "关注数") + private String followingCount; + + @ApiModelProperty(value = "粉丝数") + private String followerCount; + + @ApiModelProperty(value = "获赞数") + private String friendCount; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "小组id 0:无小组分配") + private Long organizeId; + + @TableField(exist = false) + @ApiModelProperty(value = "小组名称") + private String organizeName; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/gengeator/CodeGenerator.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/gengeator/CodeGenerator.java new file mode 100644 index 0000000..2c8bd7c --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/gengeator/CodeGenerator.java @@ -0,0 +1,186 @@ +//package com.baiye.gengeator; +// +//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; +//import com.baomidou.mybatisplus.core.toolkit.StringPool; +//import com.baomidou.mybatisplus.generator.AutoGenerator; +//import com.baomidou.mybatisplus.generator.InjectionConfig; +//import com.baomidou.mybatisplus.generator.config.*; +//import com.baomidou.mybatisplus.generator.config.po.TableInfo; +//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +//import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; +//import org.apache.commons.lang3.StringUtils; +// +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Scanner; +// +///** +// * @author yqy +// * @date 2022/8/10 +// */ +//public class CodeGenerator { +// +// /** +// * 读取控制台表名并返回 +// */ +// public static String scanner(String tip) { +// Scanner scanner = new Scanner(System.in); +// StringBuilder help = new StringBuilder(); +// help.append("请输入" + tip + ":"); +// System.out.println(help); +// if (scanner.hasNext()) { +// String ipt = scanner.next(); +// if (StringUtils.isNotBlank(ipt)) { +// return ipt; +// } +// } +// throw new MybatisPlusException("请输入正确的" + tip + "!"); +// } +// +// /** +// * 获取生成文件名的前缀,不要前缀0 +// */ +// public static String scannerPackagePrefix(String prefix){ +// Scanner scanner = new Scanner(System.in); +// StringBuilder help = new StringBuilder(); +// help.append("请输入" + prefix + "(输入0跳过,不需要文件前缀):"); +// System.out.println(help); +// if (scanner.hasNext()) { +// String prefixName = scanner.next(); +// if (StringUtils.isNotBlank(prefixName)) { +// if (prefixName.equals("0")){ +// return ""; +// } +// return prefixName; +// } +// } +// throw new MybatisPlusException("请输入正确的" + prefix + "!"); +// } +// +// public static void main(String[] args) { +// // 代码生成器 +// AutoGenerator mpg = new AutoGenerator(); +// // 全局配置 +// GlobalConfig gc = new GlobalConfig(); +// gc.setAuthor("yqy"); +// gc.setOpen(false); +// gc.setBaseResultMap(true); +// String packagePrefix = scannerPackagePrefix("生成的文件名的前缀"); +// gc.setEntityName(packagePrefix + "%sEntity"); +// gc.setMapperName(packagePrefix + "%sMapper"); +// gc.setXmlName(packagePrefix + "%sMapper"); +// gc.setServiceName(packagePrefix + "%sService"); //去掉Service接口的首字母I +// gc.setControllerName(packagePrefix + "%sController"); //去掉Service接口的首字母I +// gc.setSwagger2(true); //实体属性 Swagger2 注解 +// mpg.setGlobalConfig(gc); +// +// // 数据源配置 +// DataSourceConfig dsc = new DataSourceConfig(); +// dsc.setDriverName("com.mysql.jdbc.Driver"); +// +// dsc.setUrl("jdbc:mysql://8.130.96.163:3306/db_tiktok?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"); +// dsc.setUsername("root"); +// dsc.setPassword("y7z7noq2"); +// +// mpg.setDataSource(dsc); +// +// // 包配置 +// PackageConfig pc = new PackageConfig(); +// pc.setParent("com.baiye"); +// pc.setController("controller"); +// pc.setEntity("entity"); +// pc.setMapper("dao"); +// pc.setService("service"); +// pc.setServiceImpl("service.impl"); +// mpg.setPackageInfo(pc); +// +// // 自定义配置 +// InjectionConfig cfg = new InjectionConfig() { +// @Override +// public void initMap() { +// // to do nothing +// } +// }; +// // 自定义输出配置 +// List focList = new ArrayList<>(); +// +// String projectPathCommon = "H:\\by\\by-cdp\\cdp-tools\\cdp-tool-dy\\dy-tool-member\\dy-tool-member-service" + "/src/main/java/com/baiye"; +// +// focList.add(new FileOutConfig("/templates/entity.java.vm") { +// @Override +// public String outputFile(TableInfo tableInfo) { +// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPathCommon + "/entity/" + tableInfo.getEntityName() + StringPool.DOT_JAVA; +// } +// }); +// +// String projectPathMp = "H:\\by\\by-cdp\\cdp-tools\\cdp-tool-dy\\dy-tool-member\\dy-tool-member-service" + "/src/main/java/com/baiye"; +// String projectPathControllerMp = "H:\\by\\by-cdp\\cdp-tools\\cdp-tool-dy\\dy-tool-member\\dy-tool-member-api" + "/src/main/java/com/baiye"; +// String projectPathResourcesMp = "H:\\by\\by-cdp\\cdp-tools\\cdp-tool-dy\\dy-tool-member\\dy-tool-member-service" + "/src/main/resources/"; +// +// focList.add(new FileOutConfig("/templates/controller.java.vm") { +// @Override +// public String outputFile(TableInfo tableInfo) { +// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPathControllerMp + "/controller/" + tableInfo.getControllerName() + StringPool.DOT_JAVA; +// } +// }); +// +// focList.add(new FileOutConfig("/templates/service.java.vm") { +// @Override +// public String outputFile(TableInfo tableInfo) { +// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPathMp + "/service/" + tableInfo.getServiceName() + StringPool.DOT_JAVA; +// } +// }); +// +// focList.add(new FileOutConfig("/templates/serviceImpl.java.vm") { +// @Override +// public String outputFile(TableInfo tableInfo) { +// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPathMp + "/service/impl/" + tableInfo.getServiceImplName() + StringPool.DOT_JAVA; +// } +// }); +// +// focList.add(new FileOutConfig("/templates/mapper.java.vm") { +// @Override +// public String outputFile(TableInfo tableInfo) { +// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPathMp + "/dao/" + tableInfo.getMapperName() + StringPool.DOT_JAVA; +// } +// }); +// +// focList.add(new FileOutConfig("/templates/mapper.xml.vm") { +// @Override +// public String outputFile(TableInfo tableInfo) { +// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPathResourcesMp + "/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; +// } +// }); +// +// cfg.setFileOutConfigList(focList); +// mpg.setCfg(cfg); +// +// // 配置模板 +// TemplateConfig templateConfig = new TemplateConfig(); +// mpg.setTemplate(templateConfig); +// +// // 策略配置 +// StrategyConfig strategy = new StrategyConfig(); +// strategy.setNaming(NamingStrategy.underline_to_camel); // 数据库表映射到实体的命名策略 +// strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 数据库表字段映射到实体的命名策略 +//// strategy.setSuperEntityClass(String.valueOf(BaseEntity.class)); +// strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 +// strategy.setRestControllerStyle(true); //restful api风格控制器 +// // 写于父类中的公共字段 +// strategy.setSuperEntityClass("com.baiye.core.base.BaseEntity"); +// strategy.setSuperEntityColumns( "create_time", "create_by", "update_time", "update_by"); +// strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));//对哪一张表生成代码 +// strategy.setControllerMappingHyphenStyle(true);//url中驼峰转连字符 +//// strategy.setEntityTableFieldAnnotationEnable(true); +// strategy.setTablePrefix("tb_");//生成实体时去掉表前缀 +// mpg.setStrategy(strategy); +// mpg.setTemplateEngine(new VelocityTemplateEngine()); +// mpg.execute(); +// } +//} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/properties/TiktokProperties.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/properties/TiktokProperties.java new file mode 100644 index 0000000..92621d4 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/properties/TiktokProperties.java @@ -0,0 +1,18 @@ +package com.baiye.properties; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "tiktok") +public class TiktokProperties { + + @ApiModelProperty("请求地址") + private String gatewayHost; + + @ApiModelProperty("sessionKey") + private String sessionKey; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/OrganizeService.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/OrganizeService.java new file mode 100644 index 0000000..fddbbe4 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/OrganizeService.java @@ -0,0 +1,28 @@ +package com.baiye.service; + +import com.baiye.core.page.PageResult; +import com.baiye.dto.OrganizeDto; +import com.baiye.entity.OrganizeEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author yqy + * @since 2022-08-10 + */ +public interface OrganizeService extends IService { + + /** + * 小组分页查询 + */ + PageResult pageList(long current, long limit, OrganizeDto organizeDto); + + /** + * 删除 + * @param id + */ + void del(Long id); +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokAccountService.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokAccountService.java new file mode 100644 index 0000000..7d260b6 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokAccountService.java @@ -0,0 +1,7 @@ +package com.baiye.service; + +import com.baiye.entity.TiktokAccountEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface TiktokAccountService extends IService { +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java new file mode 100644 index 0000000..9e2ad20 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java @@ -0,0 +1,29 @@ +package com.baiye.service; + +import com.baiye.core.page.PageResult; +import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +public interface TiktokEquipmentService extends IService { + + /** + * 账号列表 + * @param tiktokAccountEntity + * @return + */ + PageResult getEquipmentList(int current, int limit, TiktokEquipmentEntity9999 tiktokAccountEntity); + + /** + * 修改小组ID字段为0 + * @param id + */ + void updateByOrganizeId(Long id); + + /** + * 查询小组数量 + * @return + */ + Map findOrganizeCount(); +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokUserService.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokUserService.java new file mode 100644 index 0000000..94a56dd --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokUserService.java @@ -0,0 +1,26 @@ +package com.baiye.service; + +import com.baiye.core.base.api.Result; +import com.baiye.dto.LoginDto; + +public interface TiktokUserService { + + /** + * 获取当前抖音号信息 + * @param + * @return + */ + Result getTiktokNumberInfo(); + + /** + * 手机号登录 + * @return + */ + Result phoneNumberLogin(LoginDto loginDto); + + /** + * 账号密码登录 + * @return + */ + Result accountLogin(LoginDto loginDto); +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/OrganizeServiceImpl.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/OrganizeServiceImpl.java new file mode 100644 index 0000000..2cd6f16 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/OrganizeServiceImpl.java @@ -0,0 +1,77 @@ +package com.baiye.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import com.baiye.core.page.PageResult; +import com.baiye.core.util.StringUtils; +import com.baiye.dto.OrganizeDto; +import com.baiye.entity.OrganizeEntity; +import com.baiye.dao.OrganizeMapper; +import com.baiye.service.OrganizeService; +import com.baiye.service.TiktokEquipmentService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author yqy + * @since 2022-08-10 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class OrganizeServiceImpl extends ServiceImpl implements OrganizeService { + + private final TiktokEquipmentService tiktokEquipmentService; + + @Override + public PageResult pageList(long current, long limit, OrganizeDto organizeDto) { + Page page = new Page<>(current, limit); + + QueryWrapper wrapper = new QueryWrapper<>(); + String organizeName = organizeDto.getOrganizeName(); + Date beginTime = organizeDto.getBeginTime(); + Date endTime = organizeDto.getEndTime(); + if (StringUtils.isNotBlank(organizeName)){ + wrapper.like("organize_name",organizeName); + } + if (beginTime != null && endTime != null){ + wrapper.ge("create_time", beginTime); + wrapper.le("create_time", endTime); + } + + wrapper.orderByDesc("create_time"); + IPage iPage = this.page(page, wrapper); + Map organizeCount = tiktokEquipmentService.findOrganizeCount(); + // 设备数量set + for (OrganizeEntity record : iPage.getRecords()) { + Long id = record.getId(); + if (CollUtil.isNotEmpty(organizeCount) && organizeCount.containsKey(id)){ + record.setAccountNum(Convert.toInt(organizeCount.get(id))); + } + } + return PageResult.success + (iPage.getTotal(), iPage.getPages(), iPage.getRecords()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void del(Long id) { + //删除分组 + this.removeById(id); + //分配的分组删除掉 + tiktokEquipmentService.updateByOrganizeId(id); + } +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokAccountServiceImpl.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokAccountServiceImpl.java new file mode 100644 index 0000000..a0fc4e7 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokAccountServiceImpl.java @@ -0,0 +1,15 @@ +package com.baiye.service.impl; + +import com.baiye.dao.TiktokAccountMapper; +import com.baiye.entity.TiktokAccountEntity; +import com.baiye.service.TiktokAccountService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TiktokAccountServiceImpl extends ServiceImpl implements TiktokAccountService { +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java new file mode 100644 index 0000000..6ba078c --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java @@ -0,0 +1,186 @@ +package com.baiye.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONUtil; +import com.baiye.core.base.api.Result; +import com.baiye.core.constant.HttpStatus; +import com.baiye.core.page.PageResult; +import com.baiye.core.page.PageUtil; +import com.baiye.core.util.BeanUtils; +import com.baiye.core.util.StringUtils; +import com.baiye.dao.TiktokEquipmentMapper; +import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baiye.service.TiktokEquipmentService; +import com.baiye.service.TiktokUserService; +import com.baiye.vo.TiktokEquipmentVo; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Slf4j +@RequiredArgsConstructor +public class TiktokEquipmentServiceImpl extends ServiceImpl implements TiktokEquipmentService { + + private final TiktokUserService tiktokUserService; + private final TiktokEquipmentMapper tiktokEquipmentMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public PageResult getEquipmentList(int current, int limit, TiktokEquipmentEntity9999 tiktokEquipmentEntity) { + int isSave = 0; + // 数据库和远程调用相同的数据Id集合 + Set userIdList = new HashSet<>(); + // 调用抖音接口 + Result result = tiktokUserService.getTiktokNumberInfo(); + if (result.getCode() == HttpStatus.SUCCESS && result.getData() != null) { + // 解析json获取数据 + JSONArray jsonArray = JSONUtil.parseArray(result.getData()); + List tiktokEquipmentVos = JSONUtil.toList(jsonArray, TiktokEquipmentVo.class); + // list保存数据不做修改,后面处理时用 + List list = new ArrayList<>(); + for (TiktokEquipmentVo tiktokEquipmentVo : tiktokEquipmentVos) { + TiktokEquipmentEntity9999 equipmentEntity = new TiktokEquipmentEntity9999(); + BeanUtils.copyProperties(tiktokEquipmentVo, equipmentEntity); + equipmentEntity.setDeviceStatus("0"); + list.add(equipmentEntity); + } + // 查出库中所有的设备 + List equipmentVoList = tiktokEquipmentMapper.getEquipmentList(); + if (CollUtil.isNotEmpty(tiktokEquipmentVos)) { + if (CollUtil.isNotEmpty(equipmentVoList)) { + //1、求交集的集合 + List intersection = tiktokEquipmentVos.stream().filter(ts -> equipmentVoList.stream().map(TiktokEquipmentVo::getDyUserId). + collect(Collectors.toList()).contains(ts.getDyUserId())).collect(Collectors.toList()); + //2、取本地和接口调用不同的数据(差集) + List differenceSet = equipmentVoList.stream().filter(userInfo -> + !intersection.stream().map(TiktokEquipmentVo::getDyUserId).collect(Collectors.toList()).contains(userInfo.getDyUserId()) + ).collect(Collectors.toList()); + //3、本地库的不重复的数据加入到返回的集合中 + tiktokEquipmentVos.addAll(differenceSet); + //4、交集中的userid去除本地库的组名 + userIdList = intersection.stream().map(TiktokEquipmentVo::getDyUserId).collect(Collectors.toSet()); + isSave = 1; + Map map = new HashMap<>(); + for (TiktokEquipmentVo tiktokEquipmentVo : equipmentVoList) { + String dyUserId = tiktokEquipmentVo.getDyUserId(); + if (userIdList.contains(dyUserId)) { + map.put(dyUserId, tiktokEquipmentVo.getOrganizeName()); + map.put(dyUserId + "id", tiktokEquipmentVo.getOrganizeId()); + } + } + //5、交集中的userid拿出上面的组名和organizeId并set到集合 + for (TiktokEquipmentVo tiktokEquipmentVo : tiktokEquipmentVos) { + String dyUserId = tiktokEquipmentVo.getDyUserId(); + if (map.containsKey(dyUserId)) { + tiktokEquipmentVo.setOrganizeName((String) map.get(dyUserId)); + tiktokEquipmentVo.setOrganizeId((Long) map.get(dyUserId + "id")); + } + } + } + //6、异步插入信息,传第四步交集id和调用的数据集合,去重后插入数据 + dataDealWith(isSave, userIdList, list); + //条件查询,筛选数据 + List returnInfo = returnInfo(tiktokEquipmentVos, tiktokEquipmentEntity); + return PageResult.success((long) tiktokEquipmentVos.size(), PageUtil.toPage(current - 1, limit, returnInfo)); + } else { + // 调用查询的为空,查询数据库的数据返回 + List returnInfo = returnInfo(equipmentVoList, tiktokEquipmentEntity); + //条件查询,筛选数据 + return PageResult.success((long) equipmentVoList.size(), PageUtil.toPage(current - 1, limit, returnInfo)); + } + } + return PageResult.success((long) new ArrayList<>().size(), PageUtil.toPage(current - 1, limit, new ArrayList<>())); + } + + @Override + public void updateByOrganizeId(Long organizeId) { + TiktokEquipmentEntity9999 tiktokEquipmentEntity = new TiktokEquipmentEntity9999(); + tiktokEquipmentEntity.setOrganizeId(0L); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("organize_id", organizeId); // 设置查询条件 + this.update(tiktokEquipmentEntity, wrapper); + } + + @Override + public Map findOrganizeCount() { + List> organizeCount = tiktokEquipmentMapper.findOrganizeCount(); + Map returnMap = new HashMap<>(); + if (CollUtil.isNotEmpty(organizeCount)){ + for (Map map : organizeCount) { + returnMap.put(Convert.toLong(map.get("organizeId")), map.get("num")); + } + } + return returnMap; + } + + public List returnInfo(List equipmentVoList, TiktokEquipmentEntity9999 condition) { + List list = new ArrayList<>(); + String screenName = condition.getScreenName(); + String deviceStatus = condition.getDeviceStatus(); + Long organizeId = condition.getOrganizeId(); + for (TiktokEquipmentVo tiktokEquipmentVo : equipmentVoList) { + String name = tiktokEquipmentVo.getScreenName(); + String dyUserId = tiktokEquipmentVo.getDyUserId(); + String status = tiktokEquipmentVo.getDeviceStatus(); + Long organizeIdVo = tiktokEquipmentVo.getOrganizeId(); + // 查询小组不符合跳出循环,符合条件向下执行 + if (organizeId != null){ + if (organizeIdVo == null || !organizeIdVo.equals(organizeId)){ + continue; + } + } + // 查询名称不符合跳出循环,符合条件向下执行 + if (StringUtils.isNotBlank(screenName)) { + if (!name.contains(screenName) && !dyUserId.contains(screenName)) { + continue; + } + } + // 查询状态不符合跳出循环,符合条件向下执行 + if (StringUtils.isNotBlank(deviceStatus)) { + if (!status.equals(deviceStatus)) { + continue; + } + } + list.add(tiktokEquipmentVo); + } + return list; +} + + /** + * 异步处理数据 + * @param isSave userIdList为空的两种判断 0:全部插入数据库,1:向下执行即可 + * @param userIdList 数据库和远程调用相同的数据Id集合 + * @param tiktokEquipmentEntities + */ + @Transactional(rollbackFor = Exception.class) + @Async(value = "poolExecutor") + public void dataDealWith(int isSave, Set userIdList, List tiktokEquipmentEntities) { + // 数据库数据为空,查询的全部插入 + if (CollUtil.isEmpty(userIdList) && isSave == 0) { + this.saveBatch(tiktokEquipmentEntities); + return; + } + // 远程调用数据和数据库不相同的插入数据 + List collect = tiktokEquipmentEntities.stream().filter(userInfo -> + !new ArrayList<>(userIdList).contains(userInfo.getDyUserId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)){ + this.saveBatch(collect); + } + + // 远程调用和数据库相同的更新数据调用的最新数据 + if (CollUtil.isNotEmpty(tiktokEquipmentEntities)){ + List entities = tiktokEquipmentEntities.stream().filter(ts -> new ArrayList<>(userIdList).contains(ts.getDyUserId())).collect(Collectors.toList()); + tiktokEquipmentMapper.updateByUserId(entities,userIdList); + } + } +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokUserServiceImpl.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokUserServiceImpl.java new file mode 100644 index 0000000..e918eba --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokUserServiceImpl.java @@ -0,0 +1,103 @@ +package com.baiye.service.impl; + +import cn.hutool.http.HttpStatus; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; +import com.baiye.core.base.api.Result; +import com.baiye.core.base.api.ResultCode; +import com.baiye.core.constant.TiktokRequestConstants; +import com.baiye.core.constant.TiktokResponse; +import com.baiye.core.util.StringUtils; +import com.baiye.dto.LoginDto; +import com.baiye.dto.ReqEquipment; +import com.baiye.dto.ReqEquipmentSon; +import com.baiye.properties.TiktokProperties; +import com.baiye.service.TiktokUserService; +import com.google.common.collect.Maps; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.HashMap; + + @Slf4j +@Service +@RequiredArgsConstructor +public class TiktokUserServiceImpl implements TiktokUserService { + + private final TiktokProperties tiktokProperties; + + @Override + public Result getTiktokNumberInfo() { + ReqEquipment reqEquipment = new ReqEquipment(); + reqEquipment.setSessionKey(tiktokProperties.getSessionKey()); + reqEquipment.setData(new ReqEquipmentSon()); + String post = HttpUtil.post(tiktokProperties.getGatewayHost().concat(TiktokRequestConstants.DY_OBTAIN_INFO), JSONUtil.toJsonStr(reqEquipment)); + if (StringUtils.isNotBlank(post)){ + TiktokResponse tiktokResponse = JSONUtil.toBean(post, TiktokResponse.class); + if (tiktokResponse.getStatus() == HttpStatus.HTTP_OK) { + return Result.data(tiktokResponse.getData()); + } + } + return Result.fail(ResultCode.GROUP_ID_ERROR.getMsg()); + } + + /** + * 手机号登录 + */ + @Override + public Result phoneNumberLogin(LoginDto loginDto) { + String account = loginDto.getAccount(); + String smsCode = loginDto.getSmsCode(); + if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(smsCode)){ + HashMap map = Maps.newHashMap(); + HashMap dataMap = Maps.newHashMap(); + dataMap.put("account", account); + dataMap.put("smsCode", smsCode); + if (implement(map, dataMap, TiktokRequestConstants.DY_PHONE_LOGIN)){ + return Result.success("登录成功"); + } + }else { + return Result.fail(HttpStatus.HTTP_BAD_REQUEST, "手机号验证码不能为空"); + } + return Result.fail(ResultCode.REQUEST_PARAMETER_ERROR.getMsg()); + } + + /** + * 账号密码登录 + */ + @Override + public Result accountLogin(LoginDto loginDto) { + String account = loginDto.getAccount(); + String password = loginDto.getPassword(); + if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(password)){ + HashMap map = Maps.newHashMap(); + HashMap dataMap = Maps.newHashMap(); + dataMap.put("account", account); + dataMap.put("password", password); + if (implement(map, dataMap,TiktokRequestConstants.DY_ACCOUNT_LOGIN)){ + return Result.success("登录成功"); + } + }else { + return Result.fail(HttpStatus.HTTP_BAD_REQUEST, "账号密码不能为空"); + } + return Result.fail(ResultCode.REQUEST_PARAMETER_ERROR.getMsg()); + } + + + /** + * 登录抽取的公共代码 + */ + private boolean implement(HashMap map, HashMap dataMap, String url) { + map.put("sessionKey", tiktokProperties.getSessionKey()); + map.put("data", dataMap); + String post = HttpUtil.post(tiktokProperties.getGatewayHost().concat(url), map); + if (StringUtils.isNotBlank(post)){ + TiktokResponse tiktokResponse = JSONUtil.toBean(post, TiktokResponse.class); + if (tiktokResponse.getStatus() == HttpStatus.HTTP_OK) { + return true; + } + } + return false; + } +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokAccountVo.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokAccountVo.java new file mode 100644 index 0000000..f39e33a --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokAccountVo.java @@ -0,0 +1,54 @@ +package com.baiye.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class TiktokAccountVo { + + /** + * ID + */ + private Long id; + + /** + * 抖音昵称 + */ + private String nickName; + + /** + * 好友数 + */ + private Integer friendNum; + + /** + * 登录状态 0:在线 -1:离线 + */ + private Integer signInStatus; + + /** + * 工作状态 + */ + private Integer workStatus; + + /** + * 最后登录时间 + */ + private Date lastTime; + + /** + * 设备信息 + */ + private String equipmentInfo; + + /** + * 小组id + */ + private Long organizeId; + + /** + * 小组名称 + */ + private String organizeName; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokEquipmentVo.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokEquipmentVo.java new file mode 100644 index 0000000..7095ea0 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/vo/TiktokEquipmentVo.java @@ -0,0 +1,31 @@ +package com.baiye.vo; + +import lombok.Data; + +@Data +public class TiktokEquipmentVo { + private Long id; + private String dyVendorId; + private String adminId; + private String deviceLoginStatus; + private String deviceLoginDesc; + private String dyUserId; + private String dyCdid; + private String dyUserNo; + private String dyTtToken; + private String deviceStatus; + private String deviceDesc; + private String customParameters; + private String screenName; + private String avatarUrl; + private String gender; + private String mobile; + private String verifyLink; + private String followingCount; + private String followerCount; + private String friendCount; + private String createTime; + private String remark; + private String organizeName; + private Long organizeId; +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/OrganizeEntityMapper.xml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/OrganizeEntityMapper.xml new file mode 100644 index 0000000..8b1a10b --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/OrganizeEntityMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokAccountMapper.xml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokAccountMapper.xml new file mode 100644 index 0000000..467541b --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokAccountMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokEquipmentMapper.xml b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokEquipmentMapper.xml new file mode 100644 index 0000000..fa2a40c --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/resources/mapper/TiktokEquipmentMapper.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + update tb_equipment + + + dy_vendor_id = #{item.dyVendorId}, + + + admin_id = #{item.adminId}, + + + device_login_status = #{item.deviceLoginStatus}, + + + device_login_desc = #{item.deviceLoginDesc}, + + + dy_tt_token = #{item.dyTtToken}, + + + screen_name = #{item.screenName}, + + + avatar_url = #{item.avatarUrl}, + + + gender = #{item.gender}, + + + following_count = #{item.followingCount}, + + + follower_count = #{item.followerCount}, + + + friend_count = #{item.friendCount} + + + where dy_user_id = #{item.dyUserId} + + + + \ No newline at end of file