集成快代理 评分 好评星级

This commit is contained in:
wangshuai 2024-07-06 14:46:09 +08:00
parent 79e29ba300
commit 52f4a1a9b8
5 changed files with 215 additions and 136 deletions

View File

@ -24,19 +24,19 @@ public class BusStoreDayInfo extends BaseEntity
/** 昨日订单量 */
@Excel(name = "昨日订单量")
private Long lastOrderNum;
private int lastOrderNum;
/** 昨日好评量 */
@Excel(name = "昨日好评量")
private Long lastPositiveReviewsNum;
private int lastPositiveReviewsNum;
/** 昨日五星量 */
@Excel(name = "昨日五星量")
private Long lastFiveStarReviewsNum;
private int lastFiveStarReviewsNum;
/** 昨日回访量 */
@Excel(name = "昨日回访量")
private Long lastReturnVisitNum;
private int lastReturnVisitNum;
/** 昨日回访比50% */
@Excel(name = "昨日回访比50%")
@ -44,7 +44,7 @@ public class BusStoreDayInfo extends BaseEntity
/** 今日回访量 */
@Excel(name = "今日回访量")
private Long todayReturnVisitNum;
private int todayReturnVisitNum;
/** 评分 */
@Excel(name = "评分")
@ -68,39 +68,39 @@ public class BusStoreDayInfo extends BaseEntity
{
return storeId;
}
public void setLastOrderNum(Long lastOrderNum)
public void setLastOrderNum(int lastOrderNum)
{
this.lastOrderNum = lastOrderNum;
}
public Long getLastOrderNum()
public int getLastOrderNum()
{
return lastOrderNum;
}
public void setLastPositiveReviewsNum(Long lastPositiveReviewsNum)
public void setLastPositiveReviewsNum(int lastPositiveReviewsNum)
{
this.lastPositiveReviewsNum = lastPositiveReviewsNum;
}
public Long getLastPositiveReviewsNum()
public int getLastPositiveReviewsNum()
{
return lastPositiveReviewsNum;
}
public void setLastFiveStarReviewsNum(Long lastFiveStarReviewsNum)
public void setLastFiveStarReviewsNum(int lastFiveStarReviewsNum)
{
this.lastFiveStarReviewsNum = lastFiveStarReviewsNum;
}
public Long getLastFiveStarReviewsNum()
public int getLastFiveStarReviewsNum()
{
return lastFiveStarReviewsNum;
}
public void setLastReturnVisitNum(Long lastReturnVisitNum)
public void setLastReturnVisitNum(int lastReturnVisitNum)
{
this.lastReturnVisitNum = lastReturnVisitNum;
}
public Long getLastReturnVisitNum()
public int getLastReturnVisitNum()
{
return lastReturnVisitNum;
}
@ -113,12 +113,12 @@ public class BusStoreDayInfo extends BaseEntity
{
return lastReturnVisitRate;
}
public void setTodayReturnVisitNum(Long todayReturnVisitNum)
public void setTodayReturnVisitNum(int todayReturnVisitNum)
{
this.todayReturnVisitNum = todayReturnVisitNum;
}
public Long getTodayReturnVisitNum()
public int getTodayReturnVisitNum()
{
return todayReturnVisitNum;
}

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.business.domain.*;
import com.ruoyi.business.mapper.BusStoreDayInfoMapper;
import com.ruoyi.business.mapper.BusStoreInfoMapper;
import com.ruoyi.business.service.IBusStoreDayInfoService;
import com.ruoyi.business.service.IBusStoreInfoService;
@ -11,7 +12,6 @@ import com.ruoyi.business.service.IMeituanService;
import com.ruoyi.common.config.ProxyProperties;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.HttpClientUtilT;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
@ -23,7 +23,6 @@ import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -32,6 +31,8 @@ import org.springframework.stereotype.Service;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -43,8 +44,13 @@ public class MeituanServiceImpl implements IMeituanService {
@Autowired
private BusStoreInfoMapper busStoreInfoMapper;
@Autowired
private BusStoreDayInfoMapper busStoreDayInfoMapper;
@Autowired
private StringRedisTemplate redisTemplate;
@Autowired
private IBusStoreInfoService busStoreInfoService;
@Autowired
@ -54,6 +60,7 @@ public class MeituanServiceImpl implements IMeituanService {
/**
* 获取cookie
*
* @param cookie
* @return
*/
@ -73,7 +80,12 @@ public class MeituanServiceImpl implements IMeituanService {
storeInfo.setGrantStatus("1");//授权登录状态
storeInfo.setReturnVisitStatus("2");// 营销状态
storeInfo.setSelfDeliveryStatus("1");// 1 正常 2 自配送 3 删除
return R.ok(busStoreInfoService.insertBusStoreInfo(storeInfo));
busStoreInfoService.insertBusStoreInfo(storeInfo)
BusStoreDayInfo busStoreDayInfo = new BusStoreDayInfo();
busStoreDayInfo.setStoreId(storeInfo.getId());
busStoreDayInfo.setCreateTime(new Date());
busStoreDayInfoMapper.insertBusStoreDayInfo(busStoreDayInfo)
return R.ok();
} else if (list.size() == 1) {
if (!cookie.getUserName().equals(storeInfo.getBindUser())) {
throw new ServiceException("授权失败,已绑定其他代理账号!");
@ -92,6 +104,7 @@ public class MeituanServiceImpl implements IMeituanService {
/**
* 获取好评批量
*
* @return
*/
@Override
@ -100,13 +113,21 @@ public class MeituanServiceImpl implements IMeituanService {
busStoreInfo.setGrantStatus("1");
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
for (BusStoreInfo store : busStoreInfoList) {
getCommentsOne(store);
Boolean flag = getCommentsOne(store);
if (!flag) {
//掉线
BusStoreInfo busStoreInfo1 = new BusStoreInfo();
busStoreInfo1.setId(store.getId());
busStoreInfo1.setGrantStatus("2");
busStoreInfoMapper.updateBusStoreInfo(busStoreInfo1);
}
}
return "ok";
}
/**
* 获取评分批量
*
* @return
*/
@Override
@ -115,13 +136,21 @@ public class MeituanServiceImpl implements IMeituanService {
busStoreInfo.setGrantStatus("1");
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
for (BusStoreInfo store : busStoreInfoList) {
getScoreOne(store);
Boolean flag = getScoreOne(store);
if (!flag) {
//掉线
BusStoreInfo busStoreInfo1 = new BusStoreInfo();
busStoreInfo1.setId(store.getId());
busStoreInfo1.setGrantStatus("2");
busStoreInfoMapper.updateBusStoreInfo(busStoreInfo1);
}
}
return "ok";
}
/**
* 获取订单
*
* @param wmPoiId
* @param date
* @param cookie
@ -232,6 +261,7 @@ public class MeituanServiceImpl implements IMeituanService {
/**
* 获取号码
*
* @param orderId
* @param cookie
* @return
@ -299,6 +329,7 @@ public class MeituanServiceImpl implements IMeituanService {
/**
* 获取mtgsig
*
* @param orderId
* @param regionId
* @param regionVersion
@ -341,6 +372,7 @@ public class MeituanServiceImpl implements IMeituanService {
/**
* 获取评分单条
*
* @return
*/
private Boolean getScoreOne(BusStoreInfo store) {
@ -391,32 +423,73 @@ public class MeituanServiceImpl implements IMeituanService {
/**
* 获取订单数和好评单条
*
* @return
*/
private Boolean getCommentsOne(BusStoreInfo store) {
//commScore=1 好评commScore=0 全部即订单量五星好评取返回结果orderCommentScore=5
String url = "https://waimaieapp.meituan.com/gw/customer/comment/list";
// String url = "https://waimaieapp.meituan.com/gw/customer/comment/list";
// Map<String,Object> params = new HashMap<>();
// params.put("ignoreSetRouterProxy",true);
// params.put("acctId",
// valueFromCookie("acctId",store.getStoreCookie()));
// params.put("wmPoiId",
// valueFromCookie("wmPoiId",store.getStoreCookie()));
// params.put("token",valueFromCookie("token",store.getStoreCookie()));
// params.put("appType",3);
// params.put("commScore",1);
// params.put("commType",-1);
// params.put("hasContent",-1);
// params.put("periodType",4);
// params.put("beginTime",1719676800);
// params.put("endTime",1719676800);
// params.put("onlyAuditNotPass",0);
// params.put("pageNum",1);
// params.put("pageSize",10);
// params.put("source",1);
// String result = HttpClientUtilT.doGet(url,null,params);
// System.out.println(result);//落库
LocalDateTime now = LocalDateTime.now();
String url = "https://waimaieapp.meituan.com/gw/customer/comment/statistics/score/summary/single/distribution";
Map<String, Object> params = new HashMap<>();
params.put("ignoreSetRouterProxy",true);
params.put("acctId",
valueFromCookie("acctId",store.getStoreCookie()));
params.put("wmPoiId",
valueFromCookie("wmPoiId",store.getStoreCookie()));
// uriBuilder.setParameter("ignoreSetRouterProxy","true");
params.put("acctId", valueFromCookie("acctId", store.getStoreCookie()));
params.put("wmPoiId", valueFromCookie("wmPoiId", store.getStoreCookie()));
params.put("token", valueFromCookie("token", store.getStoreCookie()));
params.put("appType",3);
params.put("commScore",1);
params.put("commType",-1);
params.put("hasContent",-1);
params.put("periodType",4);
params.put("beginTime",1719676800);
params.put("endTime",1719676800);
params.put("onlyAuditNotPass",0);
params.put("pageNum",1);
params.put("pageSize",10);
params.put("source",1);
String result = HttpClientUtilT.doGet(url,null,params);
System.out.println(result);//落库
params.put("bsid", valueFromCookie("bsid", store.getStoreCookie()));
params.put("appType", "3");
params.put("durationType", "2");
params.put("dt", now.format(DateTimeFormatter.ofPattern("yyyyMMdd")));
url = appendParams(url, params);
HttpGet request = new HttpGet(url);
String result = null;
try {
CloseableHttpClient httpClient = proxyHttpClient();
result = EntityUtils.toString(httpClient.execute(request).getEntity());
JSONObject jsonObject = JSONObject.parseObject(result);
int code = jsonObject.getInteger(("code"));
if (code != 0) {
return false;
}
JSONArray array = jsonObject.getJSONObject("data").getJSONArray("list");
BusStoreDayInfo busStoreDayInfo = new BusStoreDayInfo();
busStoreDayInfo.setStoreId(store.getId());
List<BusStoreDayInfo> list1 = busStoreDayInfoService.selectBusStoreDayInfoList(busStoreDayInfo);
if (list1.size() > 0) {
BusStoreDayInfo busStoreDayInfo1 = new BusStoreDayInfo();
int fiveNum = array.getJSONObject(array.size()).getInteger("fiveNum");
int fourNum = array.getJSONObject(array.size()).getInteger("fourNum");
busStoreDayInfo1.setLastFiveStarReviewsNum(fiveNum);
busStoreDayInfo1.setLastPositiveReviewsNum(fiveNum + fourNum);
busStoreDayInfoService.updateBusStoreDayInfo(busStoreDayInfo1);
}
System.out.println(jsonObject);//落库
return true;
} catch (Exception e) {
return false;
// e.printStackTrace();
}
}
// 解析Cookie

View File

@ -19,13 +19,14 @@ import java.util.Map;
public class TestProxyOKHttpClient {
public static void main(String[] args) throws Exception {
String pageUrl = "https://waimaieapp.meituan.com/gw/customer/comment/scores"; // 要访问的目标网页
// String pageUrl = "https://waimaieapp.meituan.com/gw/customer/comment/statistics/socre/single/trend"; // 要访问的目标网页
String pageUrl = "https://waimaieapp.meituan.com/gw/customer/comment/statistics/score/summary/single/distribution";
String proxyIp = "q335.kdltpspro.com"; // 隧道服务器域名
int proxyPort = 15818; // 端口号
// 用户名密码, 若已添加白名单则不需要添加
// private static String username = "t12023179565372";
// private static String password = "nffm6c11";
String ck = "WEBDFPID=81x675y2y0x156y20z8194xvv5622uv180938x0x565979585zu21vx7-2034987530564-1719627530564QGCGCKGfd79fef3d01d5e9aadc18ccd4d0c95072413; _lxsdk_cuid=19061b46258c8-0a575a85246371-d373666-1fa400-19061b4625873; _lxsdk=19061b46258c8-0a575a85246371-d373666-1fa400-19061b4625873; device_uuid=!f681d2ae-d8e3-44ae-abed-9319cef9b9a1; uuid_update=true; pushToken=08Y-B6R3RJh0vWW3sunjIls8g5ks282V0XDqw0_8uK2I*; shopCategory=food; JSESSIONID=dkj01s9yo2h2q99aetsthoq3; acctId=196975850; token=0eq1KL_sB7ri93DJ5E3VcEjEWxjBRjeEsXmkjhWmF3bo*; wmPoiId=21737990; isOfflineSelfOpen=0; city_id=510100; isChain=0; ignore_set_router_proxy=false; region_id=1000510100; region_version=1717637457; bsid=XexDMsEVbmI6WgjNSDW-gwTDf1RtcW1Pkmjt8mV3rmsf3lqyuwluHfeuFrPPZ_2JX9I8z7LBpBdpaBthMwykUw; city_location_id=510100; location_id=510107; has_not_waimai_poi=0; cityId=210100; provinceId=210000; set_info=%7B%22wmPoiId%22%3A%2221737990%22%2C%22region_id%22%3A%221000510100%22%2C%22region_version%22%3A1717637457%7D; wpush_server_url=wss://wpush.meituan.com; logan_session_token=r97sfva90wzsyia113hr; setPrivacyTime=1_20240706; _lxsdk_s=19085cff3a6-850-391-417%7C%7C182";
String ck = "WEBDFPID=1720243694471SOQUSWGfd79fef3d01d5e9aadc18ccd4d0c95075017-1720243694471-1720243694471SOQUSWGfd79fef3d01d5e9aadc18ccd4d0c95075017; _lxsdk_cuid=1908683abd3c8-0e87cc55781832-26031d51-1fa400-1908683abd3c8; _lxsdk=1908683abd3c8-0e87cc55781832-26031d51-1fa400-1908683abd3c8; token=0wZSkATTKcJeT2-UVQeT2Up8z8yoEF4wcCF5envvlMiA*; bsid=F7FNo1sEad3bOpIe5IElSfYNcbgOHbnY4yussusoXL7rxgu6XJAk-Grh6nnaCDOSVYwZKH4CiWsK21nq7xIqNg; acctId=160394866; wmPoiId=18277065; _source=PC; acctName=wmhxkl2556816; device_uuid=!3b06a9f7-cb53-4d40-acc9-bb90ff4d4104; _lxsdk_s=1908683abd4-429-f65-925%7C%7C60";
// JDK 8u111版本后目标页面为HTTPS协议启用proxy用户密码鉴权
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
@ -50,17 +51,20 @@ public class TestProxyOKHttpClient {
URIBuilder uriBuilder = new URIBuilder();
uriBuilder.setHost(url.getPath());
Map<String,Object> params = new HashMap<>();
uriBuilder.setParameter("ignoreSetRouterProxy","true");
// uriBuilder.setParameter("ignoreSetRouterProxy","true");
uriBuilder.setParameter("acctId",valueFromCookie("acctId",ck));
uriBuilder.setParameter("wmPoiId",valueFromCookie("wmPoiId",ck));
uriBuilder.setParameter("token",valueFromCookie("token",ck));
uriBuilder.setParameter("bsid",valueFromCookie("bsid",ck));
uriBuilder.setParameter("appType","3");
uriBuilder.setParameter("source","1");
// params.put("acctId",valueFromCookie("acctId",store.getStoreCookie()));
// params.put("wmPoiId",valueFromCookie("wmPoiId",store.getStoreCookie()));
// params.put("token",valueFromCookie("token",store.getStoreCookie()));
// params.put("appType",3);
// params.put("source",1);
uriBuilder.setParameter("durationType","2");
// uriBuilder.setParameter("optimus_uuid","3b06a9f7-cb53-4d40-acc9-bb90ff4d4104");
// uriBuilder.setParameter("optimus_risk_level","71");
// uriBuilder.setParameter("optimus_code","10");
// uriBuilder.setParameter("optimus_partner","19");
// uriBuilder.setParameter("beginDate","20240605");
// uriBuilder.setParameter("endDate","20240705");
uriBuilder.setParameter("dt","20240706");
HttpGet httpget = new HttpGet(uriBuilder.build());

View File

@ -6,6 +6,8 @@ import java.net.InetSocketAddress;
import java.net.Proxy;
public class test2 {
public static void main(String args[]) throws IOException {
// 目标网站
String targetUrl = "https://waimaieapp.meituan.com/gw/customer/comment/scores";

View File

@ -25,13 +25,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectBusStoreDayInfoVo"/>
<where>
<if test="storeId != null "> and store_id = #{storeId}</if>
<if test="lastOrderNum != null "> and last_order_num = #{lastOrderNum}</if>
<if test="lastPositiveReviewsNum != null "> and last_positive_reviews_num = #{lastPositiveReviewsNum}</if>
<if test="lastFiveStarReviewsNum != null "> and last_five_star_reviews_num = #{lastFiveStarReviewsNum}</if>
<if test="lastReturnVisitNum != null "> and last_return_visit_num = #{lastReturnVisitNum}</if>
<if test="lastReturnVisitRate != null and lastReturnVisitRate != ''"> and last_return_visit_rate = #{lastReturnVisitRate}</if>
<if test="todayReturnVisitNum != null "> and today_return_visit_num = #{todayReturnVisitNum}</if>
<if test="score != null and score != ''"> and score = #{score}</if>
<!-- <if test="lastOrderNum != null "> and last_order_num = #{lastOrderNum}</if>-->
<!-- <if test="lastPositiveReviewsNum != null "> and last_positive_reviews_num = #{lastPositiveReviewsNum}</if>-->
<!-- <if test="lastFiveStarReviewsNum != null "> and last_five_star_reviews_num = #{lastFiveStarReviewsNum}</if>-->
<!-- <if test="lastReturnVisitNum != null "> and last_return_visit_num = #{lastReturnVisitNum}</if>-->
<!-- <if test="lastReturnVisitRate != null and lastReturnVisitRate != ''"> and last_return_visit_rate = #{lastReturnVisitRate}</if>-->
<!-- <if test="todayReturnVisitNum != null "> and today_return_visit_num = #{todayReturnVisitNum}</if>-->
<!-- <if test="score != null and score != ''"> and score = #{score}</if>-->
</where>
</select>