Commit afed4fff by 程裕兵

feat:finance config

parent 07d00ecb
package com.jiejing.fitness.finance.api.config;
import com.alibaba.fastjson.JSONObject;
import com.jiejing.common.model.JsonResult;
import com.jiejing.fitness.finance.api.config.request.GetConfigRequest;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @author chengyubing
* @since 2024/6/4 11:22
*/
@FeignClient(name = "FINANCE", url = "${rpc.url.fit-finance:http://app-fit-finance:7008}", fallbackFactory = FinanceConfigApiFallback.class)
public interface FinanceConfigApi {
String TAG = "金融相关配置";
@ApiOperation(value = "获取finance的配置信息", tags = {TAG})
@PostMapping(value = "/private/financeConfig/get")
JsonResult<JSONObject> get(GetConfigRequest request);
}
package com.jiejing.fitness.finance.api.config;
import com.alibaba.fastjson.JSONObject;
import com.jiejing.common.model.JsonResult;
import com.jiejing.fitness.finance.api.config.request.GetConfigRequest;
import com.jiejing.fitness.finance.api.merchant.BrandMerchantApiFallback;
import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
/**
* @author chengyubing
* @since 2024/6/4 11:22
*/
@Component
public class FinanceConfigApiFallback implements FallbackFactory<FinanceConfigApi> {
@Override
public FinanceConfigApi create(Throwable throwable) {
return new FinanceConfigApi() {
@Override
public JsonResult<JSONObject> get(GetConfigRequest request) {
return JsonResult.rpcError();
}
};
}
}
package com.jiejing.fitness.finance.api.config.request;
import com.jiejing.common.swagger.EnumMapping;
import com.jiejing.fitness.enums.finance.FinanceConfigKeyEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author chengyubing
* @since 2024/6/4 11:23
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "获取finance的配置信息")
public class GetConfigRequest {
@EnumMapping(enumClass = FinanceConfigKeyEnum.class)
@ApiModelProperty(value = "配置key", required = true)
@NotBlank(message = "key不能为空")
private String key;
}
package com.jiejing.fitness.finance.app.controller.config;
import com.alibaba.fastjson.JSONObject;
import com.jiejing.common.model.JsonResult;
import com.jiejing.fitness.finance.api.config.FinanceConfigApi;
import com.jiejing.fitness.finance.api.config.request.GetConfigRequest;
import com.jiejing.fitness.finance.service.global.ConfigService;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
/**
* @author chengyubing
* @since 2024/6/4 11:25
*/
@RestController
public class FinanceConfigController implements FinanceConfigApi {
@Resource
private ConfigService configService;
@ApiOperation(value = "获取finance的配置信息", tags = {TAG})
@PostMapping(value = "/private/financeConfig/get")
@Override
public JsonResult<JSONObject> get(@RequestBody @Valid GetConfigRequest request) {
return JsonResult.success(configService.getConfig(request.getKey()));
}
}
package com.jiejing.fitness.finance.service.global; package com.jiejing.fitness.finance.service.global;
import com.alibaba.fastjson.JSONObject;
import com.jiejing.fitness.finance.service.global.dto.RefundConfigDTO; import com.jiejing.fitness.finance.service.global.dto.RefundConfigDTO;
import com.jiejing.fitness.finance.service.global.dto.SubChannelInfoDTO; import com.jiejing.fitness.finance.service.global.dto.SubChannelInfoDTO;
...@@ -14,4 +15,6 @@ public interface ConfigService { ...@@ -14,4 +15,6 @@ public interface ConfigService {
RefundConfigDTO getRefundConfig(); RefundConfigDTO getRefundConfig();
JSONObject getConfig(String key);
} }
package com.jiejing.fitness.finance.service.global.impl; package com.jiejing.fitness.finance.service.global.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jiejing.common.exception.BizException; import com.jiejing.common.exception.BizException;
import com.jiejing.fitness.finance.repository.entity.GlobalConfig; import com.jiejing.fitness.finance.repository.entity.GlobalConfig;
import com.jiejing.fitness.finance.repository.service.GlobalConfigRpService; import com.jiejing.fitness.finance.repository.service.GlobalConfigRpService;
...@@ -24,17 +25,21 @@ public class ConfigServiceImpl implements ConfigService { ...@@ -24,17 +25,21 @@ public class ConfigServiceImpl implements ConfigService {
@Override @Override
public SubChannelInfoDTO getDefaultBrandSubChannelInfo() { public SubChannelInfoDTO getDefaultBrandSubChannelInfo() {
GlobalConfig config = globalConfigRpService.getById( return JSONObject.toJavaObject(this.getConfig(GlobalConfigEnums.BRAND_MERCHANT_SUB_CHANNELS.getCode()),
GlobalConfigEnums.BRAND_MERCHANT_SUB_CHANNELS.getCode()) SubChannelInfoDTO.class);
.orElseThrow(() -> new BizException(FinanceErrorEnums.NOT_EXIST));
return JSON.parseObject(config.getConfigValue(), SubChannelInfoDTO.class);
} }
@Override @Override
public RefundConfigDTO getRefundConfig() { public RefundConfigDTO getRefundConfig() {
GlobalConfig config = globalConfigRpService.getById(GlobalConfigEnums.CASHIER_REFUND_CONFIG.getCode()) return JSONObject.toJavaObject(this.getConfig(GlobalConfigEnums.CASHIER_REFUND_CONFIG.getCode()),
RefundConfigDTO.class);
}
@Override
public JSONObject getConfig(String key) {
GlobalConfig config = globalConfigRpService.getById(key)
.orElseThrow(() -> new BizException(FinanceErrorEnums.NOT_EXIST)); .orElseThrow(() -> new BizException(FinanceErrorEnums.NOT_EXIST));
return JSON.parseObject(config.getConfigValue(), RefundConfigDTO.class); return JSON.parseObject(config.getConfigValue());
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment