Browse Source

用户绑定楼宇

master
review512jwy@163.com 3 months ago
parent
commit
46c8e3fc10
  1. 3
      model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_cn.yml
  2. 1
      model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_en.yml
  3. 3
      model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_jp.yml
  4. 5
      model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/configurator/interceptor/AccessApiInterceptor.java
  5. 14
      model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/controller/BuildingController.java
  6. 10
      model2d3d-viewer-back-controller/src/main/resources/config/application.properties
  7. 19
      model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/MyBatisPlusGenerator.java
  8. 17
      model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/auto/UserBuildingRelationMapper.java
  9. 4
      model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/BasicBuildingMapperExt.java
  10. 11
      model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/UserBuildingRelationMapperExt.java
  11. 3
      model2d3d-viewer-back-dao/src/main/resources/mappers/auto/BasicCompanyMapper.xml
  12. 17
      model2d3d-viewer-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml
  13. 35
      model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicBuildingMapperExt.xml
  14. 19
      model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
  15. 2
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/BuildingSearchParams.java
  16. 2
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/DeleteBuildingParams.java
  17. 5
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/OptBuildingParams.java
  18. 5
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/company/OptCompanyParams.java
  19. 9
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/user/OptUserParam.java
  20. 4
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicBuilding.java
  21. 4
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicCompany.java
  22. 34
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/UserBuildingRelation.java
  23. 5
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/building/BuildingPageVO.java
  24. 6
      model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/user/UserPageDTO.java
  25. 1
      model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/BuildingService.java
  26. 2
      model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/common/CommonOpt.java
  27. 2
      model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/AccountServiceImpl.java
  28. 32
      model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/BuildingServiceImpl.java
  29. 14
      model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/CompanyServiceImpl.java
  30. 17
      model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/RoleServiceImpl.java
  31. 65
      model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/UserServiceImpl.java
  32. 11
      model2d3d-viewer-back-util/src/main/java/com/model2d3d/viewer/back/util/CommonUtil.java

3
model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_cn.yml

@ -36,4 +36,5 @@ msgcn:
oldPwdError: 旧密码错误
newPwdSameOld: 新密码不得与旧密码相同
companyLimit: 最多可创建15个企业
buildingNameHasExisted: 楼宇已存在
buildingNameHasExisted: 楼宇名称已存在
buildingUidHasExisted: 楼宇记号已存在

1
model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_en.yml

@ -37,3 +37,4 @@ msgen:
newPwdSameOld: 新密码不得与旧密码相同
companyLimit: 最多可创建15个企业
buildingNameHasExisted: Building already exists.
buildingUidHasExisted: 楼宇记号已存在

3
model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_jp.yml

@ -36,4 +36,5 @@ msgjp:
oldPwdError: 旧パスワードエラー
newPwdSameOld: 注:旧パスワードと同じものを使用しないでください
companyLimit: 最大15のエンタープライズを作成可能
buildingNameHasExisted: 当該ビルは既に存在しています。
buildingNameHasExisted: 該当ビル名がすでにある
buildingUidHasExisted: 楼宇记号已存在

5
model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/configurator/interceptor/AccessApiInterceptor.java

