소스 검색

骄阳修改

yumeng 1 년 전
부모
커밋
4f15cb5d49

+ 50 - 0
ruixuan-common/src/main/java/com/ruixuan/common/utils/http/HttpUtils.java

@@ -9,8 +9,10 @@ import java.net.ConnectException;
 import java.net.SocketTimeoutException;
 import java.net.URL;
 import java.net.URLConnection;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.security.cert.X509Certificate;
+import java.util.Map;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
@@ -19,11 +21,23 @@ import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 import javax.servlet.http.HttpServletResponse;
 
+import com.google.gson.Gson;
 import com.ruixuan.common.constant.Constants;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import com.ruixuan.common.utils.StringUtils;
 
+import static com.ruixuan.common.utils.http.HttpUtil.USER_AGENT;
+import static com.ruixuan.common.utils.http.HttpUtil.createSslClientDefault;
+
 /**
  * 通用http发送方法
  * 
@@ -246,6 +260,42 @@ public class HttpUtils
         return result.toString();
     }
 
+    public static String httpPostRequest(String url, Map<String, Object> param, Map<String, String> headers) {
+        HttpClient httpClient = createSslClientDefault();
+        String strReturn = "";
+        try {
+            HttpPost httppost = new HttpPost(url);
+            httppost.setHeader("User-Agent", USER_AGENT);
+            httppost.addHeader("Content-Type", "application/json");
+            if (headers != null && headers.size() > 0) {
+                for (String key : headers.keySet()) {
+                    httppost.setHeader(key, headers.get(key));
+                }
+            }
+            if (param != null && param.size() > 0) {
+                httppost.setEntity(new StringEntity(new Gson().toJson(param), Charset.forName("UTF-8")));
+            }
+            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(300 * 1000).setConnectTimeout(300 * 1000).build();
+            httppost.setConfig(requestConfig);
+            HttpEntity respentity;
+
+            HttpResponse response = httpClient.execute(httppost);
+            int statusCode = response.getStatusLine().getStatusCode();
+            if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
+                String newUrl = response.getFirstHeader("Location").getValue();
+                return httpPostRequest(newUrl, param, headers);
+            } else if (statusCode == HttpStatus.SC_OK) {
+                respentity = response.getEntity();
+                strReturn = EntityUtils.toString(respentity);
+                return strReturn;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+        return strReturn;
+    }
+
     private static class TrustAnyTrustManager implements X509TrustManager
     {
         @Override

+ 1 - 0
ruixuan-framework/src/main/java/com/ruixuan/framework/config/SecurityConfig.java

@@ -129,6 +129,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/settlement/**").permitAll()
                 .antMatchers("/bytedance/**").permitAll()
                 .antMatchers("/jy/material/**").permitAll()
+                .antMatchers("/jy/report/**").permitAll()
 
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

+ 86 - 0
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/controller/JiaoYangReportController.java

@@ -44,6 +44,92 @@ public class JiaoYangReportController extends BaseController {
     private ISysUserService sysUserService;
 
 
+    @GetMapping("/getAuthItem")
+    @ApiOperation(value = "商品列表")
+    public JSONObject getAuthItem() throws ParseException, InterruptedException {
+        String cookie = jiaoYangReportService.getJiaoYangCookie();
+        jiaoYangReportService.getAuthItem(cookie, 0);
+        // Thread.sleep(5000);
+
+        JSONObject json = new JSONObject();
+        json.put("code", 200);
+        json.put("msg", "更新数据成功");
+        json.put("success", true);
+        return json;
+    }
+
+
+    /**
+     * 获取授权商品列表
+     *
+     * @param itemId
+     * @return
+     */
+    @GetMapping("/getAuthItemList")
+    @ApiOperation(value = "商品列表")
+    public TableDataInfo getAuthItemList(
+            @ApiParam("商品Id") @RequestParam(value = "itemId", required = false) String itemId,
+            @ApiParam("商品名称") @RequestParam(value = "itemName", required = false) String itemName,
+            @ApiParam("达人ID") @RequestParam(value = "promoterId", required = false) String promoterId,
+            @ApiParam("达人名称") @RequestParam(value = "promoterNick", required = false) String promoterNick
+
+    ) {
+        Map<String, Object> requestMap = new HashMap<>();
+        if (!Check.isNull(promoterId)) {
+            requestMap.put("promoterId", promoterId);
+        }
+        if (!Check.isNull(promoterNick)) {
+            requestMap.put("promoterNick", promoterNick);
+        }
+        if (!Check.isNull(itemId)) {
+            requestMap.put("itemId", itemId);
+        }
+        if (!Check.isNull(itemName)) {
+            requestMap.put("itemName", itemName);
+        }
+        startPage();
+        List<JSONObject> list = jiaoYangReportService.getAuthItemList(requestMap);
+        return getDataTable(list);
+    }
+
+
+    @GetMapping("/exportAuthItemList")
+    public void exportAuthItemList(HttpServletRequest request, HttpServletResponse response) throws IOException {
+
+        List<JSONObject> list = jiaoYangReportService.getAuthItemList(null);
+        List<List<Object>> exportList = new ArrayList<>();
+        if (!Check.isNull(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                JSONObject data = list.get(i);
+                List<Object> export = new ArrayList();
+                export.add(data.getString("itemId"));
+                export.add(data.getString("itemName"));
+                export.add(data.getString("itemImageUrl"));
+                export.add(data.getString("itemPriceView"));
+                export.add(data.getString("commissionRateView"));
+                export.add(data.getString("promoterId"));
+                export.add(data.getString("promoterNick"));
+                export.add(data.getString("promoterPhoto"));
+                export.add(data.getString("mcnCommissionRateView"));
+                exportList.add(export);
+            }
+        }
+        String[] headers = {"商品id", "商品标题", "商品链接", "商品单价", "佣金率", "达人ID", "达人昵称", "达人头像", "出让佣金比例"};
+        OutputStream os = response.getOutputStream();
+        ExportExcelUtils eeu = new ExportExcelUtils();
+        XSSFWorkbook workbook = new XSSFWorkbook();
+        eeu.exportExcel(workbook, 0, "授权商品信息", headers, exportList);
+        this.setResponseHeader(response, "授权商品信息.xls");
+        try {
+            workbook.write(os);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        os.flush();
+        os.close();
+    }
+
+
     /**
      * 商品数据
      *

+ 152 - 0
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/entity/JyAuthOrder.java

@@ -0,0 +1,152 @@
+package com.ruixuan.jiaoyang.entity;
+
+
+
+import com.ruixuan.common.annotation.Excel;
+import com.ruixuan.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+/**
+ * 骄阳-授权商品对象 jy_auth_order
+ *
+ * @author ruoyi
+ * @date 2024-03-06
+ */
+public class JyAuthOrder extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long itemId;
+
+    /** 商品标题 */
+    @Excel(name = "商品标题")
+    private String itemName;
+
+    /** 商品链接 */
+    @Excel(name = "商品链接")
+    private String itemImageUrl;
+
+    /** 商品单价 */
+    @Excel(name = "商品单价")
+    private String itemPriceView;
+
+    /** 佣金率 */
+    @Excel(name = "佣金率")
+    private String commissionRateView;
+
+    /** 达人ID */
+    @Excel(name = "达人ID")
+    private String promoterId;
+
+    /** 达人昵称 */
+    @Excel(name = "达人昵称")
+    private String promoterNick;
+
+    /** 达人头像 */
+    @Excel(name = "达人头像")
+    private String promoterPhoto;
+
+    /** 出让佣金比例 */
+    @Excel(name = "出让佣金比例")
+    private String mcnCommissionRateView;
+
+    public void setItemId(Long itemId)
+    {
+        this.itemId = itemId;
+    }
+
+    public Long getItemId()
+    {
+        return itemId;
+    }
+    public void setItemName(String itemName)
+    {
+        this.itemName = itemName;
+    }
+
+    public String getItemName()
+    {
+        return itemName;
+    }
+    public void setItemImageUrl(String itemImageUrl)
+    {
+        this.itemImageUrl = itemImageUrl;
+    }
+
+    public String getItemImageUrl()
+    {
+        return itemImageUrl;
+    }
+    public void setItemPriceView(String itemPriceView)
+    {
+        this.itemPriceView = itemPriceView;
+    }
+
+    public String getItemPriceView()
+    {
+        return itemPriceView;
+    }
+    public void setCommissionRateView(String commissionRateView)
+    {
+        this.commissionRateView = commissionRateView;
+    }
+
+    public String getCommissionRateView()
+    {
+        return commissionRateView;
+    }
+    public void setPromoterId(String promoterId)
+    {
+        this.promoterId = promoterId;
+    }
+
+    public String getPromoterId()
+    {
+        return promoterId;
+    }
+    public void setPromoterNick(String promoterNick)
+    {
+        this.promoterNick = promoterNick;
+    }
+
+    public String getPromoterNick()
+    {
+        return promoterNick;
+    }
+    public void setPromoterPhoto(String promoterPhoto)
+    {
+        this.promoterPhoto = promoterPhoto;
+    }
+
+    public String getPromoterPhoto()
+    {
+        return promoterPhoto;
+    }
+    public void setMcnCommissionRateView(String mcnCommissionRateView)
+    {
+        this.mcnCommissionRateView = mcnCommissionRateView;
+    }
+
+    public String getMcnCommissionRateView()
+    {
+        return mcnCommissionRateView;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("itemId", getItemId())
+                .append("itemName", getItemName())
+                .append("itemImageUrl", getItemImageUrl())
+                .append("itemPriceView", getItemPriceView())
+                .append("commissionRateView", getCommissionRateView())
+                .append("promoterId", getPromoterId())
+                .append("promoterNick", getPromoterNick())
+                .append("promoterPhoto", getPromoterPhoto())
+                .append("mcnCommissionRateView", getMcnCommissionRateView())
+                .append("createTime", getCreateTime())
+                .append("updateTime", getUpdateTime())
+                .toString();
+    }
+}

