rename table to attached_file, attached_image

This commit is contained in:
Shaun Chyxion 2018-11-24 13:27:31 +08:00
parent 0ab913e0a9
commit 3f00923543
61 changed files with 218 additions and 280 deletions

View File

@ -111,7 +111,7 @@ public class ApplicationController
}
@RequestMapping(value = "/add-image", method = RequestMethod.POST)
public ViewModel<ApplicationImage> addImage(
public ViewModel<AttachedImage> addImage(
@Valid ApplicationImageFormForCreate form) {
Assert.state(!form.getImage().isEmpty(), "Image content is empty");
form.setAdmin(getAuthUser().getUser().getData().isAdmin());
@ -131,7 +131,7 @@ public class ApplicationController
}
@RequestMapping(value = "/add-attachment", method = RequestMethod.POST)
public ViewModel<ApplicationAttachment> addAttachment(
public ViewModel<AttachedFile> addAttachment(
@Valid ApplicationAttachmentFormForCreate form) {
Assert.state(!form.getAttachment().isEmpty(), "Image content is empty");
form.setAdmin(getAuthUser().getUser().getData().isAdmin());

View File

@ -6,7 +6,7 @@ import me.chyxion.tigon.model.ViewModel;
import com.pudonghot.ambition.crm.model.User;
import org.springframework.stereotype.Controller;
import me.chyxion.tigon.shiro.service.AuthService;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.service.UserService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestParam;

View File

@ -6,7 +6,7 @@ import me.chyxion.tigon.model.BaseModel;
import me.chyxion.tigon.model.ViewModel;
import me.chyxion.tigon.model.ListResult;
import me.chyxion.tigon.service.BaseQueryService;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;

View File

@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Param;
import com.pudonghot.ambition.crm.model.User;
import com.pudonghot.ambition.crm.model.HomePage;
import org.springframework.stereotype.Controller;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import org.apache.shiro.authz.annotation.RequiresRoles;
import com.pudonghot.ambition.crm.service.HomePageService;
import org.springframework.web.bind.annotation.RequestParam;

View File

@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.NotNull;
import com.pudonghot.ambition.crm.model.User;
import org.springframework.stereotype.Controller;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.service.UserService;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.web.bind.annotation.RequestParam;

View File

@ -5,9 +5,9 @@ import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.model.Application;
import com.pudonghot.ambition.crm.model.AttachedImage;
import me.chyxion.tigon.service.BaseCrudByFormService;
import com.pudonghot.ambition.crm.model.ApplicationImage;
import com.pudonghot.ambition.crm.model.ApplicationAttachment;
import com.pudonghot.ambition.crm.model.AttachedFile;
import com.pudonghot.ambition.crm.form.update.ApplicationFormForUpdate;
import com.pudonghot.ambition.crm.form.create.ApplicationFormForCreate;
import com.pudonghot.ambition.crm.form.create.ApplicationImageFormForCreate;
@ -27,7 +27,7 @@ public interface ApplicationService
* add image
* @param form form
*/
ApplicationImage addImage(@Valid ApplicationImageFormForCreate form);
AttachedImage addImage(@Valid ApplicationImageFormForCreate form);
/**
* remove image
@ -48,7 +48,7 @@ public interface ApplicationService
* add attachment
* @param form form
*/
ApplicationAttachment addAttachment(@Valid ApplicationAttachmentFormForCreate form);
AttachedFile addAttachment(@Valid ApplicationAttachmentFormForCreate form);
/**
* remove attachment

View File

@ -3,7 +3,7 @@ package com.pudonghot.ambition.crm.service;
import java.util.List;
import me.chyxion.tigon.model.ViewModel;
import javax.validation.constraints.Min;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.model.CustomerIssue;
import me.chyxion.tigon.service.BaseCrudByFormService;
import com.pudonghot.ambition.crm.form.create.CustomerIssueFormForCreate;

View File

@ -1,7 +1,7 @@
package com.pudonghot.ambition.crm.service;
import com.alibaba.fastjson.JSONArray;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import me.chyxion.tigon.service.BaseCrudByFormService;
import com.pudonghot.ambition.crm.model.CustomerProperty;

View File

@ -4,7 +4,7 @@ import java.io.File;
import java.io.InputStream;
import javax.validation.constraints.NotNull;
import com.pudonghot.ambition.crm.model.Customer;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.service.BaseCrudByFormService;
import com.pudonghot.ambition.crm.form.create.CustomerFormForCreate;
import com.pudonghot.ambition.crm.form.update.CustomerFormForUpdate;

View File

@ -2,7 +2,7 @@ package com.pudonghot.ambition.crm.service;
import java.io.InputStream;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.service.BaseCrudByFormService;
import com.pudonghot.ambition.crm.model.CustomerYearToDateSale;
import com.pudonghot.ambition.crm.form.create.CustomerYearToDateSaleFormForCreate;

View File

@ -2,7 +2,7 @@ package com.pudonghot.ambition.crm.service;
import me.chyxion.tigon.model.ViewModel;
import com.pudonghot.ambition.crm.model.HomePage;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.service.BaseCrudByFormService;
import com.pudonghot.ambition.crm.form.create.HomePageFormForCreate;
import com.pudonghot.ambition.crm.form.update.HomePageFormForUpdate;

View File

@ -5,7 +5,7 @@ import javax.validation.Valid;
import me.chyxion.tigon.model.ViewModel;
import javax.validation.constraints.NotNull;
import com.pudonghot.ambition.crm.model.User;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.service.BaseCrudByFormService;
import com.pudonghot.ambition.crm.form.create.UserFormForCreate;
import com.pudonghot.ambition.crm.form.update.UserFormForUpdate;

View File

@ -11,7 +11,7 @@ import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import me.chyxion.tigon.service.BaseCrudService;
import com.pudonghot.ambition.crm.model.WeekGoal;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.form.update.WeekGoalFormForUpdate;
/**

View File

@ -46,9 +46,9 @@ public class ApplicationServiceSupport
implements ApplicationService {
@Autowired
private ApplicationImageMapper imageMapper;
private AttachedImageMapper imageMapper;
@Autowired
private ApplicationAttachmentMapper attachmentMapper;
private AttachedFileMapper attachmentMapper;
@Autowired
private DiskFileApi fileApi;
@Autowired
@ -72,8 +72,8 @@ public class ApplicationServiceSupport
final Date now = new Date();
application.setDateUpdated(now);
uploadFiles(id, 1, form.getImages(), form.getImageTitles(), form.getCreatedBy(), ApplicationImage::new, imageMapper::insert);
uploadFiles(id, 1, form.getAttachments(), form.getAttachmentTitles(), form.getCreatedBy(), ApplicationAttachment::new, attachmentMapper::insert);
uploadFiles(id, 1, form.getImages(), form.getImageTitles(), form.getCreatedBy(), AttachedImage::new, imageMapper::insert);
uploadFiles(id, 1, form.getAttachments(), form.getAttachmentTitles(), form.getCreatedBy(), AttachedFile::new, attachmentMapper::insert);
mapper.insert(application);
return toViewModel(application);
}
@ -130,8 +130,8 @@ public class ApplicationServiceSupport
@Override
public ViewModel<Application> findViewModel(final String id) {
final Search search =
new Search(ApplicationImage.APPLICATION_ID, id)
.asc(ApplicationImage.SORT);
new Search(AttachedImage.OWNER_ID, id)
.asc(AttachedImage.SORT);
return super.findViewModel(id)
.setAttr("images", imageMapper.list(search))
@ -142,7 +142,7 @@ public class ApplicationServiceSupport
* {@inheritDoc}
*/
@Override
public ApplicationImage addImage(final ApplicationImageFormForCreate form) {
public AttachedImage addImage(final ApplicationImageFormForCreate form) {
final String applicationId = form.getApplicationId();
final String createdBy = form.getCreatedBy();
validatePerm(applicationId, createdBy, form.isAdmin());
@ -151,7 +151,7 @@ public class ApplicationServiceSupport
new MultipartFile[] {form.getImage()},
new String[] {form.getNote()},
createdBy,
ApplicationImage::new,
AttachedImage::new,
imageMapper::insert).iterator().next();
}
@ -176,7 +176,7 @@ public class ApplicationServiceSupport
* {@inheritDoc}
*/
@Override
public ApplicationAttachment addAttachment(final ApplicationAttachmentFormForCreate form) {
public AttachedFile addAttachment(final ApplicationAttachmentFormForCreate form) {
final String applicationId = form.getApplicationId();
final String createdBy = form.getCreatedBy();
validatePerm(applicationId, createdBy, form.isAdmin());
@ -185,7 +185,7 @@ public class ApplicationServiceSupport
new MultipartFile[] {form.getAttachment()},
new String[] {form.getNote()},
createdBy,
ApplicationAttachment::new,
AttachedFile::new,
attachmentMapper::insert).iterator().next();
}
@ -227,7 +227,7 @@ public class ApplicationServiceSupport
Assert.state(customerApplicationMapper.count(
new Search(CustomerApplication.APPLICATION_ID, id)) == 0,
"Application [" + id + "] is in using");
final Search appFileSearch = new Search(ApplicationImage.APPLICATION_ID, id);
final Search appFileSearch = new Search(AttachedImage.OWNER_ID, id);
imageMapper.list(appFileSearch).forEach(
image -> fileApi.deleteById(image.getFileId()));
imageMapper.delete(appFileSearch);
@ -239,7 +239,7 @@ public class ApplicationServiceSupport
return app;
}
private <T extends ApplicationFile> List<T> uploadFiles(
private <T extends Attachment> List<T> uploadFiles(
final String applicationId,
int sort,
final MultipartFile[] files,
@ -266,7 +266,7 @@ public class ApplicationServiceSupport
FilenameUtils.getExtension(originalFilename),
originalFilename);
appFile.setId(fileId);
appFile.setApplicationId(applicationId);
appFile.setOwnerId(applicationId);
appFile.setFileId(fileInfo.getId());
appFile.setUrl(fileInfo.getUrl());
appFile.setSort(sort++);
@ -291,7 +291,7 @@ public class ApplicationServiceSupport
return appFiles;
}
private <T extends ApplicationFile> void updateFile(
private <T extends Attachment> void updateFile(
final ApplicationFileFormForUpdate form,
final Function<String, T> finder,
final Function<String, List<T>> listSort,
@ -300,7 +300,7 @@ public class ApplicationServiceSupport
final String id = form.getId();
final T appImage = finder.apply(id);
Assert.state(appImage != null, "No application file [" + id + "] found");
final String applicationId = appImage.getApplicationId();
final String applicationId = appImage.getOwnerId();
final String updatedBy = form.getUpdatedBy();
validatePerm(applicationId, updatedBy, form.isAdmin());
@ -326,7 +326,7 @@ public class ApplicationServiceSupport
}
}
private <T extends ApplicationFile> void removeFile(
private <T extends Attachment> void removeFile(
final String id,
final String userId,
final boolean admin,
@ -335,7 +335,7 @@ public class ApplicationServiceSupport
final Function<String, Integer> sortUpdater) {
final T appFile = finder.apply(id);
Assert.state(appFile != null, "No application file [" + id + "] found");
final String applicationId = appFile.getApplicationId();
final String applicationId = appFile.getOwnerId();
validatePerm(applicationId, userId, admin);
fileApi.delete(fileFolder(applicationId) + "/" + id);
deleter.apply(id);

View File

@ -7,7 +7,7 @@ import javax.validation.constraints.Min;
import me.chyxion.tigon.model.ViewModel;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.model.CustomerIssue;
import com.pudonghot.ambition.crm.service.UserService;
import com.pudonghot.ambition.crm.mapper.CustomerIssueMapper;

View File

@ -8,7 +8,7 @@ import org.apache.commons.lang3.StringUtils;
import com.pudonghot.ambition.crm.model.User;
import org.springframework.stereotype.Service;
import com.pudonghot.ambition.crm.util.Sha512Utils;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.mapper.UserMapper;
import com.pudonghot.ambition.crm.service.UserService;
import com.pudonghot.ambition.crm.form.create.UserFormForCreate;

View File

@ -1,5 +1,6 @@
package com.pudonghot.ambition.crm;
import com.pudonghot.ambition.crm.model.AttachedImage;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.joda.time.Interval;
@ -10,7 +11,6 @@ import java.text.ParseException;
import org.joda.time.DateTimeConstants;
import org.apache.commons.lang3.time.DateUtils;
import com.pudonghot.ambition.crm.util.AmDateUtil;
import com.pudonghot.ambition.crm.model.ApplicationImage;
/**
* @version 0.0.1
@ -96,7 +96,7 @@ public class TestDriver {
@Test
public void testFloat() {
ApplicationImage image = new ApplicationImage();
AttachedImage image = new AttachedImage();
image.setUrl("http://www.image.com");
int sortOld = 2;
image.setSort(sortOld - 1.5f);

View File

@ -12,10 +12,17 @@ get_real_path() {
f=`dirname "$f"`/"$link"
fi
done
eval "$2"="'$f'"
echo "$f"
}
get_real_path "$0" prg_path
if [ "$1" = "prod" ]; then
SERVER=lemo@116.62.189.211
else
echo "Profile required."
exit 1
fi
prg_path=$(get_real_path "$0")
echo "Script Path [$prg_path]"
PROJECT_HOME=$(dirname $prg_path)
echo "Project Home [$PROJECT_HOME]"
@ -23,18 +30,7 @@ cd "$PROJECT_HOME"
mvn clean package -o -pl crm -am -DskipTests -Ptest
SERVICE_HOME=/data/program/lemo-crm
echo "Service Home [$SERVICE_HOME]"
# SERVER=ambition@101.236.35.13
# SERVER=root@116.62.189.211
if [ "$1" = "prod" ]; then
SERVER=lemo@116.62.189.211
else
SERVER=ambition@101.236.35.13
fi
echo "$SERVER $SERVICE_HOME/bin/stop.sh"
ssh "$SERVER" "$SERVICE_HOME/bin/stop.sh"
echo "Service Home [$SERVICE_HOME], Server [$SERVER]"
echo "$SERVER [ -f $SERVICE_HOME/lib/main.jar ] && mv $SERVICE_HOME/lib/main.jar $SERVICE_HOME/main_prev.jar"
ssh "$SERVER" "[ -f $SERVICE_HOME/lib/main.jar ] && mv $SERVICE_HOME/lib/main.jar $SERVICE_HOME/main_prev.jar"
@ -42,6 +38,9 @@ ssh "$SERVER" "[ -f $SERVICE_HOME/lib/main.jar ] && mv $SERVICE_HOME/lib/main.ja
echo "$PROJECT_HOME/crm/target/ambition-crm.jar $SERVER:$SERVICE_HOME/lib/main.jar"
scp "$PROJECT_HOME/crm/target/ambition-crm.jar" "$SERVER:$SERVICE_HOME/lib/main.jar"
echo "$SERVER $SERVICE_HOME/bin/stop.sh"
ssh "$SERVER" "$SERVICE_HOME/bin/stop.sh"
echo "$SERVER $SERVICE_HOME/bin/start.sh"
ssh "$SERVER" "$SERVICE_HOME/bin/start.sh"

View File

@ -5,7 +5,7 @@ import java.util.List;
import java.io.InputStream;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import org.springframework.validation.annotation.Validated;
/**

View File

@ -6,7 +6,7 @@ import java.io.InputStream;
import java.util.Collection;
import java.awt.image.BufferedImage;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import org.springframework.validation.annotation.Validated;
/**

View File

@ -1,7 +1,7 @@
package com.pudonghot.ambition.file;
import com.pudonghot.ambition.crm.model.FileInfo;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import java.io.File;

View File

@ -6,11 +6,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>crm-mapper</artifactId>
<name>Ambition Mapper</name>
<packaging>${packaging}</packaging>
<properties>
<packaging>jar</packaging>
</properties>
<parent>
<groupId>com.pudonghot.ambition</groupId>
@ -20,11 +16,6 @@
</parent>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.pudonghot.ambition</groupId>
<artifactId>crm-model</artifactId>
@ -54,11 +45,6 @@
</dependency>
<!-- Test And Optional Dependencies -->
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
@ -69,35 +55,19 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.0</version>
<optional>true</optional>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
@ -123,49 +93,6 @@
<value>true</value>
</property>
</activation>
<properties>
<packaging>war</packaging>
<maven.tomcat.port>8088</maven.tomcat.port>
<log.dir>${project.basedir}/.log</log.dir>
<log.level>DEBUG</log.level>
<log.appender>
<![CDATA[
<AppenderRef ref="File" level="${log.level}" />
<AppenderRef ref="Console" level="${log.level}" />
]]>
</log.appender>
</properties>
<dependencies>
<dependency>
<groupId>me.chyxion.tigon</groupId>
<artifactId>tigon-codegen</artifactId>
</dependency>
<dependency>
<groupId>me.chyxion.tigon</groupId>
<artifactId>tigon-props-config</artifactId>
</dependency>
<dependency>
<groupId>me.chyxion.tigon</groupId>
<artifactId>tigon-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>dep</id>

View File

@ -1,14 +0,0 @@
package com.pudonghot.ambition.crm.mapper;
import me.chyxion.tigon.mybatis.BaseMapper;
import com.pudonghot.ambition.crm.model.ApplicationAttachment;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Mar 11, 2018 11:39:49
*/
public interface ApplicationAttachmentMapper
extends ApplicationFileMapper<ApplicationAttachment>,
BaseMapper<String, ApplicationAttachment> {
}

View File

@ -1,38 +0,0 @@
package com.pudonghot.ambition.crm.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.hibernate.validator.constraints.NotBlank;
import com.pudonghot.ambition.crm.model.ApplicationFile;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Mar 11, 2018 11:39:49
*/
interface ApplicationFileMapper<T extends ApplicationFile> {
/**
* find next sort
* @param applicationId application id
* @return next sort
*/
int nextSort(@NotBlank @Param("applicationId") String applicationId);
/**
* update sort
* @param applicationId application id
* @return effected rows
*/
int updateSort(@NotBlank @Param("applicationId") String applicationId);
/**
* list application files
* @param applicationId
* @return images
*/
List<T> listSort(
@NotBlank
@Param("applicationId")
String applicationId);
}

View File

@ -1,14 +0,0 @@
package com.pudonghot.ambition.crm.mapper;
import me.chyxion.tigon.mybatis.BaseMapper;
import com.pudonghot.ambition.crm.model.ApplicationImage;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Mar 11, 2018 11:39:49
*/
public interface ApplicationImageMapper
extends ApplicationFileMapper<ApplicationImage>,
BaseMapper<String, ApplicationImage> {
}

View File

@ -15,24 +15,24 @@
select
<include refid="cols" />,
(select group_concat(url order by sort separator 0x1d) from
crm_application_image
where application_id = a.id
group by application_id) images,
crm_attached_image
where owner_id = a.id
group by owner_id) images,
(select group_concat(note order by sort separator 0x1d) from
crm_application_image
where application_id = a.id
group by application_id) image_titles,
crm_attached_image
where owner_id = a.id
group by owner_id) image_titles,
(select group_concat(url order by sort separator 0x1d) from
crm_application_attachment
where application_id = a.id
group by application_id) attachments,
crm_attached_file
where owner_id = a.id
group by owner_id) attachments,
(select group_concat(note order by sort separator 0x1d) from
crm_application_attachment
where application_id = a.id
group by application_id) attachment_titles
crm_attached_file
where owner_id = a.id
group by owner_id) attachment_titles
from
<include refid="table" /> a