@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONObject;
import com.model2d3d.viewer.back.common.response.ResponseCode;
import com.model2d3d.viewer.back.service.AccountService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -13,8 +15,6 @@ import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
public class AccessApiInterceptor implements HandlerInterceptor {
@ -27,6 +27,7 @@ public class AccessApiInterceptor implements HandlerInterceptor {
@Autowired
private AccountService accountService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;

14
model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/controller/BuildingController.java

@ -16,6 +16,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import java.io.FileNotFoundException;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
@ -61,7 +62,6 @@ public class BuildingController {
* @param LanguageType language type (0: Chinese, 1: English, 2: Japanese)
* @return a SimpleDataResponse indicating the result of the add operation
*/
@AccessRequired
@Operation(summary = "Add a building")
@RequestMapping(value = "/add", method = RequestMethod.POST)
public SimpleDataResponse add(
@ -149,4 +149,16 @@ public class BuildingController {
return pageResponse;
}
@Operation(summary = "Get buildings bound to the user", description = "获取用户绑定的楼宇")
@RequestMapping(value = "/getBoundBuildings", method = RequestMethod.POST)
public SimpleDataResponse<List<BuildingPageVO>> getBoundBuildings(
@Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required = true) String LoginName,
@Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required = true) String AccessToken,
@Parameter(name="UserId",description="用户ID",required=true,schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) String UserId,
@Parameter(name="CompanyId",description="所属企业ID",required=false,schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) String CompanyId,
@Parameter(name = "LanguageType", description = "Language type", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required = true) Integer LanguageType) {
return buildingService.getBoundBuildings(UserId, CompanyId, LanguageType);
}
}

10
model2d3d-viewer-back-controller/src/main/resources/config/application.properties

@ -70,15 +70,15 @@ spring.redis.lettuce.shutdown-timeout=100
#邮件发送信息
mail.smtp.host=email-smtp.ap-northeast-1.amazonaws.com
mail.smtp.host=smtp.163.com
mail.smtp.port=465
mail.smtp.auth=true
mail.smtp.ssl=true
mail.sender.username=AKIAVRXFMB43Z4Q6WGZN
mail.sender.username=style202206@163.com
mail.sender.password_encrypted=true
mail.sender.password=a/52R0rao7ksRMvl1j17fVEmPCw7gC9OreHDqWOE+S7sgmoQT0YgoLRJqOlJqX7e
mail.sender.sendername=datacenter-info
mail.sender.from=alert@ttkdatatechbuild.com
mail.sender.password=hVndud7spllTv1zuqPHPBSOk5mmvtET+
mail.sender.sendername=admin
mail.sender.from=style202206@163.com
#邮件通知服务开关
mail.send.switch=true

19
model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/MyBatisPlusGenerator.java

@ -53,15 +53,19 @@ public class MyBatisPlusGenerator {
"login_history",
"basic_menu"
);
// uuid算法主键的表
// 雪花算法主键的表
List<String> assignIdTables = Arrays.asList(
"basic_building",
"basic_building"
);
// uuid算法主键的表
List<String> assignUUIdTables = Arrays.asList(
"basic_role",
"basic_company",
"basic_user"
);
// 没有主键的表
List<String> noIdTables = Arrays.asList(
"user_building_relation",
"basic_role_menu_relation",
"basic_role_user_relation"
);
@ -71,10 +75,13 @@ public class MyBatisPlusGenerator {
autoIncrementTables, IdType.AUTO);
generateForTables(dataSourceConfig, globalConfig, packageConfig,
assignIdTables, IdType.ASSIGN_UUID);
assignIdTables, IdType.ASSIGN_ID);
generateForTables(dataSourceConfig, globalConfig, packageConfig,
assignUUIdTables, IdType.ASSIGN_UUID);
generateForTables(dataSourceConfig, globalConfig, packageConfig,
noIdTables, IdType.NONE);
noIdTables, null);
}
private static void generateForTables(DataSourceConfig dataSourceConfig,
@ -82,6 +89,10 @@ public class MyBatisPlusGenerator {
PackageConfig packageConfig,
List<String> tables,
IdType idType) {
if (tables == null || tables.isEmpty()){
System.out.println("表名不能为空");
return;
}
StrategyConfig strategyConfig = GeneratorBuilder.strategyConfigBuilder()
.addInclude(tables)

17
model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/auto/UserBuildingRelationMapper.java

@ -0,0 +1,17 @@
package com.model2d3d.viewer.back.dao.auto;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.model2d3d.viewer.back.model.UserBuildingRelation;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jwy
* @since
*/
public interface UserBuildingRelationMapper extends BaseMapper<UserBuildingRelation> {
}

4
model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/BasicBuildingMapperExt.java

@ -21,7 +21,9 @@ import java.util.Map;
@Mapper
public interface BasicBuildingMapperExt extends BasicBuildingMapper {
int checkExist(OptBuildingParams optBuildingParams);
Map<String, String> checkExist(OptBuildingParams optBuildingParams);
IPage<BuildingPageVO> getListPage(Page page, @Param("params") BuildingSearchParams pageSearchParam);
List<BuildingPageVO> getBoundBuildings(@Param("userId") String userId);
}

11
model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/UserBuildingRelationMapperExt.java

@ -0,0 +1,11 @@
package com.model2d3d.viewer.back.dao.ex;
import com.model2d3d.viewer.back.dao.auto.UserBuildingRelationMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.Map;
@Mapper
public interface UserBuildingRelationMapperExt extends UserBuildingRelationMapper {
}

3
model2d3d-viewer-back-dao/src/main/resources/mappers/auto/BasicCompanyMapper.xml

@ -10,11 +10,12 @@
<result column="flag" property="flag" />
<result column="create_time" property="createTime" />
<result column="modify_time" property="modifyTime" />
<result column="apikey" property="apikey" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, parent_id, company_name, flag, create_time, modify_time
id, parent_id, company_name, flag, create_time, modify_time, apikey
</sql>
</mapper>

17
model2d3d-viewer-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.model2d3d.viewer.back.dao.auto.UserBuildingRelationMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.model2d3d.viewer.back.model.UserBuildingRelation">
<result column="user_id" property="userId" />
<result column="building_id" property="buildingId" />
<result column="create_time" property="createTime" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
user_id, building_id, create_time
</sql>
</mapper>

35
model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicBuildingMapperExt.xml

@ -3,9 +3,12 @@
<mapper namespace="com.model2d3d.viewer.back.dao.ex.BasicBuildingMapperExt">
<select id="checkExist" resultType="java.lang.Integer">
<select id="checkExist" resultType="java.util.Map">
SELECT
COUNT(1)
CASE
WHEN name = #{buildingName} THEN 'buildingName'
WHEN unique_identification = #{uniqueIdentification} THEN 'uniqueIdentification'
END AS conflict_field
FROM
basic_building
WHERE
@ -26,7 +29,8 @@
bbuilding.name buildingName,
bbuilding.address,
bbuilding.unique_identification,
bbuilding.dimensional_url
bbuilding.dimensional_url,
bcomp.company_name
FROM
basic_building bbuilding
INNER JOIN basic_company bcomp ON bcomp.id = bbuilding.company_id
@ -39,6 +43,31 @@
<if test="params.buildingName != null">
AND bbuilding.name LIKE CONCAT('%',#{params.buildingName},'%')
</if>
ORDER BY bbuilding.create_time DESC, bbuilding.building_id
</select>
<select id="getBoundBuildings" resultType="com.model2d3d.viewer.back.vo.building.BuildingPageVO">
SELECT
bbuilding.building_id buildingId,
bbuilding.company_id companyId,
bbuilding.name buildingName,
bbuilding.address,
bbuilding.unique_identification,
bbuilding.dimensional_url,
bcomp.company_name
FROM
basic_building bbuilding
<if test='userId != null and !"1".equals(userId)'>
INNER JOIN user_building_relation ubr ON ubr.building_id = bbuilding.building_id
</if>
INNER JOIN basic_company bcomp ON bcomp.id = bbuilding.company_id
WHERE
bbuilding.flag != 1 AND bcomp.flag != 1
<if test='userId != null and !"1".equals(userId)'>
AND ubr.user_id = #{userId}
</if>
ORDER BY bbuilding.create_time DESC, bbuilding.building_id
</select>

19
model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml

@ -26,12 +26,27 @@
buser.mobile_number mobileNumber,
buser.create_time createTime,
any_value(brole.id) roleId,
any_value(brole.role_name) roleName
any_value(brole.role_name) roleName,
ubrelation.buildingIds,
ubrelation.buildingNames
FROM
basic_user buser
INNER JOIN basic_company bcom ON buser.company_id = bcom.id
INNER JOIN basic_role_user_relation brur ON brur.user_id = buser.id
INNER JOIN basic_role brole ON brur.role_id = brole.id
LEFT JOIN
(
SELECT
user_building_relation.user_id,
GROUP_CONCAT(user_building_relation.building_id SEPARATOR ',') AS buildingIds,
GROUP_CONCAT(basic_building.name SEPARATOR ',') AS buildingNames
FROM
user_building_relation
INNER JOIN basic_building ON basic_building.building_id = user_building_relation.building_id
WHERE basic_building.flag != 1
GROUP BY
user_building_relation.user_id
) ubrelation ON buser.id = ubrelation.user_id
WHERE
buser.flag != 1 AND brole.flag != 1 AND buser.company_id IN <foreach collection="params.companyIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
<if test="params.userId != null">
@ -53,7 +68,7 @@
GROUP_CONCAT(bmenu.id)
FROM
<choose>
<when test="userId != null and userId == 1">
<when test='userId != null and "1".equals(userId)'>
basic_menu bmenu WHERE bmenu.flag != 1
</when>
<otherwise>

2
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/BuildingSearchParams.java

@ -20,6 +20,6 @@ public class BuildingSearchParams extends BaseSearchParams {
private String buildingIds;
@Schema(description ="Building IDs", hidden = true)
private List<String> buildingIdList;
private List<Long> buildingIdList;
}

2
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/DeleteBuildingParams.java

@ -15,6 +15,6 @@ public class DeleteBuildingParams{
@NotEmpty(message = "1001")
@Schema(description ="Building IDs, array", example = "[\"acbdef2738967\",\"abcc556587\"]")
private List<String> buildingIds;
private List<Long> buildingIds;
}

5
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/OptBuildingParams.java

@ -13,9 +13,10 @@ import org.hibernate.validator.constraints.Length;
public class OptBuildingParams{
@Schema(description ="Building unique identifier ID, not required for new additions", example = "2738967")
private String buildingId;
private Long buildingId;
@Schema(description ="Company ID", example = "2738967", hidden = true)
@NotBlank(message = "1001")
@Schema(description ="Company ID", example = "2738967")
private String companyId;
@NotBlank(message = "1001")

5
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/company/OptCompanyParams.java

@ -24,5 +24,10 @@ public class OptCompanyParams{
@Schema(description ="企业名称",example = "testAccount1", required = true)
private String companyName;
@NotBlank(message = "1001")
@Length(max = 255,message = "1002")
@Schema(description ="apikey",example = "173976ba6fe9598dabc76", required = true)
private String apikey;
}

9
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/user/OptUserParam.java

@ -3,10 +3,13 @@ package com.model2d3d.viewer.back.dto.user;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Length;
import java.util.List;
/**
* @author zhc
* @time 2022年6月14日10:56:38
@ -37,8 +40,12 @@ public class OptUserParam {
@Schema(description ="手机号码,这里要加上国际区号,比如日本是+81,传给后台的就是+81-08041165856,中国是+86,传给后台的就是+86-18841165856",example = "+81-08041165856", required = false)
private String mobileNumber;
@Schema(description ="所属企业ID",example = "2", hidden = true)
@NotBlank(message = "1001")
@Schema(description ="所属企业ID",example = "2")
private String companyId;
@Schema(description ="Building IDs, array", example = "[11111,2222222]")
private List<Long> buildingIds;
}

4
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicBuilding.java

@ -17,9 +17,9 @@ import java.io.Serializable;
@Schema(description = "楼宇表")
public class BasicBuilding implements Serializable {
@TableId(value = "building_id", type = IdType.ASSIGN_UUID)
@TableId(value = "building_id", type = IdType.ASSIGN_ID)
@Schema(description = "")
private String buildingId;
private Long buildingId;
@TableField("company_id")

4
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicCompany.java

@ -42,5 +42,9 @@ public class BasicCompany implements Serializable {
@Schema(description = "")
private Long modifyTime;
@TableField("apikey")
@Schema(description = "")
private String apikey;
}

34
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/UserBuildingRelation.java

@ -0,0 +1,34 @@
package com.model2d3d.viewer.back.model;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("user_building_relation")
@Schema(description = "")
public class UserBuildingRelation implements Serializable {
@TableField("user_id")
@Schema(description = "")
private String userId;
@TableField("building_id")
@Schema(description = "")
private Long buildingId;
@TableField("create_time")
@Schema(description = "")
private Long createTime;
}

5
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/building/BuildingPageVO.java

@ -15,9 +15,12 @@ public class BuildingPageVO{
@Schema(description ="Building unique identifier ID, not required for new additions", example = "2738967")
private String buildingId;
@Schema(description ="Company ID", example = "2738967", hidden = true)
@Schema(description ="Company ID", example = "2738967", required = true)
private String companyId;
@Schema(description ="Company name", example = "testCompany", required = true)
private String companyName;
@Schema(description ="Building name", example = "testBuilding1", required = true)
private String buildingName;

6
model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/user/UserPageDTO.java

@ -40,4 +40,10 @@ public class UserPageDTO {
@Schema(description ="创建时间",example = "1678990326897", required = false)
private Long createTime;
@Schema(description ="绑定的楼宇id",example = "1111,222222")
private String buildingIds;
@Schema(description ="绑定的楼宇名称",example = "1111name,222222name")
private String buildingNames;
}

1
model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/BuildingService.java

@ -27,4 +27,5 @@ public interface BuildingService {
IPage<BuildingPageVO> getListPage(BuildingSearchParams pageSearchParam, String companyId, String userId,
Integer languageType, Integer uTCOffset);
SimpleDataResponse<List<BuildingPageVO>> getBoundBuildings(String userId, String companyId, Integer languageType);
}

2
model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/common/CommonOpt.java

@ -65,7 +65,7 @@ public class CommonOpt {
public List<String> filterCompanyIds(String targetCompanyId, String needProcessedCompanyIds) {
List<String> selfAndSubCompanyList = getSelfAndSubCompanyId(targetCompanyId);
if (StringUtils.isNotBlank(needProcessedCompanyIds)) {
List<String> needProcessedCompanyIdList = CommonUtil.commaStr2LongList(needProcessedCompanyIds);
List<String> needProcessedCompanyIdList = CommonUtil.commaStr2StrList(needProcessedCompanyIds);
return needProcessedCompanyIdList.stream().filter(selfAndSubCompanyList::contains).collect(Collectors.toList());
}
return null;

2
model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/AccountServiceImpl.java

@ -223,7 +223,7 @@ public class AccountServiceImpl implements AccountService {
// logger.info("Parameter [captcha] check failed.");
// }
if (ValidatorUtil.validParameterAlert(loginParam.getLoginname(), "loginname", true, 1, 20, 4, errorMap) > 0) {
if (ValidatorUtil.validParameterAlert(loginParam.getLoginname(), "loginname", true, 1, 50, 4, errorMap) > 0) {
logger.info("Parameter [account] check failed.");
}
if (ValidatorUtil.validParameterAlert(loginParam.getPassword(), "password", true, 1, 20, 4, errorMap) > 0) {

32
model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/BuildingServiceImpl.java

@ -27,6 +27,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map;
/**
*
* @author jwy-style
@ -67,7 +70,7 @@ public class BuildingServiceImpl implements BuildingService {
try {
// Check company association to prevent unauthorized operations on other companies' data
// if (ObjectUtils.isEmpty(optBuildingParams.getCompanyId())) {
optBuildingParams.setCompanyId(companyId);
// optBuildingParams.setCompanyId(companyId);
// } else {
// checkCompany(optBuildingParams, languageType, companyId);
// }
@ -81,7 +84,6 @@ public class BuildingServiceImpl implements BuildingService {
long currentUnix = System.currentTimeMillis();
BasicBuilding basicBuilding = new BasicBuilding();
BeanUtils.copyProperties(optBuildingParams, basicBuilding);
basicBuilding.setCompanyId(companyId);
basicBuilding.setBuildingId(null); // Ensure buildingId is null for new entity creation
basicBuilding.setName(optBuildingParams.getBuildingName());
basicBuilding.setCreateTime(currentUnix);
@ -109,16 +111,17 @@ public class BuildingServiceImpl implements BuildingService {
checkExist(optBuildingParams, languageType);
}
/**
* Checks if a building with the same name already exists in the database.
* Throws a MsgCodeException if the building name is already taken.
*
* @param optBuildingParams The parameters for creating the building.
* @param languageType The language type for error messages.
*/
private void checkExist(OptBuildingParams optBuildingParams, Integer languageType) {
if (basicBuildingMapperExt.checkExist(optBuildingParams) > 0) {
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "buildingNameHasExisted"));
Map<String, String> result = basicBuildingMapperExt.checkExist(optBuildingParams);
if (result != null && result.containsKey("conflict_field")) {
String conflictField = result.get("conflict_field");
switch (conflictField) {
case "buildingName":
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "buildingNameHasExisted"));
case "uniqueIdentification":
throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "buildingUidHasExisted"));
}
}
}
@ -143,6 +146,7 @@ public class BuildingServiceImpl implements BuildingService {
LambdaUpdateWrapper<BasicBuilding> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BasicBuilding::getBuildingId, optBuildingParams.getBuildingId())
.set(BasicBuilding::getCompanyId, optBuildingParams.getCompanyId())
.set(BasicBuilding::getName, optBuildingParams.getBuildingName())
.set(BasicBuilding::getAddress, optBuildingParams.getAddress())
.set(BasicBuilding::getUniqueIdentification, optBuildingParams.getUniqueIdentification())
@ -204,5 +208,11 @@ public class BuildingServiceImpl implements BuildingService {
return basicBuildingMapperExt.getListPage(page, pageSearchParam);
}
@Override
public SimpleDataResponse<List<BuildingPageVO>> getBoundBuildings(String userId, String companyId, Integer languageType) {
List<BuildingPageVO> result = basicBuildingMapperExt.getBoundBuildings(userId);
return SimpleDataResponse.success(result);
}
}

