july 4 سال پیش
والد
کامیت
d4c531a496

+ 1 - 1
ldt-core/src/main/java/org/springblade/common/enums/ReceiverType.java

@@ -22,7 +22,7 @@ public enum ReceiverType {
 	;
 
 	@EnumValue
-	private String value;
 	@JsonValue
+	private String value;
 	private String dec;
 }

+ 1 - 1
ldt-core/src/main/java/org/springblade/common/enums/SenderType.java

@@ -21,8 +21,8 @@ public enum SenderType {
 	;
 
 	@EnumValue
-	private String value;
 	@JsonValue
+	private String value;
 	private String dec;
 
 }

+ 5 - 6
ldt-core/src/main/java/org/springblade/ldt/notice/controller/NoticeManagementController.java

@@ -22,11 +22,10 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
-import org.springblade.common.enums.ReceiverType;
-import org.springblade.common.enums.SenderType;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.ldt.notice.entity.NoticeManagement;
@@ -92,8 +91,8 @@ public class NoticeManagementController extends BladeController {
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增", notes = "传入notice")
-	public R save(@Valid @RequestBody NoticeManagement notice) {
-		return noticeService.saveNotice(notice);
+	public R save(@Valid @RequestBody NoticeManagementVO notice, BladeUser bladeUser) {
+		return noticeService.saveNotice(notice, bladeUser);
 	}
 
 	/**
@@ -112,8 +111,8 @@ public class NoticeManagementController extends BladeController {
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入notice")
-	public R submit(@Valid @RequestBody NoticeManagement notice) {
-		return R.status(noticeService.saveOrUpdate(notice));
+	public R submit(@Valid @RequestBody NoticeManagementVO notice, BladeUser bladeUser) {
+		return noticeService.saveNotice(notice, bladeUser);
 	}
 
 

+ 4 - 2
ldt-core/src/main/java/org/springblade/ldt/notice/service/INoticeManagementService.java

@@ -18,6 +18,7 @@ package org.springblade.ldt.notice.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.ldt.notice.entity.NoticeManagement;
 import org.springblade.ldt.notice.vo.NoticeManagementVO;
@@ -40,11 +41,12 @@ public interface INoticeManagementService extends BaseService<NoticeManagement>
 	IPage<NoticeManagementVO> selectNoticePage(IPage<NoticeManagementVO> page, NoticeManagementVO notice);
 
 	/**
-	 * @param notice: 通知信息
+	 * @param notice : 通知信息
+	 * @param bladeUser
 	 * @Return R
 	 * @Author July
 	 * @Description 发布通知消息
 	 * @Date 2021/11/4 17:29
 	 */
-	R saveNotice(NoticeManagement notice);
+	R saveNotice(NoticeManagementVO notice, BladeUser bladeUser);
 }

+ 43 - 23
ldt-core/src/main/java/org/springblade/ldt/notice/service/impl/NoticeManagementServiceImpl.java

@@ -18,9 +18,11 @@ package org.springblade.ldt.notice.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
 import org.springblade.common.enums.ReceiverType;
 import org.springblade.common.enums.SenderType;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.ldt.mall.entity.Mall;
 import org.springblade.ldt.mall.service.IMallService;
@@ -36,6 +38,7 @@ import org.springblade.ldt.user.service.ILoginUserService;
 import org.springblade.ldt.user.service.IMemberService;
 import org.springblade.modules.system.service.IUserService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -50,6 +53,7 @@ import java.util.stream.Collectors;
  * @since 2021-11-03
  */
 @Service
+@AllArgsConstructor
 public class NoticeManagementServiceImpl extends BaseServiceImpl<NoticeManagementMapper, NoticeManagement> implements INoticeManagementService {
 
 	@Override
@@ -64,34 +68,50 @@ public class NoticeManagementServiceImpl extends BaseServiceImpl<NoticeManagemen
 	private ILoginUserService loginUserService;
 
 	@Override
-	public R saveNotice(NoticeManagement notice) {
-		Map<Long, String> receiver = new HashMap<>();
-		if (notice.getReceiverType().equals(ReceiverType.MALL)) {//平台可发
-			List<Mall> malls = mallService.list();
-			receiver.putAll(malls.stream().collect(Collectors.toMap(Mall::getId, Mall::getMallName)));
+	@Transactional
+	public R saveNotice(NoticeManagementVO notice, BladeUser bladeUser) {
+		Mall mall = null;
+		if (notice.getSenderType().equals(SenderType.MALL)) {
+			mall = mallService.getOne(Wrappers.<Mall>lambdaQuery().eq(Mall::getTenantId, bladeUser.getTenantId()));
 		}
-		if (notice.getReceiverType().equals(ReceiverType.SHOP)) {//平台,商场可发
-			List<Shop> shops = shopService.list(Wrappers.<Shop>lambdaQuery()
-				.eq(notice.getSenderType().equals(SenderType.MALL), Shop::getMallId, notice.getSenderId()));
-			receiver.putAll(shops.stream().collect(Collectors.toMap(Shop::getId, Shop::getName)));
-		}
-		if (notice.getReceiverType().equals(ReceiverType.MEMBER)) {//商场可发
-			List<Member> members = memberService.list();
-			receiver.putAll(members.stream().collect(Collectors.toMap(Member::getId, Member::getNickName)));
-		}
-		if (notice.getReceiverType().equals(ReceiverType.CONSUMER)) {//平台可发
-			List<LoginUser> loginUsers = loginUserService.list();
-			receiver.putAll(loginUsers.stream().collect(Collectors.toMap(LoginUser::getId, LoginUser::getNickName)));
+		Map<ReceiverType, Map<Long, String>> receiver = new HashMap<>();
+		for (ReceiverType receiverType : notice.getReceiverTypes()) {
+			if (receiverType.equals(ReceiverType.MALL)) {//平台可发
+				List<Mall> malls = mallService.list();
+				receiver.put(ReceiverType.MALL, malls.stream().collect(Collectors.toMap(Mall::getId, Mall::getMallName)));
+			}
+			if (receiverType.equals(ReceiverType.SHOP)) {//平台,商场可发
+				List<Shop> shops = shopService.list(Wrappers.<Shop>lambdaQuery()
+					.eq(notice.getSenderType().equals(SenderType.MALL) && mall != null, Shop::getMallId, mall.getId()));
+				receiver.put(ReceiverType.SHOP, shops.stream().collect(Collectors.toMap(Shop::getId, Shop::getName)));
+			}
+			if (receiverType.equals(ReceiverType.MEMBER)) {//商场可发
+				List<Member> members = memberService.list(Wrappers.<Member>lambdaQuery().eq(mall != null, Member::getMallId, mall.getId()));
+				receiver.put(ReceiverType.MEMBER, members.stream().collect(Collectors.toMap(Member::getId, Member::getNickName)));
+			}
+			if (receiverType.equals(ReceiverType.CONSUMER)) {//平台可发
+				List<LoginUser> loginUsers = loginUserService.list();
+				receiver.put(ReceiverType.CONSUMER, loginUsers.stream().collect(Collectors.toMap(LoginUser::getId, LoginUser::getNickName)));
+			}
 		}
 
 		List<NoticeManagement> notices = new ArrayList<>();
-		for (Map.Entry<Long, String> item : receiver.entrySet()) {
-			notice.setReceiver(item.getValue());
-			notice.setReceiverId(item.getKey());
-			notice.setIsRead(false);
-			notices.add(notice);
+		for (Map.Entry<ReceiverType, Map<Long, String>> data : receiver.entrySet()) {
+			for (Map.Entry<Long, String> item : data.getValue().entrySet()) {
+				notice.setReceiver(item.getValue());
+				notice.setReceiverId(item.getKey());
+				notice.setReceiverType(data.getKey());
+				notice.setIsRead(false);
+				if (notice.getSenderType().equals(SenderType.MALL)) {
+					notice.setSenderId(mall.getId());
+					notice.setSender(mall.getMallName());
+				} else {
+					notice.setSenderId(bladeUser.getUserId());
+					notice.setSender("[平台]");
+				}
+				notices.add(notice);
+			}
 		}
-
 		return R.data(saveBatch(notices));
 	}
 

+ 5 - 2
ldt-core/src/main/java/org/springblade/ldt/notice/vo/NoticeManagementVO.java

@@ -16,10 +16,11 @@
  */
 package org.springblade.ldt.notice.vo;
 
-import org.springblade.ldt.notice.entity.NoticeManagement;
+import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import io.swagger.annotations.ApiModel;
+import org.springblade.common.enums.ReceiverType;
+import org.springblade.ldt.notice.entity.NoticeManagement;
 
 /**
  * 通知表视图实体类
@@ -33,4 +34,6 @@ import io.swagger.annotations.ApiModel;
 public class NoticeManagementVO extends NoticeManagement {
 	private static final long serialVersionUID = 1L;
 
+	private ReceiverType[] receiverTypes;
+
 }