guomengjiao недель назад: 3
Родитель
Сommit
c45d68ee59

+ 79 - 0
renren-admin/src/main/java/io/renren/modules/qyh/api/ApiEnterpriseController.java

@@ -0,0 +1,79 @@
+package io.renren.modules.qyh.api;
+
+import io.renren.common.annotation.RepeatSubmit;
+import io.renren.common.enums.EnterpriseStatusEnum;
+import io.renren.common.utils.Constant;
+import io.renren.common.utils.R;
+import io.renren.common.validator.ValidatorUtils;
+import io.renren.modules.qyh.model.dto.EnterpriseDTO;
+import io.renren.modules.qyh.service.EnterpriseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 企业表
+ *
+ */
+@RestController
+@RequestMapping("api/enterprise")
+@Api(tags = "小程序-青雲慧-企业表")
+public class ApiEnterpriseController {
+    @Autowired
+    private EnterpriseService enterpriseService;
+
+    @GetMapping("/info/{memberId}")
+    @ApiOperation("详情")
+    public R info(@PathVariable("memberId") Long memberId) {
+        return R.ok().put("data", enterpriseService.infoMemberId(memberId));
+    }
+
+    @PostMapping("/save")
+    @RepeatSubmit()
+    @ApiOperation("新增")
+    public R save(@RequestBody EnterpriseDTO dto) {
+        ValidatorUtils.validateEntity(dto);
+        enterpriseService.saveEnterprise(dto);
+        return R.ok();
+    }
+
+    @PutMapping("/update")
+    @RepeatSubmit()
+    @ApiOperation("修改")
+    public R update(@RequestBody EnterpriseDTO dto) {
+        ValidatorUtils.validateEntity(dto);
+        enterpriseService.updateEnterprise(dto);
+        return R.ok();
+    }
+
+    //审核通过后上传企业展示信息
+    @PostMapping("/uploadEnterpriseInfo")
+    @RepeatSubmit()
+    @ApiOperation("上传企业展示信息")
+    public R uploadEnterpriseInfo(@RequestBody EnterpriseDTO dto) {
+        enterpriseService.uploadEnterpriseInfo(dto);
+        return R.ok();
+    }
+
+    @GetMapping("/page")
+    @ApiOperation("分页")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType = "int"),
+            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query", required = true, dataType = "int"),
+    })
+    public R page(@RequestParam Map<String, Object> params) {
+        params.put("status", EnterpriseStatusEnum.PAID.value());
+        return R.ok().put("page", enterpriseService.queryApiPage(params));
+    }
+
+    @GetMapping("/apiInfo/{id}")
+    @ApiOperation("详情")
+    public R apiInfo(@PathVariable("id") Long id) {
+        return R.ok().put("data", enterpriseService.apiInfo(id));
+    }
+}

+ 38 - 0
renren-admin/src/main/java/io/renren/modules/qyh/controller/EnterpriseController.java

@@ -0,0 +1,38 @@
+package io.renren.modules.qyh.controller;
+
+import io.renren.common.utils.R;
+import io.renren.modules.qyh.service.EnterpriseService;
+import io.renren.modules.sys.controller.AbstractController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 企业表
+ */
+@RestController
+@Api(tags = "青雲慧-企业表")
+@RequestMapping("qyh/enterprise")
+public class EnterpriseController extends AbstractController {
+    @Autowired
+    private EnterpriseService enterpriseService;
+
+    @GetMapping("/page")
+    @ApiOperation("审核分页")
+    @RequiresPermissions("qyh:enterprise:list")
+    public R page(@RequestParam Map<String, Object> params) {
+        return R.ok().put("page", enterpriseService.queryPage(params));
+    }
+
+    @GetMapping("/info/{id}")
+    @ApiOperation("详情")
+    @RequiresPermissions("qyh:enterprise:info")
+    public R info(@PathVariable("id") Long id) {
+        return R.ok().put("data", enterpriseService.info(id));
+    }
+
+}

+ 119 - 0
renren-admin/src/main/java/io/renren/modules/qyh/entity/EnterpriseEntity.java

