Browse Source

try adding the CommonField object, added the application-prod.yml for production deploy, the local deploy disabled SSL

master
[email protected] 1 month ago
parent
commit
3df3a26e25
8 changed files with 629 additions and 1 deletions
  1. +155
    -0
      src/main/java/com/ffii/lioner/modules/lioner/commonField/entity/CommonField.java
  2. +6
    -0
      src/main/java/com/ffii/lioner/modules/lioner/commonField/entity/CommonFieldRepository.java
  3. +138
    -0
      src/main/java/com/ffii/lioner/modules/lioner/commonField/req/UpdateCommonFieldReq.java
  4. +155
    -0
      src/main/java/com/ffii/lioner/modules/lioner/commonField/service/CommonFieldService.java
  5. +100
    -0
      src/main/java/com/ffii/lioner/modules/lioner/commonField/web/CommonFieldController.java
  6. +46
    -0
      src/main/resources/application-prod.yml
  7. +1
    -1
      src/main/resources/application.yml
  8. +28
    -0
      src/main/resources/db/changelog/changes/06_commonField/01_add_common_field_table.sql

+ 155
- 0
src/main/java/com/ffii/lioner/modules/lioner/commonField/entity/CommonField.java View File

@@ -0,0 +1,155 @@
package com.ffii.lioner.modules.lioner.commonField.entity;

import com.ffii.core.entity.BaseEntity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;

/** @author Vin Luk */
@Entity
@Table(name = "common_field")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class CommonField extends BaseEntity<Long>{
//FNA
@NotNull
@Column
private Long clientId;

@Column
private String name;
@Column
private String dateOfBirth;

@Column
private String idCard;
@Column
private String occupation;

//IDA
@Column
private String firstName;

@Column
private String givenName;

@Column
private String genderMale;

@Column
private String genderFemale;
@Column
private String ddDateOfBirth;

@Column
private String mmDateOfBirth;

@Column
private String yyyyDateOfBirth;

public Long getClientId() {
return clientId;
}

public void setClientId(Long clientId) {
this.clientId = clientId;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDateOfBirth() {
return dateOfBirth;
}

public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}

public String getIdCard() {
return idCard;
}

public void setIdCard(String idCard) {
this.idCard = idCard;
}

public String getOccupation() {
return occupation;
}

public void setOccupation(String occupation) {
this.occupation = occupation;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getGivenName() {
return givenName;
}

public void setGivenName(String givenName) {
this.givenName = givenName;
}

public String getGenderMale() {
return genderMale;
}

public void setGenderMale(String genderMale) {
this.genderMale = genderMale;
}

public String getGenderFemale() {
return genderFemale;
}

public void setGenderFemale(String genderFemale) {
this.genderFemale = genderFemale;
}

public String getDdDateOfBirth() {
return ddDateOfBirth;
}

public void setDdDateOfBirth(String ddDateOfBirth) {
this.ddDateOfBirth = ddDateOfBirth;
}

public String getMmDateOfBirth() {
return mmDateOfBirth;
}

public void setMmDateOfBirth(String mmDateOfBirth) {
this.mmDateOfBirth = mmDateOfBirth;
}

public String getYyyyDateOfBirth() {
return yyyyDateOfBirth;
}

public void setYyyyDateOfBirth(String yyyyDateOfBirth) {
this.yyyyDateOfBirth = yyyyDateOfBirth;
}

}


+ 6
- 0
src/main/java/com/ffii/lioner/modules/lioner/commonField/entity/CommonFieldRepository.java View File

@@ -0,0 +1,6 @@
package com.ffii.lioner.modules.lioner.commonField.entity;

import com.ffii.core.support.AbstractRepository;

public interface CommonFieldRepository extends AbstractRepository<CommonField, Long> {
}

+ 138
- 0
src/main/java/com/ffii/lioner/modules/lioner/commonField/req/UpdateCommonFieldReq.java View File

@@ -0,0 +1,138 @@
package com.ffii.lioner.modules.lioner.commonField.req;

import java.util.List;

import jakarta.validation.constraints.Size;

import java.time.LocalDate;

public class UpdateCommonFieldReq {
private Long id;

@Size(max = 500)
String fullname;

@Size(max = 255)
String lastname;

@Size(max = 255)
String firstname;

@Size(max = 50)
String title;

@Size(max = 500)
String email;

@Size(max = 50)
String phone1;

@Size(max = 50)
String phone2;

String remarks;

LocalDate joinDate;

Integer caseManagerId;

Integer consultantId;

public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}

public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}

