feat(shop): 添加微信模板消息推送功能- 新增 PushTemplateMessageController 控制器用于发送微信模板消息- 在 ShopDealerUser 实体中添加 openid 字段并配置为非表字段

- 更新 ShopDealerUserMapper.xml 以关联查询 sys_user 表获取 openid
- 实现升级为管理员时自动发送微信模板消息的通知逻辑
- 集成 WxNotificationService 进行实际的消息推送调用
- 使用 TemplateMessageRequest 构造模板消息内容及小程序跳转参数
This commit is contained in:
2025-11-06 16:33:58 +08:00
parent ca446b5d5e
commit f728c320b0
3 changed files with 82 additions and 1 deletions

View File

@@ -0,0 +1,75 @@
package com.gxwebsoft.sdy.controller;
import cn.hutool.core.util.ObjectUtil;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.common.system.param.UserParam;
import com.gxwebsoft.common.system.service.UserService;
import com.gxwebsoft.hjm.dto.TemplateMessageRequest;
import com.gxwebsoft.hjm.entity.HjmCar;
import com.gxwebsoft.hjm.entity.HjmCourses;
import com.gxwebsoft.hjm.service.HjmCarService;
import com.gxwebsoft.hjm.service.WxNotificationService;
import com.gxwebsoft.shop.entity.ShopDealerUser;
import com.gxwebsoft.shop.service.ShopDealerUserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.HashMap;
/**
* 定时任务
*
* @author 科技小王子
* @since 2022-12-15 19:11:07
*/
@Tag(name = "定时任务")
@RestController
@RequestMapping("/api/sdy/sdy-template-message")
public class PushTemplateMessageController extends BaseController {
@Resource
private UserService userService;
@Resource
private WxNotificationService wxNotificationService;
@Resource
private ShopDealerUserService shopDealerUserService;
@Operation(summary = "升级为管理员")
@GetMapping("/{id}")
public ApiResult<?> pushByUpdateAdmin(@PathVariable("id") Integer id) {
final ShopDealerUser dealerUser = shopDealerUserService.getByUserIdRel(id);
if(ObjectUtil.isNotEmpty(dealerUser)){
updateToAdmin(dealerUser);
}
return fail("发送失败");
}
/**
* 升级为管理员
*/
public void updateToAdmin(ShopDealerUser item) {
// 发送模板消息
final TemplateMessageRequest templateMessageRequest = new TemplateMessageRequest();
templateMessageRequest.setToUser(item.getOpenid());
templateMessageRequest.setTemplateId("KxGoeBpHW60QFUIU7Vo3c_48g_3V55tWWr23tUUl8gI");
// templateMessageRequest.setUrl("https://mp.websoft.top");
final TemplateMessageRequest.MiniProgram miniProgram = new TemplateMessageRequest.MiniProgram();
miniProgram.setAppid("wx51962d6ac21f2ed2");
miniProgram.setPagepath("pages/index/index");
templateMessageRequest.setMiniprogram(miniProgram);
HashMap<String, TemplateMessageRequest.TemplateDataItem> map = new HashMap<>();
map.put("thing1", new TemplateMessageRequest.TemplateDataItem(item.getRealName()));
map.put("thing2", new TemplateMessageRequest.TemplateDataItem("升级为管理员"));
templateMessageRequest.setData(map);
wxNotificationService.sendTemplateMessage(10560, templateMessageRequest);
}
}

View File

@@ -2,6 +2,7 @@ package com.gxwebsoft.shop.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -32,6 +33,10 @@ public class ShopDealerUser implements Serializable {
@Schema(description = "自增ID")
private Integer userId;
@Schema(description = "微信openid")
@TableField(exist = false)
private String openid;
@Schema(description = "姓名")
private String realName;

View File

@@ -4,8 +4,9 @@
<!-- 关联查询sql -->
<sql id="selectSql">
SELECT a.*
SELECT a.*, b.openid
FROM shop_dealer_user a
LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id
<where>
<if test="param.id != null">
AND a.id = #{param.id}