提交 d66090ea 编写于 作者: 夏天。。's avatar 夏天。。

笔友信相关接口

上级 43a5763f
......@@ -65,5 +65,7 @@ public class LmsAnonController {
return CommonResult.success(anonService.getParentAnonLetterById(anonId));
}
}
......@@ -8,6 +8,7 @@ import com.mobius.modules.lms.dto.SearchReceivedLmsPensConditionParam;
import com.mobius.modules.lms.dto.SearchSentLmsPensConditionParam;
import com.mobius.modules.lms.model.LmsPen;
import com.mobius.modules.lms.service.LmsPenService;
import com.mobius.modules.lms.vo.PenVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
......@@ -28,18 +29,36 @@ public class LmsPenController {
@Autowired
private LmsPenService lmsPenService;
@PostMapping("")
@ApiOperation(value = "发送笔友信")
public CommonResult sendPenLetter(@Validated @RequestBody PenVO penVO){
return lmsPenService.userSendPen(penVO);
}
// @ApiOperation(value = "分页获取已发送笔友信")
// @GetMapping(value = "/listSent")
// @ResponseBody
// public CommonResult listSent(
// //因为是GET请求,所以这里不用@RequestBody注解修饰,但是为了这个类里面的Validation注解起效,这里必须加上@Validated注解表示需要验证参数格式
// @Validated SearchSentLmsPensConditionParam conditionParam,
// @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
// @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
// Page<LmsPen> lmsPenList = lmsPenService.listSentBySearchConditions(conditionParam, pageNum, pageSize);
// return CommonResult.success(CommonPage.restPage(lmsPenList));
// }
@ApiOperation(value = "分页获取已发送笔友信")
@GetMapping(value = "/listSent")
@GetMapping(value = "/sendList")
@ResponseBody
public CommonResult listSent(
//因为是GET请求,所以这里不用@RequestBody注解修饰,但是为了这个类里面的Validation注解起效,这里必须加上@Validated注解表示需要验证参数格式
@Validated SearchSentLmsPensConditionParam conditionParam,
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
Page<LmsPen> lmsPenList = lmsPenService.listSentBySearchConditions(conditionParam, pageNum, pageSize);
return CommonResult.success(CommonPage.restPage(lmsPenList));
return lmsPenService.userPenFriendSendList(new Page<>(pageNum,pageSize));
}
@ApiOperation(value = "分页获取已接收笔友信")
@GetMapping(value = "/listReceived")
@ResponseBody
......
package com.mobius.modules.lms.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Author: hocztms
* @Description:
* @Date Created in 2022-05-13-0:06
* @Modified By:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PenBriefDto {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "收信人id")
private Integer receiverId;
@ApiModelProperty(value = "信件的简要内容,用于列表项展示时只显示前20个字,要获取具体内容还需要调用一次接口")
private String contentBrief;
@ApiModelProperty(value = "送达时间")
private Date arriveTime;
@ApiModelProperty(value = "信件标题")
private String title;
@ApiModelProperty(value = "冗余字段:收信人昵称")
private String receiverNickname;
@ApiModelProperty(value = "是否读")
private Integer isRead;
}
package com.mobius.modules.lms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mobius.modules.lms.model.LmsIncident;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Sqh
* @since 2022-05-09
*/
public interface LmsIncidentMapper extends BaseMapper<LmsIncident> {
}
package com.mobius.modules.lms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mobius.modules.lms.dto.PenBriefDto;
import com.mobius.modules.lms.model.LmsPen;
import com.mobius.modules.lms.vo.PenVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
/**
* <p>
......@@ -15,4 +19,8 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LmsPenMapper extends BaseMapper<LmsPen> {
@Select("select * from lms_pen where sender_id = #{senderId} and is_delete = 0 order by is_read asc,id desc")
IPage<PenBriefDto> getSenderPenBriefList(Long senderId,IPage<PenBriefDto> page);
}
package com.mobius.modules.lms.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author Sqh
* @since 2022-05-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("lms_incident")
@ApiModel(value="LmsIncident对象", description="")
public class LmsIncident implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "事件id 唯一标识")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "事件名称")
private String name;
@ApiModelProperty(value = "发生概率 存储的是0~100的整数,在业务层进行百分比计算")
private Integer ratio;
@ApiModelProperty(value = "延迟时间,以小时作为单位")
private Integer delayTime;
@ApiModelProperty(value = "事件描述")
private String description;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
......@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
......@@ -25,6 +22,7 @@ import java.util.Date;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@Builder
@TableName("lms_pen")
@ApiModel(value="LmsPen对象", description="")
public class LmsPen implements Serializable {
......
package com.mobius.modules.lms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mobius.modules.lms.model.LmsIncident;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author Sqh
* @since 2022-05-09
*/
public interface LmsIncidentService extends IService<LmsIncident> {
List<LmsIncident> getIncidentList();
LmsIncident generateIncidentId();
}
package com.mobius.modules.lms.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mobius.common.api.CommonResult;
import com.mobius.modules.lms.dto.PenBriefDto;
import com.mobius.modules.lms.dto.SearchReceivedLmsPensConditionParam;
import com.mobius.modules.lms.dto.SearchSentLmsPensConditionParam;
import com.mobius.modules.lms.model.LmsPen;
import com.mobius.modules.lms.vo.PenVO;
/**
* <p>
......@@ -35,4 +39,7 @@ public interface LmsPenService extends IService<LmsPen> {
Page<LmsPen> listReceivedBySearchConditions(SearchReceivedLmsPensConditionParam conditionParam, Integer pageNum, Integer pageSize);
CommonResult userPenFriendSendList(IPage<PenBriefDto> page);
CommonResult userSendPen(PenVO penVO);
}
package com.mobius.modules.lms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mobius.modules.lms.mapper.LmsIncidentMapper;
import com.mobius.modules.lms.model.LmsIncident;
import com.mobius.modules.lms.service.LmsIncidentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* <p>
* 服务实现类
* </p>
*
* @author Sqh
* @since 2022-05-09
*/
@Slf4j
@Service
public class LmsIncidentServiceImpl extends ServiceImpl<LmsIncidentMapper, LmsIncident> implements LmsIncidentService {
@Override
public List<LmsIncident> getIncidentList() {
return baseMapper.selectList(new QueryWrapper<>());
}
@Override
public LmsIncident generateIncidentId() {
List<LmsIncident> incidentList = getIncidentList();
int i = -1;
for (LmsIncident incident : incidentList){
if (i<0){
i++;
continue;
}
incident.setRatio(incident.getRatio()+incidentList.get(i).getRatio());
i++;
}
Random random = new Random();
Integer index = random.nextInt(100);
for (LmsIncident incident :incidentList){
if (index<=incident.getRatio()){
return incident;
}
}
return incidentList.get(0);
}
}
......@@ -2,25 +2,34 @@ package com.mobius.modules.lms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mobius.common.api.CommonResult;
import com.mobius.common.api.ResultCode;
import com.mobius.common.util.ComConstants;
import com.mobius.domain.MyUserDetail;
import com.mobius.modules.lms.dto.PenBriefDto;
import com.mobius.modules.lms.dto.SearchReceivedLmsPensConditionParam;
import com.mobius.modules.lms.dto.SearchSentLmsPensConditionParam;
import com.mobius.modules.lms.mapper.LmsLetterContentMapper;
import com.mobius.modules.lms.mapper.LmsPenMapper;
import com.mobius.modules.lms.model.LmsIncident;
import com.mobius.modules.lms.model.LmsPen;
import com.mobius.modules.lms.service.LmsIncidentService;
import com.mobius.modules.lms.service.LmsPenService;
import com.mobius.modules.lms.vo.PenVO;
import com.mobius.modules.ums.mapper.UmsUserMapper;
import com.mobius.modules.ums.model.UmsUser;
import com.mobius.modules.ums.service.UmsUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
/**
* <p>
......@@ -31,6 +40,8 @@ import java.util.Date;
* @since 2022-04-29
*/
@Service
@Slf4j
public class LmsPenServiceImpl extends ServiceImpl<LmsPenMapper, LmsPen> implements LmsPenService {
@Autowired
......@@ -44,6 +55,11 @@ public class LmsPenServiceImpl extends ServiceImpl<LmsPenMapper, LmsPen> impleme
@Autowired
private UmsUserService userService;
@Autowired
private LmsDraftLetterServiceImpl draftLetterService;
@Autowired
private LmsIncidentService incidentService;
@Override
public Page<LmsPen> listSentBySearchConditions(SearchSentLmsPensConditionParam conditionParam, Integer pageNum, Integer pageSize) {
......@@ -136,5 +152,53 @@ public class LmsPenServiceImpl extends ServiceImpl<LmsPenMapper, LmsPen> impleme
}
return super.page(page, lambda); }
@Override
public CommonResult userPenFriendSendList(IPage<PenBriefDto> page) {
MyUserDetail details = (MyUserDetail) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
IPage<PenBriefDto> senderPenBriefList = baseMapper.getSenderPenBriefList(Long.parseLong(details.getId().toString()), page);
HashMap<String,Object> result = new HashMap<>();
result.put("total",senderPenBriefList.getTotal());
result.put("list",senderPenBriefList.getRecords());
return CommonResult.success(result);
}
@Override
public CommonResult userSendPen(PenVO penVO) {
MyUserDetail details = (MyUserDetail) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
Long contentId = draftLetterService.saveDraft(penVO, 0);
UmsUser byId = userService.getById(penVO.getReceiverId());
if(byId==null){
return CommonResult.failed("收信方不存在");
}
LmsIncident incident = incidentService.generateIncidentId();
Date arriveTime = new Date(new Date().getTime() + incident.getDelayTime()*60*60*1000);
String contentBrief;
if (penVO.getContent().length()<=20){
contentBrief =penVO.getContent();
}else {
contentBrief = penVO.getContent().substring(0,20);
}
LmsPen pen = LmsPen.builder()
.id(0L)
.createTime(new Date())
.updateTime(new Date())
.contentId(Integer.valueOf(contentId.toString()))
.isDelete(0)
.isRead(0)
.senderId(details.getId())
.receiverId(penVO.getReceiverId())
.title(penVO.getTitle())
.contentBrief(contentBrief)
.receiverNickname(byId.getNickname())
.incidentId(Long.parseLong(incident.getId().toString()))
.arriveTime(arriveTime)
.build();
save(pen);
return CommonResult.success(ResultCode.SUCCESS);
}
}
package com.mobius.modules.lms.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @Author: hocztms
* @Description:
* @Date Created in 2022-05-12-20:29
* @Modified By:
*/
@Data
@ApiModel("发送时空胶囊信息类")
public class PenVO extends LetterContentVO{
@ApiModelProperty(value = "收信人id")
@NotNull(message = "收信人id不能为空")
private Integer receiverId;
}
package com.mobius.modules.sms.service;
package com.mobius.modules.lms.mapper;
import com.mobius.modules.sms.enums.DealEnum;
import com.mobius.modules.sms.mapper.SmsFeedbackMapper;
import com.mobius.modules.sms.model.SmsFeedback;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mobius.modules.lms.dto.PenBriefDto;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
import static org.junit.jupiter.api.Assertions.*;
/**
* @Author: hocztms
* @Description:
* @Date Created in 2022-05-07-11:21
* @Date Created in 2022-05-13-0:37
* @Modified By:
*/
@SpringBootTest
class SmsFeedbackServiceTest {
@Autowired
private SmsFeedbackService service;
class LmsPenMapperTest {
@Autowired
private SmsFeedbackMapper feedbackMapper;
private LmsPenMapper lmsPenMapper;
@Test
void insertFeedBack(){
// feedbackMapper.insert(new SmsFeedback(0,2,"ff",new Date(),new Date(), DealEnum.DEAL,new Date()));
public void test(){
IPage<PenBriefDto> senderPenBriefList = lmsPenMapper.getSenderPenBriefList(3L, new Page<>(1, 3));
System.out.println(senderPenBriefList.getRecords().toString());
}
}
\ No newline at end of file
package com.mobius.modules.lms.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.mobius.common.service.RedisService;
import com.mobius.modules.lms.model.LmsAnon;
import com.mobius.modules.lms.service.LmsAnonPoolService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.data.redis.serializer.RedisSerializer;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Sqh
* @date 2022/5/7
*/
@SpringBootTest
class LmsAnonPoolServiceImplTest {
@Autowired
private LmsAnonPoolService anonPoolService;
@Test
void save() {
final LmsAnon anonLetter = new LmsAnon();
for (int i = 0; i < 10; i++) {
anonLetter.setId((long) i);
anonLetter.setContentBrief("测试内容:" + i);
anonPoolService.save(anonLetter);
}
}
// @Test
// void saveBatch() {
// final ArrayList<LmsAnon> list = new ArrayList<>();
// for (int i = 0; i < 10; i++) {
// final LmsAnon anonLetter = new LmsAnon();
// anonLetter.setId((long) i);
// anonLetter.setContentBrief("测试内容:" + i);
// list.add(anonLetter);
// }
// anonPoolService.saveBatch(list);
// }
@Test
void saveBatchList() {
final ArrayList<LmsAnon> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
final LmsAnon anonLetter = new LmsAnon();
anonLetter.setId((long) i);
anonLetter.setContentBrief("测试内容:" + i);
list.add(anonLetter);
}
anonPoolService.saveBatch(list);
}
@Test
void getRandomCountAnonLetterIdFromPoll() {
int count = 4;
final List<Long> idFromPoll = anonPoolService.getRandomCountAnonLetterIdFromPoll(count,null);
idFromPoll.forEach(System.out::println);
}
@Test
void getBatchByIds() {
final ArrayList<Long> ids = CollectionUtil.newArrayList(1L, 2L, 3L);
final List<LmsAnon> anonList = anonPoolService.getBatchByIds(ids);
for (LmsAnon anon : anonList) {
// final LmsAnon anon = (LmsAnon) o;
System.out.println(anon);
}
// anonList.forEach(System.out::println);
}
//===============================================================
private String REDIS_DATABASE = "mobius";
private Long REDIS_ANON_LETTER_EXPIRE = 120L;//默认五天
private String REDIS_KEY_ANON_POOL = "lms:anonPool";
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private RedisService redisService;
@Test
void scan() {
try {
String keyStr = REDIS_DATABASE + ":" + REDIS_KEY_ANON_POOL + ":*";
final ArrayList<LmsAnon> lmsAnons = new ArrayList<>();
Cursor<String> cursor = redisService.scan(keyStr, 5);
List<String> keys = CollectionUtil.newArrayList();
while (keys.size() < 6 && cursor.hasNext()) {
//找到一次就添加一次
keys.add(cursor.next());
}
cursor.close();
keys.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
\ No newline at end of file
package com.mobius.modules.lms.service.impl;
import com.mobius.modules.lms.service.LmsAnonService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Sqh
* @date 2022/5/9
*/
@SpringBootTest
class LmsAnonServiceImplTest {
@Autowired
private LmsAnonService anonService;
@Test
void getAnonFromPoolByCount() {
for (int i = 1; i < 8; i++) {
anonService.getAnonFromPoolByCount(i).forEach(System.out::println);
System.out.println("==========");
}
}
@Test
void getParentAnonLetterById() {
Integer id = 1;
System.out.println(anonService.getParentAnonLetterById(id));
}
}
\ No newline at end of file
package com.mobius.modules.sms.service.impl;
import com.mobius.modules.sms.mapper.SmsUvMapper;
import com.mobius.modules.sms.model.SmsUv;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Calendar;
/**
* @author Sqh
* @date 2022/5/12
*/
@SpringBootTest
class SmsUvServiceImplTest {
@Autowired
private SmsUvMapper mapper;
@Test
public void testDate(){
final SmsUv smsUv = new SmsUv();
smsUv.setId(1L);
smsUv.setDailyCount(100L);
smsUv.setTotalCount(100L);
final Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-1);
smsUv.setLogTime(calendar.getTime());
mapper.insert(smsUv);
System.out.println(smsUv);
}
}
\ No newline at end of file
package com.mobius.modules.ums.service;
import cn.hutool.crypto.digest.BCrypt;
import com.mobius.common.config.SmsProperties;
import com.mobius.common.service.SmsService;
import com.mobius.modules.ums.model.UmsUser;
import io.swagger.annotations.ApiModelProperty;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class UmsUserServiceTest {
@Autowired
private UmsUserService userService;
@Autowired
private SmsProperties smsProperties;
// @Autowired
// private SmsService smsService;
@Test
void userLogin() {
// System.out.println(smsProperties.getAppId());
// smsService.sendSms("common",new String[]{"54088","54088"},new String[]{"+8615205085606"});
}
@Test
void saveUser() {
// String encodePassword = BCrypt.hashpw("123456");
// UmsUser user = new UmsUser(1,"15205085606",null,encodePassword,"hocztms",1,1,1,new Date(),new Date(),new Date());
// userService.save(user);
}
@Test
void loadUserByPhone() {
}
@Test
void getUserByPhone() {
}
}
\ No newline at end of file
package com.mobius.modules.ums.service.impl;
import static org.junit.jupiter.api.Assertions.*;
/**
* @Author: hocztms
* @Description:
* @Date Created in 2022-05-04-22:09
* @Modified By:
*/
class UmsUserServiceImplTest {
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册