Commit eaabfcd9 authored by yanghao's avatar yanghao

chore: 添加客户竞争对手表及接口

parent 9eea35ec
-- ----------------------------
-- Table structure for ecw_customer_competitor
-- ----------------------------
DROP TABLE IF EXISTS `ecw_customer_competitor`;
CREATE TABLE `ecw_customer_competitor` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(512) NOT NULL COMMENT '名称',
`creator` varchar(32) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL COMMENT '创建时间',
`updater` varchar(32) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL COMMENT '更新时间',
`deleted` bit DEFAULT false COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY (`create_time`)
) COMMENT='客户竞争对手表';
\ No newline at end of file
package cn.iocoder.yudao.module.customer.convert.customerCompetitor;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.customer.vo.customerCompetitor.*;
import cn.iocoder.yudao.module.customer.dal.dataobject.customerCompetitor.CustomerCompetitorDO;
/**
* 客户竞争对手 Convert
* @author yanghao
*/
@Mapper
public interface CustomerCompetitorConvert {
/*****转换MapStruct*****/
CustomerCompetitorConvert INSTANCE = Mappers.getMapper(CustomerCompetitorConvert.class);
/***
* 创建VO转实体
* @param bean
* @return
*/
CustomerCompetitorDO convert(CustomerCompetitorCreateReqVO bean);
/***
* 修改VO转实体
* @param bean
* @return
*/
CustomerCompetitorDO convert(CustomerCompetitorUpdateReqVO bean);
/***
* 实体转返回VO
* @param bean
* @return
*/
CustomerCompetitorBackVO convert(CustomerCompetitorDO bean);
/***
* 实体列表转返回VO列表
* @param list
* @return
*/
List<CustomerCompetitorBackVO> convertList(List<CustomerCompetitorDO> list);
/***
* 实体分页转返回分页
* @param page
* @return
*/
PageResult<CustomerCompetitorBackVO> convertPage(PageResult<CustomerCompetitorDO> page);
}
package cn.iocoder.yudao.module.customer.dal.dataobject.customerCompetitor;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 客户竞争对手 DO
*
* @author yanghao
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("ecw_customer_competitor")
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class CustomerCompetitorDO extends BaseDO {
/**
* 主键ID
*/
@TableId
private Long id;
/**
* 名称
*/
private String name;
}
package cn.iocoder.yudao.module.customer.dal.mysql.customerCompetitor;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery;
import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper;
import cn.iocoder.yudao.module.customer.dal.dataobject.customerCompetitor.CustomerCompetitorDO;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.customer.vo.customerCompetitor.*;
/**
* 客户竞争对手 Mapper
* @author yanghao
*/
@Mapper
public interface CustomerCompetitorMapper extends AbstractMapper<CustomerCompetitorDO> {
@Override
default PageResult<CustomerCompetitorDO> selectPage(PageVO page, Object object) {
if (object instanceof CustomerCompetitorQueryVO) {
CustomerCompetitorQueryVO vo = (CustomerCompetitorQueryVO)object;
return selectPage(page, new LambdaQuery<CustomerCompetitorDO>()
.likeIfPresent(CustomerCompetitorDO::getName, vo.getName())
.betweenIfPresent(CustomerCompetitorDO::getCreateTime, vo.getBeginCreateTime(), vo.getEndCreateTime())
.orderByDesc(CustomerCompetitorDO::getId));
}
return null;
}
@Override
default List<CustomerCompetitorDO> selectList(Object object) {
if (object instanceof CustomerCompetitorQueryVO) {
CustomerCompetitorQueryVO vo = (CustomerCompetitorQueryVO)object;
return selectList(new LambdaQuery<CustomerCompetitorDO>()
.likeIfPresent(CustomerCompetitorDO::getName, vo.getName())
.betweenIfPresent(CustomerCompetitorDO::getCreateTime, vo.getBeginCreateTime(), vo.getEndCreateTime())
.orderByDesc(CustomerCompetitorDO::getId));
}
return null;
}
}
......@@ -29,4 +29,8 @@ public interface ErrorCodeConstants {
ErrorCode BANK_NOT_EXISTS = new ErrorCode(1005001010, "客户银行账户不存在");
ErrorCode COMPETITOR_NOT_EXISTS = new ErrorCode(1005001011, "客户竞争对手不存在");
ErrorCode COMPETITOR_EXISTS = new ErrorCode(1005001012, "竞争对手名称已存在");
}
package cn.iocoder.yudao.module.customer.service.customerCompetitor;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.module.customer.vo.customerCompetitor.*;
import cn.iocoder.yudao.module.customer.dal.dataobject.customerCompetitor.CustomerCompetitorDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
/**
* 客户竞争对手 Service 接口
*
* @author yanghao
*/
public interface CustomerCompetitorService extends IService<CustomerCompetitorDO> {
/**
* 创建客户竞争对手
* @param createReqVO 创建信息
* @return 编号
*/
Long createCompetitor(@Valid CustomerCompetitorCreateReqVO createReqVO);
/**
* 更新客户竞争对手
* @param updateReqVO 更新信息
*/
void updateCompetitor(@Valid CustomerCompetitorUpdateReqVO updateReqVO);
/**
* 删除客户竞争对手
* @param id 编号
*/
void deleteCompetitor(Long id);
/**
* 获得客户竞争对手
* @param id 编号
* @return 客户竞争对手
*/
CustomerCompetitorDO getCompetitor(Long id);
/**
* 获得客户竞争对手列表
* @param ids 编号
* @return 客户竞争对手列表
*/
List<CustomerCompetitorDO> getCompetitorList(Collection<Long> ids);
List<CustomerCompetitorDO> getCompetitorList();
/**
* 获得客户竞争对手分页
* @param page 分页查询
* @param query 查询
* @return 客户竞争对手分页
*/
PageResult<CustomerCompetitorDO> getCompetitorPage(CustomerCompetitorQueryVO query, PageVO page);
/**
* 获得客户竞争对手列表, 用于 Excel 导出
* @param query 查询
* @return 客户竞争对手列表
*/
List<CustomerCompetitorDO> getCompetitorList(CustomerCompetitorQueryVO query);
}
package cn.iocoder.yudao.module.customer.service.customerCompetitor;
import java.util.*;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService;
import cn.iocoder.yudao.module.customer.vo.customerCompetitor.*;
import cn.iocoder.yudao.module.customer.dal.dataobject.customerCompetitor.CustomerCompetitorDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.customer.convert.customerCompetitor.CustomerCompetitorConvert;
import cn.iocoder.yudao.module.customer.dal.mysql.customerCompetitor.CustomerCompetitorMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.customer.enums.ErrorCodeConstants.*;
/**
* 客户竞争对手 Service 实现类
*
* @author yanghao
*/
@Service
@Validated
public class CustomerCompetitorServiceImpl extends AbstractService<CustomerCompetitorMapper, CustomerCompetitorDO> implements CustomerCompetitorService {
@Resource
private CustomerCompetitorMapper competitorMapper;
@Override
public Long createCompetitor(CustomerCompetitorCreateReqVO createReqVO) {
// 校验存在
Long count = competitorMapper.selectCount("name", createReqVO.getName());
if (count != 0) {
throw exception(COMPETITOR_EXISTS);
}
// 插入
CustomerCompetitorDO competitor = CustomerCompetitorConvert.INSTANCE.convert(createReqVO);
competitorMapper.insert(competitor);
// 返回
return competitor.getId();
}
@Override
public void updateCompetitor(CustomerCompetitorUpdateReqVO updateReqVO) {
// 校验存在
this.validateCompetitorExists(updateReqVO.getId());
// 更新
CustomerCompetitorDO updateObj = CustomerCompetitorConvert.INSTANCE.convert(updateReqVO);
competitorMapper.updateById(updateObj);
}
@Override
public void deleteCompetitor(Long id) {
// 校验存在
this.validateCompetitorExists(id);
// 删除
competitorMapper.deleteById(id);
}
private void validateCompetitorExists(Long id) {
if (competitorMapper.selectById(id) == null) {
throw exception(COMPETITOR_NOT_EXISTS);
}
}
@Override
public CustomerCompetitorDO getCompetitor(Long id) {
return competitorMapper.selectById(id);
}
@Override
public List<CustomerCompetitorDO> getCompetitorList(Collection<Long> ids) {
return competitorMapper.selectBatchIds(ids);
}
@Override
public List<CustomerCompetitorDO> getCompetitorList() {
return competitorMapper.selectList();
}
@Override
public PageResult<CustomerCompetitorDO> getCompetitorPage(CustomerCompetitorQueryVO query, PageVO page) {
return competitorMapper.selectPage(page, query);
}
@Override
public List<CustomerCompetitorDO> getCompetitorList(CustomerCompetitorQueryVO query) {
return competitorMapper.selectList(query);
}
}
package cn.iocoder.yudao.module.customer.vo.customerCompetitor;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 客户竞争对手 Response VO
* @author yanghao
*/
@Data
@ApiModel("管理后台 - 客户竞争对手 Response VO")
public class CustomerCompetitorBackVO {
@ExcelProperty("主键ID")
@ApiModelProperty(value = "主键ID", required = true)
private Long id;
@ExcelProperty("名称")
@ApiModelProperty(value = "名称", required = true)
private String name;
@ExcelProperty("创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "创建时间", required = true)
private Date createTime;
}
package cn.iocoder.yudao.module.customer.vo.customerCompetitor;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
/**
* 客户竞争对手 Base VO,提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public class CustomerCompetitorBaseVO {
@ApiModelProperty(value = "名称", required = true)
@NotNull(message = "名称不能为空")
private String name;
}
package cn.iocoder.yudao.module.customer.vo.customerCompetitor;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel("管理后台 - 客户竞争对手创建 Request VO")
public class CustomerCompetitorCreateReqVO extends CustomerCompetitorBaseVO {
}
package cn.iocoder.yudao.module.customer.vo.customerCompetitor;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data
@ApiModel("管理后台 - 客户竞争对手查询 VO")
public class CustomerCompetitorQueryVO {
@ApiModelProperty(value = "名称")
private String name;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "开始创建时间")
private Date beginCreateTime;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "结束创建时间")
private Date endCreateTime;
}
package cn.iocoder.yudao.module.customer.vo.customerCompetitor;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
@ApiModel("管理后台 - 客户竞争对手更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class CustomerCompetitorUpdateReqVO extends CustomerCompetitorBaseVO {
@ApiModelProperty(value = "主键ID", required = true)
@NotNull(message = "主键ID不能为空")
private Long id;
}
package cn.iocoder.yudao.module.customer.controller.admin.customerCompetitor;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.customer.vo.customerCompetitor.*;
import cn.iocoder.yudao.module.customer.dal.dataobject.customerCompetitor.CustomerCompetitorDO;
import cn.iocoder.yudao.module.customer.convert.customerCompetitor.CustomerCompetitorConvert;
import cn.iocoder.yudao.module.customer.service.customerCompetitor.CustomerCompetitorService;
@Validated
@RestController
@Api(tags = "管理后台 - 客户竞争对手")
@RequestMapping("/customer/competitor")
public class CustomerCompetitorController {
@Resource
private CustomerCompetitorService competitorService;
@PostMapping("/create")
@ApiOperation("创建客户竞争对手")
// @PreAuthorize("@ss.hasPermission('customer:competitor:create')")
public CommonResult<Long> createCompetitor(@Valid @RequestBody CustomerCompetitorCreateReqVO createReqVO) {
return success(competitorService.createCompetitor(createReqVO));
}
// @PutMapping("/update")
// @ApiOperation("更新客户竞争对手")
// @PreAuthorize("@ss.hasPermission('customer:competitor:update')")
// public CommonResult<Boolean> updateCompetitor(@Valid @RequestBody CustomerCompetitorUpdateReqVO updateReqVO) {
// competitorService.updateCompetitor(updateReqVO);
// return success(true);
// }
//
// @DeleteMapping("/delete")
// @ApiOperation("删除客户竞争对手")
// @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
// @PreAuthorize("@ss.hasPermission('customer:competitor:delete')")
// public CommonResult<Boolean> deleteCompetitor(@RequestParam("id") Long id) {
// competitorService.deleteCompetitor(id);
// return success(true);
// }
//
// @GetMapping("/get")
// @ApiOperation("获得客户竞争对手")
// @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
// @PreAuthorize("@ss.hasPermission('customer:competitor:query')")
// public CommonResult<CustomerCompetitorBackVO> getCompetitor(@RequestParam("id") Long id) {
// CustomerCompetitorDO competitor = competitorService.getCompetitor(id);
// return success(CustomerCompetitorConvert.INSTANCE.convert(competitor));
// }
@GetMapping("/list")
@ApiOperation("获得客户竞争对手列表")
@ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
// @PreAuthorize("@ss.hasPermission('customer:competitor:query')")
public CommonResult<List<CustomerCompetitorBackVO>> getCompetitorList(@RequestParam("ids") Collection<Long> ids) {
List<CustomerCompetitorDO> list = competitorService.getCompetitorList(ids);
return success(CustomerCompetitorConvert.INSTANCE.convertList(list));
}
@GetMapping("/listAll")
@ApiOperation("获得所有客户竞争对手列表")
// @PreAuthorize("@ss.hasPermission('customer:competitor:query')")
public CommonResult<List<CustomerCompetitorBackVO>> getCompetitorListAll() {
List<CustomerCompetitorDO> list = competitorService.getCompetitorList();
return success(CustomerCompetitorConvert.INSTANCE.convertList(list));
}
// @GetMapping("/page")
// @ApiOperation("获得客户竞争对手分页")
// @PreAuthorize("@ss.hasPermission('customer:competitor:query')")
// public CommonResult<PageResult<CustomerCompetitorBackVO>> getCompetitorPage(@Valid CustomerCompetitorQueryVO query, PageVO page) {
// PageResult<CustomerCompetitorDO> pageResult = competitorService.getCompetitorPage(query, page);
// return success(CustomerCompetitorConvert.INSTANCE.convertPage(pageResult));
// }
// @GetMapping("/export-excel")
// @ApiOperation("导出客户竞争对手 Excel")
// @PreAuthorize("@ss.hasPermission('customer:competitor:export')")
// @OperateLog(type = EXPORT)
// public void exportCompetitorExcel(@Valid CustomerCompetitorQueryVO query,
// HttpServletResponse response) throws IOException {
// List<CustomerCompetitorDO> list = competitorService.getCompetitorList(query);
// // 导出 Excel
// List<CustomerCompetitorBackVO> datas = CustomerCompetitorConvert.INSTANCE.convertList(list);
// ExcelUtils.write(response, "客户竞争对手.xls", "数据", CustomerCompetitorBackVO.class, datas);
// }
}
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