add batch create agent
This commit is contained in:
parent
8533faf904
commit
3e1f16dea5
@ -25,7 +25,7 @@ public class CreateBatchFormAgent extends BaseCreateForm implements TaggableForm
|
||||
private Boolean webrtc;
|
||||
@Trim
|
||||
@NotBlank
|
||||
private String accounts;
|
||||
private String agents;
|
||||
@Trim
|
||||
@EmptyToNull
|
||||
private String password;
|
||||
|
@ -2,12 +2,12 @@ package com.pudonghot.yo.cms.form.create;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import javax.validation.constraints.*;
|
||||
import com.pudonghot.yo.model.domain.Agent;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.wacai.tigon.format.annotation.Trim;
|
||||
import com.pudonghot.yo.cms.form.TaggableForm;
|
||||
import com.pudonghot.yo.cms.form.BaseCreateForm;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
import org.hibernate.validator.constraints.Range;
|
||||
import com.wacai.tigon.format.annotation.EmptyToNull;
|
||||
|
||||
@ -28,9 +28,15 @@ public class CreateFormAgent extends BaseCreateForm implements TaggableForm {
|
||||
private String name;
|
||||
@Trim
|
||||
@NotBlank
|
||||
@Length(min = 4, max = 32)
|
||||
@Pattern(regexp = "^\\w+$")
|
||||
private String account;
|
||||
@Trim
|
||||
@EmptyToNull
|
||||
@Pattern(regexp = "^[1-9]+\\d*$")
|
||||
private String agent;
|
||||
@Trim
|
||||
@EmptyToNull
|
||||
private String password;
|
||||
@Range(min = 0, max = 240000)
|
||||
private Integer wrapUpTime;
|
||||
|
@ -120,39 +120,49 @@ public class AgentServiceImpl
|
||||
private Pair<List<CreateFormAgent>, List<UpdateFormAgent>> batchCreateValidate(
|
||||
final CreateBatchFormAgent form) {
|
||||
|
||||
val accounts = form.getAccounts().split("\n");
|
||||
val agentsCreate = new ArrayList<CreateFormAgent>(accounts.length);
|
||||
val agentsUpdate = new ArrayList<UpdateFormAgent>(accounts.length);
|
||||
val agents = form.getAgents().split("\\s*\n\\s*");
|
||||
val agentsCreate = new ArrayList<CreateFormAgent>(agents.length);
|
||||
val agentsUpdate = new ArrayList<UpdateFormAgent>(agents.length);
|
||||
|
||||
|
||||
for (val line : accounts) {
|
||||
for (val line : agents) {
|
||||
if (StringUtils.isNotBlank(line)) {
|
||||
log.info("Create agent [{}].", line);
|
||||
val agentData = line.split("\\s\\+");
|
||||
Assert.state(agentData.length < 3, () -> "Agent info [" + agentData + "] is not valid");
|
||||
val agentData = line.split("[\\s,;]+");
|
||||
Assert.state(agentData.length < 4,
|
||||
() -> "Agent info [" + agentData + "] is not valid");
|
||||
|
||||
val name = agentData[0];
|
||||
val account = agentData.length == 2 ? agentData[1] : agentData[0];
|
||||
val account = agentData.length > 1 ?
|
||||
agentData[1] : agentData[0];
|
||||
|
||||
Assert.state(account.matches("^[_a-zA-Z]+[_a-zA-z0-9]+$"),
|
||||
"Agent [" + line + "] account [" + account + "] is not valid");
|
||||
Assert.state(account.matches("^\\w+$"),
|
||||
() -> "Agent data [" + line + "] account [" + account + "] is not valid");
|
||||
val agent = agentData.length == 3 ? agentData[2] : null;
|
||||
if (agent != null) {
|
||||
Assert.state(agent.matches("^[1-9]+\\d*$"),
|
||||
() -> "Agent data [" + line + "] number [" + agent + "] is not valid");
|
||||
}
|
||||
|
||||
val agentExisted = mapper.find(new Search(Agent.ACCOUNT, account));
|
||||
val agentExisted = mapper.find(
|
||||
new Search(Agent.ACCOUNT, account));
|
||||
|
||||
if (agentExisted != null) {
|
||||
Assert.state(form.getUpdateExisted(),
|
||||
() -> "Agent [" + account + "] existed");
|
||||
|
||||
val formUpdate = jsonService.convert(form, UpdateFormAgent.class);
|
||||
val formUpdate = jsonService.convert(
|
||||
form, UpdateFormAgent.class);
|
||||
formUpdate.setId(agentExisted.getId());
|
||||
formUpdate.setName(name);
|
||||
agentsUpdate.add(formUpdate);
|
||||
continue;
|
||||
}
|
||||
|
||||
val formCreate = jsonService.convert(form, CreateFormAgent.class);
|
||||
val formCreate = jsonService.convert(
|
||||
form, CreateFormAgent.class);
|
||||
formCreate.setName(name);
|
||||
formCreate.setAccount(account);
|
||||
formCreate.setAgent(account);
|
||||
agentsCreate.add(formCreate);
|
||||
}
|
||||
}
|
||||
@ -242,6 +252,7 @@ public class AgentServiceImpl
|
||||
@Override
|
||||
protected void beforeInsert(final Agent model) {
|
||||
super.beforeInsert(model);
|
||||
|
||||
if (StringUtils.isBlank(model.getAgent())) {
|
||||
model.setAgent(seqService.nextValStr(model.getTenantId(), seqName));
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ export default BaseRoute.extend({
|
||||
const store = this.get('store');
|
||||
const queryParams = this.get('activeListQueryParams');
|
||||
return RSVP.hash({
|
||||
batch: false,
|
||||
wrapUpTime: 24000,
|
||||
active: true,
|
||||
trunkDialAllowed: false,
|
||||
|
@ -1,4 +1,5 @@
|
||||
import Service from '../service';
|
||||
import { isBlank } from '@ember/utils';
|
||||
|
||||
export default Service.extend({
|
||||
modelName: 'Agent',
|
||||
@ -16,8 +17,32 @@ export default Service.extend({
|
||||
account: {
|
||||
presence: true,
|
||||
length: {
|
||||
minimum: 1,
|
||||
minimum: 4,
|
||||
maximum: 36
|
||||
},
|
||||
format: {
|
||||
pattern: /^\w+$/,
|
||||
message: '仅允许字母数字'
|
||||
}
|
||||
},
|
||||
agent: {
|
||||
length: function(value) {
|
||||
if (isBlank(value)) {
|
||||
return false;
|
||||
}
|
||||
return {
|
||||
minimum: 4,
|
||||
maximum: 36
|
||||
};
|
||||
},
|
||||
format: function(value) {
|
||||
if (isBlank(value)) {
|
||||
return false;
|
||||
}
|
||||
return {
|
||||
pattern: /^[1-9]+\d*$/,
|
||||
message: '仅允许数字'
|
||||
};
|
||||
}
|
||||
},
|
||||
wrapUpTime: {
|
||||
@ -46,5 +71,10 @@ export default Service.extend({
|
||||
greaterThan: -1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
createBatchConstraints: {
|
||||
agents: {
|
||||
presence: true
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -1,5 +1,6 @@
|
||||
{{#form-content}}
|
||||
<hr />
|
||||
{{form-input-checkbox name='batch' label='单条/批量'}}
|
||||
{{form-input-select
|
||||
name='groupId'
|
||||
label='坐席组'
|
||||
@ -8,8 +9,16 @@
|
||||
text-field='name'
|
||||
enabled-field='active'
|
||||
}}
|
||||
{{form-input name='name' label='名称'}}
|
||||
{{form-input name='account' label='账户'}}
|
||||
|
||||
{{#if model.batch}}
|
||||
{{form-input type='textarea' name='agents' label='坐席' placeholder='坐席数据[姓名 账户 分机号],支持多行,其中账户必选,姓名分机号可选,如:东皇 donghuang 700002'}}
|
||||
{{form-input-checkbox name='updateExisted' label='更新已存在'}}
|
||||
{{else}}
|
||||
{{form-input name='name' label='名称'}}
|
||||
{{form-input name='account' label='账户'}}
|
||||
{{form-input name='agent' label='分机号' placeholder='数字分机号,空则自动生成'}}
|
||||
{{/if}}
|
||||
|
||||
{{form-input-select
|
||||
readonly=true
|
||||
name='type'
|
||||
@ -25,7 +34,7 @@
|
||||
{{form-input type='number' min=0 max=24000 step=1 name='wrapUpTime' label='Wrap up time'}}
|
||||
{{form-input-checkbox name='trunkDialAllowed' label='允许手拨外呼'}}
|
||||
{{form-input-checkbox name='internalDialAllowed' label='允许拨打分机'}}
|
||||
{{form-input-select
|
||||
{{!form-input-select
|
||||
multiple=true
|
||||
name='queues'
|
||||
label='队列'
|
||||
@ -46,6 +55,7 @@
|
||||
|
||||
{{form-input name='note' label='备注'}}
|
||||
<hr />
|
||||
{{form-footer-buttons type='create'}}
|
||||
{{form-footer-buttons type=(if model.batch 'createBatch' 'create')
|
||||
post-url=(if model.batch 'agent/create-batch') success-message='创建成功'}}
|
||||
{{/form-content}}
|
||||
{{outlet}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user