From cdeb743fe66a809fe0ddba40eba4c3dc6aa92d26 Mon Sep 17 00:00:00 2001 From: username <1532322479@qq.com> Date: Mon, 4 Nov 2024 09:34:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=BB=8F=E7=BA=AA=E4=BA=BA=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bs/df/controller/DfBizClueController.java | 16 +- .../controller/DfProductPosterController.java | 4 +- .../controller/system/SysUserController.java | 132 ++- .../bs/common/core/domain/entity/SysUser.java | 15 + .../web/service/SysRegisterService.java | 15 + .../com/bs/system/mapper/SysUserMapper.java | 3 + .../bs/system/service/ISysUserService.java | 9 + .../service/impl/SysUserServiceImpl.java | 12 + .../resources/mapper/system/SysUserMapper.xml | 9 +- bs-ui/src/api/system/user.js | 29 +- .../user/broker/components/BrokerChange.vue | 185 ++++ .../user/broker/components/BrokerUser.vue | 798 ++++++++++++++++++ .../user/broker/components/ClientList.vue | 101 +++ .../views/user/broker/components/DfBroker.vue | 179 ++++ .../user/broker/components/NoBrokerUser.vue | 133 +++ bs-ui/src/views/user/broker/index.vue | 297 +------ 16 files changed, 1642 insertions(+), 295 deletions(-) create mode 100644 bs-ui/src/views/user/broker/components/BrokerChange.vue create mode 100644 bs-ui/src/views/user/broker/components/BrokerUser.vue create mode 100644 bs-ui/src/views/user/broker/components/ClientList.vue create mode 100644 bs-ui/src/views/user/broker/components/DfBroker.vue create mode 100644 bs-ui/src/views/user/broker/components/NoBrokerUser.vue diff --git a/bs-admin/src/main/java/com/bs/df/controller/DfBizClueController.java b/bs-admin/src/main/java/com/bs/df/controller/DfBizClueController.java index 930ec40..1c38152 100644 --- a/bs-admin/src/main/java/com/bs/df/controller/DfBizClueController.java +++ b/bs-admin/src/main/java/com/bs/df/controller/DfBizClueController.java @@ -11,7 +11,9 @@ import com.bs.common.core.domain.entity.SysUser; import com.bs.common.utils.SecurityUtils; import com.bs.common.utils.ServletUtils; import com.bs.df.domain.DfOrder; +import com.bs.df.domain.DfUserBroker; import com.bs.df.mapper.DfBizClueMapper; +import com.bs.df.service.IDfUserBrokerService; import com.bs.system.mapper.SysUserMapper; import com.bs.system.service.ISysUserService; import io.swagger.annotations.Api; @@ -56,7 +58,8 @@ public class DfBizClueController extends BaseController { private ISysUserService userService; @Resource private SysUserMapper sysUserMapper; - + @Resource + private IDfUserBrokerService dfUserBrokerService; /** * 分页查询业务线索列表 */ @@ -277,13 +280,22 @@ public class DfBizClueController extends BaseController { @ApiOperation("经纪人ID") @PostMapping("/changeUserId") public AjaxResult changeUserId(@RequestBody DfBizClue dfBizClue) { - List list = dfBizClueService.list(new LambdaQueryWrapper().eq(DfBizClue::getShareUser, dfBizClue.getOldUserId())); + List list = dfBizClueService.list(new LambdaQueryWrapper() + .eq(DfBizClue::getShareUser, dfBizClue.getOldUserId())); if (list.size() > 0) { for (DfBizClue dfBizClueNew : list) { dfBizClueNew.setShareUser(dfBizClue.getNewUserId()); } dfBizClueService.updateBatchById(list); } + List userBrokerList = dfUserBrokerService.list(new LambdaQueryWrapper() + .eq(DfUserBroker::getBrokerId, dfBizClue.getOldUserId())); + if (userBrokerList.size() > 0) { + for (DfUserBroker dfUserBroker : userBrokerList) { + dfUserBroker.setBrokerId(Long.valueOf(dfBizClue.getNewUserId())); + } + dfUserBrokerService.updateBatchById(userBrokerList); + } return toAjax(true); } diff --git a/bs-admin/src/main/java/com/bs/df/controller/DfProductPosterController.java b/bs-admin/src/main/java/com/bs/df/controller/DfProductPosterController.java index 2f7fb9f..a15005f 100644 --- a/bs-admin/src/main/java/com/bs/df/controller/DfProductPosterController.java +++ b/bs-admin/src/main/java/com/bs/df/controller/DfProductPosterController.java @@ -178,7 +178,7 @@ public class DfProductPosterController extends BaseController { @PostMapping public AjaxResult add(@RequestBody DfProductPoster dfProductPoster) { if ("1".equals(dfProductPoster.getPosterType())) { - dfProductPoster.setProductId(null); + dfProductPoster.setProductId(-1L); } return toAjax(dfProductPosterService.save(dfProductPoster)); } @@ -191,7 +191,7 @@ public class DfProductPosterController extends BaseController { @PutMapping public AjaxResult edit(@RequestBody DfProductPoster dfProductPoster) { if ("1".equals(dfProductPoster.getPosterType())) { - dfProductPoster.setProductId(null); + dfProductPoster.setProductId(-1L); } return toAjax(dfProductPosterService.updateById(dfProductPoster)); } diff --git a/bs-admin/src/main/java/com/bs/web/controller/system/SysUserController.java b/bs-admin/src/main/java/com/bs/web/controller/system/SysUserController.java index 7479ba9..d107408 100644 --- a/bs-admin/src/main/java/com/bs/web/controller/system/SysUserController.java +++ b/bs-admin/src/main/java/com/bs/web/controller/system/SysUserController.java @@ -36,6 +36,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -74,6 +75,8 @@ public class SysUserController extends BaseController { private ICmAttachService cmAttachService; + + /** * 获取用户列表 */ @@ -111,6 +114,12 @@ public class SysUserController extends BaseController { return success(true); } + @PostMapping("/removeBrokers") + public AjaxResult removeBrokers(@RequestBody SysUser user) { + dfUserBrokerService.remove(new LambdaQueryWrapper().in(DfUserBroker::getUserId, user.getUserIds())); + return success(true); + } + @PostMapping("/updateDepts") public AjaxResult updateDepts(@RequestBody SysUser user) { for (Long userId : user.getUserIds()) { @@ -122,14 +131,27 @@ public class SysUserController extends BaseController { return success(true); } + @PostMapping("/updateBroker") + public AjaxResult updateBroker(@RequestBody SysUser user) { + for (Long userId : user.getUserIds()) { + DfUserBroker dfUserBroker = new DfUserBroker(); + dfUserBroker.setUserId(userId); + dfUserBroker.setBrokerId(Long.valueOf(user.getBrokerId())); + dfUserBrokerService.save(dfUserBroker); + } + return success(true); + } + @GetMapping("/listByType") public TableDataInfo listByType(SysUser user) { + List dfUserBrokers = dfUserBrokerService.list(new LambdaQueryWrapper() + .eq(DfUserBroker::getBrokerId, user.getBrokerId())); if (!"1".equals(user.getSelectAll())) { startPage(); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if (user.getDeptIds()!=null) { + if (user.getDeptIds() != null) { wrapper.in(SysUser::getDeptId, user.getDeptIds()); } else { if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())) { @@ -137,6 +159,74 @@ public class SysUserController extends BaseController { wrapper.in(SysUser::getDeptId, longs); } } + if (null != user.getBrokerId()) { + List userIds = dfUserBrokers.stream() + .map(DfUserBroker::getUserId) + .distinct() + .collect(Collectors.toList()); + if (userIds.isEmpty()) { + userIds.add(0L); + } + wrapper.in(SysUser::getUserId, userIds); + } + condition(wrapper,user); + List list = userService.list(wrapper); + List listByAll = userService.list(); + List userBrokerListByAll = dfUserBrokerService.list(); + List dfBrokers = dfBrokerService.list(); + List dfAreas = dfAreaService.list(); + List attachVo = cmAttachService.list(); + Map> attachMap = attachVo.stream() + .filter(cmAttach -> cmAttach.getFileId() != null) + .collect(Collectors.groupingBy(CmAttach::getFileId)); + Map mapByUserBroker = userBrokerListByAll.stream().collect(Collectors.toMap(DfUserBroker::getUserId, DfUserBroker::getBrokerId)); + Map mapByUser = listByAll.stream().collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName)); + Map map = dfBrokers.stream().collect(Collectors.toMap(DfBroker::getId, DfBroker::getBrokerName)); + Map mapByArea = dfAreas.stream().collect(Collectors.toMap(DfArea::getAreaId, DfArea::getName)); + for (SysUser sysUser : list) { + sysUser.setUserDesc(HtmlUtils.stripHtmlTags(sysUser.getUserDesc())); + String deptName = map.get(sysUser.getDeptId()); + sysUser.setBrokerId(String.valueOf(mapByUserBroker.get(sysUser.getUserId()))); + String brokerId = sysUser.getBrokerId(); + if (!Validator.isEmpty(brokerId) && !"null".equals(brokerId)) { + sysUser.setBrokerName(mapByUser.get(Long.valueOf(brokerId))); + } + String cityName = mapByArea.get(sysUser.getCity()); + if (Validator.isNotEmpty(deptName)) { + sysUser.setDeptName(deptName); + } + if (Validator.isNotEmpty(cityName)) { + sysUser.setCity(cityName); + } + Long id = sysUser.getUserId(); + List matchingAttachments = attachMap.get(String.valueOf(id)); + if (matchingAttachments != null) { + sysUser.setFiles(matchingAttachments); + } + } + return getDataTable(list); + } + + @GetMapping("/listByNotBroker") + public TableDataInfo listByNotBroker(SysUser user) { + List userBrokerList = dfUserBrokerService.list(); + List userIdList = userBrokerList.stream() + .map(DfUserBroker::getUserId) + .filter(Objects::nonNull) // 过滤掉 null 值 + .collect(Collectors.toList()); + startPage(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.notIn(SysUser::getUserId, userIdList); + wrapper.eq(SysUser::getUserType,"jj"); + condition(wrapper,user); + List list = userService.list(wrapper); + return getDataTable(list); + } + + @GetMapping("/listByBroker") + public TableDataInfo listByBroker(SysUser user) { + startPage(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); condition(wrapper,user); List list = userService.list(wrapper); List dfBrokers = dfBrokerService.list(); @@ -253,22 +343,36 @@ public class SysUserController extends BaseController { @GetMapping(value = {"/getUsers"}) public TableDataInfo getInfosById(SysUser user) { SysUser sysUser = userService.selectUserById(user.getUserId()); - Long deptId = sysUser.getDeptId(); - LambdaQueryWrapper dfBrokerLambdaQueryWrapper = new LambdaQueryWrapper<>(); - if (!sysUser.getDeptId().equals(-1L)) { - dfBrokerLambdaQueryWrapper.eq(DfBroker::getParentId, deptId); - } - List list = dfBrokerService.list(dfBrokerLambdaQueryWrapper); - List idList = list.stream() - .map(DfBroker::getId) +// Long deptId = sysUser.getDeptId(); +// LambdaQueryWrapper dfBrokerLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// if (!sysUser.getDeptId().equals(-1L)) { +// dfBrokerLambdaQueryWrapper.eq(DfBroker::getParentId, deptId); +// } +// List list = dfBrokerService.list(dfBrokerLambdaQueryWrapper); +// List idList = list.stream() +// .map(DfBroker::getId) +// .collect(Collectors.toList()); +// if (idList.isEmpty()) { +// idList.add(0L); +// } + + List userBrokerList = dfUserBrokerService.list(new LambdaQueryWrapper() + .eq(DfUserBroker::getBrokerId, sysUser.getUserId())); + List userIdList = userBrokerList.stream() + .map(DfUserBroker::getUserId) .collect(Collectors.toList()); - if (idList.isEmpty()) { - idList.add(0L); + if (userIdList.isEmpty()) { + userIdList.add(0L); } startPage(); - List sysUsers = userService.list(new LambdaQueryWrapper() - .eq(SysUser::getUserType, user.getUserType()) - .in(SysUser::getDeptId, idList)); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysUser::getUserId, userIdList) + .eq(SysUser::getUserType, user.getUserType()); + if (sysUser.getDeptId().equals(-1L)) { + queryWrapper.or() + .isNotNull(SysUser::getUserId); + } + List sysUsers = userService.list(queryWrapper); return getDataTable(sysUsers); } diff --git a/bs-common/src/main/java/com/bs/common/core/domain/entity/SysUser.java b/bs-common/src/main/java/com/bs/common/core/domain/entity/SysUser.java index 7360e64..e2db38f 100644 --- a/bs-common/src/main/java/com/bs/common/core/domain/entity/SysUser.java +++ b/bs-common/src/main/java/com/bs/common/core/domain/entity/SysUser.java @@ -17,6 +17,7 @@ import lombok.Data; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -178,7 +179,14 @@ public class SysUser extends BaseEntity /** 角色ID */ @TableField(exist = false) private Long roleId; + + @Excel(name = "备注") + @ApiModelProperty(value = "备注") private String remark; + + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) + private LocalDateTime createTime; + public SysUser() { @@ -216,6 +224,13 @@ public class SysUser extends BaseEntity @TableField(exist = false) private String hasBroker; + @TableField(exist = false) + private String brokerId; + + /** 所属经纪人 */ + + @TableField(exist = false) + private String brokerName; /** * 微信小程序openId diff --git a/bs-framework/src/main/java/com/bs/framework/web/service/SysRegisterService.java b/bs-framework/src/main/java/com/bs/framework/web/service/SysRegisterService.java index befc9e5..e329104 100644 --- a/bs-framework/src/main/java/com/bs/framework/web/service/SysRegisterService.java +++ b/bs-framework/src/main/java/com/bs/framework/web/service/SysRegisterService.java @@ -18,6 +18,12 @@ import com.bs.framework.manager.factory.AsyncFactory; import com.bs.system.service.ISysConfigService; import com.bs.system.service.ISysUserService; +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.Random; + /** * 注册校验方法 * @@ -87,7 +93,16 @@ public class SysRegisterService sysUser.setTenantId(0L); sysUser.setNickName(username); sysUser.setPassword(SecurityUtils.encryptPassword(password)); + Date date = new Date(); + LocalDateTime localDateTime = date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + sysUser.setCreateTime(localDateTime); + sysUser.setBrokerId(registerBody.getShareUser()); + Long newId = System.currentTimeMillis() + new Random().nextInt(1000); + sysUser.setUserId(newId); boolean regFlag = userService.registerUser(sysUser); + userService.registerUserByBroker(sysUser); if (!regFlag) { msg = "注册失败,请联系系统管理人员"; diff --git a/bs-system/src/main/java/com/bs/system/mapper/SysUserMapper.java b/bs-system/src/main/java/com/bs/system/mapper/SysUserMapper.java index c92d4cd..9d14a75 100644 --- a/bs-system/src/main/java/com/bs/system/mapper/SysUserMapper.java +++ b/bs-system/src/main/java/com/bs/system/mapper/SysUserMapper.java @@ -71,4 +71,7 @@ public interface SysUserMapper extends BaseMapperX { Boolean insertNew(@Param("user")SysUser user); + Boolean insertByBroker(@Param("user")SysUser user); + + } diff --git a/bs-system/src/main/java/com/bs/system/service/ISysUserService.java b/bs-system/src/main/java/com/bs/system/service/ISysUserService.java index 8889269..6fa6880 100644 --- a/bs-system/src/main/java/com/bs/system/service/ISysUserService.java +++ b/bs-system/src/main/java/com/bs/system/service/ISysUserService.java @@ -122,6 +122,15 @@ public interface ISysUserService extends MPJBaseService */ public boolean registerUser(SysUser user); + /** + * 注册经纪用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public boolean registerUserByBroker(SysUser user); + + /** * 修改用户信息 * diff --git a/bs-system/src/main/java/com/bs/system/service/impl/SysUserServiceImpl.java b/bs-system/src/main/java/com/bs/system/service/impl/SysUserServiceImpl.java index 3be44f2..fd44eed 100644 --- a/bs-system/src/main/java/com/bs/system/service/impl/SysUserServiceImpl.java +++ b/bs-system/src/main/java/com/bs/system/service/impl/SysUserServiceImpl.java @@ -340,6 +340,18 @@ public class SysUserServiceImpl extends MPJBaseServiceImpl INSERT INTO sys_user (user_id, dept_id, user_name, nick_name, email, phonenumber, sex, avatar, password, status, review_status, - tenant_id,user_type ) + tenant_id,user_type, create_time) VALUES (#{user.userId}, #{user.deptId}, #{user.userName}, #{user.nickName}, #{user.email}, #{user.phonenumber}, #{user.sex}, #{user.avatar}, #{user.password}, #{user.status}, #{user.reviewStatus}, - #{user.tenantId}, #{user.userType}) + #{user.tenantId}, #{user.userType}, #{user.createTime}) - + + INSERT INTO df_user_broker (user_id, broker_id, create_time, tenant_id) + VALUES (#{user.userId}, #{user.brokerId}, #{user.createTime},0) + update sys_user diff --git a/bs-ui/src/api/system/user.js b/bs-ui/src/api/system/user.js index a613a4c..88ee8c4 100644 --- a/bs-ui/src/api/system/user.js +++ b/bs-ui/src/api/system/user.js @@ -10,6 +10,15 @@ export function listUser(query) { }) } +// 查询用户列表 +export function listByNotBroker(query) { + return request({ + url: '/system/user/listByNotBroker', + method: 'get', + params: query + }) +} + // 查询用户列表 export function listUserAll(query) { return request({ @@ -190,6 +199,15 @@ export function removeDepts(data) { }) } +// 批量移除用户经纪人 +export function removeBrokers(data) { + return request({ + url: '/system/user/removeBrokers', + method: 'post', + data: data + }) +} + // 批量修改用户部门/代理商 export function updateDepts(data) { return request({ @@ -197,4 +215,13 @@ export function updateDepts(data) { method: 'post', data: data }) -} \ No newline at end of file +} + +// 批量修改用户经纪人 +export function updateBroker(data) { + return request({ + url: '/system/user/updateBroker', + method: 'post', + data: data + }) +} diff --git a/bs-ui/src/views/user/broker/components/BrokerChange.vue b/bs-ui/src/views/user/broker/components/BrokerChange.vue new file mode 100644 index 0000000..442a41d --- /dev/null +++ b/bs-ui/src/views/user/broker/components/BrokerChange.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/bs-ui/src/views/user/broker/components/BrokerUser.vue b/bs-ui/src/views/user/broker/components/BrokerUser.vue new file mode 100644 index 0000000..e0f2504 --- /dev/null +++ b/bs-ui/src/views/user/broker/components/BrokerUser.vue @@ -0,0 +1,798 @@ + + diff --git a/bs-ui/src/views/user/broker/components/ClientList.vue b/bs-ui/src/views/user/broker/components/ClientList.vue new file mode 100644 index 0000000..729ac5a --- /dev/null +++ b/bs-ui/src/views/user/broker/components/ClientList.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/bs-ui/src/views/user/broker/components/DfBroker.vue b/bs-ui/src/views/user/broker/components/DfBroker.vue new file mode 100644 index 0000000..e80800a --- /dev/null +++ b/bs-ui/src/views/user/broker/components/DfBroker.vue @@ -0,0 +1,179 @@ + + diff --git a/bs-ui/src/views/user/broker/components/NoBrokerUser.vue b/bs-ui/src/views/user/broker/components/NoBrokerUser.vue new file mode 100644 index 0000000..02cb5a1 --- /dev/null +++ b/bs-ui/src/views/user/broker/components/NoBrokerUser.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/bs-ui/src/views/user/broker/index.vue b/bs-ui/src/views/user/broker/index.vue index 9c9ac82..4d80e41 100644 --- a/bs-ui/src/views/user/broker/index.vue +++ b/bs-ui/src/views/user/broker/index.vue @@ -1,280 +1,31 @@