Parcourir la source

fix 首页配置订单数点击数排序

zoujiajian il y a 2 ans
Parent
commit
fa85298e43

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/home/HomeManagementConfigOrderRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.home;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.HomeManagementConfigOrderRecord;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: HomeManagementConfigOrderRecord
+ * 创建者: JavaZou
+ * 创建时间:2023/10/18 11:32
+ */
+public interface HomeManagementConfigOrderRecordMapper extends BaseMapper<HomeManagementConfigOrderRecord> {
+}

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/HomeManagementConfigOrderRecord.java

@@ -0,0 +1,18 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: HomeManagementConfigOrderRecord
+ * 创建者: JavaZou
+ * 创建时间:2023/10/18 11:31
+ */
+@Getter
+@Setter
+public class HomeManagementConfigOrderRecord {
+	private Long configId;
+
+	private Long mOid;
+}

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/request/UnifiedOrderPayReq.java

@@ -48,6 +48,11 @@ public class UnifiedOrderPayReq {
 	 */
 	private Long addressId;
 
+	/**
+	 * 首页管理配置id
+	 */
+	private Long hmConfigId;
+
 	/**
 	 * 购买商品
 	 */

+ 4 - 2
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonCategoryGoodsView.java

@@ -1,7 +1,6 @@
 package com.cyksj.model.views;
 
 import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Setter;
@@ -36,9 +35,12 @@ public class GoodsDonCategoryGoodsView {
 	@DbField("g.status")
 	private Boolean status;
 
-	@DbIgnore
+	@DbField("select count(*) from goods_click_user_record gcur where gcur.goods_id = g.id")
 	private Integer click;
 
+	@DbField("select count(*) from order_don o where o.goods_id = g.id and o.status not in ('close','noPayment','refund')")
+	private Integer orderNum;
+
 	@DbField("g.sort_by")
 	private Integer sorted;
 }

+ 4 - 2
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonCategoryView.java

@@ -1,7 +1,6 @@
 package com.cyksj.model.views;
 
 import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Setter;
@@ -31,9 +30,12 @@ public class GoodsDonCategoryView {
 	@DbField("count(g.id)")
 	private Integer count;
 
-	@DbIgnore
+	@DbField("select count(*) from goods_click_user_record gcur where gcur.category = gc.id")
 	private Integer click;
 
+	@DbField("select count(*) from goods_don_category_relate gcr left join order_don o on o.goods_id = gcr.goods_id where gcr.category = gc.id and o.status not in ('close','noPayment','refund')")
+	private Integer orderNum;
+
 	@DbField("gc.status")
 	private Boolean status;
 

+ 4 - 2
netflix-dao/src/main/java/com/cyksj/model/views/HomeManagementConfigView.java

@@ -2,7 +2,6 @@ package com.cyksj.model.views;
 
 import com.cyksj.model.entity.HomeManagementConfig;
 import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Setter;
@@ -50,9 +49,12 @@ public class HomeManagementConfigView {
 	@DbField("hc.status")
 	private Boolean status;
 
-	@DbIgnore
+	@DbField("select count(*) from home_management_config_user_click_record hcr where hcr.config_id = hc.id")
 	private Integer click;
 
+	@DbField("select count(*) from home_management_config_order_record hor left join order_master_don mo on mo.id = hor.m_oid where mo.status not in ('close','noPayment')")
+	private Integer orderNum;
+
 	@DbField("hc.created_time")
 	private Date createdTime;
 }

+ 17 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -364,6 +364,23 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 .eq(WorkOrder::getStatus, WorkOrder.Status.waiting)
                 .eq(WorkOrder::getUserId, orderDon.getUserId())
                 .eq(WorkOrder::getRelationId, orderDon.getRelationId()));
+
+        //更新主订单 订单状态
+        Long mOid = orderDon.getMOid();
+        List<OrderDon> orderDonList = orderDonMapper.selectList(Wrappers.lambdaQuery(OrderDon.class)
+                .eq(OrderDon::getMOid, mOid));
+        if (orderDonList.size() == 1) {
+            orderMasterDonService.update(null, Wrappers.lambdaUpdate(OrderMasterDon.class)
+                    .eq(OrderMasterDon::getId, mOid)
+                    .set(OrderMasterDon::getStatus, OrderMasterDon.Status.refund));
+        } else {
+            Optional<OrderDon> any = orderDonList.stream().filter(od -> od.getStatus() != OrderDon.Status.refund).findAny();
+            if (!any.isPresent()) {
+                orderMasterDonService.update(null, Wrappers.lambdaUpdate(OrderMasterDon.class)
+                        .eq(OrderMasterDon::getId, mOid)
+                        .set(OrderMasterDon::getStatus, OrderMasterDon.Status.refund));
+            }
+        }
     }
 
     public String wxRefund(OrderRefundReq refundReq, OrderDon orderDon) throws Exception {

+ 15 - 1
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -46,6 +46,7 @@ import com.cyksj.mapper.manage.coupon.CouponMapper;
 import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
 import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.mapper.manage.distribute.*;
+import com.cyksj.mapper.manage.home.HomeManagementConfigOrderRecordMapper;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.mapper.order.ShoppingCartDonMapper;
@@ -70,7 +71,10 @@ import com.cyksj.service.giftcard.GiftCardUserRecordService;
 import com.cyksj.service.groups.GroupsFuncService;
 import com.cyksj.service.market.MarketFrontService;
 import com.cyksj.service.market.task.TaskService;
-import com.cyksj.service.order.*;
+import com.cyksj.service.order.OrderCommonService;
+import com.cyksj.service.order.OrderDonPostService;
+import com.cyksj.service.order.OrderDonService;
+import com.cyksj.service.order.OrderMasterDonService;
 import com.cyksj.service.pay.AliPayCommonService;
 import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
@@ -241,6 +245,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final ShoppingCartDonMapper shoppingCartDonMapper;
 
+	private final HomeManagementConfigOrderRecordMapper homeManagementConfigOrderRecordMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -950,6 +956,14 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (CollUtil.isNotEmpty(shopCartIds)) {
 			shoppingCartDonMapper.deleteBatchIds(shopCartIds);
 		}
+
+		//记录通过首页配置 下单记录
+		if (unifiedOrderPayReq.getHmConfigId() != null) {
+			HomeManagementConfigOrderRecord homeManagementConfigOrderRecord = new HomeManagementConfigOrderRecord();
+			homeManagementConfigOrderRecord.setConfigId(unifiedOrderPayReq.getHmConfigId());
+			homeManagementConfigOrderRecord.setMOid(orderMasterDon.getId());
+			homeManagementConfigOrderRecordMapper.insert(homeManagementConfigOrderRecord);
+		}
 		return orderMasterDon;
 	}
 