View File

@ -0,0 +1,14 @@
package com.pudonghot.ambition.crm.mapper;
import me.chyxion.tigon.mybatis.BaseMapper;
import com.pudonghot.ambition.crm.model.AttachedFile;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Mar 11, 2018 11:39:49
*/
public interface AttachedFileMapper
extends AttachmentMapper<AttachedFile>,
BaseMapper<String, AttachedFile> {
}

View File

@ -9,17 +9,18 @@
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pudonghot.ambition.crm.mapper.ApplicationAttachmentMapper">
<mapper namespace="com.pudonghot.ambition.crm.mapper.AttachedFileMapper">
<select id="nextSort" resultType="int">
<include refid="com.pudonghot.ambition.crm.mapper.ApplicationFileMapper.nextSort" />
<include refid="com.pudonghot.ambition.crm.mapper.AttachmentMapper.nextSort" />
</select>
<update id="updateSort">
<include refid="com.pudonghot.ambition.crm.mapper.ApplicationFileMapper.updateSort" />
<include refid="com.pudonghot.ambition.crm.mapper.AttachmentMapper.updateSort" />
</update>
<select id="listSort" resultType="com.pudonghot.ambition.crm.model.ApplicationAttachment">
<include refid="com.pudonghot.ambition.crm.mapper.ApplicationFileMapper.listSort" />
<select id="listSort" resultType="com.pudonghot.ambition.crm.model.AttachedImage">
<include refid="com.pudonghot.ambition.crm.mapper.AttachmentMapper.listSort" />
</select>
</mapper>

