Browse Source

Merge remote-tracking branch 'remotes/origin/feature-1.0-img'

master
penny 4 years ago
parent
commit
eff10c7362
  1. 26
      bnyer-api/bnyer-api-img/pom.xml
  2. 29
      bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/RemoteImgService.java
  3. 87
      bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/domain/TiktokImg.java
  4. 39
      bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/dto/TiktokImgMiniDto.java
  5. 33
      bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java
  6. 2
      bnyer-api/bnyer-api-img/src/main/resources/META-INF/spring.factories
  7. 1
      bnyer-api/pom.xml
  8. 7
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/ServiceNameConstants.java
  9. 24
      bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java
  10. 15
      bnyer-services/bnyer-file/pom.xml
  11. 6
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/BnyerFileApplication.java
  12. 33
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/config/ExecutorConfig.java
  13. 104
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/constants/RedisKeyConstant.java
  14. 50
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java
  15. 19
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileDto.java
  16. 38
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUploadDto.java
  17. 20
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUrlDto.java
  18. 10
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IFileService.java
  19. 7
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IQiniuService.java
  20. 84
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/FileServiceImpl.java
  21. 32
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java
  22. 3
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/vo/ChekFileVo.java
  23. 9
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/vo/UploadVo.java
  24. 2
      bnyer-services/bnyer-file/src/main/resources/bootstrap.yml
  25. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/BnyerImgApplication.java
  26. 10
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java
  27. 25
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/BzConfig.java
  28. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/FhConfig.java
  29. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TiktokConfig.java
  30. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/WxConfig.java
  31. 9
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java
  32. 33
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/StatusImgConstant.java
  33. 15
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/TiktokConstant.java
  34. 46
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java
  35. 5
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorController.java
  36. 159
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java
  37. 58
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java
  38. 70
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/SignController.java
  39. 12
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokImgController.java
  40. 73
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java
  41. 58
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java
  42. 61
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/BzData.java
  43. 19
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/Creator.java
  44. 23
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/ImgSignRelation.java
  45. 7
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/Sign.java
  46. 35
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/BzDto.java
  47. 20
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CheckInviteCodeDto.java
  48. 20
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CheckPhoneDto.java
  49. 21
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CheckScanCodeDto.java
  50. 13
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorDto.java
  51. 21
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorInviteLogPageDto.java
  52. 23
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorLoginDto.java
  53. 3
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorPageDto.java
  54. 10
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitAdInsertDto.java
  55. 45
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitInviteInsertDto.java
  56. 27
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorUploadDto.java
  57. 21
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorWithdrawPageDto.java
  58. 21
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ImgSignRelationPageDto.java
  59. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ProfitStatusDto.java
  60. 32
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignDto.java
  61. 19
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignImgNamePageDto.java
  62. 22
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignImgPageDto.java
  63. 19
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignPageDto.java
  64. 18
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignTypePageDto.java
  65. 8
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/TiktokImgMiniDto.java
  66. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/WithdrawOrderDto.java
  67. 27
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/checkUserCanDownloadDto.java
  68. 15
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/BzDataMapper.java
  69. 8
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java
  70. 27
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/ImgSignRelationMapper.java
  71. 17
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/SignMapper.java
  72. 26
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/TiktokImgMapper.java
  73. 22
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java
  74. 30
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java
  75. 28
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java
  76. 9
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/FhUserService.java
  77. 69
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/SignService.java
  78. 39
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java
  79. 9
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokUserService.java
  80. 9
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/WxUserService.java
  81. 166
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java
  82. 87
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java
  83. 221
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java
  84. 21
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FhUserServiceImpl.java
  85. 104
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/SignServiceImpl.java
  86. 74
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java
  87. 21
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java
  88. 25
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java
  89. 21
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WxUserServiceImpl.java
  90. 1
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CollectionSyncTask.java
  91. 1
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CreatorProfitConfirmTypeSyncTask.java
  92. 60
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/DateSyncTask.java
  93. 1
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/LikeSyncTask.java
  94. 36
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/UserDownloadSyncTask.java
  95. 71
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorLoginVo.java
  96. 35
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorTypeImgVo.java
  97. 48
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/ImgSignVo.java
  98. 3
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/InviteLogVo.java
  99. 28
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/SignImgVo.java
  100. 25
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/SignRelationVo.java

26
bnyer-api/bnyer-api-img/pom.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-api</artifactId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>bnyer-api-img</artifactId>
<description>
bnyer-api-img图文服务接口模块
</description>
<dependencies>
<!-- bnyer Common Core-->
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-core</artifactId>
</dependency>
</dependencies>
</project>

29
bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/RemoteImgService.java

@ -0,0 +1,29 @@
package com.bnyer.img.api;
import com.bnyer.common.core.constant.ServiceNameConstants;
import com.bnyer.common.core.domain.R;
import com.bnyer.img.api.dto.TiktokImgMiniDto;
import com.bnyer.img.api.factory.RemoteImgFallbackFactory;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 图文服务
*
* @author chengkun
* @date 2022/7/8 11:03
*/
@FeignClient(contextId = "remoteImgService", value = ServiceNameConstants.IMG_SERVICE, fallbackFactory = RemoteImgFallbackFactory.class)
public interface RemoteImgService {
/**
* 保存图片
* @param dto 图片接收类
* @return -
*/
@PostMapping(value = "/img/mini/creator/insertTiktokImg")
public R<Integer> insertTiktokImg(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgMiniDto dto);
}

87
bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/domain/TiktokImg.java

@ -0,0 +1,87 @@
package com.bnyer.img.api.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
@ApiModel("抖音图片小程序api端实体类")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class TiktokImg implements Serializable {
/**
* id
*/
@ApiModelProperty(value="id")
private Long id;
/**
* 图片地址
*/
@ApiModelProperty(value="图片地址")
private String imgUrl;
/**
* 艺术家id
*/
@ApiModelProperty(value="艺术家id")
private Long creatorId;
/**
* 分类id
*/
@ApiModelProperty(value="分类id")
private Long typeId;
/**
* 下载量
*/
@ApiModelProperty(value="下载量")
private Integer downloadNum;
/**
* 点赞量
*/
@ApiModelProperty(value="点赞量")
private Integer greatNum;
/**
* 收藏量
*/
@ApiModelProperty(value="收藏量")
private Integer collectionNum;
/**
* 状态(0->待审核;1->审核通过)
*/
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
/**
* 是否热门(0->冷门;1->热门)
*/
@ApiModelProperty(value="是否热门(0->冷门;1->热门)")
private String isHot;
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)")
private String isShow;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="创建时间")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="更新时间")
private Date updateTime;
@ApiModelProperty(value="排序")
private Integer sort;
private static final long serialVersionUID = 1L;
}

39
bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/dto/TiktokImgMiniDto.java

@ -0,0 +1,39 @@
package com.bnyer.img.api.dto;
import com.bnyer.common.core.utils.bean.BeanUtils;
import com.bnyer.img.api.domain.TiktokImg;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("抖音图片小程序api端接收类")
public class TiktokImgMiniDto implements Serializable {
@ApiModelProperty(value="id")
private Long id;
@ApiModelProperty(value="图片地址")
private String imgUrl;
@ApiModelProperty(value="艺术家id")
private Long creatorId;
@ApiModelProperty(value="分类id")
private Long typeId;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
public TiktokImg extractParam(){
TiktokImg tiktokImg = new TiktokImg();
BeanUtils.copyProperties(this,tiktokImg);
return tiktokImg;
}
}

33
bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java

@ -0,0 +1,33 @@
package com.bnyer.img.api.factory;
import com.bnyer.common.core.domain.R;
import com.bnyer.img.api.RemoteImgService;
import com.bnyer.img.api.dto.TiktokImgMiniDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 图文服务降级处理
*
* @author penny
*/
@Component
public class RemoteImgFallbackFactory implements FallbackFactory<RemoteImgService>
{
private static final Logger log = LoggerFactory.getLogger(RemoteImgFallbackFactory.class);
@Override
public RemoteImgService create(Throwable throwable) {
log.error("api图文服务调用失败:{}", throwable.getMessage());
return new RemoteImgService()
{
@Override
public R<Integer> insertTiktokImg(TiktokImgMiniDto dto) {
return R.fail("图片保存失败:" + throwable.getMessage());
}
};
}
}

2
bnyer-api/bnyer-api-img/src/main/resources/META-INF/spring.factories

@ -0,0 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.bnyer.img.api.factory.RemoteImgFallbackFactory

1
bnyer-api/pom.xml

@ -10,6 +10,7 @@
<modules>
<module>bnyer-api-system</module>
<module>bnyer-api-img</module>
</modules>
<artifactId>bnyer-api</artifactId>

7
bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/constant/ServiceNameConstants.java

@ -2,7 +2,7 @@ package com.bnyer.common.core.constant;
/**
* 服务名称
*
*
* @author ruoyi
*/
public class ServiceNameConstants
@ -21,4 +21,9 @@ public class ServiceNameConstants
* 文件服务的serviceid
*/
public static final String FILE_SERVICE = "bnyer-file";
/**
* 图文服务的serviceid
*/
public static final String IMG_SERVICE = "bnyer-img";
}

24
bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java

@ -327,4 +327,28 @@ public class RedisService
Long releaseStatus = (Long)this.redisTemplate.execute(redisScript, Collections.singletonList(key),value);
return releaseStatus;
}
/**
* pv统计
* @param today 统计的日期
* @param page 统计的页面
* @return pv
*/
public Long pvStatistics(String today,String page){
//访问次数pv
return redisTemplate.opsForValue().increment(today +page+"PV", 1);
}
/**
* uv统计
* @param today 统计的日期
* @param page 统计的页面
* @param ip 进入页面的ip
* @return uv
*/
public Long uvStatistics(String today,String page,String ip){
//访问次数uv
return redisTemplate.opsForHyperLogLog().add(today + page+"UV", ip);
}
}

15
bnyer-services/bnyer-file/pom.xml

@ -93,7 +93,20 @@
<artifactId>spring-mock</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-api-img</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.dimensionalnode</groupId>
<artifactId>bnyer-common-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>

6
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/BnyerFileApplication.java