@@ -0,0 +1,119 @@
+package io.renren.modules.qyh.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 企业表
+ *
+ */
+@Data
+@TableName("qyh_enterprise")
+public class EnterpriseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 关联小程序用户id
+     */
+    private Long memberId;
+    /**
+     * 审核id
+     */
+    private Long auditId;
+    /**
+     * 企业全称
+     */
+    private String enterpriseName;
+    /**
+     * 营业执照号
+     */
+    private String licenseNo;
+    /**
+     * 联系人
+     */
+    private String contactPerson;
+    /**
+     *  联系电话
+     */
+    private String contactPhone;
+    /**
+     * 营业执照照片
+     */
+    private String licensePhoto;
+    /**
+     * 企业简介
+     */
+    private String enterpriseIntro;
+    /**
+     * 企业地址
+     */
+    private String enterpriseAddress;
+    /**
+     * 企业电话
+     */
+    private String enterprisePhone;
+    /**
+     * 企业logo
+     */
+    private String enterpriseLogo;
+    /**
+     * 主营标签
+     */
+    private String mainTags;
+    /**
+     * 联系邮箱
+     */
+    private String enterpriseEmail;
+    /**
+     * 企业宣传图 多选
+     */
+    private String enterprisePromoImages;
+    /**
+     * 状态 1-未缴费 2-已缴费 3-已过期
+     */
+    private Integer status;
+    /**
+     * 支付时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime payLastTime;
+    /**
+     * 过期时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime expiredTime;
+    /**
+     * 创建人
+     */
+    private Long createId;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+    /**
+     * 修改人
+     */
+    private Long updateId;
+    /**
+     * 修改时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+    /**
+     * 是否删除(0正常 -1删除)
+     */
+    private String isDelete;
+
+}

+ 21 - 0
renren-admin/src/main/java/io/renren/modules/qyh/mapper/EnterpriseMapper.java

@@ -0,0 +1,21 @@
+package io.renren.modules.qyh.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.renren.modules.qyh.entity.EnterpriseEntity;
+import io.renren.modules.qyh.model.vo.EnterpriseVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+
+/**
+ * 企业表
+ */
+@Mapper
+public interface EnterpriseMapper extends BaseMapper<EnterpriseEntity> {
+
+    IPage<EnterpriseVO> pageEnterprise(IPage<EnterpriseEntity> iPage, @Param("params") Map<String, Object> params);
+
+    IPage<EnterpriseVO> pageApiEnterprise(IPage<EnterpriseEntity> iPage, @Param("params") Map<String, Object> params);
+}

+ 103 - 0
renren-admin/src/main/java/io/renren/modules/qyh/model/dto/EnterpriseDTO.java

