commit
6339c7d067
@ -0,0 +1,51 @@
|
||||
package dto;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class UserMessageDto implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 消息ID
|
||||
*/
|
||||
private String messageId;
|
||||
|
||||
/**
|
||||
* 消息ID
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
|
||||
/**
|
||||
* 消息标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 消息内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
|
||||
/**
|
||||
* 是否已读 0为未读 1为已读
|
||||
*/
|
||||
private Integer haveRead;
|
||||
|
||||
|
||||
/**
|
||||
* 发送时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date sendTime;
|
||||
}
|
@ -1,30 +1,30 @@
|
||||
package enums;
|
||||
|
||||
public enum CollectTypeEnum {
|
||||
SONG(0, "歌曲"), JOURNAL(1, "期刊");
|
||||
SONG(0, "歌曲"), JOURNAL(1, "期刊"), FOLLOW(2, "关注"), BLACK_LIST(3, "黑名单"), THUMB_UP(4, "点赞");
|
||||
|
||||
private Integer type;
|
||||
private String description;
|
||||
private Integer type;
|
||||
private String description;
|
||||
|
||||
CollectTypeEnum(int type, String description) {
|
||||
this.type = type;
|
||||
this.description = description;
|
||||
}
|
||||
CollectTypeEnum(int type, String description) {
|
||||
this.type = type;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public Integer getType() {
|
||||
return type;
|
||||
}
|
||||
public Integer getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public static CollectTypeEnum getByType(Integer type) {
|
||||
for (CollectTypeEnum at : CollectTypeEnum.values()) {
|
||||
if (at.type.equals(type)) {
|
||||
return at;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static CollectTypeEnum getByType(Integer type) {
|
||||
for (CollectTypeEnum at : CollectTypeEnum.values()) {
|
||||
if (at.type.equals(type)) {
|
||||
return at;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,44 @@
|
||||
package com.luoo.music.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
|
||||
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
|
||||
import software.amazon.awssdk.regions.Region;
|
||||
import software.amazon.awssdk.services.s3.S3Client;
|
||||
import software.amazon.awssdk.services.s3.S3Configuration;
|
||||
import software.amazon.awssdk.services.s3.presigner.S3Presigner;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
@Configuration
|
||||
public class AwsS3Config {
|
||||
|
||||
private static final Region region = Region.of("cn-east-1");
|
||||
|
||||
@Bean
|
||||
public S3Client s3Client(){
|
||||
AwsBasicCredentials awsBasicCredentials = AwsBasicCredentials.create("GLwHmLTZ05Kw9RyCGJXnIkua", "ynOBIqdNXH5HBgrVA29DTn4cUSh1wAI");
|
||||
S3Configuration s3Config = S3Configuration.builder().pathStyleAccessEnabled(true).build();
|
||||
S3Client s3 = S3Client.builder()
|
||||
.endpointOverride(URI.create("https://s3.bitiful.net/"))
|
||||
.credentialsProvider(StaticCredentialsProvider.create(awsBasicCredentials))
|
||||
.region(region)
|
||||
.serviceConfiguration(s3Config)
|
||||
.build();
|
||||
|
||||
return s3;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public S3Presigner s3Presigner(){
|
||||
S3Configuration s3Config = S3Configuration.builder().pathStyleAccessEnabled(true).build();
|
||||
S3Presigner presigner = S3Presigner.builder()
|
||||
.endpointOverride(URI.create("https://s3.bitiful.net/"))
|
||||
.region(region)
|
||||
.build();
|
||||
|
||||
return presigner;
|
||||
}
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
package com.luoo.music.controller;
|
||||
|
||||
|
||||
import api.Result;
|
||||
import com.luoo.music.service.S3Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
public class S3Controller {
|
||||
|
||||
@Autowired
|
||||
private S3Service s3Service;
|
||||
|
||||
|
||||
@GetMapping("/awstest")
|
||||
public Result test() throws UnsupportedEncodingException {
|
||||
|
||||
// s3Service.listObjects()
|
||||
List list = s3Service.list();
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 文件存储目录规划
|
||||
*
|
||||
* music 存放期刊和期刊歌曲 二级目录为期刊期刊号 三级目录存放期刊歌曲和封面图片和歌曲图片
|
||||
*
|
||||
* song 存放通用歌曲
|
||||
*
|
||||
* image存放图片
|
||||
*
|
||||
* img
|
||||
*
|
||||
* user/avatar/111.jpg
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
@PostMapping("/awsUpload")
|
||||
public Result upload(MultipartFile file) {
|
||||
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
||||
// String fileName = UUID.randomUUID().toString().trim().replaceAll("-", "");
|
||||
|
||||
|
||||
String filePath = sdf.format(new Date()) + "/" + file.getOriginalFilename();
|
||||
try{
|
||||
int code = s3Service.singleUpload("indie", filePath, file);
|
||||
|
||||
} catch (Exception ex){
|
||||
}
|
||||
|
||||
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@PostMapping("/awsCopy")
|
||||
public Result copy() {
|
||||
s3Service.copy();
|
||||
return Result.success();
|
||||
}
|
||||
}
|
@ -0,0 +1,103 @@
|
||||
package com.luoo.music.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import software.amazon.awssdk.core.sync.RequestBody;
|
||||
import software.amazon.awssdk.http.SdkHttpResponse;
|
||||
import software.amazon.awssdk.services.s3.S3Client;
|
||||
import software.amazon.awssdk.services.s3.model.*;
|
||||
import software.amazon.awssdk.services.s3.presigner.S3Presigner;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service
|
||||
public class S3Service {
|
||||
@Resource
|
||||
private S3Client s3Client;
|
||||
|
||||
@Resource
|
||||
private S3Presigner s3Presigner;
|
||||
|
||||
//
|
||||
// public ListObjectsResponse listObjects(){
|
||||
// ListObjectsResponse indie = s3Client.listObjects( ListObjectsV2Request.builder().bucket("indie"));
|
||||
// return indie;
|
||||
// }
|
||||
|
||||
|
||||
public List<S3Object> list() throws UnsupportedEncodingException {
|
||||
// if(StringUtil.isEmpty(bucket)) return ResultUtil.resultFail("参数错误");
|
||||
|
||||
ListObjectsV2Request.Builder builder = ListObjectsV2Request.builder();
|
||||
// 设置bucket
|
||||
builder.bucket("indie");
|
||||
|
||||
|
||||
ListObjectsV2Request listObjReq = builder.build();
|
||||
ListObjectsV2Response listObjRes = s3Client.listObjectsV2(listObjReq);
|
||||
|
||||
|
||||
|
||||
List<S3Object> s3ObjectList = listObjRes.contents();
|
||||
|
||||
|
||||
return s3ObjectList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 异步完整上传不分片
|
||||
* @param bucket bucket
|
||||
* @param key 对象路径
|
||||
* @param file 文件对象
|
||||
*/
|
||||
// @Async("awsThreadPoolExecutor")
|
||||
public int singleUpload(String bucket, String key, MultipartFile file) throws IOException {
|
||||
Long startTime = System.currentTimeMillis() / 1000;
|
||||
PutObjectRequest putObjectRequest = PutObjectRequest.builder()
|
||||
.bucket(bucket)
|
||||
.key(key)
|
||||
.build();
|
||||
RequestBody requestBody = RequestBody.fromInputStream(file.getInputStream(), file.getSize());
|
||||
PutObjectResponse putObjectResponse = s3Client.putObject(putObjectRequest, requestBody);
|
||||
SdkHttpResponse sdkHttpResponse = putObjectResponse.sdkHttpResponse();
|
||||
if(!sdkHttpResponse.isSuccessful()){
|
||||
return -1;
|
||||
}
|
||||
long endTime = System.currentTimeMillis() / 1000;
|
||||
// log.info("上传文件(" + key + ")总计耗费时间为:" + (endTime - startTime) + " 秒");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int copy() {
|
||||
|
||||
String bucket = "indie"; //存储桶名
|
||||
String sourceKey = "20240121/1.mp3"; //copy的源文件路径
|
||||
String destinationKey = "20240121/2.mp3"; // copy的目的地路径
|
||||
CopyObjectResponse copyObjectResponse = s3Client.copyObject(CopyObjectRequest.builder().sourceBucket(bucket).sourceKey(sourceKey).destinationBucket(bucket).destinationKey(destinationKey).build());
|
||||
SdkHttpResponse sdkHttpResponse = copyObjectResponse.sdkHttpResponse();
|
||||
if(!sdkHttpResponse.isSuccessful()){
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
public void uploadAvatar(String bucket, String key, byte[] buffer) {
|
||||
PutObjectRequest putObjectRequest = PutObjectRequest.builder()
|
||||
.bucket(bucket)
|
||||
.key(key)
|
||||
.build();
|
||||
RequestBody requestBody = RequestBody.fromInputStream(new ByteArrayInputStream(buffer), buffer.length);
|
||||
s3Client.putObject(putObjectRequest, requestBody);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.luoo.user.controller;
|
||||
|
||||
|
||||
import api.Result;
|
||||
import com.luoo.user.pojo.UserCollectInfo;
|
||||
import com.luoo.user.service.UserCollectInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/UserCollectInfo")
|
||||
public class UserCollectInfoController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private UserCollectInfoService userCollectInfoService;
|
||||
|
||||
|
||||
@PostMapping("/save")
|
||||
public Result save(){
|
||||
userCollectInfoService.save();
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@GetMapping("/show")
|
||||
public Result show(){
|
||||
UserCollectInfo userCollectInfo =userCollectInfoService.findByUserId();
|
||||
return Result.success(userCollectInfo);
|
||||
}
|
||||
|
||||
@PutMapping("/unCollect")
|
||||
public Result unCollect() {
|
||||
userCollectInfoService.unCollect();
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,43 @@
|
||||
package com.luoo.user.dao;
|
||||
|
||||
import com.luoo.user.pojo.AppUpdate;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
|
||||
import com.luoo.user.pojo.AppUpdate;
|
||||
import javax.persistence.criteria.Expression;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public interface AppUpdateDao extends JpaRepository<AppUpdate, String>, JpaSpecificationExecutor<AppUpdate> {
|
||||
|
||||
//AppUpdate selectLatestUpdate(String appVersion, String deviceId);
|
||||
default AppUpdate selectLatestUpdate(String appVersion, String deviceId){
|
||||
Specification<AppUpdate> appUpdateSpecification = createAppUpdateSpecification(appVersion, deviceId);
|
||||
Sort createTimeDescSort = Sort.by(Sort.Direction.DESC, "createTime");
|
||||
Page<AppUpdate> appUpdatePage = this.findAll(appUpdateSpecification, PageRequest.of(0, 1, createTimeDescSort));
|
||||
if(appUpdatePage.getContent().isEmpty()){
|
||||
return null;
|
||||
}
|
||||
return appUpdatePage.getContent().get(0);
|
||||
}
|
||||
|
||||
default Specification<AppUpdate> createAppUpdateSpecification(String appVersion, String deviceId) {
|
||||
return (root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicateList = new ArrayList<>();
|
||||
predicateList.add(criteriaBuilder.greaterThan(root.get("version"), appVersion));
|
||||
Predicate allPublishPredicate = criteriaBuilder.equal(root.get("status"), 2);
|
||||
Predicate grayPublishPredicate = criteriaBuilder.equal(root.get("status"), 1);
|
||||
Expression<Integer> grayDeviceExpress = criteriaBuilder
|
||||
.function("find_in_set", Integer.class, criteriaBuilder.literal(deviceId), root.get("grayscaleDevice"));
|
||||
Predicate grayDevicePredicate = criteriaBuilder.gt(grayDeviceExpress, 0);
|
||||
Predicate grayScalePredicate = criteriaBuilder.and(grayPublishPredicate, grayDevicePredicate);
|
||||
predicateList.add(criteriaBuilder.or(allPublishPredicate, grayScalePredicate));
|
||||
Predicate[] predicates = new Predicate[predicateList.size()];
|
||||
return criteriaBuilder.and(predicateList.toArray(predicates));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,20 @@
|
||||
package com.luoo.user.dao;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||
|
||||
import com.luoo.user.dto.UserCollectCount;
|
||||
import com.luoo.user.pojo.UserCollect;
|
||||
|
||||
public interface UserCollectDao extends MongoRepository<UserCollect, String> {
|
||||
public UserCollect findByUserIdAndObjectIdAndCollectType(String userId, String objectId, Integer collectType);
|
||||
public long deleteByUserIdAndObjectIdAndCollectType(String userId, String objectId, Integer collectType);
|
||||
//@Query(value = "select NumberInt(collectType),count(*) from common.userCollect where userId=?1 group by collectType", nativeQuery = true)
|
||||
//public List<UserCollectCount> countByUserIdAndGroupByCollectType(String userId);
|
||||
|
||||
public int countByObjectIdAndCollectType(String objectId, Integer collectType);
|
||||
public int countByUserIdAndCollectType(String userId, Integer collectType);
|
||||
}
|
||||
|
@ -0,0 +1,9 @@
|
||||
package com.luoo.user.dao;
|
||||
|
||||
import com.luoo.user.pojo.UserCollectInfo;
|
||||
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||
|
||||
public interface UserCollectInfoDao extends MongoRepository<UserCollectInfo, String> {
|
||||
|
||||
UserCollectInfo findUserCollectInfoByUserId(String userId);
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.luoo.user.dao;
|
||||
|
||||
import com.luoo.user.pojo.UserMessage;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface UserMessageDao extends MongoRepository<UserMessage,String> {
|
||||
|
||||
List<UserMessage> findAllByUserId(String userId);
|
||||
|
||||
Page<UserMessage> findByUserId(String userId, Pageable pageable);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.luoo.user.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class UserCollectCount {
|
||||
private int collectType;
|
||||
private long count;
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.luoo.user.listener;
|
||||
|
||||
|
||||
import com.luoo.user.dao.UserMessageDao;
|
||||
import com.luoo.user.pojo.UserMessage;
|
||||
import dto.UserMessageDto;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@RabbitListener(queues = "userMessage")
|
||||
public class UserMessageListener {
|
||||
|
||||
@Autowired
|
||||
private UserMessageDao userMessageDao;
|
||||
|
||||
@RabbitHandler
|
||||
public void executeSendUserMessage(UserMessageDto userMessageDto) {
|
||||
|
||||
UserMessage userMessage = new UserMessage();
|
||||
BeanUtils.copyProperties(userMessageDto,userMessage);
|
||||
|
||||
userMessageDao.save(userMessage);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.luoo.user.pojo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
public class UserCollectInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 收藏ID
|
||||
*/
|
||||
@Id
|
||||
private String collectId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 收藏的单曲
|
||||
*/
|
||||
private List songList;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 收藏的期刊
|
||||
*/
|
||||
private List journalList;
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package com.luoo.user.pojo;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class UserMessage implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 消息ID
|
||||
*/
|
||||
@Id
|
||||
private String messageId;
|
||||
|
||||
/**
|
||||
* 消息ID
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
|
||||
/**
|
||||
* 消息标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 消息内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
|
||||
/**
|
||||
* 是否已读 0为未读 1为已读
|
||||
*/
|
||||
private Integer haveRead;
|
||||
|
||||
|
||||
/**
|
||||
* 发送时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date sendTime;
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package com.luoo.user.service;
|
||||
|
||||
|
||||
import com.luoo.user.dao.UserCollectInfoDao;
|
||||
import com.luoo.user.dto.UserCollectSongDto;
|
||||
import com.luoo.user.pojo.UserCollectInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.annotation.CreatedDate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import util.IdWorker;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class UserCollectInfoService {
|
||||
|
||||
@Autowired
|
||||
private UserCollectInfoDao userCollectInfoDao;
|
||||
|
||||
@Autowired
|
||||
private IdWorker idWorker;
|
||||
|
||||
|
||||
public void save() {
|
||||
|
||||
UserCollectInfo userCollectInfo = new UserCollectInfo();
|
||||
UserCollectSongDto userCollectSongDto = new UserCollectSongDto();
|
||||
userCollectSongDto.setName("smell like teensprit");
|
||||
userCollectSongDto.setArtist("Nirvana");
|
||||
|
||||
UserCollectSongDto userCollectSongDto1 = new UserCollectSongDto();
|
||||
userCollectSongDto1.setName("the unforgiven");
|
||||
userCollectSongDto1.setArtist("Metallica");
|
||||
|
||||
List list = new ArrayList();
|
||||
list.add(userCollectSongDto);
|
||||
list.add(userCollectSongDto1);
|
||||
userCollectInfo.setSongList(list);
|
||||
userCollectInfo.setCollectId(idWorker.nextId()+"");
|
||||
userCollectInfo.setUserId("111222");
|
||||
userCollectInfoDao.save(userCollectInfo);
|
||||
}
|
||||
|
||||
|
||||
public UserCollectInfo findByUserId(){
|
||||
|
||||
return userCollectInfoDao.findUserCollectInfoByUserId("111222");
|
||||
}
|
||||
|
||||
public void unCollect(){
|
||||
UserCollectInfo userCollectInfo = userCollectInfoDao.findUserCollectInfoByUserId("111222");
|
||||
UserCollectSongDto userCollectSongDto = new UserCollectSongDto();
|
||||
userCollectSongDto.setName("smell like teensprit");
|
||||
userCollectSongDto.setArtist("Nirvana");
|
||||
userCollectInfo.getSongList().remove(userCollectSongDto);
|
||||
userCollectInfoDao.save(userCollectInfo);
|
||||
}
|
||||
}
|
@ -0,0 +1,93 @@
|
||||
package com.luoo.user.service;
|
||||
|
||||
import com.luoo.user.dao.UserMessageDao;
|
||||
import com.luoo.user.pojo.UserMessage;
|
||||
import com.mongodb.bulk.BulkWriteResult;
|
||||
import dto.UserMessageDto;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.mongodb.core.BulkOperations;
|
||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import org.springframework.data.mongodb.core.query.Update;
|
||||
import org.springframework.stereotype.Service;
|
||||
import util.IdWorker;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class UserMessageService {
|
||||
|
||||
@Autowired
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@Autowired
|
||||
private UserMessageDao userMessageDao;
|
||||
@Autowired
|
||||
private IdWorker idWorker;
|
||||
|
||||
@Autowired
|
||||
private MongoTemplate mongoTemplate;
|
||||
|
||||
public void sendUserMessage(UserMessageDto userMessageDto) {
|
||||
|
||||
userMessageDto.setMessageId(idWorker.nextId()+"");
|
||||
userMessageDto.setHaveRead(0);
|
||||
userMessageDto.setSendTime(new Date());
|
||||
rabbitTemplate.convertAndSend("userMessage",userMessageDto);
|
||||
}
|
||||
|
||||
|
||||
public List list() {
|
||||
|
||||
return userMessageDao.findAll();
|
||||
}
|
||||
|
||||
public List findByUserId(String userId) {
|
||||
|
||||
return userMessageDao.findAllByUserId(userId);
|
||||
}
|
||||
|
||||
public Page<UserMessage> findSearch(String userId,int page,int size) {
|
||||
|
||||
|
||||
PageRequest pageRequest = PageRequest.of(page-1,size);
|
||||
return userMessageDao.findByUserId(userId,pageRequest);
|
||||
}
|
||||
|
||||
|
||||
public void haveRead(String messageId) {
|
||||
|
||||
Query query = new Query();
|
||||
query.addCriteria(Criteria.where("_id").is(messageId));
|
||||
Update update = new Update();
|
||||
update.set("haveRead",1); //已读为1
|
||||
mongoTemplate.updateFirst(query,update,UserMessage.class);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void batchHaveRead(List<UserMessage> userMessageList) {
|
||||
|
||||
BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.ORDERED, UserMessage.class);
|
||||
|
||||
for (UserMessage userMessage: userMessageList) {
|
||||
Query query = new Query();
|
||||
query.addCriteria(Criteria.where("_id").is(userMessage.getMessageId()));
|
||||
Update update = new Update();
|
||||
update.set("haveRead",1); //已读为1
|
||||
// 添加更新操作
|
||||
bulkOps.updateOne(query,update);
|
||||
|
||||
}
|
||||
|
||||
//执行批量更新操作
|
||||
|
||||
BulkWriteResult result = bulkOps.execute();
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
-- 创建表
|
||||
drop table if exists indie_user.tb_app_update;
|
||||
create table if not exists indie_user.tb_app_update (
|
||||
id varchar(100) not null comment 'ID' primary key,
|
||||
version varchar(10) default '' not null comment '版本号',
|
||||
update_desc varchar(500) default '' not null comment '更新描述',
|
||||
update_type tinyint(1) default 0 not null comment '更新类型(0=全更新, 1=局部热更新)',
|
||||
status tinyint(1) default 1 not null comment '状态(0=未发布, 1=灰度发布, 2=全网发布)',
|
||||
grayscale_device varchar(4000) default '' not null comment '灰度设备ID集合(英文逗号相隔)',
|
||||
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间'
|
||||
) comment '应用版本更新记录表';
|
||||
|
||||
create index idx_version on indie_user.tb_app_update (version);
|
||||
create index idx_create_time on indie_user.tb_app_update (create_time);
|
Loading…
Reference in new issue