TdCBatteryRechargeCardServiceImpl.java 9.22 KB
package com.zteits.pay.biz.impl;

import org.apache.commons.lang3.StringUtils;
import com.clouds.common.constants.battery.BatteryCardStateEnum;
import com.clouds.common.constants.battery.BatteryCardTypeEnum;
import com.clouds.common.utils.SequenceUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.apibase.constants.AccountTypeEnum;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.apibase.constants.ErrorType;
import com.zteits.clouds.api.apibase.constants.SequenceTypeEnum;
import com.zteits.clouds.api.apibase.exception.BizException;
import com.zteits.clouds.api.dto.pay.dto.battery.BatteryRechargeCardLogDTO;
import com.zteits.clouds.api.dto.pay.param.battery.BatteryRechargeCardByCardNoRequest;
import com.zteits.clouds.api.dto.pay.param.battery.BatteryRechargeCardLogPageQueryRequest;
import com.zteits.pay.dao.TdCAcctPersonDao;
import com.zteits.pay.dao.TdCBatteryRechargeCardLogDao;
import com.zteits.pay.dao.TdCCustPersonDao;
import com.zteits.pay.domain.TdCBatteryRechargeCard;

import com.zteits.clouds.api.dto.pay.param.battery.TdCBatteryRechargeCardRequest;
import com.zteits.clouds.api.service.pay.TdCBatteryRechargeCardService;
import com.zteits.pay.dao.TdCBatteryRechargeCardDao;
import com.zteits.clouds.api.dto.pay.dto.battery.TdCBatteryRechargeCardDTO;
import org.apache.commons.collections4.CollectionUtils;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.bean.PageBean;
import com.zteits.clouds.api.dto.clouds.param.BatchDeleteByPrimaryKeyRequest;
import com.zteits.pay.domain.TdCBatteryRechargeCardExample;
import com.zteits.pay.domain.TdCBatteryRechargeCardLog;
import com.zteits.pay.domain.TdCBatteryRechargeCardLogExample;
import com.zteits.pay.domain.TdCCustPerson;
import com.zteits.pay.domain.TdCThirdAuthorizationPush;
import com.zteits.pay.domain.TdCThirdAuthorizationPushExample;
import com.zteits.pay.mapper.TdCBatteryRechargeCardLogMapper;
import com.zteits.pay.pagepager.PageBeanUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Component
public class TdCBatteryRechargeCardServiceImpl implements TdCBatteryRechargeCardService {

    @Autowired
    private TdCBatteryRechargeCardDao tdCBatteryRechargeCardDao;

    @Autowired
    private TdCAcctPersonDao tdCAcctPersonDao;

    @Autowired
    private TdCCustPersonDao tdCCustPersonDao;

    @Autowired
    private TdCBatteryRechargeCardLogDao batteryRechargeCardLogDao;


    @Override
    public BizResult<TdCBatteryRechargeCardDTO> queryBatteryRechargeCardByCardNo(BatteryRechargeCardByCardNoRequest request) {

        TdCBatteryRechargeCardDTO tdCBatteryRechargeCardDTO = tdCBatteryRechargeCardDao.queryBatteryRechargeCardByCardNo(request);
        return new BizResult<>(tdCBatteryRechargeCardDTO);
    }

    @Override
    public BizResult<List<TdCBatteryRechargeCardDTO>> queryTdCBatteryRechargeCard(TdCBatteryRechargeCardRequest request) {
        List<TdCBatteryRechargeCardDTO> tdCBatteryRechargeCardDTOS = tdCBatteryRechargeCardDao.queryTdCBatteryRechargeCard(request);
        if (CollectionUtils.isEmpty(tdCBatteryRechargeCardDTOS)) {
            return new BizResult<>(tdCBatteryRechargeCardDTOS);
        }
        return new BizResult<>(tdCBatteryRechargeCardDTOS);
    }

