Commit f2560343 f2560343b026e49c5119c1d247d9d82ae8c12a84 by xianghan@topdraw.cn

1.接口优化,删除不必要的接口

1 parent 94e2d596
Showing 22 changed files with 177 additions and 326 deletions
......@@ -20,13 +20,6 @@
<dependencies>
<!--redisson-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.16.3</version>
</dependency>
<!--api-->
<dependency>
<groupId>com.topdraw</groupId>
......
......@@ -2,13 +2,12 @@ package com.topdraw.business.module.exp.detail.service.impl;
import com.topdraw.business.module.exp.detail.domain.ExpDetail;
import com.topdraw.business.module.exp.detail.domain.ExpDetailBuilder;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.module.exp.detail.repository.ExpDetailRepository;
import com.topdraw.business.module.exp.detail.service.ExpDetailService;
import com.topdraw.business.module.exp.detail.service.dto.ExpDetailDTO;
import com.topdraw.business.module.exp.detail.service.mapper.ExpDetailMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -32,7 +31,7 @@ public class ExpDetailServiceImpl implements ExpDetailService {
private ExpDetailMapper expDetailMapper;
@Autowired
private RedissonClient redissonClient;
private RedisUtils redisUtils;
@Override
public ExpDetailDTO findById(Long id) {
......@@ -51,7 +50,7 @@ public class ExpDetailServiceImpl implements ExpDetailService {
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ExpDetail resources) {
RLock rLock = this.redissonClient.getLock(resources.getId().toString());
this.redisUtils.doLock("expDetail::memberId::" + resources.getMemberId());
try {
ExpDetail ExpDetail = this.expDetailRepository.findById(resources.getId()).orElseGet(ExpDetail::new);
ValidationUtil.isNull( ExpDetail.getId(),"ExpDetail","id",resources.getId());
......@@ -61,7 +60,7 @@ public class ExpDetailServiceImpl implements ExpDetailService {
e.printStackTrace();
throw e;
} finally {
rLock.unlock();
this.redisUtils.doUnLock("expDetail::memberId::" + resources.getMemberId());
}
}
......
......@@ -4,15 +4,13 @@ import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.domain.MemberAddressBuilder;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
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.mapper.MemberAddressMapper;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -37,7 +35,7 @@ public class MemberAddressServiceImpl implements MemberAddressService {
private MemberAddressRepository memberAddressRepository;
@Autowired
private RedissonClient redissonClient;
private RedisUtils redisUtils;
@Override
public MemberAddressDTO findById(Long id) {
......@@ -62,10 +60,10 @@ public class MemberAddressServiceImpl implements MemberAddressService {
public void update(MemberAddress resources) {
log.info("MemberAddressServiceImpl ==>> update ==>> param ==>> [{}]",resources);
Assert.notNull(resources.getId(),"id can't be null");
RLock rLock = this.redissonClient.getLock("MemberAddress::update::code" + resources.getId());
// RLock rLock = this.redissonClient.getLock("MemberAddress::update::code" + resources.getId());
try {
RedissonUtil.lock(rLock);
// RedissonUtil.lock(rLock);
this.redisUtils.doLock("MemberAddress::update::code" + resources.getId());
MemberDTO memberDTO = this.checkMember(resources);
resources.setMemberCode(memberDTO.getCode());
......@@ -78,7 +76,8 @@ public class MemberAddressServiceImpl implements MemberAddressService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
// RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("MemberAddress::update::code" + resources.getId());
}
}
......
......@@ -37,7 +37,7 @@ public class Member implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@NotNull(message = "code can't be null!!",groups = {UpdateGroup.class})
@NotNull(message = "id can't be null!!",groups = {UpdateGroup.class})
private Long id;
/** 标识 */
......
......@@ -6,7 +6,7 @@ import com.topdraw.business.module.member.profile.domain.MemberProfileBuilder;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.util.Base64Util;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.StringUtils;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.module.member.profile.repository.MemberProfileRepository;
......@@ -14,8 +14,6 @@ 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.mapper.MemberProfileMapper;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -37,12 +35,12 @@ public class MemberProfileServiceImpl implements MemberProfileService {
@Autowired
private MemberService memberService;
@Autowired
private RedissonClient redissonClient;
@Autowired
private MemberProfileMapper memberProfileMapper;
@Autowired
private MemberProfileRepository memberProfileRepository;
@Autowired
private RedisUtils redisUtils;
@Override
public MemberProfileDTO findById(Long id) {
......@@ -112,10 +110,8 @@ public class MemberProfileServiceImpl implements MemberProfileService {
public void update(MemberProfile resources) {
log.info("MemberProfileServiceImpl ==>> update ==>> resources ===>> [{}]",resources);
RLock rLock = this.redissonClient.getLock("memberProfile::update::id" + resources.getId());
this.redisUtils.doLock("memberProfile::update::id" + resources.getId());
try {
RedissonUtil.lock(rLock);
// 检查会员是否存在
this.checkMember(resources);
// 真实姓名(加密)
......@@ -133,7 +129,7 @@ public class MemberProfileServiceImpl implements MemberProfileService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("memberProfile::update::id" + resources.getId());
}
}
......
......@@ -8,15 +8,13 @@ import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.exception.BadRequestException;
import com.topdraw.exception.GlobeExceptionMsg;
import com.topdraw.util.Base64Util;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
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.mapper.MemberRelatedInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -44,7 +42,7 @@ public class MemberRelatedInfoServiceImpl implements MemberRelatedInfoService {
private MemberRelatedInfoRepository memberRelatedInfoRepository;
@Autowired
private RedissonClient redissonClient;
private RedisUtils redisUtils;
private static final String DEFAULT_IDCARD = "000000000000000000";
......@@ -108,9 +106,8 @@ public class MemberRelatedInfoServiceImpl implements MemberRelatedInfoService {
@Transactional(rollbackFor = Exception.class)
public void update(MemberRelatedInfo resources) {
log.info("MemberRelatedInfoServiceImpl ==>> update ==>> param ==>> [{}]",resources);
RLock rLock = this.redissonClient.getLock("memberRelatedInfo::update::id" + resources.getId());
this.redisUtils.doLock("memberRelatedInfo::update::id" + resources.getId());
try {
RedissonUtil.lock(rLock);
this.checkMemberAndEncodeRealname(resources);
......@@ -126,7 +123,7 @@ public class MemberRelatedInfoServiceImpl implements MemberRelatedInfoService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("memberRelatedInfo::update::id" + resources.getId());
}
}
......
package com.topdraw.business.module.member.rest;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.aop.log.Log;
import com.topdraw.business.module.common.validated.CreateGroup;
import com.topdraw.business.module.common.validated.UpdateGroup;
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.user.iptv.domain.UserTv;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.service.UserOperationService;
......@@ -32,6 +34,7 @@ public class MemberController {
@Autowired
private UserOperationService userTvOperationService;
@Log("为大屏账户创建会员")
@RequestMapping(value = "/createMemberByUserTv")
@ApiOperation("为大屏账户创建会员")
......
......@@ -11,6 +11,8 @@ import java.util.List;
*/
public interface MemberService {
/**
* 根据ID查询
* @param id ID
......@@ -30,26 +32,26 @@ public interface MemberService {
* @param resources
* @return Long id
*/
Long create(Member resources);
MemberDTO create(Member resources);
/**
* 创建并返回会员
* @param resources 会员
* @return Member
*/
Member createAndReturnMember(Member resources);
MemberDTO createAndReturnMember(Member resources);
/**
* 修改会员
* @param resources
*/
void update(Member resources);
MemberDTO update(Member resources);
/**
* 修改会员积分
* @param member 会员
*/
void doUpdateMemberPoints(Member member);
MemberDTO doUpdateMemberPoints(Member member);
/**
* 查询绑定了大屏会员列表
......
......@@ -9,14 +9,15 @@ import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.mapper.MemberMapper;
import com.topdraw.exception.BadRequestException;
import com.topdraw.exception.GlobeExceptionMsg;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
......@@ -40,15 +41,15 @@ public class MemberServiceImpl implements MemberService {
private MemberProfileService memberProfileService;
@Autowired
private RedissonClient redissonClient;
private RedisUtils redisUtils;
@Override
public MemberDTO findById(Long id) {
Member member = this.memberRepository.findById(id).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(),"Member","id",id);
return memberMapper.toDto(member);
return this.memberMapper.toDto(member);
}
......@@ -58,7 +59,7 @@ public class MemberServiceImpl implements MemberService {
Member member = this.memberRepository.findFirstByCode(code).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(),"Member","id",code);
return memberMapper.toDto(member);
return this.memberMapper.toDto(member);
}
......@@ -67,7 +68,7 @@ public class MemberServiceImpl implements MemberService {
Member member = this.memberRepository.findByIdOrCode(id,code).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(),"Member","param",code);
return memberMapper.toDto(member);
return this.memberMapper.toDto(member);
}
......@@ -76,7 +77,7 @@ public class MemberServiceImpl implements MemberService {
List<Member> memberList = this.memberRepository.findByUserIptvId(id);
return memberMapper.toDto(memberList);
return this.memberMapper.toDto(memberList);
}
......@@ -101,7 +102,7 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(rollbackFor = Exception.class)
public Long create(Member resources) {
public MemberDTO create(Member resources) {
Member member = MemberBuilder.build(resources);
Long memberId = this.save(member);
......@@ -110,28 +111,27 @@ public class MemberServiceImpl implements MemberService {
// 保存会员属性
this.memberProfileService.createDefault(member);
return member.getId();
return this.memberMapper.toDto(member);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Member createAndReturnMember(Member resources) {
public MemberDTO createAndReturnMember(Member resources) {
this.create(MemberBuilder.build(resources));
MemberDTO memberDTO = this.create(MemberBuilder.build(resources));
return resources;
return memberDTO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Member resources) {
public MemberDTO update(Member resources) {
log.info("MemberServiceImpl ==>> update ==>> resources ==>> [{}]" , resources);
RLock rLock = this.redissonClient.getLock("member::update::code" + resources.getCode());
this.redisUtils.doLock("member::update::code" + resources.getCode());
try {
RedissonUtil.lock(rLock);
MemberDTO memberDTO = this.checkMember(resources);
Member member = new Member();
......@@ -140,11 +140,13 @@ public class MemberServiceImpl implements MemberService {
this.save(member);
return this.memberMapper.toDto(member);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("member::update::code" + resources.getCode());
}
}
......@@ -157,19 +159,23 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(rollbackFor = Exception.class)
public void doUpdateMemberPoints(Member resources) {
RLock rLock = this.redissonClient.getLock("member::update::code" + resources.getId().toString());
public MemberDTO doUpdateMemberPoints(Member resources) {
try {
RedissonUtil.lock(rLock);
this.redisUtils.doLock("member::update::code" + resources.getCode());
Member member = this.memberRepository.findById(resources.getId()).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(), "Member", "id", resources.getId());
member.copy(resources);
this.save(member);
return this.memberMapper.toDto(member);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("member::update::code" + resources.getCode());
}
}
......
package com.topdraw.business.module.points.available.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.module.points.available.domain.PointsAvailable;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.module.points.available.repository.PointsAvailableRepository;
import com.topdraw.business.module.points.available.service.PointsAvailableService;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.module.points.available.service.mapper.PointsAvailableMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.time.LocalDateTime;
......@@ -41,7 +33,7 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
private PointsAvailableMapper PointsAvailableMapper;
@Autowired
private RedissonClient redissonClient;
private RedisUtils redisUtils;
@Override
public List<PointsAvailableDTO> findByMemberIdOrderByExpireTime(Long memberId) {
......@@ -58,24 +50,22 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
@Override
@Transactional(rollbackFor = Exception.class)
public void create(PointsAvailable resources) {
RLock rLock = this.redissonClient.getLock("PointsAvailable::create::id"+resources.getMemberId().toString());
this.redisUtils.doLock("PointsAvailable::create::id"+resources.getMemberId().toString());
try {
RedissonUtil.lock(rLock);
PointsAvailableRepository.save(resources);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("PointsAvailable::create::id"+resources.getMemberId().toString());
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(PointsAvailable resources) {
RLock rLock = this.redissonClient.getLock("PointsAvailable::update::id"+resources.getMemberId().toString());
this.redisUtils.doLock("PointsAvailable::update::id"+resources.getMemberId().toString());
try {
RedissonUtil.lock(rLock);
PointsAvailable PointsAvailable = PointsAvailableRepository.findById(resources.getId()).orElseGet(PointsAvailable::new);
ValidationUtil.isNull( PointsAvailable.getId(),"PointsAvailable","id",resources.getId());
PointsAvailable.copy(resources);
......@@ -84,7 +74,7 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("PointsAvailable::update::id"+resources.getMemberId().toString());
}
}
......@@ -92,9 +82,8 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
RLock rLock = this.redissonClient.getLock("PointsAvailable::delete::id"+id);
this.redisUtils.doLock("PointsAvailable::delete::id"+id);
try {
RedissonUtil.lock(rLock);
PointsAvailable PointsAvailable = PointsAvailableRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", PointsAvailable.class, id), 1));
PointsAvailableRepository.delete(PointsAvailable);
......@@ -102,22 +91,21 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doLock("PointsAvailable::delete::id"+id);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteBatchByIds(List<Long> id) {
RLock rLock = this.redissonClient.getLock("PointsAvailable::create::id"+id.get(0));
this.redisUtils.doLock("PointsAvailable::create::id"+id);
try {
RedissonUtil.lock(rLock);
PointsAvailableRepository.deleteBatchByIds(id);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("PointsAvailable::create::id"+id);
}
}
......@@ -154,9 +142,8 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
@Override
public void delete4Custom(Long id) {
Assert.notNull(id, "The given id must not be null!");
RLock rLock = this.redissonClient.getLock("PointsAvailable::delete::id"+id);
this.redisUtils.doLock("PointsAvailable::delete::id"+id);
try {
RedissonUtil.lock(rLock);
PointsAvailable PointsAvailable = PointsAvailableRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", PointsAvailable.class, id), 1));
PointsAvailableRepository.delete(PointsAvailable);
......@@ -164,21 +151,20 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("PointsAvailable::delete::id"+id);
}
}
@Override
public void create4Custom(PointsAvailable resources) {
RLock rLock = this.redissonClient.getLock("PointsAvailable::create::id"+resources.getMemberId().toString());
this.redisUtils.doLock("PointsAvailable::create::id"+resources.getMemberId().toString());
try {
RedissonUtil.lock(rLock);
PointsAvailableRepository.save(resources);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("PointsAvailable::create::id"+resources.getMemberId().toString());
}
}
......
package com.topdraw.business.module.points.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.module.points.domain.Points;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.module.points.repository.PointsRepository;
import com.topdraw.business.module.points.service.PointsService;
import com.topdraw.business.module.points.service.dto.PointsDTO;
import com.topdraw.business.module.points.service.dto.PointsQueryCriteria;
import com.topdraw.business.module.points.service.mapper.PointsMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -42,7 +39,7 @@ public class PointsServiceImpl implements PointsService {
private PointsMapper PointsMapper;
@Autowired
private RedissonClient redissonClient;
private RedisUtils redisUtils;
@Override
public Map<String, Object> queryAll(PointsQueryCriteria criteria, Pageable pageable) {
......@@ -73,9 +70,8 @@ public class PointsServiceImpl implements PointsService {
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Points resources) {
RLock rLock = this.redissonClient.getLock(resources.getId().toString());
this.redisUtils.doLock("Points::update::userId"+resources.getUserId().toString());
try {
RedissonUtil.lock(rLock);
Points Points = PointsRepository.findById(resources.getId()).orElseGet(Points::new);
ValidationUtil.isNull(Points.getId(), "Points", "id", resources.getId());
Points.copy(resources);
......@@ -84,7 +80,7 @@ public class PointsServiceImpl implements PointsService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("Points::update::userId"+resources.getUserId().toString());
}
}
......
package com.topdraw.business.module.rights.service;
import com.topdraw.business.module.rights.domain.Rights;
import com.topdraw.business.module.rights.service.dto.RightsDTO;
import com.topdraw.business.module.rights.service.dto.RightsQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
/**
* @author XiangHan
......@@ -14,21 +9,6 @@ import java.util.List;
public interface RightsService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(RightsQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<RightsDTO>
*/
List<RightsDTO> queryAll(RightsQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return RightsDTO
......@@ -36,19 +16,6 @@ public interface RightsService {
RightsDTO findById(Long id);
/**
* 批量查询
* @param ids
* @return
*/
List<RightsDTO> findBatchByIds(Long... ids);
void create(Rights resources);
void update(Rights resources);
void delete(Long id);
/**
* Code校验
* @param code
* @return RightsDTO
......
package com.topdraw.business.module.rights.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.module.rights.domain.Rights;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.*;
import com.topdraw.business.module.rights.repository.RightsRepository;
import com.topdraw.business.module.rights.service.RightsService;
import com.topdraw.business.module.rights.service.dto.RightsDTO;
import com.topdraw.business.module.rights.service.dto.RightsQueryCriteria;
import com.topdraw.business.module.rights.service.mapper.RightsMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
/**
* @author XiangHan
......@@ -41,18 +26,7 @@ public class RightsServiceImpl implements RightsService {
private RightsMapper RightsMapper;
@Autowired
private RedissonClient redissonClient;
@Override
public Map<String, Object> queryAll(RightsQueryCriteria criteria, Pageable pageable) {
Page<Rights> page = RightsRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(RightsMapper::toDto));
}
@Override
public List<RightsDTO> queryAll(RightsQueryCriteria criteria) {
return RightsMapper.toDto(RightsRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
private RedisUtils redisUtils;
@Override
public RightsDTO findById(Long id) {
......@@ -62,45 +36,6 @@ public class RightsServiceImpl implements RightsService {
}
@Override
public List<RightsDTO> findBatchByIds(Long... ids) {
List<Rights> rightsList = this.RightsRepository.findBatchByIds(ids);
return !CollectionUtils.isEmpty(rightsList) ? RightsMapper.toDto(rightsList) : null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(Rights resources) {
RightsRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Rights resources) {
RLock rLock = this.redissonClient.getLock(resources.getId().toString());
try {
Rights Rights = RightsRepository.findById(resources.getId()).orElseGet(Rights::new);
ValidationUtil.isNull( Rights.getId(),"Rights","id",resources.getId());
Rights.copy(resources);
RightsRepository.save(Rights);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
rLock.unlock();
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
Rights Rights = RightsRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", Rights.class, id), 1));
RightsRepository.delete(Rights);
}
@Override
public RightsDTO getByCode(String code) {
return StringUtils.isNotEmpty(code) ? RightsMapper.toDto(RightsRepository.findFirstByCode(code).orElseGet(Rights::new))
: new RightsDTO();
......
......@@ -2,11 +2,16 @@ package com.topdraw.business.process.rest;
import cn.hutool.core.util.ObjectUtil;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.aop.log.Log;
import com.topdraw.business.module.common.validated.CreateGroup;
import com.topdraw.business.module.common.validated.UpdateGroup;
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.iptv.domain.UserTv;
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;
......@@ -16,7 +21,9 @@ import com.topdraw.common.ResultInfo;
import com.topdraw.exception.BadRequestException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
......@@ -25,6 +32,8 @@ import java.util.Objects;
@Api("会员处理")
@RestController
@RequestMapping(value = "/ucEngine/api/memberOperation")
@CrossOrigin
@Slf4j
public class MemberOperationController {
@Autowired
......@@ -36,6 +45,31 @@ public class MemberOperationController {
@Autowired
private MemberService memberService;
@Log("查询会员")
@GetMapping(value = "/findById/{id}")
@ApiOperation("查询会员")
@AnonymousAccess
public ResultInfo findById(@PathVariable(value = "id") Long id) {
log.info("memberOperation ==>> findById ==>> param ==>> [{}]",id);
MemberDTO memberDTO = this.memberOperationService.findById(id);
log.info("memberOperation ==>> findById ==>> result ==>> [{}]",memberDTO);
return ResultInfo.success(memberDTO);
}
@Log("手动修改vip")
@RequestMapping(value = "/doUpdateVipByCode")
@ApiOperation("手动修改vip")
@AnonymousAccess
public ResultInfo doUpdateVipByCode(@Validated(value = {UpdateGroup.class}) @RequestBody Member resources) {
log.info("member ==>> doUpdateVipByCode ==>> param ==>> [{}]",resources);
MemberDTO memberDTO = this.memberService.findByCode(resources.getCode());
resources.setId(memberDTO.getId());
this.memberOperationService.update(resources);
log.info("member ==>> doUpdateVipByCode ==>> result ==>> [{}]",resources);
return ResultInfo.success();
}
@GetMapping("/getMemberProfileAndCheckVip/{appId}/{memberId}")
@ApiOperation("获取会员基本信息并且检查vip状态")
@AnonymousAccess
......
......@@ -11,13 +11,13 @@ public interface MemberOperationService {
*
* @param member
*/
void doUpdateMemberInfo(Member member);
MemberDTO doUpdateMemberInfo(Member member);
/**
*
* @param member
*/
void doInsertMember(Member member);
MemberDTO doInsertMember(Member member);
/**
*
......@@ -30,19 +30,19 @@ public interface MemberOperationService {
*
* @param member
*/
void doUpdateMemberExp(Member member);
MemberDTO doUpdateMemberExp(Member member);
/**
*
* @param member
*/
void doUpdateMemberPoints(Member member);
MemberDTO doUpdateMemberPoints(Member member);
/**
*
* @param member
*/
void doUpdateMemberCoupon(Member member);
MemberDTO doUpdateMemberCoupon(Member member);
/**
*
......@@ -63,5 +63,6 @@ public interface MemberOperationService {
* 修改会员
* @param resources
*/
void update(Member resources);
MemberDTO update(Member resources);
}
......
......@@ -11,10 +11,7 @@ import com.topdraw.business.process.service.CouponOperationService;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.domian.TempCoupon;
import com.topdraw.business.process.service.RightsOperationService;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import com.topdraw.utils.RedisUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
......@@ -22,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
......@@ -43,11 +39,13 @@ public class CouponOperationServiceImpl implements CouponOperationService {
RightsOperationService rightsOperationService;
@Autowired
MemberService memberService;
@Autowired
RedissonClient redissonClient;
@Autowired
ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Autowired
private RedisUtils redisUtils;
// 过期阀值(默认一个月)
private static final Integer EXPIRE_FACTOR_DAY = 30;
......@@ -94,9 +92,8 @@ public class CouponOperationServiceImpl implements CouponOperationService {
// Long userId = tempCoupon.getUserId();
Long memberId = tempCoupon.getMemberId();
Integer rightsAmount = tempCoupon.getRightsAmount();
RLock rLock = this.redissonClient.getLock("refreshMemberCoupon:" + memberId.toString());
try {
RedissonUtil.lock(rLock);
this.redisUtils.doLock("refreshMemberCoupon:" + memberId.toString());
// 1.历史总优惠券数量
Long historyCouponCount = this.getTotalHistoryCoupon(memberId);
// 1.当前总优惠券数量
......@@ -113,7 +110,7 @@ public class CouponOperationServiceImpl implements CouponOperationService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("refreshMemberCoupon:" + memberId.toString());
}
}
......
......@@ -12,11 +12,8 @@ import com.topdraw.business.process.service.ExpOperationService;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.domian.TempExp;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.RedisUtils;
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;
......@@ -45,11 +42,13 @@ public class ExpOperationServiceImpl implements ExpOperationService {
MemberLevelService memberLevelService;
@Autowired
MemberService memberService;
@Autowired
RedissonClient redissonClient;
@Autowired
ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Autowired
private RedisUtils redisUtils;
@Override
@AsyncMqSend
public void grantPointsThroughTempExp(List<TempExp> tempExpList) {
......@@ -80,9 +79,8 @@ public class ExpOperationServiceImpl implements ExpOperationService {
* @param tempExp
*/
private void refresh(TempExp tempExp) {
RLock lock = this.redissonClient.getLock("uc-refresh-exp:" + tempExp.getMemberId());
try {
RedissonUtil.lock(lock);
this.redisUtils.doLock("uc-refresh-exp:" + tempExp.getMemberId());
// 原始积分
long originExp = this.getExpByMemberId(tempExp);
// 总积分
......@@ -98,7 +96,7 @@ public class ExpOperationServiceImpl implements ExpOperationService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(lock);
this.redisUtils.doUnLock("uc-refresh-exp:" + tempExp.getMemberId());
}
}
......
......@@ -16,6 +16,10 @@ import com.topdraw.business.process.service.MemberOperationService;
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.CacheEvict;
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;
......@@ -25,6 +29,7 @@ import java.time.ZoneOffset;
import java.util.Objects;
@Service
@CacheConfig(cacheNames = "member")
public class MemberOperationServiceImpl implements MemberOperationService {
@Autowired
......@@ -38,14 +43,15 @@ public class MemberOperationServiceImpl implements MemberOperationService {
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@CachePut(key = "#resources.memberId")
@Override
public MemberDTO buyVip(BuyVipBean criteria) {
public MemberDTO buyVip(BuyVipBean resources) {
// 小程序账户id
Long id = criteria.getId();
Long id = resources.getId();
// 过期时间
LocalDateTime vipExpireTime1 = criteria.getVipExpireTime();
Integer vip1 = criteria.getVip();
LocalDateTime vipExpireTime1 = resources.getVipExpireTime();
Integer vip1 = resources.getVip();
// 查询微信账户
UserWeixinDTO userWeixin = this.findWeiXinById(id);
......@@ -90,11 +96,14 @@ public class MemberOperationServiceImpl implements MemberOperationService {
return memberDTO;
}
@CachePut(key = "#resources.id")
@Override
public void update(Member resources) {
this.memberService.update(resources);
public MemberDTO update(Member resources) {
MemberDTO member = this.memberService.update(resources);
return member;
}
private UserWeixinDTO findWeiXinById(Long id) {
UserWeixinDTO userWeixinDTO = this.userWeixinService.findById(id);
if (Objects.isNull(userWeixinDTO)) {
......@@ -105,35 +114,40 @@ public class MemberOperationServiceImpl implements MemberOperationService {
}
@Override
public void doUpdateMemberInfo(Member member) {
Long id = member.getId();
public MemberDTO doUpdateMemberInfo(Member resources) {
Long id = resources.getId();
Assert.notNull(id,"ERROR MSG: MemberOperationServiceImpl -> doUpdateMemberInfo -> id not be null!!");
this.memberService.update(member);
return this.update(resources);
}
@CachePut(key = "#resources.id")
@Override
public void doInsertMember(Member member) {
this.memberService.create(member);
public MemberDTO doInsertMember(Member resources) {
return this.memberService.create(resources);
}
@Cacheable(key = "#memberId")
@Override
public MemberDTO findById(Long memberId) {
return Objects.nonNull(memberId) ? this.memberService.findById(memberId) : null;
MemberDTO memberDTO = this.memberService.findById(memberId);
return Objects.nonNull(memberId) ? memberDTO : null;
}
@Override
public void doUpdateMemberExp(Member member) {
this.doUpdateMemberInfo(member);
public MemberDTO doUpdateMemberExp(Member member) {
return this.update(member);
}
@CachePut(key = "#resources.id")
@Override
public void doUpdateMemberPoints(Member member) {
this.memberService.doUpdateMemberPoints(member);
public MemberDTO doUpdateMemberPoints(Member resources) {
return this.memberService.doUpdateMemberPoints(resources);
}
@Override
public void doUpdateMemberCoupon(Member member) {
this.doUpdateMemberInfo(member);
public MemberDTO doUpdateMemberCoupon(Member member) {
return this.update(member);
}
@Override
......
......@@ -17,12 +17,10 @@ import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.service.PointsOperationService;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.RedisUtils;
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;
......@@ -60,16 +58,18 @@ public class PointsOperationServiceImpl implements PointsOperationService {
@Autowired
MemberService memberService;
@Autowired
private RedisUtils redisUtils;
@Autowired
ThreadPoolTaskExecutor threadPoolTaskExecutor;
// 过期阈值 30天
private static final Integer EXPIRE_FACTOR = 30;
private static final String DELETE_AVAILABLE_POINTS = "delete";
private static final String INSERT_AVAILABLE_POINTS = "insert";
@Autowired
RedissonClient redissonClient;
@Autowired
ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -104,9 +104,8 @@ public class PointsOperationServiceImpl implements PointsOperationService {
Long memberId = tempPoints.getMemberId();
RLock rLock = this.redissonClient.getLock("member::id::" + memberId.toString());
try {
RedissonUtil.lock(rLock);
this.redisUtils.doLock("member::id::" + memberId.toString());
//1.删除过期的积分
this.cleanInvalidAvailablePointsByMemberId(memberId);
// 1.判断可用积分是否够用
......@@ -139,7 +138,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("member::id::" + memberId.toString());
}
return customPointsResult;
......@@ -414,11 +413,8 @@ public class PointsOperationServiceImpl implements PointsOperationService {
private void refresh(TempPoints tempPoints) {
Long memberId = tempPoints.getMemberId();
log.info("----------->> 会员id ===>>>>" + memberId);
RLock rLock = this.redissonClient.getLock("member::id::" + memberId.toString());
log.info("----------->> rLock --->> start" );
try {
RedissonUtil.lock(rLock);
this.redisUtils.doLock("member::id::" + memberId.toString());
// 1.可用总积分
Long currentPoints = this.findAvailablePointsByMemberId(memberId);
log.info("----------->> 可用总积分 --->>>> " + currentPoints);
......@@ -447,7 +443,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
this.redisUtils.doUnLock("member::id::" + memberId.toString());
}
}
......
......@@ -1063,7 +1063,7 @@ public class UserOperationServiceImpl implements UserOperationService {
* @return
*/
private Long createMember(Member member){
return this.memberService.create(member);
return this.memberService.create(member).getId();
}
/**
......
package com.topdraw.config;
import com.topdraw.utils.StringUtils;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissonConfig {
// @Value("122.112.214.149")
@Value("${spring.redis.host}")
private String redisHost;
@Value("${spring.redis.port}")
private String port;
@Value("${spring.redis.password}")
private String password;
@Bean
public Redisson redisson(){
Config config = new Config();
if (StringUtils.isNotEmpty(password)) {
config.useSingleServer().setAddress("redis://"+redisHost+":"+port).setPassword(password);
} else {
config.useSingleServer().setAddress("redis://"+redisHost+":"+port);
}
/* config.useClusterServers().addNodeAddress(
"redis://172.29.3.245:6375","redis://172.29.3.245:6376", "redis://172.29.3.245:6377",
"redis://172.29.3.245:6378","redis://172.29.3.245:6i379", "redis://172.29.3.245:6380")
.setPassword("a123456").setScanInterval(5000);*/
Redisson redissonClient = (Redisson)Redisson.create(config);
return redissonClient;
}
}
package com.topdraw.util;
import org.redisson.api.RLock;
public class RedissonUtil {
public static void lock(RLock rLock){
rLock.lock();
}
public static void unlock(RLock rLock){
if (rLock.isLocked() && rLock.isHeldByCurrentThread())
rLock.unlock();
}
/**
* 保存数据
* @param key 键
* @param value 值
* @param validTime 过期时间
*/
public static void doSave(String key , String value , Integer validTime){
}
}