diff --git a/ad-distribute-common/common-core/src/main/java/com/baiye/enums/SalesManEnum.java b/ad-distribute-common/common-core/src/main/java/com/baiye/enums/SalesManEnum.java index 464b29b..6461214 100644 --- a/ad-distribute-common/common-core/src/main/java/com/baiye/enums/SalesManEnum.java +++ b/ad-distribute-common/common-core/src/main/java/com/baiye/enums/SalesManEnum.java @@ -15,6 +15,7 @@ */ package com.baiye.enums; +import com.baiye.constant.DefaultNumberConstants; import lombok.AllArgsConstructor; import lombok.Getter; @@ -42,6 +43,16 @@ public enum SalesManEnum { */ FIRST_INSTANCE(20L, 2), + /** + * 业务员 + */ + SALESMAN(23L, 4), + + /** + * 业务主管 + */ + EXECUTIVE(14L, 0), + /** * 复审员 */ @@ -59,6 +70,7 @@ public enum SalesManEnum { return salesManEnum.getType(); } } - return 0; + return DefaultNumberConstants.MINUS_ONE_NUMBER; } + } diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/pom.xml b/ad-distribute-starters/ad-distribute-starter-easyexcel/pom.xml index da05652..a7970cc 100644 --- a/ad-distribute-starters/ad-distribute-starter-easyexcel/pom.xml +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/pom.xml @@ -54,6 +54,16 @@ spring-webmvc + + cn.hutool + hutool-all + + + + com.baiye + common-util + + org.springframework.boot diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/BooleanStringConverter.java b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/BooleanStringConverter.java new file mode 100644 index 0000000..bd2431a --- /dev/null +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/BooleanStringConverter.java @@ -0,0 +1,50 @@ +package com.baiye.common.excel.converters; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.converters.WriteConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.baiye.util.AESUtils; + +import java.util.Objects; + +/** + * @author Enzo + * @date : 2023/12/8 + */ +public class BooleanStringConverter implements Converter { + @Override + public Class supportJavaTypeKey() { + return String.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + /** + * 这里读的时候会调用 + * + * @param context + * @return + */ + @Override + public String convertToJavaData(ReadConverterContext context) { + return context.getReadCellData().getStringValue().equals(Boolean.TRUE.toString()) ? "是" : "否"; + } + + /** + * 这里是写的时候会调用 不用管 + * + * @return + */ + @Override + public WriteCellData convertToExcelData(WriteConverterContext context) { + return new WriteCellData<>(Boolean.parseBoolean(context.getValue()) ? "是" : "否"); + } + +} diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/CustomStringStringConverter.java b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/CustomStringStringConverter.java new file mode 100644 index 0000000..02e7cb9 --- /dev/null +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/CustomStringStringConverter.java @@ -0,0 +1,45 @@ +package com.baiye.common.excel.converters; + +import cn.hutool.json.JSONUtil; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.converters.WriteConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.data.WriteCellData; + +/** + * @author Enzo + * @date : 2023/12/8 + */ +public class CustomStringStringConverter implements Converter { + @Override + public Class supportJavaTypeKey() { + return String.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + /** + * 这里读的时候会调用 + * + * @param context + * @return + */ + @Override + public String convertToJavaData(ReadConverterContext context) { + return "自定义:" + context.getReadCellData().getStringValue(); + } + + /** + * 这里是写的时候会调用 不用管 + * + * @return + */ + @Override + public WriteCellData convertToExcelData(WriteConverterContext context) { + return new WriteCellData<>(JSONUtil.toJsonStr(context.getValue())); + } +} diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/NidStringConverter.java b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/NidStringConverter.java new file mode 100644 index 0000000..5c269da --- /dev/null +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/NidStringConverter.java @@ -0,0 +1,51 @@ +package com.baiye.common.excel.converters; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.converters.WriteConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.baiye.util.AESUtils; + +import java.util.Objects; + +/** + * @author Enzo + * @date : 2023/12/8 + */ +public class NidStringConverter implements Converter { + @Override + public Class supportJavaTypeKey() { + return String.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + /** + * 这里读的时候会调用 + * + * @param context + * @return + */ + @Override + public String convertToJavaData(ReadConverterContext context) { + return Objects.requireNonNull(AESUtils.encrypt(context.getReadCellData().getStringValue(), "==ad-distribute=")); + } + + /** + * 这里是写的时候会调用 不用管 + * + * @return + */ + @Override + public WriteCellData convertToExcelData(WriteConverterContext context) { + return ObjectUtil.isNotNull(context.getValue()) ? new WriteCellData<> + (AESUtils.decrypt(context.getValue(), "==ad-distribute=")) : new WriteCellData<>(CharSequenceUtil.EMPTY); + } + +} diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/java/hccake/ballcat/excel/application/ExcelExportTestController.java b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/java/hccake/ballcat/excel/application/ExcelExportTestController.java index 1cc7992..35fb360 100644 --- a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/java/hccake/ballcat/excel/application/ExcelExportTestController.java +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/java/hccake/ballcat/excel/application/ExcelExportTestController.java @@ -3,11 +3,14 @@ package hccake.ballcat.excel.application; import com.baiye.common.excel.annotation.ResponseExcel; import com.baiye.common.excel.annotation.Sheet; import com.baiye.common.excel.head.EmptyHeadGenerator; +import org.apache.commons.compress.utils.Lists; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -27,7 +30,7 @@ public class ExcelExportTestController { data.setPassword("password" + i); dataList.add(data); } - return dataList; + return new ArrayList<>(Collections.singletonList(new DemoData())); } @ResponseExcel(name = "test-export", template = "template.xlsx", headGenerator = EmptyHeadGenerator.class) diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/resources/excel/fill-template.xlsx b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/resources/excel/fill-template.xlsx new file mode 100644 index 0000000..3e37499 Binary files /dev/null and b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/resources/excel/fill-template.xlsx differ diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/resources/excel/template.xlsx b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/resources/excel/template.xlsx new file mode 100644 index 0000000..7a39f6e Binary files /dev/null and b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/test/resources/excel/template.xlsx differ diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java index f56a0ef..1783f5c 100644 --- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java +++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/service/impl/SysUserServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.domain.PageParam; @@ -140,7 +141,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl roleList; @@ -150,11 +151,12 @@ public class SysUserServiceImpl extends ExtendServiceImpl roleIdSet = roleList.stream().map(SysRole::getId).collect(Collectors.toSet()); - if (Boolean.FALSE.equals(isAdmin) - && adminUserChecker.isSalesman(roleIdSet)) { + if (Boolean.FALSE.equals(isAdmin)) { for (Long id : roleIdSet) { - if (SalesManEnum.find(id) > 0) { - userInfoDTO.setSalesmanType(SalesManEnum.find(id)); + Integer type = SalesManEnum.find(id); + if (ObjectUtil.isNotNull(type) + && type > DefaultNumberConstants.MINUS_ONE_NUMBER) { + userInfoDTO.setSalesmanType(type); break; } } @@ -548,9 +550,9 @@ public class SysUserServiceImpl extends ExtendServiceImpl> getClueRecordPage(@Validated PageParam pageParam, ClueQo qo) { + if (ObjectUtil.isNotNull(qo.getSalesmanType())) { + if (qo.getSalesmanType() == DefaultNumberConstants.FOUR_NUMBER) { + qo.setAssignedBy(SecurityUtils.getCurrentUserId()); + } + if (qo.getSalesmanType() == DefaultNumberConstants.ZERO_NUMBER) { + qo.setCompanyId(SecurityUtils.getCurrentUserId()); + } + } return R.ok(clueService.queryPage(pageParam, qo)); } @@ -69,11 +73,19 @@ public class ClueController { return R.ok(clueService.details(clueId, qo)); } + @Operation(summary = "修改是否有效") + @GetMapping("/changeIsEffective") + public R update(Long id, Integer effective) { + clueService.changeEffective(id, effective); + return R.ok(); + } @ResponseExcel(name = "线索表单") @GetMapping("/export") public List exportClueData(ClueQo qo) { List list = clueService.queryList(qo); - return CollUtil.isEmpty(list) ? Lists.newArrayList() : list; + return CollUtil.isEmpty(list) ? Lists.newArrayList(new ClueVO()) : list; } + + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java index 2c1bbd8..a3154b2 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java +++ b/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java @@ -65,9 +65,12 @@ public class ClueEntity extends LogicDeletedBaseEntity { @Schema(title = "资源所打的阶段名称") private String clueStageName; - @Schema(title = "资源线索ID") + @Schema(title = "是否新线索") private Boolean isNewClue; + @Schema(title = "是否有效") + private Boolean isEffective; + @Schema(title = "太空猫传递的线索ID") private Long variable; diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/PushLinkEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/PushLinkEntity.java index 6a30bd7..0cc64d0 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/entity/PushLinkEntity.java +++ b/admin/src/main/java/com/baiye/modules/distribute/entity/PushLinkEntity.java @@ -14,7 +14,7 @@ import java.util.List; @Getter @Setter -@TableName(value = "tb_push_link",autoResultMap = true) +@TableName(value = "tb_push_link", autoResultMap = true) @Schema(title = "推送链接") @TableAlias("pl") public class PushLinkEntity extends BaseEntity { diff --git a/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java b/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java index aae1a88..beb9502 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java +++ b/admin/src/main/java/com/baiye/modules/distribute/mapper/ClueMapper.java @@ -2,28 +2,22 @@ package com.baiye.modules.distribute.mapper; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; -import com.baiye.extend.mybatis.plus.conditions.query.LambdaAliasQueryWrapperX; import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; import com.baiye.extend.mybatis.plus.toolkit.WrappersX; import com.baiye.modules.distribute.converter.ClueConverter; -import com.baiye.modules.distribute.converter.PushLinkConverter; import com.baiye.modules.distribute.dto.HomePageDTO; import com.baiye.modules.distribute.entity.ClueEntity; -import com.baiye.modules.distribute.entity.PushLinkEntity; import com.baiye.modules.distribute.qo.ClueQo; import com.baiye.modules.distribute.qo.HomePageQo; import com.baiye.modules.distribute.vo.ClueVO; -import com.baiye.modules.distribute.vo.PushLinkVO; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; import java.util.List; -import java.util.Map; public interface ClueMapper extends ExtendMapper { @@ -52,7 +46,7 @@ public interface ClueMapper extends ExtendMapper { * @param wrapperX * @return */ - List selectListByQo(Wrapper wrapperX); + List selectListByQo(@Param(Constants.WRAPPER) Wrapper wrapperX); /** diff --git a/admin/src/main/java/com/baiye/modules/distribute/qo/ClueQo.java b/admin/src/main/java/com/baiye/modules/distribute/qo/ClueQo.java index 164fe06..04d4e08 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/qo/ClueQo.java +++ b/admin/src/main/java/com/baiye/modules/distribute/qo/ClueQo.java @@ -31,4 +31,7 @@ public class ClueQo { @Schema(title = "资源标签") private String clueLabelName; + @Schema(title = "业务类型") + private Integer salesmanType; + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/ClueService.java b/admin/src/main/java/com/baiye/modules/distribute/service/ClueService.java index 4f2b6ff..db08863 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/ClueService.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/ClueService.java @@ -50,4 +50,12 @@ public interface ClueService extends ExtendService { * @return */ List queryList(ClueQo qo); + + /** + * 修改是否有效 + * @param id + * @param effective + * @return + */ + Boolean changeEffective(Long id, Integer effective); } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java index 608ae1d..ee522fb 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java @@ -9,6 +9,7 @@ import com.baiye.constant.DefaultNumberConstants; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; import com.baiye.modules.distribute.converter.ClueConverter; import com.baiye.modules.distribute.dto.ClueDTO; import com.baiye.modules.distribute.entity.*; @@ -22,9 +23,11 @@ import com.baiye.modules.distribute.vo.ClueVO; import com.baiye.notify.event.StationNotifyPushEvent; import com.baiye.notify.model.domain.AnnouncementNotifyInfo; import com.baiye.security.util.SecurityUtils; +import com.baiye.system.model.entity.SysMenu; import com.baiye.util.AESUtils; import com.baiye.util.MobileUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -106,7 +109,7 @@ public class ClueServiceImpl extends ExtendServiceImpl i @Override public PageResult queryPage(PageParam pageParam, ClueQo qo) { - qo.setAssignedBy(SecurityUtils.getCurrentUserId()); + // 扩展数据 if (qo.getNid() != null) { qo.setNid(AESUtils.encrypt(qo.getNid(), securityProperties.getPasswordSecretKey())); @@ -226,4 +229,11 @@ public class ClueServiceImpl extends ExtendServiceImpl i return clueVOList; } + @Override + public Boolean changeEffective(Long id, Integer effective) { + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(ClueEntity.class) + .set(ClueEntity::getIsEffective, effective).eq(ClueEntity::getClueId, id); + return SqlHelper.retBool(this.baseMapper.update(null,wrapper)); + } + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java b/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java index 2a6cbab..93f7aa6 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java @@ -1,6 +1,10 @@ package com.baiye.modules.distribute.vo; import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baiye.common.excel.converters.BooleanStringConverter; +import com.baiye.common.excel.converters.CustomStringStringConverter; +import com.baiye.common.excel.converters.NidStringConverter; import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; import com.baiye.modules.distribute.entity.ClueStageEntity; import com.baiye.modules.distribute.entity.LabelOrganizeEntity; @@ -19,16 +23,21 @@ public class ClueVO { @Schema(title = "线索ID") private String clueId; - @Schema(title = "线索来源") - private String originName; + @ExcelProperty(value = "是否有效", converter = BooleanStringConverter.class, index = 4) + @Schema(title = "是否有效") + private Boolean isEffective; @Schema(title = "手机号") + @ExcelProperty(value = "手机号",converter = NidStringConverter.class, index = 0) private String nid; - @Schema(title = "线索时间") - private String clueTime; + @Schema(title = "线索来源") + @ExcelProperty(value = "线索来源", index = 1) + private String originName; + @Schema(title = "线索备注") + @ExcelProperty(value = "线索备注", index = 2) private String remark; @ExcelIgnore @@ -36,18 +45,29 @@ public class ClueVO { private Long clueRecordId; @Schema(title = "其它资源字段") + @ExcelIgnore + // @ExcelProperty(value = "其它资源字段", index = 4) private String otherClue; + @ExcelIgnore @Schema(title = "分配人用户ID") private Long assignedBy; + @ExcelIgnore + @Schema(title = "线索时间") + private String clueTime; + @Schema(title = "资源标签") + @ExcelProperty(value = "资源标签", index = 5) private String clueLabel; + @ExcelIgnore @Schema(title = "资源标签名称") private String clueLabelName; + @Schema(title = "创建时间") + @ExcelProperty(value = "线索时间", index = 3) private LocalDateTime createTime; @ExcelIgnore @@ -58,9 +78,11 @@ public class ClueVO { @Schema(title = "资源线索ID") private Long clueStageId; + @ExcelIgnore @Schema(title = "资源线索名称") private String clueStageName; + @ExcelProperty(value = "资源标签集合", converter = CustomStringStringConverter.class, index = 6) @Schema(title = "资源标签集合") private List clueLabelList; diff --git a/admin/src/main/resources/mapper/ClueMapper.xml b/admin/src/main/resources/mapper/ClueMapper.xml index 0c67f36..41d72e1 100644 --- a/admin/src/main/resources/mapper/ClueMapper.xml +++ b/admin/src/main/resources/mapper/ClueMapper.xml @@ -2,10 +2,7 @@ - ce - . - clue_id - , + ce.clue_id, ce.is_new_clue, ce.origin_name, ce.nid,