commit
35f66bf11a
@ -0,0 +1,24 @@
|
|||||||
|
package au.com.royalpay.payment.manage.mappers.risk;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create by yixian at 2017-12-21 11:45
|
||||||
|
*/
|
||||||
|
@AutoMapper(tablename = "risk_merchant_detail_log", pkName = "id")
|
||||||
|
public interface RiskMerchantDetailLogMapper {
|
||||||
|
@AutoSql(type = SqlType.INSERT)
|
||||||
|
void save(JSONObject record);
|
||||||
|
|
||||||
|
@AutoSql(type = SqlType.UPDATE)
|
||||||
|
void update(JSONObject record);
|
||||||
|
|
||||||
|
PageList<JSONObject> query(JSONObject params, PageBounds pagination);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package au.com.royalpay.payment.manage.mappers.risk;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create by yixian at 2017-12-21 11:45
|
||||||
|
*/
|
||||||
|
@AutoMapper(tablename = "risk_merchant_record", pkName = "id")
|
||||||
|
public interface RiskMerchantRecordMapper {
|
||||||
|
@AutoSql(type = SqlType.UPDATE)
|
||||||
|
void update(JSONObject record);
|
||||||
|
|
||||||
|
@AutoSql(type = SqlType.SELECT)
|
||||||
|
JSONObject findById(@Param("id") String id);
|
||||||
|
|
||||||
|
PageList<JSONObject> query(JSONObject params, PageBounds pagination);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package au.com.royalpay.payment.manage.mappers.risk;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageList;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create by yixian at 2017-12-21 11:45
|
||||||
|
*/
|
||||||
|
@AutoMapper(tablename = "risk_transaction_log", pkName = "id")
|
||||||
|
public interface RiskTransactionLogMapper {
|
||||||
|
@AutoSql(type = SqlType.SELECT)
|
||||||
|
JSONObject findByOrderId(@Param("order_id") String order_id);
|
||||||
|
|
||||||
|
@AutoSql(type = SqlType.SELECT)
|
||||||
|
List<JSONObject> findByRecordId(@Param("record_id") String record_id);
|
||||||
|
|
||||||
|
PageList<JSONObject> query(JSONObject params, PageBounds pagination);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package au.com.royalpay.payment.manage.mappers.risk;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||||
|
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create by yixian at 2017-12-21 11:45
|
||||||
|
*/
|
||||||
|
@AutoMapper(tablename = "risk_white_list", pkName = "client_id")
|
||||||
|
public interface RiskWhiteListMapper {
|
||||||
|
@AutoSql(type = SqlType.SELECT)
|
||||||
|
JSONObject findByClientMoniker(@Param("client_moniker") String client_moniker);
|
||||||
|
|
||||||
|
@AutoSql(type = SqlType.INSERT)
|
||||||
|
void save(JSONObject record);
|
||||||
|
|
||||||
|
@AutoSql(type = SqlType.UPDATE)
|
||||||
|
void update(JSONObject record);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.bean;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
public class AddRiskDetailLog {
|
||||||
|
|
||||||
|
@JsonProperty("record_id")
|
||||||
|
private String record_id;
|
||||||
|
|
||||||
|
@JsonProperty("files")
|
||||||
|
private String files;
|
||||||
|
|
||||||
|
@JsonProperty("operation")
|
||||||
|
private String operation;
|
||||||
|
|
||||||
|
@JsonProperty("remark")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
public JSONObject params() {
|
||||||
|
JSONObject params = new JSONObject();
|
||||||
|
params.put("record_id", this.record_id);
|
||||||
|
if (StringUtils.isNotEmpty(this.files)) {
|
||||||
|
params.put("files", this.files);
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(this.operation)) {
|
||||||
|
params.put("operation", this.operation);
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(this.remark)) {
|
||||||
|
params.put("remark", this.remark);
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRecord_id() {
|
||||||
|
return record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecord_id(String record_id) {
|
||||||
|
this.record_id = record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFiles() {
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFiles(String files) {
|
||||||
|
this.files = files;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOperation() {
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOperation(String operation) {
|
||||||
|
this.operation = operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemark() {
|
||||||
|
return remark;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemark(String remark) {
|
||||||
|
this.remark = remark;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.bean;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
public class DealRiskRecord {
|
||||||
|
|
||||||
|
private String recordId;
|
||||||
|
private BigDecimal limitAmount;
|
||||||
|
@JsonProperty(defaultValue = "false")
|
||||||
|
private boolean disableMerchat;
|
||||||
|
|
||||||
|
public String getRecordId() {
|
||||||
|
return recordId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecordId(String recordId) {
|
||||||
|
this.recordId = recordId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getLimitAmount() {
|
||||||
|
return limitAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLimitAmount(BigDecimal limitAmount) {
|
||||||
|
this.limitAmount = limitAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getDisableMerchat() {
|
||||||
|
return disableMerchat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisableMerchat(Boolean disableMerchat) {
|
||||||
|
this.disableMerchat = disableMerchat;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.bean;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
|
||||||
|
public class QueryRiskDetail {
|
||||||
|
|
||||||
|
private String record_id;
|
||||||
|
private String c_end_time;
|
||||||
|
private int client_id;
|
||||||
|
|
||||||
|
private int limit = 20;
|
||||||
|
private int page;
|
||||||
|
|
||||||
|
public JSONObject toParams() {
|
||||||
|
JSONObject params = new JSONObject();
|
||||||
|
params.put("record_id", this.record_id);
|
||||||
|
params.put("client_id", this.client_id);
|
||||||
|
try {
|
||||||
|
if (c_end_time != null) {
|
||||||
|
params.put("c_end_time", DateUtils.parseDate(this.c_end_time, new String[] { "yyyy-MM-dd HH:mm:ss" }));
|
||||||
|
}
|
||||||
|
} catch (ParseException e) {
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRecord_id() {
|
||||||
|
return record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecord_id(String record_id) {
|
||||||
|
this.record_id = record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getC_end_time() {
|
||||||
|
return c_end_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setC_end_time(String c_end_time) {
|
||||||
|
this.c_end_time = c_end_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClient_id() {
|
||||||
|
return client_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClient_id(int client_id) {
|
||||||
|
this.client_id = client_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLimit() {
|
||||||
|
return limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLimit(int limit) {
|
||||||
|
this.limit = limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPage() {
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPage(int page) {
|
||||||
|
this.page = page;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.bean;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
|
||||||
|
public class QueryRiskOrder {
|
||||||
|
|
||||||
|
private String record_id;
|
||||||
|
private String c_end_time;
|
||||||
|
private int client_id;
|
||||||
|
private int limit = 20;
|
||||||
|
private int page;
|
||||||
|
|
||||||
|
public JSONObject toParams() {
|
||||||
|
JSONObject params = new JSONObject();
|
||||||
|
params.put("record_id", this.record_id);
|
||||||
|
params.put("client_id", this.client_id);
|
||||||
|
try {
|
||||||
|
if (c_end_time != null) {
|
||||||
|
params.put("c_end_time", DateUtils.parseDate(this.c_end_time, new String[] { "yyyy-MM-dd HH:mm:ss" }));
|
||||||
|
}
|
||||||
|
} catch (ParseException e) {
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRecord_id() {
|
||||||
|
return record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecord_id(String record_id) {
|
||||||
|
this.record_id = record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLimit() {
|
||||||
|
return limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLimit(int limit) {
|
||||||
|
this.limit = limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPage() {
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPage(int page) {
|
||||||
|
this.page = page;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getC_end_time() {
|
||||||
|
return c_end_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setC_end_time(String c_end_time) {
|
||||||
|
this.c_end_time = c_end_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClient_id() {
|
||||||
|
return client_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClient_id(int client_id) {
|
||||||
|
this.client_id = client_id;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.bean;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
|
||||||
|
public class QueryRiskRecord {
|
||||||
|
|
||||||
|
private String status;
|
||||||
|
private String client_moniker;
|
||||||
|
private String record_id;
|
||||||
|
private String c_end_time;
|
||||||
|
private int client_id;
|
||||||
|
|
||||||
|
private int limit = 20;
|
||||||
|
private int page;
|
||||||
|
|
||||||
|
public JSONObject toParams() {
|
||||||
|
JSONObject params = new JSONObject();
|
||||||
|
params.put("status", this.status);
|
||||||
|
params.put("client_moniker", this.client_moniker);
|
||||||
|
params.put("record_id", this.record_id);
|
||||||
|
params.put("client_id", this.client_id);
|
||||||
|
try {
|
||||||
|
if (c_end_time != null) {
|
||||||
|
params.put("c_end_time", DateUtils.parseDate(this.c_end_time, new String[] { "yyyy-MM-dd HH:mm:ss" }));
|
||||||
|
}
|
||||||
|
} catch (ParseException e) {
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRecord_id() {
|
||||||
|
return record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecord_id(String record_id) {
|
||||||
|
this.record_id = record_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClient_moniker() {
|
||||||
|
return client_moniker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClient_moniker(String client_moniker) {
|
||||||
|
this.client_moniker = client_moniker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLimit() {
|
||||||
|
return limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLimit(int limit) {
|
||||||
|
this.limit = limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPage() {
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPage(int page) {
|
||||||
|
this.page = page;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getC_end_time() {
|
||||||
|
return c_end_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setC_end_time(String c_end_time) {
|
||||||
|
this.c_end_time = c_end_time;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.core;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.AddRiskDetailLog;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.DealRiskRecord;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskDetail;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskOrder;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskRecord;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
public interface RiskMerchantService {
|
||||||
|
|
||||||
|
void addDetailLog(AddRiskDetailLog addRiskDetailLog, JSONObject account);
|
||||||
|
|
||||||
|
void DropOrderRiskRecord(JSONObject account,String recordId);
|
||||||
|
|
||||||
|
void noopRiskRecord(JSONObject account,String recordId);
|
||||||
|
|
||||||
|
void dealRiskRecord(JSONObject account,DealRiskRecord dealRiskRecord);
|
||||||
|
|
||||||
|
void dealRiskRecordDirectly(JSONObject account,String record_id);
|
||||||
|
|
||||||
|
JSONObject getRiskOrders(QueryRiskOrder queryRiskOrder);
|
||||||
|
|
||||||
|
JSONObject getRiskRecords(QueryRiskRecord queryRiskRecord);
|
||||||
|
|
||||||
|
void addWhiteList(String client_moinker);
|
||||||
|
|
||||||
|
void disableWhiteList(String client_moinker);
|
||||||
|
|
||||||
|
JSONObject getRecordById(String record_id);
|
||||||
|
|
||||||
|
JSONObject getRiskDetails(QueryRiskDetail queryRiskDetail);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,214 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.core.impl;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.mappers.risk.RiskMerchantDetailLogMapper;
|
||||||
|
import au.com.royalpay.payment.manage.mappers.risk.RiskMerchantRecordMapper;
|
||||||
|
import au.com.royalpay.payment.manage.mappers.risk.RiskTransactionLogMapper;
|
||||||
|
import au.com.royalpay.payment.manage.mappers.risk.RiskWhiteListMapper;
|
||||||
|
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.AddRiskDetailLog;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.DealRiskRecord;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskDetail;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskOrder;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskRecord;
|
||||||
|
import au.com.royalpay.payment.manage.risk.core.RiskMerchantService;
|
||||||
|
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
||||||
|
import au.com.royalpay.payment.tools.exceptions.NotFoundException;
|
||||||
|
import au.com.royalpay.payment.tools.utils.PageListUtils;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class RiskMerchantServiceImpl implements RiskMerchantService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RiskMerchantRecordMapper riskMerchantRecordMapper;
|
||||||
|
@Resource
|
||||||
|
private RiskMerchantDetailLogMapper riskMerchantDetailLogMapper;
|
||||||
|
@Resource
|
||||||
|
private RiskTransactionLogMapper riskTransactionLogMapper;
|
||||||
|
@Resource
|
||||||
|
private RiskWhiteListMapper riskWhiteListMapper;
|
||||||
|
@Resource
|
||||||
|
private ClientManager clientManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void addDetailLog(AddRiskDetailLog addRiskDetailLog, JSONObject account) {
|
||||||
|
JSONObject record = riskMerchantRecordMapper.findById(addRiskDetailLog.getRecord_id());
|
||||||
|
if (record == null) {
|
||||||
|
throw new NotFoundException("Risk Record Not Found Please Check");
|
||||||
|
}
|
||||||
|
JSONObject detail = addRiskDetailLog.params();
|
||||||
|
detail.put("auditor", account.getString("display_name"));
|
||||||
|
detail.put("client_id", record.getIntValue("client_id"));
|
||||||
|
detail.put("auditor_id", account.getString("manager_id"));
|
||||||
|
detail.put("create_time", new Date());
|
||||||
|
riskMerchantDetailLogMapper.save(detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void DropOrderRiskRecord(JSONObject account, String recordId) {
|
||||||
|
JSONObject riskRecord = riskMerchantRecordMapper.findById(recordId);
|
||||||
|
if (riskRecord == null) {
|
||||||
|
throw new NotFoundException("Risk Record Not Found");
|
||||||
|
}
|
||||||
|
if (riskRecord.getIntValue("status") != 0) {
|
||||||
|
throw new BadRequestException("The Record Has Been Handled");
|
||||||
|
}
|
||||||
|
JSONObject record = new JSONObject();
|
||||||
|
record.put("id", recordId);
|
||||||
|
record.put("status", "1");
|
||||||
|
riskMerchantRecordMapper.update(record);
|
||||||
|
JSONObject detail = new JSONObject();
|
||||||
|
detail.put("record_id", recordId);
|
||||||
|
detail.put("client_id", riskRecord.getIntValue("client_id"));
|
||||||
|
detail.put("auditor", account.getString("display_name"));
|
||||||
|
detail.put("auditor_id", account.getString("manager_id"));
|
||||||
|
detail.put("remark", "进行掉单处理");
|
||||||
|
detail.put("create_time", new Date());
|
||||||
|
riskMerchantDetailLogMapper.save(detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void noopRiskRecord(JSONObject account, String recordId) {
|
||||||
|
JSONObject riskRecord = riskMerchantRecordMapper.findById(recordId);
|
||||||
|
if (riskRecord == null) {
|
||||||
|
throw new NotFoundException("Risk Record Not Found");
|
||||||
|
}
|
||||||
|
if (riskRecord.getIntValue("status") != 0) {
|
||||||
|
throw new BadRequestException("The Record Has Been Handled");
|
||||||
|
}
|
||||||
|
JSONObject record = new JSONObject();
|
||||||
|
record.put("id", recordId);
|
||||||
|
record.put("status", "2");
|
||||||
|
riskMerchantRecordMapper.update(record);
|
||||||
|
JSONObject detail = new JSONObject();
|
||||||
|
detail.put("record_id", recordId);
|
||||||
|
detail.put("client_id", riskRecord.getIntValue("client_id"));
|
||||||
|
detail.put("auditor", account.getString("display_name"));
|
||||||
|
detail.put("remark", "不做处理");
|
||||||
|
detail.put("create_time", new Date());
|
||||||
|
riskMerchantDetailLogMapper.save(detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void dealRiskRecord(JSONObject account, DealRiskRecord dealRiskRecord) {
|
||||||
|
JSONObject record = riskMerchantRecordMapper.findById(dealRiskRecord.getRecordId());
|
||||||
|
if (record == null) {
|
||||||
|
throw new NotFoundException("Risk Record Not Found Please Check");
|
||||||
|
}
|
||||||
|
if (record.getIntValue("status") != 0) {
|
||||||
|
throw new BadRequestException("The Record Has Been Handled");
|
||||||
|
}
|
||||||
|
String remark = "";
|
||||||
|
if (dealRiskRecord.getLimitAmount() != null) {
|
||||||
|
clientManager.setMaxOrderAmount(record.getString("client_moniker"), dealRiskRecord.getLimitAmount());
|
||||||
|
remark = remark + "限额" + dealRiskRecord.getLimitAmount();
|
||||||
|
|
||||||
|
}
|
||||||
|
if (dealRiskRecord.getDisableMerchat()) {
|
||||||
|
clientManager.switchChannelPermission(account, record.getString("client_moniker"), "Wechat", false);
|
||||||
|
clientManager.switchChannelPermission(account, record.getString("client_moniker"), "Alipay", false);
|
||||||
|
remark = remark + " 关闭支付通道";
|
||||||
|
}
|
||||||
|
JSONObject detail = new JSONObject();
|
||||||
|
detail.put("record_id", dealRiskRecord.getRecordId());
|
||||||
|
detail.put("client_id", record.getIntValue("client_id"));
|
||||||
|
detail.put("auditor", account.getString("display_name"));
|
||||||
|
detail.put("remark", StringUtils.isEmpty(remark) ? null : (remark = "处理结果:" + remark));
|
||||||
|
detail.put("create_time", new Date());
|
||||||
|
riskMerchantDetailLogMapper.save(detail);
|
||||||
|
record.put("status", 2);
|
||||||
|
riskMerchantRecordMapper.update(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void dealRiskRecordDirectly(JSONObject account, String record_id) {
|
||||||
|
JSONObject record = riskMerchantRecordMapper.findById(record_id);
|
||||||
|
if (record == null) {
|
||||||
|
throw new NotFoundException("Risk Record Not Found Please Check");
|
||||||
|
}
|
||||||
|
if (record.getIntValue("status") != 0) {
|
||||||
|
throw new BadRequestException("The Record Has Been Handled");
|
||||||
|
}
|
||||||
|
JSONObject detail = new JSONObject();
|
||||||
|
detail.put("record_id", record_id);
|
||||||
|
detail.put("client_id", record.getIntValue("client_id"));
|
||||||
|
detail.put("auditor", account.getString("display_name"));
|
||||||
|
detail.put("auditor_id", account.getString("manager_id"));
|
||||||
|
detail.put("remark", "结停");
|
||||||
|
detail.put("create_time", new Date());
|
||||||
|
riskMerchantDetailLogMapper.save(detail);
|
||||||
|
JSONObject recordUpdate = new JSONObject();
|
||||||
|
recordUpdate.put("id",record_id);
|
||||||
|
recordUpdate.put("status", 1);
|
||||||
|
riskMerchantRecordMapper.update(recordUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getRiskOrders(QueryRiskOrder queryRiskOrder) {
|
||||||
|
return PageListUtils.buildPageListResult(
|
||||||
|
riskTransactionLogMapper.query(queryRiskOrder.toParams(), new PageBounds(queryRiskOrder.getPage(), queryRiskOrder.getLimit())));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getRiskRecords(QueryRiskRecord queryRiskRecord) {
|
||||||
|
return PageListUtils.buildPageListResult(
|
||||||
|
riskMerchantRecordMapper.query(queryRiskRecord.toParams(), new PageBounds(queryRiskRecord.getPage(), queryRiskRecord.getLimit())));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addWhiteList(String client_moinker) {
|
||||||
|
JSONObject white = riskWhiteListMapper.findByClientMoniker(client_moinker);
|
||||||
|
if (white != null) {
|
||||||
|
white.put("is_valid", true);
|
||||||
|
riskWhiteListMapper.update(white);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
JSONObject client = clientManager.getClientInfoByMoniker(client_moinker);
|
||||||
|
if (client == null) {
|
||||||
|
throw new NotFoundException("Merchant Not Found Please Check");
|
||||||
|
}
|
||||||
|
JSONObject record = new JSONObject();
|
||||||
|
record.put("client_id", client.getIntValue("client_id"));
|
||||||
|
record.put("client_moniker", client.getString("client_moinker"));
|
||||||
|
record.put("create_time", new Date());
|
||||||
|
riskWhiteListMapper.save(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableWhiteList(String client_moinker) {
|
||||||
|
JSONObject white = riskWhiteListMapper.findByClientMoniker(client_moinker);
|
||||||
|
if (white == null) {
|
||||||
|
throw new NotFoundException("White List Not Found Please Check");
|
||||||
|
}
|
||||||
|
white.put("is_valid", false);
|
||||||
|
riskWhiteListMapper.update(white);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getRecordById(String record_id) {
|
||||||
|
return riskMerchantRecordMapper.findById(record_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getRiskDetails(QueryRiskDetail queryRiskDetail) {
|
||||||
|
return PageListUtils.buildPageListResult(
|
||||||
|
riskMerchantDetailLogMapper.query(queryRiskDetail.toParams(), new PageBounds(queryRiskDetail.getPage(), queryRiskDetail.getLimit())));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
package au.com.royalpay.payment.manage.risk.web;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.permission.manager.ManagerMapping;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.AddRiskDetailLog;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.DealRiskRecord;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskDetail;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskOrder;
|
||||||
|
import au.com.royalpay.payment.manage.risk.bean.QueryRiskRecord;
|
||||||
|
import au.com.royalpay.payment.manage.risk.core.RiskMerchantService;
|
||||||
|
import au.com.royalpay.payment.tools.CommonConsts;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by wangning on 08/12/2016.
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@ManagerMapping(value = "/sys/risk")
|
||||||
|
public class RiskController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RiskMerchantService riskMerchantService;
|
||||||
|
|
||||||
|
@RequestMapping(value = "/records", method = RequestMethod.GET)
|
||||||
|
public JSONObject list(QueryRiskRecord recordQuery) {
|
||||||
|
return riskMerchantService.getRiskRecords(recordQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/records/{record_id}", method = RequestMethod.GET)
|
||||||
|
public JSONObject getById(@PathVariable String record_id) {
|
||||||
|
return riskMerchantService.getRecordById(record_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/records/{record_id}/dropOrder", method = RequestMethod.PUT)
|
||||||
|
public void dropOrder(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable String record_id) {
|
||||||
|
riskMerchantService.DropOrderRiskRecord(manager, record_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/records/{record_id}/noop", method = RequestMethod.PUT)
|
||||||
|
public void noop(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable String record_id) {
|
||||||
|
riskMerchantService.noopRiskRecord(manager, record_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/records/{record_id}/directly", method = RequestMethod.PUT)
|
||||||
|
public void directly(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable String record_id) {
|
||||||
|
riskMerchantService.dealRiskRecordDirectly(manager, record_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/records/{record_id}/deal",method = RequestMethod.PUT)
|
||||||
|
public void dealRecord(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable String record_id, @RequestBody DealRiskRecord dealRiskRecord){
|
||||||
|
dealRiskRecord.setRecordId(record_id);
|
||||||
|
riskMerchantService.dealRiskRecord(manager,dealRiskRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/orders", method = RequestMethod.GET)
|
||||||
|
public JSONObject getRiskOrders(QueryRiskOrder queryRiskOrder) {
|
||||||
|
return riskMerchantService.getRiskOrders(queryRiskOrder);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/white/{client_moniker}", method = RequestMethod.POST)
|
||||||
|
public void addWhiteList(@PathVariable String client_moniker) {
|
||||||
|
riskMerchantService.addWhiteList(client_moniker);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/white/{client_moniker}/disable", method = RequestMethod.PUT)
|
||||||
|
public void disableWhiteList(@PathVariable String client_moniker) {
|
||||||
|
riskMerchantService.disableWhiteList(client_moniker);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/records/uploadFiles", method = RequestMethod.POST)
|
||||||
|
public void addRecordLog(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager,@RequestBody AddRiskDetailLog addRiskDetailLog) {
|
||||||
|
riskMerchantService.addDetailLog(addRiskDetailLog,manager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/details", method = RequestMethod.GET)
|
||||||
|
public JSONObject listDetails(QueryRiskDetail queryRiskDetail) {
|
||||||
|
return riskMerchantService.getRiskDetails(queryRiskDetail);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/details/remark", method = RequestMethod.POST)
|
||||||
|
public void addDetailRemark(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager,@RequestBody AddRiskDetailLog addRiskDetailLog ) {
|
||||||
|
riskMerchantService.addDetailLog(addRiskDetailLog,manager);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
<?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.risk.RiskMerchantDetailLogMapper">
|
||||||
|
<select id="query" resultType="com.alibaba.fastjson.JSONObject">
|
||||||
|
select *
|
||||||
|
from risk_merchant_detail_log
|
||||||
|
<where>
|
||||||
|
<if test="record_id!=null">
|
||||||
|
and record_id = #{record_id}
|
||||||
|
</if>
|
||||||
|
<if test="client_id!=0">
|
||||||
|
and client_id = #{client_id}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by create_time desc
|
||||||
|
</select>
|
||||||
|
</mapper>
|
@ -0,0 +1,26 @@
|
|||||||
|
<?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.risk.RiskMerchantRecordMapper">
|
||||||
|
<select id="query" resultType="com.alibaba.fastjson.JSONObject">
|
||||||
|
SELECT *
|
||||||
|
FROM risk_merchant_record
|
||||||
|
<where>
|
||||||
|
<if test="record_id!=null">
|
||||||
|
and id = #{record_id}
|
||||||
|
</if>
|
||||||
|
<if test="status != null">
|
||||||
|
and status = #{status}
|
||||||
|
</if>
|
||||||
|
<if test="client_moniker!=null">
|
||||||
|
and client_moniker = #{client_moniker}
|
||||||
|
</if>
|
||||||
|
<if test="c_end_time!=null">
|
||||||
|
and create_time < #{c_end_time}
|
||||||
|
</if>
|
||||||
|
<if test="client_id != 0">
|
||||||
|
and client_id = #{client_id}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by create_time desc
|
||||||
|
</select>
|
||||||
|
</mapper>
|
@ -0,0 +1,20 @@
|
|||||||
|
<?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.risk.RiskTransactionLogMapper">
|
||||||
|
<select id="query" resultType="com.alibaba.fastjson.JSONObject">
|
||||||
|
SELECT *
|
||||||
|
FROM risk_transaction_log
|
||||||
|
<where>
|
||||||
|
<if test="record_id!=null">
|
||||||
|
and record_id = #{record_id}
|
||||||
|
</if>
|
||||||
|
<if test="client_id !=0">
|
||||||
|
and client_id = #{client_id}
|
||||||
|
</if>
|
||||||
|
<if test="c_end_time != null">
|
||||||
|
and create_time < #{c_end_time}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by create_time desc
|
||||||
|
</select>
|
||||||
|
</mapper>
|
@ -0,0 +1,243 @@
|
|||||||
|
define(['angular', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootSwitch', 'ngFileUpload'], function (angular) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var riskType = [
|
||||||
|
{code: '1', label: 'test1'},
|
||||||
|
{code: '2', label: 'test2'},
|
||||||
|
];
|
||||||
|
|
||||||
|
var app = angular.module('RiskManagement', ['ui.bootstrap', 'ui.router', 'frapontillo.bootstrap-switch', 'ngFileUpload']);
|
||||||
|
app.config(['$stateProvider', function ($stateProvider) {
|
||||||
|
$stateProvider.state('analysis_monitoring.risk_manager', {
|
||||||
|
url: '/risk/manage',
|
||||||
|
templateUrl: '/static/risk/templates/risk.html',
|
||||||
|
controller: 'RiskManageCtrl',
|
||||||
|
}).state('analysis_monitoring.risk_orders', {
|
||||||
|
url: '/risk/{record_id}/orders',
|
||||||
|
templateUrl: '/static/risk/templates/risk_orders.html',
|
||||||
|
controller: 'RiskOrderCtrl',
|
||||||
|
resolve:{
|
||||||
|
record:['$http','$stateParams', function ($http,$stateParams) {
|
||||||
|
return $http.get('/sys/risk/records/'+$stateParams.record_id).then(function (res) {
|
||||||
|
return res.data;
|
||||||
|
});
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}).state('analysis_monitoring.risk_history', {
|
||||||
|
url: '/risk/{record_id}/history',
|
||||||
|
templateUrl: '/static/risk/templates/risk_history.html',
|
||||||
|
controller: 'RecordHistoryCtrl',
|
||||||
|
resolve:{
|
||||||
|
record:['$http','$stateParams', function ($http,$stateParams) {
|
||||||
|
return $http.get('/sys/risk/records/'+$stateParams.record_id).then(function (res) {
|
||||||
|
return res.data;
|
||||||
|
});
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}).state('analysis_monitoring.risk_detail', {
|
||||||
|
url: '/risk/{record_id}/detail',
|
||||||
|
templateUrl: '/static/risk/templates/risk_detail.html',
|
||||||
|
controller: 'RecordDetailCtrl',
|
||||||
|
resolve:{
|
||||||
|
record:['$http','$stateParams', function ($http,$stateParams) {
|
||||||
|
return $http.get('/sys/risk/records/'+$stateParams.record_id).then(function (res) {
|
||||||
|
return res.data;
|
||||||
|
});
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}]);
|
||||||
|
app.controller('RiskManageCtrl', ['$scope', '$http', function ($scope, $http){
|
||||||
|
$scope.params = {};
|
||||||
|
$scope.pagination = {};
|
||||||
|
$scope.loadRecords = function (page) {
|
||||||
|
var params = angular.copy($scope.params);
|
||||||
|
params.page = page || $scope.pagination.page || 1;
|
||||||
|
$http.get('/sys/risk/records', {params: params}).then(function (resp) {
|
||||||
|
$scope.records = resp.data.data;
|
||||||
|
$scope.pagination = resp.data.pagination;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
$scope.loadRecords(1);
|
||||||
|
}]);
|
||||||
|
|
||||||
|
app.controller('RiskOrderCtrl', ['$scope', '$http', 'record', function ($scope, $http,record) {
|
||||||
|
$scope.params = {record_id: record.id};
|
||||||
|
$scope.historyParams = {client_id:record.client_id};
|
||||||
|
$scope.pagination = {};
|
||||||
|
$scope.historyPagination = {};
|
||||||
|
$scope.record = record;
|
||||||
|
$scope.loadOrders = function (page) {
|
||||||
|
var params = angular.copy($scope.params);
|
||||||
|
params.page = page || $scope.pagination.page || 1;
|
||||||
|
$http.get('/sys/risk/orders',{params: params}).then(function (resp) {
|
||||||
|
$scope.orders = resp.data.data;
|
||||||
|
$scope.pagination = resp.data.pagination;
|
||||||
|
$scope.historyParams.c_end_time = $scope.orders.pop().create_time;
|
||||||
|
$scope.loadHistoryOrders(1);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
$scope.loadOrders(1);
|
||||||
|
|
||||||
|
$scope.loadHistoryOrders = function (page) {
|
||||||
|
var historyParams = angular.copy($scope.historyParams);
|
||||||
|
historyParams.page = page || $scope.historyPagination.page || 1;
|
||||||
|
$http.get('/sys/risk/orders',{params: historyParams}).then(function (resp) {
|
||||||
|
$scope.historyOrders = resp.data.data;
|
||||||
|
$scope.historyPagination = resp.data.pagination;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
|
||||||
|
app.controller('RecordHistoryCtrl', ['$scope', '$http','$uibModal', 'commonDialog','record', function ($scope, $http,$uibModal,commonDialog,record) {
|
||||||
|
$scope.record = record;
|
||||||
|
$scope.pagination = {};
|
||||||
|
$scope.params = {client_id:record.client_id,c_end_time:record.create_time};
|
||||||
|
$scope.listHistory = function (page) {
|
||||||
|
var params = angular.copy($scope.params);
|
||||||
|
params.page = page || $scope.pagination.page || 1;
|
||||||
|
$http.get('/sys/risk/records',{params:params}).then(function (res) {
|
||||||
|
$scope.histories = res.data.data;
|
||||||
|
$scope.pagination = res.data.pagination;
|
||||||
|
})
|
||||||
|
};
|
||||||
|
$scope.listHistory(1);
|
||||||
|
$scope.edit = function () {
|
||||||
|
$uibModal.open({
|
||||||
|
templateUrl: '/static/risk/templates/risk_edit.html',
|
||||||
|
controller: 'RiskRecordHandleCtrl',
|
||||||
|
resolve:{record_id:function () {
|
||||||
|
return record.id;
|
||||||
|
}}
|
||||||
|
}).result.then(function () {
|
||||||
|
commonDialog.alert({
|
||||||
|
title: 'Success',
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
$scope.noop = function () {
|
||||||
|
commonDialog.confirm({
|
||||||
|
title: 'Confirm',
|
||||||
|
content: '确定放弃这次预警'
|
||||||
|
}).then(function () {
|
||||||
|
$http.put('/sys/risk/records/'+ record.id+'/noop', $scope.params).then(function () {
|
||||||
|
}).then(function (resp) {
|
||||||
|
commonDialog.alert({
|
||||||
|
title: 'Error',
|
||||||
|
content: resp.data.message,
|
||||||
|
type: 'Error'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
|
||||||
|
app.controller('RecordDetailCtrl', ['$scope', '$http','$uibModal', 'commonDialog','record', function ($scope, $http,$uibModal,commonDialog,record) {
|
||||||
|
$scope.record = record;
|
||||||
|
$scope.pagination = {};
|
||||||
|
$scope.params = {record_id:record.id};
|
||||||
|
$scope.listDetail = function (page) {
|
||||||
|
var params = angular.copy($scope.params);
|
||||||
|
params.page = page || $scope.pagination.page || 1;
|
||||||
|
$http.get('/sys/risk/details',{params:params}).then(function (res) {
|
||||||
|
$scope.details = res.data.data;
|
||||||
|
$scope.pagination = res.data.pagination;
|
||||||
|
})
|
||||||
|
};
|
||||||
|
$scope.listDetail(1);
|
||||||
|
$scope.addRemark = function () {
|
||||||
|
$uibModal.open({
|
||||||
|
templateUrl: '/static/risk/templates/risk_remark.html',
|
||||||
|
controller: 'RiskDetailRemarkCtrl',
|
||||||
|
resolve:{record_id:function () {
|
||||||
|
return record.id;
|
||||||
|
}}
|
||||||
|
}).result.then(function () {
|
||||||
|
$scope.listDetail(1);
|
||||||
|
commonDialog.alert({
|
||||||
|
title: 'Success',
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.dealDirectly = function () {
|
||||||
|
commonDialog.confirm({
|
||||||
|
title: 'Confirm',
|
||||||
|
content: '确定关结这次预警?'
|
||||||
|
}).then(function () {
|
||||||
|
$http.put('/sys/risk/records/'+ record.id+'/directly').then(function () {
|
||||||
|
commonDialog.alert({
|
||||||
|
title: 'Success',
|
||||||
|
type: 'Success'
|
||||||
|
});
|
||||||
|
$scope.listDetail(1);
|
||||||
|
$scope.record.status=1;
|
||||||
|
}).then(function (resp) {
|
||||||
|
commonDialog.alert({
|
||||||
|
title: 'Error',
|
||||||
|
content: resp.data.message,
|
||||||
|
type: 'Error'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
|
||||||
|
app.controller('RiskDetailRemarkCtrl', ['$scope', '$http','record_id','commonDialog', function ($scope, $http,record_id,commonDialog) {
|
||||||
|
$scope.addRemarkParams = {record_id:record_id};
|
||||||
|
$scope.addRemark = function () {
|
||||||
|
var params = angular.copy($scope.addRemarkParams);
|
||||||
|
$http.post('/sys/risk/details/remark',params).then(function (res) {
|
||||||
|
$scope.$close();
|
||||||
|
}).then(function (resp) {
|
||||||
|
commonDialog.alert({
|
||||||
|
title: 'Error',
|
||||||
|
content: resp.data.message,
|
||||||
|
type: 'Error'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
|
||||||
|
app.controller('RiskRecordHandleCtrl', ['$scope', '$http','record_id','commonDialog', function ($scope, $http,record_id,commonDialog) {
|
||||||
|
$scope.params= {};
|
||||||
|
$scope.handle = function () {
|
||||||
|
$http.put('/sys/risk/records/'+ record_id+'/deal', $scope.params).then(function () {
|
||||||
|
$scope.$close();
|
||||||
|
}).then(function (resp) {
|
||||||
|
commonDialog.alert({
|
||||||
|
title: 'Error',
|
||||||
|
content: resp.data.message,
|
||||||
|
type: 'Error'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}]);
|
||||||
|
app.filter('risk_type', function () {
|
||||||
|
return function (riskStr) {
|
||||||
|
angular.forEach(riskType,function (type) {
|
||||||
|
riskStr = riskStr.replace(type.code,type.label);
|
||||||
|
})
|
||||||
|
return riskStr;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
app.filter('status_type', function () {
|
||||||
|
return function (riskStr) {
|
||||||
|
var statusResult = '';
|
||||||
|
switch (riskStr){
|
||||||
|
case('0'): statusResult = '待处理';break;
|
||||||
|
case('1'): statusResult = '已处理';break;
|
||||||
|
case('2'): statusResult = '处理中';break;
|
||||||
|
default: statusResult = '';
|
||||||
|
}
|
||||||
|
return statusResult;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
return app;
|
||||||
|
});
|
@ -0,0 +1,58 @@
|
|||||||
|
<div ui-view>
|
||||||
|
<section class="content-header">
|
||||||
|
<h1>Risk Manager</h1>
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li><i class="fa fa-gift"></i> Risk</li>
|
||||||
|
<li class="active">Risk Manager</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
<section class="content">
|
||||||
|
<div class="box box-default">
|
||||||
|
<div class="box-header">Records</div>
|
||||||
|
<div class="box-body table-responsive">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Client Moniker</th>
|
||||||
|
<th>Create Time</th>
|
||||||
|
<th>Waring Time</th>
|
||||||
|
<th>Status</th>
|
||||||
|
<th>Risk Types</th>
|
||||||
|
<th>Risk Counts</th>
|
||||||
|
<th>Operation</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="record in records">
|
||||||
|
<td>{{record.client_moniker}}</td>
|
||||||
|
<td>{{record.create_time}}</td>
|
||||||
|
<td>{{record.expiry_time}}</td>
|
||||||
|
<td>{{record.status|status_type}}</td>
|
||||||
|
<td>{{record.risk_types|risk_type}}</td>
|
||||||
|
<td>{{record.risk_counts}}</td>
|
||||||
|
<td>
|
||||||
|
<a class="text-primary" role="button" title="Detail" ui-sref="analysis_monitoring.risk_orders({'record_id':record.id})">
|
||||||
|
<i class="fa fa-search" ></i>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<uib-pagination ng-if="records.length"
|
||||||
|
class="pagination"
|
||||||
|
total-items="pagination.totalCount"
|
||||||
|
boundary-links="true"
|
||||||
|
ng-model="pagination.page"
|
||||||
|
items-per-page="pagination.limit"
|
||||||
|
max-size="10"
|
||||||
|
ng-change="loadRecords()"
|
||||||
|
previous-text="‹"
|
||||||
|
next-text="›"
|
||||||
|
first-text="«"
|
||||||
|
last-text="»"></uib-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
@ -0,0 +1,63 @@
|
|||||||
|
<div ui-view>
|
||||||
|
<section class="content-header">
|
||||||
|
<h1>Risk Manager</h1>
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li><i class="fa fa-gift"></i> Risk</li>
|
||||||
|
<li class="fa fa-gift">Risk Manager</li>
|
||||||
|
<li class="active">Risk Detail</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
<section class="content">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li ui-sref-active-eq="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_orders({'record_id':record.id})">Risk Orders</a>
|
||||||
|
</li>
|
||||||
|
<li ui-sref-active="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_history({'record_id':record.id})">Risk history</a>
|
||||||
|
</li>
|
||||||
|
<li ui-sref-active="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_detail({'record_id':record.id})">Risk Detail</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="box box-default">
|
||||||
|
<div class="box-header">Risk Details</div>
|
||||||
|
<div class="box-header" ng-if="record.status==0" style="text-align: right;">
|
||||||
|
<button type="button" class="btn btn-info" ng-click="addRemark()">Add Remark</button>
|
||||||
|
<button type="button" class="btn btn-info" ng-click="dealDirectly()">Close record</button>
|
||||||
|
</div>
|
||||||
|
<div class="box-body table-responsive">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Create Time</th>
|
||||||
|
<th>auditor</th>
|
||||||
|
<th>remark</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="record in details">
|
||||||
|
<td>{{record.create_time}}</td>
|
||||||
|
<td>{{record.auditor}}</td>
|
||||||
|
<td>{{record.remark}}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<uib-pagination ng-if="details.length"
|
||||||
|
class="pagination"
|
||||||
|
total-items="pagination.totalCount"
|
||||||
|
boundary-links="true"
|
||||||
|
ng-model="pagination.page"
|
||||||
|
items-per-page="pagination.limit"
|
||||||
|
max-size="10"
|
||||||
|
ng-change="listDetail()"
|
||||||
|
previous-text="‹"
|
||||||
|
next-text="›"
|
||||||
|
first-text="«"
|
||||||
|
last-text="»"></uib-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</div>
|
@ -0,0 +1,32 @@
|
|||||||
|
<section class="content-header">
|
||||||
|
<h1>Add Remark</h1>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="box-solid">
|
||||||
|
<div class="box box-warning">
|
||||||
|
<div class="box-header">
|
||||||
|
<form role="form" style="margin:0px auto;width: 50%">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Limit Amount</label>
|
||||||
|
<input ng-model="params.limitAmount" name="code" class="form-control" type="text"/>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" ng-model="params.disableMerchat" class="ng-pristine ng-untouched ng-valid">
|
||||||
|
Disable Merchant
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<button class="btn btn-primary btn-block" ng-click="handle()">commit</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,69 @@
|
|||||||
|
<div ui-view>
|
||||||
|
<section class="content-header">
|
||||||
|
<h1>Risk Manager</h1>
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li><i class="fa fa-gift"></i> Risk</li>
|
||||||
|
<li class="fa fa-gift">Risk Manager</li>
|
||||||
|
<li class="active">Risk records</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
<section class="content">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li ui-sref-active-eq="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_orders({'record_id':record.id})">Risk Orders</a>
|
||||||
|
</li>
|
||||||
|
<li ui-sref-active="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_history({'record_id':record.id})">Risk history</a>
|
||||||
|
</li>
|
||||||
|
<li ui-sref-active="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_detail({'record_id':record.id})">Risk Detail</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
<div class="box box-default">
|
||||||
|
<!--
|
||||||
|
<div class="box-header">Latest Record</div>
|
||||||
|
-->
|
||||||
|
<div class="box-body table-responsive">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Client Moniker</th>
|
||||||
|
<th>Create Time</th>
|
||||||
|
<th>Waring Time</th>
|
||||||
|
<th>Risk Types</th>
|
||||||
|
<th>Status</th>
|
||||||
|
<th>Risk Counts</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="record in histories">
|
||||||
|
<td>{{record.client_moniker}}</td>
|
||||||
|
<td>{{record.create_time}}</td>
|
||||||
|
<td>{{record.expiry_time}}</td>
|
||||||
|
<td>{{record.status}}</td>
|
||||||
|
<td>{{record.risk_types|risk_type}}</td>
|
||||||
|
<td>{{record.risk_counts}}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<uib-pagination ng-if="histories.length"
|
||||||
|
class="pagination"
|
||||||
|
total-items="pagination.totalCount"
|
||||||
|
boundary-links="true"
|
||||||
|
ng-model="pagination.page"
|
||||||
|
items-per-page="pagination.limit"
|
||||||
|
max-size="10"
|
||||||
|
ng-change="listHistory()"
|
||||||
|
previous-text="‹"
|
||||||
|
next-text="›"
|
||||||
|
first-text="«"
|
||||||
|
last-text="»"></uib-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</div>
|
@ -0,0 +1,105 @@
|
|||||||
|
<div ui-view>
|
||||||
|
<section class="content-header">
|
||||||
|
<h1>Risk Manager</h1>
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li><i class="fa fa-gift"></i> Risk</li>
|
||||||
|
<li class="fa fa-gift">Risk Manager</li>
|
||||||
|
<li class="active">Risk records</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
<section class="content">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li ui-sref-active-eq="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_orders({'record_id':record.id})">Risk Orders</a>
|
||||||
|
</li>
|
||||||
|
<li ui-sref-active="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_history({'record_id':record.id})">Risk history</a>
|
||||||
|
</li>
|
||||||
|
<li ui-sref-active="active">
|
||||||
|
<a ui-sref="analysis_monitoring.risk_detail({'record_id':record.id})">Risk Detail</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
<div class="box box-default">
|
||||||
|
<div class="box-header">Reference Orders</div>
|
||||||
|
<div class="box-body table-responsive">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Order Id</th>
|
||||||
|
<th>Amount</th>
|
||||||
|
<th>Channel</th>
|
||||||
|
<th>Create Time</th>
|
||||||
|
<th>Risk Types</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="order in orders">
|
||||||
|
<td>{{order.order_id}}</td>
|
||||||
|
<td>{{order.amount}}</td>
|
||||||
|
<td>{{order.channel}}</td>
|
||||||
|
<td>{{order.create_time}}</td>
|
||||||
|
<td>{{order.risk_types|risk_type}}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<uib-pagination ng-if="orders.length"
|
||||||
|
class="pagination"
|
||||||
|
total-items="pagination.totalCount"
|
||||||
|
boundary-links="true"
|
||||||
|
ng-model="pagination.page"
|
||||||
|
items-per-page="pagination.limit"
|
||||||
|
max-size="10"
|
||||||
|
ng-change="loadOrders()"
|
||||||
|
previous-text="‹"
|
||||||
|
next-text="›"
|
||||||
|
first-text="«"
|
||||||
|
last-text="»"></uib-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="box box-default">
|
||||||
|
<div class="box-header">Waring Orders History</div>
|
||||||
|
<div class="box-body table-responsive">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Order Id</th>
|
||||||
|
<th>Amount</th>
|
||||||
|
<th>Channel</th>
|
||||||
|
<th>Create Time</th>
|
||||||
|
<th>Risk Types</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-repeat="order in historyOrders">
|
||||||
|
<td>{{order.order_id}}</td>
|
||||||
|
<td>{{order.amount}}</td>
|
||||||
|
<td>{{order.channel}}</td>
|
||||||
|
<td>{{order.create_time}}</td>
|
||||||
|
<td>{{order.risk_types|risk_type}}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<uib-pagination ng-if="historyOrders.length"
|
||||||
|
class="pagination"
|
||||||
|
total-items="historyPagination.totalCount"
|
||||||
|
boundary-links="true"
|
||||||
|
ng-model="historyPagination.page"
|
||||||
|
items-per-page="historyPagination.limit"
|
||||||
|
max-size="10"
|
||||||
|
ng-change="loadHistorysOrders()"
|
||||||
|
previous-text="‹"
|
||||||
|
next-text="›"
|
||||||
|
first-text="«"
|
||||||
|
last-text="»"></uib-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</div>
|
@ -0,0 +1,25 @@
|
|||||||
|
<section class="content-header">
|
||||||
|
<h1>Phone Top Up</h1>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="box-solid">
|
||||||
|
<div class="box box-warning">
|
||||||
|
<div class="box-header">
|
||||||
|
<form role="form" style="margin:0px auto;width: 50%">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>remark</label>
|
||||||
|
<input ng-model="addRemarkParams.remark" name="code" class="form-control" type="text"/>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<button class="btn btn-primary btn-block" ng-click="addRemark()">commit</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
Reference in new issue