@Component注解下注入Service 空指针异常

注入

@Data
@NoArgsConstructor
@Accessors(chain = true)
@Component
public class PackageDTO
{

    @Resource
    private  IBeetlProCategoryService proCategoryService;

    @Resource
    private  BeetlProCategoryMapper beetlProCategoryMapper;

    @Resource
    private ISysUserService sysUserService;
}

静态类

private static PackageDTO packageDTO;

@PostConstruct 注解

 @PostConstruct
    public void init()
    {
        packageDTO = this;
        packageDTO.proCategoryService = this.proCategoryService;
        packageDTO.beetlProCategoryMapper = this.beetlProCategoryMapper;
        packageDTO.sysUserService = this.sysUserService;
    }

调用

 public  PackageDTO(BeetlPro beetlPro)
    {
        if (!Objects.isNull(beetlPro))
        {
            this.packageId = beetlPro.getPackageId();
            this.packageNumber = beetlPro.getNumber();
            this.packageName = beetlPro.getName();
            this.packagePrice = beetlPro.getRemuneration();
            this.bargainType = generateBargainType(beetlPro.getNegotiationType());
            //TODO 图片地址
            this.imagePath = "";
            this.bidCount =  0 ;
            this.collectCount = 0 ;
            this.levelCategory = packageDTO.proCategoryService.generateLeveLProCategory(beetlPro.getCategoryId());
            this.categoryName = packageDTO.beetlProCategoryMapper.selectById(beetlPro.getCategoryId()).getCategoryName();
            this.publishNameCategory = generatePublishNameCategory(beetlPro.getAccountId());
            this.publishName = generatePublishName(beetlPro.getAccountId());
        }
    }

完整代码

package com.beetl.pc.entity.dto;

import com.beetl.common.constants.BeetlConstants;
import com.beetl.common.core.domain.entity.BeetlPro;
import com.beetl.pc.entity.vo.AccountVo;
import com.beetl.pc.mapper.BeetlProCategoryMapper;
import com.beetl.pc.service.IBeetlProCategoryService;
import com.beetl.pc.service.ISysUserService;
import lombok.*;
import lombok.experimental.Accessors;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Objects;

/**
 * @author:Gavin
 * @Email:yanyrzneg@aliyun.com
 * @Date:2024/2/4 15:57
 * @description: /project/all 页面传输数据对象
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@Component
public class PackageDTO
{

    @Resource
    private  IBeetlProCategoryService proCategoryService;

    @Resource
    private  BeetlProCategoryMapper beetlProCategoryMapper;

    @Resource
    private ISysUserService sysUserService;

    private static PackageDTO packageDTO;
    @PostConstruct
    public void init()
    {
        packageDTO = this;
        packageDTO.proCategoryService = this.proCategoryService;
        packageDTO.beetlProCategoryMapper = this.beetlProCategoryMapper;
        packageDTO.sysUserService = this.sysUserService;
    }

    /**
     * 包ID
     */
    private Long packageId;

    /**
     * 包编号
     */
    private String packageNumber;

    /**包名称*/
    private String packageName;


    /**
     * 竞标人数
     */
    private Integer bidCount;

    /**
     * 收藏者人数
     */
    private Integer collectCount;

    /**
     * 发布者名称
     */
    private String publishName;

    /**
     * 发布者类型
     */
    private String publishNameCategory;

    /**
     * 包类别
     */
    private String categoryName;

    /**
     * 包的三级类别
     */
    private String levelCategory;

    /**
     * 包的议价类型
     */
    private String bargainType;

    /**
     * 包的竞标价格
     */
    private String packagePrice;

    /**
     * 包的图片价格
     */
    private String imagePath;

    /**
     * 账号Id
     */
    private Long accountId;



    public  PackageDTO(BeetlPro beetlPro)
    {
        if (!Objects.isNull(beetlPro))
        {
            this.packageId = beetlPro.getPackageId();
            this.packageNumber = beetlPro.getNumber();
            this.packageName = beetlPro.getName();
            this.packagePrice = beetlPro.getRemuneration();
            this.bargainType = generateBargainType(beetlPro.getNegotiationType());
            //TODO 图片地址
            this.imagePath = "";
            this.bidCount =  0 ;
            this.collectCount = 0 ;
            this.levelCategory = packageDTO.proCategoryService.generateLeveLProCategory(beetlPro.getCategoryId());
            this.categoryName = packageDTO.beetlProCategoryMapper.selectById(beetlPro.getCategoryId()).getCategoryName();
            this.publishNameCategory = generatePublishNameCategory(beetlPro.getAccountId());
            this.publishName = generatePublishName(beetlPro.getAccountId());
        }
    }

    public String generateBargainType(String negotiationType)
    {
        String str = "不可议价";
        if (Objects.equals(negotiationType, "1"))
        {
            str ="可议价";
        }
        return str;
    }

    /**
     *  发布账号类别
     * @param accountId 账号Id
     * @return 账号类型
     */
    public String generatePublishNameCategory(Long accountId)
    {
        AccountVo accountVo = packageDTO.sysUserService.generateNicknameAndAccountType(accountId);
        if (Objects.equals(accountVo.getUserType(), BeetlConstants.ACCOUNT_TYPE_COMPANY))
            return "企业";return  "私人";
    }
    /**
     * 发布账号用户名称
     * @param accountId 账号Id
     * @return 发布账号名称
     */
    public String generatePublishName(Long accountId)
    {
        AccountVo accountVo = packageDTO.sysUserService.generateNicknameAndAccountType(accountId);
        return accountVo.getUserName();
    }
}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值