feign应用调用简单案例

1.api应用

@Slf4j
@RestController
@RequestMapping("/client/coupon")
public class CouponController {
    @Resource
    CouponFeign couponFeign;

    /**
     * 保存优惠券
     */
    @PostMapping("/saveCoupon")
    public Result<Boolean> saveCoupon(@RequestBody SaveCouponRequest saveCouponRequest) {
        return couponFeign.saveCoupon(saveCouponRequest);
    }

    /**
     * 列表查询
     */
    @PostMapping("/queryCoupon")
    public Result<PageInfo<QueryCouponResponse>> queryCoupon(@RequestBody QueryCouponRequest queryCouponRequest ) {
        return couponFeign.queryCoupon(queryCouponRequest);

    }

    @PostMapping("/queryCouponList/export")
    public Result queryListExport(@RequestBody QueryCouponRequest queryCouponRequest){
        return couponFeign.queryCouponListExcel(queryCouponRequest);
    }
}

2.业务应用 
 

@FeignClient(value = PLATFORM_CLIENT)
public interface CouponFeign {
    /**
     * 保存优惠券
     * @param saveCouponRequest
     * @return
     */
    @PostMapping("coupon/saveCoupon")
    Result<Boolean> saveCoupon(SaveCouponRequest saveCouponRequest);

    /**
     * 查询优惠券
     * @param queryCouponRequest
     * @return
     */
    @PostMapping("coupon/queryCoupon")
    Result<PageInfo<QueryCouponResponse>> queryCoupon(QueryCouponRequest queryCouponRequest);

    /**
     * 导出优惠券
     * @param queryCouponRequest
     * @return
     */
    @PostMapping("coupon/queryCouponList/export")
    Result queryCouponListExcel(@RequestBody QueryCouponRequest queryCouponRequest );
}

3.feign实现类
 

@Slf4j
@RestController
public class CouponFeignImpl implements CouponFeign {
    @Resource
    CouponService couponService;
    @Override
    public Result<Boolean> saveCoupon(@RequestBody SaveCouponRequest saveCouponRequest) {
        return couponService.issueCoupon(saveCouponRequest);
    }

    @Override
    public Result<PageInfo<QueryCouponResponse>> queryCoupon(@RequestBody QueryCouponRequest queryCouponRequest) {
        return couponService.queryCoupon(queryCouponRequest);
    }
    @Override
    public Result queryCouponListExcel(@RequestBody QueryCouponRequest queryCouponRequest){
        return couponService.exportCouponListExcel(queryCouponRequest);
    }
}

4.业务逻辑
 

public interface CouponService {
    /**
     * 下发优惠券
     * @param saveCouponRequest
     * @return
     */
    Result<Boolean> issueCoupon(SaveCouponRequest saveCouponRequest);

    /**
     * 查询优惠券
     * @param queryCouponRequest
     * @return
     */
    Result<PageInfo<QueryCouponResponse>> queryCoupon(QueryCouponRequest queryCouponRequest);

    /**
     * 导出查询结果
     * @param queryCouponRequest
     * @return
     */
    Result exportCouponListExcel(QueryCouponRequest queryCouponRequest);
}

4.业务逻辑实现
 

@Service
@Slf4j
public class CouponServiceImpl implements CouponService {
    @Value(value = "${issue.coupon.url:http://10.172.48.7:40822//promotioncenter/coupon/pickup/smile}")
    private String url;
    @Autowired
    IThemisCouponsService iThemisCouponsService;
    @Value("${themis.coupon.id:775522539331077886}")
    String couponId;
    @Resource
    ThemisCouponsMapper themisCouponsMapper;
    @Resource
    private ReportExportService reportExportService;

