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();
|
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();
|
}
|
|
|
@GetMapping("/logan/inner/v1/subscribeMessage/getUserOpenId/{uid}")
|
public R<String> getUserOpenId(@PathVariable("uid") Integer uid){
|
UserSubscribeMessage one = userSubscribeMessageService.getOne(new LambdaQueryWrapper<UserSubscribeMessage>()
|
.eq(UserSubscribeMessage::getUserId, uid).last(" limit 1"));
|
return R.ok(null != one ? one.getOpenId() : "");
|
}
|
}
|