@@ -0,0 +1,103 @@
+package io.renren.modules.qyh.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.renren.common.validator.group.AddGroup;
+import io.renren.common.validator.group.UpdateGroup;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 企业表
+ *
+ */
+@Data
+public class EnterpriseDTO implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	@ApiModelProperty(value = "关联小程序用户id")
+	private Long memberId;
+	@ApiModelProperty(value = "审核id")
+	private Long auditId;
+
+	@NotBlank(message = "企业全称不能为空", groups = { AddGroup.class, UpdateGroup.class })
+	@Size(min = 0, max = 255, message = "企业全称长度不能超过255个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "企业全称")
+	private String enterpriseName;
+	@NotBlank(message = "营业执照号不能为空", groups = { AddGroup.class, UpdateGroup.class })
+	@Size(min = 0, max = 100, message = "营业执照号长度不能超过100个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "营业执照号")
+	private String licenseNo;
+	@NotBlank(message = "联系人不能为空", groups = { AddGroup.class, UpdateGroup.class })
+	@Size(min = 0, max = 50, message = "联系人长度不能超过50个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "联系人")
+	private String contactPerson;
+	@NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, UpdateGroup.class })
+	@Size(min = 0, max = 20, message = "联系电话长度不能超过20个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "联系电话")
+	private String contactPhone;
+	@NotBlank(message = "营业执照照片不能为空", groups = { AddGroup.class, UpdateGroup.class })
+	@Size(min = 0, max = 500, message = "营业执照照片长度不能超过500个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "营业执照照片")
+	private String licensePhoto;
+	@Size(min = 0, max = 500, message = "企业简介长度不能超过500个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "企业简介")
+	private String enterpriseIntro;
+	@Size(min = 0, max = 500, message = "企业地址长度不能超过500个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "企业地址")
+	private String enterpriseAddress;
+	@Size(min = 0, max = 20, message = "企业电话长度不能超过20个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "企业电话")
+	private String enterprisePhone;
+	@Size(min = 0, max = 500, message = "企业logo长度不能超过500个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "企业logo")
+	private String enterpriseLogo;
+	@Size(min = 0, max = 500, message = "主营标签长度不能超过500个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "主营标签")
+	private String mainTags;
+	@Size(min = 0, max = 100, message = "联系邮箱长度不能超过100个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "联系邮箱")
+	private String enterpriseEmail;
+	@Size(min = 0, max = 2000, message = "企业宣传图 多选长度不能超过2000个字符", groups = {AddGroup.class, UpdateGroup.class})
+	@ApiModelProperty(value = "企业宣传图 多选")
+	private String enterprisePromoImages;
+	@ApiModelProperty(value = "状态 1-未缴费 2-已缴费 3-已过期")
+	private Integer status;
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "支付时间")
+	private LocalDateTime payLastTime;
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "过期时间")
+	private LocalDateTime expiredTime;
+
+	@ApiModelProperty(value = "创建人")
+	private Long createId;
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+	private LocalDateTime createTime;
+	@ApiModelProperty(value = "修改人")
+	private Long updateId;
+
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "修改时间")
+	private LocalDateTime updateTime;
+
+	@ApiModelProperty(value = "是否删除(0正常 -1删除)")
+	private String isDelete;
+
+	@ApiModelProperty(value = "审核状态")
+	private Integer auditStatus;
+	@ApiModelProperty(value = "审核原因")
+	private String auditReason;
+
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "审核时间")
+	private LocalDateTime auditTime;
+
+}

+ 82 - 0
renren-admin/src/main/java/io/renren/modules/qyh/model/vo/EnterpriseVO.java

@@ -0,0 +1,82 @@
+package io.renren.modules.qyh.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 企业表
+ *
+ */
+@Data
+public class EnterpriseVO implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	@ApiModelProperty(value = "关联小程序用户id")
+	private Long memberId;
+	@ApiModelProperty(value = "审核id")
+	private Long auditId;
+
+	@ApiModelProperty(value = "企业全称")
+	private String enterpriseName;
+	@ApiModelProperty(value = "营业执照号")
+	private String licenseNo;
+	@ApiModelProperty(value = "联系人")
+	private String contactPerson;
+	@ApiModelProperty(value = "联系电话")
+	private String contactPhone;
+	@ApiModelProperty(value = "营业执照照片")
+	private String licensePhoto;
+	@ApiModelProperty(value = "企业简介")
+	private String enterpriseIntro;
+	@ApiModelProperty(value = "企业地址")
+	private String enterpriseAddress;
+	@ApiModelProperty(value = "企业电话")
+	private String enterprisePhone;
+	@ApiModelProperty(value = "企业logo")
+	private String enterpriseLogo;
+	@ApiModelProperty(value = "主营标签")
+	private String mainTags;
+	@ApiModelProperty(value = "联系邮箱")
+	private String enterpriseEmail;
+	@ApiModelProperty(value = "企业宣传图 多选")
+	private String enterprisePromoImages;
+	@ApiModelProperty(value = "状态 1-未缴费 2-已缴费 3-已过期")
+	private Integer status;
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "支付时间")
+	private LocalDateTime payLastTime;
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "过期时间")
+	private LocalDateTime expiredTime;
+
+	@ApiModelProperty(value = "创建人")
+	private Long createId;
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+	private LocalDateTime createTime;
+	@ApiModelProperty(value = "修改人")
+	private Long updateId;
+
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "修改时间")
+	private LocalDateTime updateTime;
+
+	@ApiModelProperty(value = "是否删除(0正常 -1删除)")
+	private String isDelete;
+
+	@ApiModelProperty(value = "审核状态")
+	private Integer auditStatus;
+	@ApiModelProperty(value = "审核原因")
+	private String auditReason;
+
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "审核时间")
+	private LocalDateTime auditTime;
+
+}

+ 38 - 0
renren-admin/src/main/java/io/renren/modules/qyh/service/EnterpriseService.java

