Commit a8be5f1d authored by shiyu's avatar shiyu

乾岛签到分享信息

parent 10fc2c5e
...@@ -43,6 +43,12 @@ public interface CommConsts { ...@@ -43,6 +43,12 @@ public interface CommConsts {
*/ */
public static final String UPLOAD_PRE_WXACODE_DIRECTORY = "quanku/wxacode/"; public static final String UPLOAD_PRE_WXACODE_DIRECTORY = "quanku/wxacode/";
/**
* 上传微信小程序码目录
*/
public static final String UPLOAD_QIANDAO_PRE_WXACODE_DIRECTORY = "qiandao/wxacode/";
/** /**
* 拍卖出价的锁 * 拍卖出价的锁
*/ */
......
package com.wwdz.ch.wx.impl.qiandao; package com.wwdz.ch.wx.impl.qiandao;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.qiniu.storage.model.FileInfo;
import com.wwdz.ch.core.api.qiandao.QdWxLoginManager;
import com.wwdz.ch.core.consts.CommConsts; import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.DisposableSubscribeRecordEnum;
import com.wwdz.ch.core.consts.MediaTypeEnum;
import com.wwdz.ch.core.storage.QiniuStorage;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.OkHttpUtil;
import com.wwdz.ch.core.util.RedisUtils;
import com.wwdz.ch.db.dao.SignInShareImageDao;
import com.wwdz.ch.db.dao.UserSignInDao; import com.wwdz.ch.db.dao.UserSignInDao;
import com.wwdz.ch.db.dao.qiandao.*; import com.wwdz.ch.db.dao.qiandao.*;
import com.wwdz.ch.db.domain.SignInShareImage;
import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.domain.qiandao.QdUser; import com.wwdz.ch.db.domain.qiandao.QdUser;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInNote; import com.wwdz.ch.db.domain.qiandao.QdUserSignInNote;
import com.wwdz.ch.db.domain.qiandao.SignInTask; import com.wwdz.ch.db.domain.qiandao.SignInTask;
import com.wwdz.ch.db.dto.request.UserSignInRequestDto;
import com.wwdz.ch.db.dto.request.qiandao.SignInTaskRequestDto; import com.wwdz.ch.db.dto.request.qiandao.SignInTaskRequestDto;
import com.wwdz.ch.wx.constant.LoginTypeEnum;
import com.wwdz.ch.wx.entity.request.QdHomePageRequestDto; import com.wwdz.ch.wx.entity.request.QdHomePageRequestDto;
import com.wwdz.ch.wx.service.qiandao.QdHomePageService; import com.wwdz.ch.wx.service.qiandao.QdHomePageService;
import com.xxdxxs.utils.JsonUtils;
import com.xxdxxs.utils.StringUtils; import com.xxdxxs.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
@Service @Service
public class QdHomePageServiceImpl implements QdHomePageService { public class QdHomePageServiceImpl implements QdHomePageService {
...@@ -40,9 +61,22 @@ public class QdHomePageServiceImpl implements QdHomePageService { ...@@ -40,9 +61,22 @@ public class QdHomePageServiceImpl implements QdHomePageService {
@Autowired @Autowired
QdUserSignInDao qdUserSignInDao; QdUserSignInDao qdUserSignInDao;
@Autowired
QdWxLoginManager qdWxLoginManager;
@Autowired
QiniuStorage qiniuStorage;
@Autowired @Autowired
QdOfficialAccountSubscribeRecordDao qdOfficialAccountSubscribeRecordDao; QdOfficialAccountSubscribeRecordDao qdOfficialAccountSubscribeRecordDao;
@Autowired
RedisUtils redisUtils;
@Autowired
SignInShareImageDao signInShareImageDao;
@Override @Override
public Result findUserInfo(QdHomePageRequestDto dto) { public Result findUserInfo(QdHomePageRequestDto dto) {
try { try {
...@@ -81,4 +115,73 @@ public class QdHomePageServiceImpl implements QdHomePageService { ...@@ -81,4 +115,73 @@ public class QdHomePageServiceImpl implements QdHomePageService {
} }
@Override
public Result getAcode(String page, String scene, HttpServletRequest request) {
try {
String url = "";
// 判断是否存储过该请求路径的微信小程序码图片
String keyName = CommConsts.UPLOAD_QIANDAO_PRE_WXACODE_DIRECTORY + page + "/" + scene + "." + MediaTypeEnum.IMAGE_JPG.getExt();
FileInfo fileInfo = (FileInfo) qiniuStorage.checkFile(keyName);
if (Objects.isNull(fileInfo)) {
InputStream inputStream = qdWxLoginManager.getWxacodeStream(page, scene);
if (Objects.isNull(inputStream)) {
return Result.failed("获取微信小程序流失败");
}
// 新生成微信小程序码并上传到七牛云
qiniuStorage.store(inputStream, 1, MediaTypeEnum.IMAGE_JPG.getMime(), keyName);
}
url = qiniuStorage.generateUrl(keyName);
Map<String, Object> map = new HashMap<>();
map.put("url", url);
logger.info("【请求结束】获取小程序码成功");
return Result.success(map);
} catch (Exception e) {
logger.error("获取小程序码失败", e);
return Result.failed("获取小程序码失败");
}
}
@Override
public Result getShareInfo(UserSignInRequestDto dto) {
try {
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String formattedDate = today.format(formatter);
Map<String, Object> map = new HashMap<>();
String url = "https://quanku.wanwudezhi.com/daily_data";
OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url);
String responseStr = okHttpUtil.get().sync();
ObjectMapper objectMapper = new ObjectMapper();
map.put("suitable", objectMapper.readValue(JsonUtils.getValueByPath(responseStr, "yi"), String[].class));
map.put("avoid", objectMapper.readValue(JsonUtils.getValueByPath(responseStr, "ji"), String[].class));
map.put("lunar_date", JsonUtils.getValueByPath(responseStr, "lunar_date"));
map.put("author", JsonUtils.getValueByPath(responseStr, "quote/author"));
map.put("text", JsonUtils.getValueByPath(responseStr, "quote/text"));
String backgroundImage = "https://cdn.wanwudezhi.com/static/web-static/image/a193ed538686e6921cd3d611569043f5_1974x2964.jpeg";
if (Objects.isNull(redisUtils.get(formattedDate))) {
SignInShareImage signInShareImage = signInShareImageDao.findOne();
if (signInShareImage != null) {
backgroundImage = signInShareImage.getImage();
redisUtils.set(formattedDate, backgroundImage, 60 * 60 * 24);
}
} else {
backgroundImage = redisUtils.get(formattedDate).toString();
}
map.put("backgroundImage", backgroundImage);
QdUser user = qdUserDao.queryById(dto.getUserId());
map.put("userName", user.getNickName());
map.put("avatar", user.getAvatar());
map.put("date", formattedDate);
DayOfWeek dayOfWeek = today.getDayOfWeek();
String weekDay = dayOfWeek.getDisplayName(java.time.format.TextStyle.FULL, java.util.Locale.CHINESE);
map.put("weekDay", weekDay);
return Result.success(map);
} catch (Exception e) {
logger.error("获取分享信息失败 error : {}", e);
}
return Result.failed();
}
} }
package com.wwdz.ch.wx.service.qiandao; package com.wwdz.ch.wx.service.qiandao;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.UserSignInRequestDto;
import com.wwdz.ch.wx.entity.request.QdHomePageRequestDto; import com.wwdz.ch.wx.entity.request.QdHomePageRequestDto;
import javax.servlet.http.HttpServletRequest;
public interface QdHomePageService { public interface QdHomePageService {
/** /**
...@@ -14,4 +17,21 @@ public interface QdHomePageService { ...@@ -14,4 +17,21 @@ public interface QdHomePageService {
/**
* 获取小程序码
*
* @param page
* @param scene
* @param request
* @return
*/
Result getAcode(String page, String scene, HttpServletRequest request);
/**
* 获取分享信息
* @param dto
* @return
*/
Result getShareInfo(UserSignInRequestDto dto);
} }
package com.wwdz.ch.wx.web.qiandao; package com.wwdz.ch.wx.web.qiandao;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.UserSignInRequestDto;
import com.wwdz.ch.wx.entity.request.QdHomePageRequestDto; import com.wwdz.ch.wx.entity.request.QdHomePageRequestDto;
import com.wwdz.ch.wx.service.qiandao.QdHomePageService; import com.wwdz.ch.wx.service.qiandao.QdHomePageService;
import com.xxdxxs.service.FormHandler;
import com.xxdxxs.validation.Validator;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RestController; import java.util.Objects;
@RestController @RestController
@RequestMapping("/wx/qdHomePage") @RequestMapping("/wx/qdHomePage")
...@@ -29,4 +34,34 @@ public class QdHomePageController { ...@@ -29,4 +34,34 @@ public class QdHomePageController {
return qdHomePageService.findUserInfo(dto); return qdHomePageService.findUserInfo(dto);
} }
@ApiOperation(value = "小程序码")
@GetMapping("/getAcode")
public Result getAcode(String page, String scene, HttpServletRequest request) {
logger.info("【请求开始】获小程序码,请求参数:{}", "page=" + page + ",scene=" + scene);
if (StringUtils.isBlank(page)) {
return Result.failed("页面路径不能为空");
}
if (StringUtils.isBlank(scene)) {
return Result.failed("路径参数不能为空");
}
return qdHomePageService.getAcode(page, scene, request);
}
@ApiOperation(value = "查询签到分享的信息")
@PostMapping("/getShareInfo")
public Result getShareInfo(@RequestBody UserSignInRequestDto dto) {
logger.info("【请求开始】查询签到分享的信息,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("userId", "用户id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return qdHomePageService.getShareInfo(dto);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment