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 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 + + + 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