|
@@ -10,6 +10,7 @@ import com.caimei365.user.model.po.ServiceProviderPo;
|
|
import com.caimei365.user.model.po.SuperVipPo;
|
|
import com.caimei365.user.model.po.SuperVipPo;
|
|
import com.caimei365.user.model.vo.*;
|
|
import com.caimei365.user.model.vo.*;
|
|
import com.caimei365.user.service.SellerService;
|
|
import com.caimei365.user.service.SellerService;
|
|
|
|
+import com.caimei365.user.utils.ImageUtils;
|
|
import com.caimei365.user.utils.JwtUtil;
|
|
import com.caimei365.user.utils.JwtUtil;
|
|
import com.caimei365.user.utils.MathUtil;
|
|
import com.caimei365.user.utils.MathUtil;
|
|
import com.caimei365.user.utils.Md5Util;
|
|
import com.caimei365.user.utils.Md5Util;
|
|
@@ -19,17 +20,20 @@ import io.swagger.models.auth.In;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
|
+import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* Description
|
|
* Description
|
|
@@ -40,7 +44,8 @@ import java.util.regex.Pattern;
|
|
@Slf4j
|
|
@Slf4j
|
|
@Service
|
|
@Service
|
|
public class SellerServiceImpl implements SellerService {
|
|
public class SellerServiceImpl implements SellerService {
|
|
-
|
|
|
|
|
|
+ @Value("${caimei.wwwDomain}")
|
|
|
|
+ private String wwwDomain;
|
|
@Resource
|
|
@Resource
|
|
private RedisService redisService;
|
|
private RedisService redisService;
|
|
@Resource
|
|
@Resource
|
|
@@ -55,6 +60,8 @@ public class SellerServiceImpl implements SellerService {
|
|
private SuperVipMapper vipMapper;
|
|
private SuperVipMapper vipMapper;
|
|
@Resource
|
|
@Resource
|
|
private LoginMapper loginMapper;
|
|
private LoginMapper loginMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ClubMapper clubMapper;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 协销机构列表
|
|
* 协销机构列表
|
|
@@ -70,7 +77,21 @@ public class SellerServiceImpl implements SellerService {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public ResponseJson<PageInfo<ClubVo>> getClubList(Integer serviceProviderId, Integer status, Integer type, String name, Integer userIdentity, Integer groupServiceId, Integer pageNum, Integer pageSize) {
|
|
|
|
|
|
+ public ResponseJson<PageInfo<ClubVo>> getClubList(Integer serviceProviderId, Integer status, Integer type, String name, Integer userIdentity, Integer groupServiceId, String startTime, String endTime, Integer pageNum, Integer pageSize) {
|
|
|
|
+ // 处理时间格式
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
+ try {
|
|
|
|
+ if (StringUtils.isNotBlank(startTime)) {
|
|
|
|
+ String start = dateFormat.format(dateFormat.parse(startTime));
|
|
|
|
+ startTime = start + " 00:00:00";
|
|
|
|
+ }
|
|
|
|
+ if (StringUtils.isNotBlank(endTime)){
|
|
|
|
+ String end = dateFormat.format(dateFormat.parse(endTime));
|
|
|
|
+ endTime = end + " 23:59:59";
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
// 获取协销用户下的机构列表
|
|
// 获取协销用户下的机构列表
|
|
List<ClubVo> clubList = new ArrayList<ClubVo>();
|
|
List<ClubVo> clubList = new ArrayList<ClubVo>();
|
|
List<Integer> serviceIds = new ArrayList<Integer>();
|
|
List<Integer> serviceIds = new ArrayList<Integer>();
|
|
@@ -79,12 +100,12 @@ public class SellerServiceImpl implements SellerService {
|
|
return ResponseJson.success();
|
|
return ResponseJson.success();
|
|
}else{
|
|
}else{
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
- clubList = sellerMapper.findClubs(serviceProviderId, status, name, userIdentity, type, null);
|
|
|
|
|
|
+ clubList = sellerMapper.findClubs(serviceProviderId, status, name, userIdentity, type, startTime, endTime, null);
|
|
}
|
|
}
|
|
} else if (2 == type) {
|
|
} else if (2 == type) {
|
|
if (null != groupServiceId && groupServiceId > 0) {
|
|
if (null != groupServiceId && groupServiceId > 0) {
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
- clubList = sellerMapper.findClubs(groupServiceId, status, name, userIdentity, 1, null);
|
|
|
|
|
|
+ clubList = sellerMapper.findClubs(groupServiceId, status, name, userIdentity, 1, startTime, endTime, null);
|
|
} else {
|
|
} else {
|
|
Integer leaderId = sellerMapper.findLeaderIdByServiceId(serviceProviderId);
|
|
Integer leaderId = sellerMapper.findLeaderIdByServiceId(serviceProviderId);
|
|
Integer managerId = sellerMapper.findmanagerIdByServiceId(serviceProviderId);
|
|
Integer managerId = sellerMapper.findmanagerIdByServiceId(serviceProviderId);
|
|
@@ -95,7 +116,7 @@ public class SellerServiceImpl implements SellerService {
|
|
serviceIds = sellerMapper.findAllServiceIds(serviceProviderId);
|
|
serviceIds = sellerMapper.findAllServiceIds(serviceProviderId);
|
|
}
|
|
}
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
- clubList = sellerMapper.findClubs(serviceProviderId, status, name, userIdentity, type, serviceIds);
|
|
|
|
|
|
+ clubList = sellerMapper.findClubs(serviceProviderId, status, name, userIdentity, type, startTime, endTime, serviceIds);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (ClubVo club : clubList) {
|
|
for (ClubVo club : clubList) {
|
|
@@ -109,15 +130,7 @@ public class SellerServiceImpl implements SellerService {
|
|
} else {
|
|
} else {
|
|
club.setVipFlag(0);
|
|
club.setVipFlag(0);
|
|
}
|
|
}
|
|
- String newClubId = club.getClubId().toString();
|
|
|
|
- int maxLen = 6;
|
|
|
|
- int len = newClubId.length();
|
|
|
|
- if (len < maxLen) {
|
|
|
|
- for (int i = 0;i < (maxLen - len); i++) {
|
|
|
|
- newClubId = "0" + newClubId;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- club.setNewClubId(newClubId);
|
|
|
|
|
|
+ setClubNumber(club);
|
|
}
|
|
}
|
|
PageInfo<ClubVo> pageData = new PageInfo<>(clubList);
|
|
PageInfo<ClubVo> pageData = new PageInfo<>(clubList);
|
|
return ResponseJson.success(pageData);
|
|
return ResponseJson.success(pageData);
|
|
@@ -140,7 +153,7 @@ public class SellerServiceImpl implements SellerService {
|
|
public ResponseJson<Map<String, Object>> getLivelyClubList(Integer serviceProviderId, Integer status, Integer type, String name, Integer userIdentity, Integer pageNum, Integer pageSize) {
|
|
public ResponseJson<Map<String, Object>> getLivelyClubList(Integer serviceProviderId, Integer status, Integer type, String name, Integer userIdentity, Integer pageNum, Integer pageSize) {
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
Map<String, Object> map = new HashMap<>();
|
|
Map<String, Object> map = new HashMap<>();
|
|
- map.put("clubList", new PageInfo<>(sellerMapper.findClubs(serviceProviderId, status, name, userIdentity, type, null)));
|
|
|
|
|
|
+ map.put("clubList", new PageInfo<>(sellerMapper.findClubs(serviceProviderId, status, name, userIdentity, type,null,null, null)));
|
|
return ResponseJson.success(map);
|
|
return ResponseJson.success(map);
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
@@ -386,6 +399,7 @@ public class SellerServiceImpl implements SellerService {
|
|
for (CmBehaviorRecordVo cmBehaviorRecordVo : behaviorRecordYesterdayClubFrom) {
|
|
for (CmBehaviorRecordVo cmBehaviorRecordVo : behaviorRecordYesterdayClubFrom) {
|
|
String pageLabel = sellerMapper.getBehaviorRecordYesterdayPageLabel(spId, cmBehaviorRecordVo.getClubId(), accessTime);
|
|
String pageLabel = sellerMapper.getBehaviorRecordYesterdayPageLabel(spId, cmBehaviorRecordVo.getClubId(), accessTime);
|
|
cmBehaviorRecordVo.setPageLabel(pageLabel);
|
|
cmBehaviorRecordVo.setPageLabel(pageLabel);
|
|
|
|
+ cmBehaviorRecordVo.setAccessDuration(calculationTime(cmBehaviorRecordVo.getAccessDuration()));
|
|
if (cmBehaviorRecordVo.getProductID() != 0 && cmBehaviorRecordVo.getPageType().equals("6") ) {
|
|
if (cmBehaviorRecordVo.getProductID() != 0 && cmBehaviorRecordVo.getPageType().equals("6") ) {
|
|
ProductItemVo productShown = shopMapper.getProductShown(cmBehaviorRecordVo.getProductID());
|
|
ProductItemVo productShown = shopMapper.getProductShown(cmBehaviorRecordVo.getProductID());
|
|
cmBehaviorRecordVo.setTitleId(cmBehaviorRecordVo.getProductID());
|
|
cmBehaviorRecordVo.setTitleId(cmBehaviorRecordVo.getProductID());
|
|
@@ -423,4 +437,136 @@ public class SellerServiceImpl implements SellerService {
|
|
return ResponseJson.success(serviceProviderVos);
|
|
return ResponseJson.success(serviceProviderVos);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 机构重点访问页面
|
|
|
|
+ *
|
|
|
|
+ * @param clubId
|
|
|
|
+ * @param pageNum
|
|
|
|
+ * @param pageSize
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson<PageInfo<RetuenDataVo>> getClubRecord(Integer clubId, int pageNum, int pageSize) {
|
|
|
|
+
|
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ // 获取机构访问日期
|
|
|
|
+ List<RetuenDataVo> data = sellerMapper.getClubAccessDate(clubId);
|
|
|
|
+ // 访问时间集合
|
|
|
|
+ List<String> access = data.stream().map(RetuenDataVo::getAccessDate).collect(Collectors.toList());
|
|
|
|
+ // 访问来源数据
|
|
|
|
+ List<BehaviorRecodeVo> region = clubMapper.selRegion(null, null, 1, access);
|
|
|
|
+
|
|
|
|
+ // 机构访问记录
|
|
|
|
+ List<BehaviorRecodeVo> recordDataList = sellerMapper.getClubKeynoteRecord(clubId, access);
|
|
|
|
+ String format = "";
|
|
|
|
+ // 组装数据
|
|
|
|
+ if (null != data && data.size() > 0) {
|
|
|
|
+ for (RetuenDataVo rd : data) {
|
|
|
|
+ // 该日期下机构访问记录
|
|
|
|
+ List<BehaviorRecodeVo> recordList = recordDataList.stream().filter(r -> r.getAccessDate().equals(rd.getAccessDate())).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ for (BehaviorRecodeVo record : recordList) {
|
|
|
|
+ // 图片处理
|
|
|
|
+ if (StringUtils.isNotBlank(record.getProductImage())) {
|
|
|
|
+ record.setProductImage(ImageUtils.getImageURL("product", record.getProductImage(), 0, wwwDomain));
|
|
|
|
+ }
|
|
|
|
+ String time = calculationTime(record.getAccessDuration());
|
|
|
|
+ record.setAccessDuration(time);
|
|
|
|
+ record.setAccessNewTime(dateFormat.format(record.getAccessTime()));
|
|
|
|
+ String s = simpleDateFormat.format(record.getAccessTime());
|
|
|
|
+
|
|
|
|
+ // 访问来源
|
|
|
|
+ if (region.size() != 0) {
|
|
|
|
+ for (BehaviorRecodeVo behaviorRecord : region) {
|
|
|
|
+ format = simpleDateFormat.format(behaviorRecord.getAccessTime());
|
|
|
|
+ if (StringUtils.isNotBlank(record.getPageType()) && StringUtils.isNotBlank(behaviorRecord.getPageType())) {
|
|
|
|
+ if (s.equals(format)) {
|
|
|
|
+ record.setAccessSource(behaviorRecord.getAccessSource());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ rd.setRecord(recordList);
|
|
|
|
+ }
|
|
|
|
+ // 没有重点访问页面数据删除不回显
|
|
|
|
+ data.removeIf(d -> d.getRecord().size() <= 0 );
|
|
|
|
+ }
|
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
|
+ PageInfo<RetuenDataVo> page = new PageInfo<>(data);
|
|
|
|
+ return ResponseJson.success(page);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 协销不活跃机构列表
|
|
|
|
+ *
|
|
|
|
+ * @param serviceProviderId
|
|
|
|
+ * @param pageNum
|
|
|
|
+ * @param pageSize
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId, int pageNum, int pageSize) {
|
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
|
+ List<ClubVo> unActiveClub = sellerMapper.getUnActiveClub(serviceProviderId);
|
|
|
|
+ for (ClubVo club : unActiveClub) {
|
|
|
|
+ setClubNumber(club);
|
|
|
|
+ }
|
|
|
|
+ PageInfo<ClubVo> page = new PageInfo<>(unActiveClub);
|
|
|
|
+ return ResponseJson.success(page);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 机构编号
|
|
|
|
+ * @param club
|
|
|
|
+ */
|
|
|
|
+ public void setClubNumber(ClubVo club) {
|
|
|
|
+ String newClubId = club.getClubId().toString();
|
|
|
|
+ int maxLen = 6;
|
|
|
|
+ int len = newClubId.length();
|
|
|
|
+ if (len < maxLen) {
|
|
|
|
+ for (int i = 0;i < (maxLen - len); i++) {
|
|
|
|
+ newClubId = "0" + newClubId;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ club.setNewClubId(newClubId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 时间计算
|
|
|
|
+ * @param recordTime
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public String calculationTime(String recordTime){
|
|
|
|
+ double doc = Double.parseDouble(recordTime);
|
|
|
|
+ int num = (int)doc;
|
|
|
|
+ //小时
|
|
|
|
+ int HH = 0;
|
|
|
|
+ // 分钟
|
|
|
|
+ int mm = 0;
|
|
|
|
+ //秒
|
|
|
|
+ int ss = 0;
|
|
|
|
+ int item = num / 1000;
|
|
|
|
+ if ((item / 60) >0) {
|
|
|
|
+ mm = item / 60;
|
|
|
|
+ ss = item % 60;
|
|
|
|
+ } else {
|
|
|
|
+ ss = item;
|
|
|
|
+ }
|
|
|
|
+ if ((mm / 60) >0) {
|
|
|
|
+ HH = mm / 60;
|
|
|
|
+ mm = mm % 60;
|
|
|
|
+ }
|
|
|
|
+ String str= HH+":"+mm+":"+ss;
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
|
|
|
|
+ Date parse = null;
|
|
|
|
+ try {
|
|
|
|
+ parse = dateFormat.parse(str);
|
|
|
|
+ } catch (ParseException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ String format = dateFormat.format(parse);
|
|
|
|
+ return format;
|
|
|
|
+ }
|
|
}
|
|
}
|