Air
2024-11-04 cb3b3801255082c53145bd752230339eae5d3e5a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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<SystemParamMapper, SystemParam> 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<PayTypeVo> 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<EnumParamsVo> getEnumParams(String code) {
        AppParamTypeEnum paramTypeEnum = AppParamTypeEnum.valueOf(code);
        if (paramTypeEnum == null) {
            throw new CommonException("不存在的枚举类型");
        }
        List<EnumParamsVo> 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;
    }
}