/** * */ package com.zteits.pay.dao.impl; import org.apache.commons.collections4.CollectionUtils; import com.clouds.common.utils.DateUtil; import com.clouds.common.utils.SequenceUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; 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.AcctPersonDTO; import com.zteits.clouds.api.dto.pay.account.dto.AccountInOutDetailForPageDTO; import com.zteits.clouds.api.dto.pay.account.param.AccoutRecordDetailRequest; import com.zteits.clouds.api.dto.pay.account.param.AcctInOutDetailForPageRequest; import com.zteits.clouds.api.dto.pay.dto.AcctPersonForStoreCarDTO; import com.zteits.clouds.api.dto.pay.param.*; import com.zteits.pay.domain.TdCAcctPerson; import com.zteits.pay.domain.TdCAcctPersonExample; import com.zteits.pay.mapper.TdCAcctPersonMapper; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.zteits.pay.dao.TdCAcctPersonDao; import com.zteits.pay.mapper.smapper.TdCAcctPersonSMapper; /** * @author hxz * */ @Component public class TdCAcctPersonDaoImpl implements TdCAcctPersonDao { @Autowired private TdCAcctPersonSMapper tdCAcctPersonSMapper; @Autowired private TdCAcctPersonMapper tdCAcctPersonMapper; @Override public Integer insertAcctPerson(TdCAcctPerson acctPersonDo) { if(acctPersonDo.getOrgId() == null){ throw new BizException(ErrorType.APP_ERROR,"区域编码为空",false); } return tdCAcctPersonMapper.insertSelective(acctPersonDo); } @Override public Boolean updateAcctPerson(TdCAcctPerson acctPersonDo) { try { int updateResult = tdCAcctPersonSMapper.updateAcctPerson(acctPersonDo); if (updateResult > 0) { return true; } return false; } catch (Exception e) { return false; } } @Override public TdCAcctPerson getAcctPerson(TdCAcctPerson acctPersonDo) { return tdCAcctPersonSMapper.getAcctPerson(acctPersonDo); } @Override public List queryAcctPersonByCustIdAndAcctType(QueryAcctPersonByCustIdsAndAcctTypeReq request) { return tdCAcctPersonSMapper.queryAcctPersonByCustIdAndAcctType(request); } @Override public List getAcctPersonGroupByOrgId(QueryAcctPersonByCustIdsAndAcctTypeReq request) { return tdCAcctPersonSMapper.getAcctPersonGroupByOrgId(request); } @Override public List getAcctPersonGroupByAcctType(QueryAcctPersonByCustIdsAndAcctTypeReq request) { return tdCAcctPersonSMapper.getAcctPersonGroupByAcctType(request); } @Override public TdCAcctPerson addFeeForCustPresentAcct(Long orgId, Long rechargeFee, int accType, String custId) { TdCAcctPerson acctPersonDTO = new TdCAcctPerson(); //查询是否已经有该类型的账户了 QueryAcctPersonByCustIdsAndAcctTypeReq queryAcctPersonByCustIdAndAcctTypeReq = new QueryAcctPersonByCustIdsAndAcctTypeReq(); List list = new ArrayList<>(); list.add(accType); queryAcctPersonByCustIdAndAcctTypeReq.setCustId(custId); queryAcctPersonByCustIdAndAcctTypeReq.setAcctTypeList(list); queryAcctPersonByCustIdAndAcctTypeReq.setOrgId(orgId); List rsAccPerson = this.queryAcctPersonByCustIdAndAcctType(queryAcctPersonByCustIdAndAcctTypeReq); if(CollectionUtils.isEmpty(rsAccPerson)) { //创建对应账户 acctPersonDTO.setCustId(custId); acctPersonDTO.setAcctType(accType); acctPersonDTO.setAcctBalance(new BigDecimal(rechargeFee)); acctPersonDTO.setAcctId(SequenceUtil.getNextId(SequenceTypeEnum.ACCOUNT_ID_P_SQE)); acctPersonDTO.setAcctOrder(1); /**设置单位: 1:分,2:张,3:次,4:小时,5:天,6:个'*/ acctPersonDTO.setAcctTypeUnit(1); /**设置是否是主账户 1:是,0:否 -目前现金账户为主账户'*/ acctPersonDTO.setMainFlg(0); acctPersonDTO.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); acctPersonDTO.setCreateDate(DateUtil.getSysDate()); acctPersonDTO.setModfiyDate(DateUtil.getSysDate()); acctPersonDTO.setOrgId(orgId); int innum = this.insertAcctPerson(acctPersonDTO); if(innum<=0){ throw new BizException(ErrorType.APP_ERROR,"创建赠款账户失败",false); } }else{ //更新账户余额 acctPersonDTO = rsAccPerson.get(0); TdCAcctPerson upAcctPersonDO = new TdCAcctPerson(); upAcctPersonDO.setCustId(custId); upAcctPersonDO.setOrgId(orgId); upAcctPersonDO.setAcctType(accType); upAcctPersonDO.setAcctBalance(acctPersonDTO.getAcctBalance().add(new BigDecimal(rechargeFee))); Boolean upBoolean = this.updateAcctPerson(upAcctPersonDO); if(!upBoolean){ throw new BizException(ErrorType.APP_ERROR,"更新赠款账户失败",false); } //回填金额 acctPersonDTO.setAcctBalance(upAcctPersonDO.getAcctBalance()); } return acctPersonDTO; } @Override public PageInfo queryAccountInOutDetailsForPage(AcctInOutDetailForPageRequest request) { PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); List resultList = tdCAcctPersonSMapper.queryAccountInOutDetailsForPage(request); PageInfo pageInfo = new PageInfo<>(resultList); if(pageInfo.getPages()(resultList); } /** * 通过账户 ID 查询个人账户信息 * @Auther: wangfs * @param * @return */ @Override public TdCAcctPerson getAcctPersonByAcctId(String acctId) { TdCAcctPersonExample example = new TdCAcctPersonExample(); example.createCriteria().andDataStateEqualTo(1) .andAcctIdEqualTo(acctId); List list = tdCAcctPersonMapper.selectByExample(example); return CollectionUtils.isNotEmpty(list)?list.get(0) : new TdCAcctPerson() ; } @Override public TdCAcctPerson getAcctPersonByAcctIdAndAcctType(String acctId, List acctTypes) { TdCAcctPersonExample example = new TdCAcctPersonExample(); TdCAcctPersonExample.Criteria sql = example.createCriteria(); if(CollectionUtils.isNotEmpty(acctTypes)){ sql.andAcctTypeIn(acctTypes); } sql.andDataStateEqualTo(1); sql.andAcctIdEqualTo(acctId); List list = tdCAcctPersonMapper.selectByExample(example); return CollectionUtils.isNotEmpty(list)?list.get(0) : new TdCAcctPerson() ; } /** * 个人账户金额加或者减操作 * @Auther: wangfs * @param * @return */ @Override public Integer addOrsubAcctPersonFeeByAcctId(AddOrsubAcctPersonFeeByAcctIdReq req) { return tdCAcctPersonSMapper.addOrsubAcctPersonFeeByAcctId(req); } @Override public PageInfo queryAcctPersonStoreCarForPage(QueryAcctPersonForPageReq request) { PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); List resultList = tdCAcctPersonSMapper.queryAcctPersonStoreCarForPage(request); PageInfo pageInfo = new PageInfo<>(resultList); if(pageInfo.getPages()(resultList); } @Override public List queryAccountRecordDetails(AccoutRecordDetailRequest req) { return tdCAcctPersonSMapper.queryAccountRecordDetails(req); } }