Просмотр исходного кода

add netflix车队数据统计;空车队筛选

zoujiajian 3 лет назад
Родитель
Сommit
1dafd691a4

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/mapper/GroupsMapper.java

@@ -2,6 +2,7 @@ package com.cyksj.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.GroupsTrips;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
 /**
@@ -14,4 +15,7 @@ public interface GroupsMapper extends BaseMapper<GroupsTrips> {
 
     @Update("update groups_trips set available_num = available_num + 1 where id = #{groupId} and available_num < num")
     int incrAvailableNum(Long groupId);
+
+    @Select("select count(*) from groups_trips where sku_id = #{skuId} and num = available_num")
+	Integer selectEmptyNetfilxTrips(Long skuId);
 }

+ 9 - 2
netflix-dao/src/main/java/com/cyksj/model/entity/GroupsTrips.java

@@ -32,7 +32,7 @@ public class GroupsTrips {
     private Long groupId;
 
     /**
-     * 商品skuid
+     * 商品skuId
      */
     @DbField("gt.sku_id")
     private Long skuId;
@@ -58,6 +58,13 @@ public class GroupsTrips {
     @TableField(exist = false)
     private String password;
 
+    /**
+     * 商品id
+     */
+    @DbField("g.id")
+    @TableField(exist = false)
+    private Long goodsId;
+
     /**
      * 标题
      */
@@ -70,7 +77,7 @@ public class GroupsTrips {
      */
     @DbField("sku.spec_val")
     @TableField(exist = false)
-    private String seecVal;
+    private String specVal;
     /**
      * 录入人
      */

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/GroupsRelationView.java

@@ -27,6 +27,9 @@ public class GroupsRelationView {
     @JsonIgnore
     private Long accountId;
 
+    @DbField("gt.sku_id")
+    private Long skuId;
+
     @DbField("a.account")
     private String tripsAccount;
 

+ 15 - 0
netflix-dao/src/main/java/com/cyksj/model/views/BackgroundDataView.java

@@ -127,4 +127,19 @@ public class BackgroundDataView {
 	 */
 	private List<RegisterAccountData> registerAccountDataViews;
 
+	/**
+	 * netflix月付车队数
+	 */
+	private Integer numOfMonthNetflix;
+
+	/**
+	 * 空车位数
+	 */
+	private Integer numOfMonthEmptyRelationNetflix;
+
+	/**
+	 * 空车队数
+	 */
+	private Integer numOfMonthEmptyTripsNetflix;
+
 }

+ 3 - 1
netflix-service/src/main/java/com/cyksj/service/mange/group/CmsGroupServiceImpl.java

@@ -65,7 +65,9 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
         if(groupsTrips == null){
             throw new BusinessRuntimeException("非法参数.车队不存在");
         }
-        Integer count = relationMapper.selectCount(Wrappers.lambdaQuery(GroupsRelation.class).in(GroupsRelation::getStatus, List.of(GroupsRelation.Status.locking, GroupsRelation.Status.validity)));
+        Integer count = relationMapper.selectCount(Wrappers.lambdaQuery(GroupsRelation.class)
+                .eq(GroupsRelation::getGroupsId, groupId)
+                .in(GroupsRelation::getStatus, List.of(GroupsRelation.Status.locking, GroupsRelation.Status.validity)));
         if (count > 0) {
             throw new BusinessRuntimeException("该车队已有用户购买或锁定.无法删除");
         }else {

+ 25 - 0
netflix-service/src/main/java/com/cyksj/service/mange/statistics/impl/StatisticsDataServiceImpl.java

@@ -9,15 +9,18 @@ import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.GoodsDonSkuMapper;
+import com.cyksj.mapper.GroupsMapper;
 import com.cyksj.mapper.GroupsRelationMapper;
 import com.cyksj.mapper.manage.statistics.AppleOneDataMapper;
 import com.cyksj.mapper.manage.statistics.RealGoodsDataMapper;
 import com.cyksj.mapper.manage.statistics.StreamingAccountDataMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelAccountData;
+import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.views.BackgroundDataView;
 import com.cyksj.model.views.DistributeOrdersView;
 import com.cyksj.model.views.ExpiredAccountDataView;
+import com.cyksj.model.views.GoodsDonSkuView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.mange.CmsAccountService;
 import com.cyksj.service.mange.statistics.StatisticsDataService;
@@ -67,6 +70,8 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
 
 	private final StatisticsDataScheduler statistics;
 
+	private final GroupsMapper groupsMapper;
+
 	@Override
 	public Result<BackgroundDataView> getStatisticsByCondition(Long startTime, Long endTime) {
 		BackgroundDataView backgroundDataView = new BackgroundDataView();
@@ -261,6 +266,26 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
 		backgroundDataView.setFailRegisterNum(errorRegisterNum.intValue());
 		//分销金额数据统计
 		distribute(backgroundDataView, startDate, endDate);
+
+		//netflix
+		GoodsDonSkuView goodsDonSkuView = beanSearcher.searchFirst(GoodsDonSkuView.class, MapUtils.builder()
+				.field(GoodsDonSkuView::getGoodsTitle, "Netflix")
+				.field(GoodsDonSkuView::getSpecVal, "月付").op(Operator.Contain).build());
+		Long skuId = goodsDonSkuView.getSkuId();
+
+		Integer numOfMonthNetflix = groupsMapper.selectCount(Wrappers.lambdaQuery(GroupsTrips.class)
+				.eq(GroupsTrips::getSkuId, skuId));
+		backgroundDataView.setNumOfMonthNetflix(numOfMonthNetflix);
+
+
+		Integer numOfMonthEmptyRelationNetflix = beanSearcher.searchCount(GroupsRelationView.class, MapUtils.builder()
+				.field(GroupsRelationView::getSkuId, skuId)
+				.field(GroupsRelationView::getUserId, 0)
+				.build()).intValue();
+		backgroundDataView.setNumOfMonthEmptyRelationNetflix(numOfMonthEmptyRelationNetflix);
+
+		Integer numOfMonthEmptyTripsNetflix = groupsMapper.selectEmptyNetfilxTrips(skuId);
+		backgroundDataView.setNumOfMonthEmptyTripsNetflix(numOfMonthEmptyTripsNetflix);
 	}
 
 	/**

+ 7 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/group/CmsGroupController.java

@@ -48,16 +48,19 @@ public class CmsGroupController {
 
 
     @GetMapping("/get")
-    public Result<SearchResult<GroupsTrips>> get(String account,Long userId ,String nickName ,String submitAccount){
+    public Result<SearchResult<GroupsTrips>> get(String account, Long userId, String nickName, String submitAccount, Boolean isEmpty) {
         MapBuilder mapBuilder = MapUtils.flatBuilder(request.getParameterMap());
-        if(userId != null || StringUtils.isNotBlank(nickName) || StringUtils.isNotBlank(submitAccount)){
-            List<Long> ids = relationMapper.getAccountIdsByUserIdOrNickNameOrSubmitAccount(userId, nickName ,submitAccount);
-            if(ids.isEmpty()){
+        if (userId != null || StringUtils.isNotBlank(nickName) || StringUtils.isNotBlank(submitAccount)) {
+            List<Long> ids = relationMapper.getAccountIdsByUserIdOrNickNameOrSubmitAccount(userId, nickName, submitAccount);
+            if (ids.isEmpty()) {
                 return GatewayResponse.SUCCESS.newBuilder().toResult(new SearchResult<>());
             }
 
             mapBuilder.field(GroupsTrips::getGroupId, ids).op(Operator.InList);
         }
+        if (isEmpty != null && isEmpty) {
+            mapBuilder.field(GroupsTrips::getNum, GroupsTrips::getAvailableNum).sql("$1 = $2");
+        }
 
         SearchResult<GroupsTrips> search = beanSearcher.search(GroupsTrips.class, mapBuilder
                 .field(GroupsTrips::getAccount, StringUtils.isBlank(account) ? null : account).op(Operator.EndWith)