public String getLastname() {
return lastname;
}

public void setLastname(String lastname) {
this.lastname = lastname;
}

public String getFirstname() {
return firstname;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}

public String getPhone1() {
return phone1;
}

public void setPhone1(String phone1) {
this.phone1 = phone1;
}
public String getPhone2() {
return phone2;
}

public void setPhone2(String phone2) {
this.phone2 = phone2;
}

public String getRemarks() {
return remarks;
}

public void setRemarks(String remarks) {
this.remarks = remarks;
}

public LocalDate getJoinDate() {
return joinDate;
}

public void setJoinDate(LocalDate joinDate) {
this.joinDate = joinDate;
}
public Integer getCaseManagerId() {
return caseManagerId;
}

public void setCaseManagerId(Integer caseManagerId) {
this.caseManagerId = caseManagerId;
}
public Integer getConsultantId() {
return consultantId;
}

public void setConsultantId(Integer consultantId) {
this.consultantId = consultantId;
}

}

+ 155
- 0
src/main/java/com/ffii/lioner/modules/lioner/commonField/service/CommonFieldService.java View File

@@ -0,0 +1,155 @@
package com.ffii.lioner.modules.lioner.commonField.service;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.ffii.core.support.AbstractBaseEntityService;
import com.ffii.core.support.JdbcDao;
import com.ffii.core.utils.BeanUtils;
import com.ffii.lioner.modules.common.service.AuditLogService;
import com.ffii.lioner.modules.lioner.commonField.entity.CommonField;
import com.ffii.lioner.modules.lioner.commonField.entity.CommonFieldRepository;
import com.ffii.lioner.modules.lioner.commonField.req.UpdateCommonFieldReq;

