diff --git a/src/main/java/cn/lihongjie/coal/userPreference/controller/UserPreferenceController.java b/src/main/java/cn/lihongjie/coal/userPreference/controller/UserPreferenceController.java new file mode 100644 index 00000000..e01e4ece --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/controller/UserPreferenceController.java @@ -0,0 +1,77 @@ +package cn.lihongjie.coal.userPreference.controller; + +import cn.lihongjie.coal.annotation.OrgScope; +import cn.lihongjie.coal.annotation.SysLog; +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.userPreference.dto.CreateUserPreferenceDto; +import cn.lihongjie.coal.userPreference.dto.GetByCodeRequest; +import cn.lihongjie.coal.userPreference.dto.UpdateUserPreferenceDto; +import cn.lihongjie.coal.userPreference.dto.UserPreferenceDto; +import cn.lihongjie.coal.userPreference.service.UserPreferenceService; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +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; + +@RestController +@RequestMapping("/userPreference") +@SysLog(module = "用户偏好信息") +@Slf4j +@OrgScope +public class UserPreferenceController { + @Autowired private UserPreferenceService service; + + @PostMapping("/create") + public UserPreferenceDto create(@RequestBody CreateUserPreferenceDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public UserPreferenceDto update(@RequestBody UpdateUserPreferenceDto request) { + return this.service.update(request); + } + + /** + * 根据code更新, 如果不存在则创建 + * + * @param request + * @return + */ + @PostMapping("/updateByCode") + public UserPreferenceDto updateByCode(@RequestBody GetByCodeRequest request) { + return this.service.updateByCode(request); + } + + /** + * 根据code获取, 如果不存在则创建 + * + * @param request + * @return + */ + @PostMapping("/getByCode") + public Object getByCode(@RequestBody GetByCodeRequest request) { + return this.service.getByCode(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public UserPreferenceDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } +} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/dto/CreateUserPreferenceDto.java b/src/main/java/cn/lihongjie/coal/userPreference/dto/CreateUserPreferenceDto.java new file mode 100644 index 00000000..bf0b0205 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/dto/CreateUserPreferenceDto.java @@ -0,0 +1,11 @@ +package cn.lihongjie.coal.userPreference.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class CreateUserPreferenceDto extends OrgCommonDto { + + private String val; +} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/dto/GetByCodeRequest.java b/src/main/java/cn/lihongjie/coal/userPreference/dto/GetByCodeRequest.java new file mode 100644 index 00000000..4f1c74ec --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/dto/GetByCodeRequest.java @@ -0,0 +1,16 @@ +package cn.lihongjie.coal.userPreference.dto; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.util.*; + +@Data +public class GetByCodeRequest { + + String code; + + @Comment("默认值") + String val; +} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/dto/UpdateUserPreferenceDto.java b/src/main/java/cn/lihongjie/coal/userPreference/dto/UpdateUserPreferenceDto.java new file mode 100644 index 00000000..e562af53 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/dto/UpdateUserPreferenceDto.java @@ -0,0 +1,11 @@ +package cn.lihongjie.coal.userPreference.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class UpdateUserPreferenceDto extends OrgCommonDto { + private String val; + +} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/dto/UserPreferenceDto.java b/src/main/java/cn/lihongjie/coal/userPreference/dto/UserPreferenceDto.java new file mode 100644 index 00000000..fe293248 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/dto/UserPreferenceDto.java @@ -0,0 +1,9 @@ +package cn.lihongjie.coal.userPreference.dto; + +import lombok.Data; + +@Data +public class UserPreferenceDto { + private String code; + private String val; +} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/entity/UserPreferenceEntity.java b/src/main/java/cn/lihongjie/coal/userPreference/entity/UserPreferenceEntity.java new file mode 100644 index 00000000..7db0f8e6 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/entity/UserPreferenceEntity.java @@ -0,0 +1,15 @@ +package cn.lihongjie.coal.userPreference.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import jakarta.persistence.Entity; + +import lombok.Data; + +@Data +@Entity +public class UserPreferenceEntity extends OrgCommonEntity { + + private String val; + +} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/mapper/UserPreferenceMapper.java b/src/main/java/cn/lihongjie/coal/userPreference/mapper/UserPreferenceMapper.java new file mode 100644 index 00000000..d551004c --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/mapper/UserPreferenceMapper.java @@ -0,0 +1,23 @@ +package cn.lihongjie.coal.userPreference.mapper; + +import cn.lihongjie.coal.base.mapper.BaseMapper; +import cn.lihongjie.coal.base.mapper.CommonEntityMapper; +import cn.lihongjie.coal.base.mapper.CommonMapper; +import cn.lihongjie.coal.userPreference.dto.CreateUserPreferenceDto; +import cn.lihongjie.coal.userPreference.dto.UpdateUserPreferenceDto; +import cn.lihongjie.coal.userPreference.dto.UserPreferenceDto; +import cn.lihongjie.coal.userPreference.entity.UserPreferenceEntity; + +import org.mapstruct.Mapper; +import org.mapstruct.control.DeepClone; + +@Mapper( + componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class, CommonEntityMapper.class}, + mappingControl = DeepClone.class) +public interface UserPreferenceMapper + extends BaseMapper< + UserPreferenceEntity, + UserPreferenceDto, + CreateUserPreferenceDto, + UpdateUserPreferenceDto> {} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/repository/UserPreferenceRepository.java b/src/main/java/cn/lihongjie/coal/userPreference/repository/UserPreferenceRepository.java new file mode 100644 index 00000000..a1bb77ad --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/repository/UserPreferenceRepository.java @@ -0,0 +1,10 @@ +package cn.lihongjie.coal.userPreference.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.userPreference.entity.UserPreferenceEntity; + +import org.springframework.stereotype.Repository; + +@Repository +public interface UserPreferenceRepository extends BaseRepository { +} diff --git a/src/main/java/cn/lihongjie/coal/userPreference/service/UserPreferenceService.java b/src/main/java/cn/lihongjie/coal/userPreference/service/UserPreferenceService.java new file mode 100644 index 00000000..af301fa8 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/userPreference/service/UserPreferenceService.java @@ -0,0 +1,159 @@ +package cn.lihongjie.coal.userPreference.service; + +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.base.service.BaseService; +import cn.lihongjie.coal.common.Ctx; +import cn.lihongjie.coal.dbFunctions.DbFunctionService; +import cn.lihongjie.coal.userPreference.dto.CreateUserPreferenceDto; +import cn.lihongjie.coal.userPreference.dto.GetByCodeRequest; +import cn.lihongjie.coal.userPreference.dto.UpdateUserPreferenceDto; +import cn.lihongjie.coal.userPreference.dto.UserPreferenceDto; +import cn.lihongjie.coal.userPreference.entity.UserPreferenceEntity; +import cn.lihongjie.coal.userPreference.mapper.UserPreferenceMapper; +import cn.lihongjie.coal.userPreference.repository.UserPreferenceRepository; + +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Optional; + +@Service +@Slf4j +@Transactional +public class UserPreferenceService + extends BaseService { + @Autowired private UserPreferenceRepository repository; + + @Autowired private UserPreferenceMapper mapper; + + @Autowired private ConversionService conversionService; + + @Autowired private DbFunctionService dbFunctionService; + + public UserPreferenceDto create(CreateUserPreferenceDto request) { + UserPreferenceEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public UserPreferenceDto update(UpdateUserPreferenceDto request) { + + if (request.getId() == null) { + + + UserPreferenceEntity entity = new UserPreferenceEntity(); + entity.setCode(request.getCode()); + entity.setVal(request.getVal()); + + this.repository.save(entity); + return null; + } + + UserPreferenceEntity entity = this.repository.get(request.getId()); + this.mapper.updateEntity(entity, request); + + this.repository.save(entity); + + return getById(entity.getId()); + } + + public void delete(IdRequest request) { + this.repository.deleteAllById(request.getIds()); + } + + public UserPreferenceDto getById(String id) { + UserPreferenceEntity entity = repository.get(id); + + return mapper.toDto(entity); + } + + public UserPreferenceDto updateByCode(GetByCodeRequest request){ + + + Optional one = repository.findOne( + new Specification() { + @Override + public Predicate toPredicate( + Root root, + CriteriaQuery query, + CriteriaBuilder criteriaBuilder) { + return criteriaBuilder.and( + criteriaBuilder.equal(root.get("code"), request.getCode()), + criteriaBuilder.equal( + root.get("createUserId"), Ctx.currentUser().getId())); + } + }); + + if (one.isPresent()) { + UserPreferenceEntity userPreferenceEntity = one.get(); + userPreferenceEntity.setVal(request.getVal()); + this.repository.save(userPreferenceEntity); + UserPreferenceDto userPreferenceDto = mapper.toDto(userPreferenceEntity); + return userPreferenceDto; + }else { + UserPreferenceEntity entity = new UserPreferenceEntity(); + entity.setCode(request.getCode()); + entity.setVal(request.getVal()); + this.repository.save(entity); + return mapper.toDto(entity); + } + } + + public UserPreferenceDto getByCode(GetByCodeRequest request){ + + Optional one = repository.findOne( + new Specification() { + @Override + public Predicate toPredicate( + Root root, + CriteriaQuery query, + CriteriaBuilder criteriaBuilder) { + return criteriaBuilder.and( + criteriaBuilder.equal(root.get("code"), request.getCode()), + criteriaBuilder.equal( + root.get("createUserId"), Ctx.currentUser().getId())); + } + }); + + if (one.isPresent()) { + UserPreferenceEntity userPreferenceEntity = one.get(); + UserPreferenceDto userPreferenceDto = mapper.toDto(userPreferenceEntity); + return userPreferenceDto; + }else { + UserPreferenceEntity entity = new UserPreferenceEntity(); + entity.setCode(request.getCode()); + entity.setVal(request.getVal()); + this.repository.save(entity); + return mapper.toDto(entity); + } + + + } + + public Page list(CommonQuery query) { + Page page = + repository.findAll( + query.specification(conversionService), + PageRequest.of( + query.getPageNo(), + query.getPageSize(), + Sort.by(query.getOrders()))); + + return page.map(this.mapper::toDto); + } +} diff --git a/src/main/resources/scripts/dict/enum/userPreferenceDict.groovy b/src/main/resources/scripts/dict/enum/userPreferenceDict.groovy new file mode 100644 index 00000000..ee85d649 --- /dev/null +++ b/src/main/resources/scripts/dict/enum/userPreferenceDict.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.userPreference.controller.UserPreferenceController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(UserPreferenceController.class) + + + + +return controller.list(new CommonQuery()) + +