|
@@ -0,0 +1,268 @@
|
|
|
+package com.ruixuan.bytedance.service.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.doudian.open.api.alliance_colonelActivityProduct.AllianceColonelActivityProductRequest;
|
|
|
+import com.doudian.open.api.alliance_colonelActivityProduct.AllianceColonelActivityProductResponse;
|
|
|
+import com.doudian.open.api.alliance_colonelActivityProduct.param.AllianceColonelActivityProductParam;
|
|
|
+import com.doudian.open.api.alliance_instituteColonelActivityList.AllianceInstituteColonelActivityListRequest;
|
|
|
+import com.doudian.open.api.alliance_instituteColonelActivityList.AllianceInstituteColonelActivityListResponse;
|
|
|
+import com.doudian.open.api.alliance_instituteColonelActivityList.data.ActivityListItem;
|
|
|
+import com.doudian.open.api.alliance_instituteColonelActivityList.data.AllianceInstituteColonelActivityListData;
|
|
|
+import com.doudian.open.api.alliance_instituteColonelActivityList.param.AllianceInstituteColonelActivityListParam;
|
|
|
+import com.doudian.open.api.buyin_colonelActivityDetail.BuyinColonelActivityDetailRequest;
|
|
|
+import com.doudian.open.api.buyin_colonelActivityDetail.BuyinColonelActivityDetailResponse;
|
|
|
+import com.doudian.open.api.buyin_colonelActivityDetail.data.BuyinColonelActivityDetailData;
|
|
|
+import com.doudian.open.api.buyin_colonelActivityDetail.param.BuyinColonelActivityDetailParam;
|
|
|
+import com.doudian.open.api.buyin_decryptContactInfo.BuyinDecryptContactInfoRequest;
|
|
|
+import com.doudian.open.api.buyin_decryptContactInfo.BuyinDecryptContactInfoResponse;
|
|
|
+import com.doudian.open.api.buyin_decryptContactInfo.data.BuyinDecryptContactInfoData;
|
|
|
+import com.doudian.open.api.buyin_decryptContactInfo.param.BuyinDecryptContactInfoParam;
|
|
|
+import com.doudian.open.api.buyin_instituteOrderColonel.BuyinInstituteOrderColonelRequest;
|
|
|
+import com.doudian.open.api.buyin_instituteOrderColonel.BuyinInstituteOrderColonelResponse;
|
|
|
+import com.doudian.open.api.buyin_instituteOrderColonel.data.ColonelOrderInfo;
|
|
|
+import com.doudian.open.api.buyin_instituteOrderColonel.data.ColonelOrderInfoSecond;
|
|
|
+import com.doudian.open.api.buyin_instituteOrderColonel.data.Data;
|
|
|
+import com.doudian.open.api.buyin_instituteOrderColonel.data.OrdersItem;
|
|
|
+import com.doudian.open.api.buyin_instituteOrderColonel.param.BuyinInstituteOrderColonelParam;
|
|
|
+import com.doudian.open.core.AccessToken;
|
|
|
+import com.ruixuan.bytedance.entity.BytedanceColonelActivity;
|
|
|
+import com.ruixuan.bytedance.entity.BytedanceColonelActivityDetail;
|
|
|
+import com.ruixuan.bytedance.entity.BytedanceOrderList;
|
|
|
+import com.ruixuan.bytedance.mapper.BytedanceColonelActivityMapper;
|
|
|
+import com.ruixuan.bytedance.mapper.BytedanceMapper;
|
|
|
+import com.ruixuan.bytedance.service.IBytedanceAccessTokenService;
|
|
|
+import com.ruixuan.bytedance.service.IBytedanceService;
|
|
|
+import com.ruixuan.common.utils.Check;
|
|
|
+import com.ruixuan.common.utils.DateUtils;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class BytedanceServiceImpl implements IBytedanceService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IBytedanceAccessTokenService tokenService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BytedanceColonelActivityMapper bytedanceColonelActivityMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BytedanceMapper bytedanceMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增团长活动 信息
|
|
|
+ *
|
|
|
+ * @param bytedanceColonelActivity 团长活动 信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void addBytedanceColonelActivityList(Long page) {
|
|
|
+ AccessToken accessToken = tokenService.getAccessToken(1L);
|
|
|
+ AllianceInstituteColonelActivityListRequest request = new AllianceInstituteColonelActivityListRequest();
|
|
|
+ AllianceInstituteColonelActivityListParam param = request.getParam();
|
|
|
+ param.setStatus(0);
|
|
|
+ param.setSearchType(0L);
|
|
|
+ param.setSortType(0L);
|
|
|
+ param.setPage(page);
|
|
|
+ param.setPageSize(20L);
|
|
|
+ AllianceInstituteColonelActivityListResponse response = request.execute(accessToken);
|
|
|
+ if (Check.isNull(response) || !"10000".equals(response.getCode())) {
|
|
|
+ log.error("\n【请求接口】: {}\n【请求参数】:{}\n【响应数据】:{}", "/alliance/instituteColonelActivityList;(团长活动查询接口)", param, response);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ AllianceInstituteColonelActivityListData data = response.getData();
|
|
|
+ List<ActivityListItem> activityList = data.getActivityList();
|
|
|
+ if (Check.isNotNull(activityList)) {
|
|
|
+ List<BytedanceColonelActivity> list = new ArrayList<>();
|
|
|
+ for (ActivityListItem activityItem : activityList) {
|
|
|
+ BytedanceColonelActivity activity = new BytedanceColonelActivity();
|
|
|
+ BeanUtils.copyProperties(activityItem, activity);
|
|
|
+ activity.setActivityStartTime(DateUtils.strDateToInt(activityItem.getActivityStartTime()));
|
|
|
+ activity.setActivityEndTime(DateUtils.strDateToInt(activityItem.getActivityEndTime()));
|
|
|
+ activity.setApplicationStartTime(DateUtils.strDateToInt(activityItem.getApplicationStartTime()));
|
|
|
+ activity.setApplicationEndTime(DateUtils.strDateToInt(activityItem.getApplicationEndTime()));
|
|
|
+ if (Check.isNotNull(activityItem.getCategoriesLimit())) {
|
|
|
+ activity.setCategoriesLimit(JSONObject.toJSON(activityItem.getCategoriesLimit()).toString());
|
|
|
+ }
|
|
|
+ activity.setInstitutionId(data.getInstitutionId());
|
|
|
+ activity.setColonelBuyinId(data.getColonelBuyinId());
|
|
|
+ list.add(activity);
|
|
|
+ }
|
|
|
+ bytedanceMapper.replaceBatchActivitys(list);
|
|
|
+
|
|
|
+ //添加详情
|
|
|
+ for (BytedanceColonelActivity activity : list) {
|
|
|
+ BytedanceColonelActivityDetail activityDetail = bytedanceColonelActivityMapper.getDetailByActivityId(activity.getActivityId());
|
|
|
+ if (Check.isNull(activityDetail)) {
|
|
|
+ addBytedanceColonelActivityDetail(activity.getActivityId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ int size = data.getActivityList().size();
|
|
|
+ if (size >= 20) {
|
|
|
+ addBytedanceColonelActivityList(page + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addBytedanceColonelActivityDetail(Long activityId) {
|
|
|
+ AccessToken accessToken = tokenService.getAccessToken(1L);
|
|
|
+ BuyinColonelActivityDetailRequest request = new BuyinColonelActivityDetailRequest();
|
|
|
+ BuyinColonelActivityDetailParam param = request.getParam();
|
|
|
+ param.setActivityId(activityId);
|
|
|
+ BuyinColonelActivityDetailResponse response = request.execute(accessToken);
|
|
|
+ if (Check.isNull(response) || !"10000".equals(response.getCode())) {
|
|
|
+ log.error("\n【请求接口】: {}\n【请求参数】:{}\n【响应数据】:{}", "/buyin/colonelActivityDetail;(获取团长活动详情)", param, response);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ BuyinColonelActivityDetailData data = response.getData();
|
|
|
+ if (Check.isNotNull(data)) {
|
|
|
+ BytedanceColonelActivityDetail activityDetail = new BytedanceColonelActivityDetail();
|
|
|
+ BeanUtils.copyProperties(data, activityDetail);
|
|
|
+ if (Check.isNotNull(data.getIsNewShop())) {
|
|
|
+ activityDetail.setIsNewShop(data.getIsNewShop() ? 1 : 0);
|
|
|
+ }
|
|
|
+ if (Check.isNotNull(data.getHasThreshold())) {
|
|
|
+ activityDetail.setHasThreshold(data.getHasThreshold() ? 1 : 0);
|
|
|
+ }
|
|
|
+ if (Check.isNotNull(data.getShopType())) {
|
|
|
+ activityDetail.setShopType(JSONObject.toJSON(data.getShopType()).toString());
|
|
|
+ }
|
|
|
+ if (Check.isNotNull(data.getWechatId())) {
|
|
|
+ activityDetail.setWechatId(decryptContactInfo(accessToken, data.getWechatId(), activityId));
|
|
|
+ }
|
|
|
+ if (Check.isNotNull(data.getPhoneNum())) {
|
|
|
+ activityDetail.setPhoneNum(decryptContactInfo(accessToken, data.getPhoneNum(), activityId));
|
|
|
+ }
|
|
|
+ //招商类目
|
|
|
+ if (Check.isNotNull(data.getCategories())) {
|
|
|
+ activityDetail.setCategories(JSONObject.toJSON(data.getCategories()).toString());
|
|
|
+ }
|
|
|
+ activityDetail.setApplyStartTime(DateUtils.strDateToInt(data.getApplyStartTime()));
|
|
|
+ activityDetail.setApplyEndTime(DateUtils.strDateToInt(data.getApplyEndTime()));
|
|
|
+ bytedanceMapper.insertDetail(activityDetail);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addBytedanceColonelActivityProduct(Long activityId, String productInfo) {
|
|
|
+ AccessToken accessToken = tokenService.getAccessToken(1L);
|
|
|
+
|
|
|
+ AllianceColonelActivityProductRequest request = new AllianceColonelActivityProductRequest();
|
|
|
+ AllianceColonelActivityProductParam param = request.getParam();
|
|
|
+ param.setActivityId(activityId);
|
|
|
+ param.setProductInfo(productInfo);//商品ID/名称(支持根据商品id或者商品名称搜索,商品ID精准匹配,商品名称模糊匹配)
|
|
|
+ param.setPage(1L);//页码,从1开始。分页模式下生效,超过10000条会被限制,推荐使用游标模式 retrieve_mode=1
|
|
|
+ param.setCount(20L);//每页数量(每页最多20)
|
|
|
+// param.setSearchType(4L);//0:报名时间;1:活动价格排序;2:活动佣金比例排序;4:更新时间排序
|
|
|
+// param.setSortType(0L);//排序顺序。0:升序;1:降序
|
|
|
+// param.setCooperationInfo("23412312");//商家ID or 商家名称 or 一级团长名称 or 一级团长ID
|
|
|
+// param.setCooperationType(0);//合作类型. 0: 不限; 1: 商家; 2: 团长
|
|
|
+// param.setStatus(0L);//活动商品状态,不传查所有状态。0:待审核;1:推广中;2:申请未通过;3:合作已终止;6:合作已到期
|
|
|
+// param.setRetrieveMode(1);//获取模式。0: 分页模式(默认),最多返回10000条数据;1: 游标模式(推荐),返回条数无限制
|
|
|
+
|
|
|
+ AllianceColonelActivityProductResponse response = request.execute(accessToken);
|
|
|
+ System.out.println(response);
|
|
|
+ if (Check.isNull(response) || !"10000".equals(response.getCode())) {
|
|
|
+ log.error("\n【请求接口】: {}\n【请求参数】:{}\n【响应数据】:{}", "/buyin/colonelActivityDetail;(获取团长活动详情)", param, response);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addBytedanceInstituteOrderColonel(String startTime, String endTime, String cursor) {
|
|
|
+ AccessToken accessToken = tokenService.getAccessToken(1L);
|
|
|
+
|
|
|
+ BuyinInstituteOrderColonelRequest request = new BuyinInstituteOrderColonelRequest();
|
|
|
+ BuyinInstituteOrderColonelParam param = request.getParam();
|
|
|
+ param.setSize(200L);
|
|
|
+ param.setCursor(cursor);
|
|
|
+ param.setStartTime(startTime.concat(" 00:00:00"));
|
|
|
+ param.setEndTime(endTime.concat(" 23:59:59"));
|
|
|
+ param.setTimeType("pay");// 查询时间类型。pay: 支付时间(默认); update:联盟侧更新时间,非订单状态更新时间
|
|
|
+ BuyinInstituteOrderColonelResponse response = request.execute(accessToken);
|
|
|
+ System.out.println(response);
|
|
|
+ if (Check.isNull(response) || !"10000".equals(response.getCode())) {
|
|
|
+ log.error("\n【请求接口】: {}\n【请求参数】:{}\n【响应数据】:{}", "/buyin/colonelActivityDetail;(获取团长活动详情)", param, response);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Data data = response.getData();
|
|
|
+ if (Check.isNotNull(data)) {
|
|
|
+ List<OrdersItem> orders = data.getOrders();
|
|
|
+ cursor = data.getCursor();
|
|
|
+ if (Check.isNotNull(orders) && orders.size() > 0) {
|
|
|
+ List<BytedanceOrderList> list = new ArrayList<>();
|
|
|
+ BytedanceOrderList orderList = new BytedanceOrderList();
|
|
|
+ for (OrdersItem order : orders) {
|
|
|
+ BeanUtils.copyProperties(order, orderList);
|
|
|
+ orderList.setUpdateTime(DateUtils.strDateToInt(order.getUpdateTime()));
|
|
|
+ orderList.setPaySuccessTime(DateUtils.strDateToInt(order.getPaySuccessTime()));
|
|
|
+ orderList.setRefundTime(DateUtils.strDateToInt(order.getRefundTime()));
|
|
|
+ orderList.setSettleTime(DateUtils.strDateToInt(order.getSettleTime()));
|
|
|
+ ColonelOrderInfo colonelInfo = order.getColonelOrderInfo();
|
|
|
+ if (Check.isNotNull(colonelInfo)) {
|
|
|
+ orderList.setColonelCommissionRate(colonelInfo.getCommissionRate());
|
|
|
+ orderList.setColonelActivityId(colonelInfo.getActivityId());
|
|
|
+ orderList.setColonelBuyinId(colonelInfo.getColonelBuyinId());
|
|
|
+ orderList.setColonelEstimatedCommission(colonelInfo.getEstimatedCommission());
|
|
|
+ orderList.setColonelInstitutionId(colonelInfo.getInstitutionId());
|
|
|
+ orderList.setColonelInstitutionName(colonelInfo.getInstitutionName());
|
|
|
+ orderList.setColonelRealCommission(colonelInfo.getRealCommission());
|
|
|
+ orderList.setColonelSettledTechServiceFee(colonelInfo.getSettledTechServiceFee());
|
|
|
+ orderList.setColonelTechServiceFee(colonelInfo.getTechServiceFee());
|
|
|
+ orderList.setColonelTechServiceFeeRate(colonelInfo.getTechServiceFeeRate());
|
|
|
+ }
|
|
|
+ ColonelOrderInfoSecond secondInfo = order.getColonelOrderInfoSecond();
|
|
|
+ if (Check.isNotNull(secondInfo)) {
|
|
|
+ orderList.setSecondCommissionRate(secondInfo.getCommissionRate());
|
|
|
+ orderList.setSecondActivityId(secondInfo.getActivityId());
|
|
|
+ orderList.setSecondColonelBuyinId(secondInfo.getColonelBuyinId());
|
|
|
+ orderList.setSecondInstitutionId(secondInfo.getInstitutionId());
|
|
|
+ orderList.setSecondInstitutionName(secondInfo.getInstitutionName());
|
|
|
+ orderList.setSecondEstimatedCommission(secondInfo.getEstimatedCommission());
|
|
|
+ orderList.setSecondRealCommission(secondInfo.getRealCommission());
|
|
|
+ }
|
|
|
+ list.add(orderList);
|
|
|
+ }
|
|
|
+
|
|
|
+ bytedanceMapper.replaceBatchOrders(list);
|
|
|
+
|
|
|
+ int size = orders.size();
|
|
|
+ if (size >= 200) {
|
|
|
+ addBytedanceInstituteOrderColonel(startTime, endTime, cursor);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 联系方式解密
|
|
|
+ */
|
|
|
+ public String decryptContactInfo(AccessToken accessToken, String text, Long activityId) {
|
|
|
+ try {
|
|
|
+ BuyinDecryptContactInfoRequest request = new BuyinDecryptContactInfoRequest();
|
|
|
+ BuyinDecryptContactInfoParam param = request.getParam();
|
|
|
+ param.setText(text);
|
|
|
+ BuyinDecryptContactInfoResponse response = request.execute(accessToken);
|
|
|
+ BuyinDecryptContactInfoData data = response.getData();
|
|
|
+ return data.getContactInfo();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("联系方式解密失败,活动ID:{}", activityId);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|