@Service
public class CommonFieldService extends AbstractBaseEntityService<CommonField, Long, CommonFieldRepository> {

private AuditLogService auditLogService;
public CommonFieldService(JdbcDao jdbcDao, CommonFieldRepository repository, AuditLogService auditLogService) {
super(jdbcDao, repository);
this.auditLogService = auditLogService;
}

public Map<String,Object> getAuditLogObject(Map<String,Object> req){
StringBuilder sql = new StringBuilder("SELECT"
+ " e.id, "
+ " e.created, "
+ " e.createdBy AS createdById, "
+ " u1.name AS createdBy, "
+ " e.version, "
+ " e.modified, "
+ " e.modifiedBy AS modifiedById, "
+ " e.deleted, "
+ " u2.name AS modifiedBy, "
+ " e.name, "
+ " e.nameCht, "
+ " e.description, "
+ " e.region, "
+ " e.organization, "
+ " e.eventType, "
+ " e.frequency, "
+ " e.series, "
+ " e.startDate, "
+ " e.eventFrom, "
+ " e.eventTo, "
+ " e.applicationDeadline, "
+ " e.nextApplicationDate, "
+ " e.announcementDate, "
+ " e.awardDate, "
+ " e.reminderFlag, "
+ " e.reminderThreshold, "
+ " e.reminderInterval, "
+ " e.reminderLimit "
+ " FROM event e "
+ " LEFT JOIN `user` u1 ON u1.id = e.createdBy "
+ " LEFT JOIN `user` u2 ON u2.id = e.modifiedBy "
+ " WHERE e.id = :id "
);
return jdbcDao.queryForMap(sql.toString(), req).get();
}

public List<Map<String,Object>> list(Map<String, Object> args){
StringBuilder sql = new StringBuilder("SELECT"
+ " common_field.* "
+ " FROM common_field "
+ " WHERE deleted = FALSE "
// StringBuilder sql = new StringBuilder("SELECT"
// + " DISTINCT e.id, "
// + " e.name AS name, "
// + " e.applicationDeadline, "
// + " e.startDate, "
// + " e.eventFrom "
// + " FROM event e "
// + " LEFT JOIN event_sub_division esd ON e.id = esd.eventId "
// + " LEFT JOIN sub_division sd ON esd.subDivisionId = sd.id "
// + " LEFT JOIN division d ON d.id = sd.divisionId "
// + " LEFT JOIN `user` u ON u.id = e.createdBy "
// + " WHERE e.deleted = FALSE "
// + " AND esd.deleted = FALSE "

);

if (args != null) {
if (args.containsKey("fullname"))
sql.append(" AND fullname LIKE :fullname ");
if (args.containsKey("lastname"))
sql.append(" AND lastname LIKE :lastname ");
if (args.containsKey("firstname"))
sql.append(" AND firstname LIKE :firstname ");
if (args.containsKey("phone1"))
sql.append(" AND phone1 LIKE :phone1 ");
if (args.containsKey("phone2"))
sql.append(" AND phone2 LIKE :phone2 ");
if (args.containsKey("email"))
sql.append(" AND email LIKE :email ");
if (args.containsKey("remarks"))
sql.append(" AND remarks LIKE :remarks ");
if (args.containsKey("joinDateFrom"))
sql.append(" AND joinDate >= :joinDateFrom ");
if (args.containsKey("joinDateTo"))
sql.append(" AND joinDate <= :joinDateTo ");
// if (args.containsKey("type"))
// sql.append(" AND eventType LIKE :type ");
// if (args.containsKey("divisionIdList"))
// sql.append(" AND sd.divisionId IN (:divisionIdList) ");
// if (args.containsKey("subDivisionIdList"))
// sql.append(" AND sd.id IN (:subDivisionIdList) ");
// if (args.containsKey("keyword")){
// sql.append(" AND ( createdBy LIKE :keyword ");
// sql.append(" OR u.username LIKE :keyword ");
// sql.append(" OR u.fullname LIKE :keyword ");
// sql.append(" OR u.email LIKE :keyword ");
// sql.append(" OR sd.name LIKE :keyword ");
// sql.append(" OR d.name LIKE :keyword ");
// sql.append(" OR e.name LIKE :keyword) ");
}
// }
// sql.append(" ORDER BY id desc ");

return jdbcDao.queryForList(sql.toString(), args);
}

public Integer getIdByName(String name) {
StringBuilder sql = new StringBuilder("SELECT"
+ " e.id "
+ " FROM event e "
+ " WHERE e.deleted = FALSE"
+ " AND e.name = :name "
);
return jdbcDao.queryForInt(sql.toString(), Map.of("name", name));
}
public Map<String, Object> saveOrUpdate(UpdateCommonFieldReq req) {
CommonField instance;
// List<SubDivision> onUsingIdList = new ArrayList<SubDivision>();
if(req.getId()>0){
instance = find(req.getId()).get();
// onUsingIdList = this.getSelectedSubDivisionList(req.getId());
}
else{
instance = new CommonField();
}

BeanUtils.copyProperties(req,instance);
instance = save(instance);
return Map.of(
"id", instance.getId()
);
}
}

+ 100
- 0
src/main/java/com/ffii/lioner/modules/lioner/commonField/web/CommonFieldController.java View File

@@ -0,0 +1,100 @@
package com.ffii.lioner.modules.lioner.commonField.web;

import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;
import org.springframework.http.CacheControl;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import com.ffii.lioner.modules.lioner.commonField.req.UpdateCommonFieldReq;
import com.ffii.lioner.modules.lioner.commonField.service.CommonFieldService;

import aj.org.objectweb.asm.Type;

import com.ffii.lioner.modules.common.service.ExcelReportService;
import com.ffii.core.exception.NotFoundException;
import com.ffii.core.response.DataRes;
import com.ffii.core.response.RecordsRes;
import com.ffii.core.utils.CriteriaArgsBuilder;
import com.ffii.core.utils.Params;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;