    @Override
    public BizResult<PageBean<TdCBatteryRechargeCardDTO>> queryTdCBatteryRechargeCardForPage(TdCBatteryRechargeCardRequest request) {
        PageBean<TdCBatteryRechargeCardDTO> pageBean = new PageBean<>();
        PageInfo<TdCBatteryRechargeCardDTO> pageInfo = tdCBatteryRechargeCardDao.queryTdCBatteryRechargeCardForPage(request);
        if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) {
            PageBeanUtil.copyProperties(pageInfo, pageBean, TdCBatteryRechargeCardDTO.class);
        }
        return new BizResult<>(pageBean);
    }

    @Override
    public BizResult<Boolean> batchDeleteTdCBatteryRechargeCardByPrimaryKey(BatchDeleteByPrimaryKeyRequest request) {


        int delenum = tdCBatteryRechargeCardDao.batchDeleteTdCBatteryRechargeCardByPrimaryKey(request.getIds(), request.getOpId(), request.getsOpName());
        return new BizResult<>(delenum > 0);
    }

    @Override
    public BizResult<Boolean> saveTdCBatteryRechargeCard(TdCBatteryRechargeCardRequest request) {

        BatteryRechargeCardByCardNoRequest cardByCardNoRequest = new BatteryRechargeCardByCardNoRequest();
        cardByCardNoRequest.setCardNo(request.getCardNo());
        TdCBatteryRechargeCardDTO rechargeCardDTO = tdCBatteryRechargeCardDao.queryBatteryRechargeCardByCardNo(cardByCardNoRequest);
        if(rechargeCardDTO != null){
            throw new BizException(ErrorType.OBJECT_HAVE_EXISTS,"该卡号已存在");
        }

        TdCBatteryRechargeCard tdCBatteryRechargeCard = new TdCBatteryRechargeCard();
        BeanUtils.copyProperties(request, tdCBatteryRechargeCard);
        //查询手机号是否注册
        TdCCustPerson tdCCustPerson = this.insertUserInfo(request.getUserPhone());
        tdCBatteryRechargeCard.setCustId(tdCCustPerson.getCustId());
        //保存充电卡信息
        int saveNum = tdCBatteryRechargeCardDao.saveTdCBatteryRechargeCard(tdCBatteryRechargeCard);

        //创建账户
        tdCAcctPersonDao.addFeeForCustPresentAcct(request.getOrgId(), 0L, AccountTypeEnum.ACCT_BATTERY_CHARGE_CARD.value(), request.getCardNo());

        this.saveCardLog(tdCBatteryRechargeCard.getId());
        return new BizResult<>(saveNum > 0);
    }

    /**
     * 功能描述
     *
     * @author xiejianpeng
     * @date 2025/2/28  14:31
     */
    private TdCCustPerson insertUserInfo(String userPhone) {

        TdCCustPerson tdCCustPerson = tdCCustPersonDao.selectByUserPhone(userPhone);
        if (tdCCustPerson != null) {
            return tdCCustPerson;
        }

        TdCCustPerson person = new TdCCustPerson();
        String custId = SequenceUtil.getNextId(SequenceTypeEnum.CUST_PERSION_SQE);
        person.setCustId(custId);
        person.setUserPhone(userPhone);
        person.setCustType(1);
        person.setSex(3);
        person.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
        person.setPettyPayAmount(0);
        person.setCreateDate(new Date());
        person.setModfiyDate(new Date());
        int i = tdCCustPersonDao.insertSelective(person);
        return person;
    }

    @Override
    public BizResult<Boolean> updateByPrimaryKeySelective(TdCBatteryRechargeCardRequest request) {
        TdCBatteryRechargeCard tdCBatteryRechargeCard = new TdCBatteryRechargeCard();
        BeanUtils.copyProperties(request, tdCBatteryRechargeCard);
        //修改手机号
        if (StringUtils.isNotEmpty(request.getUserPhone())) {
            //查询手机号是否注册
            TdCCustPerson tdCCustPerson = this.insertUserInfo(request.getUserPhone());
            tdCBatteryRechargeCard.setCustId(tdCCustPerson.getCustId());
        }
        int upNum = tdCBatteryRechargeCardDao.updateByPrimaryKeySelective(tdCBatteryRechargeCard);

        this.saveCardLog(tdCBatteryRechargeCard.getId());
        return new BizResult<>(upNum > 0);
    }

    @Override
    public BizResult<PageBean<BatteryRechargeCardLogDTO>> queryBatteryRechargeCardLogForPage(BatteryRechargeCardLogPageQueryRequest request) {

        PageBean<BatteryRechargeCardLogDTO> pageBean = new PageBean<>();

        PageInfo<TdCBatteryRechargeCardLog> pageInfo = batteryRechargeCardLogDao.queryTdCBatteryRechargeCardLogForPage(request);

        if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) {

            PageBeanUtil.copyProperties(pageInfo, pageBean, BatteryRechargeCardLogDTO.class);

            List<BatteryRechargeCardLogDTO> batteryRechargeCardLogDTOS = new ArrayList<>();

            for (TdCBatteryRechargeCardLog cardLog : pageInfo.getList()) {
                BatteryRechargeCardLogDTO cardLogDTO = new BatteryRechargeCardLogDTO();

                cardLogDTO.setOpDate(cardLog.getModfiyDate());
                cardLogDTO.setOpName(cardLog.getModfiyEmpName());

                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append("手机号:").append(cardLog.getUserPhone())
                        .append(";卡类型:").append(BatteryCardTypeEnum.getDesc(cardLog.getCardChargeType()))
                        .append(";卡状态:").append(BatteryCardStateEnum.getDesc(cardLog.getCardState())) ;

                cardLogDTO.setContent(stringBuffer.toString());

                batteryRechargeCardLogDTOS.add(cardLogDTO);
            }
            pageBean.setDataList(batteryRechargeCardLogDTOS);
        }
        return new BizResult<>(pageBean);
    }

    /**
     * 保存充值卡操作日志
     *
     * @author xiejianpeng
     * @date 2025/3/2  16:05
     */
    private void saveCardLog(Long id) {


        TdCBatteryRechargeCard rechargeCard = tdCBatteryRechargeCardDao.queryByPrimaryKey(id);

        TdCBatteryRechargeCardLog record = new TdCBatteryRechargeCardLog();
        BeanUtils.copyProperties(rechargeCard, record);
        batteryRechargeCardLogDao.saveTdCBatteryRechargeCardLog(record);
    }

}