@@ -0,0 +1,38 @@
+package io.renren.modules.qyh.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import io.renren.common.utils.PageUtils;
+import io.renren.modules.qyh.entity.EnterpriseEntity;
+import io.renren.modules.qyh.model.dto.EnterpriseDTO;
+import io.renren.modules.qyh.model.vo.EnterpriseVO;
+
+import java.util.Map;
+
+/**
+ * 企业表
+ */
+public interface EnterpriseService extends IService<EnterpriseEntity> {
+
+    PageUtils queryPage(Map<String, Object> params);
+
+    EnterpriseVO info(Long id);
+
+    EnterpriseVO infoMemberId(Long id);
+
+    void saveEnterprise(EnterpriseDTO dto);
+
+    void updateEnterprise(EnterpriseDTO dto);
+
+    EnterpriseEntity loadById(Long id, Boolean tw);
+
+    EnterpriseEntity loadByMemberId(Long memberId, Boolean tw);
+
+    void deleteEnterpriseByIds(Long[] ids);
+
+    void uploadEnterpriseInfo(EnterpriseDTO dto);
+
+    PageUtils queryApiPage(Map<String, Object> params);
+
+    EnterpriseEntity apiInfo(Long id);
+}
+

+ 9 - 0
renren-admin/src/main/java/io/renren/modules/qyh/service/impl/AuditServiceImpl.java

@@ -3,6 +3,9 @@ package io.renren.modules.qyh.service.impl;
 import java.time.LocalDateTime;
 import java.util.Map;
 
+import io.renren.common.enums.EnterpriseStatusEnum;
+import io.renren.modules.qyh.entity.EnterpriseEntity;
+import io.renren.modules.qyh.service.EnterpriseService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -48,6 +51,7 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, AuditEntity> impl
     private final ActivityDao activityDao;
     private final MemberInfoService memberInfoService;
     private final StudentStatusMapper studentStatusMapper;
+    private final EnterpriseService enterpriseService;
 
     @Override
     public PageUtils queryPage(Map<String, Object> params) {
@@ -133,6 +137,11 @@ public class AuditServiceImpl extends ServiceImpl<AuditMapper, AuditEntity> impl
                 memberInfoEntity.setUpdateTime(LocalDateTime.now());
                 memberInfoService.updateById(memberInfoEntity);
             }
+        } else if (StrUtil.equals(code, AuditCodeEnum.ENTERPRISE_CERTIFICATION.code())) {
+            EnterpriseEntity enterpriseEntity = enterpriseService.loadById(businessId, true);
+            enterpriseEntity.setStatus(EnterpriseStatusEnum.PENDING_PAYMENT.value());
+            enterpriseEntity.setUpdateTime(LocalDateTime.now());
+            enterpriseService.updateById(enterpriseEntity);
         }
 
     }

+ 215 - 0
renren-admin/src/main/java/io/renren/modules/qyh/service/impl/EnterpriseServiceImpl.java

