Files
jshERP/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java

236 lines
9.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.jsh.erp.service.userBusiness;
import com.alibaba.fastjson.JSONObject;
import com.jsh.erp.constants.BusinessConstants;
import com.jsh.erp.datasource.entities.App;
import com.jsh.erp.datasource.entities.Functions;
import com.jsh.erp.datasource.entities.User;
import com.jsh.erp.datasource.entities.UserBusiness;
import com.jsh.erp.datasource.entities.UserBusinessExample;
import com.jsh.erp.datasource.mappers.UserBusinessMapper;
import com.jsh.erp.service.CommonQueryManager;
import com.jsh.erp.service.app.AppService;
import com.jsh.erp.service.functions.FunctionsService;
import com.jsh.erp.datasource.mappers.UserBusinessMapperEx;
import com.jsh.erp.service.log.LogService;
import com.jsh.erp.service.user.UserService;
import com.jsh.erp.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Date;
import java.util.List;
import java.util.Set;
@Service
public class UserBusinessService {
private Logger logger = LoggerFactory.getLogger(UserBusinessService.class);
@Resource
private UserBusinessMapper userBusinessMapper;
@Resource
private UserBusinessMapperEx userBusinessMapperEx;
@Resource
private LogService logService;
@Resource
private UserService userService;
@Resource
private FunctionsService functionsService;
@Resource
private AppService appService;
@Resource
private CommonQueryManager configResourceManager;
public UserBusiness getUserBusiness(long id) {
return userBusinessMapper.selectByPrimaryKey(id);
}
public List<UserBusiness> getUserBusiness() {
UserBusinessExample example = new UserBusinessExample();
example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
return userBusinessMapper.selectByExample(example);
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int insertUserBusiness(String beanJson, HttpServletRequest request) {
UserBusiness userBusiness = JSONObject.parseObject(beanJson, UserBusiness.class);
int inserts = userBusinessMapper.insertSelective(userBusiness);
// 更新应用权限
if (BusinessConstants.TYPE_NAME_ROLE_FUNCTIONS.equals(userBusiness.getType()) && inserts > 0) {
inserts = insertOrUpdateAppValue(BusinessConstants.TYPE_NAME_ROLE_APP, userBusiness.getKeyid(), userBusiness.getValue());
}
return inserts;
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int updateUserBusiness(String beanJson, Long id) {
UserBusiness userBusiness = JSONObject.parseObject(beanJson, UserBusiness.class);
userBusiness.setId(id);
int updates = userBusinessMapper.updateByPrimaryKeySelective(userBusiness);
// 更新应用权限
if (BusinessConstants.TYPE_NAME_ROLE_FUNCTIONS.equals(userBusiness.getType()) && updates > 0) {
updates = insertOrUpdateAppValue(BusinessConstants.TYPE_NAME_ROLE_APP, userBusiness.getKeyid(), userBusiness.getValue());
}
return updates;
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int deleteUserBusiness(Long id) {
return userBusinessMapper.deleteByPrimaryKey(id);
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int batchDeleteUserBusiness(String ids) {
List<Long> idList = StringUtil.strToLongList(ids);
UserBusinessExample example = new UserBusinessExample();
example.createCriteria().andIdIn(idList);
return userBusinessMapper.deleteByExample(example);
}
public int checkIsNameExist(Long id, String name) {
return 1;
}
public List<UserBusiness> getBasicData(String keyId, String type){
UserBusinessExample example = new UserBusinessExample();
example.createCriteria().andKeyidEqualTo(keyId).andTypeEqualTo(type)
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
List<UserBusiness> list = userBusinessMapper.selectByExample(example);
return list;
}
public Long checkIsValueExist(String type, String keyId) {
UserBusinessExample example = new UserBusinessExample();
example.createCriteria().andTypeEqualTo(type).andKeyidEqualTo(keyId)
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
List<UserBusiness> list = userBusinessMapper.selectByExample(example);
Long id = null;
if(list.size() > 0) {
id = list.get(0).getId();
}
return id;
}
public Boolean checkIsUserBusinessExist(String TypeVale, String KeyIdValue, String UBValue) {
UserBusinessExample example = new UserBusinessExample();
String newVaule = "%" + UBValue + "%";
if(TypeVale !=null && KeyIdValue !=null) {
example.createCriteria().andTypeEqualTo(TypeVale).andKeyidEqualTo(KeyIdValue).andValueLike(newVaule)
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
} else {
example.createCriteria().andValueLike(newVaule)
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
}
List<UserBusiness> list = userBusinessMapper.selectByExample(example);
if(list.size() > 0) {
return true;
} else {
return false;
}
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int updateBtnStr(Long userBusinessId, String btnStr) {
logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_USER_BUSINESS,
new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(userBusinessId).toString(),
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest());
UserBusiness userBusiness = new UserBusiness();
userBusiness.setBtnstr(btnStr);
UserBusinessExample example = new UserBusinessExample();
example.createCriteria().andIdEqualTo(userBusinessId);
return userBusinessMapper.updateByExampleSelective(userBusiness, example);
}
public List<UserBusiness> findRoleByUserId(String userId){
UserBusinessExample example = new UserBusinessExample();
example.createCriteria().andKeyidEqualTo(userId).andTypeEqualTo("UserRole")
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
List<UserBusiness> list = userBusinessMapper.selectByExample(example);
return list;
}
public List<UserBusiness> findAppByRoles(String roles){
List<String> rolesList = StringUtil.strToStringList(roles);
UserBusinessExample example = new UserBusinessExample();
example.createCriteria().andKeyidIn(rolesList).andTypeEqualTo("RoleAPP")
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
List<UserBusiness> list = userBusinessMapper.selectByExample(example);
return list;
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int batchDeleteUserBusinessByIds(String ids) {
logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_USER_BUSINESS,
new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(),
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest());
User userInfo=userService.getCurrentUser();
String [] idArray=ids.split(",");
return userBusinessMapperEx.batchDeleteUserBusinessByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray);
}
/**
* 通过功能RoleFunctions权限更新应用RoleApp权限
* @param type
* @param keyId
* @param functionIds
* @return
*/
public int insertOrUpdateAppValue(String type, String keyId, String functionIds) {
int updates = 0;
functionIds = functionIds.replaceAll("\\]\\[", ",").
replaceAll("\\[","").replaceAll("\\]","");
List<Functions> functionsList = functionsService.findByIds(functionIds);
if (!CollectionUtils.isEmpty(functionsList)) {
Set<String> appNumbers = new HashSet<>();
String appNumber;
for (Functions functions : functionsList) {
appNumber = functions.getNumber().substring(0, 2);
appNumbers.add(appNumber);
}
List<String> appNumberList = new ArrayList<>(appNumbers);
List<App> appList = appService.findAppByNumber(appNumberList);
StringBuilder appIdSb = new StringBuilder();
if (!CollectionUtils.isEmpty(appList)) {
for (App app : appList) {
appIdSb.append("[" + app.getId() + "]");
}
List<UserBusiness> userBusinessList = getBasicData(keyId, type);
if(userBusinessList.size() > 0) {
UserBusiness userBusiness = userBusinessList.get(0);
userBusiness.setValue(appIdSb.toString());
updates = userBusinessMapper.updateByPrimaryKeySelective(userBusiness);
} else {
UserBusiness userBusiness = new UserBusiness();
userBusiness.setType(type);
userBusiness.setKeyid(keyId);
userBusiness.setValue(appIdSb.toString());
updates = userBusinessMapper.insertSelective(userBusiness);
}
}
}
return updates;
}
}