View File

@ -0,0 +1,14 @@
package com.pudonghot.ambition.crm.mapper;
import me.chyxion.tigon.mybatis.BaseMapper;
import com.pudonghot.ambition.crm.model.AttachedImage;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Mar 11, 2018 11:39:49
*/
public interface AttachedImageMapper
extends AttachmentMapper<AttachedImage>,
BaseMapper<String, AttachedImage> {
}

View File

@ -9,17 +9,18 @@
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pudonghot.ambition.crm.mapper.ApplicationImageMapper">
<mapper namespace="com.pudonghot.ambition.crm.mapper.AttachedImageMapper">
<select id="nextSort" resultType="int">
<include refid="com.pudonghot.ambition.crm.mapper.ApplicationFileMapper.nextSort" />
<include refid="com.pudonghot.ambition.crm.mapper.AttachmentMapper.nextSort" />
</select>
<update id="updateSort">
<include refid="com.pudonghot.ambition.crm.mapper.ApplicationFileMapper.updateSort" />
<include refid="com.pudonghot.ambition.crm.mapper.AttachmentMapper.updateSort" />
</update>
<select id="listSort" resultType="com.pudonghot.ambition.crm.model.ApplicationImage">
<include refid="com.pudonghot.ambition.crm.mapper.ApplicationFileMapper.listSort" />
<select id="listSort" resultType="com.pudonghot.ambition.crm.model.AttachedImage">
<include refid="com.pudonghot.ambition.crm.mapper.AttachmentMapper.listSort" />
</select>
</mapper>

