PointsOperationServiceImpl.java 5.43 KB
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.module.points.available.domain.PointsAvailable;
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.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.service.PointsDetailService;
import com.topdraw.business.process.service.PointsOperationService;
import com.topdraw.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

/**
 *
 */
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
@Slf4j
public class PointsOperationServiceImpl implements PointsOperationService {

    @Autowired
    private MemberService memberService;
    @Autowired
    private PointsDetailService pointsDetailService;
    @Autowired
    private PointsAvailableService pointsAvailableService;


    public void asyncMemberPoint(Member resource) {
        log.info("同步会员积分,参数 asyncMemberPoint# resource ==>> {}", resource);

        String code = resource.getCode();
        if (StringUtils.isBlank(code)) {
            log.error("同步会员积分异常,asyncMemberPoint# message ==>> 会员code不得为空");
            return;
        }

        MemberDTO memberDTO = this.memberService.findByCode(code);
        log.info("同步会员积分,asyncMemberPoint# 通过code ==>> {},查询会员信息,结果集,memberDTO ==>> {}", code, memberDTO);
        if (Objects.isNull(memberDTO.getId())) {
            log.error("同步会员积分异常,asyncMemberPoint# message ==>> 会员信息不存在");
            return;
        }

        resource.setId(memberDTO.getId());

        log.info("同步会员积分,asyncMemberPoint# 入库参数, resource ==>> {}", resource);
        this.memberService.doUpdateMemberPoints(resource);
    }

    public void asyncPointsAvailable(PointsAvailable resource) {
        log.info("同步会员可用积分,参数 asyncPointsAvailable# resource ==>> {}", resource);

        String memberCode = resource.getMemberCode();
        if (StringUtils.isBlank(memberCode)) {
            log.error("同步会员可用积分异常,asyncPointsAvailable# message ==>> 会员code不得为空");
            return;
        }

        MemberDTO memberDTO = this.memberService.findByCode(memberCode);
        log.info("同步会员可用积分,asyncPointsAvailable# 通过code ==>> {},查询会员信息,结果集,memberDTO ==>> {}", memberCode, memberDTO);
        if (Objects.isNull(memberDTO.getId())) {
            log.error("同步会员可用积分异常,asyncPointsAvailable# message ==>> 会员信息不存在 || code ==>> {}", memberCode);
            return;
        }

        resource.setMemberId(memberDTO.getId());

        log.info("同步会员可用积分,asyncPointsAvailable# 入库参数, resource ==>> {}", resource);
        this.pointsAvailableService.create4Custom(resource);
    }

    public void asyncPointsDetail(PointsDetail resource) {
        log.info("同步会员积分流水,参数 asyncPointsDetail# resource ==>> {}", resource);

        String memberCode = resource.getMemberCode();
        if (StringUtils.isBlank(memberCode)) {
            log.error("同步会员积分流水异常,asyncPointsDetail# message ==>> 会员code不得为空");
            return;
        }

        MemberDTO memberDTO = this.memberService.findByCode(memberCode);
        log.info("同步会员积分流水,asyncPointsDetail# 通过code ==>> {},查询会员信息,结果集,memberDTO ==>> {}", memberCode, memberDTO);
        if (Objects.nonNull(memberDTO.getId())) {
            log.error("同步会员积分流水异常,asyncPointsDetail# message ==>> 会员信息不存在 || code ==>> {}", memberCode);
            return;
        }

        resource.setMemberId(memberDTO.getId());

        log.info("同步会员积分流水,asyncPointsDetail# 入库参数, resource ==>> {}", resource);
        this.pointsDetailService.create4Custom(resource);
    }

    public void asyncDeletePointsAvailable(PointsAvailable resource) {
        log.info("同步删除会员可用积分,参数 asyncDeletePointsAvailable# resource ==>> {}", resource);

        String code = resource.getCode();
        if (StringUtils.isBlank(code)) {
            log.error("同步删除会员可用积分异常,asyncDeletePointsAvailable# message ==>> 可用积分code不得为空");
            return;
        }

        PointsAvailableDTO pointsAvailableDTO = this.pointsAvailableService.getByCode(code);
        log.info("同步会员积分流水,asyncPointsDetail# 通过code ==>> {},查询会员可用积分,结果集,pointsAvailableDTO ==>> {}", code, pointsAvailableDTO);

        log.info("同步会员积分流水,asyncPointsDetail# 删除可用积分,入库参数,pointsAvailableDTO ==>> {}", pointsAvailableDTO);
        this.pointsAvailableService.delete(pointsAvailableDTO.getId());
    }
}