Преглед изворни кода

福达公众号发送消息

wangzhuo пре 2 година
родитељ
комит
6a80f2a210

+ 36 - 1
blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/vo/TaskVO.java

@@ -22,7 +22,7 @@ import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 
 /**
- * 	任务视图实体类
+ * 任务视图实体类
  *
  * @author BladeX
  * @since 2023-09-28
@@ -33,4 +33,39 @@ import io.swagger.annotations.ApiModel;
 public class TaskVO extends Task {
 	private static final long serialVersionUID = 1L;
 
+	/**
+	 * 标题
+	 */
+	private String title;
+
+	/**
+	 * 任务状态
+	 */
+	private String taskStatus;
+
+	/**
+	 * 完成时间
+	 */
+	private String askForATimeToComplete;
+
+	/**
+	 * 需求方
+	 */
+	private String demandSide;
+
+	/**
+	 * 负责人
+	 */
+	private String head;
+
+	/**
+	 * 任务信息
+	 */
+	private String taskInformation;
+
+	/**
+	 * 备注
+	 */
+	private String remarks;
+
 }

+ 21 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -66,6 +66,8 @@ public interface IUserClient {
 	String SELECT_USER_BY_NAMES_NEW = API_PREFIX + "/selectUserByNamesNew";
 	String GET_USER_BY_ROLE = API_PREFIX + "/getUserByRole";
 	String UPDATE_USER_BY_ID = API_PREFIX + "/updateUserById";
+	String XCX_USER_INFO_BY_WEB_USER_ID = API_PREFIX + "/getXcxUserListByWebUserId";
+	String WEB_USER_BY_XCX_USER_PHONE = API_PREFIX + "/getWebUserByXcxUserPhone";
 
 	@GetMapping(LIST_USER_BY_ROLE_ID)
 	R<List<User>> listUserByRoleId(@RequestParam("roleId") Long roleId,@RequestParam(value = "tenantId",required = false) String tenantId,@RequestParam(value = "salesCompanyId",required = false) Long salesCompanyId);
@@ -88,6 +90,25 @@ public interface IUserClient {
 	@GetMapping(USER_INFO_BY_IDS)
 	List<User> userListGetByIds(@RequestParam("ids") List<Long> ids);
 
+
+//	/**
+//	 * 根据web端的id查询小程序端的用户数据
+//	 *
+//	 * @param
+//	 * @return
+//	 */
+//	@GetMapping(XCX_USER_INFO_BY_WEB_USER_ID)
+//	List<User> getXcxUserListByWebUserId(@RequestParam("ids") List<Long> ids);
+//
+//	/**
+//	 * 根据小程序用户手机号查询web端用户
+//	 *
+//	 * @param
+//	 * @return
+//	 */
+//	@GetMapping(WEB_USER_BY_XCX_USER_PHONE)
+//	User getWebUserByXcxUserPhone(@RequestParam("phone") String phone);
+
 	/**
 	 * 获取用户信息精准查询
 	 *

+ 4 - 0
blade-service-api/blade-weChat-api/src/main/java/org/springblade/weChat/message/dto/WxMpTemplateDto.java

@@ -25,6 +25,10 @@ public class WxMpTemplateDto {
 	 */
 	private String type;
 	/**
+	 * 跳转连接
+	 */
+	private String pagePath = "pages/index";
+	/**
 	 * 发送消息内容
 	 */
 	private List<WxMpTemplateData> data;

+ 86 - 3
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/controller/TaskController.java

@@ -17,6 +17,7 @@
 package org.springblade.mocha.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -25,6 +26,7 @@ import lombok.AllArgsConstructor;
 
 import javax.validation.Valid;
 
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import org.springblade.client.entity.Message;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.core.mp.support.Condition;
@@ -36,6 +38,9 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.mocha.vo.TaskStatisticsVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springblade.weChat.feign.IWechatClient;
+import org.springblade.weChat.message.dto.WxMpTemplateDto;
+import org.springblade.weChat.message.entity.WechatMessageConfigurationItem;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -44,11 +49,13 @@ import org.springblade.mocha.vo.TaskVO;
 import org.springblade.mocha.service.ITaskService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 任务 控制器
@@ -64,7 +71,7 @@ public class TaskController extends BladeController {
 
 	private final ITaskService taskService;
 
-//	private final IWechatClient wechatClient;
+	private final IWechatClient wechatClient;
 	//消息
 	private final IMessageClient messageClient;
 
@@ -117,6 +124,7 @@ public class TaskController extends BladeController {
 		qw.eq("is_deleted", 0);
 		String userName = AuthUtil.getUserName();
 		if (!"admin".equals(userName)) {
+//			userClient.getWebUserByXcxUserPhone();
 			qw.and(qwa -> qwa.like("cc_id", AuthUtil.getUserId())
 				.or().eq("create_user", AuthUtil.getUserId())
 				.or().eq("responsible_user_id", AuthUtil.getUserId()));
@@ -230,7 +238,83 @@ public class TaskController extends BladeController {
 			}
 		}
 
-//		System.out.println("==== 任务看板添加发送消息租户号:" + AuthUtil.getTenantId() + "。接收人ids:" + sb + " ====");
+		System.out.println("==== 任务看板添加发送消息租户号:" + AuthUtil.getTenantId() + "。接收人ids:" + sb + " ====");
+
+
+		R<List<WechatMessageConfigurationItem>> resItem = wechatClient.getTemplateType("1", task.getTenantId());
+		if (resItem.isSuccess() && ObjectUtils.isNotNull(resItem.getData())) {
+
+			if (resItem.isSuccess() && ObjectUtils.isNotNull(resItem.getData())) {
+				List<WxMpTemplateData> data = new ArrayList<>();
+				TaskVO taskWX = new TaskVO();
+				// 标题
+				if (task.getIsUrgency() == 0) {
+					taskWX.setTitle("新任务");
+				} else {
+					taskWX.setTitle("新紧急任务!");
+				}
+				// 任务状态
+				switch (task.getType()) {
+					case 1:
+						taskWX.setTaskStatus("待执行");
+						break;
+					case 2:
+						taskWX.setTaskStatus("执行中");
+						break;
+					case 3:
+						taskWX.setTaskStatus("已提交");
+						break;
+					case 4:
+						taskWX.setTaskStatus("工单关闭");
+						break;
+				}
+				// 要求完成时间
+				DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+				String askForATimeToComplete = dtf.format(task.getCompletionTime());
+				taskWX.setAskForATimeToComplete(askForATimeToComplete);
+				// 需求方
+				taskWX.setDemandSide(task.getCreateUserName());
+				// 负责人
+				taskWX.setHead(task.getResponsibleUserName());
+				// 任务信息
+				taskWX.setTaskInformation(task.getTsInfo());
+				// 备注
+				taskWX.setRemarks(task.getRemarks());
+
+				for (WechatMessageConfigurationItem item : resItem.getData()) {
+					try {
+						// 根据方法名获取对应的Method对象
+						Method method = taskWX.getClass().getMethod(item.getMethod());
+						// 调用get方法并打印结果
+						Object result = method.invoke(taskWX);
+						System.out.println(result);
+						if (ObjectUtils.isNotNull(result)) {
+							data.add(new WxMpTemplateData(item.getDataValue(), result.toString()));
+						} else {
+							data.add(new WxMpTemplateData(item.getDataValue(), "无"));
+						}
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+				}
+
+				if (data.size() > 0) {
+//					List<User> xcxUserList = userClient.getXcxUserListByWebUserId(ids);
+					String openidS = userList.stream().map(User::getOaOpenId).filter(Objects::nonNull).collect(Collectors.joining(","));
+					WxMpTemplateDto wxMpTemplateDto = new WxMpTemplateDto();
+					wxMpTemplateDto.setOpenid(openidS);
+					wxMpTemplateDto.setTenantId(task.getTenantId());
+					wxMpTemplateDto.setType("1");
+					wxMpTemplateDto.setPagePath("pages/tabBar/task/list");
+					wxMpTemplateDto.setData(data);
+					String rest = wechatClient.sendMessageNew(wxMpTemplateDto);
+					System.out.println("=========发送返回值=========" + rest);
+				}
+			}
+		}
+
+//
+//		wechatClient.sendMessageNew()
 //		String rest = wechatClient.sendMessage(
 //			sb.toString(),
 //			"新任务通知", "新任务通知",
@@ -277,7 +361,6 @@ public class TaskController extends BladeController {
 		}
 
 
-
 //		boolean b = taskService.updateById(task);
 
 		Task originalTask = taskService.getById(task.getId());

+ 30 - 7
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -17,6 +17,7 @@
 package org.springblade.system.user.feign;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
@@ -39,6 +40,7 @@ import org.springframework.web.bind.annotation.RestController;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -108,17 +110,38 @@ public class UserClient implements IUserClient {
 	@Override
 	public List<User> userListGetByIds(List<Long> ids) {
 		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
-		for (int i = 0; i < ids.size(); i++) {
-			if (ids.size() - 1 == 1) {
-				lqw.eq(User::getId, ids.get(i));
-			} else {
-				lqw.eq(User::getId, ids.get(i)).or();
-			}
-		}
+
+		lqw.in(User::getId, ids);
+//		for (int i = 0; i < ids.size(); i++) {
+//			if (ids.size() - 1 == 1) {
+//				lqw.eq(User::getId, ids.get(i));
+//			} else {
+//				lqw.eq(User::getId, ids.get(i)).or();
+//			}
+//
+//		}
 //		ids.forEach(id -> lqw.eq(User::getId, id).or());
 		return service.list(lqw);
 	}
 
+//	@Override
+//	public List<User> getXcxUserListByWebUserId(List<Long> ids) {
+//		List<User> users = this.userListGetByIds(ids);
+//		List<String> phoneList = users.stream().map(User::getPhone).filter(Objects::nonNull).collect(Collectors.toList());
+//		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
+//		lqw.in(User::getPhone, phoneList);
+//		lqw.eq(User::getUserType, 4);
+//		return service.list(lqw);
+//	}
+//
+//	@Override
+//	public User getWebUserByXcxUserPhone(String phone) {
+//		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
+//		lqw.eq(User::getPhone, phone)
+//			.eq(User::getUserType, 1);
+//		return service.getOne(lqw);
+//	}
+
 	@Override
 	@GetMapping(USER_INFO_BY_NAME_PRECISION)
 	public List<User> userInfoByNamePrecision(String userName, String tenantId) {

+ 1 - 1
blade-service/blade-weChat/src/main/java/org/springblade/weChat/feign/WechatClient.java

@@ -386,7 +386,7 @@ public class WechatClient implements IWechatClient {
 			WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
 				.toUser(item)//要推送的用户openid
 				.templateId(wechatMessageTemplate.getTemplateId())//模版id
-				.miniProgram(new WxMpTemplateMessage.MiniProgram(wechatMessageTemplate.getAppId(), "pages/index"))
+				.miniProgram(new WxMpTemplateMessage.MiniProgram(wechatMessageTemplate.getAppId(), wxMpTemplateDto.getPagePath()))
 				.data(wxMpTemplateDto.getData())
 				.build();
 			System.out.println("======请求拼接完成==========");