+ 7 - 0
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/mapper/JiaoYangReportMapper.java

@@ -1,6 +1,7 @@
 package com.ruixuan.jiaoyang.mapper;
 
 import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.jiaoyang.entity.JyAuthOrder;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -52,4 +53,10 @@ public interface JiaoYangReportMapper {
     List<JSONObject> getTopItemUser();
 
     List<JSONObject> getDataByDate(@Param("date") Long date);
+
+    String getJiaoYangCookie();
+
+    void replaceItems(@Param("adds") List<JyAuthOrder> adds);
+
+    List<JSONObject> getAuthItemList(Map<String, Object> requestMap);
 }

+ 6 - 0
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/service/IJiaoYangReportService.java

@@ -51,4 +51,10 @@ public interface IJiaoYangReportService {
     List<JSONObject> getTopItemUser();
 
     List<JSONObject> getDataByDate(Long strDateTimsToInt);
+
+    String getJiaoYangCookie();
+
+    void getAuthItem(String cookie, Integer offset) throws InterruptedException;
+
+    List<JSONObject> getAuthItemList(Map<String, Object> requestMap);
 }

+ 74 - 2
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/service/impl/JiaoYangReportServiceImpl.java

@@ -1,15 +1,23 @@
 package com.ruixuan.jiaoyang.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.common.utils.Check;
