From c6e240721ca1909527270e8be0dd1225702cc63c Mon Sep 17 00:00:00 2001 From: qyhdd Date: Fri, 15 Jul 2022 13:35:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=85=AB=E5=AD=97=E7=AE=97=E5=91=BD?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/redis/service/RedisService.java | 24 ++++ .../file/service/impl/QiniuServiceImpl.java | 3 +- .../com/bnyer/img/BnyerImgApplication.java | 2 + .../img/controller/BzDataController.java | 110 ++++++++++++++++ .../java/com/bnyer/img/domain/BzData.java | 61 +++++++++ .../main/java/com/bnyer/img/dto/BzDto.java | 35 +++++ .../com/bnyer/img/mapper/BzDataMapper.java | 15 +++ .../com/bnyer/img/service/BzDataService.java | 19 +++ .../img/service/impl/BzDataServiceImpl.java | 124 ++++++++++++++++++ .../java/com/bnyer/img/task/DateSyncTask.java | 60 +++++++++ 10 files changed, 452 insertions(+), 1 deletion(-) create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/BzData.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/BzDto.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/BzDataMapper.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/DateSyncTask.java diff --git a/bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java b/bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java index 46e3515..5540dc1 100644 --- a/bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java +++ b/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); + + } } diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java index b52bfa0..337a614 100644 --- a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java +++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java @@ -166,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); } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/BnyerImgApplication.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/BnyerImgApplication.java index 433f48d..be25728 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/BnyerImgApplication.java +++ b/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) diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java new file mode 100644 index 0000000..8ea5350 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java @@ -0,0 +1,110 @@ +package com.bnyer.img.controller; + +import cn.hutool.http.server.HttpServerRequest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.bnyer.common.core.domain.R; +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.common.redis.service.RedisService; +import com.bnyer.img.domain.Banner; +import com.bnyer.img.domain.BzData; +import com.bnyer.img.dto.BannerDto; +import com.bnyer.img.dto.BannerPageDto; +import com.bnyer.img.dto.BzDto; +import com.bnyer.img.dto.StatusDto; +import com.bnyer.img.service.BannerService; +import com.bnyer.img.service.BzDataService; +import com.github.pagehelper.PageHelper; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.log.XxlJobLogger; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +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.context.annotation.Lazy; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.net.URLEncoder; +import java.time.LocalDate; +import java.util.List; +import java.util.Set; + +@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 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 dataStatistics(@RequestParam String source, HttpServletRequest request) { + String ip = getIpAddr(request); + bzDataService.dataStatistics(ip,source); + return R.ok(); + } + + private 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; + } +} \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/BzData.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/BzData.java new file mode 100644 index 0000000..354a015 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/BzDto.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/BzDto.java new file mode 100644 index 0000000..76f5470 --- /dev/null +++ b/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; +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/BzDataMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/BzDataMapper.java new file mode 100644 index 0000000..e5006a0 --- /dev/null +++ b/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 { + +} \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java new file mode 100644 index 0000000..8d6e284 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java @@ -0,0 +1,19 @@ +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 java.util.List; + +public interface BzDataService { + JSONObject getYs(BzDto dto); + + void dataStatistics(String ip,String source); + + int update(BzData bzData,UpdateWrapper updateWrapper); +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java new file mode 100644 index 0000000..b054c92 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java @@ -0,0 +1,124 @@ +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.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 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; + + @Override + public JSONObject getYs(BzDto dto) { + //API产品路径 + String requestUrl = "https://xuanxue.market.alicloudapi.com/ai_china_knowledge/bazi/v1?"; + //阿里云APPCODE + String appcode = "7a37e4f4f24d4737bf48143d371a215b"; + 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 wrapper = new QueryWrapper<>(); + wrapper.eq("date", today); + wrapper.eq("source", source); + List 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 updateWrapper) { + return bzDataMapper.update(bzData,updateWrapper); + } +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/DateSyncTask.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/DateSyncTask.java new file mode 100644 index 0000000..b54165d --- /dev/null +++ b/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 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 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; + } + + +} From 229d9b90d7b401d2143a5184aeff5e4f46f13e7e Mon Sep 17 00:00:00 2001 From: penny <2500338766@qq.com> Date: Sun, 17 Jul 2022 20:42:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feature-img-quan-1.0.0:=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bnyer/img/config/AlipayConfig.java | 10 +-- .../java/com/bnyer/img/config/BzConfig.java | 25 +++++++ .../java/com/bnyer/img/config/FhConfig.java | 2 +- .../com/bnyer/img/config/TiktokConfig.java | 6 +- .../java/com/bnyer/img/config/WxConfig.java | 6 +- .../img/controller/BzDataController.java | 66 +------------------ .../com/bnyer/img/service/BzDataService.java | 3 + .../img/service/impl/BzDataServiceImpl.java | 46 ++++++++++++- 8 files changed, 85 insertions(+), 79 deletions(-) create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/BzConfig.java diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java index 7c95f63..09928e0 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java +++ b/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; } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/BzConfig.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/BzConfig.java new file mode 100644 index 0000000..2fc33df --- /dev/null +++ b/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; +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/FhConfig.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/FhConfig.java index 9b462cc..0c39b7b 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/FhConfig.java +++ b/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; diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TiktokConfig.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TiktokConfig.java index 0ca1522..2993230 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TiktokConfig.java +++ b/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; diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/WxConfig.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/WxConfig.java index 192166e..eb51a2a 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/WxConfig.java +++ b/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; } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java index 8ea5350..d360df4 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/BzDataController.java @@ -1,46 +1,19 @@ package com.bnyer.img.controller; -import cn.hutool.http.server.HttpServerRequest; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.bnyer.common.core.domain.R; 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.common.redis.service.RedisService; -import com.bnyer.img.domain.Banner; -import com.bnyer.img.domain.BzData; -import com.bnyer.img.dto.BannerDto; -import com.bnyer.img.dto.BannerPageDto; import com.bnyer.img.dto.BzDto; -import com.bnyer.img.dto.StatusDto; -import com.bnyer.img.service.BannerService; import com.bnyer.img.service.BzDataService; -import com.github.pagehelper.PageHelper; -import com.xxl.job.core.biz.model.ReturnT; -import com.xxl.job.core.log.XxlJobLogger; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; 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.context.annotation.Lazy; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.net.URLEncoder; -import java.time.LocalDate; -import java.util.List; -import java.util.Set; @Api(value = "【图文平台】八字运势接口",tags = "【图文平台】八字运势接口") @RestController @@ -66,45 +39,8 @@ public class BzDataController extends BaseController { @ApiOperation(value = "八字页面数据统计") @PostMapping("/dataStatistics") public R dataStatistics(@RequestParam String source, HttpServletRequest request) { - String ip = getIpAddr(request); + String ip = bzDataService.getIpAddr(request); bzDataService.dataStatistics(ip,source); return R.ok(); } - - private 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; - } } \ No newline at end of file diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java index 8d6e284..6d0365d 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/BzDataService.java @@ -8,6 +8,7 @@ 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 { @@ -16,4 +17,6 @@ public interface BzDataService { void dataStatistics(String ip,String source); int update(BzData bzData,UpdateWrapper updateWrapper); + + String getIpAddr(HttpServletRequest request); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java index b054c92..41ee1e2 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/BzDataServiceImpl.java @@ -9,6 +9,7 @@ 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; @@ -29,6 +30,7 @@ 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; @@ -43,13 +45,15 @@ public class BzDataServiceImpl implements BzDataService { private RedisService redisService; @Autowired private BzDataMapper bzDataMapper; + @Autowired + private BzConfig bzConfig; @Override public JSONObject getYs(BzDto dto) { //API产品路径 - String requestUrl = "https://xuanxue.market.alicloudapi.com/ai_china_knowledge/bazi/v1?"; + String requestUrl = bzConfig.getUrl(); //阿里云APPCODE - String appcode = "7a37e4f4f24d4737bf48143d371a215b"; + String appcode = bzConfig.getAppCode(); String lastName = dto.getLastName(); String firstName = dto.getFirstName(); String sex = dto.getSex(); @@ -121,4 +125,42 @@ public class BzDataServiceImpl implements BzDataService { public int update(BzData bzData, UpdateWrapper 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; + } }