Commit 024d282c authored by zhangyingbin's avatar zhangyingbin

新增93666坐席管理功能

parent 321e54a2
package com.yeejoin.amos.boot.module.tzs.api.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Dto
*
* @author duanwei
* @date 2022-12-19
*/
@Data
public class TzsCitInfoDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户名")
/**
* 用户名
*/
private String userName;
@ApiModelProperty(value = "平台的userId")
/**
* 平台的userId
*/
private String userId;
@ApiModelProperty(value = "登录坐席参数gid")
/**
* 登录坐席参数gid
*/
private String gid;
@ApiModelProperty(value = "登录坐席参数code")
/**
* 登录坐席参数code
*/
private String code;
@ApiModelProperty(value = "登录坐席参数extphone")
/**
* 登录坐席参数extphone
*/
private String extphone;
@ApiModelProperty(value = "所属区域代码")
/**
* 所属区域代码
*/
private String regionCode;
@ApiModelProperty(value = "用户坐席职位")
/**
* 用户坐席职位
*/
private String userRole;
}
package com.yeejoin.amos.boot.module.tzs.api.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
*
*
* @author duanwei
* @date 2022-12-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tzs_cit_info")
@ApiModel(value="TzsCitInfo对象", description="")
public class TzsCitInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户名")
private String userName;
@ApiModelProperty(value = "平台的userId")
private String userId;
@ApiModelProperty(value = "登录坐席参数gid")
private String gid;
@ApiModelProperty(value = "登录坐席参数code")
private String code;
@ApiModelProperty(value = "登录坐席参数extphone")
private String extphone;
@ApiModelProperty(value = "所属区域代码")
private String regionCode;
@ApiModelProperty(value = "用户坐席职位")
private String userRole;
}
package com.yeejoin.amos.boot.module.tzs.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.tzs.api.entity.TzsCitInfo;
/**
* Mapper 接口
*
* @author duanwei
* @date 2022-12-19
*/
public interface TzsCitInfoMapper extends BaseMapper<TzsCitInfo> {
}
package com.yeejoin.amos.boot.module.tzs.api.service;
import com.yeejoin.amos.boot.module.tzs.api.entity.TzsCitInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import java.util.List;
/**
* 服务类
*
* @author duanwei
* @date 2022-12-19
*/
public interface ITzsCitInfoService extends IService<TzsCitInfo> {
public List<AgencyUserModel> getUserList();
String saveOrUpdateInfo(TzsCitInfo tzsCitInfo);
}
package com.yeejoin.amos.boot.module.tzs.biz.controller;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.CommonUtils;
import com.yeejoin.amos.boot.biz.common.utils.NameUtils;
import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil;
import com.yeejoin.amos.boot.module.tzs.api.entity.TzsCitInfo;
import com.yeejoin.amos.boot.module.tzs.api.service.ITzsCitInfoService;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
/**
*
*
* @author duanwei
* @date 2022-12-19
*/
@RestController
@Api(tags = "Api")
@RequestMapping(value = "/tzs-cit-info", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class TzsCitInfoController extends BaseController {
@Autowired
ITzsCitInfoService iTzsCitInfoService;
/**
* 新增
* @return
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public boolean saveTzsCitInfo(HttpServletRequest request, @RequestBody TzsCitInfo tzsCitInfo){
return iTzsCitInfoService.save(tzsCitInfo);
}
/**
* 根据id删除
* @param ids
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/{ids}", method = RequestMethod.DELETE)
@ApiOperation(httpMethod = "DELETE", value = "根据id删除", notes = "根据id删除")
@Transactional
public boolean deleteById(HttpServletRequest request, @PathVariable String ids){
String[] idList = ids.split(",");
for (String id : idList) {
iTzsCitInfoService.removeById(id);
}
return true;
}
/**
* 修改
* @return
*/
@RequestMapping(value = "/updateById", method = RequestMethod.PUT)
@ApiOperation(httpMethod = "PUT", value = "修改", notes = "修改")
public boolean updateByIdTzsCitInfo(HttpServletRequest request, @RequestBody TzsCitInfo tzsCitInfo){
return iTzsCitInfoService.updateById(tzsCitInfo);
}
/**
* 根据id查询
* @param id
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询")
public TzsCitInfo selectById(HttpServletRequest request, @PathVariable Long id){
return iTzsCitInfoService.getById(id);
}
/**
* 列表分页查询
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/list", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "列表分页查询", notes = "列表分页查询")
public IPage<TzsCitInfo> listPage(String pageNum,String pageSize,@RequestBody TzsCitInfo tzsCitInfo){
tzsCitInfo.setRegionCode(this.getSelectedOrgInfo().getCompany().getRegionCode());
Page<TzsCitInfo> pageBean;
QueryWrapper<TzsCitInfo> tzsCitInfoQueryWrapper = new QueryWrapper<>();
Class<? extends TzsCitInfo> aClass = tzsCitInfo.getClass();
Arrays.stream(aClass.getDeclaredFields()).forEach(field -> {
try {
field.setAccessible(true);
Object o = field.get(tzsCitInfo);
if (o != null) {
Class<?> type = field.getType();
String name = NameUtils.camel2Underline(field.getName());
if (type.equals(Integer.class)) {
Integer fileValue = (Integer) field.get(tzsCitInfo);
tzsCitInfoQueryWrapper.eq(name, fileValue);
} else if (type.equals(Long.class)) {
Long fileValue = (Long) field.get(tzsCitInfo);
tzsCitInfoQueryWrapper.eq(name, fileValue);
} else if (type.equals(String.class)) {
String fileValue = (String) field.get(tzsCitInfo);
tzsCitInfoQueryWrapper.eq(name, fileValue);
} else {
String fileValue = (String) field.get(tzsCitInfo);
tzsCitInfoQueryWrapper.eq(name, fileValue);
}
}
}catch (Exception e) {
}
});
IPage<TzsCitInfo> page;
if (StringUtils.isBlank(pageNum) ||StringUtils.isBlank(pageSize)) {
pageBean = new Page<>(0, Long.MAX_VALUE);
}else{
pageBean = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
}
page = iTzsCitInfoService.page(pageBean, tzsCitInfoQueryWrapper);
return page;
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getUserList", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "获取值班所有人员列表", notes = "获取值班所有人员列表")
public ResponseModel<List> getUserList(){
return ResponseHelper.buildResponse(iTzsCitInfoService.getUserList());
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/saveInfo", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "保存人员及登录坐席参数", notes = "保存人员及登录坐席参数")
public ResponseModel<String> saveInfo(@RequestBody TzsCitInfo tzsCitInfo) {
String massage = iTzsCitInfoService.saveOrUpdateInfo(tzsCitInfo);
if (!ValidationUtil.isEmpty(massage)) {
return CommonResponseUtil.failure(massage);
}
return ResponseHelper.buildResponse("ok");
}
}
package com.yeejoin.amos.boot.module.tzs.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.tzs.api.dto.DutySeatDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.TzsCitInfoDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.TzsCitInfo;
import com.yeejoin.amos.boot.module.tzs.api.mapper.TzsCitInfoMapper;
import com.yeejoin.amos.boot.module.tzs.api.service.ITzsCitInfoService;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.*;
import java.util.stream.Collectors;
/**
* 服务实现类
*
* @author duanwei
* @date 2022-12-19
*/
@Service
public class TzsCitInfoServiceImpl extends BaseService<TzsCitInfoDto, TzsCitInfo, TzsCitInfoMapper> implements ITzsCitInfoService {
@Value("${duty.seats.role.ids}")
private String dutySeatsRoleIds;
@Autowired
private RedisUtils redisUtils;
/**
* 获取值班所有人员列表
*/
@Override
public List<AgencyUserModel> getUserList(){
ReginParams regionParam = this.getReginParams();
Long companyId = regionParam.getCompany().getSequenceNbr();
String[] roleIds = dutySeatsRoleIds.split(",");
//通过roleIds拿到该对应的人员
FeignClientResult<List<AgencyUserModel>> userListResult = Privilege.agencyUserClient.queryByCompanyId(companyId,null,null,null);
List<AgencyUserModel> userList = userListResult.getResult();
// 排除非系统中人员
userList = userList.stream().filter(u -> {
AgencyUserModel agencyUser = Privilege.agencyUserClient.queryByUserId(u.getUserId()).getResult();
Set<Long> set = new HashSet<>(agencyUser.getOrgRoleSeqs().get(companyId));
if(!ValidationUtil.isEmpty(set)) {
for (int i = 0; i < roleIds.length; i++) {
if (set.contains(Long.valueOf(roleIds[i]))) {
return true;
}
}
}
return false;
}).collect(Collectors.toList());
return userList;
}
@Override
public String saveOrUpdateInfo(TzsCitInfo tzsCitInfo){
//校验
String massage = "";
if(!ValidationUtil.isEmpty(tzsCitInfo.getUserId())) {
if (!ValidationUtil.isEmpty(this.list(new LambdaQueryWrapper<TzsCitInfo>().eq(TzsCitInfo::getUserId, tzsCitInfo.getUserId())))) {
massage = "该用户已有坐席账号,不可重复添加!";
return massage;
}
}
if(!ValidationUtil.isEmpty(this.list(new LambdaQueryWrapper<TzsCitInfo>().eq(TzsCitInfo::getCode,tzsCitInfo.getCode())))){
massage = "登录坐席参数code已存在,不可重复添加!";
return massage;
}
if(!ValidationUtil.isEmpty(this.list(new LambdaQueryWrapper<TzsCitInfo>().eq(TzsCitInfo::getExtphone,tzsCitInfo.getExtphone())))){
massage = "登录坐席参数extphone已存在,不可重复添加!";
return massage;
}
//保存数据
if(!ValidationUtil.isEmpty(tzsCitInfo.getUserId())) {
AgencyUserModel agencyUser = Privilege.agencyUserClient.queryByUserId(String.valueOf(tzsCitInfo.getUserId())).getResult();
tzsCitInfo.setUserName(agencyUser.getRealName());
tzsCitInfo.setRegionCode(agencyUser.getCompanys().iterator().next().getCompanyCode());
}
this.saveOrUpdate(tzsCitInfo);
return null;
}
/**
* 用户单位信息redis获取
**/
public ReginParams getReginParams() {
return JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
}
}
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