liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/UserSubscribeMessageController.java
@@ -1,22 +1,31 @@
package com.xiaopeng.account.controller;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.account.service.IUserSubscribeMessageService;
import com.xiaopeng.account.vo.UserSubscribeMessageVo;
import com.xiaopeng.api.dto.account.ThirdInfoResVo;
import com.xiaopeng.api.dto.account.ThirdInfoVo;
import com.xiaopeng.api.dto.account.UserResourcesDto;
import com.xiaopeng.api.feignClient.account.SSOClient;
import com.xiaopeng.api.feignClient.account.ThirdClient;
import com.xiaopeng.api.feignClient.pushMessage.SubscribeMessageClient;
import com.xiaopeng.api.model.account.UserSubscribeMessage;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("")
public class UserSubscribeMessageController {
@@ -27,6 +36,12 @@
    @Resource
    private SubscribeMessageClient subscribeMessageClient;
    @Resource
    private ThirdClient thirdClient;
    @Value("${third.appid}")
    private String appId;
    @PostMapping("/api/v1/mini-program/subscribeMessage/saveUserSubscribeMessage")
@@ -34,21 +49,28 @@
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<?> saveUserSubscribeMessage(@RequestBody UserSubscribeMessageVo vo, HttpServletRequest request){
        String uid = request.getHeader("XP-Uid");
        String openid = subscribeMessageClient.getOpenId(vo.getJscode()).getData();
        if(StringUtils.isEmpty(openid)){
        ThirdInfoResVo userResourcesDto = thirdClient.thirdInfo(appId, Long.valueOf(uid), 3);
        log.info("调用三方获取用户openid {}", JSON.toJSONString(userResourcesDto));
        if(null == userResourcesDto){
            return R.fail("获取openid失败");
        }
        List<String> templateIds = vo.getTemplateIds();
        userSubscribeMessageService.remove(new LambdaQueryWrapper<UserSubscribeMessage>()
                .eq(UserSubscribeMessage::getUserId, uid).in(UserSubscribeMessage::getTemplateId, templateIds));
        for (String templateId : templateIds) {
            UserSubscribeMessage userSubscribeMessage = new UserSubscribeMessage();
            userSubscribeMessage.setUserId(Long.valueOf(uid));
            userSubscribeMessage.setTemplateId(templateId);
            userSubscribeMessage.setStatus(1);
            userSubscribeMessage.setOpenId(openid);
            userSubscribeMessage.setDeleted(false);
            userSubscribeMessageService.save(userSubscribeMessage);
        if(0 != userResourcesDto.getCode()){
            return R.fail("获取openid失败:{}", userResourcesDto.getMsg());
        }
        ThirdInfoVo thirdInfoVo = userResourcesDto.getData();
        if(null != thirdInfoVo){
            List<String> templateIds = vo.getTemplateIds();
            userSubscribeMessageService.remove(new LambdaQueryWrapper<UserSubscribeMessage>()
                    .eq(UserSubscribeMessage::getUserId, uid).in(UserSubscribeMessage::getTemplateId, templateIds));
            for (String templateId : templateIds) {
                UserSubscribeMessage userSubscribeMessage = new UserSubscribeMessage();
                userSubscribeMessage.setUserId(Long.valueOf(uid));
                userSubscribeMessage.setTemplateId(templateId);
                userSubscribeMessage.setStatus(1);
                userSubscribeMessage.setOpenId(thirdInfoVo.getThirdId());
                userSubscribeMessage.setDeleted(false);
                userSubscribeMessageService.save(userSubscribeMessage);
            }
        }
        return R.ok();
    }