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 { @Resource private IUserSubscribeMessageService userSubscribeMessageService; @Resource private SubscribeMessageClient subscribeMessageClient; @Resource private ThirdClient thirdClient; @Value("${third.appid}") private String appId; @PostMapping("/api/v1/mini-program/subscribeMessage/saveUserSubscribeMessage") @ApiOperation(value = "授权消息模板", tags = {"小程序-优惠券"}) @XpClientCheck(checkToken = false, checkOtpToken = true) public R saveUserSubscribeMessage(@RequestBody UserSubscribeMessageVo vo, HttpServletRequest request){ String uid = request.getHeader("XP-Uid"); ThirdInfoResVo userResourcesDto = thirdClient.thirdInfo(appId, Long.valueOf(uid), 3); log.info("调用三方获取用户openid {}", JSON.toJSONString(userResourcesDto)); if(null == userResourcesDto){ return R.fail("获取openid失败"); } if(0 != userResourcesDto.getCode()){ return R.fail("获取openid失败:{}", userResourcesDto.getMsg()); } ThirdInfoVo thirdInfoVo = userResourcesDto.getData(); if(null != thirdInfoVo){ List templateIds = vo.getTemplateIds(); userSubscribeMessageService.remove(new LambdaQueryWrapper() .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(); } @GetMapping("/logan/inner/v1/subscribeMessage/getUserOpenId/{uid}") public R getUserOpenId(@PathVariable("uid") Integer uid){ UserSubscribeMessage one = userSubscribeMessageService.getOne(new LambdaQueryWrapper() .eq(UserSubscribeMessage::getUserId, uid).last(" limit 1")); return R.ok(null != one ? one.getOpenId() : ""); } }