k94314517
2024-01-11 9ffa4aac7e3ae6b268dbc3567a0749a9898c3708
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java
@@ -3,14 +3,20 @@
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ReUtil;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.CardBingdingRequest;
import com.doumee.core.haikang.model.param.request.CardDeletionRequest;
import com.doumee.core.haikang.model.param.request.CardInfoRequest;
import com.doumee.core.haikang.model.param.request.CardLossRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.response.CarEventDTO;
import com.doumee.dao.business.*;
@@ -27,6 +33,8 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.impl.hksync.HkSyncOrgUserServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -60,9 +68,38 @@
    private MemberCardJoinMapper memberCardJoinMapper;
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public Integer create(MemberCard memberCard) {
        LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Objects.isNull(memberCard.getMemberId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        memberCard.setCreator(userInfo.getId());
        memberCard.setCreateDate(new Date());
        memberCard.setStatus(Constants.ONE);
        memberCardMapper.insert(memberCard);
        dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId()));
        Member member = memberMapper.selectById(memberCard.getMemberId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息");
        }
        CardBingdingRequest param = new CardBingdingRequest();
        if(member.getStartTime() !=null && member.getEndTime()!=null){
            param.setStartDate(DateUtil.getISO8601Timestamp(member.getStartTime()));
            param.setEndDate(DateUtil.getISO8601Timestamp(member.getEndTime()));
        }
        CardInfoRequest cr = new CardInfoRequest();
        cr.setCardNo(memberCard.getCode());
        cr.setOrgIndexCode(member.getCompanyHkId());
        cr.setPersonId(member.getHkId());
        cr.setCardType(memberCard.getType());
        List<CardInfoRequest> cardList = new ArrayList<>();
        cardList.add(cr);
        param.setCardList(cardList);
        BaseResponse response = HKService.cardBingding(param);
        if(response==null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData()==null){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
        }
        return memberCard.getId();
    }
@@ -90,25 +127,80 @@
        memberCardMapper.updateById(memberCard);
    }
    /**
     * 批量挂失/解挂
     * @param memberCards 实体集
     * @param type 0=挂失;1=解挂
     */
    @Override
    public void updateByIdInBatch(List<MemberCard> memberCards) {
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void updateByIdInBatch(List<MemberCard> memberCards,Integer type) {
        LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if (CollectionUtils.isEmpty(memberCards)) {
            return;
        }
        CardLossRequest param = new CardLossRequest();
        List<CardDeletionRequest> cardList = new ArrayList();
        for (MemberCard memberCard: memberCards) {
            MemberCard model = memberCardMapper.selectById(memberCard.getId());
            if(type.equals(Constants.ZERO)){
                //挂失操作
                if(!model.getStatus().equals(Constants.MemberCard.normal)){
                    continue;
                }
            }else{
                //解挂操作
                if(!model.getStatus().equals(Constants.MemberCard.loss)){
                    continue;
                }
            }
            CardDeletionRequest cardDeletionRequest = this.dealCardData(model);
            memberCard.setEditDate(new Date());
            memberCard.setEditor(userInfo.getId());
            this.updateById(memberCard);
            cardList.add(cardDeletionRequest);
            param.setCardList(cardList);
        }
        BaseResponse response = new BaseResponse();
        if(type.equals(Constants.ZERO)){
            response = HKService.cardLoss(param);
        }else{
            response = HKService.cardUnLoss(param);
        }
        if(response==null
                ||!StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
        }
    }
    public CardDeletionRequest dealCardData(MemberCard model){
        if(model.getType().equals(Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"卡号:" +model.getCode() + " 为虚拟卡无法进行该操作");
        }
        Member member = memberMapper.selectById(model.getMemberId());
        if(Objects.isNull(member)||Objects.isNull(member.getHkId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"卡号:" +model.getCode() + " 对应人员海康信息异常");
        }
        dealMemberRoleEmpower(member);
        CardDeletionRequest cardDeletionRequest = new CardDeletionRequest();
        cardDeletionRequest.setCardNumber(model.getCode());
        cardDeletionRequest.setPersonId(member.getHkId());
        return cardDeletionRequest;
    }
    @Override
    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
    public void updateRefundCard(MemberCard memberCard) {
        MemberCard model = memberCardMapper.selectById(memberCard.getId());
        CardDeletionRequest cardDeletionRequest = this.dealCardData(model);
        memberCardMapper.updateById(memberCard);
        dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId()));
        BaseResponse response = HKService.cardDeletion(new CardDeletionRequest());
        if(){
        BaseResponse response = HKService.cardDeletion(cardDeletionRequest);
        if(response==null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
        }
    }