View File

@ -0,0 +1,38 @@
package com.pudonghot.ambition.crm.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.model.Attachment;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Mar 11, 2018 11:39:49
*/
interface AttachmentMapper<T extends Attachment> {
/**
* find next sort
* @param ownerId owner id
* @return next sort
*/
int nextSort(@NotBlank @Param("ownerId") String ownerId);
/**
* update sort
* @param ownerId owner id
* @return effected rows
*/
int updateSort(@NotBlank @Param("ownerId") String ownerId);
/**
* list owner attachments
* @param ownerId owner id
* @return attachments
*/
List<T> listSort(
@NotBlank
@Param("ownerId")
String ownerId);
}

View File

@ -9,12 +9,12 @@
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pudonghot.ambition.crm.mapper.ApplicationFileMapper">
<mapper namespace="com.pudonghot.ambition.crm.mapper.AttachmentMapper">
<sql id="nextSort">
select if (application_id, max(sort) + 1, 1)
select if (owner_id, max(sort) + 1, 1)
from <include refid="table" />
where application_id = #{applicationId}
where owner_id = #{ownerId}
</sql>
<sql id="updateSort">
@ -23,7 +23,7 @@
select id, @cur_row := @cur_row + 1 sort
from <include refid="table" />
join (select @cur_row := 0) r
where application_id = #{applicationId}
where owner_id = #{ownerId}
order by <include refid="table" />.sort) s
on a.id = s.id
set a.sort = s.sort
@ -31,14 +31,14 @@
<sql id="listSort">
select id, file_id,
url, application_id,
url, owner_id,
created_by, date_created,
updated_by, date_updated,
enabled, note,
@cur_row := @cur_row + 1 sort
from <include refid="table" />
join (select @cur_row := 0) r
where application_id = #{applicationId}
where owner_id = #{ownerId}
order by <include refid="table" />.sort
</sql>
</mapper>