    @Override
    public Result<Boolean> issueCoupon(@RequestBody SaveCouponRequest saveCouponRequest) {
        ThemisCoupons coupons = new ThemisCoupons();
        coupons.setCouponStatus(1);
        coupons.setBillCode(saveCouponRequest.getBillCode());
        coupons.setCreateTime(new Date());
        coupons.setMobilePhone(saveCouponRequest.getMobilePhone());
        coupons.setOperatorId(saveCouponRequest.getLoginUserId());
        coupons.setOperatorOrgid(saveCouponRequest.getLoginSiteId());
        coupons.setRemarks(saveCouponRequest.getRemarks());
        log.info("save coupons{}", coupons);
        boolean result = iThemisCouponsService.save(coupons);
        if (result) {
            IssueCouponReq issueCouponReq = IssueCouponReq.builder()
                    .appKey("CustomerService")
                    .data(IssueCouponReq.IssueCouponData.builder()
                            .mobilePhone(saveCouponRequest.getMobilePhone())
                            .businessId("CustomerService ")
                            .businessSystemId("expressBusiness")
                            .couponList(Collections.singletonList(
                                    IssueCouponReq.Coupons.builder()
                                            .couponId(couponId)
                                            .qty(1)
                                            .build()
                            ))
                            .build())
                    .operator(String.valueOf(saveCouponRequest.getLoginUserId()))
                    .operatorOrgId("")
                    .operatorOrgType("")
                    .build();
            String req = JacksonUtil.object2Json(issueCouponReq);
            log.info("issue coupon request param:{}", req);
            try {
                String doPost = OkHttp3Util.doPost(url, req);
                log.info("issue coupon response param:{}", doPost);
                IssueCouponResp resp = JSON.parseObject(doPost, IssueCouponResp.class);
                if (resp != null && "200".equals(resp.getCode())) {
                    ThemisCoupons coup = new ThemisCoupons();
                    coup.setCouponId(resp.getData().get(0).getId());
                    iThemisCouponsService.update(coup, new UpdateWrapper<ThemisCoupons>().eq("id", coupons.getId()));
                    return Result.success();
                } else {
                    LambdaUpdateWrapper<ThemisCoupons> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
                    lambdaUpdateWrapper.eq(ThemisCoupons::getId, coupons.getId())
                            .set(ThemisCoupons::getCouponStatus, 0);
                    iThemisCouponsService.update(lambdaUpdateWrapper);
                    return Result.fail("优惠券发放失败");

                }
            } catch (Exception e) {
                log.error("issue coupon failed", e);
                LambdaUpdateWrapper<ThemisCoupons> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
                lambdaUpdateWrapper.eq(ThemisCoupons::getId, coupons.getId())
                        .set(ThemisCoupons::getCouponStatus, 0);
                iThemisCouponsService.update(lambdaUpdateWrapper);
                return Result.fail("优惠券发放失败");
            }
        } else {
            return Result.fail("优惠券发放失败,请重试");
        }
    }

    @Override
    public Result<PageInfo<QueryCouponResponse>> queryCoupon(@RequestBody QueryCouponRequest queryCouponRequest) {


        List<QueryCouponResponse> couponResponses = null;
        Page<Object> page = PageHelper.startPage(queryCouponRequest.getPageNum(), queryCouponRequest.getPageSize());

        couponResponses = themisCouponsMapper.queryCouponList(queryCouponRequest);
        log.info("query list nums:{}", couponResponses.size());
        for (QueryCouponResponse couponResponse:couponResponses){
            couponResponse.setCouponStatusName(CoupouStatus.getValueByCode(couponResponse.getCouponStatus()));
        }
        PageInfo<QueryCouponResponse> pageInfo = new PageInfo<>();
        pageInfo.setListInfo(couponResponses);
        pageInfo.setTotal(page.getTotal());
        return Result.success(pageInfo);
    }
    @Override
    public Result exportCouponListExcel( QueryCouponRequest queryCouponRequest){
        ExportTaskDto exportTaskDto = ExportTaskBuilder.create()
                .userId(queryCouponRequest.getLoginUserId())
                .userName(queryCouponRequest.getLoginUserName())
                .taskSource("PC")
                .taskBelong("配置管理-优惠券导出")
                .fileName("优惠券导出")
                .clazz(QueryCouponListExcel.class)
                .condition(queryCouponRequest.toString())
                .build();
        return reportExportService.asyncExport(exportTaskDto, (pageNo, pageSize) -> queryCouponListExcels( queryCouponRequest));
    }
    public Page<QueryCouponListExcel> queryCouponListExcels(QueryCouponRequest request){
        List<QueryCouponResponse> couponResponses = themisCouponsMapper.queryCouponList(request);
        List<QueryCouponListExcel> excelList = new ArrayList<>();
        for (QueryCouponResponse couponResponse : couponResponses){
            QueryCouponListExcel queryCouponListExcel = convertToQueryWarnListExcel(couponResponse);
            excelList.add(queryCouponListExcel);
        }
        Page<QueryCouponListExcel> queryCouponListExcel = new Page<>();
        queryCouponListExcel.setTotal(couponResponses.size());
        queryCouponListExcel.addAll(excelList);
        return queryCouponListExcel;

    }
    public QueryCouponListExcel convertToQueryWarnListExcel(QueryCouponResponse queryCouponResponse){
        QueryCouponListExcel queryCouponListExcel = new QueryCouponListExcel();
        queryCouponListExcel.setMobilePhone(queryCouponResponse.getMobilePhone());
        queryCouponListExcel.setCouponStatusName(CoupouStatus.getValueByCode(queryCouponResponse.getCouponStatus()));
        queryCouponListExcel.setRemarks(queryCouponResponse.getRemarks());
        queryCouponListExcel.setCreateTime(queryCouponResponse.getCreateTime());
        queryCouponListExcel.setBillCode(queryCouponResponse.getBillCode());
        queryCouponListExcel.setOperatorId(queryCouponResponse.getOperatorId());
        return queryCouponListExcel;
    }


}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值