Commit bb85ec8d authored by liuyang's avatar liuyang

finished 企业列表管理

parent 61eb53bb
package com.qkdata.biz.management.controller;
import com.qkdata.biz.management.service.OrganizationService;
import com.qkdata.biz.management.vo.EnterpriseListItemModel;
import com.qkdata.biz.management.vo.EnterpriseModel;
import com.qkdata.biz.management.vo.QueryEnterpriseModel;
import com.qkdata.common.annotation.SysLog;
import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.base.model.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "企业管理")
@RestController
@RequestMapping("/api/mgr/enterprise")
public class EnterpriseController {
@Autowired
private OrganizationService orgService;
@ApiOperation("企业列表查询")
@PostMapping("/list")
public PageResult<EnterpriseListItemModel> list(@RequestBody QueryEnterpriseModel param){
return orgService.queryEnterprisePageList(param);
}
@ApiOperation("添加企业信息")
@PostMapping("/save")
@SysLog("添加企业信息")
public Result<String> save(@RequestBody EnterpriseModel model){
orgService.saveEnterprise(model);
return Result.succeed("ok");
}
@ApiOperation("修改企业信息")
@PostMapping("/update")
@SysLog("修改企业信息")
public Result<String> update(@RequestBody EnterpriseModel model){
orgService.updateEnterprise(model);
return Result.succeed("ok");
}
}
package com.qkdata.biz.management.controller;
import com.qkdata.biz.management.service.MemberService;
import com.qkdata.biz.sys.vo.MemberListModel;
import com.qkdata.biz.sys.vo.QueryMemberModel;
import com.qkdata.biz.management.vo.MemberListModel;
import com.qkdata.biz.management.vo.QueryMemberModel;
import com.qkdata.common.base.model.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......
......@@ -3,6 +3,8 @@ package com.qkdata.biz.management.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.entity.OrganizationPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.management.vo.EnterpriseListItemModel;
import com.qkdata.biz.management.vo.QueryEnterpriseModel;
import com.qkdata.biz.management.vo.QueryOrgModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -21,4 +23,6 @@ import java.util.List;
public interface OrganizationMapper extends BaseMapper<OrganizationPO> {
List<OrganizationPO> queryPageList(Page page, @Param("p") QueryOrgModel param);
List<EnterpriseListItemModel> queryEnterprisePageList(Page page, @Param("p") QueryEnterpriseModel param);
}
package com.qkdata.biz.management.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.enums.AccountStatusEnum;
import com.qkdata.biz.management.vo.MemberInfoModel;
import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.entity.SysUserExtPO;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.mapper.SysUserExtMapper;
import com.qkdata.biz.sys.vo.MemberListModel;
import com.qkdata.biz.sys.vo.QueryMemberModel;
import com.qkdata.biz.sys.service.SysRoleService;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.management.vo.MemberListModel;
import com.qkdata.biz.management.vo.QueryMemberModel;
import com.qkdata.biz.sys.vo.SysRoleModel;
import com.qkdata.biz.sys.vo.SysUserModel;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.constants.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class MemberService {
@Autowired
private SysUserService sysUserService;
@Autowired
private SysUserExtMapper sysUserExtMapper;
@Autowired
private SysRoleService sysRoleService;
public PageResult<MemberListModel> queryPage(QueryMemberModel param) {
Page page = new Page(param.getPageIndex(),param.getPageSize());
List<MemberListModel> list = sysUserExtMapper.queryPage(page,param);
return PageResult.<MemberListModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
public boolean isEnterpriseAdminUser(String adminMobile) {
boolean flag = false;
SysUserPO sysUserPO = sysUserService.getByUsername(adminMobile);
if (sysUserPO != null){
//帐号已存在时,验证该帐号是否已为企业管理员
List<SysRoleModel> roles = sysRoleService.getUserRoles(sysUserPO.getId());
if (CollUtil.isNotEmpty(roles)) {
for (SysRoleModel role : roles) {
if (role.getCode().equals(BizConstants.ROLE_ENTERPRISE_ADMIN)) {
flag = true;
break;
}
}
}
}
return flag;
}
public MemberInfoModel getByUsername(String username) {
return getByUsername(username,false);
}
public MemberInfoModel getByUsername(String username, boolean withRole) {
MemberInfoModel model = sysUserExtMapper.getByUsername(username);
if (withRole){
List<SysRoleModel> roleList = sysRoleService.getUserRoles(model.getId());
List<String> roleCodeList = roleList.stream().map(SysRoleModel::getCode).collect(Collectors.toList());
model.setRoleCodeList(roleCodeList);
}
return model;
}
@Transactional
public void save(MemberInfoModel model) {
SysUserModel sysUserModel = convertToSysUserModel(model);
Long userId = sysUserService.saveUser(sysUserModel);
SysUserExtPO extUserPO = convertToExtUserPO(model);
extUserPO.setUserId(userId);
sysUserExtMapper.insert(extUserPO);
}
private SysUserExtPO convertToExtUserPO(MemberInfoModel model) {
SysUserExtPO extUser = new SysUserExtPO();
extUser.setName(model.getName());
extUser.setSex(StrUtil.isNotBlank(model.getSex()) ? model.getSex() : null);
extUser.setAge(model.getAge() != null ? model.getAge() : null);
extUser.setAvatarUrl(StrUtil.isNotBlank(model.getAvatarUrl()) ? model.getAvatarUrl() : null);
extUser.setEnterpriseId(model.getEnterpriseId() != null ? model.getEnterpriseId() : null);
extUser.setType(model.getType() != null ? model.getType() : null);
return extUser;
}
private SysUserModel convertToSysUserModel(MemberInfoModel model) {
SysUserModel sysUserModel = new SysUserModel();
sysUserModel.setId(model.getId() != null ? model.getId() : null);
sysUserModel.setUsername(model.getUsername());
sysUserModel.setPassword(StrUtil.isNotBlank(model.getPassword()) ? model.getPassword() : Constants.PSAAWORD);
sysUserModel.setNickName(model.getNickName());
sysUserModel.setStatus(model.getStatus() == null ? AccountStatusEnum.UNACTIVATE : model.getStatus());
List<SysRolePO> roleList = sysRoleService.getByCodes(model.getRoleCodeList());
List<Long> roleIds = Lists.newArrayList();
if (CollUtil.isNotEmpty(roleList)){
roleIds = roleList.stream().map(SysRolePO::getId).collect(Collectors.toList());
}
sysUserModel.setRoleIdList(roleIds);
return sysUserModel;
}
public void update(MemberInfoModel model) {
SysUserModel sysUserModel = convertToSysUserModel(model);
Long userId = sysUserService.updateUser(sysUserModel);
SysUserExtPO extUserPO = convertToExtUserPO(model);
extUserPO.setUserId(userId);
sysUserExtMapper.update(extUserPO, Wrappers.<SysUserExtPO>lambdaUpdate().eq(SysUserExtPO::getUserId,userId));
}
}
package com.qkdata.biz.management.service;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.enums.AccountTypeEnum;
import com.qkdata.biz.enums.OrgTypeEnum;
import com.qkdata.biz.management.entity.OrganizationPO;
import com.qkdata.biz.management.mapper.OrganizationMapper;
import com.qkdata.biz.management.vo.InstitutionModel;
import com.qkdata.biz.management.vo.QueryOrgModel;
import com.qkdata.biz.management.vo.*;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.service.SysRoleService;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.sys.vo.SysRoleModel;
import com.qkdata.common.base.entity.BasePO;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
......@@ -26,6 +36,10 @@ import java.util.List;
*/
@Service
public class OrganizationService extends BaseServiceImpl<OrganizationMapper, OrganizationPO> {
@Autowired
private MemberService memberService;
@Autowired
private SysRoleService sysRoleService;
@Override
public boolean save(OrganizationPO po) {
......@@ -61,4 +75,71 @@ public class OrganizationService extends BaseServiceImpl<OrganizationMapper, Org
List<OrganizationPO> pageList = baseMapper.queryPageList(page,param);
return PageResult.<OrganizationPO>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(pageList).build();
}
public PageResult<EnterpriseListItemModel> queryEnterprisePageList(QueryEnterpriseModel param) {
Page page = new Page(param.getPageIndex(),param.getPageSize());
List<EnterpriseListItemModel> list = baseMapper.queryEnterprisePageList(page,param);
//TODO 获取成员数量
return PageResult.<EnterpriseListItemModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
@Transactional
public void saveEnterprise(EnterpriseModel model) {
//验证管理员手机号是否被占用
if (memberService.isEnterpriseAdminUser(model.getAdminMobile())){
throw new BusinessException("该手机号已是其它企业管理员");
}
//保存企业信息
Long enterpriseId = savePO(model);
//创建企业管理员帐号
MemberInfoModel memberInfoModel = memberService.getByUsername(model.getAdminMobile(),false);
if (memberInfoModel != null){
//更新帐号信息和角色
MemberInfoModel updateModel = new MemberInfoModel();
updateModel.setId(memberInfoModel.getId());
updateModel.setName(model.getAdminName());
updateModel.setNickName(model.getAdminNickName());
updateModel.setEnterpriseId(enterpriseId);
List<String> roleCodeList = Lists.newArrayList(BizConstants.ROLE_ENTERPRISE_ADMIN);
updateModel.setRoleCodeList(roleCodeList);
memberService.update(updateModel);
}else {
//创建帐号信息和角色
MemberInfoModel saveModel = new MemberInfoModel();
saveModel.setUsername(model.getAdminMobile());
saveModel.setNickName(model.getAdminNickName());
saveModel.setName(model.getAdminName());
saveModel.setEnterpriseId(enterpriseId);
saveModel.setType(AccountTypeEnum.USER);
List<String> roleCodeList = Lists.newArrayList(BizConstants.ROLE_ENTERPRISE_ADMIN);
saveModel.setRoleCodeList(roleCodeList);
memberService.save(saveModel);
}
}
private Long savePO(EnterpriseModel model) {
OrganizationPO po = new OrganizationPO();
po.setName(model.getName());
po.setType(OrgTypeEnum.ENTERPRISE);
po.setLogoUrl(model.getLogoUrl());
po.setProvince(model.getProvince());
po.setCity(model.getCity());
po.setAddress(model.getAddress());
save(po);
return po.getId();
}
public void updateEnterprise(EnterpriseModel model) {
OrganizationPO po = getById(model.getId());
if (po == null){
throw new BusinessException("企业信息不存在");
}
po.setName(model.getName());
po.setLogoUrl(model.getLogoUrl());
po.setProvince(model.getProvince());
po.setCity(model.getCity());
po.setAddress(model.getAddress());
updateById(po);
}
}
\ No newline at end of file
package com.qkdata.biz.management.vo;
import com.qkdata.biz.enums.AccountStatusEnum;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class EnterpriseListItemModel {
private Long id;
/**
* 企业名称
*/
private String name;
/**
* 管理员手机号
*/
private String adminMobile;
/**
* 企业管理员姓名
*/
private String adminName;
/**
* 管理员昵称
*/
private String adminNickName;
/**
* 注册时间
*/
private LocalDateTime createTime;
/**
* 管理员头像
*/
private String adminAvatarUrl;
/**
* 管理员状态
*/
private AccountStatusEnum adminStatus;
/**
* 最后登录时间
*/
private LocalDateTime lastLoginTime;
/**
* 成员数量
*/
private int memberCount;
/**
* 企业logo
*/
private String logoUrl;
/**
* 省市
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 详细地址
*/
private String address;
}
package com.qkdata.biz.management.vo;
import lombok.Data;
@Data
public class EnterpriseModel {
private Long id;
/**
* 企业名称
*/
private String name;
/**
* 企业logo
*/
private String logoUrl;
/**
* 企业管理员手机号
*/
private String adminMobile;
/**
* 企业管理员昵称
*/
private String adminNickName;
/**
* 企业管理员姓名
*/
private String adminName;
private String province;
private String city;
private String address;
}
package com.qkdata.biz.management.vo;
import com.qkdata.biz.enums.AccountStatusEnum;
import com.qkdata.biz.enums.AccountTypeEnum;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class MemberInfoModel {
/**
* ID
*/
private Long id;
/**
* 手机号
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 昵称
*/
private String nickName;
/**
* 最后登录时间
*/
private LocalDateTime lastLoginTime;
/**
* 激活时间
*/
private LocalDateTime activateTime;
/**
* 帐号状态
*/
private AccountStatusEnum status;
/**
* 注册时间
*/
private LocalDateTime createTime;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 年龄
*/
private Integer age;
/**
* 头像url
*/
private String avatarUrl;
/**
* 用户类型(普通用户、会员、企业会员)
*/
private AccountTypeEnum type;
/**
* 企业ID
*/
private Long enterpriseId;
/**
* 所属企业名称
*/
private String enterpriseName;
/**
* 会员生效时间
*/
private LocalDateTime vipStartTime;
/**
* 会员结束时间
*/
private LocalDateTime vipEndTime;
/**
* 角色编码列表
*/
private List<String> roleCodeList;
}
package com.qkdata.biz.sys.vo;
package com.qkdata.biz.management.vo;
import com.qkdata.biz.enums.AccountStatusEnum;
import com.qkdata.biz.enums.AccountTypeEnum;
......
package com.qkdata.biz.management.vo;
import com.qkdata.common.constants.Constants;
import lombok.Data;
@Data
public class QueryEnterpriseModel {
private int pageIndex = Constants.DEFAULT_PAGE;
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
private String enterpriseName;
private String adminMobile;
}
package com.qkdata.biz.sys.vo;
package com.qkdata.biz.management.vo;
import com.qkdata.common.constants.Constants;
import lombok.Data;
......
package com.qkdata.biz.sys.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qkdata.biz.enums.AccountTypeEnum;
import com.qkdata.common.base.entity.BasePO;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -52,7 +53,7 @@ public class SysUserExtPO extends BasePO {
/**
* 用户类型(普通用户、会员、企业会员)
*/
private String type;
private AccountTypeEnum type;
/**
* 企业ID
......
package com.qkdata.biz.sys.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.vo.MemberInfoModel;
import com.qkdata.biz.sys.entity.SysUserExtPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.sys.vo.MemberListModel;
import com.qkdata.biz.sys.vo.QueryMemberModel;
import com.qkdata.biz.management.vo.MemberListModel;
import com.qkdata.biz.management.vo.QueryMemberModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -22,4 +23,6 @@ import java.util.List;
public interface SysUserExtMapper extends BaseMapper<SysUserExtPO> {
List<MemberListModel> queryPage(Page page, @Param("p") QueryMemberModel param);
MemberInfoModel getByUsername(String username);
}
package com.qkdata.biz.sys.service;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.mapper.SysRoleMapper;
import com.qkdata.biz.sys.vo.QueryRoleModel;
import com.qkdata.biz.sys.vo.RoleMenuPermissionModel;
import com.qkdata.biz.sys.vo.SysRoleModel;
import com.qkdata.common.base.entity.BasePO;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
......@@ -16,6 +20,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class SysRoleService extends BaseServiceImpl<SysRoleMapper, SysRolePO> {
......@@ -72,4 +77,9 @@ public class SysRoleService extends BaseServiceImpl<SysRoleMapper, SysRolePO> {
public void saveRoleMenuPermission(RoleMenuPermissionModel model) {
sysRoleMenuService.saveOrUpdateRoleMenu(model.getRoleId(),model.getMenuIds());
}
public List<SysRolePO> getByCodes(List<String> roleCodeList) {
return list(Wrappers.<SysRolePO>lambdaQuery().in(SysRolePO::getCode,roleCodeList));
}
}
......@@ -58,7 +58,7 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
}
@Transactional
public void saveUser(SysUserModel sysUserModel) {
public Long saveUser(SysUserModel sysUserModel) {
SysUserPO po = getByUsername(sysUserModel.getUsername());
if (po != null){
throw new BusinessException("帐号已存在");
......@@ -78,10 +78,11 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
roleIds = Lists.newArrayList(2L);
}
sysUserRoleService.saveOrUpdateUserRole(po.getId(),roleIds);
return po.getId();
}
@Transactional
public void updateUser(SysUserModel sysUserModel) {
public Long updateUser(SysUserModel sysUserModel) {
SysUserPO po = getById(sysUserModel.getId());
if (po == null){
throw new BusinessException("请求错误,用户不存在");
......@@ -89,7 +90,7 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
po.setStatus(sysUserModel.getStatus());
po.setNickName(sysUserModel.getNickName());
updateById(po);
return po.getId();
// sysUserRoleService.saveOrUpdateUserRole(po.getId(),sysUserModel.getRoleIdList());
}
......
......@@ -10,4 +10,31 @@
and name like concat('%',#{p.name},'%')
</if>
</select>
<select id="queryEnterprisePageList" resultType="com.qkdata.biz.management.vo.EnterpriseListItemModel">
SELECT o.id,
o.`name`,
s.username admin_mobile,
s.nick_name admin_nick_name,
e.`name` admin_name,
o.create_time,
e.avatar_url admin_avatar_url,
s.`status` admin_status,
s.last_login_time,
o.logo_url,
o.province,
o.city,
o.address
FROM organization o
INNER JOIN user_ext e on o.id = e.enterprise_id
INNER JOIN sys_user s on e.user_id = s.id
INNER JOIN sys_user_role r on s.id = r.user_id
WHERE o.is_del = 0 and r.role_id = 3
<if test="p.enterpriseName != null and p.enterpriseName != ''">
and o.`name` like concat('%',#{p.enterpriseName},'%')
</if>
<if test="p.adminMobile != null and p.adminMobile != ''">
and s.username like concat('%',#{p.adminMobile},'%')
</if>
order by o.create_time desc
</select>
</mapper>
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qkdata.biz.sys.mapper.SysUserExtMapper">
<select id="queryPage" resultType="com.qkdata.biz.sys.vo.MemberListModel">
<select id="queryPage" resultType="com.qkdata.biz.management.vo.MemberListModel">
SELECT
u.id,
u.username,
......@@ -25,4 +25,30 @@
</if>
ORDER BY u.last_login_time desc
</select>
<select id="getByUsername" resultType="com.qkdata.biz.management.vo.MemberInfoModel">
SELECT u.id,
u.username,
u.nick_name,
u.last_login_time,
u.activate_time,
u.create_time,
u.`status`,
e.`name`,
e.sex,
e.age,
e.avatar_url,
e.type,
e.enterprise_id,
o.`name` enterprise_name,
e.vip_start_time,
e.vip_end_time
FROM sys_user u
INNER JOIN user_ext e on u.id = e.user_id
LEFT JOIN organization o on e.enterprise_id = o.id
WHERE u.is_del = 0
<if test="username != null and username != ''">
and u.username like concat('%',#{username},'%')
</if>
</select>
</mapper>
......@@ -8,13 +8,14 @@
where ur.user_id = #{userId}
</select>
<select id="queryPageList" resultType="com.qkdata.biz.sys.vo.SysUserListModel">
select *
from sys_user
where is_del=0
select u.*
from sys_user u
inner join sys_user_role r on u.id = r.user_id
where u.is_del=0 and r.role_id in (1,3)
<if test="p.username != null and p.username != ''">
and username like concat('%',#{p.username},'%')
and u.username like concat('%',#{p.username},'%')
</if>
order by create_time desc
order by u.create_time desc
</select>
<select id="queryAllMenuId" resultType="java.lang.Long">
select distinct rm.menu_id from sys_user_role ur
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment