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

fix 群发信息客户发送状态

zoujiajian 3 лет назад
Родитель
Сommit
5af5919494

+ 5 - 2
netflix-dao/src/main/java/com/cyksj/model/entity/CorpUserSendRecord.java

@@ -47,8 +47,11 @@ public class CorpUserSendRecord implements Serializable {
     @ExcelProperty("发送时间")
     private Date sendTime;
 
-    @ExcelProperty("状态(true已发送)")
-    private Boolean status;
+    /**
+     * 发送状态:0-未发送 1-已发送 2-因客户不是好友导致发送失败 3-因客户已经收到其他群发消息导致发送失败
+     */
+    @ExcelProperty("状态(1已发送)")
+    private Integer status;
 
     private static final long serialVersionUID = 1L;
 }

+ 3 - 3
netflix-dao/src/main/java/com/cyksj/model/views/CorpMsgBulkTaskSendRecordView.java

@@ -31,19 +31,19 @@ public class CorpMsgBulkTaskSendRecordView {
 	/**
 	 * 送达
 	 */
-	@DbField("count(if(cr.status is true,cr.id,null))")
+	@DbField("count(if(cr.status = 1,cr.id,null))")
 	private Integer send;
 
 	/**
 	 * 未送达
 	 */
-	@DbField("count(if(cr.status is false,cr.id,null))")
+	@DbField("count(if(cr.status != 1,cr.id,null))")
 	private Integer notSend;
 
 	/**
 	 * true已发送 一个未发
 	 */
-	@DbField("if(count(if(cmr.status is false,1,NULL))>0,false,true)")
+	@DbField("any_value(cmr.status)")
 	private Boolean status;
 
 	@DbField("any_value(cmr.created_time)")

+ 21 - 24
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpMsgBulkTaskServiceImpl.java

@@ -208,7 +208,7 @@ public class CorpMsgBulkTaskServiceImpl extends ServiceImpl<CorpMsgBulkTaskMappe
 				}
 				for (CorpUserFollowRelationDto dto : val) {
 					extendIds.add(dto.getCorpUserId());
-					if (CollUtil.isNotEmpty(userIds)) {
+					if (dto.getUserId() != null) {
 						userIds.add(dto.getUserId());
 					}
 				}
@@ -241,28 +241,27 @@ public class CorpMsgBulkTaskServiceImpl extends ServiceImpl<CorpMsgBulkTaskMappe
 					corpMsgMapper.insert(corpMsg);
 					//客户保存
 					sendResultRecord(corpMsgBulkTaskRecord, corpUserIdList, result.getFailList());
-
-					//若需要发优惠券
-					if (CollUtil.isNotEmpty(userIds)) {
-						Long couponId = corpMsgBulkTask.getCouponId();
-						Coupon coupon = couponMapper.getCouponById(couponId);
-						Date validStartTime = null;
-						Date validEndTime = null;
-						if (coupon != null) {
-							if (coupon.getIsValidTime()) {
-								validStartTime = coupon.getValidStartTime();
-								validEndTime = coupon.getValidEndTime();
-							} else {
-								validStartTime = DateTime.now();
-								validEndTime = DateUtil.offsetDay(validStartTime, coupon.getValidDays());
-							}
-						}
-						if (userIds.size() <= 500) {
-							couponMapper.batchSendCouponToUsers(userIds, corpMsgBulkTask.getCouponId(), CouponUser.Channel.corp_bulk_task, CouponUser.Status.unused, validStartTime, validEndTime);
+				}
+				//若需要发优惠券
+				if (CollUtil.isNotEmpty(userIds)) {
+					Long couponId = corpMsgBulkTask.getCouponId();
+					Coupon coupon = couponMapper.getCouponById(couponId);
+					Date validStartTime = null;
+					Date validEndTime = null;
+					if (coupon != null) {
+						if (coupon.getIsValidTime()) {
+							validStartTime = coupon.getValidStartTime();
+							validEndTime = coupon.getValidEndTime();
 						} else {
-							for (List<Long> userIdsList : Lists.partition(userIds, 500)) {
-								couponMapper.batchSendCouponToUsers(userIdsList, corpMsgBulkTask.getCouponId(), CouponUser.Channel.corp_bulk_task, CouponUser.Status.unused, validStartTime, validEndTime);
-							}
+							validStartTime = DateTime.now();
+							validEndTime = DateUtil.offsetDay(validStartTime, coupon.getValidDays());
+						}
+					}
+					if (userIds.size() <= 500) {
+						couponMapper.batchSendCouponToUsers(userIds, corpMsgBulkTask.getCouponId(), CouponUser.Channel.corp_bulk_task, CouponUser.Status.unused, validStartTime, validEndTime);
+					} else {
+						for (List<Long> userIdsList : Lists.partition(userIds, 500)) {
+							couponMapper.batchSendCouponToUsers(userIdsList, corpMsgBulkTask.getCouponId(), CouponUser.Channel.corp_bulk_task, CouponUser.Status.unused, validStartTime, validEndTime);
 						}
 					}
 				}
@@ -290,7 +289,6 @@ public class CorpMsgBulkTaskServiceImpl extends ServiceImpl<CorpMsgBulkTaskMappe
 				List<CorpUserSendRecord> corpUserSendRecords = corpMsgBulkTaskMapper.getsSuccessCorpUser(strings);
 				corpUserSendRecords.forEach(corpUserSendRecord -> {
 					corpUserSendRecord.setCorpMsgRecordId(corpMsgBulkTaskRecord.getId());
-					corpUserSendRecord.setStatus(true);
 				});
 				corpUserSendRecordService.saveBatch(corpUserSendRecords);
 			}
@@ -302,7 +300,6 @@ public class CorpMsgBulkTaskServiceImpl extends ServiceImpl<CorpMsgBulkTaskMappe
 				corpUserSendRecords.forEach(corpUserSendRecord -> {
 					corpUserSendRecord.setCorpMsgRecordId(corpMsgBulkTaskRecord.getId());
 					corpMsgBulkTaskRecord.setTaskId(corpMsgBulkTaskRecord.getTaskId());
-					corpUserSendRecord.setStatus(false);
 					corpUserSendRecordService.saveBatch(corpUserSendRecords);
 				});
 			}

