提交 812a7c00 作者: han

优化

上级 aba65a50
package com.mmc.iuav.user.model.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MessageTimePointsVO implements Serializable {
private static final long serialVersionUID = -1481188328848093579L;
@ApiModelProperty(value = "购买聊天时长的类型id,唯一识别id", example = "1")
@NotNull(message = "类型id不能为空")
private Integer id;
@ApiModelProperty(value = "购买的积分数额", example = "200")
private Integer points;
@ApiModelProperty(value = "聊天时长,单位(天)", example = "7")
private Integer chatDuration;
}
......@@ -4,6 +4,7 @@ import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.qo.MessageQO;
import com.mmc.iuav.user.model.qo.MessageUserQO;
import com.mmc.iuav.user.model.vo.MessageTimePointsVO;
import com.mmc.iuav.user.model.vo.MessageTimeVO;
import com.mmc.iuav.user.model.vo.SystemMessageVO;
import com.mmc.iuav.user.model.vo.UserMessageVO;
......@@ -114,6 +115,22 @@ public class MessageController extends BaseController{
return messageService.purchaseTime(userAccountId,messageTimeVO,token);
}
@ApiOperation(value = "购买聊天时长(积分)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/purchaseTimeByPoints")
public ResultBody purchaseTimeByPoints(HttpServletRequest request,@RequestBody MessageTimePointsVO messageTimeVO){
LoginSuccessDTO userLoginInfoFromRedis = this.getUserLoginInfoFromRedis(request);
Integer userAccountId = userLoginInfoFromRedis.getUserAccountId();
return messageService.purchaseTimeByPoints(userAccountId,messageTimeVO);
}
@ApiOperation(value = "购买聊天时长(微信支付成功)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/purchaseTimeByWechat")
public ResultBody purchaseTimeByWechat(HttpServletRequest request,@ApiParam(value = "购买聊天时长的类型id,唯一识别id", required = true) Integer typeId){
LoginSuccessDTO userLoginInfoFromRedis = this.getUserLoginInfoFromRedis(request);
Integer userAccountId = userLoginInfoFromRedis.getUserAccountId();
return messageService.purchaseTimeByWechat(userAccountId,typeId);
}
@ApiOperation(value = "返回给小程序端聊天时长选购类型")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/listTimeType")
......@@ -132,4 +149,11 @@ public class MessageController extends BaseController{
public ResultBody insertTimeType(@RequestBody MessageTimeVO messageTimeVO){
return messageService.insertTimeType(messageTimeVO);
}
@ApiOperation(value = "根据类型ID返回聊天时长选购类型")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/timeTypeById")
public MessageTimeVO timeTypeById(@ApiParam(value = "购买聊天时长的类型id,唯一识别id", required = true) Integer typeId){
return messageService.timeTypeById(typeId);
}
}
......@@ -11,7 +11,6 @@ import com.mmc.iuav.user.model.qo.userpoints.AppPointsDetailsQO;
import com.mmc.iuav.user.model.qo.userpoints.UserPointQO;
import com.mmc.iuav.user.model.qo.userpoints.UserPointsDetailsQO;
import com.mmc.iuav.user.model.vo.BuyPointsVO;
import com.mmc.iuav.user.model.vo.MessageTimeVO;
import com.mmc.iuav.user.model.vo.userpoints.ChangeUserPointVO;
import com.mmc.iuav.user.service.userpoints.UserPointsService;
import io.swagger.annotations.*;
......
......@@ -4,6 +4,7 @@ import com.mmc.iuav.page.PageResult;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.qo.MessageQO;
import com.mmc.iuav.user.model.qo.MessageUserQO;
import com.mmc.iuav.user.model.vo.MessageTimePointsVO;
import com.mmc.iuav.user.model.vo.MessageTimeVO;
import com.mmc.iuav.user.model.vo.SystemMessageVO;
import com.mmc.iuav.user.model.vo.UserMessageVO;
......@@ -74,9 +75,13 @@ public interface MessageService {
ResultBody purchaseTime(Integer userAccountId, MessageTimeVO messageTimeVO, String token);
ResultBody purchaseTimeByPoints(Integer userAccountId, MessageTimePointsVO messageTimeVO);
ResultBody purchaseTimeByWechat(Integer userAccountId, Integer id);
ResultBody listTimeType();
ResultBody updateTimeType(MessageTimeVO messageTimeVO);
ResultBody insertTimeType(MessageTimeVO messageTimeVO);
MessageTimeVO timeTypeById(Integer id);
}
package com.mmc.iuav.user.service.impl;
import com.google.gson.Gson;
import com.mmc.iuav.page.PageResult;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.dao.MessageDao;
......@@ -9,10 +8,7 @@ import com.mmc.iuav.user.entity.*;
import com.mmc.iuav.user.feign.PaymentAppApi;
import com.mmc.iuav.user.model.qo.MessageQO;
import com.mmc.iuav.user.model.qo.MessageUserQO;
import com.mmc.iuav.user.model.vo.MessageTimeVO;
import com.mmc.iuav.user.model.vo.OrderRequestParamsVO;
import com.mmc.iuav.user.model.vo.SystemMessageVO;
import com.mmc.iuav.user.model.vo.UserMessageVO;
import com.mmc.iuav.user.model.vo.*;
import com.mmc.iuav.user.model.vo.userpoints.ChangeUserPointVO;
import com.mmc.iuav.user.service.MessageService;
import com.mmc.iuav.user.service.userpoints.UserPointsService;
......@@ -254,7 +250,7 @@ public class MessageServiceImpl implements MessageService {
}
@Override
public ResultBody purchaseTime(Integer userAccountId, MessageTimeVO messageTimeVO,String token) {
public ResultBody purchaseTime(Integer userAccountId, MessageTimeVO messageTimeVO, String token) {
if(messageTimeVO.getId() == null){
return ResultBody.error("聊天类型不能传递为空");
}
......@@ -299,7 +295,54 @@ public class MessageServiceImpl implements MessageService {
}
return ResultBody.success("成功购买"+messageTimeVO1.getChatDuration()+"天聊天功能");
}
@Override
public ResultBody purchaseTimeByWechat(Integer userAccountId, Integer id) {
if(id == null){
return ResultBody.error("聊天类型不能传递为空");
}
MessageTimeVO messageTimeVO1 = messageDao.selectUserMessageTimeType(id);
// 增加聊天时长
String timeValue = redisTemplate.opsForValue().get("Message" + userAccountId);
if (timeValue == null || timeValue.equals("")) {
redisTemplate.setValueSerializer(RedisSerializer.json());
redisTemplate.opsForValue().set("Message" + userAccountId, userAccountId.toString(), messageTimeVO1.getChatDuration() * 24 * 60 * 60, TimeUnit.SECONDS);
return ResultBody.success("成功购买"+messageTimeVO1.getChatDuration()+"天聊天功能");
}
Long remainingTime = redisTemplate.getExpire("Message" + userAccountId, TimeUnit.SECONDS);
if (remainingTime != null && remainingTime >= 0) {
long newTime = remainingTime + (messageTimeVO1.getChatDuration() * 24 * 60 * 60); // 转换为毫秒后加上七天的毫秒数
redisTemplate.opsForValue().set("Message" + userAccountId, userAccountId.toString(), newTime, TimeUnit.SECONDS);
}
return ResultBody.success("成功购买"+messageTimeVO1.getChatDuration()+"天聊天功能");
}
@Override
public ResultBody purchaseTimeByPoints(Integer userAccountId, MessageTimePointsVO messageTimeVO) {
if(messageTimeVO.getId() == null){
return ResultBody.error("聊天类型不能传递为空");
}
MessageTimeVO messageTimeVO1 = messageDao.selectUserMessageTimeType(messageTimeVO.getId());
ChangeUserPointVO changeUserPointVO = new ChangeUserPointVO();
changeUserPointVO.setUserAccountId(userAccountId);
changeUserPointVO.setChangePoint(-messageTimeVO1.getPoints());
changeUserPointVO.setChangeType(8);
ResultBody resultBody = userPointsService.change(changeUserPointVO);
if (!"200".equals(resultBody.getCode())) {
return resultBody;
}
// 增加聊天时长
String timeValue = redisTemplate.opsForValue().get("Message" + userAccountId);
if (timeValue == null || timeValue.equals("")) {
redisTemplate.setValueSerializer(RedisSerializer.json());
redisTemplate.opsForValue().set("Message" + userAccountId, userAccountId.toString(), messageTimeVO1.getChatDuration() * 24 * 60 * 60, TimeUnit.SECONDS);
return ResultBody.success("成功购买"+messageTimeVO1.getChatDuration()+"天聊天功能");
}
Long remainingTime = redisTemplate.getExpire("Message" + userAccountId, TimeUnit.SECONDS);
if (remainingTime != null && remainingTime >= 0) {
long newTime = remainingTime + (messageTimeVO1.getChatDuration() * 24 * 60 * 60); // 转换为毫秒后加上七天的毫秒数
redisTemplate.opsForValue().set("Message" + userAccountId, userAccountId.toString(), newTime, TimeUnit.SECONDS);
}
return ResultBody.success("成功购买"+messageTimeVO1.getChatDuration()+"天聊天功能");
}
@Override
public ResultBody listTimeType() {
List<MessageTimeVO> messageTimeVOS = messageDao.listTimeType();
......@@ -318,6 +361,12 @@ public class MessageServiceImpl implements MessageService {
return ResultBody.success();
}
@Override
public MessageTimeVO timeTypeById(Integer id) {
MessageTimeVO messageTimeVO1 = messageDao.selectUserMessageTimeType(id);
return messageTimeVO1;
}
public static boolean isOverThreeMinutes(String createTime) {
// 定义日期时间格式化对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
......
......@@ -48,4 +48,5 @@ data-filter:
- /userapp/auth/getVerifyCode
- /userapp/auth/webRegister
- /userapp/auth/webLogin
- /userapp/message/timeTypeById
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论