14
model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/CompanyServiceImpl.java

@ -187,12 +187,14 @@ public class CompanyServiceImpl implements CompanyService {
if (200 != checkExistResult.getCode()) {
return checkExistResult;
}
BasicCompany basicCompany = new BasicCompany();
BeanUtils.copyProperties(optCompanyParams,basicCompany);
basicCompany.setId(optCompanyParams.getCompanyId());
basicCompany.setParentId(null);
basicCompany.setModifyTime(System.currentTimeMillis());
basicCompanyMapperExt.updateById(basicCompany);
LambdaUpdateWrapper<BasicCompany> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BasicCompany::getId, optCompanyParams.getCompanyId())
// .set(BasicCompany::getParentId, optCompanyParams.getParentId())
.set(BasicCompany::getCompanyName, optCompanyParams.getCompanyName())
.set(BasicCompany::getApikey, optCompanyParams.getApikey())
.set(BasicCompany::getModifyTime, System.currentTimeMillis());
basicCompanyMapperExt.update(null, updateWrapper);
return SimpleDataResponse.success();
} catch (Exception e) {

17
model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/RoleServiceImpl.java

@ -142,14 +142,17 @@ public class RoleServiceImpl implements RoleService {
}
long currentUnix = System.currentTimeMillis();
BasicRole basicRole = new BasicRole();
BeanUtils.copyProperties(param, basicRole);
basicRole.setId(param.getRoleId());
basicRole.setModifierId(userId);
basicRole.setModifyTime(currentUnix);
basicRoleMapperExt.updateById(basicRole);
insertRoleMenuRelation(userId, currentUnix, basicRole.getId(), param.getMenuIds());
LambdaUpdateWrapper<BasicRole> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BasicRole::getId, param.getRoleId())
.set(BasicRole::getCompanyId, param.getCompanyId())
.set(BasicRole::getRoleName, param.getRoleName())
.set(BasicRole::getDescription, param.getDescription())
.set(BasicRole::getModifierId, userId)
.set(BasicRole::getModifyTime, currentUnix);
basicRoleMapperExt.update(null, updateWrapper);
insertRoleMenuRelation(userId, currentUnix, param.getRoleId(), param.getMenuIds());
return SimpleDataResponse.success();
} catch (Exception e) {

65
model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/UserServiceImpl.java

@ -11,6 +11,7 @@ import com.model2d3d.viewer.back.common.response.SimpleDataResponse;
import com.model2d3d.viewer.back.dao.ex.BasicCompanyMapperExt;
import com.model2d3d.viewer.back.dao.ex.BasicRoleUserRelationMapperExt;
import com.model2d3d.viewer.back.dao.ex.BasicUserMapperExt;
import com.model2d3d.viewer.back.dao.ex.UserBuildingRelationMapperExt;
import com.model2d3d.viewer.back.dto.user.DeleteUserParam;
import com.model2d3d.viewer.back.dto.user.ModifyPassword;
import com.model2d3d.viewer.back.dto.user.OptUserParam;
@ -28,6 +29,7 @@ import com.model2d3d.viewer.back.vo.company.CompanyPageDTO;
import com.model2d3d.viewer.back.vo.user.UserPageDTO;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@ -72,6 +74,8 @@ public class UserServiceImpl implements UserService {
private MsgLanguageChange msgLanguageChange;
@Autowired
private BasicCompanyMapperExt basicCompanyMapperExt;
@Autowired
private UserBuildingRelationMapperExt userBuildingRelationMapperExt;
@Override
@ -82,7 +86,7 @@ public class UserServiceImpl implements UserService {
param.setLoginName(param.getUsername());
// }
// if (!"1".equals(companyId)) {//非顶级账号
param.setCompanyId(companyId);
// param.setCompanyId(companyId);
// } else if (null == param.getCompanyId()) {//admin账号必须能选择企业归属
// return new SimpleDataResponse(ResponseCode.MSG_ERROR, "companyId is required");
// }
@ -114,6 +118,8 @@ public class UserServiceImpl implements UserService {
insertUserRoleRelation(userId, currentUnix, basicUser.getId(), param.getRoleId());
insertUserBuildingRelation(userId, currentUnix, basicUser.getId(), param.getBuildingIds());
BasicCompany basicCompany = basicCompanyMapperExt.selectById(basicUser.getCompanyId());
//邮箱通知密码
@ -132,6 +138,26 @@ public class UserServiceImpl implements UserService {
}
}
private void insertUserBuildingRelation(String creatorId, long currentUnix, String userId, List<Long> buildingIds) {
// 先删除原有的关联关系
if (userId != null) {
userBuildingRelationMapperExt.delete(new LambdaQueryWrapper<UserBuildingRelation>()
.eq(UserBuildingRelation::getUserId, userId));
}
// 重新插入关联关系
if (Objects.nonNull(userId) && CollectionUtils.isNotEmpty(buildingIds)) {
List<UserBuildingRelation> userBuildingRelationList = new ArrayList<>();
for (Long buildingId : buildingIds){
UserBuildingRelation userBuildingRelation = new UserBuildingRelation();
userBuildingRelation.setBuildingId(buildingId);
userBuildingRelation.setUserId(userId);
userBuildingRelation.setCreateTime(currentUnix);
userBuildingRelationList.add(userBuildingRelation);
}
userBuildingRelationMapperExt.insert(userBuildingRelationList);
}
}
private void insertUserRoleRelation(String creatorId, long currentUnix, String userId, String roleId) {
// 先删除原有的关联关系
@ -180,11 +206,11 @@ public class UserServiceImpl implements UserService {
// if (StringUtils.isBlank(param.getLoginName())) {
param.setLoginName(param.getUsername());
// }
if (!"1".equals(companyId)) {//非顶级账号
param.setCompanyId(companyId);
} else if (null == param.getCompanyId()) {//admin账号必须能选择企业归属
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "companyId is required");
}
// if (!"1".equals(companyId)) {//非顶级账号
// param.setCompanyId(companyId);
// } else if (null == param.getCompanyId()) {//admin账号必须能选择企业归属
// return new SimpleDataResponse(ResponseCode.MSG_ERROR, "companyId is required");
// }
//校验参数
SimpleDataResponse checkResult = checkParam(param, languageType);
if (200 != checkResult.getCode()) {
@ -212,19 +238,22 @@ public class UserServiceImpl implements UserService {
return new SimpleDataResponse(ResponseCode.MSG_ERROR, msgLanguageChange.getParameterMapByCode(languageType, "loginNameOrEmailHasExisted"));
}
long currentUnix = System.currentTimeMillis();
BasicUser basicUser = new BasicUser();
BeanUtils.copyProperties(param, basicUser);
basicUser.setId(param.getUserId());
basicUser.setModifierId(userId);
basicUser.setModifyTime(currentUnix);
// basicUser.setCompanyId(companyId);
if (StringUtils.isBlank(param.getMobileNumber())) {
basicUser.setMobileNumber("");
}
basicUserMapperExt.updateById(basicUser);
long currentUnix = System.currentTimeMillis();
insertUserRoleRelation(userId, currentUnix, basicUser.getId(), param.getRoleId());
LambdaUpdateWrapper<BasicUser> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BasicUser::getId, param.getUserId())
.set(BasicUser::getCompanyId, param.getCompanyId())
.set(BasicUser::getUsername, param.getUsername())
.set(BasicUser::getLoginName, param.getLoginName())
.set(BasicUser::getEmail, param.getEmail())
.set(BasicUser::getMobileNumber, param.getMobileNumber())
.set(BasicUser::getModifierId, userId)
.set(BasicUser::getModifyTime, currentUnix);
basicUserMapperExt.update(null, updateWrapper);
insertUserRoleRelation(userId, currentUnix, param.getUserId(), param.getRoleId());
insertUserBuildingRelation(userId, currentUnix, param.getUserId(), param.getBuildingIds());
return SimpleDataResponse.success();
} catch (Exception e) {

11
model2d3d-viewer-back-util/src/main/java/com/model2d3d/viewer/back/util/CommonUtil.java

@ -728,7 +728,16 @@ public class CommonUtil {
}
}
public static List<String> commaStr2LongList(String commaStr) {
public static List<Long> commaStr2LongList(String commaStr) {
if (StringUtils.isBlank(commaStr)) {
return Collections.emptyList(); // 如果字符串为空或为null,返回空列表
}
return Arrays.stream(commaStr.split(","))
.map(Long::parseLong) // 将每个字符串转换为 Long
.collect(Collectors.toList()); // 收集为 List<Long>
}
public static List<String> commaStr2StrList(String commaStr) {
if (StringUtils.isBlank(commaStr)) {
return Collections.emptyList(); // 如果字符串为空或为null,返回空列表
}

Loading…
Cancel
Save