Commit 0720af48 authored by 周健威's avatar 周健威

Merge remote-tracking branch 'origin/dev' into dev

parents 95130b5d 5ed6b830
...@@ -70,6 +70,7 @@ public class TokenAop { ...@@ -70,6 +70,7 @@ public class TokenAop {
if (StringUtils.isEmpty(token)){ if (StringUtils.isEmpty(token)){
// return ObjectRestResponse.createFailedResult(4004,"token不能为空"); // return ObjectRestResponse.createFailedResult(4004,"token不能为空");
args[i]= new AppUserDTO(); args[i]= new AppUserDTO();
break;
} }
args[i]= userFeign.userDetailByToken(token).getData(); args[i]= userFeign.userDetailByToken(token).getData();
break; break;
......
...@@ -73,4 +73,7 @@ public class CampsiteShopDetailDTO { ...@@ -73,4 +73,7 @@ public class CampsiteShopDetailDTO {
*/ */
private String logo; private String logo;
@ApiModelProperty(value = "海报背景")
private String posterBackground;
} }
...@@ -170,4 +170,6 @@ public class CampsiteShopAdminVO { ...@@ -170,4 +170,6 @@ public class CampsiteShopAdminVO {
*/ */
private List<CampsiteTagListVo> campsiteTagListVos; private List<CampsiteTagListVo> campsiteTagListVos;
@ApiModelProperty(value = "海报背景")
private String posterBackground;
} }
...@@ -97,4 +97,7 @@ public class CampsiteShopDetailVo { ...@@ -97,4 +97,7 @@ public class CampsiteShopDetailVo {
* 店铺logo * 店铺logo
*/ */
private String logo; private String logo;
@ApiModelProperty(value = "海报背景")
private String posterBackground;
} }
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<!--根据id查询详情--> <!--根据id查询详情-->
<select id="findCampsiteShopDetailById" resultType="com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO"> <select id="findCampsiteShopDetailById" resultType="com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO">
select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`address` as `address`,`service_phone` as `phone`,`logo` as `logo`, select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`address` as `address`,`service_phone` as `phone`,`logo` as `logo`,`poster_background` as `posterBackground` ,
`content` as `content`,`configure` as `configure`,`longitude` as `longitude`,`latitude` as `latitude` from `campsite_shop` where `id`=#{id} `content` as `content`,`configure` as `configure`,`longitude` as `longitude`,`latitude` as `latitude` from `campsite_shop` where `id`=#{id}
</select> </select>
......
...@@ -26,12 +26,12 @@ public enum BehaviorEnum { ...@@ -26,12 +26,12 @@ public enum BehaviorEnum {
/** /**
* 精彩活动点击 * 精彩活动点击
*/ */
WONDERFUL_ACTIVITY_CLICK(3, "精活动点击"), WONDERFUL_ACTIVITY_CLICK(3, "精活动点击"),
/** /**
* 注册 * 注册
*/ */
REGISTRY(4, "成功注册"), REGISTRY(4, "注册成功"),
/** /**
* 活动页面访问量 * 活动页面访问量
......
...@@ -2,6 +2,7 @@ package com.xxfc.platform.user.behavior; ...@@ -2,6 +2,7 @@ package com.xxfc.platform.user.behavior;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import tk.mybatis.spring.annotation.MapperScan; import tk.mybatis.spring.annotation.MapperScan;
...@@ -13,9 +14,12 @@ import tk.mybatis.spring.annotation.MapperScan; ...@@ -13,9 +14,12 @@ import tk.mybatis.spring.annotation.MapperScan;
* @data 2019/8/12 10:04 * @data 2019/8/12 10:04
*/ */
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.xxfc.platform.*.feign") @EnableFeignClients(basePackages = {"com.xxfc.platform.*.feign","com.github.wxiaoqi.security.*.feign"})
@MapperScan(basePackages = "com.xxfc.platform.user.behavior.mapper") @MapperScan(basePackages = "com.xxfc.platform.user.behavior.mapper")
@SpringBootApplication @SpringBootApplication(scanBasePackages ={
"com.xxfc.platform",
"com.github.wxiaoqi.security.admin.support"
},exclude = {MongoAutoConfiguration.class})
public class UserBeHaviorApplication { public class UserBeHaviorApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(UserBeHaviorApplication.class,args); SpringApplication.run(UserBeHaviorApplication.class,args);
......
...@@ -5,6 +5,7 @@ import com.xxfc.platform.user.behavior.dto.ActivityBehaviorDTO; ...@@ -5,6 +5,7 @@ import com.xxfc.platform.user.behavior.dto.ActivityBehaviorDTO;
import com.xxfc.platform.user.behavior.entity.ActivityBehavior; import com.xxfc.platform.user.behavior.entity.ActivityBehavior;
import com.xxfc.platform.user.behavior.mapper.ActivityBehaviorMapper; import com.xxfc.platform.user.behavior.mapper.ActivityBehaviorMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
...@@ -15,6 +16,7 @@ import java.util.List; ...@@ -15,6 +16,7 @@ import java.util.List;
* @data 2019/8/13 14:10 * @data 2019/8/13 14:10
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class)
public class ActivityBehaviorBiz extends BaseBiz<ActivityBehaviorMapper, ActivityBehavior> { public class ActivityBehaviorBiz extends BaseBiz<ActivityBehaviorMapper, ActivityBehavior> {
public List<ActivityBehaviorDTO> findActivityBehaviorsByActivityId(Integer activityId){ public List<ActivityBehaviorDTO> findActivityBehaviorsByActivityId(Integer activityId){
......
...@@ -5,6 +5,7 @@ import com.xxfc.platform.user.behavior.dto.ActivityBehaviorRelationDTO; ...@@ -5,6 +5,7 @@ import com.xxfc.platform.user.behavior.dto.ActivityBehaviorRelationDTO;
import com.xxfc.platform.user.behavior.entity.ActivityBehaviorRelation; import com.xxfc.platform.user.behavior.entity.ActivityBehaviorRelation;
import com.xxfc.platform.user.behavior.mapper.ActivityBehaviorRelationMapper; import com.xxfc.platform.user.behavior.mapper.ActivityBehaviorRelationMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
...@@ -15,6 +16,7 @@ import java.util.List; ...@@ -15,6 +16,7 @@ import java.util.List;
* @data 2019/8/13 17:12 * @data 2019/8/13 17:12
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class)
public class ActivityBehaviorRelationBiz extends BaseBiz<ActivityBehaviorRelationMapper, ActivityBehaviorRelation> { public class ActivityBehaviorRelationBiz extends BaseBiz<ActivityBehaviorRelationMapper, ActivityBehaviorRelation> {
public List<ActivityBehaviorRelationDTO> findActivityBehaviorRelationsByActivityId(Integer activityId){ public List<ActivityBehaviorRelationDTO> findActivityBehaviorRelationsByActivityId(Integer activityId){
......
...@@ -5,6 +5,7 @@ import com.xxfc.platform.user.behavior.dto.BehaviorTypeDTO; ...@@ -5,6 +5,7 @@ import com.xxfc.platform.user.behavior.dto.BehaviorTypeDTO;
import com.xxfc.platform.user.behavior.entity.BehaviorType; import com.xxfc.platform.user.behavior.entity.BehaviorType;
import com.xxfc.platform.user.behavior.mapper.BehaviorTypeMapper; import com.xxfc.platform.user.behavior.mapper.BehaviorTypeMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
...@@ -15,6 +16,7 @@ import java.util.List; ...@@ -15,6 +16,7 @@ import java.util.List;
* @data 2019/8/13 14:09 * @data 2019/8/13 14:09
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class)
public class BehaviorTypeBiz extends BaseBiz<BehaviorTypeMapper, BehaviorType> { public class BehaviorTypeBiz extends BaseBiz<BehaviorTypeMapper, BehaviorType> {
public List<BehaviorTypeDTO> findBehaviorTypesByIds(List<Integer> typeIds){ public List<BehaviorTypeDTO> findBehaviorTypesByIds(List<Integer> typeIds){
......
...@@ -17,6 +17,7 @@ import org.apache.commons.collections.CollectionUtils; ...@@ -17,6 +17,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
...@@ -32,6 +33,7 @@ import java.util.stream.Collectors; ...@@ -32,6 +33,7 @@ import java.util.stream.Collectors;
* @date 2019-08-12 14:03:55 * @date 2019-08-12 14:03:55
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class)
@RequiredArgsConstructor(onConstructor = @__({@Autowired})) @RequiredArgsConstructor(onConstructor = @__({@Autowired}))
public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMapper, CustomerBehaviorNotes> { public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMapper, CustomerBehaviorNotes> {
...@@ -54,55 +56,53 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe ...@@ -54,55 +56,53 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe
List<BehaviorNoteCollectVo> behaviorNoteCollectVos = new ArrayList<>(); List<BehaviorNoteCollectVo> behaviorNoteCollectVos = new ArrayList<>();
//获取时间间隔 //1.根据活动id查询活动行为
List<ActivityBehaviorDTO> activityBehaviorDTOS = activityBehaviorBiz.findActivityBehaviorsByActivityId(activityId);
if (CollectionUtils.isEmpty(activityBehaviorDTOS)) {
return Collections.EMPTY_LIST;
}
List<Integer> behaviorTypeIds = activityBehaviorDTOS.stream().map(ActivityBehaviorDTO::getBehaviorTypeId).collect(Collectors.toList());
//根据活动行为ids查询行为
List<BehaviorTypeDTO> behaviorTypeDTOS = behaviorTypeBiz.findBehaviorTypesByIds(behaviorTypeIds);
List<Integer> behaviorCodes = behaviorTypeDTOS.stream().map(BehaviorTypeDTO::getCode).collect(Collectors.toList());
//过滤出活动行为的枚举类
Set<BehaviorEnum> behaviorEnums = EnumSet.allOf(BehaviorEnum.class).stream().filter(behaviorEnum -> behaviorCodes.contains(behaviorEnum.getCode())).collect(Collectors.toSet());
//2.获取时间间隔和开始时间与结束时间转换
AtomicLong startAtomic = new AtomicLong(startTime == null ? 0 : startTime); AtomicLong startAtomic = new AtomicLong(startTime == null ? 0 : startTime);
AtomicLong endAtomic = new AtomicLong(endTime == null ? 0 : endTime); AtomicLong endAtomic = new AtomicLong(endTime == null ? 0 : endTime);
long between_day = getBetweenDayAndprocessStartTimeAndEndTime(activityId, startAtomic, endAtomic); long between_day = getBetweenDayAndprocessStartTimeAndEndTime(activityId, startAtomic, endAtomic);
between_day = Math.abs(between_day) == 0 ? 1 : Math.abs(between_day);
//3.根据活动id 、开始时间、结束时间查询统计数据
List<CustomerBehaviorNotes> customerBehaviorNotes = mapper.selectByActivityIdAndTime(activityId, startAtomic.get(), endAtomic.get()); List<CustomerBehaviorNotes> customerBehaviorNotes = mapper.selectByActivityIdAndTime(activityId, startAtomic.get(), endAtomic.get());
boolean isEmpty = CollectionUtils.isEmpty(customerBehaviorNotes); Map<Integer, List<CustomerBehaviorNotes>> behaviorAndDataMap = new HashMap<>(20);
List<ActivityPopularizeRelationDTO> popularizeRelations = new ArrayList<>(); if (CollectionUtils.isNotEmpty(customerBehaviorNotes)) {
Map<Integer, List<CustomerBehaviorNotes>> behaviorAndDataMap = null;
if (!isEmpty) {
//邀请成功记录
popularizeRelations = activityFeign.findActivityPopularizeRelationByActivityIdAndTime(activityId, startAtomic.get(), endAtomic.get());
behaviorAndDataMap = customerBehaviorNotes.stream().collect(Collectors.groupingBy(CustomerBehaviorNotes::getType, Collectors.toList())); behaviorAndDataMap = customerBehaviorNotes.stream().collect(Collectors.groupingBy(CustomerBehaviorNotes::getType, Collectors.toList()));
} }
//根据活动id查询出对应业务id
//4.邀请成功记录
List<ActivityPopularizeRelationDTO> popularizeRelations = activityFeign.findActivityPopularizeRelationByActivityIdAndTime(activityId, startAtomic.get(), endAtomic.get());
//5.查询banner点击 弹窗曝光,立即前往,精选活动数据
List<ActivityBehaviorRelationDTO> activityBehaviorRelations = activityBehaviorRelationBiz.findActivityBehaviorRelationsByActivityId(activityId); List<ActivityBehaviorRelationDTO> activityBehaviorRelations = activityBehaviorRelationBiz.findActivityBehaviorRelationsByActivityId(activityId);
Map<Integer, List<CustomerBehaviorNotes>> behaviorTypeAndDataOfBizMap = new HashMap<>(20);
if (CollectionUtils.isNotEmpty(activityBehaviorRelations)) {
List<Integer> bizIds = activityBehaviorRelations.stream().map(ActivityBehaviorRelationDTO::getBizId).collect(Collectors.toList()); List<Integer> bizIds = activityBehaviorRelations.stream().map(ActivityBehaviorRelationDTO::getBizId).collect(Collectors.toList());
//根据业务id查询出行为记录
Map<Integer, List<CustomerBehaviorNotes>> behaviorTypeAndDataOfBizMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(bizIds)) {
List<CustomerBehaviorNotes> customerBehaviorNotesbiz = mapper.selectAllByTypeIdsAndTime(bizIds, startAtomic.get(), endAtomic.get()); List<CustomerBehaviorNotes> customerBehaviorNotesbiz = mapper.selectAllByTypeIdsAndTime(bizIds, startAtomic.get(), endAtomic.get());
//业务数据转换map //业务数据转换map
if (CollectionUtils.isNotEmpty(customerBehaviorNotesbiz)) { if (CollectionUtils.isNotEmpty(customerBehaviorNotesbiz)) {
behaviorTypeAndDataOfBizMap = customerBehaviorNotesbiz.stream().collect(Collectors.groupingBy(CustomerBehaviorNotes::getType, Collectors.toList())); behaviorTypeAndDataOfBizMap = customerBehaviorNotesbiz.stream().collect(Collectors.groupingBy(CustomerBehaviorNotes::getType, Collectors.toList()));
} }
} }
//根据活动id查询活动行为
List<ActivityBehaviorDTO> activityBehaviorDTOS = activityBehaviorBiz.findActivityBehaviorsByActivityId(activityId);
if (CollectionUtils.isEmpty(activityBehaviorDTOS)){
return Collections.EMPTY_LIST;
}
List<Integer> behaviorTypeIds = activityBehaviorDTOS.stream().map(ActivityBehaviorDTO::getBehaviorTypeId).collect(Collectors.toList());
//根据活动行为ids查询行为
List<BehaviorTypeDTO> behaviorTypeDTOS = behaviorTypeBiz.findBehaviorTypesByIds(behaviorTypeIds);
List<Integer> behaviorCodes = behaviorTypeDTOS.stream().map(BehaviorTypeDTO::getCode).collect(Collectors.toList());
//过滤出活动行为的枚举类
Set<BehaviorEnum> behaviorEnums = EnumSet.allOf(BehaviorEnum.class).stream().filter(behaviorEnum -> behaviorCodes.contains(behaviorEnum.getCode())).collect(Collectors.toSet());
//数据转换为行为码与行为名称Map
Map<Integer, String> codeAndName = behaviorTypeDTOS.stream().collect(Collectors.toMap(BehaviorTypeDTO::getCode, BehaviorTypeDTO::getName));
//6.数据统计处理
BehaviorNoteCollectVo behaviorNoteCollectVo; BehaviorNoteCollectVo behaviorNoteCollectVo;
for (BehaviorEnum behaviorEnum : behaviorEnums) { for (BehaviorEnum behaviorEnum : behaviorEnums) {
behaviorNoteCollectVo = new BehaviorNoteCollectVo(); behaviorNoteCollectVo = new BehaviorNoteCollectVo();
behaviorNoteCollectVo.setBehavior(codeAndName.get(behaviorEnum.getCode())); behaviorNoteCollectVo.setBehavior(behaviorEnum.getName());
long default_p_total, default_p_avg; long default_p_total, default_p_avg;
ActionAcount actionAcount; ActionAcount actionAcount;
switch (behaviorEnum) { switch (behaviorEnum) {
//成功邀请人数统计
case SUCCESS_INVIT: case SUCCESS_INVIT:
actionAcount = new ActionAcount(); actionAcount = new ActionAcount();
default_p_total = popularizeRelations.size(); default_p_total = popularizeRelations.size();
...@@ -112,6 +112,7 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe ...@@ -112,6 +112,7 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe
actionAcount.setDefault_u_total(default_p_total); actionAcount.setDefault_u_total(default_p_total);
actionAcount.setDefault_u_avg(default_p_avg); actionAcount.setDefault_u_avg(default_p_avg);
break; break;
//成功邀请人数大于10的统计
case SUCCESS_MORE_10_INVIT: case SUCCESS_MORE_10_INVIT:
actionAcount = new ActionAcount(); actionAcount = new ActionAcount();
default_p_total = popularizeRelations.stream().collect(Collectors.groupingBy(ActivityPopularizeRelationDTO::getMajorUserId, Collectors.counting())).values().stream().filter(x -> x >= 10).count(); default_p_total = popularizeRelations.stream().collect(Collectors.groupingBy(ActivityPopularizeRelationDTO::getMajorUserId, Collectors.counting())).values().stream().filter(x -> x >= 10).count();
...@@ -121,6 +122,7 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe ...@@ -121,6 +122,7 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe
actionAcount.setDefault_u_total(default_p_total); actionAcount.setDefault_u_total(default_p_total);
actionAcount.setDefault_u_avg(default_p_avg); actionAcount.setDefault_u_avg(default_p_avg);
break; break;
//App访问量统计
case APP_VISIT_COUNT: case APP_VISIT_COUNT:
actionAcount = new ActionAcount(); actionAcount = new ActionAcount();
default_p_total = mapper.selectAppVvisitsByType(BehaviorEnum.APP_VISIT_COUNT.getCode()); default_p_total = mapper.selectAppVvisitsByType(BehaviorEnum.APP_VISIT_COUNT.getCode());
...@@ -130,12 +132,14 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe ...@@ -130,12 +132,14 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe
actionAcount.setDefault_u_total(default_p_total); actionAcount.setDefault_u_total(default_p_total);
actionAcount.setDefault_u_avg(default_p_avg); actionAcount.setDefault_u_avg(default_p_avg);
break; break;
//banner点击 精选活动 立即前往 弹窗曝光 数据统计
case BANNER_CLICK: case BANNER_CLICK:
case WONDERFUL_ACTIVITY_CLICK: case WONDERFUL_ACTIVITY_CLICK:
case DIALOG_WINDOW_TO: case DIALOG_WINDOW_TO:
case DIALOG_WINDOW: case DIALOG_WINDOW:
actionAcount = new ActionAcount(between_day, behaviorTypeAndDataOfBizMap).invoke(behaviorEnum); actionAcount = new ActionAcount(between_day, behaviorTypeAndDataOfBizMap).invoke(behaviorEnum);
break; break;
//其它类型的数据统计
default: default:
actionAcount = new ActionAcount(between_day, behaviorAndDataMap).invoke(behaviorEnum); actionAcount = new ActionAcount(between_day, behaviorAndDataMap).invoke(behaviorEnum);
break; break;
...@@ -149,6 +153,13 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe ...@@ -149,6 +153,13 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe
return behaviorNoteCollectVos; return behaviorNoteCollectVos;
} }
/**
* 获取时间间隔 和 开始与结束时间的处理
* @param activityId 活动id
* @param startTime 筛选的开始时间
* @param endTime 筛选的结束时间
* @return
*/
private long getBetweenDayAndprocessStartTimeAndEndTime(Integer activityId, AtomicLong startTime, AtomicLong endTime) { private long getBetweenDayAndprocessStartTimeAndEndTime(Integer activityId, AtomicLong startTime, AtomicLong endTime) {
if (startTime.get() == 0 || endTime.get() == 0) { if (startTime.get() == 0 || endTime.get() == 0) {
ActivityListDTO activityListDTO = activityFeign.findActivityStartTimeAndEndTimeById(activityId); ActivityListDTO activityListDTO = activityFeign.findActivityStartTimeAndEndTimeById(activityId);
...@@ -164,7 +175,8 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe ...@@ -164,7 +175,8 @@ public class CustomerBehaviorNotesBiz extends BaseBiz<CustomerBehaviorNotesMappe
endTime.set(now.toEpochMilli()); endTime.set(now.toEpochMilli());
} }
} }
return ChronoUnit.DAYS.between(Instant.ofEpochMilli(startTime.get()), Instant.ofEpochMilli(endTime.get())); long between_day = ChronoUnit.DAYS.between(Instant.ofEpochMilli(startTime.get()), Instant.ofEpochMilli(endTime.get()));
return Math.abs(between_day) == 0 ? 1 : Math.abs(between_day);
} }
private class ActionAcount { private class ActionAcount {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment