Merge remote-tracking branch 'origin/master'

master
ninftao 2 years ago
commit b5c693926e

@ -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;
}

@ -0,0 +1,4 @@
package com.baiye.core.constant;
public interface AddGroup {
}

@ -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";
}

@ -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<T extends Serializable> implements Serializable {
private static final long serialVersionUID = 6763956796736587193L;
private T data;
private String msg;
private Integer status;
private Boolean success;
}

@ -0,0 +1,4 @@
package com.baiye.core.constant;
public interface UpdateGroup {
}

@ -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

@ -17,4 +17,14 @@
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.baiye</groupId>
<artifactId>dy-tool-member-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

@ -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);
}
}

@ -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<Object> phoneNumberLogin(@Validated @RequestBody LoginDto loginDto){
return tiktokUserService.phoneNumberLogin(loginDto);
}
@PostMapping("/accountLogin")
public Result<Object> accountLogin(@Validated @RequestBody LoginDto loginDto){
return tiktokUserService.accountLogin(loginDto);
}
}

@ -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<Object> 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<TiktokEquipmentEntity9999> wrapper = new QueryWrapper<>();
wrapper.eq("dy_user_id", tiktokAccountEntity.getDyUserId());
tiktokEquipmentService.update(tiktokAccountEntity, wrapper);
return Result.success();
}
}

@ -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<OrganizeEntity>> list(){
return Result.data(organizeService.list(new QueryWrapper<>()));
}
/**
*
*/
@PostMapping("/pageList/{current}/{limit}")
public Result<PageResult> 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();
}
}

@ -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

@ -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

@ -19,9 +19,85 @@
<dependencies>
<dependency>
<groupId>com.baiye</groupId>
<artifactId>dy-tool-member-api</artifactId>
<artifactId>cdp-common-exception</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<artifactId>jsr305</artifactId>
<groupId>com.google.code.findbugs</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<exclusions>
<exclusion>
<artifactId>jsr305</artifactId>
<groupId>com.google.code.findbugs</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baiye</groupId>
<artifactId>cdp-common-mybatis-plus</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<!-- &lt;!&ndash;代码生成&ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>com.baomidou</groupId>-->
<!-- <artifactId>mybatis-plus-generator</artifactId>-->
<!-- <version>3.0.5</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.apache.velocity</groupId>-->
<!-- <artifactId>velocity-engine-core</artifactId>-->
<!-- <version>2.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.freemarker</groupId>-->
<!-- <artifactId>freemarker</artifactId>-->
<!-- <version>2.3.28</version>-->
<!-- <scope>compile</scope>-->
<!-- </dependency>-->
<!-- 数据验证-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
</project>

@ -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;
}
}

@ -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;
/**
* <p>
* Mapper
* </p>
*
* @author yqy
* @since 2022-08-10
*/
@Mapper
public interface OrganizeMapper extends BaseMapper<OrganizeEntity> {
}

@ -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<TiktokAccountEntity> {
}

@ -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<TiktokEquipmentEntity9999> {
List<TiktokEquipmentVo> getEquipmentList();
List<Map<Long,Object>> findOrganizeCount();
void updateByUserId(@Param("entities") List<TiktokEquipmentEntity9999> entities, @Param("userIds") Set<String> userIdList);
}

@ -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;
}

@ -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;
}

@ -0,0 +1,11 @@
package com.baiye.dto;
import lombok.Data;
@Data
public class ReqEquipment {
private String sessionKey;
private ReqEquipmentSon data;
}

@ -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;
}

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}

@ -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;
}

@ -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;
}

@ -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<FileOutConfig> 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();
// }
//}

@ -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;
}

@ -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;
/**
* <p>
*
* </p>
*
* @author yqy
* @since 2022-08-10
*/
public interface OrganizeService extends IService<OrganizeEntity> {
/**
*
*/
PageResult pageList(long current, long limit, OrganizeDto organizeDto);
/**
*
* @param id
*/
void del(Long id);
}

@ -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<TiktokAccountEntity> {
}