+import com.ruixuan.common.utils.http.HttpUtils;
+import com.ruixuan.jiaoyang.entity.JyAuthOrder;
 import com.ruixuan.jiaoyang.mapper.JiaoYangReportMapper;
 import com.ruixuan.jiaoyang.service.IJiaoYangReportService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @Service
+@Slf4j
 public class JiaoYangReportServiceImpl implements IJiaoYangReportService {
     @Autowired
     private JiaoYangReportMapper jiaoYangReportMapper;
@@ -115,8 +123,8 @@ public class JiaoYangReportServiceImpl implements IJiaoYangReportService {
     }
 
     @Override
-    public List<JSONObject> getTopItem(Long date, Long promoterId,String  fieId,String sort) {
-        return jiaoYangReportMapper.getTopItem(date,promoterId,fieId,sort);
+    public List<JSONObject> getTopItem(Long date, Long promoterId, String fieId, String sort) {
+        return jiaoYangReportMapper.getTopItem(date, promoterId, fieId, sort);
     }
 
     @Override
@@ -128,4 +136,68 @@ public class JiaoYangReportServiceImpl implements IJiaoYangReportService {
     public List<JSONObject> getDataByDate(Long strDateTimsToInt) {
         return jiaoYangReportMapper.getDataByDate(strDateTimsToInt);
     }
+
+    @Override
+    public String getJiaoYangCookie() {
+        return jiaoYangReportMapper.getJiaoYangCookie();
+    }
+
+    @Override
+    public void getAuthItem(String cookie, Integer offset) throws InterruptedException {
+        Thread.sleep(1000L);
+        Map<String, Object> params = new HashMap<>();
+        params.put("limit", 10);
+        params.put("offset", offset);
+        params.put("status", 1);
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Cookie", cookie);
+        String postUrl = "https://cps.kwaixiaodian.com/gateway/distribute/app/section/mcn/query/empower/item/list";
+        String resultStr = HttpUtils.httpPostRequest(postUrl, params, headers);
+        JSONObject result = JSONObject.parseObject(resultStr);
+        if (Check.isNull(result)) {
+            log.error("骄阳授权商品数据返回为空");
+            return;
+        }
+        Integer code = result.getInteger("result");
+        if (code != 1) {
+            log.info("骄阳授权商品数据返回异常:", resultStr);
+            return;
+        }
+        JSONObject dataJson = result.getJSONObject("data");
+        if (Check.isNull(dataJson)) {
+            log.error("骄阳授权商品返回为data数据为空");
+            return;
+        }
+        JSONArray list = dataJson.getJSONArray("mcnEmpowerItem");
+        if (Check.isNull(list)) {
+            log.error("骄阳授权商品返回为list数据为空");
+            return;
+        }
+        log.info("骄阳授权商品当前数据条数:{}", list.size());
+        List<JyAuthOrder> adds = new ArrayList<>();
+        for (int i = 0; i < list.size(); i++) {
+            JSONObject jsonObject = list.getJSONObject(i);
+            JyAuthOrder order = new JyAuthOrder();
+            order.setItemId(jsonObject.getLong("itemId"));
+            order.setItemName(jsonObject.getString("itemName"));
+            order.setItemImageUrl(jsonObject.getString("itemImageUrl"));
+            order.setItemPriceView(jsonObject.getString("itemPriceView"));
+            order.setCommissionRateView(jsonObject.getString("commissionRateView"));
+            order.setPromoterId(jsonObject.getString("promoterId"));
+            order.setPromoterNick(jsonObject.getString("promoterNick"));
+            order.setPromoterPhoto(jsonObject.getString("promoterPhoto"));
+            order.setMcnCommissionRateView(jsonObject.getString("mcnCommissionRateView"));
+            adds.add(order);
+        }
+
+        jiaoYangReportMapper.replaceItems(adds);
+        if (list.size() >= 10) {
+            getAuthItem(cookie, offset + 10);
+        }
+    }
+
+    @Override
+    public List<JSONObject> getAuthItemList(Map<String, Object> requestMap) {
+        return jiaoYangReportMapper.getAuthItemList(requestMap);
+    }
 }

+ 59 - 0
ruixuan-live/src/main/resources/mapper/jiaoyang/JiaoYangReportMapper.xml

@@ -3,6 +3,36 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruixuan.jiaoyang.mapper.JiaoYangReportMapper">
+    <insert id="replaceItems">
+
+        replace into jy_auth_order(
+        item_id,
+        item_name,
+        item_image_url,
+        item_price_view,
+        commission_rate_view,
+        promoter_id,
+        promoter_nick,
+        promoter_photo,
+        mcn_commission_rate_view
+        )
+        values
+        <foreach collection="adds" item="add" separator=",">
+            (
+            #{add.itemId},
+            #{add.itemName},
+            #{add.itemImageUrl},
+            #{add.itemPriceView},
+            #{add.commissionRateView},
+            #{add.promoterId},
+            #{add.promoterNick},
+            #{add.promoterPhoto},
+            #{add.mcnCommissionRateView}
+            )
+        </foreach>
+
+
+    </insert>
 
     <select id="item" resultType="com.alibaba.fastjson.JSONObject">
         select t.* from (
@@ -737,6 +767,35 @@ group by stat_hour
 order by stat_hour
 
     </select>
+    <select id="getJiaoYangCookie" resultType="java.lang.String">
+        select  cookie  from jy_fx_cookie limit 1
+    </select>
+    <select id="getAuthItemList" resultType="com.alibaba.fastjson.JSONObject">
+        select
+        cast(item_id as char ) as 'itemId',
+        item_name as 'itemName',
+        item_image_url as 'itemImageUrl',
+        item_price_view as 'itemPriceView',
+        commission_rate_view as 'commissionRateView',
+        promoter_id as 'promoterId',
+        promoter_nick as 'promoterNick',
+        promoter_photo as 'promoterPhoto',
+        mcn_commission_rate_view as 'mcnCommissionRateView'
+        from jy_auth_order
+        where 1 = 1
+        <if test="itemId != null and itemId != ''">
+            and item_id = #{itemId}
+        </if>
+        <if test="itemName != null and itemName != ''">
+            and item_name like concat(concat('%',#{itemName}),'%')
+        </if>
+        <if test="promoterId != null and promoterId != ''">
+            and promoter_id = #{promoterId}
+        </if>
+        <if test="promoterNick != null and promoterNick != ''">
+            and promoter_nick like concat(concat('%',#{promoterNick}),'%')
+        </if>
+    </select>
 
 
 </mapper>