Commit 76303f7f 76303f7fcb6c8c9336f0d2e84db11c61a037a6b3 by xianghan

1.update

1 parent 799a2ce5
Showing 63 changed files with 2329 additions and 1030 deletions
......@@ -19,6 +19,9 @@ import javax.persistence.Transient;
public class DefaultAsyncMqModule {
@Transient
private String platformAccount;
@Transient
private String memberCode;
}
......
package com.topdraw.business.module.member.address.domain;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.exception.GlobeExceptionMsg;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;
import java.util.Objects;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/11 11:08
* @version: :
* @modified By:
* @since : modified in 2022/3/11 11:08
*/
public class MemberAddressBuilder {
private static final Integer DEFAULT_VALUE_0 = 0;
private static final Integer DEFAULT_VALUE_1 = 1;
public static MemberAddress build(MemberAddress memberAddress, Long memberId, String memberCode){
Long id = memberAddress.getId();
Integer type = memberAddress.getType();
Integer isDefault = memberAddress.getIsDefault();
Integer sequence = memberAddress.getSequence();
Integer status= memberAddress.getStatus();
String contactor = memberAddress.getContactor();
String cellphone = memberAddress.getCellphone();
String country = memberAddress.getCountry();
String province = memberAddress.getProvince();
String city = memberAddress.getCity();
String district = memberAddress.getDistrict();
String address = memberAddress.getAddress();
String zipCode = memberAddress.getZipCode();
return build(id,memberId,memberCode,type,isDefault,sequence,status,
contactor,cellphone,country,province,city,district,address,zipCode);
}
public static MemberAddress build(MemberAddress memberAddress, Member member){
Long id = memberAddress.getId();
Long memberId = member.getId();
String memberCode = member.getCode();
Integer type = memberAddress.getType();
Integer isDefault = memberAddress.getIsDefault();
Integer sequence = memberAddress.getSequence();
Integer status= memberAddress.getStatus();
String contactor = memberAddress.getContactor();
String cellphone = memberAddress.getCellphone();
String country = memberAddress.getCountry();
String province = memberAddress.getProvince();
String city = memberAddress.getCity();
String district = memberAddress.getDistrict();
String address = memberAddress.getAddress();
String zipCode = memberAddress.getZipCode();
return build(id,memberId,memberCode,type,isDefault,sequence,status,
contactor,cellphone,country,province,city,district,address,zipCode);
}
public static MemberAddress build(MemberAddress memberAddress){
Long id = memberAddress.getId();
Long memberId = memberAddress.getMemberId();
String memberCode = memberAddress.getMemberCode();
Integer type = memberAddress.getType();
Integer isDefault = memberAddress.getIsDefault();
Integer sequence = memberAddress.getSequence();
Integer status= memberAddress.getStatus();
String contactor = memberAddress.getContactor();
String cellphone = memberAddress.getCellphone();
String country = memberAddress.getCountry();
String province = memberAddress.getProvince();
String city = memberAddress.getCity();
String district = memberAddress.getDistrict();
String address = memberAddress.getAddress();
String zipCode = memberAddress.getZipCode();
return build(id,memberId,memberCode,type,isDefault,sequence,status,
contactor,cellphone,country,province,city,district,address,zipCode);
}
public static MemberAddress build(Long id , Long memberId, String memberCode,
Integer sequence, Integer type , Integer isDefault , Integer status,
String contactor, String cellphone,
String country, String province, String city,
String district, String address, String zipCode){
Assert.notNull(memberId, GlobeExceptionMsg.MEMBER_ID_IS_NULL);
MemberAddress memberAddress = new MemberAddress();
memberAddress.setId(Objects.nonNull(id)?null:id);
memberAddress.setMemberId(Objects.isNull(memberId)?null:memberId);
memberAddress.setMemberCode(stringIsNull(memberCode));
memberAddress.setSequence(Objects.nonNull(sequence)?null:DEFAULT_VALUE_1);
memberAddress.setType(Objects.isNull(type)?null:DEFAULT_VALUE_0);
memberAddress.setIsDefault(Objects.nonNull(isDefault)?null:DEFAULT_VALUE_0);
memberAddress.setStatus(Objects.isNull(status)?null:DEFAULT_VALUE_1);
memberAddress.setContactor(stringIsNull(contactor));
memberAddress.setCellphone(stringIsNull(cellphone));
memberAddress.setCountry(stringIsNull(country));
memberAddress.setProvince(stringIsNull(province));
memberAddress.setCity(stringIsNull(city));
memberAddress.setDistrict(stringIsNull(district));
memberAddress.setAddress(stringIsNull(address));
memberAddress.setZipCode(stringIsNull(zipCode));
return memberAddress;
}
private static String stringIsNull(String s){
return StringUtils.isBlank(s)?"":s;
}
}
......@@ -2,11 +2,6 @@ package com.topdraw.business.module.member.address.service;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.module.member.address.service.dto.MemberAddressQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
/**
* @author XiangHan
......@@ -15,31 +10,28 @@ import java.util.Map;
public interface MemberAddressService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
* 根据ID查询
* @param resources ID
* @return MemberAddressDTO
*/
Map<String,Object> queryAll(MemberAddressQueryCriteria criteria, Pageable pageable);
MemberAddressDTO findById(Long resources);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberAddressDTO>
* 保存会员地址
* @param resources
*/
List<MemberAddressDTO> queryAll(MemberAddressQueryCriteria criteria);
MemberAddressDTO create(MemberAddress resources);
/**
* 根据ID查询
* @param id ID
* @return MemberAddressDTO
* 修改会员地址
* @param resources
*/
MemberAddressDTO findById(Long id);
MemberAddressDTO update(MemberAddress resources);
void create(MemberAddress resources);
void update(MemberAddress resources);
void delete(Long id);
/**
* 通过id删除
* @param resources
*/
void delete(Long resources);
}
......
package com.topdraw.business.module.member.address.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Data
public class MemberAddressQueryCriteria{
@Query
private Long memberId;
}
package com.topdraw.business.module.member.address.service.impl;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.domain.MemberAddressBuilder;
import com.topdraw.business.module.member.address.repository.MemberAddressRepository;
import com.topdraw.business.module.member.address.service.MemberAddressService;
import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.module.member.address.service.dto.MemberAddressQueryCriteria;
import com.topdraw.business.module.member.address.service.mapper.MemberAddressMapper;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
@Slf4j
public class MemberAddressServiceImpl implements MemberAddressService {
@Autowired
private MemberAddressRepository MemberAddressRepository;
private MemberService memberService;
@Autowired
private MemberAddressMapper MemberAddressMapper;
private MemberAddressMapper memberAddressMapper;
@Autowired
private MemberService memberService;
private MemberAddressRepository memberAddressRepository;
@Override
public Map<String, Object> queryAll(MemberAddressQueryCriteria criteria, Pageable pageable) {
Page<MemberAddress> page = MemberAddressRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(MemberAddressMapper::toDto));
}
@Override
public List<MemberAddressDTO> queryAll(MemberAddressQueryCriteria criteria) {
return MemberAddressMapper.toDto(MemberAddressRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
@Autowired
private RedisUtils redisUtils;
@Override
public MemberAddressDTO findById(Long id) {
MemberAddress MemberAddress = MemberAddressRepository.findById(id).orElseGet(MemberAddress::new);
Assert.notNull(id,"id can't be null");
MemberAddress MemberAddress = this.memberAddressRepository.findById(id).orElseGet(MemberAddress::new);
ValidationUtil.isNull(MemberAddress.getId(),"MemberAddress","id",id);
return MemberAddressMapper.toDto(MemberAddress);
return this.memberAddressMapper.toDto(MemberAddress);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(MemberAddress resources) {
String memberCode = resources.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
Long id = memberDTO.getId();
resources.setMemberId(id);
MemberAddressRepository.save(resources);
public MemberAddressDTO create(MemberAddress resources) {
log.info("MemberAddressServiceImpl ==>> create ==>> param ==>> [{}]",resources);
MemberDTO memberDTO = this.checkMember(resources);
MemberAddress _memberAddress = MemberAddressBuilder.build(resources, memberDTO.getId(), memberDTO.getCode());
MemberAddress memberAddress = this.memberAddressRepository.save(_memberAddress);
log.info("MemberAddressServiceImpl ==>> create ==>> result ==>> [{}]",resources);
MemberAddressDTO memberAddressDTO = new MemberAddressDTO();
BeanUtils.copyProperties(memberAddress, memberAddressDTO);
return memberAddressDTO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(MemberAddress resources) {
String memberCode = resources.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
Integer sequence = resources.getSequence();
Assert.notNull(sequence,"sequence can't be null!");
Optional<MemberAddress> memberAddressOptional = MemberAddressRepository.findByMemberIdAndSequence(memberId,sequence);
if (memberAddressOptional.isPresent()) {
MemberAddress memberAddress = memberAddressOptional.get();
ValidationUtil.isNull(memberAddress.getId(),"MemberAddress","id",resources.getId());
resources.setId(memberAddress.getId());
memberAddress.copy(resources);
MemberAddressRepository.save(memberAddress);
}
public MemberAddressDTO update(MemberAddress resources) {
log.info("MemberAddressServiceImpl ==>> update ==>> param ==>> [{}]",resources);
Assert.notNull(resources.getId(),"id can't be null");
try {
this.redisUtils.doLock("MemberAddress::update::code" + resources.getId());
MemberDTO memberDTO = this.checkMember(resources);
resources.setMemberCode(memberDTO.getCode());
MemberAddress _memberAddress = this.memberAddressRepository.findById(resources.getId()).orElseGet(MemberAddress::new);
ValidationUtil.isNull( _memberAddress.getId(),"MemberAddress","id",resources.getId());
_memberAddress.copy(resources);
MemberAddress memberAddress = this.memberAddressRepository.save(_memberAddress);
MemberAddressDTO memberAddressDTO = new MemberAddressDTO();
BeanUtils.copyProperties(memberAddress, memberAddressDTO);
return memberAddressDTO;
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
this.redisUtils.doUnLock("MemberAddress::update::code" + resources.getId());
}
}
......@@ -93,9 +91,30 @@ public class MemberAddressServiceImpl implements MemberAddressService {
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
MemberAddress MemberAddress = MemberAddressRepository.findById(id).orElseThrow(
MemberAddress MemberAddress = this.memberAddressRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", MemberAddress.class, id), 1));
MemberAddressRepository.delete(MemberAddress);
this.memberAddressRepository.delete(MemberAddress);
}
/**
* 检查会员
* @param memberAddress
* @return
*/
private MemberDTO checkMember(MemberAddress memberAddress){
Long memberId = memberAddress.getMemberId();
String memberCode = memberAddress.getMemberCode();
return this.checkMember(memberId,memberCode);
}
/**
* 检查会员
* @param memberId 会员id
* @param memberCode 会员code
* @return
*/
private MemberDTO checkMember(Long memberId, String memberCode) {
return this.memberService.checkMember(memberId, memberCode);
}
......
package com.topdraw.business.module.member.domain;
import com.topdraw.util.IdWorker;
import org.apache.commons.lang3.StringUtils;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Objects;
/**
* @author XiangHan
* @date 2021-10-22
*/
public class MemberBuilder {
private static final Long DEFAULT_VALUE = 0L;
private static final Integer DEFAULT_VALUE_1 = 1;
private static final Integer DEFAULT_VALUE_ = -1;
public static Member build(Member member){
Member _member = checkMemberData(member);
return _member;
}
private static Member checkMemberData(Member member) {
String code = member.getCode();
member.setCode(StringUtils.isEmpty(code)?String.valueOf(IdWorker.generator()):code);
Integer gender = member.getGender();
member.setGender(Objects.nonNull(gender) ? gender : DEFAULT_VALUE_);
Integer type = member.getType();
member.setType(Objects.nonNull(type) ? type:DEFAULT_VALUE_);
Integer status = member.getStatus();
member.setStatus(Objects.nonNull(status) ? status:DEFAULT_VALUE_1);
Integer vip = member.getVip();
member.setVip(Objects.nonNull(vip) ? vip:0);
Integer level = member.getLevel();
member.setLevel(Objects.nonNull(level) ? level:DEFAULT_VALUE_1);
member.setExp(DEFAULT_VALUE);
member.setPoints(DEFAULT_VALUE);
member.setDuePoints(DEFAULT_VALUE);
member.setCouponAmount(DEFAULT_VALUE);
member.setDueCouponAmount(DEFAULT_VALUE);
member.setBlackStatus(DEFAULT_VALUE);
member.setBirthday(StringUtils.isBlank(member.getBirthday())?"1900-01-01":member.getBirthday());
String nickname = member.getNickname();
if (StringUtils.isNotEmpty(nickname)) {
String base64Nickname = new String(Base64.getEncoder().encode(nickname.getBytes(StandardCharsets.UTF_8)));
member.setNickname(base64Nickname);
}
return member;
}
public static Member build(Integer type, String avatarUrl, String nickname, int vip){
// todo 原型模式
Member member = new Member();
member.setType(type);
member.setAvatarUrl(avatarUrl);
member.setNickname(nickname);
member.setVip(vip);
Member _member = checkMemberData(member);
return _member;
}
}
......@@ -15,33 +15,12 @@ import java.util.Map;
public interface MemberLevelService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(MemberLevelQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberLevelDTO>
*/
List<MemberLevelDTO> queryAll(MemberLevelQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return MemberLevelDTO
*/
MemberLevelDTO findById(Long id);
void create(MemberLevel resources);
void update(MemberLevel resources);
void delete(Long id);
/**
* Code校验
* @param code
......@@ -49,5 +28,12 @@ public interface MemberLevelService {
*/
MemberLevelDTO getByCode(String code);
/**
* 通过等级和状态检索
* @param i
* @param status
* @return
*/
List<MemberLevelDTO> findLevelAndStatus(Integer i, Integer status);
}
......
......@@ -4,23 +4,15 @@ import com.topdraw.business.module.member.level.domain.MemberLevel;
import com.topdraw.business.module.member.level.repository.MemberLevelRepository;
import com.topdraw.business.module.member.level.service.MemberLevelService;
import com.topdraw.business.module.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.module.member.level.service.dto.MemberLevelQueryCriteria;
import com.topdraw.business.module.member.level.service.mapper.MemberLevelMapper;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
/**
* @author XiangHan
......@@ -31,62 +23,27 @@ import java.util.Map;
public class MemberLevelServiceImpl implements MemberLevelService {
@Autowired
private MemberLevelRepository MemberLevelRepository;
private MemberLevelRepository memberLevelRepository;
@Autowired
private MemberLevelMapper MemberLevelMapper;
@Override
public Map<String, Object> queryAll(MemberLevelQueryCriteria criteria, Pageable pageable) {
Page<MemberLevel> page = MemberLevelRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(MemberLevelMapper::toDto));
}
@Override
public List<MemberLevelDTO> queryAll(MemberLevelQueryCriteria criteria) {
return MemberLevelMapper.toDto(MemberLevelRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
private MemberLevelMapper memberLevelMapper;
@Override
public MemberLevelDTO findById(Long id) {
MemberLevel MemberLevel = MemberLevelRepository.findById(id).orElseGet(MemberLevel::new);
MemberLevel MemberLevel = this.memberLevelRepository.findById(id).orElseGet(MemberLevel::new);
ValidationUtil.isNull(MemberLevel.getId(),"MemberLevel","id",id);
return MemberLevelMapper.toDto(MemberLevel);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(MemberLevel resources) {
MemberLevelRepository.save(resources);
return this.memberLevelMapper.toDto(MemberLevel);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(MemberLevel resources) {
MemberLevel MemberLevel = MemberLevelRepository.findById(resources.getId()).orElseGet(MemberLevel::new);
ValidationUtil.isNull( MemberLevel.getId(),"MemberLevel","id",resources.getId());
MemberLevel.copy(resources);
MemberLevelRepository.save(MemberLevel);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
MemberLevel MemberLevel = MemberLevelRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", MemberLevel.class, id), 1));
MemberLevelRepository.delete(MemberLevel);
}
@Override
public MemberLevelDTO getByCode(String code) {
return StringUtils.isNotEmpty(code) ? MemberLevelMapper.toDto(MemberLevelRepository.findFirstByCode(code).orElseGet(MemberLevel::new))
return StringUtils.isNotEmpty(code) ? this.memberLevelMapper.toDto(this.memberLevelRepository.findFirstByCode(code).orElseGet(MemberLevel::new))
: new MemberLevelDTO();
}
@Override
public List<MemberLevelDTO> findLevelAndStatus(Integer level, Integer status) {
return MemberLevelMapper.toDto(MemberLevelRepository.findByLevelAndStatus(level,status));
return this.memberLevelMapper.toDto(this.memberLevelRepository.findByLevelAndStatus(level,status));
}
}
......
......@@ -23,6 +23,9 @@ import java.sql.Timestamp;
@Table(name="uc_member_profile")
public class MemberProfile implements Serializable {
@Transient
private String avatarUrl;
// 主键
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
......@@ -50,7 +53,7 @@ public class MemberProfile implements Serializable {
// 生日
@Column(name = "birthday", nullable = false)
private Timestamp birthday;
private String birthday;
// 星座
@Column(name = "constellation")
......
package com.topdraw.business.module.member.profile.domain;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.exception.GlobeExceptionMsg;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;
public class MemberProfileBuilder {
public static MemberProfile build(Member member){
MemberProfile memberProfile = build(member.getId(),member.getCode(),member.getNickname(),member.getGender(),"","","","","","",
"","","",member.getBirthday());
return memberProfile;
}
public static MemberProfile build(Long memberId){
MemberProfile memberProfile = build(memberId,"","",-1,"","","","","","",
"","","","");
return memberProfile;
}
public static MemberProfile build(Long memberId , String memberCode, String realname , Integer gender, String birthday){
MemberProfile memberProfile = build(memberId,memberCode,realname,gender,"","","","","","",
"","","",birthday);
return memberProfile;
}
public static MemberProfile build(Long memberId, String memberCode, String realName, Integer sex,
String country, String district, String city, String idCard, String province,
String email, String description, String phone, String constellation,
String birthday) {
Assert.notNull(memberId, GlobeExceptionMsg.MEMBER_ID_IS_NULL);
MemberProfile memberProfile = new MemberProfile();
memberProfile.setMemberId(memberId);
memberProfile.setMemberCode(memberCode);
memberProfile.setRealname(stringIsNull(realName));
memberProfile.setGender(sex == null ? 0 : sex);
memberProfile.setCountry(StringUtils.isBlank(country)?"中国":birthday);
memberProfile.setDistrict(stringIsNull(district));
memberProfile.setCity(stringIsNull(city));
memberProfile.setIdCard(StringUtils.isBlank(idCard)?"000000000000000000":idCard);
memberProfile.setProvince(stringIsNull(province));
memberProfile.setEmail(stringIsNull(email));
memberProfile.setDescription(stringIsNull(description));
memberProfile.setPhone(stringIsNull(phone));
memberProfile.setConstellation(stringIsNull(constellation));
memberProfile.setBirthday(StringUtils.isBlank(birthday)?"1900-01-01":birthday);
return memberProfile;
}
private static String stringIsNull(String s){
return StringUtils.isBlank(s)?"":s;
}
public static MemberProfile build(MemberProfile resources) {
if (resources.getMemberId() == null)
throw new NullPointerException("memberId is null");
MemberProfile memberProfile = new MemberProfile();
memberProfile.setId(resources.getId());
memberProfile.setMemberId(resources.getMemberId());
memberProfile.setRealname(stringIsNull(resources.getRealname()));
memberProfile.setGender(resources.getGender() == null ? -1 : resources.getGender());
memberProfile.setCountry(stringIsNull(resources.getCountry()));
memberProfile.setDistrict(stringIsNull(resources.getDistrict()));
memberProfile.setCity(stringIsNull(resources.getCity()));
memberProfile.setIdCard(StringUtils.isBlank(resources.getIdCard())?"000000000000000000":resources.getIdCard());
memberProfile.setProvince(stringIsNull(resources.getProvince()));
memberProfile.setEmail(stringIsNull(resources.getEmail()));
memberProfile.setDescription(stringIsNull(resources.getDescription()));
memberProfile.setPhone(stringIsNull(resources.getPhone()));
memberProfile.setConstellation(stringIsNull(resources.getConstellation()));
memberProfile.setBirthday(stringIsNull(resources.getBirthday()));
return memberProfile;
}
}
......@@ -12,5 +12,7 @@ import java.util.Optional;
*/
public interface MemberProfileRepository extends JpaRepository<MemberProfile, Long>, JpaSpecificationExecutor<MemberProfile> {
MemberProfile findByMemberId(Long memberId);
Optional<MemberProfile> findByMemberId(Long memberId);
Optional<MemberProfile> findFirstByMemberId(Long memberId);
}
......
package com.topdraw.business.module.member.profile.service;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
import com.topdraw.business.module.member.service.dto.MemberDTO;
/**
* @author XiangHan
......@@ -15,31 +12,70 @@ import java.util.Map;
public interface MemberProfileService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
* 根据ID查询
* @param id ID
* @return MemberProfileDTO
*/
Map<String,Object> queryAll(MemberProfileQueryCriteria criteria, Pageable pageable);
MemberProfileDTO findById(Long id);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberProfileDTO>
* 保存
* @param resources 会员基本信息
* @return
*/
List<MemberProfileDTO> queryAll(MemberProfileQueryCriteria criteria);
MemberProfile create(MemberProfile resources);
/**
* 根据ID查询
* @param id ID
* @return MemberProfileDTO
* 默认属性
* @param resources
* @return
*/
MemberProfileDTO findById(Long id);
MemberProfile createDefault(MemberProfile resources);
MemberProfile create(MemberProfile resources);
/**
* 通过会员创建默认属性
* @param resources
* @return
*/
MemberProfile createDefault(Member resources);
void update(MemberProfile resources);
/**
* 通过会员id创建默认属性
* @param resources
* @return
*/
MemberProfile createDefaultByMemberId(Long resources);
/**
* 修改
* @param resources
*/
MemberProfileDTO update(MemberProfile resources);
/**
* 删除
* @param id
*/
void delete(Long id);
/**
* 通过会员id查询
* @param memberId
* @return
*/
MemberProfileDTO findByMemberId(Long memberId);
/**
* 通过会员code查询
* @param memberCode
* @return
*/
MemberProfileDTO findByMemberCode(String memberCode);
/**
* 修改会员属性并同步会员信息
* @param resources
*/
MemberProfileDTO updateMemberProfileAndMember(MemberProfile resources, MemberDTO memberDTO);
}
......
......@@ -13,6 +13,15 @@ import java.sql.Timestamp;
@Data
public class MemberProfileDTO implements Serializable {
// 超时时间
private Long vipExpireTime;
// vip
private Integer vip;
// 头像
private String avatarUrl;
// 主键
private Long id;
......@@ -29,7 +38,7 @@ public class MemberProfileDTO implements Serializable {
private Integer gender;
// 生日
private Timestamp birthday;
private String birthday;
// 星座
private String constellation;
......
package com.topdraw.business.module.member.profile.service.dto;
import lombok.Data;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Data
public class MemberProfileQueryCriteria{
}
package com.topdraw.business.module.member.profile.service.impl;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.domain.MemberProfileBuilder;
import com.topdraw.business.module.member.profile.repository.MemberProfileRepository;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileQueryCriteria;
import com.topdraw.business.module.member.profile.service.mapper.MemberProfileMapper;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Base64Util;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
@Slf4j
public class MemberProfileServiceImpl implements MemberProfileService {
@Autowired
private MemberProfileRepository MemberProfileRepository;
private MemberService memberService;
@Autowired
private MemberProfileMapper MemberProfileMapper;
private MemberProfileMapper memberProfileMapper;
@Autowired
private MemberService memberService;
private MemberProfileRepository memberProfileRepository;
@Override
public Map<String, Object> queryAll(MemberProfileQueryCriteria criteria, Pageable pageable) {
Page<MemberProfile> page = MemberProfileRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(MemberProfileMapper::toDto));
public MemberProfileDTO findById(Long id) {
MemberProfile MemberProfile = this.memberProfileRepository.findById(id).orElseGet(MemberProfile::new);
ValidationUtil.isNull(MemberProfile.getId(),"MemberProfile","id",id);
return this.memberProfileMapper.toDto(MemberProfile);
}
@Override
public List<MemberProfileDTO> queryAll(MemberProfileQueryCriteria criteria) {
return MemberProfileMapper.toDto(MemberProfileRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
public MemberProfileDTO findByMemberId(Long memberId) {
log.info("MemberProfileDTO ==>> findByMemberId ==>> resources ===>> [{}]",memberId);
MemberProfile memberProfile = this.memberProfileRepository.findByMemberId(memberId).orElseGet(MemberProfile::new);
ValidationUtil.isNull(memberProfile.getId(),"MemberProfile","memberId",memberId);
return this.memberProfileMapper.toDto(memberProfile);
}
@Override
public MemberProfileDTO findById(Long id) {
MemberProfile MemberProfile = MemberProfileRepository.findById(id).orElseGet(MemberProfile::new);
ValidationUtil.isNull(MemberProfile.getId(),"MemberProfile","id",id);
return MemberProfileMapper.toDto(MemberProfile);
public MemberProfileDTO findByMemberCode(String memberCode) {
log.info("MemberProfileDTO ==>> findByMemberCode ==>> resources ===>> [{}]",memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
log.info("MemberProfileDTO ==>> findByMemberCode ==>> result ===>> [{}]",memberDTO);
return this.findByMemberId(memberDTO.getId());
}
@Override
@Transactional(rollbackFor = Exception.class)
public MemberProfile create(MemberProfile resources) {
String memberCode = resources.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
String code = memberDTO.getCode();
if (StringUtils.isNotEmpty(code)) {
resources.setMemberCode(code);
resources.setMemberId(memberDTO.getId());
resources.setId(null);
MemberProfileRepository.save(resources);
}
}
log.info("MemberProfileServiceImpl ==>> update ==>> resources ===>> [{}]",resources);
// 检查会员
this.checkMember(resources);
this.memberProfileRepository.save(resources);
return resources;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(MemberProfile resources) {
public MemberProfile createDefault(MemberProfile resources) {
MemberProfile memberProfile = MemberProfileBuilder.build(resources);
return this.create(memberProfile);
}
@Override
@Transactional(rollbackFor = Exception.class)
public MemberProfile createDefault(Member resources) {
MemberProfile memberProfile = MemberProfileBuilder.build(resources);
return this.create(memberProfile);
}
@Override
public MemberProfile createDefaultByMemberId(Long resources) {
MemberProfile memberProfile = MemberProfileBuilder.build(resources);
return this.create(memberProfile);
}
private MemberDTO checkMember(MemberProfile resources){
Long memberId = resources.getMemberId();
String memberCode = resources.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
MemberProfile memberProfile = MemberProfileRepository.findByMemberId(memberId);
if (Objects.nonNull(memberProfile)) {
ValidationUtil.isNull( memberProfile.getId(),"MemberProfile","id",memberProfile.getId());
resources.setId(memberProfile.getId());
} else {
resources.setId(null);
return this.memberService.checkMember(memberId,memberCode);
}
memberProfile.copy(resources);
MemberProfileRepository.save(memberProfile);
@Override
@Transactional(rollbackFor = Exception.class)
public MemberProfileDTO update(MemberProfile resources) {
log.info("MemberProfileServiceImpl ==>> update ==>> resources ===>> [{}]",resources);
// 检查会员是否存在
this.checkMember(resources);
// 真实姓名(加密)
String realName = resources.getRealname();
if (StringUtils.isNotBlank(realName)) {
resources.setRealname(Base64Util.encode(realName));
}
MemberProfile memberProfile = new MemberProfile();
BeanUtils.copyProperties(resources,memberProfile);
MemberProfile _memberProfile = this.memberProfileRepository.save(memberProfile);
MemberProfileDTO memberProfileDTO = new MemberProfileDTO();
BeanUtils.copyProperties(_memberProfile,memberProfileDTO);
return memberProfileDTO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
MemberProfile MemberProfile = MemberProfileRepository.findById(id).orElseThrow(
MemberProfile MemberProfile = this.memberProfileRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", MemberProfile.class, id), 1));
MemberProfileRepository.delete(MemberProfile);
this.memberProfileRepository.delete(MemberProfile);
}
@Override
@Transactional(rollbackFor = Exception.class)
public MemberProfileDTO updateMemberProfileAndMember(MemberProfile resources, MemberDTO memberDTO) {
log.info("MemberProfileServiceImpl ==>> updateMemberProfileAndMember ==>> resources ===>> [{}]",resources);
MemberProfileDTO memberProfileDTO = this.update(resources);
// 同步会员信息
this.synchronizedMemberData(resources, memberDTO);
return memberProfileDTO;
}
private void synchronizedMemberData(MemberProfile resources, MemberDTO memberDTO) {
log.info("updateMemberProfileAndMember ==>> resources ==>> [{}]",resources);
memberDTO.setId(resources.getMemberId());
memberDTO.setCode(resources.getMemberCode());
memberDTO.setNickname(resources.getRealname());
memberDTO.setGender(resources.getGender());
memberDTO.setBirthday(resources.getBirthday());
memberDTO.setAvatarUrl(resources.getAvatarUrl());
Member member = new Member();
BeanUtils.copyProperties(memberDTO,member);
this.memberService.update(member);
}
}
......
......@@ -11,6 +11,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDate;
/**
* @author XiangHan
......@@ -56,6 +57,14 @@ public class MemberRelatedInfo implements Serializable {
@Column(name = "sex")
private Integer sex;
/** 生日 */
@Column(name = "birthday")
private LocalDate birthday;
/** 头像地址 */
@Column(name = "avatar_url")
private String avatarUrl;
// 创建时间
@CreatedDate
@Column(name = "create_time")
......
package com.topdraw.business.module.member.relatedinfo.domain;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.exception.GlobeExceptionMsg;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;
import java.time.LocalDate;
import java.util.Objects;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/11 13:56
* @version: :
* @modified By:
* @since : modified in 2022/3/11 13:56
*/
public class MemberRelatedInfoBuilder {
private static final Integer DEFAULT_VALUE_ = -1;
private static final Integer DEFAULT_VALUE_0 = 0;
public static MemberRelatedInfo build(MemberRelatedInfo memberRelatedInfo){
return build(memberRelatedInfo.getMemberId(),memberRelatedInfo.getMemberCode(),memberRelatedInfo.getId(),memberRelatedInfo.getName(),memberRelatedInfo.getSex(),
memberRelatedInfo.getCellphone(),memberRelatedInfo.getIdCard(),memberRelatedInfo.getBirthday(),memberRelatedInfo.getAvatarUrl(),memberRelatedInfo.getType());
}
public static MemberRelatedInfo build(Member member , MemberRelatedInfo memberRelatedInfo){
return build(member.getId(),member.getCode(),memberRelatedInfo.getId(),memberRelatedInfo.getName(),memberRelatedInfo.getSex(),
memberRelatedInfo.getCellphone(),memberRelatedInfo.getIdCard(),memberRelatedInfo.getBirthday(),memberRelatedInfo.getAvatarUrl(),memberRelatedInfo.getType());
}
public static MemberRelatedInfo build(Long memberId , String memberCode , Long id , String name , Integer sex ,
String cellphone , String idCard, LocalDate birthday , String avatarUrl , Integer type){
Assert.notNull(memberId, GlobeExceptionMsg.MEMBER_ID_IS_NULL);
MemberRelatedInfo memberRelatedInfo = new MemberRelatedInfo();
memberRelatedInfo.setMemberId(memberId);
memberRelatedInfo.setMemberCode(memberCode);
memberRelatedInfo.setId(id);
memberRelatedInfo.setName(stringIsNull(name));
memberRelatedInfo.setSex(Objects.isNull(sex)?DEFAULT_VALUE_:sex);
memberRelatedInfo.setCellphone(stringIsNull(cellphone));
memberRelatedInfo.setIdCard(StringUtils.isBlank(idCard)?"000000000000000000":idCard);
memberRelatedInfo.setBirthday(Objects.isNull(birthday)? LocalDate.of(1990,01,01):birthday);
memberRelatedInfo.setAvatarUrl(stringIsNull(avatarUrl));
memberRelatedInfo.setType(Objects.isNull(type)?DEFAULT_VALUE_0:type);
return memberRelatedInfo;
}
private static String stringIsNull(String s){
return StringUtils.isBlank(s)?"":s;
}
}
......@@ -12,5 +12,10 @@ import java.util.List;
*/
public interface MemberRelatedInfoRepository extends JpaRepository<MemberRelatedInfo, Long>, JpaSpecificationExecutor<MemberRelatedInfo> {
List<MemberRelatedInfo> findByMemberIdAndIdCard(Long memberDTOId,String idCard);
MemberRelatedInfo findByIdCard(String idCard);
MemberRelatedInfo findByMemberIdAndIdCard(Long memberId , String idCard);
MemberRelatedInfo findByIdOrIdCard(Long id, String idCard);
}
......
package com.topdraw.business.module.member.relatedinfo.service;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
......@@ -15,31 +16,73 @@ import java.util.Map;
public interface MemberRelatedInfoService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
* 根据ID查询
* @param id ID
* @return MemberRelatedInfoDTO
*/
Map<String,Object> queryAll(MemberRelatedInfoQueryCriteria criteria, Pageable pageable);
MemberRelatedInfoDTO findById(Long id);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberRelatedInfoDTO>
* 新增
* @param resources
*/
List<MemberRelatedInfoDTO> queryAll(MemberRelatedInfoQueryCriteria criteria);
MemberRelatedInfoDTO create(MemberRelatedInfo resources);
/**
* 根据ID查询
* @param id ID
* @return MemberRelatedInfoDTO
* 修改
* @param resources
*/
MemberRelatedInfoDTO findById(Long id);
MemberRelatedInfoDTO update(MemberRelatedInfo resources);
void create(MemberRelatedInfo resources);
/**
* 删除
* @param id
*/
void delete(Long id);
void update(MemberRelatedInfo resources);
/**
* 通过身份证查询
* @param resources
* @return
*/
MemberRelatedInfoDTO findByIdCard(MemberRelatedInfo resources);
void delete(Long id);
/**
* 通过身份证查询
* @param idCard 身份证
* @return
*/
MemberRelatedInfoDTO findByIdCard(String idCard);
/**
*
* @param memberId
* @param idCard
* @return
*/
MemberRelatedInfoDTO findByMemberIdAndIdCard(Long memberId , String idCard);
/**
*
* @param memberCode
* @param idCard
* @return
*/
MemberRelatedInfoDTO findByMemberCodeAndIdCard(String memberCode , String idCard);
/**
*
* @param resources
* @return
*/
MemberRelatedInfoDTO findByMemberIdAndIdCard(MemberRelatedInfo resources);
/**
*
* @param member
* @param resources
* @return
*/
MemberRelatedInfoDTO findByMemberIdAndIdCard(Member member , MemberRelatedInfo resources);
}
......
......@@ -4,6 +4,7 @@ import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDate;
/**
......@@ -34,6 +35,12 @@ public class MemberRelatedInfoDTO implements Serializable {
// 性别 0:女;1:男;-1:未知
private Integer sex;
// 生日
private LocalDate birthday;
// 头像地址
private String avatarUrl;
// 创建时间
private Timestamp createTime;
......
package com.topdraw.business.module.member.relatedinfo.service.impl;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfoBuilder;
import com.topdraw.business.module.member.relatedinfo.repository.MemberRelatedInfoRepository;
import com.topdraw.business.module.member.relatedinfo.service.MemberRelatedInfoService;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.business.module.member.relatedinfo.service.mapper.MemberRelatedInfoMapper;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.exception.BadRequestException;
import com.topdraw.exception.GlobeExceptionMsg;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Base64Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
......@@ -31,71 +31,164 @@ import java.util.Objects;
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
@Slf4j
public class MemberRelatedInfoServiceImpl implements MemberRelatedInfoService {
@Autowired
private MemberRelatedInfoRepository MemberRelatedInfoRepository;
private MemberService memberService;
@Autowired
private MemberRelatedInfoMapper MemberRelatedInfoMapper;
private MemberRelatedInfoMapper memberRelatedInfoMapper;
@Autowired
private MemberService memberService;
private MemberRelatedInfoRepository memberRelatedInfoRepository;
private static final String DEFAULT_IDCARD = "000000000000000000";
@Override
public Map<String, Object> queryAll(MemberRelatedInfoQueryCriteria criteria, Pageable pageable) {
Page<MemberRelatedInfo> page = MemberRelatedInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(MemberRelatedInfoMapper::toDto));
public MemberRelatedInfoDTO findById(Long id) {
log.info("MemberRelatedInfoServiceImpl ==>> findById ==>> param ==>> [{}]",id);
MemberRelatedInfo memberRelatedInfo = this.memberRelatedInfoRepository.findById(id).orElseGet(MemberRelatedInfo::new);
ValidationUtil.isNull(memberRelatedInfo.getId(),"MemberRelatedInfo","id",id);
return this.memberRelatedInfoMapper.toDto(memberRelatedInfo);
}
@Override
public List<MemberRelatedInfoDTO> queryAll(MemberRelatedInfoQueryCriteria criteria) {
return MemberRelatedInfoMapper.toDto(MemberRelatedInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
@Transactional(rollbackFor = Exception.class)
public MemberRelatedInfoDTO create(MemberRelatedInfo resources) {
log.info("MemberRelatedInfoServiceImpl ==>> create ==>> param ==>> [{}]",resources);
String idCard = resources.getIdCard();
Long memberId = resources.getMemberId();
if (Objects.nonNull(memberId) && StringUtils.isNotBlank(idCard) && !idCard.equalsIgnoreCase(DEFAULT_IDCARD) ) {
MemberRelatedInfoDTO memberRelatedInfo = this.findByMemberIdAndIdCard(resources);
if (Objects.nonNull(memberRelatedInfo))
// 数据已存在
throw new BadRequestException(GlobeExceptionMsg.ENTITY_ALREADY_EXISTS);
}
@Override
public MemberRelatedInfoDTO findById(Long id) {
MemberRelatedInfo MemberRelatedInfo = MemberRelatedInfoRepository.findById(id).orElseGet(MemberRelatedInfo::new);
ValidationUtil.isNull(MemberRelatedInfo.getId(),"MemberRelatedInfo","id",id);
return MemberRelatedInfoMapper.toDto(MemberRelatedInfo);
this.checkMemberAndEncodeRealname(resources);
MemberRelatedInfo memberRelatedInfo = MemberRelatedInfoBuilder.build(resources);
this.memberRelatedInfoRepository.save(memberRelatedInfo);
log.info("MemberRelatedInfoServiceImpl ==>> create ==>> result ==>> [{}]",memberRelatedInfo);
return this.memberRelatedInfoMapper.toDto(memberRelatedInfo);
}
/**
* 检查会员是否存在,加密真实姓名
* @param resources
*/
private void checkMemberAndEncodeRealname(MemberRelatedInfo resources) {
// 检查会员是否存在
this.checkMember(resources);
// 加密真实姓名
this.encodeRealname(resources);
}
/**
* 加密真实姓名
* @param resources
* @return
*/
private void encodeRealname(MemberRelatedInfo resources){
String name = resources.getName();
if (StringUtils.isNotBlank(name)) {
String nickNameEncode = Base64Util.encode(name);
if (!nickNameEncode.equalsIgnoreCase(name))
resources.setName(nickNameEncode);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(MemberRelatedInfo resources) {
MemberRelatedInfoRepository.save(resources);
public MemberRelatedInfoDTO update(MemberRelatedInfo resources) {
log.info("MemberRelatedInfoServiceImpl ==>> update ==>> param ==>> [{}]",resources);
this.checkMemberAndEncodeRealname(resources);
MemberRelatedInfo memberRelatedInfo = this.memberRelatedInfoRepository.findById(resources.getId()).orElseGet(MemberRelatedInfo::new);
ValidationUtil.isNull(memberRelatedInfo.getId(), "MemberRelatedInfo", "id", resources.getId());
memberRelatedInfo.copy(resources);
this.memberRelatedInfoRepository.save(memberRelatedInfo);
log.info("MemberRelatedInfoServiceImpl ==>> update ==>> param ==>> [{}]", resources);
return this.memberRelatedInfoMapper.toDto(memberRelatedInfo);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(MemberRelatedInfo resources) {
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
MemberRelatedInfo MemberRelatedInfo = this.memberRelatedInfoRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", MemberRelatedInfo.class, id), 1));
this.memberRelatedInfoRepository.delete(MemberRelatedInfo);
}
String memberCode = resources.getMemberCode();
Assert.notNull(memberCode,"memberCode can't be null!");
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberDTOId = memberDTO.getId();
@Override
public MemberRelatedInfoDTO findByIdCard(MemberRelatedInfo resources){
log.info("MemberRelatedInfoServiceImpl ==>> findByIdCard ==>> param ==>> [{}]",resources);
String idCard = resources.getIdCard();
List<MemberRelatedInfo> memberRelatedInfoDTOS = MemberRelatedInfoRepository.findByMemberIdAndIdCard(memberDTOId,idCard);
if (!CollectionUtils.isEmpty(memberRelatedInfoDTOS)) {
for (MemberRelatedInfo memberRelatedInfoDTO : memberRelatedInfoDTOS) {
ValidationUtil.isNull( memberRelatedInfoDTO.getId(),"MemberRelatedInfo","id",memberRelatedInfoDTO.getId());
resources.setId(memberRelatedInfoDTO.getId());
resources.setMemberId(memberDTOId);
memberRelatedInfoDTO.copy(resources);
MemberRelatedInfoRepository.save(memberRelatedInfoDTO);
Assert.notNull(idCard,"idCard can't be null");
if (!idCard.equalsIgnoreCase(DEFAULT_IDCARD)) {
MemberRelatedInfoDTO memberRelatedInfo = this.findByIdCard(idCard);
ValidationUtil.isNull(memberRelatedInfo.getId(),"MemberRelatedInfo","id",resources.getId());
log.info("MemberRelatedInfoServiceImpl ==>> findByIdCard ==>> result ==>> [{}]",memberRelatedInfo);
return memberRelatedInfo;
}
return null;
}
@Override
public MemberRelatedInfoDTO findByIdCard(String idCard) {
log.info("MemberRelatedInfoServiceImpl ==>> findByIdCard ==>> param ==>> [{}]",idCard);
MemberRelatedInfo memberRelatedInfo = this.memberRelatedInfoRepository.findByIdCard(idCard);
log.info("MemberRelatedInfoServiceImpl ==>> findByIdCard ==>> result ==>> [{}]",memberRelatedInfo);
return this.memberRelatedInfoMapper.toDto(memberRelatedInfo);
}
@Override
public MemberRelatedInfoDTO findByMemberCodeAndIdCard(String memberCode, String idCard) {
Assert.notNull(memberCode,"memberCode can't be null");
Assert.notNull(idCard,"idCard can't be null");
MemberDTO memberDTO = this.checkMember(null, memberCode);
return this.findByMemberIdAndIdCard(memberDTO.getId(),idCard);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
MemberRelatedInfo MemberRelatedInfo = MemberRelatedInfoRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", MemberRelatedInfo.class, id), 1));
MemberRelatedInfoRepository.delete(MemberRelatedInfo);
public MemberRelatedInfoDTO findByMemberIdAndIdCard(Long memberId, String idCard) {
log.info("MemberRelatedInfoServiceImpl ==>> findByMemberIdAndIdCard ==>> param ==>> [{}]",memberId+","+idCard);
MemberRelatedInfo memberRelatedInfo = this.memberRelatedInfoRepository.findByMemberIdAndIdCard(memberId, idCard);
log.info("MemberRelatedInfoServiceImpl ==>> findByMemberIdAndIdCard ==>> result ==>> [{}]",memberRelatedInfo);
return this.memberRelatedInfoMapper.toDto(memberRelatedInfo);
}
@Override
public MemberRelatedInfoDTO findByMemberIdAndIdCard(MemberRelatedInfo resources) {
Long memberId = resources.getMemberId();
String idCard = resources.getIdCard();
return this.findByMemberIdAndIdCard(memberId,idCard);
}
@Override
public MemberRelatedInfoDTO findByMemberIdAndIdCard(Member member, MemberRelatedInfo resources) {
Long memberId = member.getId();
String idCard = resources.getIdCard();
return this.findByMemberIdAndIdCard(memberId,idCard);
}
private MemberDTO checkMember(MemberRelatedInfo resources){
Long memberId = resources.getMemberId();
String code = resources.getMemberCode();
return this.memberService.checkMember(memberId, code);
}
private MemberDTO checkMember(Long memberId , String memberCode){
return this.memberService.checkMember(memberId, memberCode);
}
}
......
......@@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
/**
......@@ -16,8 +17,9 @@ public interface MemberRepository extends JpaRepository<Member, Long>, JpaSpecif
Optional<Member> findFirstByCode(String code);
Optional<Member> findByCode(String code);
List<Member> findByUserIptvId(Long id);
Optional<Member> findByIdOrCode(Long id,String code);
@Modifying
@Query(value = "update uc_member set `points` = ?2 , `due_points` = ?3 where id = ?1 ",nativeQuery = true)
......
......@@ -2,13 +2,8 @@ package com.topdraw.business.module.member.service;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import org.springframework.data.domain.Pageable;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* @author XiangHan
......@@ -17,45 +12,63 @@ import java.util.Map;
public interface MemberService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
* 根据ID查询
* @param id ID
* @return MemberDTO
*/
Map<String,Object> queryAll(MemberQueryCriteria criteria, Pageable pageable);
MemberDTO findById(Long id);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberDTO>
* 通过code查询会员
* @param code 会员编码
* @return MemberDTO
*/
List<MemberDTO> queryAll(MemberQueryCriteria criteria);
MemberDTO findByCode(String code);
/**
* 根据ID查询
* @param id ID
* @return MemberDTO
* 保存
* @param resources
* @return Long id
*/
MemberDTO findById(Long id);
Long create(Member resources);
MemberDTO create(Member resources);
void unbind(Member resources);
/**
* 创建并返回会员
* @param resources 会员
* @return Member
*/
MemberDTO createAndReturnMember(Member resources);
void update(Member resources);
/**
* 修改会员
* @param resources
*/
MemberDTO update(Member resources);
void delete(Long id);
/**
* 修改会员积分
* @param member 会员
*/
MemberDTO doUpdateMemberPoints(Member member);
/**
* Code校验
* @param code
* @return MemberDTO
* 查询绑定了大屏会员列表
* @param id 条件参数
* @return Map<String,Object>
*/
MemberDTO getByCode(String code);
List<MemberDTO> findByUserIptvId(Long id);
boolean createMemberByUserTv(UserTv resources);
/**
* 检查会员信息
* @param id 会员id
* @param memberCode 会员编码
*/
MemberDTO checkMember(Long id , String memberCode);
void doUpdateMemberPoints(Member member);
/**
* 检查会员信息
* @param member 会员
*/
MemberDTO checkMember(Member member);
Member createAndReturnMember(Member resources);
}
......
package com.topdraw.business.module.member.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Data
public class MemberQueryCriteria{
@Query(type = Query.Type.LEFT_LIKE)
private String code;
// 类型 1:大屏;2:小屏
@Query(type = Query.Type.EQUAL)
private Integer type;
// 状态 0:不可用;1:可用
@Query(type = Query.Type.EQUAL)
private Integer status;
// 昵称 base64
@Query(type = Query.Type.LEFT_LIKE)
private String nickname;
// 性别 0:女;1:男;-1:未知
@Query(type = Query.Type.EQUAL)
private Integer gender;
// 分组信息
@Query(type = Query.Type.EQUAL)
private String groups;
// 标签
@Query(type = Query.Type.IN)
private String tags;
// 是否会员 0:非会员;1:会员
@Query(type = Query.Type.EQUAL)
private Integer vip;
// 会员等级(对应level表的level字段,非id)
@Query(type = Query.Type.EQUAL)
private Integer level;
// iptv账号id
@Query(type = Query.Type.EQUAL)
private Long userIptvId;
// 绑定IPTV平台 0:未知;1:电信;2:移动;3:联通
@Query(type = Query.Type.IN)
private Integer bindIptvPlatformType;
}
package com.topdraw.business.module.member.service.impl;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.domain.MemberBuilder;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.domain.MemberProfileBuilder;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.repository.MemberRepository;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.module.member.service.mapper.MemberMapper;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.config.LocalConstants;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.exception.BadRequestException;
import com.topdraw.exception.GlobeExceptionMsg;
import com.topdraw.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
@Slf4j
public class MemberServiceImpl implements MemberService {
@Autowired
private MemberRepository memberRepository;
@Autowired
private MemberMapper memberMapper;
@Autowired
private com.topdraw.business.module.user.iptv.service.UserTvService UserTvService;
// @Autowired
// private RedissonClient redissonClient;
@Override
public Map<String, Object> queryAll(MemberQueryCriteria criteria, Pageable pageable) {
Page<Member> page = memberRepository.findAll((root, criteriaQuery, criteriaBuilder)
-> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(memberMapper::toDto));
}
private MemberRepository memberRepository;
@Autowired
private MemberProfileService memberProfileService;
@Override
public List<MemberDTO> queryAll(MemberQueryCriteria criteria) {
return memberMapper.toDto(memberRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
@Override
public MemberDTO findById(Long id) {
Member member = memberRepository.findById(id).orElseGet(Member::new);
Member member = this.memberRepository.findById(id).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(),"Member","id",id);
return memberMapper.toDto(member);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Long create(Member resources) {
Member member = this.checkMemberData(resources);
memberRepository.save(member);
return resources.getId();
}
return this.memberMapper.toDto(member);
private Member checkMemberData(Member member) {
Long defaultValue = 0L;
String code = member.getCode();
member.setCode(StringUtils.isEmpty(code)?String.valueOf(IdWorker.generator()):code);
Integer gender = member.getGender();
member.setGender(Objects.nonNull(gender) ? gender : 0);
Integer type = member.getType();
member.setType(Objects.nonNull(type) ? type:-1);
Integer status = member.getStatus();
member.setStatus(Objects.nonNull(status) ? status:1);
Integer vip = member.getVip();
member.setVip(Objects.nonNull(vip) ? vip:0);
Integer level = member.getLevel();
member.setLevel(Objects.nonNull(level) ? level:0);
member.setExp(defaultValue);
member.setPoints(defaultValue);
member.setDuePoints(defaultValue);
member.setCouponAmount(defaultValue);
member.setDueCouponAmount(defaultValue);
member.setBlackStatus(0L);
return member;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void unbind(Member resources) {
try {
String code = resources.getCode();
MemberDTO memberDTO = this.getByCode(code);
// Member member = memberRepository.findById(resources.getId()).orElseGet(Member::new);
ValidationUtil.isNull(memberDTO.getId(), "Member", "id", resources.getId());
Member member = new Member();
BeanUtils.copyProperties(memberDTO,member);
public MemberDTO findByCode(String code) {
Member member = this.memberRepository.findFirstByCode(code).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(),"Member","id",code);
return this.memberMapper.toDto(member);
member.setUserIptvId(null);
member.setBindIptvTime(null);
member.setBindIptvPlatformType(null);
this.save(member);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
private MemberDTO findByIdOrCode(Long id,String code) {
Member member = this.memberRepository.findByIdOrCode(id,code).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(),"Member","param",code);
return this.memberMapper.toDto(member);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Member resources) {
try {
Member member = memberRepository.findByCode(resources.getCode()).orElseGet(Member::new);
ValidationUtil.isNull( member.getId(),"Member","id",member.getId());
if (Objects.nonNull(member)) {
Long id = member.getId();
resources.setId(id);
String platformAccount = resources.getPlatformAccount();
if (StringUtils.isNotEmpty(platformAccount)) {
resources.setUserIptvId(null);
UserTvDTO userTvDTO = this.UserTvService.findByPlatformAccount(platformAccount);
if (Objects.nonNull(userTvDTO)) {
Long userIptvId = userTvDTO.getId();
resources.setUserIptvId(userIptvId);
resources.setBindIptvPlatformType(1);
resources.setBindIptvTime(LocalDateTime.now());
}
public List<MemberDTO> findByUserIptvId(Long id) {
} else {
resources.setUserIptvId(member.getUserIptvId());
resources.setBindIptvPlatformType(member.getBindIptvPlatformType());
resources.setBindIptvTime(member.getBindIptvTime());
}
List<Member> memberList = this.memberRepository.findByUserIptvId(id);
}
return this.memberMapper.toDto(memberList);
member.copy(resources);
log.info("memberService ==>> update ==>> [{}]",member);
memberRepository.save(member);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
// RLock rLock = this.redissonClient.getLock("Member::delete::code" + id);
try {
// RedissonUtil.lock(rLock);
Member member = memberRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", Member.class, id), 1));
memberRepository.delete(member);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
// RedissonUtil.unlock(rLock);
}
}
public MemberDTO checkMember(Long id, String memberCode) {
if(Objects.isNull(id) && StringUtils.isBlank(memberCode))
throw new BadRequestException(GlobeExceptionMsg.MEMBER_ID_AND_CODE_ARE_NULL);
return this.findByIdOrCode(id, memberCode);
}
@Override
public MemberDTO getByCode(String code) {
return StringUtils.isNotEmpty(code) ? memberMapper.toDto(memberRepository.findFirstByCode(code).orElseGet(Member::new))
: new MemberDTO();
public MemberDTO checkMember(Member member) {
String memberCode = member.getCode();
Long memberId = member.getId();
return this.checkMember(memberId,memberCode);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean createMemberByUserTv(UserTv resources) {
String platformAccount = resources.getPlatformAccount();
UserTvDTO userTvDTO = this.UserTvService.findByPlatformAccount(platformAccount);
if (Objects.isNull(userTvDTO)) {
Member member = new Member();
// 大屏
member.setType(LocalConstants.MEMBER_PLATFORM_TYPE_VIS);
Member member12 = this.checkMemberData(member);
Long memberId = this.create(member12);
public MemberDTO create(Member resources) {
Member member = MemberBuilder.build(resources);
Long memberId = this.save(member);
if (Objects.nonNull(memberId)) {
UserTv userTv = new UserTv();
BeanUtils.copyProperties(resources,userTv);
userTv.setPlatformAccount(platformAccount);
userTv.setMemberCode(member12.getCode());
Long userIptvId = UserTvService.create(userTv);
if (Objects.nonNull(userIptvId)) {
member.setId(memberId);
member.setUserIptvId(userIptvId);
member.setBindIptvTime(LocalDateTime.now());
this.bindIptvId(member);
}
MemberProfile memberProfile = MemberProfileBuilder.build(member);
// 保存会员属性
this.memberProfileService.create(memberProfile);
}
} else {
return false;
}
return this.memberMapper.toDto(member);
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void doUpdateMemberPoints(Member member) {
try {
Long id = member.getId();
Long points = member.getPoints();
Long duePoints = member.getDuePoints();
memberRepository.updateMemberPoints(id,points,duePoints);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
public MemberDTO createAndReturnMember(Member resources) {
MemberDTO memberDTO = this.create(MemberBuilder.build(resources));
return memberDTO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Member createAndReturnMember(Member resources) {
Member member = this.checkMemberData(resources);
memberRepository.save(member);
return resources;
public MemberDTO update(Member resources) {
log.info("MemberServiceImpl ==>> update ==>> resources ==>> [{}]" , resources);
MemberDTO memberDTO = this.findByCode(resources.getCode());
Member member = new Member();
BeanUtils.copyProperties(memberDTO,member);
member.copy(resources);
this.save(member);
return this.memberMapper.toDto(member);
}
private void save(Member member){
memberRepository.save(member);
@Transactional(propagation = Propagation.REQUIRES_NEW)
public Long save(Member member){
this.memberRepository.save(member);
return member.getId();
}
public void bindIptvId(Member resources) {
try {
Member member = memberRepository.findFirstByCode(resources.getCode()).orElseGet(Member::new);
if (member==null) {
@Override
@Transactional(rollbackFor = Exception.class)
public MemberDTO doUpdateMemberPoints(Member resources) {
Member member = this.memberRepository.findById(resources.getId()).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(), "Member", "id", resources.getId());
member.copy(resources);
}
this.save(member);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
return this.memberMapper.toDto(member);
}
}
......
package com.topdraw.business.module.member.viphistory.domain;
import com.topdraw.business.module.member.domain.Member;
import java.time.LocalDateTime;
import java.util.Objects;
public class MemberVipHistoryBuilder {
public static MemberVipHistory build(Member member , Integer beforeVip) {
Long id = member.getId();
Integer vip = member.getVip();
LocalDateTime vipExpireTime = member.getVipExpireTime();
MemberVipHistory memberVipHistory = new MemberVipHistory();
memberVipHistory.setMemberId(Objects.isNull(id)? null:id);
memberVipHistory.setVip(Objects.isNull(vip)? null:vip);
memberVipHistory.setBeforeVip(Objects.isNull(beforeVip)? null:beforeVip);
memberVipHistory.setVipExpireTime(Objects.isNull(vipExpireTime)? null:vipExpireTime);
return build(memberVipHistory);
}
public static MemberVipHistory build(Long memberId, Integer vip, Integer beforeVip, LocalDateTime vipExpireTime ) {
MemberVipHistory memberVipHistory = new MemberVipHistory();
memberVipHistory.setMemberId(Objects.isNull(memberId)? null:memberId);
memberVipHistory.setVip(Objects.isNull(vip)? null:vip);
memberVipHistory.setBeforeVip(Objects.isNull(beforeVip)? null:beforeVip);
memberVipHistory.setVipExpireTime(Objects.isNull(vipExpireTime)? null:vipExpireTime);
return build(memberVipHistory);
}
public static MemberVipHistory build(MemberVipHistory memberVipHistory) {
return build(memberVipHistory.getId(),
memberVipHistory.getMemberId(),
memberVipHistory.getVip(),
memberVipHistory.getBeforeVip(),
memberVipHistory.getVipExpireTime(),
memberVipHistory.getStatus());
}
public static MemberVipHistory build(Long id, Long memberId , Integer vip , Integer beforeVip , LocalDateTime vipExpireTime, Integer status){
MemberVipHistory memberVipHistory = new MemberVipHistory();
memberVipHistory.setId(Objects.isNull(id)? null:id);
memberVipHistory.setMemberId(Objects.isNull(memberId)? null:memberId) ;
memberVipHistory.setVip(Objects.isNull(vip)? null:vip);
memberVipHistory.setBeforeVip(Objects.isNull(beforeVip)? null:beforeVip);
memberVipHistory.setVipExpireTime(Objects.isNull(vipExpireTime)? null:vipExpireTime);
memberVipHistory.setStatus(Objects.isNull(status)? 1:status);
return memberVipHistory;
}
}
package com.topdraw.business.module.member.viphistory.service;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryDTO;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryQueryCriteria;
......@@ -16,32 +17,42 @@ import java.util.Map;
public interface MemberVipHistoryService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(MemberVipHistoryQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberVipHistoryDTO>
*/
List<MemberVipHistoryDTO> queryAll(MemberVipHistoryQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return MemberVipHistoryDTO
*/
MemberVipHistoryDTO findById(Long id);
/**
*
* @param resources
*/
void create(MemberVipHistory resources);
/**
*
* @param member
*/
void create(Member member, Integer beforeVip);
/**
*
* @param resources
*/
void update(MemberVipHistory resources);
/**
*
* @param id
*/
void delete(Long id);
/**
*
* @param id
* @param nowTime
* @return
*/
MemberVipHistory findByTime(Long id, LocalDateTime nowTime);
}
......
package com.topdraw.business.module.member.viphistory.service.impl;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistoryBuilder;
import com.topdraw.business.module.member.viphistory.repository.MemberVipHistoryRepository;
import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryDTO;
......@@ -37,61 +39,55 @@ import java.util.Objects;
public class MemberVipHistoryServiceImpl implements MemberVipHistoryService {
@Autowired
private MemberVipHistoryRepository memberVipHistoryRepository;
private MemberService memberService;
@Autowired
private MemberVipHistoryMapper memberVipHistoryMapper;
@Autowired
private MemberService memberService;
@Override
public Map<String, Object> queryAll(MemberVipHistoryQueryCriteria criteria, Pageable pageable) {
Page<MemberVipHistory> page = memberVipHistoryRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(memberVipHistoryMapper::toDto));
}
@Override
public List<MemberVipHistoryDTO> queryAll(MemberVipHistoryQueryCriteria criteria) {
return memberVipHistoryMapper.toDto(memberVipHistoryRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
private MemberVipHistoryRepository memberVipHistoryRepository;
@Override
public MemberVipHistoryDTO findById(Long id) {
MemberVipHistory memberVipHistory = memberVipHistoryRepository.findById(id).orElseGet(MemberVipHistory::new);
log.info("MemberVipHistoryServiceImpl ==>> findById ==>> param ==>> [{}]",id);
MemberVipHistory memberVipHistory = this.memberVipHistoryRepository.findById(id).orElseGet(MemberVipHistory::new);
ValidationUtil.isNull(memberVipHistory.getId(),"MemberVipHistory","id",id);
return memberVipHistoryMapper.toDto(memberVipHistory);
log.info("MemberVipHistoryServiceImpl ==>> findById ==>> result ==>> [{}]",memberVipHistory);
return this.memberVipHistoryMapper.toDto(memberVipHistory);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(MemberVipHistory resources) {
log.info("MemberVipHistoryServiceImpl ==>> create ==>> resources ==>> [{}]",resources);
String memberCode = resources.getMemberCode();
Assert.notNull(resources.getMemberCode(),"memberCode can't be null !!");
MemberDTO byCode = memberService.getByCode(memberCode);
if (Objects.nonNull(byCode.getCode())) {
Long id = byCode.getId();
resources.setMemberId(id);
memberVipHistoryRepository.save(resources);
log.info("MemberVipHistoryServiceImpl ==>> MemberVipHistoryServiceImpl ==>> param ==>> [{}]",resources);
this.checkMember(resources);
MemberVipHistory memberVipHistory = MemberVipHistoryBuilder.build(resources);
this.memberVipHistoryRepository.save(memberVipHistory);
}
@Override
public void create(Member member, Integer beforeVip) {
this.checkMember(member);
MemberVipHistory memberVipHistory = MemberVipHistoryBuilder.build(member, beforeVip);
this.memberVipHistoryRepository.save(memberVipHistory);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(MemberVipHistory resources) {
MemberVipHistory memberVipHistory = memberVipHistoryRepository.findById(resources.getId()).orElseGet(MemberVipHistory::new);
MemberVipHistory memberVipHistory = this.memberVipHistoryRepository.findById(resources.getId()).orElseGet(MemberVipHistory::new);
ValidationUtil.isNull( memberVipHistory.getId(),"MemberVipHistory","id",resources.getId());
memberVipHistory.copy(resources);
memberVipHistoryRepository.save(memberVipHistory);
this.memberVipHistoryRepository.save(memberVipHistory);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
MemberVipHistory memberVipHistory = memberVipHistoryRepository.findById(id).orElseThrow(
MemberVipHistory memberVipHistory = this.memberVipHistoryRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", MemberVipHistory.class, id), 1));
memberVipHistoryRepository.delete(memberVipHistory);
this.memberVipHistoryRepository.delete(memberVipHistory);
}
@Override
......@@ -100,5 +96,16 @@ public class MemberVipHistoryServiceImpl implements MemberVipHistoryService {
return memberVipHistory;
}
private MemberDTO checkMember(MemberVipHistory resources){
Long memberId = resources.getMemberId();
String code = resources.getMemberCode();
return this.memberService.checkMember(memberId, code);
}
private MemberDTO checkMember(Member resources){
Long memberId = resources.getId();
String code = resources.getCode();
return this.memberService.checkMember(memberId, code);
}
}
......
package com.topdraw.business.module.points.available.rest;
/**
* @author XiangHan
* @date 2021-10-23
*/
//@Api(tags = "PointsAvailable管理")
//@RestController
//@RequestMapping("/api/PointsAvailable")
public class PointsAvailableController {
/*@Autowired
private PointsAvailableService PointsAvailableService;
@GetMapping
@ApiOperation("查询PointsAvailable")
public ResultInfo getPointsAvailables(PointsAvailableQueryCriteria criteria, Pageable pageable) {
return ResultInfo.successPage(PointsAvailableService.queryAll(criteria,pageable));
}
@GetMapping(value = "/all")
@ApiOperation("查询所有PointsAvailable")
public ResultInfo getPointsAvailables(PointsAvailableQueryCriteria criteria) {
return ResultInfo.success(PointsAvailableService.queryAll(criteria));
}
@Log
@PostMapping
@ApiOperation("新增PointsAvailable")
public ResultInfo create(@Validated @RequestBody PointsAvailable resources) {
PointsAvailableService.create(resources);
return ResultInfo.success();
}
@Log
@PutMapping
@ApiOperation("修改PointsAvailable")
public ResultInfo update(@Validated @RequestBody PointsAvailable resources) {
PointsAvailableService.update(resources);
return ResultInfo.success();
}
@Log
@DeleteMapping(value = "/{id}")
@ApiOperation("删除PointsAvailable")
public ResultInfo delete(@PathVariable Long id) {
PointsAvailableService.delete(id);
return ResultInfo.success();
}
@GetMapping(value = "/getByCode/{code}")
@ApiOperation(value = "根据标识查询")
public ResultInfo getByCode(@PathVariable String code) {
return ResultInfo.success(PointsAvailableService.getByCode(code));
}*/
}
......@@ -75,7 +75,7 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
public void create(PointsAvailable resources) {
String memberCode = resources.getMemberCode();
if (StringUtils.isNotEmpty(memberCode)) {
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
resources.setMemberId(memberId);
......@@ -171,7 +171,7 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
public void create4Custom(PointsAvailable resources) {
String memberCode = resources.getMemberCode();
if (StringUtils.isNotEmpty(memberCode)) {
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
resources.setMemberId(memberId);
......
package com.topdraw.business.module.points.detail.rest;
import io.swagger.annotations.Api;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Api(tags = "PointsDetail管理")
//@RestController
//@RequestMapping("/api/PointsDetail")
public class PointsDetailController {
/*@Autowired
private PointsDetailService PointsDetailService;
@GetMapping
@ApiOperation("查询PointsDetail")
public ResultInfo getPointsDetails(PointsDetailQueryCriteria criteria, Pageable pageable) {
return ResultInfo.successPage(PointsDetailService.queryAll(criteria,pageable));
}
@GetMapping(value = "/all")
@ApiOperation("查询所有PointsDetail")
public ResultInfo getPointsDetails(PointsDetailQueryCriteria criteria) {
return ResultInfo.success(PointsDetailService.queryAll(criteria));
}
@Log
@PostMapping
@ApiOperation("新增PointsDetail")
public ResultInfo create(@Validated @RequestBody PointsDetail resources) {
PointsDetailService.create(resources);
return ResultInfo.success();
}
@Log
@PutMapping
@ApiOperation("修改PointsDetail")
public ResultInfo update(@Validated @RequestBody PointsDetail resources) {
PointsDetailService.update(resources);
return ResultInfo.success();
}
@Log
@DeleteMapping(value = "/{id}")
@ApiOperation("删除PointsDetail")
public ResultInfo delete(@PathVariable Long id) {
PointsDetailService.delete(id);
return ResultInfo.success();
}
@GetMapping(value = "/getByCode/{code}")
@ApiOperation(value = "根据标识查询")
public ResultInfo getByCode(@PathVariable String code) {
return ResultInfo.success(PointsDetailService.getByCode(code));
}*/
}
......@@ -65,7 +65,7 @@ public class PointsDetailServiceImpl implements PointsDetailService {
public void create(PointsDetail resources) {
String memberCode = resources.getMemberCode();
if (StringUtils.isNotEmpty(memberCode)) {
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
resources.setMemberId(memberId);
......@@ -78,7 +78,7 @@ public class PointsDetailServiceImpl implements PointsDetailService {
public void create4Custom(PointsDetail resources) {
String memberCode = resources.getMemberCode();
if (StringUtils.isNotEmpty(memberCode)) {
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
resources.setMemberId(memberId);
......
......@@ -64,7 +64,7 @@ public class RightsHistoryServiceImpl implements RightsHistoryService {
public void create(RightsHistory resources) {
String memberCode = resources.getMemberCode();
if (StringUtils.isNotBlank(memberCode)) {
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
Long id = memberDTO.getId();
resources.setMemberId(id);
}
......
......@@ -9,6 +9,7 @@ import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
......@@ -24,6 +25,9 @@ import java.time.LocalDateTime;
@Table(name="uc_user_tv")
public class UserTv implements Serializable {
@Column(name = "vis_user_id")
private Long visUserId;
/** 绑定的小屏账户会员编码 */
@Column(name = "priority_member_code")
private String priorityMemberCode;
......@@ -77,9 +81,9 @@ public class UserTv implements Serializable {
@Column(name = "`continue_days`")
private Integer continueDays;
// 活跃时间
@Column(name = "`active_time`")
private LocalDateTime activeTime;
/** 活跃时间 */
@Column(name = "active_time")
private Timestamp activeTime;
// 分组 分组ID用逗号分隔
@Column(name = "`groups`")
......
package com.topdraw.business.module.user.iptv.domain;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.exception.GlobeExceptionMsg;
import com.topdraw.util.TimestampUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;
import java.util.Objects;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/14 14:36
* @version: :
* @modified By:
* @since : modified in 2022/3/14 14:36
*/
public class UserTvBuilder {
private static final Integer DEFAULT_VALUE = 1;
private static final String DEFAULT_CREATE_BY = "system";
private static final String DEFAULT_UPDATE_BY = "system";
public static UserTv build(UserTv userTv){
return build(userTv.getMemberId(),userTv.getMemberCode(),userTv.getId(),userTv.getPlatformAccount(),userTv.getNickname(),userTv.getUsername(),
userTv.getLoginDays(),userTv.getStatus(),userTv.getContinueDays(),userTv.getCreateBy(),userTv.getUpdateBy(), userTv.getVisUserId());
}
public static UserTv build(Long memberId, String memberCode , UserTv userTv){
return build(memberId,memberCode,userTv.getId(),userTv.getPlatformAccount(),userTv.getNickname(),userTv.getUsername(),
userTv.getLoginDays(),userTv.getStatus(),userTv.getContinueDays(),userTv.getCreateBy(),userTv.getUpdateBy(), userTv.getVisUserId());
}
public static UserTv build(String memberCode, UserTv userTv){
return build(null,memberCode,userTv.getId(),userTv.getPlatformAccount(),userTv.getNickname(),userTv.getUsername(),
userTv.getLoginDays(),userTv.getStatus(),userTv.getContinueDays(),userTv.getCreateBy(),userTv.getUpdateBy(), userTv.getVisUserId());
}
public static UserTv build(Member member, UserTv userTv){
return build(member.getId() , member.getCode(),userTv.getId(),userTv.getPlatformAccount(),userTv.getNickname(),userTv.getUsername(),
userTv.getLoginDays(),userTv.getStatus(),userTv.getContinueDays(),userTv.getCreateBy(),userTv.getUpdateBy(), userTv.getVisUserId());
}
public static UserTv build(Long memberId , String memberCode , Long id , String platformAccount , String nickname , String username,
Integer loginDays , Integer status , Integer continueDays , String createBy , String updateBy, Long visUserId){
Assert.notNull(memberId, GlobeExceptionMsg.MEMBER_ID_IS_NULL);
Assert.notNull(memberCode, GlobeExceptionMsg.MEMBER_CODE_IS_NULL);
Assert.notNull(platformAccount, GlobeExceptionMsg.IPTV_PLATFORM_ACCOUNT_IS_NULL);
Assert.notNull(platformAccount, GlobeExceptionMsg.VIS_USER_ID_IS_NULL);
// todo 原型模式
UserTv userTv = new UserTv();
userTv.setId(id);
userTv.setPlatformAccount(platformAccount);
userTv.setMemberCode(memberCode);
userTv.setMemberId(memberId);
userTv.setNickname(StringUtils.isBlank(nickname)?platformAccount:nickname);
userTv.setUsername(StringUtils.isBlank(username)?platformAccount:username);
userTv.setLoginDays(Objects.nonNull(loginDays)?loginDays:DEFAULT_VALUE);
userTv.setLoginType(DEFAULT_VALUE);
userTv.setStatus(Objects.nonNull(status)?status:DEFAULT_VALUE);
userTv.setActiveTime(TimestampUtil.now());
userTv.setContinueDays(Objects.nonNull(continueDays)?loginDays:DEFAULT_VALUE);
userTv.setCreateBy(StringUtils.isBlank(createBy)?DEFAULT_CREATE_BY:createBy);
userTv.setUpdateBy(StringUtils.isBlank(updateBy)?DEFAULT_UPDATE_BY:updateBy);
userTv.setVisUserId(visUserId);
return userTv;
}
}
......@@ -11,6 +11,9 @@ import java.util.Optional;
* @date 2021-12-16
*/
public interface UserTvRepository extends JpaRepository<UserTv, Long>, JpaSpecificationExecutor<UserTv> {
Optional<UserTv> findByPlatformAccount(String platformAccount);
Optional<UserTv> findByPriorityMemberCode(String memberCode);
Optional<UserTv> findByMemberId(Long memberId);
}
......
package com.topdraw.business.module.user.iptv.service;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.iptv.service.dto.UserTvQueryCriteria;
import org.springframework.data.domain.Pageable;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* @author XiangHan
......@@ -16,35 +11,71 @@ import java.util.Map;
public interface UserTvService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(UserTvQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<UserTvDTO>
*/
List<UserTvDTO> queryAll(UserTvQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return UserTvDTO
*/
UserTvDTO findById(Long id);
Long create(UserTv resources);
/**
*
* @param resources
* @return
*/
UserTv create(UserTv resources);
/**
*
* @param resources
*/
void update(UserTv resources);
@Transactional(rollbackFor = Exception.class)
/**
*
* @param resources
*/
void unbindPriorityMemberCode(UserTv resources);
/**
*
* @param id
*/
void delete(Long id);
/**
*
* @param platformAccount
* @return
*/
UserTvDTO findByPlatformAccount(String platformAccount);
/**
*
* @param memberCode
* @return
*/
UserTvDTO findByPriorityMemberCode(String memberCode);
/**
* 通过会员
* @param memberId
* @return
*/
UserTvDTO findByMemberId(Long memberId);
/**
* 检查会员是否是主账号
* @param memberId
* @param memberCode
* @return
*/
boolean checkPriorityMemberByMemberIdOrMemberCode(Long memberId,String memberCode);
/**
*
* @param platformAccount
* @return
*/
MemberDTO findMemberByPlatformAccount(String platformAccount);
}
......
......@@ -14,6 +14,13 @@ import java.time.LocalDateTime;
@Data
public class UserTvDTO implements Serializable {
private Long visUserId;
private String memberCode;
/** 绑定的小屏账户会员编码 */
private String priorityMemberCode;
// ID
private Long id;
......@@ -48,7 +55,7 @@ public class UserTvDTO implements Serializable {
private Integer continueDays;
// 活跃时间
private LocalDateTime activeTime;
private Timestamp activeTime;
// 分组 分组ID用逗号分隔
private String groups;
......
package com.topdraw.business.module.user.iptv.service.dto;
import lombok.Data;
/**
* @author XiangHan
* @date 2021-12-16
*/
@Data
public class UserTvQueryCriteria{
}
......@@ -6,24 +6,18 @@ import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.repository.UserTvRepository;
import com.topdraw.business.module.user.iptv.service.UserTvService;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.iptv.service.dto.UserTvQueryCriteria;
import com.topdraw.business.module.user.iptv.service.mapper.UserTvMapper;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.exception.EntityNotFoundException;
import com.topdraw.exception.GlobeExceptionMsg;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
......@@ -36,40 +30,63 @@ import java.util.Optional;
public class UserTvServiceImpl implements UserTvService {
@Autowired
private UserTvRepository UserTvRepository;
@Autowired
private UserTvMapper UserTvMapper;
private UserTvMapper userTvMapper;
@Autowired
private MemberService memberService;
@Autowired
private UserTvRepository userTvRepository;
/**
* 获取大屏账户对应的会员
* <Waring>
* 如果绑定了小屏,则获取对应主账号对应的会员信息,如果没有绑定小屏会员则默认获取大屏自己的会员(x_member)
* </Waring>
* @param platformAccount
* @return
*/
@Override
public Map<String, Object> queryAll(UserTvQueryCriteria criteria, Pageable pageable) {
Page<UserTv> page = UserTvRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(UserTvMapper::toDto));
public MemberDTO findMemberByPlatformAccount(String platformAccount){
// 大屏账户
UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount);
if (Objects.nonNull(userTvDTO)) {
// 主账号会员code
String priorityMemberCode = userTvDTO.getPriorityMemberCode();
if (StringUtils.isNotBlank(platformAccount))
return this.findMemberByMemberCode(priorityMemberCode);
else
return this.findMemberByMemberId(userTvDTO.getMemberId());
}
@Override
public List<UserTvDTO> queryAll(UserTvQueryCriteria criteria) {
return UserTvMapper.toDto(UserTvRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
throw new EntityNotFoundException(UserTvDTO.class,"platformAccount", GlobeExceptionMsg.IPTV_IS_NULL);
}
private MemberDTO findMemberByMemberCode(String memberCode) {
return this.memberService.findByCode(memberCode);
}
private MemberDTO findMemberByMemberId(Long memberId) {
return this.memberService.findById(memberId);
}
@Override
public UserTvDTO findById(Long id) {
UserTv UserTv = UserTvRepository.findById(id).orElseGet(UserTv::new);
UserTv UserTv = this.userTvRepository.findById(id).orElseGet(UserTv::new);
ValidationUtil.isNull(UserTv.getId(),"UserTv","id",id);
return UserTvMapper.toDto(UserTv);
return this.userTvMapper.toDto(UserTv);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Long create(UserTv resources) {
MemberDTO memberDTO = memberService.getByCode(resources.getMemberCode());
public UserTv create(UserTv resources) {
MemberDTO memberDTO = memberService.findByCode(resources.getMemberCode());
if (Objects.nonNull(memberDTO)) {
Long id = memberDTO.getId();
resources.setMemberId(id);
UserTvRepository.save(resources);
return resources.getId();
this.userTvRepository.save(resources);
return resources;
}
return null;
}
......@@ -77,53 +94,74 @@ public class UserTvServiceImpl implements UserTvService {
@Override
@Transactional(rollbackFor = Exception.class)
public void update(UserTv resources) {
String platformAccount = resources.getPlatformAccount();
UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount);
ValidationUtil.isNull(userTvDTO.getId(),"UserTv","id",resources.getId());
UserTv userTv = new UserTv();
BeanUtils.copyProperties(resources,userTv);
userTv.setId(userTvDTO.getId());
userTv.setMemberId(userTvDTO.getMemberId());
userTv.setUpdateTime(LocalDateTime.now());
UserTvRepository.save(userTv);
UserTv UserTv = this.userTvRepository.findById(resources.getId()).orElseGet(UserTv::new);
ValidationUtil.isNull( UserTv.getId(),"UserTv","id",resources.getId());
UserTv.copy(resources);
this.userTvRepository.save(UserTv);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void unbindPriorityMemberCode(UserTv resources) {
String platformAccount = resources.getPlatformAccount();
UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount);
// UserTv UserTv = UserTvRepository.findById(resources.getId()).orElseGet(UserTv::new);
ValidationUtil.isNull( userTvDTO.getId(),"UserTv","id",resources.getId());
//UserTv.copy(resources);
UserTv userTv = new UserTv();
BeanUtils.copyProperties(userTvDTO,userTv);
userTv.setPriorityMemberCode(null);
UserTvRepository.save(userTv);
UserTv UserTv = this.userTvRepository.findById(resources.getId()).orElseGet(UserTv::new);
ValidationUtil.isNull( UserTv.getId(),"UserTv","id",resources.getId());
UserTv.copy(resources);
this.userTvRepository.save(UserTv);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
UserTv UserTv = UserTvRepository.findById(id).orElseThrow(
UserTv UserTv = this.userTvRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", UserTv.class, id), 1));
UserTvRepository.delete(UserTv);
this.userTvRepository.delete(UserTv);
}
@Override
public UserTvDTO findByPlatformAccount(String platformAccount) {
Optional<UserTv> userTv = UserTvRepository.findByPlatformAccount(platformAccount);
Optional<UserTv> userTv = this.userTvRepository.findByPlatformAccount(platformAccount);
if (userTv.isPresent()) {
ValidationUtil.isNull( userTv.get().getId(),"UserTv","id",userTv.get().getId());
return UserTvMapper.toDto(userTv.get());
return this.userTvMapper.toDto(userTv.get());
}
return null;
}
@Override
public UserTvDTO findByPriorityMemberCode(String memberCode) {
Optional<UserTv> userTv = this.userTvRepository.findByPriorityMemberCode(memberCode);
if (userTv.isPresent()) {
ValidationUtil.isNull( userTv.get().getId(),"UserTv","id",userTv.get().getId());
return this.userTvMapper.toDto(userTv.get());
}
return null;
}
@Override
public UserTvDTO findByMemberId(Long memberId) {
Optional<UserTv> userTv = this.userTvRepository.findByMemberId(memberId);
if (userTv.isPresent()) {
ValidationUtil.isNull( userTv.get().getId(),"UserTv","id",userTv.get().getId());
return this.userTvMapper.toDto(userTv.get());
}
return null;
}
@Override
public boolean checkPriorityMemberByMemberIdOrMemberCode(Long memberId, String memberCode) {
// 检查会员是否存在
this.checkMember(memberId, memberCode);
UserTvDTO userTvDTO = this.findByPriorityMemberCode(memberCode);
if (Objects.nonNull(userTvDTO)) {
return true;
}
return false;
}
private void checkMember(Long memberId, String memberCode){
this.memberService.checkMember(memberId, memberCode);
}
}
......
......@@ -81,7 +81,7 @@ public class UserWeixin extends DefaultAsyncMqModule implements Serializable {
// 超时时间
@Column(name = "expires_time")
private LocalDateTime expiresTime;
private Timestamp expiresTime;
// 描述
@Column(name = "description")
......@@ -131,7 +131,7 @@ public class UserWeixin extends DefaultAsyncMqModule implements Serializable {
// 授权时间
@Column(name = "auth_time")
private LocalDateTime authTime;
private Timestamp authTime;
@Column(name = "sex")
private Integer sex;
......
package com.topdraw.business.module.user.weixin.domain;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.exception.BadRequestException;
import com.topdraw.exception.GlobeExceptionMsg;
import com.topdraw.util.TimestampUtil;
import org.apache.commons.lang3.StringUtils;
import java.sql.Timestamp;
import java.util.Objects;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/14 17:02
* @version: :
* @modified By:
* @since : modified in 2022/3/14 17:02
*/
public class UserWeixinBuilder {
public static UserWeixin build(Long memberId, String appId, String openId, String unionId, String nickname, String headimgurl){
UserWeixin userWeixin = new UserWeixin();
userWeixin.setAppid(appId);
userWeixin.setOpenid(openId);
userWeixin.setUnionid(unionId);
userWeixin.setNickname(nickname);
userWeixin.setHeadimgurl(headimgurl);
return build(memberId,userWeixin);
}
public static UserWeixin build(Long memberId, String appId, String openId, String unionId){
UserWeixin userWeixin = new UserWeixin();
userWeixin.setAppid(appId);
userWeixin.setOpenid(openId);
userWeixin.setUnionid(unionId);
return build(memberId,userWeixin);
}
public static UserWeixin build(UserWeixin userWeixin){
return build(userWeixin.getId(),
userWeixin.getMemberId(),
userWeixin.getMemberCode(),
userWeixin.getUnionid(),userWeixin.getAppid(),userWeixin.getOpenid(),
userWeixin.getStatus(),userWeixin.getSyncStatus(),
userWeixin.getNickname(),userWeixin.getHeadimgurl(),
userWeixin.getPrivilege(), userWeixin.getRefreshToken(),userWeixin.getAccessToken(),
userWeixin.getExpiresIn(),userWeixin.getExpiresTime(),userWeixin.getDescription(),
userWeixin.getCreateBy(),userWeixin.getUpdateBy(),userWeixin.getSourceType(),userWeixin.getSourceId(),
userWeixin.getSourceDesc(),userWeixin.getSourceUser(),userWeixin.getSourceEntity(),userWeixin.getCountry(),userWeixin.getProvince(),
userWeixin.getCity(),userWeixin.getSex());
}
public static UserWeixin build(Long memberId , String memberCode, UserWeixin userWeixin){
return build(userWeixin.getId(),
memberId,
memberCode,
userWeixin.getUnionid(),userWeixin.getAppid(),userWeixin.getOpenid(),
userWeixin.getStatus(),userWeixin.getSyncStatus(),
userWeixin.getNickname(),userWeixin.getHeadimgurl(),
userWeixin.getPrivilege(), userWeixin.getRefreshToken(),userWeixin.getAccessToken(),
userWeixin.getExpiresIn(),userWeixin.getExpiresTime(),userWeixin.getDescription(),
userWeixin.getCreateBy(),userWeixin.getUpdateBy(),userWeixin.getSourceType(),userWeixin.getSourceId(),
userWeixin.getSourceDesc(),userWeixin.getSourceUser(),userWeixin.getSourceEntity(),userWeixin.getCountry(),userWeixin.getProvince(),
userWeixin.getCity(),userWeixin.getSex());
}
public static UserWeixin build(Long memberId , UserWeixin userWeixin){
return build(userWeixin.getId(),
memberId,
userWeixin.getMemberCode(),
userWeixin.getUnionid(),userWeixin.getAppid(),userWeixin.getOpenid(),
userWeixin.getStatus(),userWeixin.getSyncStatus(),
userWeixin.getNickname(),userWeixin.getHeadimgurl(),
userWeixin.getPrivilege(), userWeixin.getRefreshToken(),userWeixin.getAccessToken(),
userWeixin.getExpiresIn(),userWeixin.getExpiresTime(),userWeixin.getDescription(),
userWeixin.getCreateBy(),userWeixin.getUpdateBy(),userWeixin.getSourceType(),userWeixin.getSourceId(),
userWeixin.getSourceDesc(),userWeixin.getSourceUser(),userWeixin.getSourceEntity(),userWeixin.getCountry(),userWeixin.getProvince(),
userWeixin.getCity(),userWeixin.getSex());
}
public static UserWeixin build(Member member , UserWeixin userWeixin) {
return build(userWeixin.getId(),
member.getId(),
member.getCode(),
userWeixin.getUnionid(),userWeixin.getAppid(),userWeixin.getOpenid(),
userWeixin.getStatus(),userWeixin.getSyncStatus(),
userWeixin.getNickname(),userWeixin.getHeadimgurl(),
userWeixin.getPrivilege(), userWeixin.getRefreshToken(),userWeixin.getAccessToken(),
userWeixin.getExpiresIn(),userWeixin.getExpiresTime(),userWeixin.getDescription(),
userWeixin.getCreateBy(),userWeixin.getUpdateBy(),userWeixin.getSourceType(),userWeixin.getSourceId(),
userWeixin.getSourceDesc(),userWeixin.getSourceUser(),userWeixin.getSourceEntity(),userWeixin.getCountry(),userWeixin.getProvince(),
userWeixin.getCity(),userWeixin.getSex());
}
public static UserWeixin build(Long id ,
Long memberId,
String memberCode,
String unionId, String appId, String openId,
Integer status, Integer syncStatus,
String nickname, String headimgurl,
String privilege, String refreshToken,
String accessToken, Integer expiresIn, Timestamp expiresTime, String description,
String createBy, String updateBy,
String sourceType, String sourceId,
String sourceDesc,
Long sourceUser, String sourceEntity,
String country, String province, String city,
Integer sex){
if (Objects.isNull(memberId)) {
throw new BadRequestException(GlobeExceptionMsg.MEMBER_ID_IS_NULL);
}
UserWeixin userWeixin = new UserWeixin();
userWeixin.setId(Objects.nonNull(id)?id:null);
userWeixin.setMemberId(memberId);
userWeixin.setMemberCode(memberCode);
userWeixin.setUnionid(StringUtils.isNotBlank(unionId)?unionId:"");
userWeixin.setAppid(StringUtils.isNotBlank(appId)?appId:"");
userWeixin.setOpenid(StringUtils.isNotBlank(openId)?openId:"");
userWeixin.setStatus(Objects.nonNull(status)?status:0);
userWeixin.setSyncStatus(Objects.nonNull(syncStatus)?syncStatus:0);
userWeixin.setNickname(StringUtils.isNotBlank(nickname)?nickname:"");
userWeixin.setHeadimgurl(StringUtils.isNotBlank(headimgurl)?headimgurl:"");
userWeixin.setPrivilege(StringUtils.isNotBlank(privilege)?privilege:"");
userWeixin.setRefreshToken(StringUtils.isNotBlank(refreshToken)?refreshToken:"");
userWeixin.setAccessToken(StringUtils.isNotBlank(accessToken)?accessToken:"");
userWeixin.setExpiresIn(expiresIn);
userWeixin.setExpiresTime(expiresTime);
userWeixin.setDescription(StringUtils.isNotBlank(description)?description:"");
userWeixin.setCreateBy(StringUtils.isNotBlank(createBy)?createBy:"system");
userWeixin.setUpdateBy(StringUtils.isNotBlank(updateBy)?updateBy:"system");
userWeixin.setSourceType(StringUtils.isNotBlank(sourceType)?sourceType:"");
userWeixin.setSourceId(StringUtils.isNotBlank(sourceId)?sourceId:"");
userWeixin.setSourceDesc(StringUtils.isNotBlank(sourceDesc)?sourceId:"");
userWeixin.setSourceUser(Objects.nonNull(sourceUser)?sourceUser:0L);
userWeixin.setSourceEntity(StringUtils.isNotBlank(sourceEntity)?sourceEntity:"");
userWeixin.setAuthTime(TimestampUtil.now());
userWeixin.setCountry(StringUtils.isNotBlank(country)?country:"");
userWeixin.setProvince(StringUtils.isNotBlank(province)?province:"");
userWeixin.setCity(StringUtils.isNotBlank(city)?city:"");
userWeixin.setSex(Objects.nonNull(sex)?sex:-1);
return userWeixin;
}
}
......@@ -16,10 +16,19 @@ import java.util.Optional;
*/
public interface UserWeixinRepository extends JpaRepository<UserWeixin, Long>, JpaSpecificationExecutor<UserWeixin> {
Optional<UserWeixin> findFirstByMemberIdAndAppid(Long memberId, String appid);
Optional<UserWeixin> findFirstByUnionidAndAppidAndOpenid(String unionId, String appId, String openId);
Optional<UserWeixin> findFirstByAppidAndOpenid(String appId, String openId);
Optional<UserWeixin> findFirstByUnionid(String unionid);
Optional<UserWeixin> findFirstByUnionidAndAppid(String unionid, String appId);
@Modifying
@Transactional
@Query(value = "update uc_user_weixin set update_time = :#{#resources.updateTime} where appid = :#{#resources.appid} and openid = :#{#resources.openid}" , nativeQuery = true)
@Query(value = "update `uc_user_weixin` set update_time = :#{#resources.updateTime} where appid = :#{#resources.appid} and openid = :#{#resources.openid}" , nativeQuery = true)
void updateTime(@Param("resources") UserWeixin resources);
}
......
......@@ -15,35 +15,76 @@ import java.util.Map;
public interface UserWeixinService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
* 根据ID查询
* @param id ID
* @return UserWeixinDTO
*/
Map<String,Object> queryAll(UserWeixinQueryCriteria criteria, Pageable pageable);
UserWeixinDTO findById(Long id);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<UserWeixinDTO>
*
* @param resources
* @return
*/
List<UserWeixinDTO> queryAll(UserWeixinQueryCriteria criteria);
UserWeixin create(UserWeixin resources);
/**
* 根据ID查询
* @param id ID
* @return UserWeixinDTO
*
* @param resources
*/
UserWeixinDTO findById(Long id);
void update(UserWeixin resources);
/**
*
* @param resources
*/
void updateTime(UserWeixin resources);
void create(UserWeixin resources);
/**
*
* @param id
*/
void delete(Long id);
void update(UserWeixin resources);
/**
*
* @param memberId
* @param appid
* @return
*/
UserWeixinDTO findFirstByMemberIdAndAppid(Long memberId, String appid);
void delete(Long id);
/**
*
* @param unionId
* @param appId
* @param openId
* @return
*/
UserWeixinDTO findFirstByUnionIdAndAppIdAndOpenId(String unionId, String appId, String openId);
/**
*
* @param appId
* @param openId
* @return
*/
UserWeixinDTO findFirstByAppIdAndOpenId(String appId, String openId);
/**
*
* @param unionid
* @return
*/
UserWeixinDTO findFirstByUnionId(String unionid);
/**
*
* @param unionid
* @param appId
* @return
*/
UserWeixinDTO findFirstByUnionidAndAppid(String unionid, String appId);
}
......
......@@ -54,7 +54,7 @@ public class UserWeixinDTO implements Serializable {
private Integer expiresIn;
// 超时时间
private LocalDateTime expiresTime;
private Timestamp expiresTime;
// 描述
private String description;
......@@ -90,7 +90,7 @@ public class UserWeixinDTO implements Serializable {
private String sourceEntity;
// 授权时间
private LocalDateTime authTime;
private Timestamp authTime;
private Integer sex;
......
package com.topdraw.business.module.user.weixin.service.impl;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.domain.UserWeixinBuilder;
import com.topdraw.business.module.user.weixin.repository.UserWeixinRepository;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.module.user.weixin.service.mapper.UserWeixinMapper;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.sql.Time;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* @author XiangHan
* @date 2021-12-16
......@@ -38,83 +25,78 @@ import java.util.Map;
public class UserWeixinServiceImpl implements UserWeixinService {
@Autowired
private UserWeixinRepository UserWeixinRepository;
private UserWeixinRepository userWeixinRepository;
@Autowired
private UserWeixinMapper UserWeixinMapper;
@Autowired
private MemberService memberService;
@Override
public Map<String, Object> queryAll(UserWeixinQueryCriteria criteria, Pageable pageable) {
Page<UserWeixin> page = UserWeixinRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(UserWeixinMapper::toDto));
}
@Override
public List<UserWeixinDTO> queryAll(UserWeixinQueryCriteria criteria) {
return UserWeixinMapper.toDto(UserWeixinRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
private UserWeixinMapper userWeixinMapper;
@Override
public UserWeixinDTO findById(Long id) {
UserWeixin UserWeixin = UserWeixinRepository.findById(id).orElseGet(UserWeixin::new);
UserWeixin UserWeixin = this.userWeixinRepository.findById(id).orElseGet(UserWeixin::new);
ValidationUtil.isNull(UserWeixin.getId(),"UserWeixin","id",id);
return UserWeixinMapper.toDto(UserWeixin);
return this.userWeixinMapper.toDto(UserWeixin);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTime(UserWeixin resources) {
log.info("updateTime ==>> resources ==>> [{}]",resources);
String appid = resources.getAppid();
String openid = resources.getOpenid();
UserWeixin userWeixin = UserWeixinRepository.findFirstByAppidAndOpenid(appid,openid).orElseGet(UserWeixin::new);
ValidationUtil.isNull( userWeixin.getId(),"UserWeixin","id",resources.getId());
userWeixin.setUpdateTime(LocalDateTime.now());
log.info("userWeixin ==>> userWeixin ==>> [{}]",userWeixin);
UserWeixinRepository.updateTime(userWeixin);
public UserWeixin create(UserWeixin resources) {
UserWeixin build = UserWeixinBuilder.build(resources);
this.userWeixinRepository.save(build);
return resources;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(UserWeixin resources) {
resources.setMemberId(null);
String memberCode = resources.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
resources.setMemberId(memberDTO.getId());
UserWeixinRepository.save(resources);
public void update(UserWeixin resources) {
UserWeixin UserWeixin = this.userWeixinRepository.findById(resources.getId()).orElseGet(UserWeixin::new);
ValidationUtil.isNull( UserWeixin.getId(),"UserWeixin","id",resources.getId());
UserWeixin.copy(resources);
this.userWeixinRepository.save(UserWeixin);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(UserWeixin resources) {
log.info("update ==>> resources ==>> [{}]",resources);
String appid = resources.getAppid();
String openid = resources.getOpenid();
UserWeixin userWeixin = UserWeixinRepository.findFirstByAppidAndOpenid(appid,openid).orElseGet(UserWeixin::new);
ValidationUtil.isNull( userWeixin.getId(),"UserWeixin","id",resources.getId());
resources.setId(userWeixin.getId());
resources.setMemberId(userWeixin.getMemberId());
BeanUtils.copyProperties(resources,userWeixin);
log.info("update ==>>userWeixin ==>> resources ==>> [{}]",resources);
UserWeixinRepository.save(resources);
public void updateTime(UserWeixin resources) {
this.userWeixinRepository.updateTime(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
UserWeixin UserWeixin = UserWeixinRepository.findById(id).orElseThrow(
UserWeixin UserWeixin = this.userWeixinRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", UserWeixin.class, id), 1));
UserWeixinRepository.delete(UserWeixin);
this.userWeixinRepository.delete(UserWeixin);
}
@Override
public UserWeixinDTO findFirstByMemberIdAndAppid(Long memberId, String appid) {
UserWeixin userWeixin = this.userWeixinRepository.findFirstByMemberIdAndAppid(memberId, appid).orElseGet(UserWeixin::new);
ValidationUtil.isNull(userWeixin.getId(),"UserWeixin","id",memberId);
return this.userWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByUnionIdAndAppIdAndOpenId(String unionId, String appId, String openId) {
UserWeixin userWeixin = this.userWeixinRepository.findFirstByUnionidAndAppidAndOpenid(unionId, appId,openId).orElseGet(UserWeixin::new);
return this.userWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByAppIdAndOpenId(String appId, String openId) {
UserWeixin userWeixin = this.UserWeixinRepository.findFirstByAppidAndOpenid(appId,openId).orElseGet(UserWeixin::new);
return UserWeixinMapper.toDto(userWeixin);
UserWeixin userWeixin = this.userWeixinRepository.findFirstByAppidAndOpenid(appId,openId).orElseGet(UserWeixin::new);
return this.userWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByUnionId(String unionid) {
UserWeixin userWeixin = this.userWeixinRepository.findFirstByUnionid(unionid).orElseGet(UserWeixin::new);
return this.userWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByUnionidAndAppid(String unionid, String appId) {
UserWeixin userWeixin = this.userWeixinRepository.findFirstByUnionidAndAppid(unionid,appId).orElseGet(UserWeixin::new);
return this.userWeixinMapper.toDto(userWeixin);
}
}
......
package com.topdraw.business.process.service;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.service.dto.MemberDTO;
public interface MemberOperationService {
void doUpdateMemberInfo(Member member);
void doInsertMember(Member member);
MemberDTO findById(Long memberId);
void doUpdateMemberExp(Member member);
void doUpdateMemberPoints(Member member);
void doUpdateMemberCoupon(Member member);
}
......@@ -8,11 +8,8 @@ import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.process.domian.TempCoupon;
import com.topdraw.business.process.service.CouponOperationService;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.service.RightsOperationService;
import com.topdraw.util.RedissonUtil;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import com.topdraw.business.process.service.member.MemberOperationService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
......@@ -127,7 +124,7 @@ public class CouponOperationServiceImpl implements CouponOperationService {
member.setCouponAmount(currentCoupon);
member.setDueCouponAmount(expireSoonCouponCount);
member.setUpdateTime(LocalDateTime.now());
this.memberOperationService.doUpdateMemberInfo(member);
this.memberOperationService.doUpdateMember(member);
}
private MemberDTO findMemberByMemberId(Long memberId) {
......
......@@ -9,12 +9,9 @@ import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.process.domian.TempExp;
import com.topdraw.business.process.service.ExpOperationService;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.service.member.MemberOperationService;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
......@@ -76,7 +73,7 @@ public class ExpOperationServiceImpl implements ExpOperationService {
*/
private void refresh(TempExp tempExp) {
String memberCode = tempExp.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
Long id = memberDTO.getId();
tempExp.setId(id);
try {
......@@ -146,7 +143,7 @@ public class ExpOperationServiceImpl implements ExpOperationService {
member.setExp(totalExp);
member.setLevel(level);
member.setUpdateTime(LocalDateTime.now());
this.memberOperationService.doUpdateMemberInfo(member);
this.memberOperationService.doUpdateMember(member);
}
private MemberDTO findMemberByMemberId(Long memberId) {
......
package com.topdraw.business.process.service.impl;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.process.service.MemberOperationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.Objects;
@Service
public class MemberOperationServiceImpl implements MemberOperationService {
@Autowired
MemberService memberService;
@Override
public void doUpdateMemberInfo(Member member) {
Long id = member.getId();
Assert.notNull(id,"ERROR MSG: MemberOperationServiceImpl -> doUpdateMemberInfo -> id not be null!!");
this.memberService.update(member);
}
@Override
public void doInsertMember(Member member) {
this.memberService.create(member);
}
@Override
public MemberDTO findById(Long memberId) {
return Objects.nonNull(memberId) ? this.memberService.findById(memberId) : null;
}
@Override
public void doUpdateMemberExp(Member member) {
this.doUpdateMemberInfo(member);
}
@Override
public void doUpdateMemberPoints(Member member) {
this.memberService.doUpdateMemberPoints(member);
}
@Override
public void doUpdateMemberCoupon(Member member) {
this.doUpdateMemberInfo(member);
}
}
......@@ -12,17 +12,12 @@ import com.topdraw.business.module.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.service.PointsDetailService;
import com.topdraw.business.module.points.service.PointsService;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.service.PointsOperationService;
import com.topdraw.business.process.service.member.MemberOperationService;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
......@@ -31,7 +26,6 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
......@@ -44,8 +38,6 @@ import java.util.stream.Collectors;
@Slf4j
public class PointsOperationServiceImpl implements PointsOperationService {
private static final Logger LOG = LoggerFactory.getLogger(PointsOperationServiceImpl.class);
@Autowired
PointsService pointsService;
@Autowired
......@@ -80,7 +72,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
public void grantPointsByManualByTempPoints(TempPoints tempPoints) {
if (Objects.nonNull(tempPoints) && Objects.nonNull(tempPoints.getPoints())) {
String memberCode = tempPoints.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
tempPoints.setMemberId(memberId);
......@@ -101,7 +93,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
String memberCode = tempPoints.getMemberCode();
MemberDTO memberDTO = this.memberService.getByCode(memberCode);
MemberDTO memberDTO = this.memberService.findByCode(memberCode);
if (Objects.nonNull(memberDTO)) {
......
package com.topdraw.business.process.service.impl.member;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.service.MemberAddressService;
import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.process.service.member.MemberAddressOperationService;
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;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
@Slf4j
public class MemberAddressOperationServiceImpl implements MemberAddressOperationService {
@Autowired
private MemberAddressService memberAddressService;
@Override
public MemberAddressDTO findById(Long id) {
return this.memberAddressService.findById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public MemberAddressDTO create(MemberAddress resources) {
log.info("MemberAddressOperationServiceImpl ==>> create ==>> param ==>> [{}]",resources);
return this.memberAddressService.create(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public MemberAddressDTO update(MemberAddress resources) {
log.info("MemberAddressOperationServiceImpl ==>> update ==>> param ==>> [{}]",resources);
return this.memberAddressService.update(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
this.memberAddressService.delete(id);
}
}
package com.topdraw.business.process.service.impl.member;
import cn.hutool.core.util.ObjectUtil;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.weixin.BuyVipBean;
import com.topdraw.business.process.service.member.MemberOperationService;
import com.topdraw.business.process.service.member.MemberProfileOperationService;
import com.topdraw.exception.EntityNotFoundException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Objects;
@Service
@CacheConfig(cacheNames = "member")
public class MemberOperationServiceImpl implements MemberOperationService {
@Autowired
private MemberService memberService;
@Autowired
private MemberProfileOperationService memberProfileOperationService;
@Autowired
private MemberVipHistoryService memberVipHistoryService;
@Autowired
private UserWeixinService userWeixinService;
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
// @Cacheable(key = "#memberId")
@Override
public MemberDTO findById(Long memberId) {
MemberDTO memberDTO = this.memberService.findById(memberId);
return Objects.nonNull(memberId) ? memberDTO : null;
}
@Override
public MemberDTO findByCode(String code) {
return this.memberService.findByCode(code);
}
public void createVipHistory(MemberVipHistory memberVipHistory){
this.memberVipHistoryService.create(memberVipHistory);
}
@CachePut(key = "#resources.id")
@Override
public MemberDTO update(Member resources) {
MemberDTO memberDTO = this.memberService.update(resources);
return memberDTO;
}
@Override
public MemberDTO doUpdateMember(Member resources) {
Long id = resources.getId();
Assert.notNull(id,"ERROR MSG: MemberOperationServiceImpl -> doUpdateMemberInfo -> id not be null!!");
return this.update(resources);
}
// @CachePut(key = "#resources.id")
@Override
public MemberDTO doInsertMember(Member resources) {
return this.memberService.create(resources);
}
@Override
public MemberDTO doUpdateMemberExp(Member member) {
return this.update(member);
}
// @CachePut(key = "#resources.id")
@Override
public MemberDTO doUpdateMemberPoints(Member resources) {
return this.memberService.doUpdateMemberPoints(resources);
}
@Override
public MemberDTO doUpdateMemberCoupon(Member member) {
return this.update(member);
}
@Override
public MemberProfileDTO getMemberProfileAndCheckVip(Long memberId, String appid) {
// 会员加密信息
MemberProfileDTO memberProfileDTO_0 = this.findMemberProfileByMemberId(memberId);
// 会员信息
MemberDTO memberDTO = this.findById(memberId);
// 初始化会员加密信息
MemberProfileDTO memberProfileDTO_1 = this.configMemberProfile(memberProfileDTO_0,memberDTO,appid);
return memberProfileDTO_1;
}
/**
* 配置会员信息
* @param memberProfileDTO_0
* @param memberDTO
* @return
*/
private MemberProfileDTO configMemberProfile(MemberProfileDTO memberProfileDTO_0, MemberDTO memberDTO, String appid) {
if (Objects.isNull(memberProfileDTO_0)) return memberProfileDTO_0;
MemberProfileDTO memberProfileDTO = new MemberProfileDTO();
BeanUtils.copyProperties(memberProfileDTO_0,memberProfileDTO);
// vip
Integer vip = memberDTO.getVip();
// 过期时间
LocalDateTime vipExpireTime = memberDTO.getVipExpireTime();
Long timeLong = 0L;
if (ObjectUtil.isNotNull(vipExpireTime)) {
// 检查vip
MemberDTO memberDTO1 = this.checkVipStatus(memberDTO,vipExpireTime,appid);
// 更新会员信息
this.threadPoolTaskExecutor.execute(()->{
Member member = new Member();
BeanUtils.copyProperties(memberDTO1,member);
this.memberService.update(member);
});
vip = memberDTO1.getVip();
LocalDateTime vipExpireTime1 = memberDTO1.getVipExpireTime();
if (Objects.nonNull(vipExpireTime1)) {
timeLong = vipExpireTime1.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
}
// 过期时间
memberProfileDTO.setVipExpireTime(timeLong);
// 头像
memberProfileDTO.setAvatarUrl(memberDTO.getAvatarUrl());
// 生日
memberProfileDTO.setBirthday(memberDTO.getBirthday());
// 性别
memberProfileDTO.setGender(memberDTO.getGender());
// 会员id
memberProfileDTO.setMemberId(memberDTO.getId());
// vip
memberProfileDTO.setVip(vip);
return memberProfileDTO;
}
/**
* 检查vip是否过期
* 1.当前vip如果过期则查看是否有vip历史变动
* 2.如果vip变动历史有记录则获取vip变动记录
* 3.如果vip没有记录则查看是否关注了公众号
* @param vipExpireTime
* @return
*/
private MemberDTO checkVipStatus(MemberDTO memberDTO, LocalDateTime vipExpireTime, String appid) {
Long memberId = memberDTO.getId();
LocalDateTime nowTime = LocalDateTime.now();
//vip过期,回退上个vip状态 同时修改member表vip
if (nowTime.compareTo(vipExpireTime) >= 0 ) {
Integer vip = 0;
LocalDateTime vipExpireTime1 = memberDTO.getVipExpireTime();
//查询小于失效时间的那条记录 查不到 取微信表里 关注状态
MemberVipHistory memberVipHistory = this.memberVipHistoryService.findByTime(memberId, nowTime);
if (ObjectUtil.isNull(memberVipHistory.getId())) {
UserWeixinDTO userWeixin = this.userWeixinService.findFirstByMemberIdAndAppid(memberId, appid);
// 微信公众号关注的状态 0:未关注 1:关注
Integer status = userWeixin.getStatus();
if (status != 1) vip = 0; else vip = 1;
vipExpireTime1 = null;
} else {
vip = memberVipHistory.getVip();
vipExpireTime1 = memberVipHistory.getVipExpireTime();
}
memberDTO.setVipExpireTime(vipExpireTime1);
memberDTO.setVip(vip);
}
return memberDTO;
}
/**
* 查询会员加密信息
* @param memberId
* @return
*/
private MemberProfileDTO findMemberProfileByMemberId(Long memberId) {
return this.memberProfileOperationService.findByMemberId(memberId);
}
}
package com.topdraw.business.process.service.impl.member;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.process.service.member.MemberOperationService;
import com.topdraw.business.process.service.member.MemberProfileOperationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/20 17:34
* @version: :
* @modified By:
* @since : modified in 2022/3/20 17:34
*/
@Service
public class MemberProfileOperationServiceImpl implements MemberProfileOperationService {
@Autowired
private MemberProfileService memberProfileService;
@Autowired
private MemberOperationService memberOperationService;
@Override
public MemberProfileDTO findById(Long id) {
return this.memberProfileService.findById(id);
}
@Override
public MemberProfile create(MemberProfile resources) {
return this.memberProfileService.create(resources);
}
@Override
public MemberProfile createDefault(MemberProfile resources) {
return this.memberProfileService.createDefault(resources);
}
@Override
public MemberProfile createDefault(Member resources) {
return this.memberProfileService.createDefault(resources);
}
@Override
public MemberProfile createDefaultByMemberId(Long resources) {
return this.memberProfileService.createDefaultByMemberId(resources);
}
@Override
public MemberProfileDTO update(MemberProfile resources) {
return this.memberProfileService.update(resources);
}
@Override
public void delete(Long id) {
this.memberProfileService.delete(id);
}
@Override
public MemberProfileDTO findByMemberId(Long memberId) {
return this.memberProfileService.findByMemberId(memberId);
}
@Override
public MemberProfileDTO findByMemberCode(String memberCode) {
return this.memberProfileService.findByMemberCode(memberCode);
}
@Override
public MemberProfileDTO updateMemberProfileAndMember(MemberProfile resources) {
String memberCode = resources.getMemberCode();
MemberDTO memberDTO = null;
if (StringUtils.isEmpty(memberCode)) {
Long memberId = resources.getMemberId();
memberDTO = this.memberOperationService.findById(memberId);
resources.setMemberCode(memberDTO.getCode());
}
return this.memberProfileService.updateMemberProfileAndMember(resources, memberDTO);
}
}
package com.topdraw.business.process.service.impl.member;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.service.MemberRelatedInfoService;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.process.service.member.MemberRelatedInfoOperationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/20 18:41
* @version: :
* @modified By:
* @since : modified in 2022/3/20 18:41
*/
@Service
public class MemberRelatedInfoOperationServiceImpl implements MemberRelatedInfoOperationService {
@Autowired
private MemberRelatedInfoService memberRelatedInfoService;
@Override
public MemberRelatedInfoDTO findById(Long id) {
return this.memberRelatedInfoService.findById(id);
}
@Override
public void create(MemberRelatedInfo resources) {
this.memberRelatedInfoService.create(resources);
}
@Override
public void update(MemberRelatedInfo resources) {
this.memberRelatedInfoService.update(resources);
}
@Override
public void delete(Long id) {
this.memberRelatedInfoService.delete(id);
}
@Override
public MemberRelatedInfoDTO findByIdCard(MemberRelatedInfo resources) {
return this.memberRelatedInfoService.findByIdCard(resources);
}
@Override
public MemberRelatedInfoDTO findByIdCard(String idCard) {
return this.memberRelatedInfoService.findByIdCard(idCard);
}
@Override
public MemberRelatedInfoDTO findByMemberIdAndIdCard(Long memberId, String idCard) {
return this.memberRelatedInfoService.findByMemberIdAndIdCard(memberId, idCard);
}
@Override
public MemberRelatedInfoDTO findByMemberCodeAndIdCard(String memberCode, String idCard) {
return this.memberRelatedInfoService.findByMemberCodeAndIdCard(memberCode, idCard);
}
@Override
public MemberRelatedInfoDTO findByMemberIdAndIdCard(MemberRelatedInfo resources) {
return this.memberRelatedInfoService.findByMemberIdAndIdCard(resources);
}
@Override
public MemberRelatedInfoDTO findByMemberIdAndIdCard(Member member, MemberRelatedInfo resources) {
return this.memberRelatedInfoService.findByMemberIdAndIdCard(member, resources);
}
}
package com.topdraw.business.process.service.member;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO;
public interface MemberAddressOperationService {
/**
* 根据ID查询
* @param resources ID
* @return MemberAddressDTO
*/
MemberAddressDTO findById(Long resources);
/**
* 保存会员地址
* @param resources
*/
MemberAddressDTO create(MemberAddress resources);
/**
* 修改会员地址
* @param resources
*/
MemberAddressDTO update(MemberAddress resources);
/**
* 通过id删除
* @param resources
*/
void delete(Long resources);
}
package com.topdraw.business.process.service.member;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.dto.MemberDTO;
public interface MemberOperationService {
/**
*
* @param memberId
* @return
*/
MemberDTO findById(Long memberId);
/**
*
* @param code
* @return
*/
MemberDTO findByCode(String code);
/**
* 修改会员
* @param resources
*/
MemberDTO update(Member resources);
/**
*
* @param member
*/
MemberDTO doUpdateMember(Member member);
/**
*
* @param member
*/
MemberDTO doInsertMember(Member member);
/**
*
* @param member
*/
MemberDTO doUpdateMemberExp(Member member);
/**
*
* @param member
*/
MemberDTO doUpdateMemberPoints(Member member);
/**
*
* @param member
*/
MemberDTO doUpdateMemberCoupon(Member member);
/**
*
* @param memberId
* @param appid
* @return
*/
MemberProfileDTO getMemberProfileAndCheckVip(Long memberId, String appid);
}
package com.topdraw.business.process.service.member;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
public interface MemberProfileOperationService {
/**
* 根据ID查询
* @param id ID
* @return MemberProfileDTO
*/
MemberProfileDTO findById(Long id);
/**
* 保存
* @param resources 会员基本信息
* @return
*/
MemberProfile create(MemberProfile resources);
/**
* 默认属性
* @param resources
* @return
*/
MemberProfile createDefault(MemberProfile resources);
/**
* 通过会员创建默认属性
* @param resources
* @return
*/
MemberProfile createDefault(Member resources);
/**
* 通过会员id创建默认属性
* @param resources
* @return
*/
MemberProfile createDefaultByMemberId(Long resources);
/**
* 修改
* @param resources
*/
MemberProfileDTO update(MemberProfile resources);
/**
* 删除
* @param id
*/
void delete(Long id);
/**
* 通过会员id查询
* @param memberId
* @return
*/
MemberProfileDTO findByMemberId(Long memberId);
/**
* 通过会员code查询
* @param memberCode
* @return
*/
MemberProfileDTO findByMemberCode(String memberCode);
/**
* 修改会员属性并同步会员信息
* @param resources
*/
MemberProfileDTO updateMemberProfileAndMember(MemberProfile resources);
}
package com.topdraw.business.process.service.member;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
/**
* @author XiangHan
* @date 2021-10-22
*/
public interface MemberRelatedInfoOperationService {
/**
* 根据ID查询
* @param id ID
* @return MemberRelatedInfoDTO
*/
MemberRelatedInfoDTO findById(Long id);
/**
* 新增
* @param resources
*/
void create(MemberRelatedInfo resources);
/**
* 修改
* @param resources
*/
void update(MemberRelatedInfo resources);
/**
* 删除
* @param id
*/
void delete(Long id);
/**
* 通过身份证查询
* @param resources
* @return
*/
MemberRelatedInfoDTO findByIdCard(MemberRelatedInfo resources);
/**
* 通过身份证查询
* @param idCard 身份证
* @return
*/
MemberRelatedInfoDTO findByIdCard(String idCard);
/**
*
* @param memberId
* @param idCard
* @return
*/
MemberRelatedInfoDTO findByMemberIdAndIdCard(Long memberId, String idCard);
/**
*
* @param memberCode
* @param idCard
* @return
*/
MemberRelatedInfoDTO findByMemberCodeAndIdCard(String memberCode, String idCard);
/**
*
* @param resources
* @return
*/
MemberRelatedInfoDTO findByMemberIdAndIdCard(MemberRelatedInfo resources);
/**
*
* @param member
* @param resources
* @return
*/
MemberRelatedInfoDTO findByMemberIdAndIdCard(Member member, MemberRelatedInfo resources);
}
......@@ -34,15 +34,6 @@ public class RabbitMqConfig {
/** 微信侧 公众号关注与取消关注 */
public static final String WEIXIN_SUBORUNSUB_QUEUE = "weixin.subOrUnSub.queue";
//////////////////////////////////////////////////////// 重数 ///////////////////////////////////////////////////////////////
/** 路由(事件)--direct route.key*/
......@@ -53,6 +44,8 @@ public class RabbitMqConfig {
// uc-service 管理侧
public static final String UC_ROUTE_KEY_DIRECT_EVENT_CCC = "uc.route.key.direct.event.ccc";
public static final String ENGINE_TO_IPTV_CONSUMER_MEMBER_DIRECT = "engine.iptv.consumer.member.direct";
@Value("${mutil-mq.service.host}")
private String serviceHost;
@Value("${mutil-mq.service.port}")
......@@ -68,12 +61,6 @@ public class RabbitMqConfig {
@Primary
public ConnectionFactory serviceConnectionFactory(){
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
/*connectionFactory.setHost("139.196.145.150");
connectionFactory.setPort(5672);
connectionFactory.setUsername("admin");
connectionFactory.setPassword("Topdraw1qaz");
connectionFactory.setVirtualHost("member_center");*/
connectionFactory.setHost(serviceHost);
connectionFactory.setPort(servicePort);
connectionFactory.setUsername(serviceUserName);
......@@ -114,11 +101,6 @@ public class RabbitMqConfig {
@Bean(name = "managementConnectionFactory")
public ConnectionFactory managementConnectionFactory(){
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
/*connectionFactory.setHost("139.196.192.242");
connectionFactory.setPort(5672);
connectionFactory.setUsername("member_center");
connectionFactory.setPassword("Tjlh@2021");
connectionFactory.setVirtualHost("member_center");*/
connectionFactory.setHost(managementHost);
connectionFactory.setPort(managementPort);
connectionFactory.setUsername(managementUserName);
......
package com.topdraw.exception;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/10 17:16
* @version: :
* @modified By:
* @since : modified in 2022/3/10 17:16
*/
public interface GlobeExceptionCode {
// 会员信息
Integer MEMBER_CODE_IS_NULL = 000100001;
}
package com.topdraw.exception;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/3/10 17:16
* @version: :
* @modified By:
* @since : modified in 2022/3/10 17:16
*/
public interface GlobeExceptionMsg {
/**************************************************************/
/** 系统 */
String OPERATION_FORBID = "operation forbid";
String ENTITY_ALREADY_EXISTS = "entity already exists";
/**************************************************************/
/** 优惠券 */
String COUPON_ID_IS_NULL = "coupon id is null";
String COUPON_CODE_IS_NULL = "coupon code is null";
/**************************************************************/
/** 会员管理 */
String MEMBER_CODE_IS_NULL = "memberCode is null";
String MEMBER_ID_IS_NULL = "memberId is null";
String MEMBER_ID_AND_CODE_ARE_NULL = "memberId and memberCode both null";
String MEMBER_INFO_ERROR = "member info is error";
String MEMBER_BLOCK_STATUS = "member status is block";
/**************************************************************/
/** 账户管理 **/
/** iptv */
String IPTV_ID_IS_NULL = "iptvId is null";
String IPTV_PLATFORM_ACCOUNT_IS_NULL = "platformAccount is null";
String IPTV_IS_NULL = "iptv is null";
String VIS_USER_ID_IS_NULL = "visUserId is null";
/** 微信 */
String APP_ID_IS_NULL = "appId is null";
String OPEN_ID_IS_NULL = "openId is null";
String UNION_ID_IS_NULL = "unionId is null";
String ALREADY_BIND = "already bind";
}
......@@ -18,8 +18,6 @@ import org.springframework.util.Assert;
@Slf4j
public class UcEngineEventConsumer {
private static final Logger LOG = LoggerFactory.getLogger(UcEngineEventConsumer.class);
@Autowired
AutoRoute autoUser;
......@@ -35,7 +33,7 @@ public class UcEngineEventConsumer {
*/
@RabbitHandler
@RabbitListener(bindings = {
@QueueBinding(value = @Queue(value = RabbitMqConfig.UC_ROUTE_KEY_DIRECT_EVENT_BBB),
@QueueBinding(value = @Queue(value = RabbitMqConfig.ENGINE_TO_IPTV_CONSUMER_MEMBER_DIRECT),
exchange = @Exchange(value = ExchangeTypes.DIRECT))
}, containerFactory = "serviceRabbitListenerContainerFactory")
public void ucEventConsumer(String content) {
......