@RestController
@RequestMapping("/commonField")
public class CommonFieldController{

private final Log logger = LogFactory.getLog(getClass());
private CommonFieldService commonFieldService;
private ExcelReportService excelReportService;

public CommonFieldController(CommonFieldService commonFieldService, ExcelReportService excelReportService) {
this.commonFieldService = commonFieldService;
this.excelReportService = excelReportService;
}

@GetMapping("/{id}")
public Map<String, Object> get(@PathVariable Long id) {
return Map.of(
Params.DATA, commonFieldService.find(id).orElseThrow(NotFoundException::new)
// "eventDivision", commonFieldService.getEventDivision(Map.of("id",id))
);
}

@Transactional(isolation = Isolation.SERIALIZABLE, rollbackFor = Exception.class, readOnly = false)
@PostMapping("/save")
public Map<String, Object> saveOrUpdate(@RequestBody @Valid UpdateCommonFieldReq req) {
return Map.of(
Params.DATA,commonFieldService.saveOrUpdate(req)
);
}

@Transactional(isolation = Isolation.SERIALIZABLE, rollbackFor = Exception.class, readOnly = false)
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable Long id) {
commonFieldService.markDelete(commonFieldService.find(id).get());
// commonFieldService.markDeleteWithAuditLog(commonFieldService.find(id).get());
}

@GetMapping
public RecordsRes<Map<String, Object>> list(HttpServletRequest request) throws ServletRequestBindingException {
return new RecordsRes<>(commonFieldService.list(
CriteriaArgsBuilder.withRequest(request)
.addStringLike("fullname")
.addStringLike("lastname")
.addStringLike("firstname")
// .addStringLike("title")
.addStringLike("email")
.addStringLike("phone1")
.addStringLike("phone2")
.addDate("joinDateFrom")
.addDate("joinDateTo")
.addStringLike("remarks")
.build()));
}

}

+ 46
- 0
src/main/resources/application-prod.yml View File

@@ -0,0 +1,46 @@
server:
servlet:
contextPath: /api
encoding:
charset: UTF-8
enabled: true
force: true
port: 8090
error:
include-message: always
tomcat:
connection-timeout: 300000
ssl: # <--- This 'ssl' is correctly indented under 'server'
enabled: true # <--- CORRECTED: Use colon, not equals, and remove "server.ssl." prefix
key-store: classpath:keystore.p12
key-store-type: PKCS12
key-store-password: Mms1234
key-alias: lionerapp
key-password: Mms1234

spring:
datasource:
jdbc-url: jdbc:mysql://localhost:3306/lionerdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8
username: root
password: cFDp7988vc+$]

servlet:
multipart:
max-file-size: 500MB
max-request-size: 600MB
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
database-platform: org.hibernate.dialect.MySQL8Dialect
properties:
hibernate:
dialect:
storage_engine: innodb
messages:
basename: i18n/messages
use-code-as-default-message: true
fallback-to-system-locale: false

logging:
config: 'classpath:log4j2.yml'

+ 1
- 1
src/main/resources/application.yml View File

@@ -11,7 +11,7 @@ server:
tomcat:
connection-timeout: 300000
ssl: # <--- This 'ssl' is correctly indented under 'server'
enabled: true # <--- CORRECTED: Use colon, not equals, and remove "server.ssl." prefix
enabled: false # <--- CORRECTED: Use colon, not equals, and remove "server.ssl." prefix
key-store: classpath:keystore.p12
key-store-type: PKCS12
key-store-password: Mms1234


+ 28
- 0
src/main/resources/db/changelog/changes/06_commonField/01_add_common_field_table.sql View File

@@ -0,0 +1,28 @@
--liquibase formatted sql

--changeset Vin:add cliecommon_fieldnt table

CREATE TABLE `common_field` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(30) DEFAULT NULL,
`version` int NOT NULL DEFAULT '0',
`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modifiedBy` varchar(30) DEFAULT NULL,
`deleted` tinyint(1) NOT NULL DEFAULT '0',

`clientId` bigint NOT NULL,
`name` VARCHAR(200),
`dateOfBirth` VARCHAR(200),
`idCard` VARCHAR(100),
`occupation` VARCHAR(100),
`firstName` VARCHAR(100),
`givenName` VARCHAR(100),
`genderMale` VARCHAR(30),
`genderFemale` VARCHAR(30),
`ddDateOfBirth` VARCHAR(10),
`mmDateOfBirth` VARCHAR(10),
`yyyyDateOfBirth` VARCHAR(10),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Loading…
Cancel
Save