+ 0 - 11
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonCategoryController.java

@@ -6,7 +6,6 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GoodsClickUserRecordMapper;
-import com.cyksj.model.entity.GoodsClickUserRecord;
 import com.cyksj.model.entity.GoodsDon;
 import com.cyksj.model.entity.GoodsDonCategory;
 import com.cyksj.model.views.GoodsDonCategoryGoodsView;
@@ -120,11 +119,6 @@ public class CmsGoodsDonCategoryController {
 	@GetMapping("/get")
 	public Result<SearchResult<GoodsDonCategoryView>> getCategory() {
 		SearchResult<GoodsDonCategoryView> search = beanSearcher.search(GoodsDonCategoryView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
-		search.getDataList().forEach(data->{
-			Integer count = goodsClickUserRecordMapper.selectCount(Wrappers.lambdaQuery(GoodsClickUserRecord.class)
-					.eq(GoodsClickUserRecord::getCategory, data.getId()));
-			data.setClick(count);
-		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
@@ -134,11 +128,6 @@ public class CmsGoodsDonCategoryController {
 	@GetMapping("/get/goods")
 	public Result<SearchResult<GoodsDonCategoryGoodsView>> getCategoryGoodsView() {
 		SearchResult<GoodsDonCategoryGoodsView> search = beanSearcher.search(GoodsDonCategoryGoodsView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
-		search.getDataList().forEach(data->{
-			Integer count = goodsClickUserRecordMapper.selectCount(Wrappers.lambdaQuery(GoodsClickUserRecord.class)
-					.eq(GoodsClickUserRecord::getGoodsId, data.getGoodsId()));
-			data.setClick(count);
-		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 

+ 30 - 10
netflix-web/src/main/java/com/cyksj/web/controller/manage/home/HomeManageConfigController.java

@@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.model.entity.GoodsDonCategory;
 import com.cyksj.model.entity.HomeManagementConfig;
-import com.cyksj.model.entity.HomeManagementConfigUserClickRecord;
 import com.cyksj.model.request.HomeManageConfigReq;
 import com.cyksj.model.views.HomeManagementAvailableGoodsView;
 import com.cyksj.model.views.HomeManagementConfigView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.home.HomeManagementConfigService;
+import com.cyksj.service.mange.GoodsDonCategoryService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapUtils;
@@ -39,6 +40,8 @@ public class HomeManageConfigController {
 
 	private final RedisService redisService;
 
+	private final GoodsDonCategoryService goodsDonCategoryService;
+
 	/**
 	 * 新增首页配置
 	 */
@@ -54,7 +57,7 @@ public class HomeManageConfigController {
 	@PutMapping("/put")
 	public Result<String> updateConfig(@RequestBody HomeManageConfigReq config) {
 		homeManagementConfigService.saveOrUpdateConfig(config);
-		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "homeManage" + "*");
+		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "*");
 		redisService.del(keys.toArray(String[]::new));
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
@@ -69,11 +72,33 @@ public class HomeManageConfigController {
 		Assert.notNull(byId, "配置不存在");
 		byId.setStatus(!byId.getStatus());
 		homeManagementConfigService.updateById(byId);
-		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "homeManage" + "*");
+		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "*");
 		redisService.del(keys.toArray(String[]::new));
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 
+	/**
+	 * 配置 一键上下架
+	 */
+	@PutMapping("/batch/update/status/{status}")
+	public Result<String> batchUpdateStatus(@RequestBody List<Long> ids, @PathVariable Boolean status) {
+		homeManagementConfigService.update(null, Wrappers.lambdaUpdate(HomeManagementConfig.class)
+				.set(HomeManagementConfig::getStatus, status)
+				.in(HomeManagementConfig::getId, ids));
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 分类 一键上下架
+	 */
+	@PutMapping("/batch/update/category/status/{status}")
+	public Result<String> batchUpdateCategoryStatus(@RequestBody List<Long> ids, @PathVariable Boolean status) {
+		goodsDonCategoryService.update(null, Wrappers.lambdaUpdate(GoodsDonCategory.class)
+				.set(GoodsDonCategory::getStatus, status)
+				.in(GoodsDonCategory::getId, ids));
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
 	/**
 	 * 配置排序
 	 */
@@ -85,7 +110,7 @@ public class HomeManageConfigController {
 		Integer sorted = config.getSorted();
 		byId.setSorted(sorted);
 		homeManagementConfigService.updateById(byId);
-		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "homeManage" + "*");
+		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "*");
 		redisService.del(keys.toArray(String[]::new));
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
@@ -99,7 +124,7 @@ public class HomeManageConfigController {
 						.set(HomeManagementConfig::getDeleted, false)
 						.eq(HomeManagementConfig::getId, id)
 						.eq(HomeManagementConfig::getDeleted, true));
-		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "homeManage" + "*");
+		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "*");
 		redisService.del(keys.toArray(String[]::new));
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
@@ -112,11 +137,6 @@ public class HomeManageConfigController {
 		SearchResult<HomeManagementConfigView> search = beanSearcher.search(HomeManagementConfigView.class, MapUtils.flatBuilder(request.getParameterMap())
 				.field(HomeManagementConfigView::getType, type.name())
 				.build());
-		search.getDataList().forEach(data -> {
-			Number number = beanSearcher.searchCount(HomeManagementConfigUserClickRecord.class, MapUtils.builder()
-					.field(HomeManagementConfigUserClickRecord::getConfigId, data.getId()).build());
-			data.setClick(number.intValue());
-		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}