commit
a450d50615
@ -0,0 +1,54 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.descriptor;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 贷款申请信息描述
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class LoanApplicationDescriptor {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
private String clientId;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
private String businessName;
|
||||||
|
|
||||||
|
private String industry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理状态值
|
||||||
|
*/
|
||||||
|
private String statusDescription;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注信息
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请来源
|
||||||
|
*/
|
||||||
|
private Integer source;
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.entity;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.descriptor.LoanApplicationDescriptor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 贷款申请信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class LoanApplication {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
private Timestamp modifyTime;
|
||||||
|
|
||||||
|
private String creator;
|
||||||
|
|
||||||
|
private String modifier;
|
||||||
|
|
||||||
|
private String clientId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系人姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 联系人手机
|
||||||
|
*/
|
||||||
|
private String phone;
|
||||||
|
/**
|
||||||
|
* 联系人邮箱
|
||||||
|
*/
|
||||||
|
private String email;
|
||||||
|
/**
|
||||||
|
* 商业名称
|
||||||
|
*/
|
||||||
|
private String businessName;
|
||||||
|
/**
|
||||||
|
* 行业
|
||||||
|
*/
|
||||||
|
private String industry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理状态
|
||||||
|
*/
|
||||||
|
private LoanApplicationStatus status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注信息
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请来源
|
||||||
|
*/
|
||||||
|
private Integer source;
|
||||||
|
|
||||||
|
public LoanApplicationDescriptor describe() {
|
||||||
|
return new LoanApplicationDescriptor()
|
||||||
|
.setId(this.id)
|
||||||
|
.setClientId(this.clientId)
|
||||||
|
.setCreateTime(this.createTime)
|
||||||
|
.setName(this.name)
|
||||||
|
.setPhone(this.phone)
|
||||||
|
.setEmail(this.email)
|
||||||
|
.setBusinessName(this.businessName)
|
||||||
|
.setIndustry(this.industry)
|
||||||
|
.setStatus(this.status.value())
|
||||||
|
.setStatusDescription(this.status.description())
|
||||||
|
.setRemark(this.remark)
|
||||||
|
.setSource(this.source);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.entity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 贷款申请状态 0:待处理、1:处理中、2:已处理
|
||||||
|
*/
|
||||||
|
public enum LoanApplicationStatus {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待处理
|
||||||
|
*/
|
||||||
|
READY {
|
||||||
|
@Override
|
||||||
|
public int code() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String value() {
|
||||||
|
return "READY";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String description() {
|
||||||
|
return "待处理";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 处理中
|
||||||
|
*/
|
||||||
|
PROCESSING {
|
||||||
|
@Override
|
||||||
|
public int code() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String value() {
|
||||||
|
return "PROCESSING";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String description() {
|
||||||
|
return "处理中";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 已处理
|
||||||
|
*/
|
||||||
|
COMPLETED {
|
||||||
|
@Override
|
||||||
|
public int code() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String value() {
|
||||||
|
return "COMPLETED";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String description() {
|
||||||
|
return "已处理";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取代码。
|
||||||
|
*
|
||||||
|
* @return 代码
|
||||||
|
*/
|
||||||
|
public abstract int code();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取代码对应的值。
|
||||||
|
*
|
||||||
|
* @return 代码值
|
||||||
|
*/
|
||||||
|
public abstract String value();
|
||||||
|
|
||||||
|
public abstract String description();
|
||||||
|
|
||||||
|
public static LoanApplicationStatus codeOf(int code) {
|
||||||
|
for (LoanApplicationStatus status : LoanApplicationStatus.values()) {
|
||||||
|
if (status.code() == code) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return LoanApplicationStatus.READY;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.request;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.LoanApplicationStatus;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class ModifyLoanApplicationRequest {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态信息
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注信息
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
public ModifyLoanApplicationRequest build(String id, String status, String remark) {
|
||||||
|
return new ModifyLoanApplicationRequest()
|
||||||
|
.setId(id)
|
||||||
|
.setStatus(LoanApplicationStatus.valueOf(status).code())
|
||||||
|
.setRemark(remark);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.repository;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.LoanApplication;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.request.ModifyLoanApplicationRequest;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface LoanApplicationRepository {
|
||||||
|
|
||||||
|
PageList<LoanApplication> listPagedLoanApplication(Map<String, Object> params, PageBounds pageBounds);
|
||||||
|
|
||||||
|
LoanApplication getById(String id);
|
||||||
|
|
||||||
|
void changeLoanApplication(ModifyLoanApplicationRequest request);
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.service;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.descriptor.LoanApplicationDescriptor;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.web.command.ModifyLoanApplicationCommand;
|
||||||
|
import au.com.royalpay.payment.manage.support.representation.PageListRepresentation;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface LoanApplicationService {
|
||||||
|
|
||||||
|
PageListRepresentation<LoanApplicationDescriptor> listPagedLoanApplication(Map<String, Object> params, PageBounds pageBounds);
|
||||||
|
|
||||||
|
LoanApplicationDescriptor getById(String id);
|
||||||
|
|
||||||
|
void changeLoanApplication(String id, ModifyLoanApplicationCommand command);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.web;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.descriptor.LoanApplicationDescriptor;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.service.LoanApplicationService;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.web.command.ModifyLoanApplicationCommand;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 贷款申请资源
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/partners")
|
||||||
|
public class RestLoanApplicationController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LoanApplicationService applicationService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取贷款申请详情
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/loanApplications/{id}", method = RequestMethod.GET)
|
||||||
|
public LoanApplicationDescriptor getLoanApplication(@PathVariable("id") String id) {
|
||||||
|
return applicationService.getById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新贷款申请信息
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @param command 入参
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/loanApplications/{id}", method = RequestMethod.PUT)
|
||||||
|
public void changeLoanApplication(@PathVariable("id") String id,
|
||||||
|
@RequestBody ModifyLoanApplicationCommand command) {
|
||||||
|
applicationService.changeLoanApplication(id, command);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.web;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.descriptor.LoanApplicationDescriptor;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.service.LoanApplicationService;
|
||||||
|
import au.com.royalpay.payment.manage.support.representation.PageListRepresentation;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.Order;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.constraints.Min;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 贷款申请列表资源
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/partners")
|
||||||
|
public class RestLoanApplicationsController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LoanApplicationService applicationService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 贷款申请分页列表
|
||||||
|
*
|
||||||
|
* @param params
|
||||||
|
* @param page
|
||||||
|
* @param pageSize
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/loanApplications", method = RequestMethod.GET)
|
||||||
|
public Object listPagedLoanApplication(@RequestParam Map<String, Object> params,
|
||||||
|
@Min(1) @RequestParam(value = "page", required = false, defaultValue = "1") int page,
|
||||||
|
@Min(1) @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize) {
|
||||||
|
PageBounds pageBounds = new PageBounds(page, pageSize, Order.formString("create_time.desc"));
|
||||||
|
PageListRepresentation<LoanApplicationDescriptor> result = applicationService.listPagedLoanApplication(params, pageBounds);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.domain.web.command;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class ModifyLoanApplicationCommand {
|
||||||
|
|
||||||
|
@NotBlank(message = "error.payment.valid.param_missing")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
@NotBlank(message = "error.payment.valid.param_missing")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.infrastructure.repository;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.LoanApplication;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.request.ModifyLoanApplicationRequest;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.repository.LoanApplicationRepository;
|
||||||
|
import au.com.royalpay.payment.manage.mappers.loanapplication.LoanApplicationMapper;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class LoanApplicationRepositoryImpl implements LoanApplicationRepository {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LoanApplicationMapper mapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageList<LoanApplication> listPagedLoanApplication(Map<String, Object> params, PageBounds pageBounds) {
|
||||||
|
return mapper.listPagedLoanApplication(params, pageBounds);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LoanApplication getById(String id) {
|
||||||
|
return mapper.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void changeLoanApplication(ModifyLoanApplicationRequest request) {
|
||||||
|
mapper.updateLoanApplication(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package au.com.royalpay.payment.manage.loanapplicaiton.infrastructure.service;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.descriptor.LoanApplicationDescriptor;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.LoanApplication;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.request.ModifyLoanApplicationRequest;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.repository.LoanApplicationRepository;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.service.LoanApplicationService;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.web.command.ModifyLoanApplicationCommand;
|
||||||
|
import au.com.royalpay.payment.manage.support.representation.PageListRepresentation;
|
||||||
|
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class LoanApplicationServiceImpl implements LoanApplicationService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LoanApplicationRepository repository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageListRepresentation<LoanApplicationDescriptor> listPagedLoanApplication(Map<String, Object> params, PageBounds pageBounds) {
|
||||||
|
PageList<LoanApplication> loanApplications = repository.listPagedLoanApplication(params, pageBounds);
|
||||||
|
PageList<LoanApplicationDescriptor> loanApplicationDescriptors = new PageList<>(loanApplications.getPaginator());
|
||||||
|
loanApplications.forEach(item -> {
|
||||||
|
loanApplicationDescriptors.add(item.describe());
|
||||||
|
});
|
||||||
|
return new PageListRepresentation<>(loanApplicationDescriptors);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LoanApplicationDescriptor getById(String id) {
|
||||||
|
LoanApplication application = this.getLoanApplication(id);
|
||||||
|
return application.describe();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void changeLoanApplication(String id, ModifyLoanApplicationCommand command) {
|
||||||
|
LoanApplication application = this.getLoanApplication(id);
|
||||||
|
repository.changeLoanApplication(new ModifyLoanApplicationRequest().build(application.getId(), command.getStatus(), command.getRemark()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private LoanApplication getLoanApplication(String id) {
|
||||||
|
LoanApplication application = repository.getById(id);
|
||||||
|
if (application == null) {
|
||||||
|
throw new BadRequestException("Loan is not exist");
|
||||||
|
}
|
||||||
|
return application;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package au.com.royalpay.payment.manage.mappers.loanapplication;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.LoanApplication;
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.request.ModifyLoanApplicationRequest;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
import com.yixsoft.support.mybatis.autosql.annotations.AutoMapper;
|
||||||
|
import com.yixsoft.support.mybatis.autosql.annotations.AutoSql;
|
||||||
|
import com.yixsoft.support.mybatis.autosql.annotations.SqlType;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@AutoMapper(tablename = "sys_clients_loans_apply", pkName = "id")
|
||||||
|
public interface LoanApplicationMapper {
|
||||||
|
|
||||||
|
PageList<LoanApplication> listPagedLoanApplication(Map<String, Object> params, PageBounds pageBounds);
|
||||||
|
|
||||||
|
@AutoSql(SqlType.INSERT)
|
||||||
|
void save(JSONObject request);
|
||||||
|
|
||||||
|
LoanApplication findById(@Param("id") String id);
|
||||||
|
|
||||||
|
@AutoSql(SqlType.UPDATE)
|
||||||
|
void updateLoanApplication(ModifyLoanApplicationRequest request);
|
||||||
|
|
||||||
|
@AutoSql(SqlType.DELETE)
|
||||||
|
void deleteLoanApplication(@Param("id") String id);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package au.com.royalpay.payment.manage.officialwebsit.domain.repository;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
public interface PartnerApplyRepository {
|
||||||
|
void save(JSONObject applyInfo);
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package au.com.royalpay.payment.manage.officialwebsit.domain.service;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.web.command.PartnerApplyInfo;
|
||||||
|
|
||||||
|
public interface PartnerApplyService {
|
||||||
|
void applyPartner(PartnerApplyInfo apply);
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package au.com.royalpay.payment.manage.officialwebsit.domain.web;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.service.PartnerApplyService;
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.web.command.PartnerApplyInfo;
|
||||||
|
import au.com.royalpay.payment.tools.env.PlatformEnvironment;
|
||||||
|
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
||||||
|
import au.com.royalpay.payment.tools.http.HttpUtils;
|
||||||
|
import org.springframework.validation.Errors;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡支付/贷款申请资源
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/partners")
|
||||||
|
public class RestPartnerApplyController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PartnerApplyService applyService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡支付/贷款申请入口
|
||||||
|
*
|
||||||
|
* @param apply
|
||||||
|
* @param errors
|
||||||
|
* @param response
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/website/application", method = RequestMethod.POST)
|
||||||
|
public void applyPartner(@RequestBody @Valid PartnerApplyInfo apply,
|
||||||
|
Errors errors, HttpServletResponse response) throws Exception {
|
||||||
|
if (!PlatformEnvironment.getEnv().enablePartnerApply()) {
|
||||||
|
throw new BadRequestException("商户自主申请暂时关闭. Merchant Apply disabled at the moment.");
|
||||||
|
}
|
||||||
|
HttpUtils.handleValidErrors(errors);
|
||||||
|
applyService.applyPartner(apply);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package au.com.royalpay.payment.manage.officialwebsit.infrastructure.repository;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.mappers.loanapplication.LoanApplicationMapper;
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.repository.PartnerApplyRepository;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class PartnerApplyRepositoryImpl implements PartnerApplyRepository {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LoanApplicationMapper mapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save(JSONObject applyInfo) {
|
||||||
|
mapper.save(applyInfo);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package au.com.royalpay.payment.manage.officialwebsit.infrastructure.service;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.LoanApplicationStatus;
|
||||||
|
import au.com.royalpay.payment.manage.mappers.system.ClientApplyMapper;
|
||||||
|
import au.com.royalpay.payment.manage.merchants.events.ClientApplyEvent;
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.entity.PartnerApplyType;
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.repository.PartnerApplyRepository;
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.service.PartnerApplyService;
|
||||||
|
import au.com.royalpay.payment.manage.officialwebsit.domain.web.command.PartnerApplyInfo;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
import org.springframework.context.ApplicationEventPublisherAware;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class PartnerApplyServiceImpl implements PartnerApplyService, ApplicationEventPublisherAware {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ClientApplyMapper clientApplyMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PartnerApplyRepository applyRepository;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ApplicationEventPublisher publisher;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
|
||||||
|
this.publisher = applicationEventPublisher;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void applyPartner(PartnerApplyInfo apply) {
|
||||||
|
PartnerApplyType applyType = PartnerApplyType.typeOf(apply.getType());
|
||||||
|
if (applyType.isCard()) {
|
||||||
|
JSONObject applyInfo = this.buildCardPaymentApplyInfo(apply);
|
||||||
|
clientApplyMapper.save(applyInfo);
|
||||||
|
publisher.publishEvent(new ClientApplyEvent(this, applyInfo));
|
||||||
|
}
|
||||||
|
if (applyType.isLoans()) {
|
||||||
|
JSONObject applyInfo = this.buildLoansApplyInfo(apply);
|
||||||
|
applyRepository.save(applyInfo);
|
||||||
|
publisher.publishEvent(new ClientApplyEvent(this, applyInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private JSONObject buildLoansApplyInfo(PartnerApplyInfo apply) {
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
String name = apply.getFirstName() + " " + apply.getSurname();
|
||||||
|
result.put("id", UUID.randomUUID().toString());
|
||||||
|
result.put("name", name);
|
||||||
|
result.put("phone", apply.getPhoneNumber());
|
||||||
|
result.put("email", apply.getEmailAddress());
|
||||||
|
result.put("industry", apply.getIndustry());
|
||||||
|
result.put("business_name", apply.getBusinessName());
|
||||||
|
result.put("status", LoanApplicationStatus.READY.code());
|
||||||
|
result.put("source", 0);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JSONObject buildCardPaymentApplyInfo(PartnerApplyInfo apply) {
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
String name = apply.getFirstName() + " " + apply.getSurname();
|
||||||
|
result.put("client_apply_id", UUID.randomUUID().toString());
|
||||||
|
result.put("contact_person", name);
|
||||||
|
result.put("contact_phone", apply.getPhoneNumber());
|
||||||
|
result.put("contact_email", apply.getEmailAddress());
|
||||||
|
result.put("company_name", apply.getBusinessName());
|
||||||
|
result.put("short_name", apply.getBusinessName());
|
||||||
|
result.put("industry", apply.getIndustry());
|
||||||
|
result.put("type", 1);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package au.com.royalpay.payment.manage.support.representation;
|
||||||
|
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.Paginator;
|
||||||
|
|
||||||
|
public class PageListRepresentation<T> {
|
||||||
|
|
||||||
|
private PageList data;
|
||||||
|
|
||||||
|
private Paginator pagination;
|
||||||
|
|
||||||
|
public PageListRepresentation(PageList pageList) {
|
||||||
|
this.data = pageList;
|
||||||
|
this.pagination = pageList.getPaginator();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public PageList getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(PageList data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Paginator getPagination() {
|
||||||
|
return pagination;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPagination(Paginator pagination) {
|
||||||
|
this.pagination = pagination;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
<?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="au.com.royalpay.payment.manage.mappers.loanapplication.LoanApplicationMapper">
|
||||||
|
|
||||||
|
<resultMap id="loanApplicationMap"
|
||||||
|
type="au.com.royalpay.payment.manage.loanapplicaiton.domain.entity.LoanApplication">
|
||||||
|
<id column="id" property="id"/>
|
||||||
|
<result column="create_time" property="createTime"/>
|
||||||
|
<result column="modify_time" property="modifyTime"/>
|
||||||
|
<result column="creator" property="creator"/>
|
||||||
|
<result column="modifier" property="modifier"/>
|
||||||
|
<result column="client_id" property="clientId"/>
|
||||||
|
<result column="name" property="name"/>
|
||||||
|
<result column="phone" property="phone"/>
|
||||||
|
<result column="email" property="email"/>
|
||||||
|
<result column="business_name" property="businessName"/>
|
||||||
|
<result column="industry" property="industry"/>
|
||||||
|
<result column="remark" property="remark"/>
|
||||||
|
<result column="source" property="source"/>
|
||||||
|
<result column="status" property="status" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="listPagedLoanApplication"
|
||||||
|
resultMap="loanApplicationMap">
|
||||||
|
SELECT * FROM sys_clients_loans_apply scla
|
||||||
|
<where>
|
||||||
|
<if test="businessName!=null">
|
||||||
|
<bind name="business_name_pattern" value="'%'+businessName+'%'"/>
|
||||||
|
and scla.business_name like #{business_name_pattern}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY scla.create_time DESC
|
||||||
|
</select>
|
||||||
|
<select id="findById"
|
||||||
|
resultMap="loanApplicationMap">
|
||||||
|
SELECT * FROM sys_clients_loans_apply scla
|
||||||
|
WHERE scla.id=#{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
@ -0,0 +1,90 @@
|
|||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="box-solid">
|
||||||
|
<div class="box box-warning">
|
||||||
|
<div class="box-header">
|
||||||
|
<div class="form-inline">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="short-name-search">Company Name</label>
|
||||||
|
<input type="text" class="form-control" id="short-name-search"
|
||||||
|
ng-model="params.businessName">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<button class="btn btn-primary" type="button" ng-click="loadPartners(1)"><i
|
||||||
|
class="fa fa-search"></i></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="box">
|
||||||
|
<div class="box-header">
|
||||||
|
<h3 class="box-title">Application List</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="box-body no-padding table-responsive">
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<th>Application Time</th>
|
||||||
|
<th>Company Name</th>
|
||||||
|
<th>Source</th>
|
||||||
|
<th>Approve Status</th>
|
||||||
|
<th>Remark</th>
|
||||||
|
<th>Operation</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="partner in partners">
|
||||||
|
<td ng-bind="partner.createTime"></td>
|
||||||
|
<td ng-bind="partner.businessName"></td>
|
||||||
|
<td>
|
||||||
|
<span ng-if="partner.source==0">PC</span>
|
||||||
|
<span ng-if="partner.source==1">公众号菜单</span>
|
||||||
|
<span ng-if="partner.source==2">公众号推送</span>
|
||||||
|
<span ng-if="partner.source==3">小程序申请</span>
|
||||||
|
<span ng-if="partner.source==4">App申请</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{partner.statusDescription}}</span>
|
||||||
|
</td>
|
||||||
|
<td ng-bind="partner.remark|limitTo:10" title="{{partner.remark}}"></td>
|
||||||
|
<td>
|
||||||
|
<a class="text-primary" role="button" ng-click="handleButton(partner)">
|
||||||
|
<i class="fa fa-cog"></i> handle
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="box-footer" ng-if="partners.length">
|
||||||
|
<uib-pagination class="pagination"
|
||||||
|
total-items="pagination.totalCount"
|
||||||
|
boundary-links="true"
|
||||||
|
ng-model="pagination.page"
|
||||||
|
items-per-page="pagination.limit"
|
||||||
|
max-size="10"
|
||||||
|
ng-change="loadPartners()"
|
||||||
|
previous-text="‹"
|
||||||
|
next-text="›"
|
||||||
|
first-text="«"
|
||||||
|
last-text="»"></uib-pagination>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">Total Records:{{pagination.totalCount}};Total
|
||||||
|
Pages:{{pagination.totalPages}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,33 @@
|
|||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<form name="partnerForm" novalidate>
|
||||||
|
<div class="form-group" style="display:flex;margin-top: 26px;">
|
||||||
|
<label class="control-label col-xs-4 col-sm-3">Status</label>
|
||||||
|
<div class="col-xs-8">
|
||||||
|
<select class="form-control" ng-model="partner.status">
|
||||||
|
<option value="READY">READY</option>
|
||||||
|
<option value="PROCESSING">PROCESSING</option>
|
||||||
|
<option value="COMPLETED">COMPLETED</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group" style="display:flex;">
|
||||||
|
<label class="control-label col-sm-3" for="short-id-input">Remark</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input class="form-control" ng-model="partner.remark"
|
||||||
|
type="text"
|
||||||
|
id="short-id-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="alert alert-danger" ng-if="errmsg" ng-bind="errmsg"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-danger" ng-click="$dismiss()">Cancel</button>
|
||||||
|
<button type="button" class="btn btn-success" ng-click="submit(partnerForm)">Submit</button>
|
||||||
|
</div>
|
Loading…
Reference in new issue