View File

@ -4,7 +4,7 @@ import java.util.List;
import javax.validation.constraints.Min;
import me.chyxion.tigon.mybatis.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.model.CustomerIssue;
/**

View File

@ -9,7 +9,7 @@ import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import com.pudonghot.ambition.crm.model.Customer;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -4,7 +4,7 @@ import java.util.List;
import me.chyxion.tigon.mybatis.BaseMapper;
import org.apache.ibatis.annotations.Param;
import com.pudonghot.ambition.crm.model.User;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -1,6 +0,0 @@
# CodeGen Config
base.cols=enabled,note,date_created,date_updated,created_by,updated_by
base.package=com.pudonghot.ambition.crm
super.base.model.name=M3<String, String>
super.base.model.full.name=me.chyxion.tigon.model.M3
table.prefix=crm

View File

@ -1,8 +0,0 @@
# Config Dev
# Database
datasource.host=127.0.0.1
datasource.port=63306
datasource.database-name=ambition_crm_test
datasource.username=root
datasource.password=696@2^~)oZ@^#*Q

View File

@ -4,7 +4,7 @@ import org.junit.Test;
import java.util.List;
import org.junit.runner.RunWith;
import lombok.extern.slf4j.Slf4j;
import com.pudonghot.ambition.crm.model.ApplicationImage;
import com.pudonghot.ambition.crm.model.AttachedImage;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ -19,14 +19,18 @@ import org.springframework.test.context.junit4.AbstractTransactionalJUnit4Spring
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/spring-*.xml")
public class ApplicationImageMapperTest extends AbstractTransactionalJUnit4SpringContextTests {
public class AttachedImageMapperTest extends AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private ApplicationImageMapper mapper;
private AttachedImageMapper mapper;
@Autowired
private AttachedFileMapper fileMapper;
@Test
public void testListSort() {
final List<ApplicationImage> images =
final List<AttachedImage> images =
mapper.listSort("5aadc3be13987ee957e00caf");
log.info("Images: [{}].", images);
log.info("Next attached file sort: [{}].", fileMapper.nextSort("5aadc3be13987ee957e00caf"));
log.info("Next attached image sort: [{}].", mapper.nextSort("5aadc3be13987ee957e00caf"));
}
}

View File

@ -0,0 +1,18 @@
package com.pudonghot.ambition.crm.mapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Nov 24, 2018 12:44:25
*/
@Slf4j
public class TestDriver {
@Test
public void run() {
log.info("Run.");
}
}

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import org.springframework.web.multipart.MultipartFile;
/**

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import me.chyxion.tigon.format.annotation.Trim;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.format.annotation.EmptyToNull;
import org.springframework.web.multipart.MultipartFile;

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import org.springframework.web.multipart.MultipartFile;
/**

View File

@ -3,7 +3,7 @@ package com.pudonghot.ambition.crm.form.create;
import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.BaseForm;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -3,7 +3,7 @@ package com.pudonghot.ambition.crm.form.create;
import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.format.annotation.EmptyToNull;
/**

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import com.pudonghot.ambition.crm.model.CustomerProperty;
/**

View File

@ -5,7 +5,7 @@ import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FC2;
import me.chyxion.tigon.format.annotation.Trim;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -7,7 +7,7 @@ import javax.validation.constraints.Pattern;
import me.chyxion.tigon.format.annotation.Trim;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import static com.pudonghot.ambition.crm.common.Constants.GENDER_REGEXP;
/**

View File

@ -3,9 +3,9 @@ package com.pudonghot.ambition.crm.form.update;
import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FU2;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.format.annotation.Trim;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import me.chyxion.tigon.format.annotation.EmptyToNull;
/**

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FU2;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FU2;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -5,7 +5,7 @@ import lombok.Setter;
import me.chyxion.tigon.form.FU2;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -3,7 +3,7 @@ package com.pudonghot.ambition.crm.form.update;
import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.form.FU2;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -8,7 +8,7 @@ import javax.validation.constraints.Pattern;
import me.chyxion.tigon.format.annotation.Trim;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
import me.chyxion.tigon.format.annotation.EmptyToNull;
import static com.pudonghot.ambition.crm.common.Constants.GENDER_REGEXP;

View File

@ -3,7 +3,7 @@ package com.pudonghot.ambition.crm.form.update;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotBlank;
/**
* @version 0.0.1

View File

@ -11,7 +11,7 @@ import me.chyxion.tigon.mybatis.Table;
*/
@Getter
@Setter
@Table("crm_application_attachment")
public class ApplicationAttachment extends ApplicationFile {
@Table("crm_attached_file")
public class AttachedFile extends Attachment {
private static final long serialVersionUID = 1L;
}

View File

@ -11,7 +11,7 @@ import me.chyxion.tigon.mybatis.Table;
*/
@Getter
@Setter
@Table("crm_application_image")
public class ApplicationImage extends ApplicationFile {
@Table("crm_attached_image")
public class AttachedImage extends Attachment {
private static final long serialVersionUID = 1L;
}

View File

@ -3,6 +3,7 @@ package com.pudonghot.ambition.crm.model;
import lombok.Getter;
import lombok.Setter;
import me.chyxion.tigon.model.M3;
import lombok.experimental.FieldNameConstants;
/**
* @author Donghuang <br>
@ -11,18 +12,13 @@ import me.chyxion.tigon.model.M3;
*/
@Getter
@Setter
public class ApplicationFile extends M3<String, String> {
@FieldNameConstants(prefix = "")
public class Attachment extends M3<String, String> {
private static final long serialVersionUID = 1L;
// Column Names
public static final String FILE_ID = "file_id";
public static final String URL = "url";
public static final String APPLICATION_ID = "application_id";
public static final String SORT = "sort";
// Properties
private String ownerId;
private String fileId;
private String url;
private String applicationId;
private float sort;
}

View File

@ -98,6 +98,12 @@
<artifactId>commons-beanutils</artifactId>
<!-- <version>1.9.2</version> -->
<version>1.8.3</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jdom</groupId>