From 850cf3f53d50ed23408342ae4204b97b4b02e5f0 Mon Sep 17 00:00:00 2001
From: bynt <13586541001@163.com>
Date: Fri, 15 Sep 2023 09:45:50 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=9A=E5=8A=A1=E5=91=98?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 39 +++++++
ad-distribute-common/common-core/pom.xml | 5 +
.../java/com/baiye/enums/ClueSourceEnum.java | 46 ++++++++
.../java/com/baiye/enums/SalesManEnum.java | 64 +++++++++++
ad-distribute-common/common-model/pom.xml | 4 +
.../java/com/baiye/entity/BaseMapStruct.java | 37 ++++++
.../src/main/java/com/baiye/result/R.java | 1 -
.../token/BallcatOAuth2TokenCustomizer.java | 1 +
.../constant/UserInfoFiledNameConstants.java | 5 +
.../security/jackson2/UserDeserializer.java | 37 +++---
.../com/baiye/security/userdetails/User.java | 5 +
.../BallcatRemoteOpaqueTokenIntrospector.java | 3 +-
.../BallcatOAuth2TokenResponseEnhancer.java | 1 +
.../SysUserDetailsServiceImpl.java | 1 +
.../system/checker/AdminUserChecker.java | 9 ++
.../system/checker/AdminUserCheckerImpl.java | 11 ++
.../system/properties/SystemProperties.java | 16 ++-
.../service/impl/SysUserServiceImpl.java | 58 +++++++---
.../com/baiye/system/constant/DateConst.java | 14 +++
.../baiye/system/constant/LetterConst.java | 17 +++
.../baiye/system/model/dto/UserInfoDTO.java | 7 ++
.../baiye/system/model/vo/SysUserInfo.java | 8 ++
admin/pom.xml | 27 ++++-
.../controller/CustomController.java | 59 +++++++++-
.../distribute/dto/ChangeCustomDTO.java | 15 +++
.../baiye/modules/distribute/dto/ClueDTO.java | 8 ++
.../modules/distribute/dto/CustomDTO.java | 3 +-
.../distribute/dto/CustomStoreDTO.java | 2 +-
.../distribute/entity/CustomEntity.java | 20 +++-
.../distribute/entity/CustomStoreEntity.java | 1 +
.../distribute/mapper/CustomMapper.java | 14 +++
.../baiye/modules/distribute/qo/CustomQo.java | 11 +-
.../distribute/service/ClueService.java | 6 +
.../distribute/service/CustomService.java | 33 +++++-
.../service/CustomStoreService.java | 14 +++
.../service/impl/ClueServiceImpl.java | 7 ++
.../service/impl/CustomServiceImpl.java | 108 ++++++++++++++++--
.../service/impl/CustomStoreServiceImpl.java | 17 +++
.../modules/distribute/vo/AddressDTO.java | 26 +++++
.../modules/distribute/vo/CustomStoreVO.java | 2 +-
.../baiye/modules/distribute/vo/CustomVO.java | 10 ++
.../distribute/vo/DistributeTaskVO.java | 1 -
.../main/java/com/baiye/utils/SerialCode.java | 25 ++++
.../main/resources/mapper/CustomMapper.xml | 9 +-
admin/src/test/java/CustomTest.java | 74 ++++++++++++
pom.xml | 101 ++--------------
46 files changed, 833 insertions(+), 149 deletions(-)
create mode 100644 .gitignore
create mode 100644 ad-distribute-common/common-core/src/main/java/com/baiye/enums/ClueSourceEnum.java
create mode 100644 ad-distribute-common/common-core/src/main/java/com/baiye/enums/SalesManEnum.java
create mode 100644 ad-distribute-common/common-model/src/main/java/com/baiye/entity/BaseMapStruct.java
create mode 100644 ad-distribute-system/system-model/src/main/java/com/baiye/system/constant/DateConst.java
create mode 100644 ad-distribute-system/system-model/src/main/java/com/baiye/system/constant/LetterConst.java
create mode 100644 admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java
create mode 100644 admin/src/main/java/com/baiye/modules/distribute/vo/AddressDTO.java
create mode 100644 admin/src/main/java/com/baiye/utils/SerialCode.java
create mode 100644 admin/src/test/java/CustomTest.java
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2e2eb9d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+
+### custom ###
+.flattened-pom.xml
+/**/application-local.yml
+/logs/
diff --git a/ad-distribute-common/common-core/pom.xml b/ad-distribute-common/common-core/pom.xml
index e06059a..1b9156f 100644
--- a/ad-distribute-common/common-core/pom.xml
+++ b/ad-distribute-common/common-core/pom.xml
@@ -73,5 +73,10 @@
2.3.2.RELEASE
+
+
+
+
+
diff --git a/ad-distribute-common/common-core/src/main/java/com/baiye/enums/ClueSourceEnum.java b/ad-distribute-common/common-core/src/main/java/com/baiye/enums/ClueSourceEnum.java
new file mode 100644
index 0000000..d46e21f
--- /dev/null
+++ b/ad-distribute-common/common-core/src/main/java/com/baiye/enums/ClueSourceEnum.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2019-2020 Zheng Jie
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.baiye.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *
+ * 验证码业务场景对应的 Redis 中的 key
+ *
+ *
+ * @author Zheng Jie
+ * @date 2020-05-02
+ */
+@Getter
+@AllArgsConstructor
+public enum ClueSourceEnum {
+
+ /**
+ * 表单上传
+ */
+ TABLE_UPLOAD("table upload", "表单上传"),
+
+ /**
+ * 门店分发
+ */
+ STORE_DISTRIBUTION("store distribution:", "门店分发");
+
+
+ private final String key;
+ private final String description;
+}
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
new file mode 100644
index 0000000..ab96bed
--- /dev/null
+++ b/ad-distribute-common/common-core/src/main/java/com/baiye/enums/SalesManEnum.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2019-2020 Zheng Jie
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.baiye.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ *
+ * 验证码业务场景对应的 Redis 中的 key
+ *
+ *
+ * @author Zheng Jie
+ * @date 2020-05-02
+ */
+@Getter
+@AllArgsConstructor
+public enum SalesManEnum {
+
+ /**
+ * 分发员
+ */
+ DISPENSER(19L, 1),
+
+ /**
+ * 初审员
+ */
+ FIRST_INSTANCE(20L, 2),
+
+ /**
+ *
+ */
+ RETRIAL(21L, 3);
+
+
+ private final Long id;
+ private final Integer type;
+
+
+
+ public static Integer find(Long val) {
+ for (SalesManEnum salesManEnum : SalesManEnum.values()) {
+ if (Objects.equals(salesManEnum.getId(), val)) {
+ return salesManEnum.getType();
+ }
+ }
+ return 0;
+ }
+}
diff --git a/ad-distribute-common/common-model/pom.xml b/ad-distribute-common/common-model/pom.xml
index 57582f0..2cc8714 100644
--- a/ad-distribute-common/common-model/pom.xml
+++ b/ad-distribute-common/common-model/pom.xml
@@ -31,5 +31,9 @@
org.springdoc
springdoc-openapi-common
+
+ cn.hutool
+ hutool-core
+
diff --git a/ad-distribute-common/common-model/src/main/java/com/baiye/entity/BaseMapStruct.java b/ad-distribute-common/common-model/src/main/java/com/baiye/entity/BaseMapStruct.java
new file mode 100644
index 0000000..02d02c1
--- /dev/null
+++ b/ad-distribute-common/common-model/src/main/java/com/baiye/entity/BaseMapStruct.java
@@ -0,0 +1,37 @@
+package com.baiye.entity;
+
+import java.util.List;
+
+/**
+ * @author Enzo
+ * @date 2022-05-14
+ */
+public interface BaseMapStruct {
+ /**
+ * DTO转Entity
+ * @param dto /
+ * @return /
+ */
+ E toEntity(D dto);
+
+ /**
+ * Entity转DTO
+ * @param entity /
+ * @return /
+ */
+ D toDto(E entity);
+
+ /**
+ * DTO集合转Entity集合
+ * @param dtoList /
+ * @return /
+ */
+ List toEntity(List dtoList);
+
+ /**
+ * Entity集合转DTO集合
+ * @param entityList /
+ * @return /
+ */
+ List toDto(List entityList);
+}
diff --git a/ad-distribute-common/common-model/src/main/java/com/baiye/result/R.java b/ad-distribute-common/common-model/src/main/java/com/baiye/result/R.java
index fdfc98d..8e3c9c2 100644
--- a/ad-distribute-common/common-model/src/main/java/com/baiye/result/R.java
+++ b/ad-distribute-common/common-model/src/main/java/com/baiye/result/R.java
@@ -1,6 +1,5 @@
package com.baiye.result;
-import com.baiye.I18nClass;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.Accessors;
diff --git a/ad-distribute-security/security-oauth2-authorization-server/src/main/java/org/ballcat/springsecurity/oauth2/server/authorization/token/BallcatOAuth2TokenCustomizer.java b/ad-distribute-security/security-oauth2-authorization-server/src/main/java/org/ballcat/springsecurity/oauth2/server/authorization/token/BallcatOAuth2TokenCustomizer.java
index 7a6e856..a07a242 100644
--- a/ad-distribute-security/security-oauth2-authorization-server/src/main/java/org/ballcat/springsecurity/oauth2/server/authorization/token/BallcatOAuth2TokenCustomizer.java
+++ b/ad-distribute-security/security-oauth2-authorization-server/src/main/java/org/ballcat/springsecurity/oauth2/server/authorization/token/BallcatOAuth2TokenCustomizer.java
@@ -46,6 +46,7 @@ public class BallcatOAuth2TokenCustomizer implements OAuth2TokenCustomizer userInfo = new HashMap<>(6);
userInfo.put(UserInfoFiledNameConstants.USER_ID, user.getUserId());
userInfo.put(UserInfoFiledNameConstants.TYPE, user.getType());
+ userInfo.put(UserInfoFiledNameConstants.SALESMAN_TYPE, user.getSalesmanType());
userInfo.put(UserInfoFiledNameConstants.ORGANIZATION_ID, user.getOrganizationId());
userInfo.put(UserInfoFiledNameConstants.USERNAME, user.getUsername());
userInfo.put(UserInfoFiledNameConstants.NICKNAME, user.getNickname());
diff --git a/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/constant/UserInfoFiledNameConstants.java b/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/constant/UserInfoFiledNameConstants.java
index adb203c..9b065d6 100644
--- a/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/constant/UserInfoFiledNameConstants.java
+++ b/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/constant/UserInfoFiledNameConstants.java
@@ -18,6 +18,11 @@ public final class UserInfoFiledNameConstants {
*/
public static final String TYPE = "type";
+ /**
+ * 业务员类型
+ */
+ public static final String SALESMAN_TYPE = "salesmanType";
+
/**
* 用户组织ID
*/
diff --git a/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/jackson2/UserDeserializer.java b/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/jackson2/UserDeserializer.java
index 52c9176..17c7d10 100644
--- a/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/jackson2/UserDeserializer.java
+++ b/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/jackson2/UserDeserializer.java
@@ -38,10 +38,11 @@ public class UserDeserializer extends JsonDeserializer {
* {@link org.springframework.security.core.userdetails.User} by invoking
* {@link org.springframework.security.core.userdetails.User#eraseCredentials()}. In
* that case there won't be any password key in serialized json.
- * @param jp the JsonParser
+ *
+ * @param jp the JsonParser
* @param ctxt the DeserializationContext
* @return the user
- * @throws IOException if a exception during IO occurs
+ * @throws IOException if a exception during IO occurs
* @throws JsonProcessingException if an error during JSON processing occurs
*/
@Override
@@ -51,6 +52,7 @@ public class UserDeserializer extends JsonDeserializer {
JsonNode passwordNode = readJsonNode(jsonNode, "password");
long userId = readJsonNode(jsonNode, "userId").asLong();
+ int salesmanType = readJsonNode(jsonNode, "salesmanType").asInt();
long whichUserId = readJsonNode(jsonNode, "whichUserId").asLong();
String username = readJsonNode(jsonNode, "username").asText("");
String nickname = readJsonNode(jsonNode, "nickname").asText("");
@@ -73,21 +75,22 @@ public class UserDeserializer extends JsonDeserializer {
Map attributes = mapper.convertValue(jsonNode.get("attributes"), ATTRIBUTE_MAP);
return User.builder()
- .userId(userId)
- .whichUserId(whichUserId)
- .username(username)
- .password(password)
- .nickname(nickname)
- .avatar(avatar)
- .status(status)
- .organizationId(organizationId)
- .email(email)
- .phoneNumber(phoneNumber)
- .gender(gender)
- .type(type)
- .authorities(authorities)
- .attributes(attributes)
- .build();
+ .userId(userId)
+ .whichUserId(whichUserId)
+ .username(username)
+ .password(password)
+ .nickname(nickname)
+ .avatar(avatar)
+ .status(status)
+ .organizationId(organizationId)
+ .email(email)
+ .phoneNumber(phoneNumber)
+ .gender(gender)
+ .type(type)
+ .salesmanType(salesmanType)
+ .authorities(authorities)
+ .attributes(attributes)
+ .build();
}
private JsonNode readJsonNode(JsonNode jsonNode, String field) {
diff --git a/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/userdetails/User.java b/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/userdetails/User.java
index b1052c3..7fdf4f2 100644
--- a/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/userdetails/User.java
+++ b/ad-distribute-security/security-oauth2-core/src/main/java/com/baiye/security/userdetails/User.java
@@ -78,6 +78,11 @@ public class User implements UserDetails, OAuth2User {
*/
private final Integer type;
+ /**
+ * 用户类型
+ */
+ private final Integer salesmanType;
+
/**
* 权限信息列表
*/
diff --git a/ad-distribute-security/security-oauth2-resource-server/src/main/java/org/ballcat/springsecurity/oauth2/server/resource/introspection/BallcatRemoteOpaqueTokenIntrospector.java b/ad-distribute-security/security-oauth2-resource-server/src/main/java/org/ballcat/springsecurity/oauth2/server/resource/introspection/BallcatRemoteOpaqueTokenIntrospector.java
index c4682e9..dd41152 100644
--- a/ad-distribute-security/security-oauth2-resource-server/src/main/java/org/ballcat/springsecurity/oauth2/server/resource/introspection/BallcatRemoteOpaqueTokenIntrospector.java
+++ b/ad-distribute-security/security-oauth2-resource-server/src/main/java/org/ballcat/springsecurity/oauth2/server/resource/introspection/BallcatRemoteOpaqueTokenIntrospector.java
@@ -279,6 +279,7 @@ public class BallcatRemoteOpaqueTokenIntrospector implements OpaqueTokenIntrospe
.phoneNumber(getOrDefault(info, UserInfoFiledNameConstants.PHONE_NUMBER, ""))
.gender(getOrDefault(info, UserInfoFiledNameConstants.GENDER, null))
.type(getOrDefault(info, UserInfoFiledNameConstants.TYPE, null))
+ .salesmanType(getOrDefault(info, UserInfoFiledNameConstants.SALESMAN_TYPE, 0))
.status(getOrDefault(info, UserInfoFiledNameConstants.STATUS, null));
Collection extends GrantedAuthority> authorities = null;
@@ -319,4 +320,4 @@ public class BallcatRemoteOpaqueTokenIntrospector implements OpaqueTokenIntrospe
return value == null ? defaultValue : (T) value;
}
-}
\ No newline at end of file
+}
diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/BallcatOAuth2TokenResponseEnhancer.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/BallcatOAuth2TokenResponseEnhancer.java
index 0e2354a..d5a11ee 100644
--- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/BallcatOAuth2TokenResponseEnhancer.java
+++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/BallcatOAuth2TokenResponseEnhancer.java
@@ -69,6 +69,7 @@ public class BallcatOAuth2TokenResponseEnhancer implements OAuth2TokenResponseEn
sysUserInfo.setPhoneNumber(user.getPhoneNumber());
sysUserInfo.setEmail(user.getEmail());
sysUserInfo.setGender(user.getGender());
+ sysUserInfo.setSalesmanType(user.getSalesmanType());
return sysUserInfo;
}
diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/SysUserDetailsServiceImpl.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/SysUserDetailsServiceImpl.java
index c2e72c7..fde6656 100644
--- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/SysUserDetailsServiceImpl.java
+++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/authentication/SysUserDetailsServiceImpl.java
@@ -83,6 +83,7 @@ public class SysUserDetailsServiceImpl implements UserDetailsService {
.phoneNumber(sysUser.getPhoneNumber())
.gender(sysUser.getGender())
.type(sysUser.getType())
+ .salesmanType(userInfoDTO.getSalesmanType())
.authorities(authorities)
.attributes(attributes)
.build();
diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserChecker.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserChecker.java
index db99dec..8a97b13 100644
--- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserChecker.java
+++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserChecker.java
@@ -2,6 +2,8 @@ package com.baiye.system.checker;
import com.baiye.system.model.entity.SysUser;
+import java.util.Set;
+
/**
* 超级管理员账户规则配置
*
@@ -23,4 +25,11 @@ public interface AdminUserChecker {
*/
boolean hasModifyPermission(SysUser targetUser);
+ /**
+ * 判断是否包含业务员
+ * @param roleIdSet
+ * @return
+ */
+ boolean isSalesman(Set roleIdSet);
+
}
diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserCheckerImpl.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserCheckerImpl.java
index 1a1cfab..00c433d 100644
--- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserCheckerImpl.java
+++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/checker/AdminUserCheckerImpl.java
@@ -1,12 +1,17 @@
package com.baiye.system.checker;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil;
+import com.baiye.enums.SalesManEnum;
import com.baiye.security.util.SecurityUtils;
import com.baiye.system.model.entity.SysUser;
import com.baiye.system.properties.SystemProperties;
+import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import java.util.Set;
+
/**
* 超级管理员账户规则配置
*
@@ -37,4 +42,10 @@ public class AdminUserCheckerImpl implements AdminUserChecker {
return true;
}
+ @Override
+ public boolean isSalesman(Set roleIdSet) {
+ Set salesman = systemProperties.getSalesman();
+ return CollUtil.isNotEmpty(Sets.intersection(roleIdSet, salesman));
+ }
+
}
diff --git a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/properties/SystemProperties.java b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/properties/SystemProperties.java
index b8b0d2c..b3e784f 100644
--- a/ad-distribute-system/system-biz/src/main/java/com/baiye/system/properties/SystemProperties.java
+++ b/ad-distribute-system/system-biz/src/main/java/com/baiye/system/properties/SystemProperties.java
@@ -1,9 +1,12 @@
package com.baiye.system.properties;
+import com.google.common.collect.Sets;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
+import java.util.Set;
+
/**
* 权限管理系统相关的基础配置
*
@@ -22,6 +25,13 @@ public class SystemProperties {
*/
private Administrator administrator = new Administrator();
+
+ /**
+ * 业务员配置
+ *
+ */
+ private Set salesman = Sets.newHashSet(19L, 20L, 21L);
+
/**
* 密码的规则:值为正则表达式,当为空时,不对密码规则进行校验
*/
@@ -31,16 +41,20 @@ public class SystemProperties {
@Setter
public static class Administrator {
+
+
+
/**
* 指定id的用户为超级管理员
*/
- private int userId = 0;
+ private int userId = 1;
/**
* 指定 username 为超级管理员
*/
private String username;
+
}
}
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 ee0700c..b465f62 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.convert.Convert;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
+import com.baiye.enums.SalesManEnum;
import com.baiye.exception.BadRequestException;
import com.baiye.system.checker.AdminUserChecker;
import com.baiye.system.converter.SysUserConverter;
@@ -36,6 +37,7 @@ import com.baiye.system.model.vo.SysUserPageVO;
import com.baiye.system.service.SysRoleService;
import com.baiye.system.service.SysUserService;
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
+import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -75,10 +77,12 @@ public class SysUserServiceImpl extends ExtendServiceImpl 分页数据
*/
@Override
@@ -88,7 +92,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl sysUsers = baseMapper.selectList(new LambdaQueryWrapper<>());
List userAll = Convert.toList(SysUserPageVO.class, sysUsers);
Map> userGroup = userAll.stream()
- .collect(Collectors.groupingBy(SysUserPageVO::getWhichUserId));
+ .collect(Collectors.groupingBy(SysUserPageVO::getWhichUserId));
result.getRecords().forEach(user -> {
List byWhichUserId = userGroup.get(user.getUserId());
@@ -106,6 +110,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl roleList;
if (adminUserChecker.isAdminUser(sysUser)) {
roleList = sysRoleService.list();
- }
- else {
+ isAdmin = Boolean.TRUE;
+ } else {
roleList = sysUserRoleService.listRoles(sysUser.getUserId());
}
+ // 判断用户角色
+ Set roleIdSet = roleList.stream().map(SysRole::getId).collect(Collectors.toSet());
+ if (Boolean.FALSE.equals(isAdmin)
+ && adminUserChecker.isSalesman(roleIdSet)) {
+ for (Long id : roleIdSet) {
+ if (SalesManEnum.find(id) > 0) {
+ userInfoDTO.setSalesmanType(SalesManEnum.find(id));
+ break;
+ }
+ }
+ }
// 设置角色标识
Set roleCodes = new HashSet<>();
@@ -148,9 +166,9 @@ public class SysUserServiceImpl extends ExtendServiceImpl sysMenuList = sysMenuService.listByRoleCode(roleCode);
menus.addAll(sysMenuList);
List permissionList = sysMenuList.stream()
- .map(SysMenu::getPermission)
- .filter(StrUtil::isNotEmpty)
- .collect(Collectors.toList());
+ .map(SysMenu::getPermission)
+ .filter(StrUtil::isNotEmpty)
+ .collect(Collectors.toList());
permissions.addAll(permissionList);
}
userInfoDTO.setMenus(menus);
@@ -161,6 +179,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl userMap = userList.stream()
- .collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+ .collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
userIds.removeIf(id -> !adminUserChecker.hasModifyPermission(userMap.get(id)));
Assert.notEmpty(userIds, "更新用户状态失败,无权限更新用户");
@@ -328,6 +352,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl
*/
@@ -348,6 +374,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl username value => userId
- * @return List
+ *
* @param userTypes 用户类型
+ * @return List
*/
@Override
public List> listSelectData(Collection userTypes) {
@@ -389,6 +419,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl
*/
@@ -399,6 +430,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl roles;
+ /**
+ * 业务员类型
+ */
+ @Schema(title = "业务员类型")
+ private Integer salesmanType;
+
+
}
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 0391f6b..ede8290 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
@@ -71,4 +71,12 @@ public class SysUserInfo implements Serializable {
@Schema(title = "用户类型:1-系统用户,2-客户用户")
private Integer type;
+
+ /**
+ * 业务员类型
+ */
+ @Schema(title = "业务员类型")
+ private Integer salesmanType;
+
+
}
diff --git a/admin/pom.xml b/admin/pom.xml
index 6fd8546..83891bd 100644
--- a/admin/pom.xml
+++ b/admin/pom.xml
@@ -16,7 +16,6 @@
-
com.baiye
@@ -103,6 +102,30 @@
easyexcel
+
+
+ org.springframework.boot
+ spring-boot-test
+
+
+
+ org.springframework
+ spring-test
+ test
+
+
+
+ junit
+ junit
+ test
+
+
+
+ com.google.code.gson
+ gson
+
+
+
@@ -121,4 +144,4 @@
-
\ No newline at end of file
+
diff --git a/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java b/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java
index dd15ca4..33e433c 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java
@@ -1,14 +1,19 @@
package com.baiye.modules.distribute.controller;
+import cn.hutool.core.util.ObjectUtil;
import com.baiye.domain.PageParam;
import com.baiye.domain.PageResult;
+import com.baiye.modules.distribute.dto.ChangeCustomDTO;
import com.baiye.modules.distribute.dto.CustomDTO;
import com.baiye.modules.distribute.qo.CustomQo;
import com.baiye.modules.distribute.service.CustomService;
import com.baiye.modules.distribute.vo.CustomVO;
+import com.baiye.operation.annotation.DeleteOperationLogging;
import com.baiye.result.BaseResultCode;
import com.baiye.result.R;
import com.baiye.security.util.SecurityUtils;
+import com.baiye.system.checker.AdminUserChecker;
+import com.baiye.system.service.SysUserService;
import com.baiye.validation.group.CreateGroup;
import com.baiye.validation.group.UpdateGroup;
import io.swagger.v3.oas.annotations.Operation;
@@ -17,6 +22,10 @@ import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+/**
+ * @author Enzo
+ * @date
+ */
@RequiredArgsConstructor
@RestController
@Tag(name = "客户管理")
@@ -25,28 +34,72 @@ public class CustomController {
private final CustomService customService;
+ private final SysUserService sysUserService;
+
+ private final AdminUserChecker adminUserChecker;
+
@GetMapping("/page")
@Operation(summary = "分页查询客户信息")
public R> queryPage(@Validated PageParam pageParam, CustomQo qo) {
- qo.setCreateBy(SecurityUtils.getCurrentUserId());
+ // 查询属于自己的信息
+ if (!adminUserChecker.isAdminUser(sysUserService.findById
+ (SecurityUtils.getCurrentUserId()))) {
+ qo.setCompanyId(SecurityUtils.getWhichUserId());
+ }
+ if (ObjectUtil.isNotNull(qo.getSalesmanType()) && qo.getSalesmanType() == 1) {
+ // 查询当前用户自己的
+ qo.setSalesmanType(null);
+ qo.setCreateBy(SecurityUtils.getCurrentUserId());
+ }
return R.ok(customService.queryPage(pageParam, qo));
}
@PostMapping("/add")
@Operation(summary = "新增客户", description = "新增客户")
- public R save(@Validated({ CreateGroup.class }) @RequestBody CustomDTO customDTO) {
+ public R save(@Validated({CreateGroup.class}) @RequestBody CustomDTO customDTO) {
return customService.add(customDTO) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "添加失败");
}
@PostMapping("/update")
@Operation(summary = "修改客户", description = "修改客户")
- public R update(@Validated({ UpdateGroup.class }) @RequestBody CustomDTO customDTO) {
+ public R update(@Validated({UpdateGroup.class}) @RequestBody CustomDTO customDTO) {
return customService.update(customDTO) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改失败");
}
+
@GetMapping("/details")
@Operation(summary = "ID查询详情")
public R getClueDetails(@RequestParam("id") Long id) {
return R.ok(customService.details(id));
}
+
+
+ /**
+ * 删除角色
+ *
+ * @param id id
+ * @return 结果信息
+ */
+ @DeleteMapping("/{id}")
+ @DeleteOperationLogging(msg = "删除表单信息")
+ @Operation(summary = "通过id删除系统角色", description = "通过id删除系统角色")
+ public R removeById(@PathVariable("id") Long id) {
+ Boolean result = customService.deleteApprovalFormById(id);
+ return Boolean.TRUE.equals(result) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除表单失败");
+ }
+
+ /**
+ * 删除角色
+ *
+ * @param dto
+ * @return 结果信息
+ */
+ @PostMapping("/audit")
+ @Operation(summary = "审核表单")
+ public R audit(@Validated({UpdateGroup.class}) @RequestBody ChangeCustomDTO dto) {
+ Boolean result = customService.auditFormById(dto);
+ return Boolean.TRUE.equals(result) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "审核失败");
+ }
+
+
}
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
new file mode 100644
index 0000000..ad483a5
--- /dev/null
+++ b/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java
@@ -0,0 +1,15 @@
+package com.baiye.modules.distribute.dto;
+
+import lombok.Data;
+
+/**
+ * @author Enzo
+ * @date
+ */
+@Data
+public class ChangeCustomDTO {
+
+ private Long customId;
+
+ private Integer status;
+}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java
index fd6c9f0..14d79d6 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java
@@ -2,7 +2,10 @@ package com.baiye.modules.distribute.dto;
import com.baiye.modules.distribute.entity.LabelEntity;
import com.baiye.validation.group.UpdateGroup;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.NotNull;
@@ -13,6 +16,7 @@ import java.util.List;
* @Date 2023/8/10
*/
@Data
+@Builder
public class ClueDTO {
@Schema(title = "线索ID")
@@ -54,6 +58,10 @@ public class ClueDTO {
@Schema(title = "资源线索名称")
private String clueStageName;
+
+ @Schema(title = "创建者")
+ private Long createBy;
+
@Schema(title = "资源标签集合")
private List clueLabelList;
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 76855b2..4425dfd 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
@@ -17,6 +17,7 @@ public class CustomDTO {
@NotNull(message = "ID不能为空", groups = { UpdateGroup.class })
private Long customId;
+
@Schema(title = "客户名称")
@NotNull(message = "客户名称不能为空", groups = { CreateGroup.class })
private String customName;
@@ -47,7 +48,7 @@ public class CustomDTO {
@Schema(title = "报名状态 0:待提交 1:已报名")
@NotNull(message = "状态不能为空", groups = { CreateGroup.class })
- private String enrollStatus;
+ private Integer enrollStatus;
@Schema(title = "门店信息")
@NotEmpty(message = "门店信息不能为空", groups = { CreateGroup.class })
diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/CustomStoreDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/CustomStoreDTO.java
index fc0155d..75aea5b 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/dto/CustomStoreDTO.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/dto/CustomStoreDTO.java
@@ -29,5 +29,5 @@ public class CustomStoreDTO {
@Schema(title = "预约时间")
@NotNull(message = "预约时间不能为空", groups = { CreateGroup.class })
- private LocalDateTime reservationTime;
+ private String reservationTime;
}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java
index 5c33094..3d500a2 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java
@@ -13,6 +13,9 @@ import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
+/**
+ * @author Enzo
+ */
@Getter
@Setter
@TableName("tb_custom")
@@ -23,6 +26,9 @@ public class CustomEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
+ @Schema(description = "编号")
+ private String batchNo;
+
@TableId
@Schema(title = "ID")
@NotNull(message = "ID不能为空", groups = { UpdateGroup.class })
@@ -56,7 +62,19 @@ public class CustomEntity extends BaseEntity {
@NotNull(message = "半径不能为空", groups = { CreateGroup.class })
private String radius;
- @Schema(title = "报名状态 0:待提交 1:已报名")
+ @Schema(title = "报名状态 0:待提交 1:已报名 2 审核通过")
@NotNull(message = "状态不能为空", groups = { CreateGroup.class })
private Integer enrollStatus;
+
+ @Schema(description = "审核类型 2初审 3复审")
+ private Integer type;
+
+ @Schema(description = "公司id")
+ private Long companyId;
+
+ @Schema(description = "录入员姓名")
+ private String enterName;
+
+
+
}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/CustomStoreEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/CustomStoreEntity.java
index 68dc7b5..60e5594 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/entity/CustomStoreEntity.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/entity/CustomStoreEntity.java
@@ -12,6 +12,7 @@ import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
+import java.util.Date;
@Getter
@Setter
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 aa05627..b9ca940 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
@@ -14,6 +14,9 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.apache.ibatis.annotations.Param;
+/**
+ * 分页查询
+ */
public interface CustomMapper extends ExtendMapper {
default PageResult queryPage(PageParam pageParam, CustomQo qo) {
IPage page = this.prodPage(pageParam);
@@ -21,6 +24,8 @@ public interface CustomMapper extends ExtendMapper {
LambdaAliasQueryWrapperX wrapperX = WrappersX.lambdaAliasQueryX(CustomEntity.class);
wrapperX.eqIfPresent(CustomEntity::getCreateBy, qo.getCreateBy())
.likeIfPresent(CustomEntity::getCustomName, qo.getCustomName())
+ .eqIfPresent(CustomEntity::getCustomId,qo.getCompanyId())
+ .eqIfPresent(CustomEntity::getType,qo.getSalesmanType())
.eqIfPresent(CustomEntity::getCustomNid, qo.getCustomNid())
.eqIfPresent(CustomEntity::getEnrollStatus, qo.getEnrollStatus())
.orderByDesc(CustomEntity::getCreateTime);
@@ -33,4 +38,13 @@ public interface CustomMapper extends ExtendMapper {
}
IPage selectByPage(IPage page, @Param(Constants.WRAPPER) Wrapper wrapper);
+
+
+ /**
+ * 查询最大编号
+ * @param code
+ * @param companyId
+ * @return
+ */
+ String selectMaxBatchNoByCompanyId(@Param("code") String code,@Param("companyId") Long companyId);
}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/qo/CustomQo.java b/admin/src/main/java/com/baiye/modules/distribute/qo/CustomQo.java
index b57cbe2..0048264 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/qo/CustomQo.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/qo/CustomQo.java
@@ -16,8 +16,8 @@ public class CustomQo {
@Parameter(description = "客户联系方式")
private String customNid;
- @Parameter(description = "报名状态 0:待提交 1:已报名")
- private String enrollStatus;
+ @Parameter(description = "报名状态 0:待提交 1:已报名 2以通过")
+ private Integer enrollStatus;
@Schema(title = "创建者")
private Long createBy;
@@ -27,4 +27,11 @@ public class CustomQo {
@Parameter(description = "结束时间")
private String endTime;
+
+ @Parameter(description = "公司id")
+ private Long companyId;
+
+ @Schema(title = "审核类型 1录入员 2初审 3复审")
+ 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 5b977d6..776d56d 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
@@ -37,4 +37,10 @@ public interface ClueService extends ExtendService {
*/
ClueVO details(Long clueId, ClueQo qo);
+ /**
+ * 批量插入信息
+ * @param list
+ * @return
+ */
+ Boolean saveClueListByStoreInfo(List list);
}
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 74683c6..67ce763 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,30 +3,61 @@ 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.ChangeCustomDTO;
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;
+/**
+ * @author Enzo
+ * @date
+ */
public interface CustomService extends ExtendService {
/**
* 分页查询
+ * @param pageParam
+ * @param qo
+ * @return
*/
PageResult queryPage(PageParam pageParam, CustomQo qo);
/**
* 新增
+ * @param customDTO
+ * @return
*/
boolean add(CustomDTO customDTO);
/**
* 修改
+ * @param customDTO
+ * @return
*/
boolean update(CustomDTO customDTO);
+
/**
- * ID查询详情
+ * 详情
+ * @param id
+ * @return
*/
CustomVO details(Long id);
+
+ /**
+ * 删除
+ * @param id
+ * @return
+ */
+ Boolean deleteApprovalFormById(Long id);
+
+
+ /**
+ * 审批表单
+ *
+ * @param dto
+ * @return
+ */
+ Boolean auditFormById(ChangeCustomDTO dto);
}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/CustomStoreService.java b/admin/src/main/java/com/baiye/modules/distribute/service/CustomStoreService.java
index 6b6001b..2e86180 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/service/CustomStoreService.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/service/CustomStoreService.java
@@ -15,4 +15,18 @@ public interface CustomStoreService extends ExtendService {
* @return 统计数据
*/
Map countReservationByStoreIds(List storeIds);
+
+ /**
+ * 删除
+ * @param id
+ * @return
+ */
+ Boolean deleteByCustomId(Long id);
+
+ /**
+ * id查询列表
+ * @param customId
+ * @return
+ */
+ List selectListByCustomId(Long customId);
}
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 36ae976..b9f0faa 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
@@ -1,6 +1,7 @@
package com.baiye.modules.distribute.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import com.baiye.domain.PageParam;
@@ -165,4 +166,10 @@ public class ClueServiceImpl extends ExtendServiceImpl i
return clueVO;
}
+ @Override
+ public Boolean saveClueListByStoreInfo(List list) {
+ List entityList = Convert.toList(ClueEntity.class, list);
+ return SqlHelper.retBool(baseMapper.insertBatchSomeColumn(entityList));
+ }
+
}
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 f25e1c5..26de35d 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
@@ -1,48 +1,92 @@
package com.baiye.modules.distribute.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.text.StrPool;
+import cn.hutool.core.util.ObjectUtil;
import com.baiye.domain.PageParam;
import com.baiye.domain.PageResult;
+import com.baiye.enums.ClueSourceEnum;
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.entity.CustomEntity;
import com.baiye.modules.distribute.entity.CustomStoreEntity;
import com.baiye.modules.distribute.mapper.CustomMapper;
import com.baiye.modules.distribute.mapper.CustomStoreMapper;
import com.baiye.modules.distribute.qo.CustomQo;
+import com.baiye.modules.distribute.service.ClueService;
import com.baiye.modules.distribute.service.CustomService;
import com.baiye.modules.distribute.service.CustomStoreService;
+import com.baiye.modules.distribute.vo.AddressDTO;
+import com.baiye.modules.distribute.vo.CustomStoreVO;
import com.baiye.modules.distribute.vo.CustomVO;
+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.util.AESUtils;
+import com.baiye.utils.SerialCode;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.google.common.collect.Lists;
+import com.google.gson.Gson;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.ballcat.security.properties.SecurityProperties;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
+/**
+ * @author Enzo
+ * @date
+ */
+@Slf4j
@Service
@RequiredArgsConstructor
public class CustomServiceImpl extends ExtendServiceImpl implements CustomService {
private final CustomStoreService customStoreService;
+ private final SecurityProperties securityProperties;
+
private final CustomStoreMapper customStoreMapper;
+
+ private final ClueService clueService;
+
+
@Override
public PageResult queryPage(PageParam pageParam, CustomQo qo) {
+
return baseMapper.queryPage(pageParam, qo);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean add(CustomDTO customDTO) {
+ User user = SecurityUtils.getUser();
+ Long companyId = user.getWhichUserId();
CustomEntity customEntity = CustomConverter.INSTANCE.dtoToPo(customDTO);
+ 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);
+ customEntity.setType(2);
+ customEntity.setBatchNo(newCode);
+ customEntity.setCompanyId(companyId);
int insert = baseMapper.insert(customEntity);
-
+ customEntity.setEnterName(user.getUsername());
List customStoreEntities = customDTO.getCustomStoreEntities();
customStoreEntities.forEach(c -> c.setCustomId(customEntity.getCustomId()));
customStoreService.saveBatch(customStoreEntities);
@@ -86,17 +130,57 @@ public class CustomServiceImpl extends ExtendServiceImpl customStoreVOList = new ArrayList<>();
-// List customStores = customStoreMapper.selectList(new LambdaQueryWrapper().eq(CustomStoreEntity::getCustomId, id));
-// if (CollUtil.isNotEmpty(customStores)){
-// for (CustomStoreEntity customStore : customStores) {
-// CustomStoreVO customStoreVO = new CustomStoreVO();
-// BeanUtils.copyProperties(customStore, customStoreVO);
-// customStoreVOList.add(customStoreVO);
-// }
-// }
-// customVO.setCustomStoreVOList(customStoreVOList);
+ List customStoreVOList = new ArrayList<>();
+ List customStores = customStoreService.selectListByCustomId(id);
+ if (CollUtil.isNotEmpty(customStores)) {
+ for (CustomStoreEntity customStore : customStores) {
+ CustomStoreVO customStoreVO = new CustomStoreVO();
+ BeanUtils.copyProperties(customStore, customStoreVO);
+ customStoreVOList.add(customStoreVO);
+ }
+ }
+ customVO.setCustomStoreVOList(customStoreVOList);
return customVO;
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean deleteApprovalFormById(Long id) {
+ Boolean result = customStoreService.deleteByCustomId(id);
+ log.info("========================= delete result as {} =========================", result);
+ return SqlHelper.retBool(baseMapper.deleteById(id));
+ }
+
+ @Override
+ public Boolean auditFormById(ChangeCustomDTO dto) {
+ Long id = dto.getCustomId();
+ Integer status = dto.getStatus();
+ CustomEntity customEntity = baseMapper.selectById(id);
+ if (ObjectUtil.isNotNull(customEntity)) {
+ if (ObjectUtil.isNotNull(status) && status == 0) {
+ customEntity.setType(3);
+ return SqlHelper.retBool(baseMapper.updateById(customEntity));
+ }
+ Gson gson = new Gson();
+ AddressDTO address = new AddressDTO();
+ List list = Lists.newArrayList();
+ BeanUtils.copyProperties(customEntity, address);
+ String otherClue = gson.toJson(address);
+ List customStores = customStoreService.selectListByCustomId(id);
+ if (CollUtil.isNotEmpty(customStores)) {
+ for (CustomStoreEntity store : customStores) {
+ ClueDTO clueDTO = ClueDTO.builder().originName(ClueSourceEnum.STORE_DISTRIBUTION.getDescription()).nid
+ (AESUtils.encrypt(customEntity.getCustomNid(), securityProperties.getPasswordSecretKey())).assignedBy
+ (store.getStoreId()).createBy(customEntity.getCompanyId()).assignedName(store.getStoreName()).otherClue(otherClue).build();
+ list.add(clueDTO);
+ }
+ clueService.saveClueListByStoreInfo(list);
+ customEntity.setEnrollStatus(2);
+ return SqlHelper.retBool(baseMapper.updateById(customEntity));
+ }
+ }
+ return Boolean.FALSE;
+ }
+
+
}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomStoreServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomStoreServiceImpl.java
index 52a250d..4bea712 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomStoreServiceImpl.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomStoreServiceImpl.java
@@ -5,14 +5,31 @@ import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baiye.modules.distribute.entity.CustomStoreEntity;
import com.baiye.modules.distribute.mapper.CustomStoreMapper;
import com.baiye.modules.distribute.service.CustomStoreService;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import org.springframework.stereotype.Service;
+import java.util.List;
+
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class CustomStoreServiceImpl extends ExtendServiceImpl implements CustomStoreService {
+ @Override
+ public Boolean deleteByCustomId(Long id) {
+ return SqlHelper.retBool(baseMapper.delete
+ (Wrappers.lambdaQuery().eq
+ (CustomStoreEntity::getCustomId, id)));
+ }
+
+ @Override
+ public List selectListByCustomId(Long customId) {
+
+ return baseMapper.selectList
+ (Wrappers.lambdaQuery().eq(CustomStoreEntity::getCustomId, customId));
+ }
@Override
diff --git a/admin/src/main/java/com/baiye/modules/distribute/vo/AddressDTO.java b/admin/src/main/java/com/baiye/modules/distribute/vo/AddressDTO.java
new file mode 100644
index 0000000..2d52537
--- /dev/null
+++ b/admin/src/main/java/com/baiye/modules/distribute/vo/AddressDTO.java
@@ -0,0 +1,26 @@
+package com.baiye.modules.distribute.vo;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+
+/**
+ * @author Enzo
+ * @date : 2023/9/12
+ */
+@Data
+public class AddressDTO {
+
+ @SerializedName("省份")
+ private String economize;
+
+ @SerializedName("城市")
+ private String market;
+
+ @SerializedName("区域")
+ private String distinguish;
+
+ @SerializedName("详细地址")
+ private String detailAddress;
+
+
+}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/vo/CustomStoreVO.java b/admin/src/main/java/com/baiye/modules/distribute/vo/CustomStoreVO.java
index cbcf07a..3b85939 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/vo/CustomStoreVO.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/vo/CustomStoreVO.java
@@ -21,5 +21,5 @@ public class CustomStoreVO {
private String storeName;
@Schema(title = "预约时间")
- private LocalDateTime reservationTime;
+ private String reservationTime;
}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/vo/CustomVO.java b/admin/src/main/java/com/baiye/modules/distribute/vo/CustomVO.java
index 78b7d88..6929787 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/vo/CustomVO.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/vo/CustomVO.java
@@ -9,6 +9,10 @@ import java.util.List;
@Data
public class CustomVO {
+
+ @Schema(description = "编号")
+ private String batchNo;
+
@Schema(title = "ID")
private Long customId;
@@ -41,4 +45,10 @@ public class CustomVO {
@Schema(title = "门店信息")
private List customStoreVOList;
+
+ @Schema(description = "审核类型 1初审 2复审")
+ private Integer type;
+
+ @Schema(description = "公司id")
+ private Long companyId;
}
diff --git a/admin/src/main/java/com/baiye/modules/distribute/vo/DistributeTaskVO.java b/admin/src/main/java/com/baiye/modules/distribute/vo/DistributeTaskVO.java
index 013eb37..b826a6a 100644
--- a/admin/src/main/java/com/baiye/modules/distribute/vo/DistributeTaskVO.java
+++ b/admin/src/main/java/com/baiye/modules/distribute/vo/DistributeTaskVO.java
@@ -1,6 +1,5 @@
package com.baiye.modules.distribute.vo;
-import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
diff --git a/admin/src/main/java/com/baiye/utils/SerialCode.java b/admin/src/main/java/com/baiye/utils/SerialCode.java
new file mode 100644
index 0000000..1ee2958
--- /dev/null
+++ b/admin/src/main/java/com/baiye/utils/SerialCode.java
@@ -0,0 +1,25 @@
+package com.baiye.utils;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * @author Enzo
+ * @date : 2023/9/8
+ */
+public class SerialCode {
+
+ /**
+ * 轮次编号生成规则
+ * 1、如果当前时间没有核酸轮次,直接新增 ,默认为:HSJC-yyyyMMdd01
+ * 2、查询到有核酸轮次,查找当前那一天最大的轮次编号,自增1
+ *
+ * @param code 当前最大编码
+ */
+ public static String getNum(Integer code) {
+ AtomicInteger intCode = new AtomicInteger(code);
+ int andIncrement = intCode.incrementAndGet();
+ int length = String.valueOf(code).length() + 1;
+ return String.format("%0".concat(String.valueOf(length).concat("d")), andIncrement);
+ }
+
+}
diff --git a/admin/src/main/resources/mapper/CustomMapper.xml b/admin/src/main/resources/mapper/CustomMapper.xml
index fea6103..4b924a9 100644
--- a/admin/src/main/resources/mapper/CustomMapper.xml
+++ b/admin/src/main/resources/mapper/CustomMapper.xml
@@ -22,4 +22,11 @@
${ew.customSqlSegment}
-
\ No newline at end of file
+
+ select max(batch_no)
+ from tb_custom
+ where batch_no like concat(#{code}, '%')
+ and company_id = #{companyId}
+
+
+
diff --git a/admin/src/test/java/CustomTest.java b/admin/src/test/java/CustomTest.java
new file mode 100644
index 0000000..942256d
--- /dev/null
+++ b/admin/src/test/java/CustomTest.java
@@ -0,0 +1,74 @@
+import cn.hutool.json.JSONUtil;
+import com.baiye.AdminApplication;
+import com.baiye.modules.distribute.dto.CustomDTO;
+import com.baiye.modules.distribute.entity.CustomStoreEntity;
+import com.baiye.modules.distribute.service.CustomService;
+import com.baiye.modules.distribute.vo.AddressDTO;
+import com.google.common.collect.Lists;
+import com.google.gson.Gson;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.util.List;
+/**
+ * @author Enzo
+ * @date : 2022/9/23
+ */
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AdminApplication.class,
+ webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class CustomTest {
+
+ @Resource
+ private CustomService customService;
+ @Test
+ public void saveRecord() {
+ CustomDTO customDTO = new CustomDTO();
+
+ List newed = Lists.newArrayList();
+ customDTO.setCustomName("xXX");
+ customDTO.setCustomNid("12345678");
+ customDTO.setEconomize("浙江");
+ customDTO.setMarket("丽水");
+ customDTO.setDistinguish("皇后区");
+ customDTO.setDetailAddress("xxxxxx168");
+ customDTO.setRadius("18.1923");
+ customDTO.setEnrollStatus(1);
+
+ CustomStoreEntity store = new CustomStoreEntity();
+ store.setStoreId(1111L);
+ store.setStoreName("xxxx");
+ store.setReservationTime("");
+ newed.add(store);
+ customDTO.setCustomStoreEntities(newed);
+ customService.add(customDTO);
+
+ }
+
+ @Test
+ public void audit() {
+
+
+ }
+
+ @Test
+ public void json(){
+ Gson gson = new Gson();
+ AddressDTO addressDTO = new AddressDTO();
+ addressDTO.setDetailAddress("xxx");
+ addressDTO.setDistinguish("xxx");
+ addressDTO.setEconomize("xxx");
+ addressDTO.setMarket("xxx");
+ String jsonStr = JSONUtil.toJsonStr(addressDTO);
+ System.out.println(gson.toJson(addressDTO));
+ System.out.println(jsonStr);
+ }
+
+
+
+}
+
diff --git a/pom.xml b/pom.xml
index b29a397..b3cefa1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,10 +1,10 @@
- 4.0.0
- com.baiye
- ad-distribute
- 1.1.0
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ com.baiye
+ ad-distribute
+ 1.1.0
pom
@@ -17,7 +17,7 @@
ad-distribute-extends
-
+
1.4.0
1.8
UTF-8
@@ -67,7 +67,7 @@
0.6.1
1.7.1
1.3.2
-
+
@@ -128,12 +128,6 @@
${fastjson.version}
true
-
-
- com.alipay.sdk
- alipay-sdk-java
- ${alipay-sdk.version}
-
com.baomidou
mybatis-plus-annotation
@@ -166,17 +160,6 @@
nimbus-jose-jwt
9.15.2
-
- com.nimbusds
- oauth2-oidc-sdk
- 9.20
-
-
-
- com.xuxueli
- xxl-job-core
- ${xxl-job.version}
-
commons-net
@@ -221,28 +204,6 @@
swagger-models
${swagger.version}
-
-
- live.lingting
- virtual-currency-all
- ${virtual-currency.version}
-
-
- org.apache.kafka
- kafka-clients
- ${kafka.version}
-
-
- org.apache.kafka
- kafka-streams
- ${kafka.version}
-
-
-
- org.apache.kafka
- kafka_2.12
- ${kafka.version}
-
org.apache.poi
@@ -307,7 +268,6 @@
${grpc.version}
-
com.baiye
@@ -394,8 +354,8 @@
ad-distribute-starter-swagger
1.1.0
-
+
com.baiye
ad-distribute-starter-websocket
@@ -463,34 +423,14 @@
-
- org.apache.maven.plugins
- maven-release-plugin
- ${maven-release-plugin.version}
-
- true
- deploy
- release
- false
-
-
-
- org.sonatype.plugins
- nexus-staging-maven-plugin
- ${nexus-staging-maven-plugin.version}
-
- https://oss.sonatype.org/
- ossrh
-
- true
-
ossrh
+
-
+
https://oss.sonatype.org/service/local/staging/deploy/maven2/
@@ -563,37 +503,18 @@
maven-gpg-plugin
${maven-gpg-plugin.version}
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- ${maven-javadoc-plugin.version}
-
-
- org.apache.maven.plugins
- maven-release-plugin
- ${maven-release-plugin.version}
-
org.apache.maven.plugins
maven-resources-plugin
${maven-resources-plugin.version}
-
- org.apache.maven.plugins
- maven-source-plugin
- ${maven-source-plugin.version}
-
+
org.apache.maven.plugins
maven-surefire-plugin
${maven-surefire-plugin.version}
-
- org.sonatype.plugins
- nexus-staging-maven-plugin
- ${nexus-staging-maven-plugin.version}
-
org.codehaus.mojo
flatten-maven-plugin