@@ -0,0 +1,215 @@
+package io.renren.modules.qyh.service.impl;
+
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.NumberUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.renren.common.enums.AuditCodeEnum;
+import io.renren.common.enums.AuditStatusEnum;
+import io.renren.common.enums.EnterpriseStatusEnum;
+import io.renren.common.enums.IsDeleteEnum;
+import io.renren.common.exception.RRException;
+import io.renren.common.utils.Constant;
+import io.renren.common.utils.PageUtils;
+import io.renren.modules.qmgj.entity.MemberInfoEntity;
+import io.renren.modules.qmjz.utils.BeanCopyUtils;
+import io.renren.modules.qyh.entity.AuditEntity;
+import io.renren.modules.qyh.entity.EnterpriseEntity;
+import io.renren.modules.qyh.mapper.EnterpriseMapper;
+import io.renren.modules.qyh.model.dto.AuditDTO;
+import io.renren.modules.qyh.model.dto.EnterpriseDTO;
+import io.renren.modules.qyh.model.vo.EnterpriseVO;
+import io.renren.modules.qyh.service.AuditService;
+import io.renren.modules.qyh.service.EnterpriseService;
+import io.renren.modules.qyh.service.LoginVerificationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Map;
+
+/**
+ * 企业表
+ */
+@Service("enterpriseService")
+public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, EnterpriseEntity>
+        implements EnterpriseService {
+
+    @Autowired
+    private AuditService auditService;
+    @Autowired
+    private LoginVerificationService loginVerificationService;
+
+    @Override
+    public PageUtils queryPage(Map<String, Object> params) {
+        Integer page = MapUtil.getInt(params, Constant.PAGE);
+        Integer limit = MapUtil.getInt(params, Constant.LIMIT);
+        IPage<EnterpriseEntity> iPage = new Page<>(page, limit);
+        IPage<EnterpriseVO> enterprisePage = baseMapper.pageEnterprise(iPage, params);
+        return new PageUtils(enterprisePage);
+    }
+
+    @Override
+    public EnterpriseVO info(Long id) {
+        EnterpriseEntity enterprise = this.loadById(id, true);
+        return getEnterpriseVO(enterprise.getId(), enterprise);
+    }
+
+    @Override
+    public EnterpriseVO infoMemberId(Long id) {
+        EnterpriseEntity enterprise = this.loadByMemberId(id, true);
+        return getEnterpriseVO(enterprise.getId(), enterprise);
+    }
+
+    private EnterpriseVO getEnterpriseVO(Long id, EnterpriseEntity enterprise) {
+        EnterpriseVO enterpriseVO = new EnterpriseVO();
+        BeanCopyUtils.copyPropertiesIgnoreNull(enterprise, enterpriseVO);
+        AuditEntity auditEntity =
+                auditService.loadByBusinessId(id, AuditCodeEnum.ENTERPRISE_CERTIFICATION.code(), true);
+        enterpriseVO.setAuditId(auditEntity.getId());
+        enterpriseVO.setAuditStatus(auditEntity.getAuditStatus());
+        enterpriseVO.setAuditReason(auditEntity.getReason());
+        enterpriseVO.setAuditTime(auditEntity.getUpdateTime());
+        return enterpriseVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveEnterprise(EnterpriseDTO dto) {
+        validateEnterpriseExists(dto);
+        MemberInfoEntity memberInfoEntity = loginVerificationService.verificationMemberId(dto.getMemberId());
+        Long userId = memberInfoEntity.getId();
+
+        EnterpriseEntity entity = new EnterpriseEntity();
+        BeanCopyUtils.copyPropertiesIgnoreNull(dto, entity);
+        LocalDateTime now = LocalDateTime.now();
+        entity.setMemberId(userId);
+        entity.setCreateId(userId);
+        entity.setCreateTime(now);
+        entity.setUpdateId(userId);
+        entity.setUpdateTime(now);
+        baseMapper.insert(entity);
+
+        AuditDTO auditDTO = new AuditDTO();
+        auditDTO.setBusinessId(entity.getId());
+        auditDTO.setMemberId(userId);
+        auditDTO.setAuditStatus(AuditStatusEnum.PENDING_REVIEW.value());
+        auditDTO.setCreateId(dto.getCreateId());
+        auditDTO.setUpdateId(dto.getUpdateId());
+        auditDTO.setCode(AuditCodeEnum.ENTERPRISE_CERTIFICATION.code());
+        auditService.saveAudit(auditDTO);
+
+        entity.setAuditId(auditDTO.getId());
+        baseMapper.updateById(entity);
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateEnterprise(EnterpriseDTO dto) {
+        MemberInfoEntity memberInfoEntity = loginVerificationService.verificationMemberId(dto.getMemberId());
+        Long userId = memberInfoEntity.getId();
+        AuditEntity auditEntity = auditService.loadByAuditId(dto.getAuditId(), true);
+        AuditStatusEnum statusEnum = AuditStatusEnum.getByCode(auditEntity.getAuditStatus());
+        if (statusEnum != null) {
+            if (statusEnum.value().equals(AuditStatusEnum.FAIL.value())) {
+                EnterpriseEntity entity = this.loadById(dto.getId(), true);
+                BeanCopyUtils.copyPropertiesIgnoreNull(dto, entity);
+                entity.setUpdateId(userId);
+                entity.setUpdateTime(LocalDateTime.now());
+                baseMapper.updateById(entity);
+
+                auditEntity.setAuditStatus(AuditStatusEnum.PENDING_REVIEW.value());
+                auditEntity.setReason(null);
+                auditService.updateById(auditEntity);
+            } else {
+                throw new RRException("企业认证不能修改");
+            }
+        }
+    }
+
+    @Override
+    public EnterpriseEntity loadById(Long id, Boolean tw) {
+        EnterpriseEntity entity = baseMapper.selectById(id);
+        if (entity == null) {
+            if (tw) {
+                throw new RRException("企业认证不存在");
+            }
+        }
+        return entity;
+    }
+
+    @Override
+    public EnterpriseEntity loadByMemberId(Long memberId, Boolean tw) {
+        EnterpriseEntity entity = baseMapper.selectOne(new LambdaQueryWrapper<EnterpriseEntity>().eq(EnterpriseEntity::getMemberId, memberId).last("limit 1"));
+        if (entity == null) {
+            if (tw) {
+                throw new RRException("此用户的企业不存在");
+            }
+        }
+        return entity;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteEnterpriseByIds(Long[] ids) {
+        for (Long id : ids) {
+            EnterpriseEntity entity = loadById(id, true);
+            entity.setIsDelete(IsDeleteEnum.DELETE.value());
+            entity.setUpdateTime(LocalDateTime.now());
+            baseMapper.updateById(entity);
+            auditService.removeById(entity.getAuditId());
+        }
+    }
+
+    @Override
+    public void uploadEnterpriseInfo(EnterpriseDTO dto) {
+        loginVerificationService.verificationMemberId(dto.getMemberId());
+        EnterpriseEntity entity = this.loadById(dto.getId(), true);
+        if (!EnterpriseStatusEnum.PAID.value().equals(entity.getStatus())) {
+            throw new RRException("当前企业未缴费");
+        }
+        entity.setEnterpriseIntro(dto.getEnterpriseIntro());
+        entity.setEnterpriseAddress(dto.getEnterpriseAddress());
+        entity.setEnterprisePhone(dto.getEnterprisePhone());
+        entity.setEnterpriseLogo(dto.getEnterpriseLogo());
+        entity.setMainTags(dto.getMainTags());
+        entity.setEnterpriseEmail(dto.getEnterpriseEmail());
+        entity.setEnterprisePromoImages(dto.getEnterprisePromoImages());
+        entity.setUpdateId(dto.getMemberId());
+        entity.setUpdateTime(LocalDateTime.now());
+        baseMapper.updateById(entity);
+    }
+
+    @Override
+    public PageUtils queryApiPage(Map<String, Object> params) {
+        Integer page = MapUtil.getInt(params, Constant.PAGE);
+        Integer limit = MapUtil.getInt(params, Constant.LIMIT);
+        IPage<EnterpriseEntity> iPage = new Page<>(page, limit);
+        IPage<EnterpriseVO> enterprisePage = baseMapper.pageApiEnterprise(iPage, params);
+        return new PageUtils(enterprisePage);
+    }
+
+    @Override
+    public EnterpriseEntity apiInfo(Long id) {
+        EnterpriseEntity enterprise = loadById(id, true);
+        if (!EnterpriseStatusEnum.PAID.value().equals(enterprise.getStatus())) {
+            throw new RRException("当前企业暂时无法查看");
+        }
+        return enterprise;
+    }
+
+    private void validateEnterpriseExists(EnterpriseDTO dto) {
+        Integer memberCount = baseMapper.selectCount(
+                new LambdaQueryWrapper<EnterpriseEntity>().eq(EnterpriseEntity::getMemberId, dto.getMemberId())
+                        .eq(EnterpriseEntity::getIsDelete, IsDeleteEnum.NORMAL.value()));
+        if (NumberUtil.isGreater(NumberUtil.toBigDecimal(memberCount), BigDecimal.ZERO)) {
+            throw new RRException("当前微信用户已有企业认证记录");
+        }
+    }
+
+}

+ 62 - 0
renren-admin/src/main/resources/mapper/qyh/EnterpriseDao.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="io.renren.modules.qyh.mapper.EnterpriseMapper">
+
+    <resultMap type="io.renren.modules.qyh.entity.EnterpriseEntity" id="enterpriseMap">
+        <result property="id" column="id"/>
+        <result property="memberId" column="member_id"/>
+        <result property="auditId" column="audit_id"/>
+        <result property="enterpriseName" column="enterprise_name"/>
+        <result property="licenseNo" column="license_no"/>
+        <result property="contactPerson" column="contact_person"/>
+        <result property="contactPhone" column="contact_phone"/>
+        <result property="licensePhoto" column="license_photo"/>
+        <result property="enterpriseIntro" column="enterprise_intro"/>
+        <result property="enterpriseAddress" column="enterprise_address"/>
+        <result property="enterprisePhone" column="enterprise_phone"/>
+        <result property="enterpriseLogo" column="enterprise_logo"/>
+        <result property="mainTags" column="main_tags"/>
+        <result property="enterpriseEmail" column="enterprise_email"/>
+        <result property="enterprisePromoImages" column="enterprise_promo_images"/>
+        <result property="status" column="status"/>
+        <result property="payLastTime" column="pay_last_time"/>
+        <result property="expiredTime" column="expired_time"/>
+        <result property="createId" column="create_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateId" column="update_id"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="isDelete" column="is_delete"/>
+    </resultMap>
+
+    <select id="pageEnterprise" resultType="io.renren.modules.qyh.model.vo.EnterpriseVO">
+        SELECT
+            qe.*,
+            wa.audit_status
+        FROM
+            `qyh_enterprise` qe
+            JOIN qyh_audit wa ON qe.audit_id = wa.id AND wa.code = 'enterprise'
+        <where>
+            qe.is_delete = '0'
+            <if test="params.auditStatus != null and params.auditStatus != ''">
+                AND wa.`audit_status` = #{params.auditStatus}
+            </if>
+        </where>
+        ORDER BY qe.create_time DESC
+    </select>
+
+    <select id="pageApiEnterprise" resultType="io.renren.modules.qyh.model.vo.EnterpriseVO">
+        SELECT
+            qe.*
+        FROM
+        `qyh_enterprise` qe
+        <where>
+            qe.is_delete = '0'
+            <if test="params.status != null and params.status != ''">
+                AND qe.`status` = #{params.status}
+            </if>
+        </where>
+        ORDER BY qe.create_time DESC
+    </select>
+
+</mapper>

+ 6 - 1
renren-common/src/main/java/io/renren/common/enums/AuditCodeEnum.java

@@ -18,7 +18,12 @@ public enum AuditCodeEnum {
     /**
      * 学籍认证
      */
-    STUDENT_STATUS_CERTIFICATION(1, "school_roll", "学籍认证");
+    STUDENT_STATUS_CERTIFICATION(1, "school_roll", "学籍认证"),
+    /**
+     * 企业认证
+     */
+    ENTERPRISE_CERTIFICATION(2, "enterprise", "企业认证"),
+    ;
 
     private Integer value;
     private String code;

+ 41 - 0
renren-common/src/main/java/io/renren/common/enums/EnterpriseStatusEnum.java

@@ -0,0 +1,41 @@
+package io.renren.common.enums;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * 状态 1-未缴费 2-已缴费 3-已过期
+ *
+ */
+public enum EnterpriseStatusEnum {
+
+    PENDING_PAYMENT(1, "未缴费"),
+    PAID(2, "已缴费"),
+    EXPIRED(3, "已过期");
+
+    private Integer value;
+    private String desc;
+
+    EnterpriseStatusEnum(Integer value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    public Integer value() {
+        return this.value;
+    }
+
+    public String desc() {
+        return this.desc;
+    }
+
+    @JsonCreator
+    public static EnterpriseStatusEnum getByCode(Integer value) {
+        for (EnterpriseStatusEnum ynEnum : EnterpriseStatusEnum.values()) {
+            if (ObjectUtil.equal(value, ynEnum.value())) {
+                return ynEnum;
+            }
+        }
+        return null;
+    }
+}

+ 6 - 1
renren-common/src/main/java/io/renren/common/enums/OrderBusinessTypeEnum.java

@@ -26,7 +26,12 @@ public enum OrderBusinessTypeEnum {
     /**
      * 购买活动
      */
-    PURCHASE_ACTIVITY(3, "购买活动");
+    PURCHASE_ACTIVITY(3, "购买活动"),
+    /**
+     * 企业缴费
+     */
+    ENTERPRISE_PAYMENT(4, "企业缴费")
+    ;
 
     private Integer value;
     private String desc;