+ 4 - 1
netflix-web/src/main/java/com/cyksj/web/controller/coupon/CouponFrontController.java

@@ -323,7 +323,10 @@ public class CouponFrontController {
 		if (couponIds.isEmpty()) {
 			return GatewayResponse.SUCCESS.newBuilder().toResult();
 		}
-		List<CouponView> couponViews = beanSearcher.searchAll(CouponView.class, MapUtils.builder().field(CouponView::getId, couponIds).op(Operator.InList).build());
+		List<CouponView> couponViews = beanSearcher.searchAll(CouponView.class, MapUtils.builder()
+				.field(CouponView::getId, couponIds).op(Operator.InList)
+				.orderBy(CouponView ::getId).desc()
+				.build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(couponViews);
 	}
 }

+ 3 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/CorpMsgBulkTaskController.java

@@ -154,7 +154,9 @@ public class CorpMsgBulkTaskController {
 	public Result<SearchResult<CorpMsgBulkTaskSendRecordView>> getSendRecord(@PathVariable Long id) {
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		builder.put("task_id", String.format("task_id = %s", id));
-		SearchResult<CorpMsgBulkTaskSendRecordView> search = beanSearcher.search(CorpMsgBulkTaskSendRecordView.class, builder.build());
+		SearchResult<CorpMsgBulkTaskSendRecordView> search = beanSearcher.search(CorpMsgBulkTaskSendRecordView.class, builder
+				.orderBy(CorpMsgBulkTaskSendRecordView::getCreateTime).desc()
+				.build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}