@ -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<TiktokEquipmentEntity9999> {
/**
*
* @param tiktokAccountEntity
* @return
*/
PageResult getEquipmentList(int current, int limit, TiktokEquipmentEntity9999 tiktokAccountEntity);
/**
* ID0
* @param id
*/
void updateByOrganizeId(Long id);
/**
*
* @return
*/
Map<Long,Object> findOrganizeCount();
}

@ -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<Object> getTiktokNumberInfo();
/**
*
* @return
*/
Result<Object> phoneNumberLogin(LoginDto loginDto);
/**
*
* @return
*/
Result<Object> accountLogin(LoginDto loginDto);
}

@ -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;
/**
* <p>
*
* </p>
*
* @author yqy
* @since 2022-08-10
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class OrganizeServiceImpl extends ServiceImpl<OrganizeMapper, OrganizeEntity> implements OrganizeService {
private final TiktokEquipmentService tiktokEquipmentService;
@Override
public PageResult pageList(long current, long limit, OrganizeDto organizeDto) {
Page<OrganizeEntity> page = new Page<>(current, limit);
QueryWrapper<OrganizeEntity> 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<OrganizeEntity> iPage = this.page(page, wrapper);
Map<Long, Object> 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);
}
}

@ -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<TiktokAccountMapper, TiktokAccountEntity> implements TiktokAccountService {
}

@ -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<TiktokEquipmentMapper, TiktokEquipmentEntity9999> 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<String> userIdList = new HashSet<>();
// 调用抖音接口
Result<Object> result = tiktokUserService.getTiktokNumberInfo();
if (result.getCode() == HttpStatus.SUCCESS && result.getData() != null) {
// 解析json获取数据
JSONArray jsonArray = JSONUtil.parseArray(result.getData());
List<TiktokEquipmentVo> tiktokEquipmentVos = JSONUtil.toList(jsonArray, TiktokEquipmentVo.class);
// list保存数据不做修改后面处理时用
List<TiktokEquipmentEntity9999> list = new ArrayList<>();
for (TiktokEquipmentVo tiktokEquipmentVo : tiktokEquipmentVos) {
TiktokEquipmentEntity9999 equipmentEntity = new TiktokEquipmentEntity9999();
BeanUtils.copyProperties(tiktokEquipmentVo, equipmentEntity);
equipmentEntity.setDeviceStatus("0");
list.add(equipmentEntity);
}
// 查出库中所有的设备
List<TiktokEquipmentVo> equipmentVoList = tiktokEquipmentMapper.getEquipmentList();
if (CollUtil.isNotEmpty(tiktokEquipmentVos)) {
if (CollUtil.isNotEmpty(equipmentVoList)) {
//1、求交集的集合
List<TiktokEquipmentVo> intersection = tiktokEquipmentVos.stream().filter(ts -> equipmentVoList.stream().map(TiktokEquipmentVo::getDyUserId).
collect(Collectors.toList()).contains(ts.getDyUserId())).collect(Collectors.toList());
//2、取本地和接口调用不同的数据(差集)
List<TiktokEquipmentVo> 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<String, Object> 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<TiktokEquipmentVo> returnInfo = returnInfo(tiktokEquipmentVos, tiktokEquipmentEntity);
return PageResult.success((long) tiktokEquipmentVos.size(), PageUtil.toPage(current - 1, limit, returnInfo));
} else {
// 调用查询的为空,查询数据库的数据返回
List<TiktokEquipmentVo> 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<TiktokEquipmentEntity9999> wrapper = new QueryWrapper<>();
wrapper.eq("organize_id", organizeId); // 设置查询条件
this.update(tiktokEquipmentEntity, wrapper);
}
@Override
public Map<Long,Object> findOrganizeCount() {
List<Map<Long, Object>> organizeCount = tiktokEquipmentMapper.findOrganizeCount();
Map<Long, Object> returnMap = new HashMap<>();
if (CollUtil.isNotEmpty(organizeCount)){
for (Map<Long, Object> map : organizeCount) {
returnMap.put(Convert.toLong(map.get("organizeId")), map.get("num"));
}
}
return returnMap;
}
public List<TiktokEquipmentVo> returnInfo(List<TiktokEquipmentVo> equipmentVoList, TiktokEquipmentEntity9999 condition) {
List<TiktokEquipmentVo> 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<String> userIdList, List<TiktokEquipmentEntity9999> tiktokEquipmentEntities) {
// 数据库数据为空,查询的全部插入
if (CollUtil.isEmpty(userIdList) && isSave == 0) {
this.saveBatch(tiktokEquipmentEntities);
return;
}
// 远程调用数据和数据库不相同的插入数据
List<TiktokEquipmentEntity9999> 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<TiktokEquipmentEntity9999> entities = tiktokEquipmentEntities.stream().filter(ts -> new ArrayList<>(userIdList).contains(ts.getDyUserId())).collect(Collectors.toList());
tiktokEquipmentMapper.updateByUserId(entities,userIdList);
}
}
}

@ -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<Object> 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<Object> phoneNumberLogin(LoginDto loginDto) {
String account = loginDto.getAccount();
String smsCode = loginDto.getSmsCode();
if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(smsCode)){
HashMap<String, Object> map = Maps.newHashMap();
HashMap<String, Object> 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<Object> accountLogin(LoginDto loginDto) {
String account = loginDto.getAccount();
String password = loginDto.getPassword();
if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(password)){
HashMap<String, Object> map = Maps.newHashMap();
HashMap<String, Object> 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<String, Object> map, HashMap<String, Object> 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;
}
}

@ -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;
}

@ -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;
}

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baiye.dao.OrganizeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.baiye.entity.OrganizeEntity">
<id column="id" property="id" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="create_by" property="createBy" />
<result column="update_by" property="updateBy" />
<result column="organize_name" property="organizeName" />
<result column="identification" property="identification" />
<result column="remark" property="remark" />
</resultMap>
</mapper>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baiye.dao.TiktokAccountMapper">
</mapper>

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baiye.dao.TiktokEquipmentMapper">
<select id="getEquipmentList" resultType="com.baiye.vo.TiktokEquipmentVo">
SELECT e.*,
o.organize_name as organizeName
FROM tb_equipment e
LEFT JOIN tb_organize o ON e.organize_id = o.id
</select>
<select id="findOrganizeCount" resultType="java.util.Map">
SELECT organize_id as organizeId,
count(*) as num
FROM tb_equipment
GROUP BY organize_id
</select>
<update id="updateByUserId">
<foreach collection="entities" item="item" index="index" open="" close="" separator=";">
update tb_equipment
<set>
<if test="item.dyVendorId != null and item.dyVendorId != ''">
dy_vendor_id = #{item.dyVendorId},
</if>
<if test="item.adminId != null and item.adminId != ''">
admin_id = #{item.adminId},
</if>
<if test="item.deviceLoginStatus != null and item.deviceLoginStatus != ''">
device_login_status = #{item.deviceLoginStatus},
</if>
<if test="item.deviceLoginDesc != null and item.deviceLoginDesc != ''">
device_login_desc = #{item.deviceLoginDesc},
</if>
<if test="item.dyTtToken != null and item.dyTtToken != ''">
dy_tt_token = #{item.dyTtToken},
</if>
<if test="item.screenName != null and item.screenName != ''">
screen_name = #{item.screenName},
</if>
<if test="item.avatarUrl != null and item.avatarUrl != ''">
avatar_url = #{item.avatarUrl},
</if>
<if test="item.gender != null and item.gender != ''">
gender = #{item.gender},
</if>
<if test="item.followingCount != null and item.followingCount != ''">
following_count = #{item.followingCount},
</if>
<if test="item.followerCount != null and item.followerCount != ''">
follower_count = #{item.followerCount},
</if>
<if test="item.friendCount != null and item.friendCount != ''">
friend_count = #{item.friendCount}
</if>
</set>
where dy_user_id = #{item.dyUserId}
</foreach>
</update>
</mapper>
Loading…
Cancel
Save