package com.nova.sankuai.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nova.sankuai.domain.entity.SystemParam; import com.nova.sankuai.domain.enums.AppParamTypeEnum; import com.nova.sankuai.domain.enums.customerinfo.*; import com.nova.sankuai.domain.enums.vipservice.PayTypeEnum; import com.nova.sankuai.domain.enums.yixin.*; import com.nova.sankuai.domain.vo.EnumParamsVo; import com.nova.sankuai.domain.vo.PayTypeParamVo; import com.nova.sankuai.domain.vo.PayTypeVo; import com.nova.sankuai.domain.vo.SystemConfigVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.mapper.SystemParamMapper; import com.nova.sankuai.service.ISystemParamService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @author weikangdi * @create 2022/1/19 */ @Service @AllArgsConstructor @Slf4j public class SystemParamServiceImpl extends ServiceImpl implements ISystemParamService { private final SystemParamMapper systemParamMapper; @Override @Transactional(rollbackFor = Exception.class) public void updateLoanMarketArray(Integer type) { SystemParam systemParam = systemParamMapper.getDefaultParam(); systemParam.setLoanMarketArray(type); updateById(systemParam); } @Override public SystemConfigVo getSystemParam() { SystemParam systemParam = systemParamMapper.getDefaultParam(); return SystemConfigVo.parseVo(systemParam); } @Override public PayTypeParamVo getPayTypeList() { PayTypeParamVo payTypeParamVo = new PayTypeParamVo(); List payTypeVos = new ArrayList<>(); for (PayTypeEnum payTypeEnum : PayTypeEnum.values()) { PayTypeVo payTypeVo = new PayTypeVo(); payTypeVo.setCode(payTypeEnum.getCode()); payTypeVo.setName(payTypeEnum.getValue()); payTypeVos.add(payTypeVo); } SystemParam systemParam = systemParamMapper.getDefaultParam(); payTypeParamVo.setCode(systemParam.getPaymentMethod()); payTypeParamVo.setName(PayTypeEnum.value(systemParam.getPaymentMethod())); payTypeParamVo.setPayTypeList(payTypeVos); return payTypeParamVo; } @Override @Transactional(rollbackFor = Exception.class) public void updatePayType(Integer code) { String value = PayTypeEnum.value(code); if (StringUtils.isEmpty(value)) { throw new CommonException("该支付方式不存在!"); } SystemParam systemParam = systemParamMapper.getDefaultParam(); String oldValue = PayTypeEnum.value(systemParam.getPaymentMethod()); systemParam.setPaymentMethod(code); updateById(systemParam); log.info("支付方式从" + oldValue + "切换到" + value); } @Override public List getEnumParams(String code) { AppParamTypeEnum paramTypeEnum = AppParamTypeEnum.valueOf(code); if (paramTypeEnum == null) { throw new CommonException("不存在的枚举类型"); } List paramsVos = new ArrayList<>(); switch (paramTypeEnum) { //职业类别 case OCCUPATION_ENUM: paramsVos = YiXinOccupationEnum.parseParams(); break; //职务信息 case JOB_TITLE_ENUM: paramsVos = YiXinJobTitleEnum.parseParams(); break; //家庭联系人关系 case HOME_RELATION_ENUM: paramsVos = YiXinHomeRelationEnum.parseParams(); break; //其他联系人关系 case FRIEND_RELATION_ENUM: paramsVos = YiXinFriendRelationEnum.parseParams(); break; //学历 case EDUCATION_ENUM: paramsVos = YiXinEducationEnum.parseParams(); break; //公司性质 case COMPANY_NATURE_ENUM: paramsVos = YiXinCompanyNatureEnum.parseParams(); break; //公司所属行业 case COMPANY_TRADE_ENUM: paramsVos = YiXinCompanyTradeEnum.parseParams(); break; //居住房类型 case LIVEST_ENUM: paramsVos = YiXinLivestEnum.parseParams(); break; //婚姻状况 case MARITAL_ENUM: paramsVos = YiXinMaritalStatusEnum.parseParams(); break; //芝麻分信息 case SESAME_ENUM: paramsVos = SesameStatusEnum.parseParams(); break; //社保信息 case SOCIAL_SECURITY_ENUM: paramsVos = SocialSecurityStatusEnum.parseParams(); break; //公积金信息 case PROVIDENT_FUND_ENUM: paramsVos = ProvidentFundStatusEnum.parseParams(); break; //房产信息 case HOUSE_ENUM: paramsVos = HouseStatusEnum.parseParams(); break; //车产信息 case CAR_ENUM: paramsVos = CarStatusEnum.parseParams(); break; //保单信息 case POLICY_ENUM: paramsVos = InsuranceStatusEnum.parseParams(); break; //信用卡信息 case CREDIT_CARD_ENUM: paramsVos = CreditCardStatusEnum.parseParams(); break; //月收入信息 case MONTHLY_INCOME_ENUM: paramsVos = YiXinMonthlyIncomeEnum.parseParams(); break; } return paramsVos; } }