From 5e9edb304f92339e13df99773f4afba9eeee85df Mon Sep 17 00:00:00 2001 From: bynt <13586541001@163.com> Date: Thu, 7 Dec 2023 18:44:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9F=A5=E8=AF=A2=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysUserController.java | 13 ++- .../baiye/system/model/dto/SysUserDTO.java | 5 ++ .../baiye/system/model/dto/SysUserScope.java | 6 ++ .../model/entity/SysUserRolePromise.java | 64 ++++++++++++++ .../baiye/system/model/vo/SysUserInfo.java | 2 + .../distribute/dto/CallbackCustomDTO.java | 32 +++++++ .../distribute/dto/ChangeCustomDTO.java | 2 + .../distribute/dto/CreateCustomDTO.java | 34 ++++++++ .../modules/distribute/dto/CustomDTO.java | 2 - .../distribute/dto/OceanEngineTokenDto.java | 2 - .../modules/distribute/dto/PushClueDTO.java | 37 +++++++++ .../distribute/mapper/CustomMapper.java | 34 ++++++-- .../distribute/service/CustomService.java | 25 ++++++ .../service/impl/CustomServiceImpl.java | 83 +++++++++++++++---- 14 files changed, 309 insertions(+), 32 deletions(-) create mode 100644 ad-distribute-system/system-model/src/main/java/com/baiye/system/model/entity/SysUserRolePromise.java create mode 100644 admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java create mode 100644 admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java create mode 100644 admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java diff --git a/ad-distribute-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java b/ad-distribute-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java index deeff74..c1d8e7c 100644 --- a/ad-distribute-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java +++ b/ad-distribute-system/system-controller/src/main/java/com/baiye/system/controller/SysUserController.java @@ -22,9 +22,11 @@ import com.baiye.system.model.dto.SysUserPassDTO; import com.baiye.system.model.dto.SysUserScope; import com.baiye.system.model.entity.SysRole; import com.baiye.system.model.entity.SysUser; +import com.baiye.system.model.entity.SysUserRolePromise; import com.baiye.system.model.qo.SysUserQO; import com.baiye.system.model.vo.SysUserInfo; import com.baiye.system.model.vo.SysUserPageVO; +import com.baiye.system.service.SysUserRolePromiseService; import com.baiye.system.service.SysUserRoleService; import com.baiye.system.service.SysUserService; import com.baiye.validation.group.CreateGroup; @@ -64,6 +66,8 @@ public class SysUserController { private final SysUserRoleService sysUserRoleService; + private final SysUserRolePromiseService sysUserRolePromiseService; + private final PasswordHelper passwordHelper; /** @@ -193,17 +197,18 @@ public class SysUserController { @GetMapping("/scope/{userId}") @PreAuthorize("@per.hasPermission('system:user:grant')") public R getUserRoleIds(@PathVariable("userId") Long userId) { - List roleList = sysUserRoleService.listRoles(userId); - List roleCodes = new ArrayList<>(); if (!CollectionUtils.isEmpty(roleList)) { roleList.forEach(role -> roleCodes.add(role.getCode())); } - SysUserScope sysUserScope = new SysUserScope(); sysUserScope.setRoleCodes(roleCodes); - + SysUserRolePromise promise = sysUserRolePromiseService.queryIsShowByUserId(userId); + if (ObjectUtil.isNotNull(promise)){ + sysUserScope.setIsAutoAudits(promise.getIsAutoAudits()); + sysUserScope.setIsShowNid(promise.getIsShowNid()); + } return R.ok(sysUserScope); } diff --git a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserDTO.java b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserDTO.java index a3c04d4..19a920e 100644 --- a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserDTO.java +++ b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserDTO.java @@ -106,4 +106,9 @@ public class SysUserDTO { @Schema(title = "充值数量") private Integer rechargeClueNum; + private Boolean isAutoAudits; + + private Boolean isShowNid; + + } diff --git a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserScope.java b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserScope.java index 04718f9..b05a753 100644 --- a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserScope.java +++ b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/dto/SysUserScope.java @@ -1,5 +1,6 @@ package com.baiye.system.model.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -13,6 +14,11 @@ import java.util.List; @Data public class SysUserScope { + + private Boolean isAutoAudits; + + private Boolean isShowNid; + private List roleCodes; } diff --git a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/entity/SysUserRolePromise.java b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/entity/SysUserRolePromise.java new file mode 100644 index 0000000..9d4d4b2 --- /dev/null +++ b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/entity/SysUserRolePromise.java @@ -0,0 +1,64 @@ +package com.baiye.system.model.entity; + +import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author Enzo + * @date : 2023/12/5 + */ + +@Data +@TableAlias("urp") +@TableName(value = "sys_user_role_promise",autoResultMap = true) +@Schema(title = "用户角色") +public class SysUserRolePromise implements Serializable { + + private static final long serialVersionUID = 355851270267008536L; + + + @TableId + private Long id; + + /** + * 用户ID + */ + @Schema(title = "用户id") + private Long userId; + + /** + * 公司id + */ + @Schema(title = "公司id") + private Long companyId; + + /** + * 角色Code + */ + @Schema(title = "角色Code") + @TableField(value = "role_codes", typeHandler = JsonStringArrayTypeHandler.class) + private List roleCodes; + + /** + * 权限类型 1 审核 2权限 + */ + @Schema(title = "权限类型") + private Integer roleType; + + + @Schema(title = "是否审核") + private Boolean isAutoAudits; + + + @Schema(title = "ni是否可见") + private Boolean isShowNid; + +} diff --git a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java index e953934..da74c31 100644 --- a/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java +++ b/ad-distribute-system/system-model/src/main/java/com/baiye/system/model/vo/SysUserInfo.java @@ -88,4 +88,6 @@ public class SysUserInfo implements Serializable { private List roleList; + + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java new file mode 100644 index 0000000..7d3b169 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java @@ -0,0 +1,32 @@ +package com.baiye.modules.distribute.dto; + +import lombok.Builder; +import lombok.Data; + +/** + * @author Enzo + * @date : 2023/12/7 + */ +@Data +@Builder +public class CallbackCustomDTO { + + private String remark; + + private Long companyId; + + private String enterName; + + private String customName; + + private String customNid; + + private Integer channelType; + + private Long reportUserId; + + private Long distributeId; + + private String identifying; + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java index b37b78f..46d87f4 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java @@ -14,4 +14,6 @@ public class ChangeCustomDTO { private Integer status; private Long reviewUserId; + + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java new file mode 100644 index 0000000..0efea97 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java @@ -0,0 +1,34 @@ +package com.baiye.modules.distribute.dto; + +import com.baiye.validation.group.CreateGroup; +import com.baiye.validation.group.UpdateGroup; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author Enzo + * @date 2023-12-6 + */ +@Data +@Builder +public class CreateCustomDTO { + + + @Schema(title = "客户名称") + private String customName; + + @Schema(title = "客户联系方式") + @NotBlank(message = "客户联系方式不能为空", groups = {CreateGroup.class, UpdateGroup.class}) + private String customNid; + + @Schema(title = "备注") + private String remark; + + + @Schema(title = "渠道类型") + private Integer channelType; + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java index 6ac2982..bc2f7ce 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java @@ -6,9 +6,7 @@ import com.baiye.validation.group.UpdateGroup; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import javax.validation.Valid; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/OceanEngineTokenDto.java b/admin/src/main/java/com/baiye/modules/distribute/dto/OceanEngineTokenDto.java index 2a568f5..1c8312a 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/OceanEngineTokenDto.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/OceanEngineTokenDto.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; @@ -20,7 +19,6 @@ public class OceanEngineTokenDto implements Serializable { private Long expiresIn; - @NotNull private Long companyId; private Integer status; diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java new file mode 100644 index 0000000..42b3dde --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java @@ -0,0 +1,37 @@ +package com.baiye.modules.distribute.dto; + +import cn.hutool.json.JSONArray; +import lombok.Data; + +/** + * @author Enzo + * @date 2023-12-6 + */ +@Data +public class PushClueDTO { + + + + private String remark; + + /** + * 人工审核推送手机号, mobile就不是手机号字段了 + */ + private String called; + + /** + * 太空猫传递的线索ID + */ + private Long variable; + + /** + * nid + */ + private String mobile; + + + private String empClientTypeName; + + + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java b/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java index 03a9af9..446cbd8 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java +++ b/admin/src/main/java/com/baiye/modules/distribute/mapper/CustomMapper.java @@ -5,10 +5,8 @@ import com.baiye.domain.PageResult; import com.baiye.extend.mybatis.plus.conditions.query.LambdaAliasQueryWrapperX; import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; import com.baiye.extend.mybatis.plus.toolkit.WrappersX; -import com.baiye.modules.distribute.dto.HomePageDTO; import com.baiye.modules.distribute.entity.CustomEntity; import com.baiye.modules.distribute.qo.CustomQo; -import com.baiye.modules.distribute.qo.HomePageQo; import com.baiye.modules.distribute.vo.CustomVO; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -22,15 +20,36 @@ public interface CustomMapper extends ExtendMapper { default PageResult queryPage(PageParam pageParam, CustomQo qo) { IPage page = this.prodPage(pageParam); + Wrapper wrapperX = this.buildQueryWrapper(qo); + this.selectByPage(page, wrapperX, qo.getStoreId()); + return new PageResult<>(page.getRecords(), page.getTotal()); + } + + IPage selectByPage(IPage page, @Param(Constants.WRAPPER) Wrapper wrapper, @Param("storeId") Long storeId); + + + /** + * 查询最大编号 + */ + String selectMaxBatchNoByCompanyId(@Param("code") String code,@Param("companyId") Long companyId); + + + + /** + * 根据 qo 构造查询 wrapper + * @param qo 查询条件 + * @return LambdaQueryWrapperX + */ + default Wrapper buildQueryWrapper(CustomQo qo) { LambdaAliasQueryWrapperX wrapperX = WrappersX.lambdaAliasQueryX(CustomEntity.class); wrapperX.eqIfPresent(CustomEntity::getCreateBy, qo.getCreateBy()) .likeIfPresent(CustomEntity::getRemark, qo.getRemark()) .likeIfPresent(CustomEntity::getCustomName, qo.getCustomName()) .likeIfPresent(CustomEntity::getBatchNo, qo.getBatchNo()) - .eqIfPresent(CustomEntity::getType, qo.getSalesmanType()) .eqIfPresent(CustomEntity::getCompanyId, qo.getCompanyId()) .eqIfPresent(CustomEntity::getCustomNid, qo.getCustomNid()) .eqIfPresent(CustomEntity::getReviewUserId, qo.getReviewUserId()) + .eqIfPresent(CustomEntity::getDistributorId, qo.getDistributorId()) .gtIfPresent(CustomEntity::getEnrollStatus, qo.getGreaterStatus()) .eqIfPresent(CustomEntity::getEnrollStatus, qo.getEnrollStatus()); if (StringUtils.isNotBlank(qo.getDistributeStartTime()) && StringUtils.isNotBlank(qo.getDistributeEndTime())) { @@ -40,13 +59,16 @@ public interface CustomMapper extends ExtendMapper { if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) { wrapperX.between(CustomEntity::getCreateTime, qo.getStartTime(), qo.getEndTime()); } - this.selectByPage(page, wrapperX, qo.getStoreId()); - return new PageResult<>(page.getRecords(), page.getTotal()); + return wrapperX; } - IPage selectByPage(IPage page, @Param(Constants.WRAPPER) Wrapper wrapper, @Param("storeId") Long storeId); + default List queryList(CustomQo customQo){ + Wrapper wrapperX = buildQueryWrapper(customQo); + return this.selectList(wrapperX); + } + /** * 查询最大编号 */ diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java b/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java index b6c41b1..75b552f 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java @@ -3,12 +3,16 @@ package com.baiye.modules.distribute.service; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.distribute.dto.CallbackCustomDTO; import com.baiye.modules.distribute.dto.ChangeCustomDTO; +import com.baiye.modules.distribute.dto.CreateCustomDTO; import com.baiye.modules.distribute.dto.CustomDTO; import com.baiye.modules.distribute.entity.CustomEntity; import com.baiye.modules.distribute.qo.CustomQo; import com.baiye.modules.distribute.vo.CustomVO; +import java.util.List; + public interface CustomService extends ExtendService { /** @@ -60,4 +64,25 @@ public interface CustomService extends ExtendService { * @return */ Boolean reAuditFormById(ChangeCustomDTO dto); + + /** + * 查询列表 + * @param customQo + * @return + */ + List queryList(CustomQo customQo); + + /** + * 类型创建客户 + * @param createCustomDTO + * @return + */ + Boolean createByType(CreateCustomDTO createCustomDTO); + + /** + * 创建资源 + * @param dtoList + * @return + */ + Boolean createByCallBack(List dtoList); } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java index ccd7914..78450a8 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java @@ -5,16 +5,14 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.StrPool; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import com.baiye.constant.DefaultNumberConstants; import com.baiye.domain.PageParam; import com.baiye.domain.PageResult; import com.baiye.enums.ClueSourceEnum; import com.baiye.exception.BadRequestException; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; import com.baiye.modules.distribute.converter.CustomConverter; -import com.baiye.modules.distribute.dto.ChangeCustomDTO; -import com.baiye.modules.distribute.dto.ClueDTO; -import com.baiye.modules.distribute.dto.CustomDTO; -import com.baiye.modules.distribute.dto.StoreUserDTO; +import com.baiye.modules.distribute.dto.*; import com.baiye.modules.distribute.entity.CustomEntity; import com.baiye.modules.distribute.entity.CustomStoreEntity; import com.baiye.modules.distribute.entity.StoreEntity; @@ -24,10 +22,14 @@ import com.baiye.modules.distribute.service.*; import com.baiye.modules.distribute.vo.AddressDTO; import com.baiye.modules.distribute.vo.CustomStoreVO; import com.baiye.modules.distribute.vo.CustomVO; +import com.baiye.polling.QueueBalance; import com.baiye.security.userdetails.User; import com.baiye.security.util.SecurityUtils; import com.baiye.system.constant.DateConst; import com.baiye.system.constant.LetterConst; +import com.baiye.system.enums.RoleCodeEnum; +import com.baiye.system.model.entity.SysUser; +import com.baiye.system.service.SysUserRoleService; import com.baiye.system.service.SysUserService; import com.baiye.util.AESUtils; import com.baiye.utils.SerialCode; @@ -58,11 +60,14 @@ public class CustomServiceImpl extends ExtendServiceImpl customStoreEntities = customDTO.getCustomStoreEntities(); customStoreEntities.forEach(c -> c.setCustomId(customEntity.getCustomId())); @@ -148,7 +141,6 @@ public class CustomServiceImpl extends ExtendServiceImpl queryList(CustomQo customQo) { + return baseMapper.queryList(customQo); + } + + @Override + public Boolean createByType(CreateCustomDTO createCustomDTO) { + User user = SecurityUtils.getUser(); + Long whichUserId = user.getWhichUserId(); + createCustomDTO.setChannelType(DefaultNumberConstants.ONE_NUMBER); + // 查询所有分发员 + List userList = sysUserRoleService.selectUserIdByRoleCode + (whichUserId, RoleCodeEnum.ROLE_PRELIMINARY_EXAMINER.getRoleCode()); + CustomEntity customEntity = getCustomEntity(CustomConverter.INSTANCE.dtoToPo(createCustomDTO), whichUserId, user.getUsername()); + QueueBalance balance = new QueueBalance<>(); + Long distributeId = balance.chooseOne(userList); + customEntity.setCreateBy(user.getUserId()); + customEntity.setDistributorId(distributeId); + return SqlHelper.retBool(baseMapper.insert(customEntity)); + + } + + @Override + public Boolean createByCallBack(List dtoList) { + ArrayList customEntities = Lists.newArrayList(); + CustomEntity entity = new CustomEntity(); + for (CallbackCustomDTO dto : dtoList) { + entity.setRemark(dto.getRemark()); + entity.setCustomNid(dto.getCustomNid()); + entity.setChannelType(dto.getChannelType()); + entity.setCreateBy(dto.getReportUserId()); + entity.setDistributorId(dto.getDistributeId()); + entity.setChannelIdentifying(dto.getIdentifying()); + customEntities.add(getCustomEntity(entity, dto.getCompanyId(), dto.getEnterName())); + } + return SqlHelper.retBool(this.baseMapper.insertBatchSomeColumn(customEntities)); + } + + + private CustomEntity getCustomEntity(CustomEntity entity,Long companyId,String username) { + String code = LetterConst.D.concat(StrPool.DASHED.concat(DateUtil.format(DateUtil.date(), DateConst.YYYY_MM_DD))); + String maxCode = baseMapper.selectMaxBatchNoByCompanyId(code, companyId); + // 拼接编号 + String newCode = StringUtils.isNotBlank(maxCode) ? + code.concat(SerialCode.getNum(Integer.parseInt + (maxCode.substring(10)))) : code.concat(LetterConst.ONE); + entity.setType(2); + entity.setBatchNo(newCode); + entity.setCompanyId(companyId); + entity.setEnterName(username); + entity.setUpdateTime(LocalDateTime.now()); + entity.setEnrollStatus(DefaultNumberConstants.ONE_NUMBER); + return entity; + } + /**