diff --git a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/utils/ValidatorsUtils.java b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/utils/ValidatorsUtils.java new file mode 100644 index 0000000..0864e5a --- /dev/null +++ b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/utils/ValidatorsUtils.java @@ -0,0 +1,100 @@ +package com.bonus.common.security.utils; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.validation.ConstraintViolation; +import javax.validation.Validator; +import java.util.List; +import java.util.Set; + +/** + * @description:
+ * 通用Server validation方法 + *

+ *
+ * @author: Qz1997 + * @create 2021/2/9 14:41 + */ +@SuppressWarnings("unused") +@Component(value = "ValidatorsUtils") +public final class ValidatorsUtils { + @Resource + private Validator validator; + + /** + * 验证实体 + * + * @param obj 实体 + * @param 实体类类型 + * @return 结果 + */ + public String valid(T obj) { + return this.valid(obj, new Class[]{}); + } + + /** + * 验证实体 + * + * @param obj 实体 + * @param group 实体组 + * @param 实体类类型 + * @return 结果 + */ + public String valid(T obj, Class... group) { + Set> violations; + if (ArrayUtils.isEmpty(group)) { + violations = validator.validate(obj); + } else { + violations = validator.validate(obj, group); + } + if (CollectionUtils.isNotEmpty(violations)) { + for (ConstraintViolation constraintViolation : violations) { + return constraintViolation.getMessage(); + } + } + return null; + } + + /** + * 校验list + * + * @param objList list + * @param 实体类类型 + * @return 结果 + */ + public String validList(List objList) { + return this.validList(objList, new Class[]{}); + } + + /** + * 校验list + * + * @param objList list + * @param group 组 + * @param 实体类类型 + * @return 结果 + */ + public String validList(List objList, Class... group) { + if (CollectionUtils.isEmpty(objList)) { + return "对象空"; + } + String result; + for (T t : objList) { + if (ArrayUtils.isEmpty(group)) { + result = this.valid(t); + } else { + result = this.valid(t, group); + } + if (!StringUtils.isBlank(result)) { + return result; + } + } + return null; + } +} + + diff --git a/bonus-common/bonus-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/bonus-common/bonus-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 2a8788a..0e1ed4c 100644 --- a/bonus-common/bonus-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/bonus-common/bonus-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -9,3 +9,4 @@ com.bonus.common.security.aspect.PreAuthorizeAspect com.bonus.common.security.aspect.InnerAuthAspect com.bonus.common.security.aspect.PreventRepeatSubmitAspect com.bonus.common.security.handler.GlobalExceptionHandler +com.bonus.common.security.utils.ValidatorsUtils diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/controller/UnitController.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/controller/UnitController.java new file mode 100644 index 0000000..012980c --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/controller/UnitController.java @@ -0,0 +1,71 @@ +package com.bonus.base.basic.controller; + +import com.bonus.base.basic.domain.BmProject; +import com.bonus.base.basic.domain.UnitVo; +import com.bonus.base.basic.service.IUnitService; +import com.bonus.base.common.annotation.PreventRepeatSubmit; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import com.bonus.common.security.annotation.RequiresPermissions; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @className:UnitController + * @author:cwchen + * @date:2025-04-10-10:22 + * @version:1.0 + * @description:单位管理-控制层 + */ +@Api(tags = "单位管理") +@RestController +@RequestMapping("/unit") +public class UnitController extends BaseController { + + @Resource(name = "IUnitService") + private IUnitService service; + + @ApiOperation(value = "查询单位数据") +// @RequiresPermissions("basic:unit:list") + @SysLog(title = "单位管理", businessType = OperaType.QUERY, logType = 1,module = "单位管理->查询单位数据") + @GetMapping("/queryUnitList") + public TableDataInfo queryUnitList(UnitVo vo) { + startPage(); + List list = service.queryUnitList(vo); + return getDataTable(list); + } + + @ApiOperation(value = "新增单位") +// @PreventRepeatSubmit +// @RequiresPermissions("basic:unit:add") + @SysLog(title = "单位管理", businessType = OperaType.INSERT, logType = 1,module = "单位管理->新增单位") + @PostMapping("addUnit") + public AjaxResult addUnit(@RequestBody UnitVo vo) { + return service.addUnit(vo); + } + + @ApiOperation(value = "修改单位") +// @PreventRepeatSubmit +// @RequiresPermissions("basic:unit:edit") + @SysLog(title = "单位管理", businessType = OperaType.UPDATE, logType = 1,module = "单位管理->修改单位") + @PostMapping("editUnit") + public AjaxResult editUnit(@RequestBody UnitVo vo) { + return service.editUnit(vo); + } + + @ApiOperation(value = "删除单位") +// @PreventRepeatSubmit +// @RequiresPermissions("basic:unit:del") + @SysLog(title = "单位管理", businessType = OperaType.UPDATE, logType = 1,module = "单位管理->删除单位") + @PostMapping("delUnit") + public AjaxResult delUnit(@RequestBody UnitVo vo) { + return service.delUnit(vo); + } +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/domain/UnitVo.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/domain/UnitVo.java new file mode 100644 index 0000000..87e53e1 --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/domain/UnitVo.java @@ -0,0 +1,101 @@ +package com.bonus.base.basic.domain; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; + +/** + * @className:SysUnitVo + * @author:cwchen + * @date:2025-04-10-9:44 + * @version:1.0 + * @description:参建单位-VO + */ +@Data +public class UnitVo { + + @NotBlank(message = "id不能为空", groups = {Edit.class,Del.class}) + private String id; + /** + * 单位名称 + */ + @NotBlank(message = "单位名称不能为空", groups = {Add.class, Edit.class}) + @Length(max = 64, message = "单位名称字符长度不能超过64", groups = {Add.class, Edit.class}) + private String unitName; + /** + * 单位类型 + */ + @NotBlank(message = "单位类型不能为空", groups = {Add.class, Edit.class}) + private String unitType; + /** + * 统一信用代码 + */ + @NotBlank(message = "统一信用代码不能为空", groups = {Add.class, Edit.class}) + @Length(max = 64, message = "统一信用代码字符长度不能超过64", groups = {Add.class, Edit.class}) + private String unitCode; + /** + * 联系人 + */ + @NotBlank(message = "联系人不能为空", groups = {Add.class, Edit.class}) + @Length(max = 32, message = "联系人字符长度不能超过32", groups = {Add.class, Edit.class}) + private String unitUser; + /** + * 联系电话 + */ + @NotBlank(message = "联系电话不能为空", groups = {Add.class, Edit.class}) + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "联系电话格式不正确", groups = {Add.class, Edit.class}) + private String unitPhone; + /** + * 法人姓名 + */ + @NotBlank(message = "法人姓名不能为空", groups = {Add.class, Edit.class}) + @Length(max = 32, message = "法人姓名字符长度不能超过32", groups = {Add.class, Edit.class}) + private String suffUser; + /** + * 法人手机号 + */ + @NotBlank(message = "法人手机号不能为空", groups = {Add.class, Edit.class}) + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "法人手机号格式不正确", groups = {Add.class, Edit.class}) + private String suffPhone; + /** + * 公司地址 + */ + @Length(max = 32, message = "公司地址字符长度不能超过32", groups = {Add.class, Edit.class}) + private String address; + /** + * 公司简介 + */ + @Length(max = 256, message = "公司简介字符长度不能超过256", groups = {Add.class, Edit.class}) + private String brief; + /** + * 公司成立日期 + */ + @NotBlank(message = "公司成立日期不能为空", groups = {Add.class, Edit.class}) + private String createDay; + /** + * 注册资本 + */ + @Length(max = 32, message = "注册资本字符长度不能超过32", groups = {Add.class, Edit.class}) + private String register; + + /** + * 新增条件限制 + */ + public interface Add { + } + + /** + * 修改条件限制 + */ + public interface Edit { + } + + /** + * 删除条件限制 + */ + public interface Del { + } +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/mapper/IUnitMapper.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/mapper/IUnitMapper.java new file mode 100644 index 0000000..6b3ea5d --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/mapper/IUnitMapper.java @@ -0,0 +1,48 @@ +package com.bonus.base.basic.mapper; + +import com.bonus.base.basic.domain.UnitVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @className:IUnitMapper + * @author:cwchen + * @date:2025-04-10-10:26 + * @version:1.0 + * @description:参建单位-数据层 + */ +@Repository(value = "IUnitMapper") +public interface IUnitMapper { + + /** + * 查询单位数据 + * + * @param vo + * @return List + * @author cwchen + * @date 2025/4/10 10:55 + */ + List queryUnitList(UnitVo vo); + + /** + * 查询字段是否重复 + * + * @param vo + * @return int + * @author cwchen + * @date 2025/4/10 13:36 + */ + int queryValueIsExist(@Param("params") UnitVo vo,@Param("value")String value, @Param("columnName") String columnName); + + /** + * 1.新增/2.修改/3.删除单位 + * @param vo + * @param type + * @return void + * @author cwchen + * @date 2025/4/10 13:53 + */ + void addOrUpdateUnit(@Param("params") UnitVo vo, @Param("type") int type); +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/IUnitService.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/IUnitService.java new file mode 100644 index 0000000..5cb6ef4 --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/IUnitService.java @@ -0,0 +1,51 @@ +package com.bonus.base.basic.service; + +import com.bonus.base.basic.domain.UnitVo; +import com.bonus.common.core.web.domain.AjaxResult; + +import java.util.List; + +/** + * @className:IUnitService + * @author:cwchen + * @date:2025-04-10-10:24 + * @version:1.0 + * @description:参建单位-业务层 + */ +public interface IUnitService { + /** + * 查询单位数据 + * @param vo + * @return List + * @author cwchen + * @date 2025/4/10 10:52 + */ + List queryUnitList(UnitVo vo); + + /** + * 新增单位 + * @param vo + * @return AjaxResult + * @author cwchen + * @date 2025/4/10 13:29 + */ + AjaxResult addUnit(UnitVo vo); + + /** + * 修改单位 + * @param vo + * @return AjaxResult + * @author cwchen + * @date 2025/4/10 14:00 + */ + AjaxResult editUnit(UnitVo vo); + + /** + * 删除单位 + * @param vo + * @return AjaxResult + * @author cwchen + * @date 2025/4/10 14:01 + */ + AjaxResult delUnit(UnitVo vo); +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/UnitServiceImpl.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/UnitServiceImpl.java new file mode 100644 index 0000000..459356a --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/UnitServiceImpl.java @@ -0,0 +1,114 @@ +package com.bonus.base.basic.service.impl; + +import com.bonus.base.basic.domain.UnitVo; +import com.bonus.base.basic.mapper.IUnitMapper; +import com.bonus.base.basic.service.IUnitService; +import com.bonus.common.core.utils.uuid.IdUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.security.utils.ValidatorsUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +/** + * @className:UnitServiceImpl + * @author:cwchen + * @date:2025-04-10-10:25 + * @version:1.0 + * @description:参建单位-业务逻辑层 + */ +@Service(value = "IUnitService") +@Slf4j +public class UnitServiceImpl implements IUnitService { + + @Resource(name = "IUnitMapper") + private IUnitMapper mapper; + + @Resource(name = "ValidatorsUtils") + private ValidatorsUtils validatorsUtils; + + @Override + public List queryUnitList(UnitVo vo) { + try { + List list = Optional.ofNullable(mapper.queryUnitList(vo)).orElseGet(ArrayList::new); + return list; + } catch (Exception e) { + log.error(e.toString(), e); + return new ArrayList(); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult addUnit(UnitVo vo) { + try { + // 校验必填数据 + String validResult = validatorsUtils.valid(vo, UnitVo.Add.class); + if (StringUtils.isNotBlank(validResult)) { + return AjaxResult.error(validResult); + } + // 校验公司名称是否重复 + int flag = mapper.queryValueIsExist(vo,vo.getUnitName(),"unit_name"); + if (flag > 0) return AjaxResult.error("公司名称已存在"); + // 校验统一信用代码是否重复 + int flag2 = mapper.queryValueIsExist(vo,vo.getUnitCode(),"unit_code"); + if (flag2 > 0) return AjaxResult.error("统一信用代码已存在"); + vo.setId(IdUtils.simpleUUID()); + mapper.addOrUpdateUnit(vo,1); + return AjaxResult.success(); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error(); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult editUnit(UnitVo vo) { + try { + // 校验必填数据 + String validResult = validatorsUtils.valid(vo, UnitVo.Edit.class); + if (StringUtils.isNotBlank(validResult)) { + return AjaxResult.error(validResult); + } + // 校验公司名称是否重复 + int flag = mapper.queryValueIsExist(vo,vo.getUnitName(),"unit_name"); + if (flag > 0) return AjaxResult.error("公司名称已存在"); + // 校验统一信用代码是否重复 + int flag2 = mapper.queryValueIsExist(vo,vo.getUnitCode(),"unit_code"); + if (flag2 > 0) return AjaxResult.error("统一信用代码已存在"); + mapper.addOrUpdateUnit(vo,2); + return AjaxResult.success(); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error(); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult delUnit(UnitVo vo) { + try { + // 校验必填数据 + String validResult = validatorsUtils.valid(vo, UnitVo.Del.class); + if (StringUtils.isNotBlank(validResult)) { + return AjaxResult.error(validResult); + } + mapper.addOrUpdateUnit(vo,3); + return AjaxResult.success(); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error(); + } + } +} diff --git a/bonus-modules/bonus-base/src/main/resources/mapper/smartsite/basic/UnitMapper.xml b/bonus-modules/bonus-base/src/main/resources/mapper/smartsite/basic/UnitMapper.xml new file mode 100644 index 0000000..e45887c --- /dev/null +++ b/bonus-modules/bonus-base/src/main/resources/mapper/smartsite/basic/UnitMapper.xml @@ -0,0 +1,92 @@ + + + + + + INSERT INTO tt_sys_unit + + id, + unit_name, + unit_type, + unit_code, + unit_user, + unit_phone, + suff_user, + suff_phone, + address, + brief, + create_day, + register, + + + #{params.id}, + #{params.unitName}, + #{params.unitType}, + #{params.unitCode}, + #{params.unitUser}, + #{params.unitPhone}, + #{params.suffUser}, + #{params.suffPhone}, + #{params.address}, + #{params.brief}, + #{params.createDay}, + #{params.register}, + + + + UPDATE tt_sys_unit + + unit_name = #{params.unitName}, + unit_type = #{params.unitType}, + unit_code = #{params.unitCode}, + unit_user = #{params.unitUser}, + unit_phone =#{params.unitPhone}, + suff_user = #{params.suffUser}, + suff_phone = #{params.suffPhone}, + address = #{params.address}, + brief = #{params.brief}, + create_day = #{params.createDay}, + register = #{params.register}, + + WHERE id = #{params.id} + + + UPDATE tt_sys_unit SET is_active = '0' WHERE id = #{params.id} + + + + + + + + \ No newline at end of file