UserWeixinWeixinMessageTemplateServiceImpl.java
3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.topdraw.weixin.service.impl;
import com.topdraw.base.modules.utils.QueryHelp;
import com.topdraw.weixin.domain.UserWeixinWeixinMessageTemplate;
import com.topdraw.weixin.domain.WeixinMessageTemplate;
import com.topdraw.weixin.repository.UserWeixinWeixinMessageTemplateRepository;
import com.topdraw.weixin.repository.WeixinMessageTemplateRepository;
import com.topdraw.weixin.service.UserWeixinWeixinMessageTemplateService;
import com.topdraw.weixin.service.dto.UpdateUserWeixinWeixinMessageTemplateQueryCriteria;
import com.topdraw.weixin.service.dto.UserWeixinWeixinMessageTemplateQueryCriteria;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* @author pengmengqing
* @date 2021-01-28
*/
@Service
@Slf4j
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class UserWeixinWeixinMessageTemplateServiceImpl implements UserWeixinWeixinMessageTemplateService {
@Autowired
private UserWeixinWeixinMessageTemplateRepository userWeixinWeixinMessageTemplateRepository;
@Autowired
private WeixinMessageTemplateRepository weixinMessageTemplateRepository;
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = Exception.class)
public void createOrUpdate(UpdateUserWeixinWeixinMessageTemplateQueryCriteria criteria) {
for (UserWeixinWeixinMessageTemplateQueryCriteria queryCriteria : criteria.getTemplateList()) {
queryCriteria.setMemberId(criteria.getMemberId());
Integer status = queryCriteria.getStatus();
queryCriteria.setStatus(null);
String templateId = queryCriteria.getTemplateId();
Optional<WeixinMessageTemplate> templateOptional = weixinMessageTemplateRepository.findFirstByTemplateId(templateId);
if (!templateOptional.isPresent()) {
log.info("template " + templateId + " not exist");
continue;
}
Long id = templateOptional.get().getId();
queryCriteria.setWeixinMessageTemplateId(id);
Optional<UserWeixinWeixinMessageTemplate> optional = userWeixinWeixinMessageTemplateRepository.findOne(((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, queryCriteria, criteriaBuilder)));
if (!optional.isPresent()) {
UserWeixinWeixinMessageTemplate userWeixinWeixinMessageTemplate = new UserWeixinWeixinMessageTemplate();
userWeixinWeixinMessageTemplate.setUserWeixinId(queryCriteria.getMemberId())
.setWeixinMessageTemplateId(queryCriteria.getWeixinMessageTemplateId())
.setStatus(status);
userWeixinWeixinMessageTemplateRepository.save(userWeixinWeixinMessageTemplate);
} else {
UserWeixinWeixinMessageTemplate UserWeixinWeixinMessageTemplate = optional.get();
if (!status.equals(UserWeixinWeixinMessageTemplate.getStatus())) {
UserWeixinWeixinMessageTemplate.setStatus(status);
userWeixinWeixinMessageTemplateRepository.save(UserWeixinWeixinMessageTemplate);
}
}
}
}
}