@ -1,9 +1,13 @@
package com.bnyer.file;
import com.bnyer.common.security.annotation.EnableRyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import com.bnyer.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* 文件服务
@ -11,6 +15,8 @@ import com.bnyer.common.swagger.annotation.EnableCustomSwagger2;
* @author ruoyi
*/
@EnableCustomSwagger2
@EnableRyFeignClients
@EnableAsync
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
public class BnyerFileApplication
{

33
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/config/ExecutorConfig.java

@ -0,0 +1,33 @@
package com.bnyer.file.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @Author qyh
* @Date 2022/7/10 15:31
* @Description
*/
@Configuration
@EnableAsync
public class ExecutorConfig {
@Bean
public Executor mySimpleAsync() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(50);
executor.setQueueCapacity(10);
executor.setThreadNamePrefix("fileUpload");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
}

104
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/constants/RedisKeyConstant.java

@ -0,0 +1,104 @@
package com.bnyer.file.constants;
public class RedisKeyConstant {
/**
* 抖音小程序用户收藏图片键
*/
public static final String TIKTOK_USER_COLLECT_KEY = "bnyer.img.tiktok.collect:";
/**
* 抖音小程序图片收藏数量键
*/
public static final String TIKTOK_IMG_COLLECT_NUM_KEY = "bnyer.img.tiktok.collectNum";
/**
* 快手小程序图片收藏数量键
*/
public static final String FAST_HAND_IMG_COLLECT_NUM_KEY = "bnyer.img.fh.collectNum";
/**
* 微信小程序图片收藏数量键
*/
public static final String WECHAT_IMG_COLLECT_NUM_KEY = "bnyer.img.wx.collectNum";
/**
* 抖音小程序用户点赞图片键
*/
public static final String TIKTOK_USER_LIKE_KEY = "bnyer.img.tiktok.like";
/**
* 快手小程序用户点赞图片键
*/
public static final String FAST_HAND_USER_LIKE_KEY = "bnyer.img.fh.like";
/**
* 微信小程序用户点赞图片键
*/
public static final String WECHAT_USER_LIKE_KEY = "bnyer.img.wx.like";
/**
* 抖音小程序图片点赞数量键
*/
public static final String TIKTOK_IMG_LIKE_NUM_KEY = "bnyer.img.tiktok.likeNum";
/**
* 快手小程序图片点赞数量键
*/
public static final String FAST_HAND_IMG_LIKE_NUM_KEY = "bnyer.img.fh.likeNum";
/**
* 微信小程序图片点赞数量键
*/
public static final String WECHAT_IMG_LIKE_NUM_KEY = "bnyer.img.wx.likeNum";
/**
* 抖音小程序图片下载数量键
*/
public static final String TIKTOK_IMG_DOWNLOAD_NUM_KEY = "bnyer.img.creator.downloadNum:";
/**
* 抖音小程序图片下载总数量键
*/
public static final String TIKTOK_IMG_TOTAL_DOWNLOAD_NUM_KEY = "bnyer.img.date.downloadTotalNum:";
/**
* 抖音小程序用户登录键
*/
public static final String TIKTOK_USER_LOGIN_KEY = "bnyer.img.tiktok.user:";
/**
* 快手小程序用户登录键
*/
public static final String FH_USER_LOGIN_KEY = "bnyer.img.fh.user:";
/**
* 微信小程序用户登录键
*/
public static final String WECHAT_USER_LOGIN_KEY = "bnyer.img.wx.user:";
/**
* 微信小程序艺术家登录键
*/
public static final String WECHAT_CREATOR_LOGIN_KEY = "bnyer.img.wechat.creator:";
/**
* 微信小程序艺术家邀请键
*/
public static final String WECHAT_CREATOR_INVITE_KEY = "bnyer.img.invite.creator:";
/**
* 审核收益锁键
*/
public static final String VERIFY_PROFIT_LOCK_KEY = "bnyer.img.profit.lock:";
/**
* 平台用户下载键
*/
public static final String PLATFORM_USER_DOWNLOAD_KEY = "bnyer.img.user.download:";
/**
* 艺术家上传键
*/
public static final String CREATOR_UPLOAD_KEY="bnyer.img.createor.upload";
}

50
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java

@ -2,6 +2,9 @@ package com.bnyer.file.controller;
import com.bnyer.common.core.domain.R;
import com.bnyer.file.config.ImgConfig;
import com.bnyer.file.dto.FileDto;
import com.bnyer.file.dto.FileUploadDto;
import com.bnyer.file.dto.FileUrlDto;
import com.bnyer.file.service.IFileService;
import com.bnyer.file.service.IQiniuService;
import com.bnyer.file.service.MinioService;
@ -9,12 +12,11 @@ import com.bnyer.file.utils.ImgUtil;
import com.bnyer.file.vo.ChekFileVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@ -39,6 +41,7 @@ public class SysFileController {
@Autowired
private ImgConfig imgConfig;
/**
* 批量上传图片
*/
@ -67,7 +70,7 @@ public class SysFileController {
*/
@ApiOperation(value="批量压缩上传到七牛云")
@PostMapping("/uploadBatchCompImg")
public R<List<String>> compression(MultipartFile[] files) throws IOException {
public R<List<String>> compression(@RequestParam MultipartFile[] files) throws IOException {
List<String> list = new ArrayList<>();
for (MultipartFile file : files) {
MultipartFile file1 = ImgUtil.commpressPicCycle(Long.parseLong(imgConfig.getFileSize()), Double.parseDouble(imgConfig.getAccuracy()), file);
@ -78,13 +81,20 @@ public class SysFileController {
// 上传并返回访问地址
return R.ok(list);
}
@ApiOperation(value="文件删除")
@PostMapping("/deleteFile")
public R deleteFile(@RequestBody @ApiParam("上传url对象") FileUrlDto params) throws IOException {
String res = qiniuService.deleteFile(params.getUrl());
// 上传并返回访问地址
return R.ok(res);
}
/**
* 批量审核
*/
@ApiOperation(value="批量图片审核")
@PostMapping("/checkBatch")
public R<List<ChekFileVo>> checkBatch(ArrayList<MultipartFile> files) {
public R<List<ChekFileVo>> checkBatch(@RequestParam ArrayList<MultipartFile> files) {
try {
ArrayList<ChekFileVo> list = fileService.checkImg(files);
// 上传并返回访问地址
@ -107,5 +117,33 @@ public class SysFileController {
}
return R.ok(url);
}
public static final String UPLOAD_PREFIX_PATH = "/opt/uploading";
@ApiOperation(value="图片批量检测上传保存")
@PostMapping("/checkUploadSave")
@ResponseBody
public R checkUploadSave(@RequestParam Long creatorId, @RequestParam Long typeId, @RequestParam ArrayList<MultipartFile> files) {
try {
ArrayList<FileDto> fileDtos = new ArrayList<>();
for (MultipartFile file : files) {
FileDto fileDto = new FileDto();
byte[] bytes = IOUtils.toByteArray(file.getInputStream());
fileDto.setBytes(bytes);
fileDto.setName(file.getName());
fileDto.setOriginalFilename(file.getOriginalFilename());
fileDtos.add(fileDto);
}
// 生成临时文件
FileUploadDto fileUploadDto = new FileUploadDto();
fileUploadDto.setFiles(fileDtos);
fileUploadDto.setCreatorId(creatorId);
fileUploadDto.setTypeId(typeId);
fileService.checkUploadSave(fileUploadDto);
} catch (Exception e) {
log.error("文件上传失败,原因为:【{}】", e.getMessage());
return R.fail("banner上传失败!");
}
return R.ok();
}
}

19
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileDto.java

@ -0,0 +1,19 @@
package com.bnyer.file.dto;
import io.swagger.annotations.ApiModel;
import lombok.Getter;
import lombok.Setter;
/**
* @Author qyh
* @Date 2022/7/10 16:37
* @Description
*/
@Getter
@Setter
@ApiModel("文件信息")
public class FileDto {
private byte[] bytes;
private String originalFilename;
private String name;
}

38
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUploadDto.java

@ -0,0 +1,38 @@
package com.bnyer.file.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
/**
* @Author qyh
* @Date 2022/7/9 18:24
* @Description
*/
@Getter
@Setter
@ApiModel("文件上传")
public class FileUploadDto {
@ApiModelProperty(value="id")
private Long id;
@ApiModelProperty(value="图片地址")
private String imgUrl;
@ApiModelProperty(value="艺术家id")
private Long creatorId;
@ApiModelProperty(value="分类id")
private Long typeId;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
@ApiModelProperty(value="要上传的图片")
private ArrayList<FileDto> files;
}

20
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUrlDto.java

@ -0,0 +1,20 @@
package com.bnyer.file.dto;
import io.swagger.annotations.ApiModel;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/**
* @Author chengkun
* @Date 2022/7/10 16:37
* @Description
*/
@Getter
@Setter
@ApiModel("文件url地址")
public class FileUrlDto implements Serializable {
private String url;
}

10
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IFileService.java

@ -1,8 +1,10 @@
package com.bnyer.file.service;
import com.bnyer.file.dto.FileUploadDto;
import com.bnyer.file.vo.ChekFileVo;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.ArrayList;
/**
@ -12,4 +14,12 @@ import java.util.ArrayList;
*/
public interface IFileService {
ArrayList<ChekFileVo> checkImg(ArrayList<MultipartFile> multipartFiles);
//图片检测+图片上传+图片保存
void checkUploadSave(FileUploadDto fileUploadDto) throws IOException;
/**
* 写入艺术家上传次数
* @param creatorId 艺术家id
*/
void writeUploadTotalNum(Long creatorId);
}

7
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IQiniuService.java

@ -20,4 +20,11 @@ public interface IQiniuService {
* @return
*/
ArrayList<MultipartFile> checkImageFormat(ArrayList<MultipartFile> multipartFiles);
/**
* 文件删除
* @param filepath 文件路径
* @return
*/
String deleteFile(String filepath);
}

84
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/FileServiceImpl.java

@ -1,15 +1,31 @@
package com.bnyer.file.service.impl;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.file.constants.RedisKeyConstant;
import com.bnyer.file.dto.FileDto;
import com.bnyer.file.dto.FileUploadDto;
import com.bnyer.file.service.IFileService;
import com.bnyer.file.service.IQiniuService;
import com.bnyer.file.service.ITikTokImage;
import com.bnyer.file.utils.ImgUtil;
import com.bnyer.file.vo.ChekFileVo;
import com.bnyer.img.api.RemoteImgService;
import com.bnyer.img.api.dto.TiktokImgMiniDto;
import org.apache.http.entity.ContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
* @Author: Yeman
@ -17,11 +33,16 @@ import java.util.ArrayList;
* @Description:
*/
@Service("file")
@Slf4j
public class FileServiceImpl implements IFileService {
@Autowired
private IQiniuService qiniuService;
@Autowired
private ITikTokImage tikTokImage;
@Autowired
private RemoteImgService remoteImgService;
@Autowired
private RedisService redisService;
@Override
public ArrayList<ChekFileVo> checkImg(ArrayList<MultipartFile> multipartFiles) {
ArrayList<ChekFileVo> chekFileVos = new ArrayList<>();
@ -29,30 +50,31 @@ public class FileServiceImpl implements IFileService {
ArrayList<MultipartFile> multipartFileList = qiniuService.checkImageFormat(multipartFiles);
for (MultipartFile multipartFile : multipartFileList) {
ChekFileVo chekFileVo = new ChekFileVo();
chekFileVo.setFile(multipartFile);
String filename = multipartFile.getResource().getFilename();
chekFileVo.setFileName(filename);
String imageString = ImgUtil.getImageString(multipartFile);
String checkMsg = qiniuService.checkImageContent("data:application/octet-stream;base64," +imageString);
if (checkMsg.equals("pass")){
String checkMsg = qiniuService.checkImageContent("data:application/octet-stream;base64," + imageString);
if (checkMsg.equals("pass")) {
//抖音图片检测二次检测
if (tikTokImage.checkImageContent(multipartFile)) {
//可以通过
chekFileVo.setStatus("1");
chekFileVos.add(chekFileVo);
}else {
//不可以通过
chekFileVo.setStatus("2");
chekFileVos.add(chekFileVo);
}
// if (tikTokImage.checkImageContent(multipartFile)) {
//可以通过
chekFileVo.setStatus("1");
chekFileVos.add(chekFileVo);
// }else {
// //不可以通过
// chekFileVo.setStatus("2");
// chekFileVos.add(chekFileVo);
// }
continue;
}
if (checkMsg.equals("review")){
if (checkMsg.equals("review")) {
//人工审核
chekFileVo.setStatus("0");
chekFileVos.add(chekFileVo);
continue;
}
if (checkMsg.equals("block")){
if (checkMsg.equals("block")) {
//不可通过
chekFileVo.setStatus("2");
chekFileVos.add(chekFileVo);
@ -60,4 +82,40 @@ public class FileServiceImpl implements IFileService {
}
return chekFileVos;
}
@Override
@Async("mySimpleAsync")
public void checkUploadSave(FileUploadDto fileUploadDto) throws IOException {
//redis累计艺术家当天上传次数,12.00后过期
writeUploadTotalNum(fileUploadDto.getCreatorId());
ArrayList<MultipartFile> multipartFiles = new ArrayList<>();
for (FileDto fileDto : fileUploadDto.getFiles()) {
InputStream inputStream = new ByteArrayInputStream(fileDto.getBytes());
MultipartFile files = new MockMultipartFile(fileDto.getName(), fileDto.getOriginalFilename(), ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
//System.out.println(files.getSize());
multipartFiles.add(files);
}
//检测图片
for (ChekFileVo chekFileVo : checkImg(multipartFiles)) {
//图片上传
String imgUrl = qiniuService.userUpload(chekFileVo.getFile());
TiktokImgMiniDto tiktokImg = new TiktokImgMiniDto();
tiktokImg.setImgUrl(imgUrl);
tiktokImg.setStatus(chekFileVo.getStatus());
tiktokImg.setTypeId(fileUploadDto.getTypeId());
tiktokImg.setCreatorId(fileUploadDto.getCreatorId());
remoteImgService.insertTiktokImg(tiktokImg);
}
}
@Override
public void writeUploadTotalNum(Long creatorId) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(new Date());
log.info("日期【{}】艺术家【{}】上传数+1",date,creatorId);
String redisKey = RedisKeyConstant.CREATOR_UPLOAD_KEY + date;
redisService.hashIncr(redisKey, creatorId.toString(), 1);
}
}

32
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.file.config.QiniuConfig;
import com.bnyer.file.service.IQiniuService;
import com.bnyer.file.utils.ImgUtil;
import com.bnyer.file.utils.StringUtil;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
@ -11,6 +12,7 @@ import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Client;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
@ -164,7 +166,8 @@ public class QiniuServiceImpl implements IQiniuService {
videoSuffixList.add("mp4");
videoSuffixList.add("mov");
videoSuffixList.add("wmv");
if (suffix != null&&imageSuffixList.contains(suffix)&&multipartFile.getSize() / 1024 < 50000&&multipartFile.getSize() / 1024 > 0) {
long size = multipartFile.getSize();
if (suffix != null&&imageSuffixList.contains(suffix)&&multipartFile.getSize() / 1024 < 3072&&multipartFile.getSize() / 1024 > 0) {
afterCheckFiles.add(multipartFile);
}
}
@ -182,12 +185,33 @@ public class QiniuServiceImpl implements IQiniuService {
}
return null;
}
//删除文件
public String deleteFile(String filepath){
String[] split = filepath.split("//");
//构造一个带指定Region对象的配置类
Configuration cfg = new Configuration(zone);
System.out.println(split[2]);
String key = split[2];
Auth auth = Auth.create(qiniuConfig.getAccessKey(), qiniuConfig.getSecretKey());
BucketManager bucketManager = new BucketManager(auth, cfg);
try {
return bucketManager.delete(qiniuConfig.getBucketName(), key).toString();
} catch (QiniuException ex) {
//如果遇到异常,说明删除失败
System.err.println(ex.code());
System.err.println(ex.response.toString());
}
return "";
}
public static void main(String[] args) {
String url="http://rd582ra2f.hd-bkt.clouddn.com//code/duck/2022-07-10-e46bf8d168b348fd9cc8b6b39e12d3ca.png";
for (String s : url.split("//")) {
System.out.println(s);
}
// public static void main(String[] args) {
//
// String imageString = ImgUtil.getImageString("C:\\Users\\ASUS\\Documents\\WeChat Files\\wxid_vzk0z5ghy6q922\\FileStorage\\File\\2020-09\\20220608134731.png");
// JSONObject jsonObject = checkImageContent("data:application/octet-stream;base64," + imageString);
// System.out.println(JSON.parseObject(jsonObject.get("result").toString()).get("suggestion").toString());
// System.out.println(jsonObject);
// }
}
}

3
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/vo/ChekFileVo.java

@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author qyh
@ -18,4 +19,6 @@ public class ChekFileVo {
private String status;
@ApiModelProperty(value="文件名称")
private String fileName;
@ApiModelProperty(value = "文件")
private MultipartFile file;
}

9
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/vo/UploadVo.java

@ -0,0 +1,9 @@
package com.bnyer.file.vo;
/**
* @Author qyh
* @Date 2022/7/9 18:22
* @Description
*/
public class UploadVo {
}

2
bnyer-services/bnyer-file/src/main/resources/bootstrap.yml

@ -15,4 +15,4 @@ spring:
active: dev
servlet:
multipart:
maxFileSize: 5MB
maxFileSize: 27MB

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/BnyerImgApplication.java

@ -5,6 +5,7 @@ import com.bnyer.common.security.annotation.EnableRyFeignClients;
import com.bnyer.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* 系统模块
@ -15,6 +16,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableCustomSwagger2
@EnableRyFeignClients
@SpringBootApplication
@EnableAsync
public class BnyerImgApplication
{
public static void main(String[] args)

10
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java

@ -22,17 +22,17 @@ public class AlipayConfig{
private String gatewayUrl;
@Value("${alipay.appId}")
public String appId;
private String appId;
@Value("${alipay.privateKey}")
public String privateKey;
private String privateKey;
@Value("${alipay.certPath}")
public String certPath;
private String certPath;
@Value("${alipay.alipayPublicCertPath}")
public String alipayPublicCertPath;
private String alipayPublicCertPath;
@Value("${alipay.rootPath}")
public String rootPath;
private String rootPath;
}

25
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/BzConfig.java

@ -0,0 +1,25 @@
package com.bnyer.img.config;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
/**
* 八字算命配置类
* @author chengkun
* @date 2022/4/21 17:43
*/
@Configuration
@ConfigurationProperties(prefix = "bnyer.img.bz")
@Getter
@RefreshScope
public class BzConfig {
@Value("${bnyer.img.bz.appCode}")
private String appCode;
@Value("${bnyer.img.bz.url}")
private String url;
}

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/FhConfig.java

@ -18,7 +18,7 @@ import org.springframework.context.annotation.Configuration;
public class FhConfig {
@Value("${bnyer.img.fasthand.appId}")
private String appId;
public String appId;
@Value("${bnyer.img.fasthand.secret}")
public String secret;

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TiktokConfig.java

@ -26,13 +26,13 @@ public class TiktokConfig implements WebMvcConfigurer {
private String appId;
@Value("${bnyer.img.tiktok.secret}")
public String secret;
private String secret;
@Value("${bnyer.img.tiktok.sessionInfoUrl}")
public String sessionInfoUrl;
private String sessionInfoUrl;
@Value("${bnyer.img.tiktok.tokenUrl}")
public String tokenUrl;
private String tokenUrl;
// @Resource
// private TokenCheckHandler tokenCheckHandler;

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/WxConfig.java

@ -26,12 +26,12 @@ public class WxConfig {
private String appId;
@Value("${bnyer.img.wechat.secret}")
public String secret;
private String secret;
@Value("${bnyer.img.wechat.sessionInfoUrl}")
public String sessionInfoUrl;
private String sessionInfoUrl;
@Value("${bnyer.img.wechat.tokenUrl}")
public String tokenUrl;
private String tokenUrl;
}

9
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java

@ -92,4 +92,13 @@ public class RedisKeyConstant {
* 审核收益锁键
*/
public static final String VERIFY_PROFIT_LOCK_KEY = "bnyer.img.profit.lock:";
/**
* 平台用户下载键
*/
public static final String PLATFORM_USER_DOWNLOAD_KEY = "bnyer.img.user.download:";
/**
* 艺术家上传键
*/
public static final String CREATOR_UPLOAD_KEY="bnyer.img.creator.upload:";
}

33
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/StatusImgConstant.java

@ -0,0 +1,33 @@
package com.bnyer.img.constants;
/**
* 平台常量
* @author chengkun
* @date 2022/4/21 18:12
*/
public class StatusImgConstant {
/**
* 待审核
*/
public static final String UNCHECK = "0";
/**
* 审核通过
*/
public static final String PASS = "1";
/**
* 审核拒绝
*/
public static final String UNPASS = "2";
/**
* 已上架
*/
public static final String ONLINE = "3";
/**
* 已下架
*/
public static final String OFFLINE = "4";
}

15
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/TiktokConstant.java

@ -60,4 +60,19 @@ public class TiktokConstant {
* 调用快手授权失败
*/
public static final Integer FH_AUTH_ERROR = 105009;
/**
* 艺术家手机号或密码不正确
*/
public static final Integer TIKTOK_CREATOR_PWD_ERROR = 105010;
/**
* 艺术家尚未审核
*/
public static final Integer TIKTOK_CREATOR_NOT_PASS_ERROR = 105011;
/**
* 艺术家尚未审核
*/
public static final Integer TIKTOK_CREATOR_BANED_ERROR = 105012;
}

46
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java

@ -0,0 +1,46 @@
package com.bnyer.img.controller;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.domain.R;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.dto.BzDto;
import com.bnyer.img.service.BzDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Api(value = "【图文平台】八字运势接口",tags = "【图文平台】八字运势接口")
@RestController
@RequestMapping("/img/bz")
@Slf4j
public class BzDataController extends BaseController {
@Autowired
private BzDataService bzDataService;
@Autowired
private RedisService redisService;
//@RequiresPermissions("system:config:list")
@ApiOperation(value = "八字算命")
@PostMapping("/getYs")
public R<JSONObject> getYs(@RequestBody @ApiParam("八字运势") BzDto dto) {
JSONObject jsonObject = bzDataService.getYs(dto);
if (jsonObject!=null){
return R.ok(jsonObject);
}
return R.fail();
}
@ApiOperation(value = "八字页面数据统计")
@PostMapping("/dataStatistics")
public R<JSONObject> dataStatistics(@RequestParam String source, HttpServletRequest request) {
String ip = bzDataService.getIpAddr(request);
bzDataService.dataStatistics(ip,source);
return R.ok();
}
}

5
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorController.java

@ -38,9 +38,6 @@ public class CreatorController extends BaseController {
if(StringUtils.isNotBlank(dto.getPhone())){
dto.setPhone(Sm4Util.sm4Encryption(dto.getPhone()));
}
if(StringUtils.isNotBlank(dto.getOpenId())){
dto.setOpenId(Sm4Util.sm4Encryption(dto.getOpenId()));
}
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<Creator> creators = creatorService.queryPage(dto);
if(creators.size() > 0){
@ -49,8 +46,6 @@ public class CreatorController extends BaseController {
if(StringUtils.isNotBlank(creator.getPhone())){
creator.setPhone(Sm4Util.sm4Decrypt(creator.getPhone()));
}
//暂时注释掉openId解密校验
//creator.setOpenId(Sm4Util.sm4Decrypt(creator.getOpenId()));
}
}
}

159
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java

@ -1,11 +1,14 @@
package com.bnyer.img.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.img.domain.TiktokImg;
import com.bnyer.common.core.web.page.TableDataInfo;
import com.bnyer.img.constants.TiktokConstant;
import com.bnyer.img.dto.*;
import com.bnyer.img.service.*;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -53,11 +56,56 @@ public class CreatorMiniController extends BaseController {
@Autowired
private CreatorProfitService creatorProfitService;
@Autowired
private SignService signService;
@Autowired
private BzDataService bzDataService;
//@TokenCheck
@ApiOperation(value="检查手机号是否重复")
@PostMapping(value = "/checkPhone")
public AjaxResult checkPhone(@Validated @RequestBody @ApiParam("手机号对象") CheckPhoneDto dto){
log.debug("【艺术家小程序】检查手机号是否重复参数为:{}", JSON.toJSONString(dto));
boolean b = creatorService.checkPhone(dto.getPhone());
if(b){
return AjaxResult.error(TiktokConstant.BINDED_PHONE,"当前手机号已绑定艺术家,请重新编辑!");
}else{
return AjaxResult.success();
}
}
//@TokenCheck
@ApiOperation(value="检查搜索码是否重复")
@PostMapping(value = "/checkScanCode")
public AjaxResult checkScanCode(@Validated @RequestBody @ApiParam("搜索码对象") CheckScanCodeDto dto){
log.debug("【艺术家小程序】检查搜索码是否重复参数为:{}", JSON.toJSONString(dto));
boolean b = creatorService.checkScanCode(dto.getScanCode());
if(b){
return AjaxResult.error(TiktokConstant.SCAN_CODE_REPEAT,"搜索码重复,请重新编辑!");
}else{
return AjaxResult.success();
}
}
//@TokenCheck
@ApiOperation(value="检查邀请码是否存在")
@PostMapping(value = "/checkInviteCode")
public AjaxResult checkInviteCode(@Validated @RequestBody @ApiParam("邀请码对象") CheckInviteCodeDto dto){
log.debug("【艺术家小程序】检查邀请码是否存在参数为:{}", JSON.toJSONString(dto));
boolean b = creatorService.checkInviteCode(dto.getInviteCode());
if(b){
return AjaxResult.success();
}else{
return AjaxResult.error(TiktokConstant.INVITE_CODE_NOT_EXIST,"邀请码不存在,请联系客服!");
}
}
//@TokenCheck
@ApiOperation(value="成为艺术家")
@ApiOperation(value="注册艺术家")
@PostMapping(value = "/insertCreator")
public AjaxResult insertCreator(@Validated @RequestBody @ApiParam("艺术家对象") CreatorDto dto){
log.info("【艺术家小程序】成为艺术家参数为:{}", JSON.toJSONString(dto));
log.info("【艺术家小程序】注册艺术家参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(creatorService.insertCreator(dto));
}
@ -85,24 +133,12 @@ public class CreatorMiniController extends BaseController {
return AjaxResult.success(tiktokImgService.delete(ids));
}
//@TokenCheck
@ApiOperation(value="修改艺术家图片")
@PostMapping(value = "/updateTiktokImg")
public AjaxResult updateTiktokImg(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgMiniDto dto){
log.info("【艺术家小程序】艺术家【{}】修改图片参数为:{}",dto.getCreatorId(), JSON.toJSONString(dto));
TiktokImg tiktokImg = dto.extractParam();
tiktokImg.setStatus("0");
return AjaxResult.success(tiktokImgService.update(dto.extractParam()));
}
//@TokenCheck
@ApiOperation(value="新增艺术家图片")
@PostMapping(value = "/insertTiktokImg")
public AjaxResult insertTiktokImg(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgMiniDto dto){
log.info("【艺术家小程序】艺术家【{}】新增图片参数为:{}",dto.getCreatorId(),JSON.toJSONString(dto));
TiktokImg tiktokImg = dto.extractParam();
tiktokImg.setStatus("0");
return AjaxResult.success(tiktokImgService.insert(tiktokImg));
return AjaxResult.success(tiktokImgService.insert(dto));
}
//@TokenCheck
@ -137,17 +173,19 @@ public class CreatorMiniController extends BaseController {
//@TokenCheck
@ApiOperation(value="查询公告列表")
@GetMapping(value = "/getNoticeList")
public AjaxResult getNoticeList(){
return AjaxResult.success(noticeService.queryList());
@PostMapping(value = "/getNoticeList")
public TableDataInfo getNoticeList(@RequestBody @ApiParam("分页参数") BasePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
return getDataTable(noticeService.queryList());
}
//@TokenCheck
@ApiOperation(value="查询邀请记录")
@GetMapping(value = "/getInviteLog/{creatorId}")
public AjaxResult getInviteLog(@PathVariable @ApiParam("艺术家id") Long creatorId){
log.info("【艺术家小程序】查询艺术家id:【{}】邀请记录:",creatorId);
return AjaxResult.success(inviteLogService.queryFrontList(creatorId));
@PostMapping(value = "/getInviteLog")
public TableDataInfo getInviteLog(@RequestBody @ApiParam("艺术家分页对象") CreatorInviteLogPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
log.info("【艺术家小程序】查询艺术家id:【{}】邀请记录:",dto.getCreatorId());
return getDataTable(inviteLogService.queryFrontList(dto.getCreatorId()));
}
//@TokenCheck
@ -159,11 +197,12 @@ public class CreatorMiniController extends BaseController {
}
//@TokenCheck
@ApiOperation(value="查询指定艺术家提现记录列表")
@GetMapping(value = "/getWithdrawList/{creatorId}")
public AjaxResult getWithdrawList(@PathVariable @ApiParam("艺术家id") Long creatorId){
log.info("【艺术家小程序】查询指定艺术家id【{}】提现记录列表",creatorId);
return AjaxResult.success(withdrawLogService.queryFrontList(creatorId));
@ApiOperation(value="查询指定艺术家提现记录分页")
@PostMapping(value = "/getWithdrawList")
public TableDataInfo getWithdrawList(@RequestBody @ApiParam("艺术家对象") CreatorWithdrawPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
log.info("【艺术家小程序】查询指定艺术家id【{}】提现记录列表",dto.getCreatorId());
return getDataTable(withdrawLogService.queryFrontList(dto.getCreatorId()));
}
//@TokenCheck
@ -209,8 +248,9 @@ public class CreatorMiniController extends BaseController {
//@TokenCheck
@ApiOperation(value="查询指定艺术家即将入账收益列表")
@PostMapping(value = "/queryFrontPreProfit")
public AjaxResult queryFrontPreProfit(@Validated @RequestBody @ApiParam("即将入账对象") ProfitStatusDto params){
return AjaxResult.success(creatorProfitService.queryFrontPreProfit(params.getCreatorId(),params.getType()));
public TableDataInfo queryFrontPreProfit(@Validated @RequestBody @ApiParam("即将入账对象") ProfitStatusDto params){
PageHelper.startPage(params.getPageNum(), params.getPageSize());
return getDataTable(creatorProfitService.queryFrontPreProfit(params.getCreatorId(),params.getType()));
}
//@TokenCheck
@ -223,8 +263,9 @@ public class CreatorMiniController extends BaseController {
//@TokenCheck
@ApiOperation(value="查询指定艺术家已入账收益列表")
@PostMapping(value = "/queryFrontInProfitAmt")
public AjaxResult queryFrontInProfitAmt(@Validated @RequestBody @ApiParam("已入账对象") ProfitStatusDto params){
return AjaxResult.success(creatorProfitService.queryFrontInProfitAmt(params.getCreatorId(),params.getType()));
public TableDataInfo queryFrontInProfitAmt(@Validated @RequestBody @ApiParam("已入账对象") ProfitStatusDto params){
PageHelper.startPage(params.getPageNum(), params.getPageSize());
return getDataTable(creatorProfitService.queryFrontInProfitAmt(params.getCreatorId(),params.getType()));
}
//@TokenCheck
@ -237,8 +278,16 @@ public class CreatorMiniController extends BaseController {
//@TokenCheck
@ApiOperation(value="查询指定艺术家转入钱包收益列表")
@PostMapping(value = "/queryFrontEndProfitAmt")
public AjaxResult queryFrontEndProfitAmt(@Validated @RequestBody @ApiParam("转入钱包对象") ProfitStatusDto params){
return AjaxResult.success(creatorProfitService.queryFrontEndProfitAmt(params.getCreatorId(),params.getType()));
public TableDataInfo queryFrontEndProfitAmt(@Validated @RequestBody @ApiParam("转入钱包对象") ProfitStatusDto params){
PageHelper.startPage(params.getPageNum(), params.getPageSize());
return getDataTable(creatorProfitService.queryFrontEndProfitAmt(params.getCreatorId(),params.getType()));
}
//@TokenCheck
@ApiOperation(value="查询指定艺术家转入钱包收益详情")
@GetMapping(value = "/queryFrontEndAmtDetails/{id}")
public AjaxResult queryFrontEndAmtDetails(@PathVariable @ApiParam("收益id") Long id){
return AjaxResult.success(creatorProfitService.queryFrontEndAmtDetails(id));
}
//@TokenCheck
@ -251,9 +300,49 @@ public class CreatorMiniController extends BaseController {
//@TokenCheck
@PostMapping("/login")
@ApiOperation("小程序艺术家登录")
public AjaxResult login(@Validated @ApiParam("艺术家数据") @RequestBody WxLoginDto param)
public AjaxResult login(@Validated @ApiParam("艺术家数据") @RequestBody CreatorLoginDto param)
{
log.info("小程序艺术家数据参数为:{}", JSON.toJSON(param));
return AjaxResult.success(creatorService.login(param));
}
//@TokenCheck
@ApiOperation(value="查询艺术家分类图片数量")
@GetMapping(value = "/queryCreatorTypeImgNum/{creatorId}")
public AjaxResult queryCreatorTypeImgNum(@PathVariable @ApiParam("艺术家id") Long creatorId){
return AjaxResult.success(tiktokImgService.queryCreatorTypeImgNum(creatorId));
}
//@TokenCheck
@PostMapping("/onlineOrOfflineImg")
@ApiOperation("小程序艺术家上下架图片")
public AjaxResult onlineOrOfflineImg(@Validated @ApiParam("艺术家图片数据") @RequestBody StatusDto param)
{
log.info("小程序艺术家上下架图片参数为:{}", JSON.toJSON(param));
return AjaxResult.success(tiktokImgService.onlineOrOfflineImg(param));
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="获取上传页面标签列表")
@GetMapping(value = "/signList")
public AjaxResult querySignList(){
return AjaxResult.success(signService.querySignList());
}
//@TokenCheck
@ApiOperation(value = "八字算命")
@PostMapping("/getYs")
public AjaxResult getYs(@RequestBody @ApiParam("八字运势") BzDto dto) {
JSONObject jsonObject = bzDataService.getYs(dto);
if (jsonObject!=null){
return AjaxResult.success(jsonObject);
}
return AjaxResult.error();
}
@ApiOperation(value="检查某艺术家当日上传次数是否超标")
@PostMapping(value = "/checkCreatorCanUpload")
public AjaxResult checkCreatorCanUpload(@Validated @RequestBody @ApiParam("检查超标对象") CreatorUploadDto dto){
log.debug("【艺术家小程序】检查艺术家当日上传次数是否超标参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(creatorProfitService.checkCreatorCanUpload(dto.getCreatorId()));
}
}

58
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java

@ -1,6 +1,7 @@
package com.bnyer.img.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.common.core.web.page.TableDataInfo;
@ -9,6 +10,7 @@ import com.bnyer.img.domain.Feedback;
import com.bnyer.img.dto.*;
import com.bnyer.img.service.*;
import com.bnyer.img.vo.CreatorDetailsVo;
import com.bnyer.img.vo.SignImgVo;
import com.bnyer.img.vo.TiktokImgVo;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
@ -55,6 +57,12 @@ public class FhMiniController extends BaseController {
@Autowired
private CreatorProfitService creatorProfitService;
@Autowired
private SignService signService;
@Autowired
private BzDataService bzDataService;
//@TokenCheck
@ApiOperation(value="查询banner列表")
@GetMapping(value = "/listBanner")
@ -197,18 +205,26 @@ public class FhMiniController extends BaseController {
return getDataTable(tiktokImgVos);
}
//@TokenCheck
@ApiOperation(value="检查某平台用户当日下载次数是否超标")
@PostMapping(value = "/checkUserCanDownload")
public AjaxResult checkUserCanDownload(@Validated @RequestBody @ApiParam("检查超标对象") checkUserCanDownloadDto dto){
log.debug("【快手图文小程序】检查某平台用户当日下载次数是否超标参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(fhUserService.checkUserCanDownload(dto.getUserId(),dto.getPlatform(),dto.getAppType()));
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账广告收益")
@PostMapping(value = "/insertOrUpdatePreAdProfit")
public AjaxResult insertOrUpdatePreAdProfit(@Validated @RequestBody @ApiParam("即将入账广告对象") CreatorProfitAdInsertDto dto){
log.debug("【快手图文小程序】新增/更新艺术家即将入账广告收益参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(creatorProfitService.insertCreatorProfit(dto.extractParam()));
return AjaxResult.success(creatorProfitService.insertCreatorProfit(dto));
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账邀请收益")
@PostMapping(value = "/insertOrUpdatePreInviteProfit")
public AjaxResult insertOrUpdatePreInviteProfit(@Validated @RequestBody @ApiParam("即将入账邀请对象") CreatorProfitAdInsertDto dto){
public AjaxResult insertOrUpdatePreInviteProfit(@Validated @RequestBody @ApiParam("即将入账邀请对象") CreatorProfitInviteInsertDto dto){
log.debug("【快手图文小程序】新增/更新艺术家即将入账邀请收益参数为:{}", JSON.toJSONString(dto));
creatorProfitService.insertInvitedProfit(dto.extractParam());
return AjaxResult.success();
@ -232,4 +248,42 @@ public class FhMiniController extends BaseController {
return AjaxResult.error("该艺术家不存在!");
}
}
//@TokenCheck
@ApiOperation(value="查询小程序端标签分页")
@PostMapping(value = "/signImgList")
public TableDataInfo signImgList(@RequestBody @ApiParam("分页对象") SignTypePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<SignImgVo> signImgVos = signService.queryFrontSignByTypeId(dto.getTypeId());
return getDataTable(signImgVos);
}
//@TokenCheck
@ApiOperation(value="根据分类id和便签Id查询图片分页")
@PostMapping(value = "/querySignImg")
public TableDataInfo querySignImg(@RequestBody @ApiParam("分页对象") SignImgPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgs = tiktokImgService.querySignImgBySignIdAndTypeId(dto.getSignId(), dto.getTypeId());
return getDataTable(tiktokImgs);
}
//@TokenCheck
@ApiOperation(value="根据标签名称查询图片分页")
@PostMapping(value = "/querySignImgBySignName")
public TableDataInfo querySignImgBySignName(@RequestBody @ApiParam("分页对象") SignImgNamePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgs = tiktokImgService.queryImgPageBySignName(dto.getSignName());
return getDataTable(tiktokImgs);
}
//@TokenCheck
@ApiOperation(value = "八字算命")
@PostMapping("/getYs")
public AjaxResult getYs(@RequestBody @ApiParam("八字运势") BzDto dto) {
JSONObject jsonObject = bzDataService.getYs(dto);
if (jsonObject!=null){
return AjaxResult.success(jsonObject);
}
return AjaxResult.error();
}
}

70
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/SignController.java

@ -1,14 +1,80 @@
package com.bnyer.img.controller;
import com.alibaba.fastjson.JSON;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.common.core.web.page.TableDataInfo;
import com.bnyer.img.domain.Sign;
import com.bnyer.img.dto.SignDto;
import com.bnyer.img.dto.SignPageDto;
import com.bnyer.img.dto.StatusDto;
import com.bnyer.img.service.SignService;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(value = "【图文平台】图片标签接口",tags = "【图文平台】图片标签接口")
@RestController
@RequestMapping("/img/sign")
@Slf4j
public class SignController extends BaseController {
@Autowired
private SignService signService;
//@RequiresPermissions("system:config:list")
@ApiOperation(value="查询sign分页")
@PostMapping("/page")
public TableDataInfo pageSign(@RequestBody @ApiParam("分页对象") SignPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<Sign> signs = signService.queryPage(dto);
return getDataTable(signs);
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="新增sign")
@PostMapping(value = "/insert")
public AjaxResult insertSign(@Validated @RequestBody @ApiParam("sign对象") SignDto dto){
log.debug("【图文平台后台】新增sign参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(signService.insert(dto.extractParam()));
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="修改sign")
@PostMapping(value = "/update")
public AjaxResult updateSign(@Validated @RequestBody @ApiParam("sign对象")SignDto dto){
log.debug("【图文平台后台】修改sign参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(signService.update(dto.extractParam()));
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="删除sign")
@DeleteMapping(value = "/delete/{ids}")
public AjaxResult deleteSign(@PathVariable @ApiParam("主键ids") List<Long> ids){
log.debug("【图文平台后台】删除sign参数为:{}", JSON.toJSONString(ids));
return AjaxResult.success(signService.delete(ids));
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="查询sign详情")
@GetMapping(value = "/details/{id}")
public AjaxResult detailsSign(@PathVariable @ApiParam("主键id") Long id){
log.debug("【图文平台后台】查询sign详情参数为:{}", id);
return AjaxResult.success(signService.queryDetails(id));
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="变更type显示状态")
@PostMapping(value = "/changeStatus")
public AjaxResult changeStatus(@Validated @RequestBody @ApiParam("type状态对象") StatusDto dto){
log.debug("【图文平台后台】变更type参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(signService.changeStatus(dto.getId(),dto.getStatus()));
}
}

12
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokImgController.java

@ -39,12 +39,12 @@ public class TiktokImgController extends BaseController {
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="新增TiktokImg")
@PostMapping(value = "/insert")
public AjaxResult addTiktokImg(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgDto dto){
log.debug("【图文平台后台】新增TiktokImg参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(tiktokImgService.insert(dto.extractParam()));
}
// @ApiOperation(value="新增TiktokImg")
// @PostMapping(value = "/insert")
// public AjaxResult addTiktokImg(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgDto dto){
// log.debug("【图文平台后台】新增TiktokImg参数为:{}", JSON.toJSONString(dto));
// return AjaxResult.success(tiktokImgService.insert(dto.extractParam()));
// }
//@RequiresPermissions("system:config:list")
@ApiOperation(value="修改TiktokImg")

73
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java

@ -1,8 +1,7 @@
package com.bnyer.img.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.bnyer.common.core.exception.ServiceException;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.common.core.web.page.TableDataInfo;
@ -10,7 +9,10 @@ import com.bnyer.img.constants.TiktokConstant;
import com.bnyer.img.domain.Feedback;
import com.bnyer.img.dto.*;
import com.bnyer.img.service.*;
import com.bnyer.img.vo.*;
import com.bnyer.img.vo.CreatorDetailsVo;
import com.bnyer.img.vo.CreatorVo;
import com.bnyer.img.vo.SignImgVo;
import com.bnyer.img.vo.TiktokImgVo;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -20,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -57,6 +58,12 @@ public class TiktokMiniController extends BaseController {
@Autowired
private CreatorProfitService creatorProfitService;
@Autowired
private SignService signService;
@Autowired
private BzDataService bzDataService;
//@TokenCheck
@ApiOperation(value="查询banner列表")
@GetMapping(value = "/listBanner")
@ -99,14 +106,8 @@ public class TiktokMiniController extends BaseController {
@PostMapping(value = "/creatorImgsPage")
public TableDataInfo creatorImgsPage(@RequestBody @ApiParam("分页对象") BasePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
//List<CreatorVo> list = new ArrayList<>();
List<CreatorVo> creatorVos = creatorService.queryThreeImgCreatorList();
// for (CreatorVo creatorVo : creatorVos) {
// if(CollectionUtil.isNotEmpty(creatorVo.getImgList())){
// list.add(creatorVo);
// }
// }
//TODO 此处图片列表为空时,去除为空的部分分页会有BUG
//TODO 此处图片列表为空时,去除为空的部分分页会有BUG,此处改为了老的数据会优先排列,暂时解决了问题
return getDataTable(creatorVos);
}
@ -207,18 +208,26 @@ public class TiktokMiniController extends BaseController {
return getDataTable(tiktokImgVos);
}
//@TokenCheck
@ApiOperation(value="检查某平台用户当日下载次数是否超标")
@PostMapping(value = "/checkUserCanDownload")
public AjaxResult checkUserCanDownload(@Validated @RequestBody @ApiParam("检查超标对象") checkUserCanDownloadDto dto){
log.debug("【抖音图文小程序】检查某平台用户当日下载次数是否超标参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(tiktokUserService.checkUserCanDownload(dto.getUserId(),dto.getPlatform(),dto.getAppType()));
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账广告收益")
@PostMapping(value = "/insertOrUpdatePreAdProfit")
public AjaxResult insertOrUpdatePreAdProfit(@Validated @RequestBody @ApiParam("即将入账广告对象") CreatorProfitAdInsertDto dto){
log.debug("【抖音图文小程序】新增/更新艺术家即将入账广告收益参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(creatorProfitService.insertCreatorProfit(dto.extractParam()));
return AjaxResult.success(creatorProfitService.insertCreatorProfit(dto));
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账邀请收益")
@PostMapping(value = "/insertOrUpdatePreInviteProfit")
public AjaxResult insertOrUpdatePreInviteProfit(@Validated @RequestBody @ApiParam("即将入账邀请对象") CreatorProfitAdInsertDto dto){
public AjaxResult insertOrUpdatePreInviteProfit(@Validated @RequestBody @ApiParam("即将入账邀请对象") CreatorProfitInviteInsertDto dto){
log.debug("【抖音图文小程序】新增/更新艺术家即将入账邀请收益参数为:{}", JSON.toJSONString(dto));
creatorProfitService.insertInvitedProfit(dto.extractParam());
return AjaxResult.success();
@ -242,4 +251,42 @@ public class TiktokMiniController extends BaseController {
return AjaxResult.error("该艺术家不存在!");
}
}
//@TokenCheck
@ApiOperation(value="查询小程序端标签分页")
@PostMapping(value = "/signImgList")
public TableDataInfo signImgList(@RequestBody @ApiParam("分页对象") SignTypePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<SignImgVo> signImgVos = signService.queryFrontSignByTypeId(dto.getTypeId());
return getDataTable(signImgVos);
}
//@TokenCheck
@ApiOperation(value="根据分类id和便签Id查询图片分页")
@PostMapping(value = "/querySignImg")
public TableDataInfo querySignImg(@RequestBody @ApiParam("分页对象") SignImgPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgs = tiktokImgService.querySignImgBySignIdAndTypeId(dto.getSignId(), dto.getTypeId());
return getDataTable(tiktokImgs);
}
//@TokenCheck
@ApiOperation(value="根据标签名称查询图片分页")
@PostMapping(value = "/querySignImgBySignName")
public TableDataInfo querySignImgBySignName(@RequestBody @ApiParam("分页对象") SignImgNamePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgs = tiktokImgService.queryImgPageBySignName(dto.getSignName());
return getDataTable(tiktokImgs);
}
//@TokenCheck
@ApiOperation(value = "八字算命")
@PostMapping("/getYs")
public AjaxResult getYs(@RequestBody @ApiParam("八字运势") BzDto dto) {
JSONObject jsonObject = bzDataService.getYs(dto);
if (jsonObject!=null){
return AjaxResult.success(jsonObject);
}
return AjaxResult.error();
}
}

58
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java

@ -1,6 +1,7 @@
package com.bnyer.img.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.common.core.web.page.TableDataInfo;
@ -9,6 +10,7 @@ import com.bnyer.img.domain.Feedback;
import com.bnyer.img.dto.*;
import com.bnyer.img.service.*;
import com.bnyer.img.vo.CreatorDetailsVo;
import com.bnyer.img.vo.SignImgVo;
import com.bnyer.img.vo.TiktokImgVo;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
@ -55,6 +57,12 @@ public class WxMiniController extends BaseController {
@Autowired
private CreatorProfitService creatorProfitService;
@Autowired
private SignService signService;
@Autowired
private BzDataService bzDataService;
//@TokenCheck
@ApiOperation(value="查询banner列表")
@GetMapping(value = "/listBanner")
@ -197,18 +205,26 @@ public class WxMiniController extends BaseController {
return getDataTable(tiktokImgVos);
}
//@TokenCheck
@ApiOperation(value="检查某平台用户当日下载次数是否超标")
@PostMapping(value = "/checkUserCanDownload")
public AjaxResult checkUserCanDownload(@Validated @RequestBody @ApiParam("检查超标对象") checkUserCanDownloadDto dto){
log.debug("【微信图文小程序】检查某平台用户当日下载次数是否超标参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(wxUserService.checkUserCanDownload(dto.getUserId(),dto.getPlatform(),dto.getAppType()));
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账广告收益")
@PostMapping(value = "/insertOrUpdatePreAdProfit")
public AjaxResult insertOrUpdatePreAdProfit(@Validated @RequestBody @ApiParam("即将入账广告对象") CreatorProfitAdInsertDto dto){
log.debug("【微信图文小程序】新增/更新艺术家即将入账广告收益参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(creatorProfitService.insertCreatorProfit(dto.extractParam()));
return AjaxResult.success(creatorProfitService.insertCreatorProfit(dto));
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账邀请收益")
@PostMapping(value = "/insertOrUpdatePreInviteProfit")
public AjaxResult insertOrUpdatePreInviteProfit(@Validated @RequestBody @ApiParam("即将入账邀请对象") CreatorProfitAdInsertDto dto){
public AjaxResult insertOrUpdatePreInviteProfit(@Validated @RequestBody @ApiParam("即将入账邀请对象") CreatorProfitInviteInsertDto dto){
log.debug("【微信图文小程序】新增/更新艺术家即将入账邀请收益参数为:{}", JSON.toJSONString(dto));
creatorProfitService.insertInvitedProfit(dto.extractParam());
return AjaxResult.success();
@ -232,4 +248,42 @@ public class WxMiniController extends BaseController {
return AjaxResult.error("该艺术家不存在!");
}
}
//@TokenCheck
@ApiOperation(value="查询小程序端标签分页")
@PostMapping(value = "/signImgList")
public TableDataInfo signImgList(@RequestBody @ApiParam("分页对象") SignTypePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<SignImgVo> signImgVos = signService.queryFrontSignByTypeId(dto.getTypeId());
return getDataTable(signImgVos);
}
//@TokenCheck
@ApiOperation(value="根据分类id和便签Id查询图片分页")
@PostMapping(value = "/querySignImg")
public TableDataInfo querySignImg(@RequestBody @ApiParam("分页对象") SignImgPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgs = tiktokImgService.querySignImgBySignIdAndTypeId(dto.getSignId(), dto.getTypeId());
return getDataTable(tiktokImgs);
}
//@TokenCheck
@ApiOperation(value="根据标签名称查询图片分页")
@PostMapping(value = "/querySignImgBySignName")
public TableDataInfo querySignImgBySignName(@RequestBody @ApiParam("分页对象") SignImgNamePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgs = tiktokImgService.queryImgPageBySignName(dto.getSignName());
return getDataTable(tiktokImgs);
}
//@TokenCheck
@ApiOperation(value = "八字算命")
@PostMapping("/getYs")
public AjaxResult getYs(@RequestBody @ApiParam("八字运势") BzDto dto) {
JSONObject jsonObject = bzDataService.getYs(dto);
if (jsonObject!=null){
return AjaxResult.success(jsonObject);
}
return AjaxResult.error();
}
}

61
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/BzData.java

@ -0,0 +1,61 @@
package com.bnyer.img.domain;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
@ApiModel(value="com-bnyer-img-domain-BzData")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "img_bz_data")
public class BzData {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="主键id")
private Long id;
/**
* 日期
*/
@TableField(value = "date")
@ApiModelProperty(value="日期 年月日")
private String date;
/**
* pv
*/
@TableField(value = "pv")
@ApiModelProperty(value="pv")
private Long pv;
/**
* uv
*/
@TableField(value = "uv")
@ApiModelProperty(value="uv")
private Long uv;
/**
* 平台(0->Hub;1->抖音;2->快手;3->微信)
*/
@TableField(value = "source")
@ApiModelProperty(value="source")
private String source;
/**
* 防止重复唯一标识
*/
@TableField(value = "mark")
@ApiModelProperty(value="mark")
private String mark;
private static final long serialVersionUID = 1L;
}

19
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/Creator.java

@ -26,11 +26,11 @@ import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "img_creator")
public class Creator extends BaseDomain {
public class Creator extends BaseDomain {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.INPUT)
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
@ -42,11 +42,11 @@ public class Creator extends BaseDomain {
private String name;
/**
* 姓名
* 密码
*/
@TableField(value = "open_id")
@ApiModelProperty(value="微信id")
private String openId;
@TableField(value = "password")
@ApiModelProperty(value="密码")
private String password;
/**
* 搜索码
@ -111,13 +111,6 @@ public class Creator extends BaseDomain {
@ApiModelProperty(value="是否活跃(0->不活跃;1->活跃 连续10天以上更新内容)")
private String isHot;
/**
* 是否显示 (0->隐藏1->显示)
*/
@TableField(value = "is_show")
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)")
private String isShow;
/**
* 最后登录时间
*/

23
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/ImgSignRelation.java

@ -4,10 +4,14 @@ 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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
@ApiModel(value="com-bnyer-img-domain-ImgSignRelation")
@Getter
@Setter
@ -15,11 +19,11 @@ import lombok.*;
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "img_img_sign_relation")
public class ImgSignRelation extends BaseDomain {
public class ImgSignRelation implements Serializable {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.INPUT)
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键id")
private Long id;
@ -30,6 +34,13 @@ public class ImgSignRelation extends BaseDomain {
@ApiModelProperty(value="图片id")
private Long imgId;
/**
* 分类id
*/
@TableField(value = "type_id")
@ApiModelProperty(value="分类id")
private Long typeId;
/**
* 标签id
*/
@ -37,5 +48,13 @@ public class ImgSignRelation extends BaseDomain {
@ApiModelProperty(value="标签id")
private Long signId;
/**
* 创建时间
*/
@TableField(value = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="创建时间")
private Date createTime;
private static final long serialVersionUID = 1L;
}

7
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/Sign.java

@ -30,5 +30,12 @@ public class Sign extends BaseDomain{
@ApiModelProperty(value="标签名称")
private String name;
/**
* 背景图
*/
@TableField(value = "img")
@ApiModelProperty(value="背景图")
private String img;
private static final long serialVersionUID = 1L;
}

35
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/BzDto.java

@ -0,0 +1,35 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* @Author qyh
* @Date 2022/7/13 21:27
* @Description
*/
@Getter
@Setter
@ApiModel("八字运势接收类")
public class BzDto {
@NotBlank(message = "姓不能为空!")
@ApiModelProperty(value="姓")
private String lastName;
@NotBlank(message = "名不能为空!")
@ApiModelProperty(value="名")
private String firstName;
@NotBlank(message = "性别不能为空!")
@ApiModelProperty(value="性别")
private String sex;
@NotBlank(message = "出生年月不能为空!")
@ApiModelProperty(value="出生年月")
//19990209060808这样的
private String birth;
}

20
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CheckInviteCodeDto.java

@ -0,0 +1,20 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("邀请码接收类")
public class CheckInviteCodeDto implements Serializable {
@NotBlank(message = "邀请码不能为空!")
@ApiModelProperty(value="邀请码")
private String inviteCode;
}

20
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CheckPhoneDto.java

@ -0,0 +1,20 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("手机号接收类")
public class CheckPhoneDto implements Serializable {
@NotBlank(message = "手机号不能为空!")
@ApiModelProperty(value="手机号")
private String phone;
}

21
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CheckScanCodeDto.java

@ -0,0 +1,21 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("搜索码接收类")
public class CheckScanCodeDto implements Serializable {
@NotBlank(message = "搜索码不能为空!")
@ApiModelProperty(value="搜索码")
private String scanCode;
}

13
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorDto.java

@ -14,8 +14,9 @@ import java.io.Serializable;
@ApiModel("艺术家接收类")
public class CreatorDto implements Serializable {
@ApiModelProperty(value="主键Id")
private Long id;
@NotBlank(message = "昵称不能为空!")
@ApiModelProperty(value="昵称")
private String name;
@NotBlank(message = "搜索码不能为空!")
@ApiModelProperty(value="搜索码")
@ -25,6 +26,14 @@ public class CreatorDto implements Serializable {
@ApiModelProperty(value="手机号")
private String phone;
@NotBlank(message = "密码不能为空!")
@ApiModelProperty(value="密码")
private String password;
//@NotBlank(message = "头像不能为空!")
@ApiModelProperty(value="头像img地址")
private String img;
@ApiModelProperty(value="简介")
private String intro;

21
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorInviteLogPageDto.java

@ -0,0 +1,21 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@ApiModel("艺术家邀请记录分页接收类")
public class CreatorInviteLogPageDto extends BasePageDto {
@NotNull(message = "艺术家id不能为空!")
@ApiModelProperty(value="艺术家id")
private Long creatorId;
}

23
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorLoginDto.java

@ -0,0 +1,23 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("艺术家登录入参")
public class CreatorLoginDto implements Serializable {
@NotBlank(message = "手机号不能为空!")
@ApiModelProperty(value = "手机号")
private String phone;
@NotBlank(message = "密码不能为空!")
@ApiModelProperty(value = "密码")
private String password;
}

3
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorPageDto.java

@ -16,9 +16,6 @@ public class CreatorPageDto extends BasePageDto {
@ApiModelProperty(value="昵称")
private String name;
@ApiModelProperty(value="微信id")
private String openId;
@ApiModelProperty(value="搜索码")
private String scanCode;

10
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitAdInsertDto.java

@ -1,7 +1,5 @@
package com.bnyer.img.dto;
import com.bnyer.common.core.utils.bean.BeanUtils;
import com.bnyer.img.domain.CreatorProfit;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
@ -37,9 +35,7 @@ public class CreatorProfitAdInsertDto implements Serializable {
@ApiModelProperty(value="应用类型(0->节点壁纸)")
private String appType;
public CreatorProfit extractParam(){
CreatorProfit creatorProfit = new CreatorProfit();
BeanUtils.copyProperties(this, creatorProfit);
return creatorProfit;
}
@NotNull(message = "用户id不能为空!")
@ApiModelProperty(value="用户id")
private Long userId;
}

45
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitInviteInsertDto.java

@ -0,0 +1,45 @@
package com.bnyer.img.dto;
import com.bnyer.common.core.utils.bean.BeanUtils;
import com.bnyer.img.domain.CreatorProfit;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("艺术家新增更新邀请收益接收类")
public class CreatorProfitInviteInsertDto implements Serializable {
@NotNull(message = "艺术家id不能为空!")
@ApiModelProperty(value="艺术家id")
private Long creatorId;
@NotBlank(message = "收益人搜索码不能为空!")
@ApiModelProperty(value="收益人搜索码")
private String scanCode;
@NotNull(message = "图片id不能为空!")
@ApiModelProperty(value="图片id")
private Long imgId;
@NotBlank(message = "结算平台不能为空!")
@ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@NotBlank(message = "应用类型不能为空!")
@ApiModelProperty(value="应用类型(0->节点壁纸)")
private String appType;
public CreatorProfit extractParam(){
CreatorProfit creatorProfit = new CreatorProfit();
BeanUtils.copyProperties(this, creatorProfit);
return creatorProfit;
}
}

27
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorUploadDto.java

@ -0,0 +1,27 @@
package com.bnyer.img.dto;
import com.bnyer.common.core.annotation.Desensitized;
import com.bnyer.common.core.enums.SensitiveTypeEnum;
import com.bnyer.common.core.utils.Sm4Util;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.img.domain.CreatorAccount;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("艺术家上传次数接收类")
public class CreatorUploadDto implements Serializable {
@ApiModelProperty(value="艺术家id")
@NotNull(message = "艺术家id不能为空!")
private Long creatorId;
}

21
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorWithdrawPageDto.java

@ -0,0 +1,21 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@ApiModel("艺术家提现记录分页接收类")
public class CreatorWithdrawPageDto extends BasePageDto {
@NotNull(message = "艺术家id不能为空!")
@ApiModelProperty(value="艺术家id")
private Long creatorId;
}

21
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ImgSignRelationPageDto.java

@ -0,0 +1,21 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@ApiModel("imgSignRelation分页接收类")
public class ImgSignRelationPageDto extends BasePageDto {
@ApiModelProperty(value="是否显示")
private String isShow;
@ApiModelProperty(value="图片id")
private Long imgId;
@ApiModelProperty(value="标签id")
private Long signId;
}

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ProfitStatusDto.java

@ -13,7 +13,7 @@ import java.io.Serializable;
@Getter
@Setter
@ApiModel("入账类型接收类")
public class ProfitStatusDto implements Serializable {
public class ProfitStatusDto extends BasePageDto {
@NotNull(message = "艺术家id不能为空!")
@ApiModelProperty(value="艺术家id")

32
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignDto.java

@ -0,0 +1,32 @@
package com.bnyer.img.dto;
import com.bnyer.common.core.utils.bean.BeanUtils;
import com.bnyer.img.domain.Sign;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("sign接收类")
public class SignDto implements Serializable {
@ApiModelProperty(value="主键id")
private Long id;
@ApiModelProperty(value="标签名称")
private String name;
@ApiModelProperty(value="背景图")
private String img;
public Sign extractParam(){
Sign sign = new Sign();
BeanUtils.copyProperties(this,sign);
return sign;
}
}

19
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignImgNamePageDto.java

@ -0,0 +1,19 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@ApiModel("标签图片分页根据标签名称接收类")
public class SignImgNamePageDto extends BasePageDto {
@NotBlank(message = "标签名称不能为空!")
@ApiModelProperty(value="标签名称")
private String signName;
}

22
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignImgPageDto.java

@ -0,0 +1,22 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@ApiModel("标签图片分页接收类")
public class SignImgPageDto extends BasePageDto {
@NotNull(message = "分类id不能为空!")
@ApiModelProperty(value="分类id")
private Long typeId;
@NotNull(message = "标签id不能为空!")
@ApiModelProperty(value="标签id")
private Long signId;
}

19
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignPageDto.java

@ -0,0 +1,19 @@
package com.bnyer.img.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@ApiModel("sign分页接收类")
public class SignPageDto extends BasePageDto {
@ApiModelProperty(value="标签名称")
private String name;
@ApiModelProperty(value="是否显示")
private String isShow;
}

18
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/SignTypePageDto.java

@ -0,0 +1,18 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@ApiModel("标签分类分页接收类")
public class SignTypePageDto extends BasePageDto {
@NotNull(message = "分类id不能为空!")
@ApiModelProperty(value="分类id")
private Long typeId;
}

8
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/TiktokImgMiniDto.java

@ -2,12 +2,14 @@ package com.bnyer.img.dto;
import com.bnyer.common.core.utils.bean.BeanUtils;
import com.bnyer.img.domain.TiktokImg;
import com.bnyer.img.vo.SignVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
@Getter
@ -27,6 +29,12 @@ public class TiktokImgMiniDto implements Serializable {
@ApiModelProperty(value="分类id")
private Long typeId;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
@ApiModelProperty(value="标签id列表")
private List<Long> signList;
public TiktokImg extractParam(){
TiktokImg tiktokImg = new TiktokImg();
BeanUtils.copyProperties(this,tiktokImg);

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/WithdrawOrderDto.java

@ -10,7 +10,7 @@ import java.io.Serializable;
@Getter
@Setter
@ApiModel("notice分页接收类")
@ApiModel("提现记录明细接收类")
public class WithdrawOrderDto implements Serializable {
@NotBlank(message = "订单id不能为空!")

27
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/checkUserCanDownloadDto.java

@ -0,0 +1,27 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("检查用户下载次数接收类")
public class checkUserCanDownloadDto implements Serializable {
@ApiModelProperty(value="用户id")
private Long userId;
@NotNull(message = "平台不能为空!")
@ApiModelProperty(value="平台")
private String platform;
@NotNull(message = "应用不能为空!")
@ApiModelProperty(value="应用")
private String appType;
}

15
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/BzDataMapper.java

@ -0,0 +1,15 @@
package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.img.domain.Banner;
import com.bnyer.img.domain.BzData;
import com.bnyer.img.vo.BannerVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface BzDataMapper extends BaseMapper<BzData> {
}

8
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java

@ -171,4 +171,12 @@ public interface CreatorProfitMapper extends BaseMapper<CreatorProfit> {
* @return -
*/
BigDecimal queryLastDayInviteProfit(@Param("creatorId") Long creatorId);
/**
* 查询转入钱包收益详情
* @param id 收益id
* @return -
*/
CreatorProfitEndAmtVo queryFrontEndAmtDetails(@Param("id") Long id);
}

27
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/ImgSignRelationMapper.java

@ -2,8 +2,35 @@ package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.img.domain.ImgSignRelation;
import com.bnyer.img.vo.SignRelationVo;
import com.bnyer.img.vo.SignVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ImgSignRelationMapper extends BaseMapper<ImgSignRelation> {
/**
* 根据图片id查询标签集合
* @param imgId 图片id
* @return -
*/
List<SignVo> querySignListByImgId(@Param("imgId") Long imgId);
/**
* 根据图片id查询标签集合
* @param imgId 图片id
* @return -
*/
List<SignRelationVo> querySignRelationByImgId(@Param("imgId") Long imgId);
/**
* 批量新增标签
* @param imgId 图片id
* @param typeId 分类id
* @param signIds 标签id列表
*/
void batctInsert(@Param("imgId") Long imgId, @Param("typeId") Long typeId, @Param("signIds") List<Long> signIds);
}

17
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/SignMapper.java

@ -2,8 +2,25 @@ package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.img.domain.Sign;
import com.bnyer.img.vo.SignImgVo;
import com.bnyer.img.vo.SignVo;
import com.bnyer.img.vo.TiktokImgVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SignMapper extends BaseMapper<Sign> {
/**
* 查询上传页面标签列表
* @return -
*/
List<SignVo> querySignList();
/**
* 根据分类id查询小程序端标签分页
* @return -
*/
List<SignImgVo> queryFrontSign(@Param("typeId") Long typeId);
}

26
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/TiktokImgMapper.java

@ -2,6 +2,7 @@ package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.img.domain.TiktokImg;
import com.bnyer.img.vo.ImgSignVo;
import com.bnyer.img.vo.TiktokImgVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -16,7 +17,7 @@ public interface TiktokImgMapper extends BaseMapper<TiktokImg> {
* @param typeId 分类Id
* @return -
*/
List<TiktokImgVo> queryInList(@Param("creatorId")String creatorId,@Param("typeId") String typeId);
List<ImgSignVo> queryInList(@Param("creatorId")String creatorId, @Param("typeId") String typeId);
/**
* 查询艺术家对外图片列表
@ -60,4 +61,27 @@ public interface TiktokImgMapper extends BaseMapper<TiktokImg> {
* @return -
*/
List<TiktokImgVo> queryImgsByScanCodeAndTypeId(@Param("scanCode") String scanCode,@Param("typeId") Long typeId);
/**
* 查询艺术家分类图片数量
* @param typeId 类型id
* @param creatorId 艺术家id
* @return -
*/
Integer queryCreatorTypeImgNum(@Param("typeId") Long typeId,@Param("creatorId") Long creatorId);
/**
* 根据分类id和便签Id查询图片分页
* @param signId 标签id
* @param typeId 分类id
* @return -
*/
List<TiktokImgVo> querySignImgBySignIdAndTypeId(@Param("signId") Long signId,@Param("typeId") Long typeId);
/**
* 根据标签名称查询图片
* @param signName 标签名称
* @return -
*/
List<TiktokImgVo> queryImgPageBySignName(@Param("signName") String signName);
}

22
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java

@ -0,0 +1,22 @@
package com.bnyer.img.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.bnyer.img.domain.Banner;
import com.bnyer.img.domain.BzData;
import com.bnyer.img.dto.BannerPageDto;
import com.bnyer.img.dto.BzDto;
import com.bnyer.img.vo.BannerVo;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
public interface BzDataService {
JSONObject getYs(BzDto dto);
void dataStatistics(String ip,String source);
int update(BzData bzData,UpdateWrapper<BzData> updateWrapper);
String getIpAddr(HttpServletRequest request);
}

30
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java

@ -1,6 +1,7 @@
package com.bnyer.img.service;
import com.bnyer.img.domain.CreatorProfit;
import com.bnyer.img.dto.CreatorProfitAdInsertDto;
import com.bnyer.img.dto.CreatorProfitPageDto;
import com.bnyer.img.dto.ProfitInOrEndDto;
import com.bnyer.img.vo.*;
@ -23,10 +24,10 @@ public interface CreatorProfitService {
/**
* 新增或更新广告收益记录
* @param creatorProfit 广告收益参数
* @param params 广告收益参数
* @return -
*/
int insertCreatorProfit(CreatorProfit creatorProfit);
int insertCreatorProfit(CreatorProfitAdInsertDto params);
/**
* 新增或更新邀请收益
@ -90,6 +91,11 @@ public interface CreatorProfitService {
*/
void batchUpdateConfirmType();
/**
* 批量删除昨日用户下载次数
*/
void batchDeleteUserDownloadNum();
/**
* 小程序查询收益信息
@ -169,6 +175,26 @@ public interface CreatorProfitService {
/**
* 批量更新收益单状态为转入钱包
* @param list 订单列表
* @return -
*/
int batchUpdate(List<Long> list);
/**
* 查询转入钱包收益详情
* @param id 收益id
* @return -
*/
CreatorProfitEndAmtVo queryFrontEndAmtDetails(Long id);
/**
* 检查艺术家上传是否超标
* @param creatorId 艺术家id
* @return -
*/
boolean checkCreatorCanUpload(Long creatorId);
/**
* 批量删除昨日艺术家上传次数
*/
void batchDeleteCreatorUploadNum();
}

28
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java

@ -1,10 +1,7 @@
package com.bnyer.img.service;
import com.bnyer.img.domain.Creator;
import com.bnyer.img.dto.CreatorDto;
import com.bnyer.img.dto.CreatorPageDto;
import com.bnyer.img.dto.VerifyCreatorDto;
import com.bnyer.img.dto.WxLoginDto;
import com.bnyer.img.dto.*;
import com.bnyer.img.vo.*;
import java.util.List;
@ -98,7 +95,7 @@ public interface CreatorService {
* @param param 前端传来的参数
* @return -
*/
Map<String,Object> login(WxLoginDto param);
Map<String,Object> login(CreatorLoginDto param);
/**
* 查询所有审核通过的艺术家
@ -125,4 +122,25 @@ public interface CreatorService {
* @return -
*/
Map<String,Object> queryCreatorScanCodeById(Long id);
/**
* 检查用户是否绑定过手机号
* @param phone 手机号
* @return -
*/
boolean checkPhone(String phone);
/**
* 检查搜索码是否重复
* @param scanCode 搜索码
* @return -
*/
boolean checkScanCode(String scanCode);
/**
* 检查邀请码是否存在
* @param inviteCode 邀请码
* @return -
*/
boolean checkInviteCode(String inviteCode);
}

9
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/FhUserService.java

@ -51,4 +51,13 @@ public interface FhUserService {
* @return -
*/
int changeStatus(Long id,String status);
/**
* 检查某平台用户当日下载次数是否超标
* @param userId 用户id
* @param platform 平台
* @param appType 应用
* @return -
*/
boolean checkUserCanDownload(Long userId,String platform,String appType);
}

69
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/SignService.java

@ -1,4 +1,73 @@
package com.bnyer.img.service;
import com.bnyer.img.domain.Sign;
import com.bnyer.img.dto.SignPageDto;
import com.bnyer.img.vo.SignImgVo;
import com.bnyer.img.vo.SignVo;
import com.bnyer.img.vo.TiktokImgVo;
import java.util.List;
public interface SignService {
/**
* 后台新增Sign
* @param sign 标签
* @return -
*/
int insert(Sign sign);
/**
* 修改sign
* @param sign -
* @return -
*/
int update(Sign sign);
/**
* 批量删除sign
* @param ids ids
* @return -
*/
int delete(List<Long> ids);
/**
* 查询sign分页
* @param dto 分页对象
* @return -
*/
List<Sign> queryPage(SignPageDto dto);
/**
* 查询sign详情
* @param id 主键id
* @return -
*/
Sign queryDetails(Long id);
/**
* 查询sign是否重复
* @param name 标签名字
* @return -
*/
boolean checkSign(String name);
/**
* 变更显示状态
* @param id 主键id
* @param status 状态
* @return -
*/
int changeStatus(Long id,String status);
/**
* 查询上传页面标签列表
* @return -
*/
List<SignVo> querySignList();
/**
* 根据分类id查询小程序端标签分页
* @return -
*/
List<SignImgVo> queryFrontSignByTypeId(Long typeId);
}

39
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java

@ -1,7 +1,11 @@
package com.bnyer.img.service;
import com.bnyer.img.domain.TiktokImg;
import com.bnyer.img.dto.StatusDto;
import com.bnyer.img.dto.TiktokImgMiniDto;
import com.bnyer.img.dto.TiktokImgPageDto;
import com.bnyer.img.vo.CreatorTypeImgVo;
import com.bnyer.img.vo.ImgSignVo;
import com.bnyer.img.vo.TiktokImgVo;
import java.util.List;
@ -10,10 +14,10 @@ public interface TiktokImgService {
/**
* 新增图片
* @param tiktokImg 图片
* @param dto 图片
* @return -
*/
int insert(TiktokImg tiktokImg);
int insert(TiktokImgMiniDto dto);
/**
* 修改图片
@ -49,7 +53,7 @@ public interface TiktokImgService {
* @param typeId 分类id
* @return -
*/
List<TiktokImgVo> queryInList(String creatorId,String typeId);
List<ImgSignVo> queryInList(String creatorId, String typeId);
/**
* 查询指定艺术家对外的图片集合(通过审核的)
@ -115,4 +119,33 @@ public interface TiktokImgService {
* @return -
*/
List<TiktokImgVo> queryImgsByScanCodeAndTypeId(String scanCode,Long typeId);
/**
* 查询艺术家分类图片数量
* @param creatorId 艺术家id
* @return -
*/
CreatorTypeImgVo queryCreatorTypeImgNum(Long creatorId);
/**
* 艺术家上下架图片
* @param param 图片参数
* @return -
*/
int onlineOrOfflineImg(StatusDto param);
/**
* 根据分类id和标签Id查询图片分页
* @param signId 标签id
* @param typeId 分类id
* @return -
*/
List<TiktokImgVo> querySignImgBySignIdAndTypeId(Long signId, Long typeId);
/**
* 根据标签名称查询图片
* @param signName 标签名称
* @return -
*/
List<TiktokImgVo> queryImgPageBySignName(String signName);
}

9
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokUserService.java

@ -50,4 +50,13 @@ public interface TiktokUserService {
* @return -
*/
int changeStatus(Long id,String status);
/**
* 检查某平台用户当日下载次数是否超标
* @param userId 用户id
* @param platform 平台
* @param appType 应用
* @return -
*/
boolean checkUserCanDownload(Long userId,String platform,String appType);
}

9
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/WxUserService.java

@ -51,4 +51,13 @@ public interface WxUserService {
* @return -
*/
int changeStatus(Long id,String status);
/**
* 检查某平台用户当日下载次数是否超标
* @param userId 用户id
* @param platform 平台
* @param appType 应用
* @return -
*/
boolean checkUserCanDownload(Long userId,String platform,String appType);
}

166
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java

@ -0,0 +1,166 @@
package com.bnyer.img.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.bnyer.common.core.domain.R;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.config.BzConfig;
import com.bnyer.img.domain.Banner;
import com.bnyer.img.domain.BzData;
import com.bnyer.img.dto.BannerPageDto;
import com.bnyer.img.dto.BzDto;
import com.bnyer.img.mapper.BannerMapper;
import com.bnyer.img.mapper.BzDataMapper;
import com.bnyer.img.service.BannerService;
import com.bnyer.img.service.BzDataService;
import com.bnyer.img.vo.BannerVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@Service
@Slf4j
public class BzDataServiceImpl implements BzDataService {
@Autowired
private RedisService redisService;
@Autowired
private BzDataMapper bzDataMapper;
@Autowired
private BzConfig bzConfig;
@Override
public JSONObject getYs(BzDto dto) {
//API产品路径
String requestUrl = bzConfig.getUrl();
//阿里云APPCODE
String appcode = bzConfig.getAppCode();
String lastName = dto.getLastName();
String firstName = dto.getFirstName();
String sex = dto.getSex();
String birth = dto.getBirth();
CloseableHttpClient httpClient = null;
try {
httpClient = HttpClients.createDefault();
String str = "SECOND_NAME=" + URLEncoder.encode(firstName, "UTF-8") + "&GENDER=" + URLEncoder.encode(sex, "UTF-8") + "&BIRTH=" + URLEncoder.encode(birth, "UTF-8") + "&FIRST_NAME=" + URLEncoder.encode(lastName, "UTF-8");
System.out.println(requestUrl + str);
// 创建一个HttpGet实例
HttpGet httpGet = new HttpGet(requestUrl + str);
httpGet.addHeader("Authorization", "APPCODE " + appcode);
// 发送GET请求
HttpResponse execute = httpClient.execute(httpGet);
// 获取状态码
int statusCode = execute.getStatusLine().getStatusCode();
System.out.println(statusCode);
// 获取结果
HttpEntity entity = execute.getEntity();
String result = EntityUtils.toString(entity, "utf-8");
//System.out.println(result);
return JSON.parseObject(result);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (httpClient != null) {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
@Override
public void dataStatistics(String ip, String source) {
String today = LocalDate.now() + "";
String page="bzPage_" + source;
//保存今天的key
redisService.redisTemplate.opsForZSet().add("bzPage_key" +today, today+page, 1.0);
//pv统计
redisService.pvStatistics(today, page);
//uv统计
redisService.uvStatistics(today, page, ip);
//查看是否已经有了这条数据
if (!redisService.hasKey(today + source)) {
QueryWrapper<BzData> wrapper = new QueryWrapper<>();
wrapper.eq("date", today);
wrapper.eq("source", source);
List<BzData> bzData = bzDataMapper.selectList(wrapper);
if (bzData.size() <= 0) {
BzData data = new BzData();
data.setDate(today);
data.setPv(1L);
data.setUv(1L);
data.setSource(source);
data.setMark(today + source);
bzDataMapper.insert(data);
}
}
}
@Override
public int update(BzData bzData, UpdateWrapper<BzData> updateWrapper) {
return bzDataMapper.update(bzData,updateWrapper);
}
@Override
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
//System.out.println("x-forwarded-for ip: " + ip);
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
if (ip.indexOf(",") != -1) {
ip = ip.split(",")[0];
}
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
//System.out.println("Proxy-Client-IP ip: " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
//System.out.println("WL-Proxy-Client-IP ip: " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
//System.out.println("HTTP_CLIENT_IP ip: " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
//System.out.println("HTTP_X_FORWARDED_FOR ip: " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
//System.out.println("X-Real-IP ip: " + ip);
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
//System.out.println("getRemoteAddr ip: " + ip);
}
//System.out.println("获取客户端ip: " + ip);
return ip;
}
}

87
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java

@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.common.redis.service.RedissonService;
import com.bnyer.img.constants.RedisKeyConstant;
import com.bnyer.img.domain.CreatorProfit;
import com.bnyer.img.domain.InviteLog;
import com.bnyer.img.dto.CreatorProfitAdInsertDto;
import com.bnyer.img.dto.CreatorProfitPageDto;
import com.bnyer.img.dto.ProfitInOrEndDto;
import com.bnyer.img.mapper.CreatorProfitMapper;
@ -54,16 +56,33 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
}
}
/**
* 写入下载次数
* @param appType 应用
* @param platform 平台
* @param userId 用户id
*/
private void writePlatformUserDownloadNum(String appType,String platform,Long userId){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(new Date());
String hashKey = appType+":"+platform+":"+userId;
log.info("日期【{}】应用【{}】平台【{}】用户【{}】下载数+1",date,appType,platform,userId);
String redisKey = RedisKeyConstant.PLATFORM_USER_DOWNLOAD_KEY + date;
redisService.hashIncr(redisKey, hashKey, 1);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int insertCreatorProfit(CreatorProfit creatorProfit) {
public int insertCreatorProfit(CreatorProfitAdInsertDto params) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long times = System.currentTimeMillis();
String date = format.format(times);
String mark = creatorProfit.getCreatorId().toString() + creatorProfit.getImgId().toString() + creatorProfit.getAppType() + creatorProfit.getPlatform() +
String mark = params.getCreatorId().toString() + params.getImgId().toString() + params.getAppType() + params.getPlatform() +
"0" + date.replace("-", "");
//缓存中下载总数+1
tiktokImgService.writeDownloadTotalNum(creatorProfit.getAppType(), creatorProfit.getPlatform());
tiktokImgService.writeDownloadTotalNum(params.getAppType(), params.getPlatform());
//redis累计平台用户当天下载次数,12.00后过期
writePlatformUserDownloadNum(params.getAppType(), params.getPlatform(), params.getUserId());
//检查收益表是否存在广告记录,存在则更新次数
boolean b = this.checkCreatorProfitExist(mark);
if (b) {
@ -72,6 +91,12 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
return update;
}
//不存在则新增广告记录
CreatorProfit creatorProfit = new CreatorProfit();
creatorProfit.setCreatorId(params.getCreatorId());
creatorProfit.setScanCode(params.getScanCode());
creatorProfit.setImgId(params.getImgId());
creatorProfit.setPlatform(params.getPlatform());
creatorProfit.setAppType(params.getAppType());
creatorProfit.setCreateTime(new Date());
creatorProfit.setUpdateTime(new Date());
creatorProfit.setType("0");
@ -81,7 +106,7 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
creatorProfit.setDownloadNum(1);
creatorProfit.setMark(mark);
//根据平台生成订单号
switch (creatorProfit.getPlatform()) {
switch (params.getPlatform()) {
case "0":
creatorProfit.setOrderNo("DY" + IdUtil.getSnowflakeNextIdStr());
break;
@ -231,6 +256,21 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
log.info("==============批量更新艺术家收益状态完成,耗时【{}】毫秒!===============", System.currentTimeMillis() - startTime);
}
@Override
public void batchDeleteUserDownloadNum() {
log.info("==============批量删除昨日用户下载次数开始!===============");
long startTime = System.currentTimeMillis();
//获取昨日日期
Date yesterday = new Date(startTime - 1000 * 60 * 60 * 24);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String date = simpleDateFormat.format(yesterday);
String redisKey = RedisKeyConstant.PLATFORM_USER_DOWNLOAD_KEY + date;
if(redisService.hasKey(redisKey)){
redisService.deleteObject(redisKey);
}
log.info("==============批量删除昨日用户下载次数完成,耗时【{}】毫秒!===============", System.currentTimeMillis() - startTime);
}
@Override
public ProfitVo queryFrontProfitInfo(Long creatorId) {
//累计收益
@ -319,4 +359,43 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
public int batchUpdate(List<Long> list) {
return creatorProfitMapper.batchUpdateTransInfo(list);
}
@Override
public CreatorProfitEndAmtVo queryFrontEndAmtDetails(Long id) {
return creatorProfitMapper.queryFrontEndAmtDetails(id);
}
@Override
public boolean checkCreatorCanUpload(Long creatorId) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(new Date());
String redisKey = RedisKeyConstant.CREATOR_UPLOAD_KEY + date;
if (redisService.hasHashKey(redisKey, creatorId.toString())) {
//存在键,判断次数,次数达标则不可下载
Integer downloadNum = redisService.getCacheMapValue(redisKey, creatorId.toString());
if (downloadNum >= 40) {
return true;
} else {
return false;
}
}else{
//不存在键则可上传
return false;
}
}
@Override
public void batchDeleteCreatorUploadNum() {
log.info("==============批量删除昨日艺术家上传次数开始!===============");
long startTime = System.currentTimeMillis();
//获取昨日日期
Date yesterday = new Date(startTime - 1000 * 60 * 60 * 24);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String date = simpleDateFormat.format(yesterday);
String redisKey = RedisKeyConstant.CREATOR_UPLOAD_KEY + date;
if(redisService.hasKey(redisKey)){
redisService.deleteObject(redisKey);
}
log.info("==============批量删除昨日艺术家上传次数完成,耗时【{}】毫秒!===============", System.currentTimeMillis() - startTime);
}
}

221
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java

@ -1,6 +1,6 @@
package com.bnyer.img.service.impl;
import com.alibaba.fastjson.JSONObject;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.core.exception.ServiceException;
@ -10,15 +10,13 @@ import com.bnyer.common.core.utils.uuid.IdUtils;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.config.WxConfig;
import com.bnyer.img.constants.RedisKeyConstant;
import com.bnyer.img.constants.StatusImgConstant;
import com.bnyer.img.constants.TiktokConstant;
import com.bnyer.img.domain.Creator;
import com.bnyer.img.domain.InviteLog;
import com.bnyer.img.domain.TiktokImg;
import com.bnyer.img.domain.VerifyLog;
import com.bnyer.img.dto.CreatorDto;
import com.bnyer.img.dto.CreatorPageDto;
import com.bnyer.img.dto.VerifyCreatorDto;
import com.bnyer.img.dto.WxLoginDto;
import com.bnyer.img.dto.*;
import com.bnyer.img.mapper.CreatorMapper;
import com.bnyer.img.mapper.InviteLogMapper;
import com.bnyer.img.mapper.TiktokImgMapper;
@ -26,15 +24,12 @@ import com.bnyer.img.mapper.VerifyLogMapper;
import com.bnyer.img.service.CreatorService;
import com.bnyer.img.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -68,16 +63,10 @@ public class CreatorServiceImpl implements CreatorService {
@Autowired
private WxConfig wxConfig;
/**
* 检查用户是否绑定过手机号
* @param phone 手机号
* @return -
*/
private boolean checkPhone(String phone){
@Override
public boolean checkPhone(String phone){
LambdaQueryWrapper<Creator> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Creator::getPhone, phone);
wrapper.eq(Creator::getPhone, Sm4Util.sm4Encryption(StringUtils.trim(phone)));
List<Creator> creators = creatorMapper.selectList(wrapper);
if(creators.size() > 0){
return true;
@ -86,14 +75,10 @@ public class CreatorServiceImpl implements CreatorService {
}
}
/**
* 检查搜索码是否重复
* @param scanCode 搜索码
* @return -
*/
private boolean checkScanCode(String scanCode){
@Override
public boolean checkScanCode(String scanCode){
LambdaQueryWrapper<Creator> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Creator::getScanCode, scanCode);
wrapper.eq(Creator::getScanCode, StringUtils.trim(scanCode));
List<Creator> creators = creatorMapper.selectList(wrapper);
if(creators.size() > 0){
return true;
@ -102,53 +87,49 @@ public class CreatorServiceImpl implements CreatorService {
}
}
/**
* 检查邀请码是否存在
* @param inviteCode 邀请码
* @return -
*/
private Creator checkInviteCode(String inviteCode){
@Override
public boolean checkInviteCode(String inviteCode){
LambdaQueryWrapper<Creator> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Creator::getInviteCode, inviteCode);
return creatorMapper.selectOne(wrapper);
wrapper.eq(Creator::getInviteCode, StringUtils.trim(inviteCode));
Creator creators = creatorMapper.selectOne(wrapper);
if(creators != null){
return true;
}else{
return false;
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public int insertCreator(CreatorDto dto) {
//检查手机号是否存在
boolean b1 = checkPhone(Sm4Util.sm4Encryption(dto.getPhone()));
if(b1){
throw new ServiceException("当前手机号已绑定艺术家,请重新编辑!", TiktokConstant.BINDED_PHONE);
}
//检查搜索码是否重复
boolean b = this.checkScanCode(dto.getScanCode());
if(b){
throw new ServiceException("搜索码重复,请重新编辑!",TiktokConstant.SCAN_CODE_REPEAT);
}
//检查邀请码是否存在
Creator creatorProtoType = this.checkInviteCode(dto.getInviteCode());
LambdaQueryWrapper<Creator> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Creator::getInviteCode, StringUtils.trim(dto.getInviteCode()));
Creator creatorProtoType = creatorMapper.selectOne(wrapper);
if(creatorProtoType == null){
throw new ServiceException("邀请码不存在,请重新编辑!",TiktokConstant.INVITE_CODE_NOT_EXIST);
}
Creator creator = new Creator();
creator.setId(dto.getId());
creator.setIntro(dto.getIntro());
creator.setScanCode(dto.getScanCode());
creator.setName(StringUtils.trim(dto.getName()));
creator.setPassword(Sm4Util.sm4Encryption(StringUtils.trim(dto.getPassword())));
creator.setImg(StringUtils.trim(dto.getImg()));
creator.setIntro(StringUtils.trim(dto.getIntro()));
creator.setScanCode(StringUtils.trim(dto.getScanCode()));
creator.setInviteCode(IdUtils.inviteCodeGen());
creator.setUrl(dto.getUrl());
creator.setPhone(Sm4Util.sm4Encryption(dto.getPhone()));
creator.setUrl(StringUtils.trim(dto.getUrl()));
creator.setPhone(Sm4Util.sm4Encryption(StringUtils.trim(dto.getPhone())));
creator.setIsHot("0");
creator.setStatus("0");
creator.setIsShow("1");
creator.setAmt(BigDecimal.valueOf(0));
creator.setSort(0);
creator.setCreateTime(new Date());
creator.setUpdateTime(new Date());
int update = creatorMapper.updateById(creator);
log.info("手机号【{}】成为艺术家成功!待审核",dto.getPhone());
int insert = creatorMapper.insert(creator);
log.info("手机号【{}】成为艺术家成功!待审核",StringUtils.trim(dto.getPhone()));
//保存邀请记录
InviteLog inviteLog = new InviteLog();
inviteLog.setInviteCode(dto.getInviteCode());
inviteLog.setInviteCode(StringUtils.trim(dto.getInviteCode()));
inviteLog.setInvitedCreatorId(creator.getId());
inviteLog.setCreatorId(creatorProtoType.getId());
inviteLog.setCreateTime(new Date());
@ -156,8 +137,8 @@ public class CreatorServiceImpl implements CreatorService {
inviteLog.setUpdateTime(new Date());
inviteLog.setSort(0);
inviteLogMapper.insert(inviteLog);
log.info("艺术家id【{}】被邀请码【{}】邀请成功!记录写入数据库完成!",creator.getId(),dto.getInviteCode());
return update;
log.info("艺术家id【{}】被邀请码【{}】邀请成功!记录写入数据库完成!",creator.getId(),StringUtils.trim(dto.getInviteCode()));
return insert;
}
@Override
@ -201,7 +182,14 @@ public class CreatorServiceImpl implements CreatorService {
@Override
public List<CreatorVo> queryThreeImgCreatorList() {
return creatorMapper.queryThreeImgCreatorList();
List<CreatorVo> creatorVos = creatorMapper.queryThreeImgCreatorList();
List<CreatorVo> list = new ArrayList<>();
for (CreatorVo creatorVo : creatorVos) {
if(CollectionUtil.isNotEmpty(creatorVo.getImgList())){
list.add(creatorVo);
}
}
return list;
}
@Override
@ -267,116 +255,38 @@ public class CreatorServiceImpl implements CreatorService {
return creatorMapper.update(creator,wrapper);
}
/**
* 获取用户openId及sessionKey
* @param code 登录凭证code
* @return -
*/
private WxSessionInfoVo getSessionInfo(String code) {
String url = wxConfig.getSessionInfoUrl()+"?appid="+wxConfig.getAppId()+"&secret="+wxConfig.getSecret()+"&js_code="+code+"&grant_type=authorization_code";
String forObject = restTemplate.getForObject(url, String.class);
JSONObject sessionInfo = JSONObject.parseObject(forObject);
if(StringUtils.isNotBlank(sessionInfo.getString("errcode"))){
if(!sessionInfo.getString("errcode").equals(TiktokConstant.SUCCESS)){
log.error("微信授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("errcode"),sessionInfo.getString("errmsg"));
throw new ServiceException("微信授权session接口调用失败!",TiktokConstant.WECHAT_AUTH_ERROR);
}
}
//调用成功,组装返回数据
WxSessionInfoVo result = new WxSessionInfoVo();
result.setSessionKey(sessionInfo.getString("session_key"));
result.setOpenId(sessionInfo.getString("openid"));
return result;
}
/**
* 获取用户敏感信息
* @param sessionKey -
* @param encryptedData 敏感数据
* @param iv 加密向量
* @return -
*/
private WxUserInfoVo getUserInfo(String sessionKey, String encryptedData, String iv){
Base64.Decoder decoder = Base64.getDecoder();
byte[] sessionKeyBytes = decoder.decode(sessionKey);
byte[] ivBytes = decoder.decode(iv);
byte[] encryptedBytes = decoder.decode(encryptedData);
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec skeySpec = new SecretKeySpec(sessionKeyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec);
byte[] ret = cipher.doFinal(encryptedBytes);
if (null != ret && ret.length > 0) {
String result = new String(ret, "UTF-8");
return JSONObject.parseObject(result,WxUserInfoVo.class);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 保存用户
* @param creator 艺术家信息
* @param openId 微信id
* @param sessionKey -
* @param encryptedData 敏感信息数据
* @param iv 加密向量
* @return -
*/
private Creator saveUserInfo(Creator creator,String openId, String sessionKey, String encryptedData, String iv){
if (ObjectUtils.isEmpty(creator)) {
//创建用户
creator = new Creator();
//获取用户昵称和头像
WxUserInfoVo userInfo = this.getUserInfo(sessionKey, encryptedData, iv);
creator.setImg(userInfo.getAvatarUrl());
creator.setName(userInfo.getNickName());
creator.setOpenId(Sm4Util.sm4Encryption(openId));
creator.setCreateTime(new Date());
creator.setUpdateTime(new Date());
creator.setLastLoginTime(new Date());
creatorMapper.insert(creator);
log.info("艺术家【{}】创建成功!", openId);
return creator;
}else{
log.info("该艺术家【{}】已存在,更新登录时间",openId);
creator.setLastLoginTime(new Date());
creatorMapper.updateById(creator);
return creator;
}
}
@Override
public Map<String, Object> login(WxLoginDto dto) {
WxSessionInfoVo sessionInfo = this.getSessionInfo(dto.getCode());
//检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增
public Map<String, Object> login(CreatorLoginDto dto) {
LambdaQueryWrapper<Creator> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(sessionInfo.getOpenId() != null,Creator::getOpenId,Sm4Util.sm4Encryption(sessionInfo.getOpenId()));
wrapper.eq(Creator::getPhone, Sm4Util.sm4Encryption(dto.getPhone()));
wrapper.eq(Creator::getPassword, Sm4Util.sm4Encryption(dto.getPassword()));
Creator creator = creatorMapper.selectOne(wrapper);
if(creator == null){
//新用户,新增
creator = this.saveUserInfo(creator,sessionInfo.getOpenId(), sessionInfo.getSessionKey(), dto.getEncryptedData(), dto.getIv());
throw new ServiceException("手机号或密码不正确!",TiktokConstant.TIKTOK_CREATOR_PWD_ERROR);
}
if(creator.getStatus().equals("0")){
throw new ServiceException("当前艺术家暂未审核,请耐心等待或联系客服!",TiktokConstant.TIKTOK_CREATOR_NOT_PASS_ERROR);
}
//设置会话状态
String redisKey = RedisKeyConstant.WECHAT_CREATOR_LOGIN_KEY+Sm4Util.sm4Encryption(sessionInfo.getOpenId());
if(creator.getStatus().equals("2")){
throw new ServiceException("当前艺术家被封禁,请联系客服处理!",TiktokConstant.TIKTOK_CREATOR_BANED_ERROR);
}
CreatorLoginVo creatorLoginVo = new CreatorLoginVo();
BeanUtils.copyProperties(creator, creatorLoginVo);
creatorLoginVo.setLastLoginTime(new Date());
//存在则设置会话状态
String redisKey = RedisKeyConstant.WECHAT_CREATOR_LOGIN_KEY+Sm4Util.sm4Encryption(dto.getPhone());
//存在该登录态则删除刷新
if(redisService.hasKey(redisKey)){
redisService.deleteObject(redisKey);
}
StringBuffer sb = new StringBuffer();
String randomId = IdUtils.fastSimpleUUID();
sb.append(randomId).append("#").append(sessionInfo.getOpenId());
sb.append(randomId).append("#").append(Sm4Util.sm4Encryption(dto.getPhone()+randomId));
//设置登录会话
Map<String, Object> map = new HashMap<>(2);
map.put("token", sb.toString());
map.put("sessionKey", sessionInfo.getSessionKey());
map.put("userInfo",creator);
redisService.setCacheObject(redisKey,map, 30L, TimeUnit.DAYS);
map.put("userInfo",creatorLoginVo);
redisService.setCacheObject(redisKey,map, 10L, TimeUnit.DAYS);
return map;
}
@ -396,7 +306,14 @@ public class CreatorServiceImpl implements CreatorService {
@Override
public List<CreatorHotVo> queryHotCreatorList() {
return creatorMapper.queryHotCreatorList();
List<CreatorHotVo> creatorHotVos = creatorMapper.queryHotCreatorList();
List<CreatorHotVo> list = new ArrayList<>();
for (CreatorHotVo creatorHotVo : creatorHotVos) {
if(creatorHotVo.getHotNum() > 0){
list.add(creatorHotVo);
}
}
return list;
}
@Override

21
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FhUserServiceImpl.java

@ -31,6 +31,7 @@ import org.springframework.web.client.RestTemplate;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -201,4 +202,24 @@ public class FhUserServiceImpl implements FhUserService {
user.setIsShow(status);
return fhUserMapper.update(user, wrapper);
}
@Override
public boolean checkUserCanDownload(Long userId, String platform, String appType) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(new Date());
String hashKey = appType+":"+platform+":"+userId;
String redisKey = RedisKeyConstant.PLATFORM_USER_DOWNLOAD_KEY + date;
if(redisService.hasHashKey(redisKey,hashKey)){
//存在键,判断次数,次数达标则不可下载
Integer downloadNum = redisService.getCacheMapValue(redisKey, hashKey);
if(downloadNum >= 5){
return true;
}else{
return false;
}
}else{
//不存在键则可下载
return false;
}
}
}

104
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/SignServiceImpl.java

@ -1,10 +1,114 @@
package com.bnyer.img.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.img.domain.ImgSignRelation;
import com.bnyer.img.domain.Sign;
import com.bnyer.img.dto.SignPageDto;
import com.bnyer.img.mapper.ImgSignRelationMapper;
import com.bnyer.img.mapper.SignMapper;
import com.bnyer.img.service.SignService;
import com.bnyer.img.vo.SignImgVo;
import com.bnyer.img.vo.SignVo;
import com.bnyer.img.vo.TiktokImgVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
@Slf4j
public class SignServiceImpl implements SignService {
@Autowired
private SignMapper signMapper;
@Autowired
private ImgSignRelationMapper imgSignRelationMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public int insert(Sign sign) {
boolean b = checkSign(sign.getName());
if(b){
throw new ServiceException("标签名称已存在!");
}else{
sign.setCreateTime(new Date());
sign.setUpdateTime(new Date());
return signMapper.insert(sign);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public int update(Sign sign) {
sign.setUpdateTime(new Date());
return signMapper.updateById(sign);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int delete(List<Long> ids) {
int i = signMapper.deleteBatchIds(ids);
//删除关联relation
LambdaQueryWrapper<ImgSignRelation> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ImgSignRelation::getSignId, ids);
imgSignRelationMapper.delete(wrapper);
//imgSignRelationMapper.batchDelete(ids);
return i;
}
@Override
public List<Sign> queryPage(SignPageDto dto) {
LambdaQueryWrapper<Sign> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(dto.getName())){
wrapper.like(Sign::getName,dto.getName());
}
if (StringUtils.isNotBlank(dto.getIsShow())){
wrapper.eq(Sign::getIsShow,dto.getIsShow());
}
wrapper.orderByDesc(Sign::getSort);
return signMapper.selectList(wrapper);
}
@Override
public Sign queryDetails(Long id) {
return signMapper.selectById(id);
}
@Override
public boolean checkSign(String name) {
LambdaQueryWrapper<Sign> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Sign::getName,name);
List<Sign> signs = signMapper.selectList(wrapper);
if(signs.size() > 0){
return true;
}else{
return false;
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public int changeStatus(Long id, String status) {
LambdaUpdateWrapper<Sign> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(Sign::getId,id);
Sign sign = new Sign();
sign.setIsShow(status);
return signMapper.update(sign,wrapper);
}
@Override
public List<SignVo> querySignList() {
return signMapper.querySignList();
}
@Override
public List<SignImgVo> queryFrontSignByTypeId(Long typeId) {
return signMapper.queryFrontSign(typeId);
}
}

74
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java

@ -5,16 +5,23 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.constants.RedisKeyConstant;
import com.bnyer.img.constants.StatusImgConstant;
import com.bnyer.img.domain.TiktokCollection;
import com.bnyer.img.domain.TiktokImg;
import com.bnyer.img.domain.TiktokLike;
import com.bnyer.img.dto.StatusDto;
import com.bnyer.img.dto.TiktokImgMiniDto;
import com.bnyer.img.dto.TiktokImgPageDto;
import com.bnyer.img.mapper.ImgSignRelationMapper;
import com.bnyer.img.mapper.TiktokCollectionMapper;
import com.bnyer.img.mapper.TiktokImgMapper;
import com.bnyer.img.mapper.TiktokLikeMapper;
import com.bnyer.img.service.TiktokImgService;
import com.bnyer.img.vo.CreatorTypeImgVo;
import com.bnyer.img.vo.ImgSignVo;
import com.bnyer.img.vo.TiktokImgVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -39,14 +46,28 @@ public class TiktokImgServiceImpl implements TiktokImgService {
@Autowired
private RedisService redisService;
@Autowired
private ImgSignRelationMapper imgSignRelationMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public int insert(TiktokImg tiktokImg) {
public int insert(TiktokImgMiniDto dto) {
TiktokImg tiktokImg = new TiktokImg();
tiktokImg.setImgUrl(dto.getImgUrl());
tiktokImg.setCreatorId(dto.getCreatorId());
tiktokImg.setTypeId(dto.getTypeId());
tiktokImg.setStatus(dto.getStatus());
tiktokImg.setCreateTime(new Date());
tiktokImg.setUpdateTime(new Date());
return tiktokImgMapper.insert(tiktokImg);
int insert = tiktokImgMapper.insert(tiktokImg);
//保存标签
if(CollectionUtils.isNotEmpty(dto.getSignList())){
imgSignRelationMapper.batctInsert(tiktokImg.getId(),dto.getTypeId(),dto.getSignList());
}
return insert;
}
@Override
@Transactional(rollbackFor = Exception.class)
public int update(TiktokImg tiktokImg) {
@ -99,7 +120,7 @@ public class TiktokImgServiceImpl implements TiktokImgService {
}
@Override
public List<TiktokImgVo> queryInList(String creatorId, String typeId) {
public List<ImgSignVo> queryInList(String creatorId, String typeId) {
return tiktokImgMapper.queryInList(creatorId,typeId);
}
@ -189,4 +210,51 @@ public class TiktokImgServiceImpl implements TiktokImgService {
public List<TiktokImgVo> queryImgsByScanCodeAndTypeId(String scanCode, Long typeId) {
return tiktokImgMapper.queryImgsByScanCodeAndTypeId(scanCode,typeId);
}
@Override
public CreatorTypeImgVo queryCreatorTypeImgNum(Long creatorId) {
Integer headNum = tiktokImgMapper.queryCreatorTypeImgNum(1L, creatorId);
Integer gifNum = tiktokImgMapper.queryCreatorTypeImgNum(2L, creatorId);
Integer backNum = tiktokImgMapper.queryCreatorTypeImgNum(3L, creatorId);
Integer friendNum = tiktokImgMapper.queryCreatorTypeImgNum(4L, creatorId);
Integer emoNum = tiktokImgMapper.queryCreatorTypeImgNum(5L, creatorId);
Integer watchNum = tiktokImgMapper.queryCreatorTypeImgNum(6L, creatorId);
CreatorTypeImgVo result = new CreatorTypeImgVo();
result.setHeadNum(headNum);
result.setGifNum(gifNum);
result.setBackNum(backNum);
result.setFriendNum(friendNum);
result.setEmoNum(emoNum);
result.setWatchNum(watchNum);
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public int onlineOrOfflineImg(StatusDto param) {
TiktokImg img = new TiktokImg();
LambdaUpdateWrapper<TiktokImg> wrapper = new LambdaUpdateWrapper<>();
if(param.getStatus().equals(StatusImgConstant.ONLINE)){
img.setStatus(StatusImgConstant.ONLINE);
wrapper.eq(TiktokImg::getId, param.getId());
return tiktokImgMapper.update(img, wrapper);
}else if(param.getStatus().equals(StatusImgConstant.OFFLINE)){
img.setStatus(StatusImgConstant.OFFLINE);
wrapper.eq(TiktokImg::getId, param.getId());
return tiktokImgMapper.update(img, wrapper);
}else{
return 0;
}
}
@Override
public List<TiktokImgVo> querySignImgBySignIdAndTypeId(Long signId, Long typeId) {
return tiktokImgMapper.querySignImgBySignIdAndTypeId(signId,typeId);
}
@Override
public List<TiktokImgVo> queryImgPageBySignName(String signName) {
return tiktokImgMapper.queryImgPageBySignName(signName);
}
}

21
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java

@ -32,6 +32,7 @@ import javax.annotation.Resource;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -210,4 +211,24 @@ public class TiktokUserServiceImpl implements TiktokUserService {
user.setIsShow(status);
return tiktokUserMapper.update(user,wrapper);
}
@Override
public boolean checkUserCanDownload(Long userId, String platform, String appType) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(new Date());
String hashKey = appType+":"+platform+":"+userId;
String redisKey = RedisKeyConstant.PLATFORM_USER_DOWNLOAD_KEY + date;
if(redisService.hasHashKey(redisKey,hashKey)){
//存在键,判断次数,次数达标则不可下载
Integer downloadNum = redisService.getCacheMapValue(redisKey, hashKey);
if(downloadNum >= 5){
return true;
}else{
return false;
}
}else{
//不存在键则可下载
return false;
}
}
}

25
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java

@ -139,12 +139,33 @@ public class WithdrawLogServiceImpl implements WithdrawLogService {
@Override
public List<WithdrawLogVo> queryFrontList(Long creatorId) {
return withdrawLogMapper.queryFrontList(creatorId);
List<WithdrawLogVo> withdrawLogVos = withdrawLogMapper.queryFrontList(creatorId);
if(withdrawLogVos.size() > 0){
for (WithdrawLogVo withdrawLogVo : withdrawLogVos) {
if(StringUtils.isNotBlank(withdrawLogVo.getPhone())){
withdrawLogVo.setPhone(Sm4Util.sm4Decrypt(withdrawLogVo.getPhone()));
}
if(StringUtils.isNotBlank(withdrawLogVo.getBankNo())){
withdrawLogVo.setBankNo(Sm4Util.sm4Decrypt(withdrawLogVo.getBankNo()));
}
JSONObject.parseObject(DesensitizedUtils.getJsonNoCopy(withdrawLogVo), WithdrawLogVo.class);
}
}
return withdrawLogVos;
}
@Override
public WithdrawLogVo queryFrontDetails(String orderId) {
return withdrawLogMapper.queryFrontDetails(orderId);
WithdrawLogVo withdrawLogVo = withdrawLogMapper.queryFrontDetails(orderId);
if(StringUtils.isNotBlank(withdrawLogVo.getPhone())){
withdrawLogVo.setPhone(Sm4Util.sm4Decrypt(withdrawLogVo.getPhone()));
}
if(StringUtils.isNotBlank(withdrawLogVo.getBankNo())){
withdrawLogVo.setBankNo(Sm4Util.sm4Decrypt(withdrawLogVo.getBankNo()));
}
JSONObject.parseObject(DesensitizedUtils.getJsonNoCopy(withdrawLogVo), WithdrawLogVo.class);
return withdrawLogVo;
}
/**

21
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WxUserServiceImpl.java

@ -31,6 +31,7 @@ import org.springframework.web.client.RestTemplate;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -212,4 +213,24 @@ public class WxUserServiceImpl implements WxUserService {
user.setIsShow(status);
return wxUserMapper.update(user, wrapper);
}
@Override
public boolean checkUserCanDownload(Long userId, String platform, String appType) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(new Date());
String hashKey = appType+":"+platform+":"+userId;
String redisKey = RedisKeyConstant.PLATFORM_USER_DOWNLOAD_KEY + date;
if(redisService.hasHashKey(redisKey,hashKey)){
//存在键,判断次数,次数达标则不可下载
Integer downloadNum = redisService.getCacheMapValue(redisKey, hashKey);
if(downloadNum >= 5){
return true;
}else{
return false;
}
}else{
//不存在键则可下载
return false;
}
}
}

1
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CollectionSyncTask.java

@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 同步用户收藏记录任务
* @author chengkun
* @date 2022/5/12 18:13
*/

1
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CreatorProfitConfirmTypeSyncTask.java

@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 更新艺术家收益状态任务
* @author chengkun
* @date 2022/5/12 18:13
*/

60
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/DateSyncTask.java

@ -0,0 +1,60 @@
package com.bnyer.img.task;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.domain.BzData;
import com.bnyer.img.service.BzDataService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.util.Set;
/**
* @Author qyh
* @Date 2022/7/14 16:43
* @Description
*/
@Component
@Slf4j
public class DateSyncTask {
@Autowired
private static RedisService redisService;
@Autowired
private static BzDataService bzDataService;
//@XxlJob("dateSyncTask")
//@Scheduled(fixedDelay = 1000 * 60 * 60)
public static ReturnT<String> dateSync() {
String day = LocalDate.now().plusDays(-1)+ "";
String redisKey = "bzPage_key" + day;
System.out.println(redisService);
redisService.setCacheObject("4", 2);
Set range = redisService.redisTemplate.opsForZSet().range(redisKey, 0, -1);
for (Object key : redisService.redisTemplate.opsForZSet().range(redisKey, 0, -1)) {
Long pv = Long.parseLong(redisService.redisTemplate.opsForValue().get(key + "PV").toString());
Long uv = Long.parseLong(redisService.redisTemplate.opsForHyperLogLog().size(key + "UV").toString());
String[] s = key.toString().split("_");
String source = s[1];
redisService.deleteObject(key + "PV");
redisService.deleteObject(key + "UV");
UpdateWrapper<BzData> wrapper = new UpdateWrapper<>();
wrapper.set("pv",pv);
wrapper.set("uv",uv);
wrapper.eq("date",day);
wrapper.eq("source",source);
bzDataService.update(new BzData(),wrapper);
// redisService.deleteObject(key + "PV");
// redisService.deleteObject(key + "UV");
}
redisService.deleteObject("bzPage_key" + day);
XxlJobLogger.log("{} 我执行了同步pv,uv任务", System.currentTimeMillis());
return ReturnT.SUCCESS;
}
}

1
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/LikeSyncTask.java

@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 同步点赞任务
* @author chengkun
* @date 2022/5/12 18:13
*/

36
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/UserDownloadSyncTask.java

@ -0,0 +1,36 @@
package com.bnyer.img.task;
import com.bnyer.img.service.CreatorProfitService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 同步删除昨日用户下载次数任务
* @author chengkun
* @date 2022/5/12 18:13
*/
@Component
@Slf4j
public class UserDownloadSyncTask {
@Autowired
private CreatorProfitService creatorProfitService;
@XxlJob("userDownloadSyncTask")
public ReturnT<String> syncUserDownload(String param) throws Exception {
creatorProfitService.batchDeleteUserDownloadNum();
XxlJobLogger.log("{} 我执行了批量删除昨日用户下载次数任务", System.currentTimeMillis());
return ReturnT.SUCCESS;
}
@XxlJob("creatorDownloadSyncTask")
public ReturnT<String> syncCreatorUpload(String param) throws Exception {
creatorProfitService.batchDeleteCreatorUploadNum();
XxlJobLogger.log("{} 我执行了批量删除昨日用户上传次数任务", System.currentTimeMillis());
return ReturnT.SUCCESS;
}
}

71
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorLoginVo.java

@ -0,0 +1,71 @@
package com.bnyer.img.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Getter
@Setter
@ApiModel("艺术家登录响应类")
public class CreatorLoginVo implements Serializable {
@ApiModelProperty(value="主键id")
private Long id;
@ApiModelProperty(value="昵称")
private String name;
@ApiModelProperty(value="搜索码")
private String scanCode;
@ApiModelProperty(value="手机号")
private String phone;
@ApiModelProperty(value="头像img地址")
private String img;
@ApiModelProperty(value="简介")
private String intro;
@ApiModelProperty(value="余额")
private BigDecimal amt;
@ApiModelProperty(value="邀请码")
private String inviteCode;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝)")
private String status;
@ApiModelProperty(value="第三方平台账号详情地址")
private String url;
@ApiModelProperty(value="是否活跃(0->不活跃;1->活跃 连续10天以上更新内容)")
private String isHot;
@ApiModelProperty(value="是否显示 (0->隐藏;1->显示)")
private String isShow;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="创建时间")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="更新时间")
private Date updateTime;
@ApiModelProperty(value="排序")
private Integer sort;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="最后登录时间")
private Date lastLoginTime;
private static final long serialVersionUID = 1L;
}

35
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorTypeImgVo.java

@ -0,0 +1,35 @@
package com.bnyer.img.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("艺术家分类图片数量响应体")
public class CreatorTypeImgVo implements Serializable {
@ApiModelProperty(value="头像数量")
private Integer headNum;
@ApiModelProperty(value="gif动图数量")
private Integer gifNum;
@ApiModelProperty(value="手机壁纸数量")
private Integer backNum;
@ApiModelProperty(value="朋友圈背景数量")
private Integer friendNum;
@ApiModelProperty(value="表情包数量")
private Integer emoNum;
@ApiModelProperty(value="iwatch数量")
private Integer watchNum;
private static final long serialVersionUID = 1L;
}

48
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/ImgSignVo.java

@ -0,0 +1,48 @@
package com.bnyer.img.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
@ApiModel("图片标签响应类")
public class ImgSignVo implements Serializable {
@ApiModelProperty(value="id")
private Long id;
@ApiModelProperty(value="图片地址")
private String imgUrl;
@ApiModelProperty(value="用户id")
private Long creatorId;
@ApiModelProperty(value="分类id")
private Long typeId;
@ApiModelProperty(value="下载量")
private Integer downloadNum;
@ApiModelProperty(value="点赞量")
private Integer greatNum;
@ApiModelProperty(value="收藏量")
private Integer collectionNum;
@ApiModelProperty(value="状态(0->待审核;1->审核通过;2->审核拒绝;3->已上架;4->已下架))")
private String status;
@ApiModelProperty(value="是否热门(0->冷门;1->热门)")
private String isHot;
@ApiModelProperty(value="标签列表")
private List<SignRelationVo> signList;
private static final long serialVersionUID = 1L;
}

3
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/InviteLogVo.java

@ -28,6 +28,9 @@ public class InviteLogVo implements Serializable {
@ApiModelProperty(value="被邀请者搜索码")
private String invitedScanCode;
@ApiModelProperty(value="被邀请者头像")
private String img;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value="邀请时间")
private String createTime;

28
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/SignImgVo.java

@ -0,0 +1,28 @@
package com.bnyer.img.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("sign图片响应体")
public class SignImgVo implements Serializable {
@ApiModelProperty(value="标签id")
private Long signId;
@ApiModelProperty(value="标签名称")
private String signName;
@ApiModelProperty(value="背景图")
private String img;
@ApiModelProperty(value="分类id")
private Long typeId;
private static final long serialVersionUID = 1L;
}

25
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/SignRelationVo.java

@ -0,0 +1,25 @@
package com.bnyer.img.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("标签关系响应体")
public class SignRelationVo implements Serializable {
@ApiModelProperty(value="标签id")
private Long signId;
@ApiModelProperty(value="标签名称")
private String signName;
@ApiModelProperty(value="标签图片主键id")
private Long signImgRelationId;
private static final long serialVersionUID = 1L;
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save