Commit 9a300ff1 by 王勇飞

pp

parent ccee0aa1
......@@ -561,6 +561,108 @@ class UserService extends ServiceBase {
}
})
}
/**
* 阿里交付单分配规则(交付单处理业务员和交付员不是一个同一人)
* @param {*} xclientMobile 客户电话
* @param {*} spName 服务商名称
* @param {*} productCatName 产品类型名称
* @param {*} skucode 最小销售货品编码,来自渠道上架的码
* @param {*} regionName 区域
*/
async getBizUserForAliDelivery (xclientMobile, spName, productCatName, skucode, regionName) {
let clientMobile = 'fordeliver' + xclientMobile + "_" + spName + "_" + regionName
let self = this
//按照服务商名字查询到公司,按照公司查询出users,条件是可以接受派单任务,并且技能标签含有,产品类别名称
return this.db.transaction(async function (t) {
//按照产品简码,查询服务成本
let productpricetmp = await self.db.models.productprice.findOne({
where: { skucode: skucode },
include: [
{ model: self.db.models.productcost, as: "costs", attributes: ['id', 'expensetype', 'costamount'] }
],
transaction: t
}
)
let serviceCost = productpricetmp.costs.filter(c => {
if (c.expensetype == "service") {
return true
}
})
let costAmount = 0
//获取服务费成本
if (serviceCost.length > 0) {
costAmount = serviceCost[0].costamount
}
//先检查缓存是否存在bizuser
let resultcache = await self.cacheManager["DeliveryBizUserCache"].getCache(clientMobile)
let isGoExec = false
if (!resultcache) {
isGoExec = true
} else {
let uname = resultcache.userName
let ucache = await self.cacheManager["UserCache"].cache(uname)
if (!ucache.isAllocated) {//解决修改为不接单
isGoExec = true
await self.cacheManager["DeliveryBizUserCache"].invalidate(clientMobile)
}
}
//TODO 查询数据库user表来获取交付员信息 需要根据是否是"交付员"字段筛选(派单规则是将交付单派给交付员)
if (isGoExec) {
let companyFind = await self.companyDao.model.findOne({
where: { name: spName }, include: [
{
model: self.db.models.user, as: "us", attributes: ['id', 'userName', 'mobile', 'isAllocated', 'opath', 'skilltags'], raw: true
}
], excludes: ['orgJson'], transaction: t
});
let users = companyFind.us
let cansels = users.filter(u => {
if (regionName && regionName != "" && u.regiontags) {
if (u.isAllocated && u.skilltags.indexOf(productCatName) >= 0 && u.regiontags.indexOf(regionName) >= 0) {
return true
} else {
return false
}
} else {
if (u.isAllocated && u.skilltags.indexOf(productCatName) >= 0) {
return true
} else {
return false
}
}
})
let lngth = cansels.length
//TODO 分配规则,需要改成循环分配
if (lngth > 0) {
let randindex = Math.floor(Math.random() * lngth)
let selresult = cansels[randindex]
//添加到缓存,按照客户电话key--缓存到业务员的对象
let tmp = {
userId: selresult.id,
userName: selresult.userName,
mobile: selresult.mobile,
opath: selresult.opath,
cost: costAmount,
compId: companyFind.id
}
await self.cacheManager["DeliveryBizUserCache"].cache(clientMobile, tmp)
return tmp
} else {
return null
}
} else {
if (resultcache) {//不继续,直接返回缓存
resultcache["cost"] = costAmount
return resultcache
} else {
return null
}
}
})
}
}
module.exports = UserService;
......
var system = require("../../../../system");
const sha235 = require("sha256");
var settings = require("../../../../../config/settings");
class TxHandler {
class AliHandler {
constructor() {
this.icUrl = settings.icUrl() + "/web/bizchance";
this.userService = system.getObject("service.auth.userSve");
......@@ -18,7 +18,7 @@ class TxHandler {
console.log("put in queue", datajson);
try {
var cachestr = sha235(JSON.stringify(datajson));
var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
var cacheInfo = await this.cacheManager["AliCache"].getCache(cachestr);
if (cacheInfo && cacheInfo != 'undefined') {
return {
"status": 1, //1代表成功,否则失败
......@@ -64,7 +64,7 @@ class TxHandler {
var j = JSON.parse(rtn.stdout);
console.log(JSON.stringify(j), "RRRRRRRRRRRRRRR");
if (j.status == 1) {
await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);//插入redis缓存
await this.cacheManager["AliCache"].cache(cachestr, null, 1200000);//插入redis缓存
//给业务员发信息
var msg = {
"title": "你有新的商机,请尽快处理",
......@@ -100,7 +100,7 @@ class TxHandler {
console.log("put in queue" + JSON.stringify(datajson) + "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
try {
var cachestr = sha235(JSON.stringify(datajson));
var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
var cacheInfo = await this.cacheManager["AliCache"].getCache(cachestr);
if (cacheInfo && cacheInfo != 'undefined') {
return {
"status": 1, //1代表成功,否则失败
......@@ -123,7 +123,7 @@ class TxHandler {
var rtn = await rc.execPost3(params, requrl);
var j = JSON.parse(rtn.stdout);
if (j.status == 0) {
await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);//插入缓存
await this.cacheManager["AliCache"].cache(cachestr, null, 1200000);//插入缓存
//给业务员发信息
var selUrl = this.icUrl + "/schemeCtl/findInfoByDemandCode";
......@@ -179,7 +179,7 @@ class TxHandler {
console.log("put in queue-----------------------------------------------------------------------------------------------------", datajson);
try {
var cachestr = sha235(JSON.stringify(datajson));
var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
var cacheInfo = await this.cacheManager["AliCache"].getCache(cachestr);
if (cacheInfo && cacheInfo != 'undefined') {
return {
"status": 1, //1代表成功,否则失败
......@@ -210,7 +210,7 @@ class TxHandler {
ConsultTypeName = datajson.actionBody.productTypeName.split("/")[2];
}
console.log("ConsultTypeName-----------------------------" + ConsultTypeName);
var salesmanInfo = await this.userService.getBizUserForDelivery(datajson.actionBody.orderSnapshot.contactsPhone, datajson.actionBody.servicerName, ConsultTypeName, datajson.actionBody.txPriceCode, datajson.actionBody.regionName);
var salesmanInfo = await this.userService.getBizUserForDelivery(datajson.actionBody.orderSnapshot.contactsPhone, datajson.actionBody.servicerName, ConsultTypeName, datajson.actionBody.aliPriceCode, datajson.actionBody.regionName);
requrl = this.icUrl + "/deliverybillCtl/insertInfo";
var bizurl = this.icUrl + "/bizoptCtl/updateStatusByDemandCode";
var params = {
......@@ -220,10 +220,10 @@ class TxHandler {
"serviceName": datajson.actionBody.regionName,
"businessType": datajson.actionBody.productType,
"businessName": ConsultTypeName,
"skuCode": datajson.actionBody.txPriceCode,
"txOrderNum": datajson.actionBody.txOrderNum,
"skuCode": datajson.actionBody.aliPriceCode,
"aliOrderNum": datajson.actionBody.aliOrderNum,
"baseInfo": {
"txOrderNum": datajson.actionBody.txOrderNum,
"aliOrderNum": datajson.actionBody.aliOrderNum,
"isAdviser": "已分配",//是否分配顾问
"contactsName": datajson.actionBody.orderSnapshot.contactsName,
"contactsPhone": datajson.actionBody.orderSnapshot.contactsPhone,
......@@ -400,7 +400,7 @@ class TxHandler {
var j1 = JSON.parse(rtn.stdout);
console.log("j1---------------------------------" + rtn.stdout);
if (j.status == 0 && j1.status == 0) {
await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);
await this.cacheManager["AliCache"].cache(cachestr, null, 1200000);
//给业务员发信息
var msg = {
"title": "你有新的交付单,请尽快处理",
......@@ -443,7 +443,7 @@ class TxHandler {
console.log("put in queue", datajson);
try {
var cachestr = sha235(JSON.stringify(datajson));
var cacheInfo = await this.cacheManager["TxCache"].getCache(cachestr);
var cacheInfo = await this.cacheManager["AliCache"].getCache(cachestr);
if (cacheInfo && cacheInfo != 'undefined') {
return {
"status": 1, //1代表成功,否则失败
......@@ -465,7 +465,7 @@ class TxHandler {
var rtn = await rc.execPost3(params, requrl);
var j = JSON.parse(rtn.stdout);
if (j.status == 0) {
await this.cacheManager["TxCache"].cache(cachestr, null, 1200000);//插入缓存
await this.cacheManager["AliCache"].cache(cachestr, null, 1200000);//插入缓存
//给业务员发信息
var selUrl = this.icUrl + "/deliverybillCtl/findInfoByDeliverCode";
......@@ -516,10 +516,10 @@ class TxHandler {
}
}
module.exports = new TxHandler();
module.exports = new AliHandler();
// (async ()=>{
// var task = new TxHandler();
// var task = new AliHandler();
// var d = await task.userService.getBizUserForDelivery("16512345678","公司宝","公司注册","sv_business_registration_category_limited1","北京");
// console.log("ddddddddddddd");
// console.log(JSON.stringify(d));
......
var url = require("url");
var System = require("../../base/system");
const chnelapi=System.getObject("api.common.channels")
const chnelapi = System.getObject("api.common.channels")
let channelCache = {};
module.exports = function (app) {
app.all("*",async function(req, res,next){
try{
let channel=await chnelapi.getChannels(req.headers["x-forwarded-host"])
if(!channel){
app.all("*", async function (req, res, next) {
try {
let channel;
let sourceHost = req.headers["x-forwarded-host"];
if (sourceHost in channelCache) {
channel = channelCache[sourceHost];
} else {
channel = await chnelapi.getChannels(sourceHost);
channelCache[sourceHost] = channel;
}
if (!channel) {
next()
}else{
let rtn=await chnelapi.channelHandle(channel,req.path+"/"+ req.body.actionType,req.body)
if(rtn!=null){
} else {
let rtn = await chnelapi.channelHandle(channel, req.path + "/" + req.body.actionType, req.body)
if (rtn != null) {
res.end(JSON.stringify(rtn));
}else{
res.end(JSON.stringify({status:-1,message:"fail"}));
} else {
res.end(JSON.stringify({ status: -1, message: "fail" }));
}
}
}catch(e){
} catch (e) {
console.log(e)
res.end(JSON.stringify({status:-1,message:e}));
res.end(JSON.stringify({ status: -1, message: e }));
}
})
app.get('/api/:gname/:qname/:method', function (req, res) {
// var classPath = req.params["qname"];
var methodName = req.params["method"];
var gname=req.params["gname"];
classPath=gname+"."+classPath;
var methodName = req.params["method"];
var gname = req.params["gname"];
classPath = gname + "." + classPath;
var tClientIp = System.get_client_ip(req);
req.clientIp = tClientIp;
req.uagent= req.headers["user-agent"];
req.uagent = req.headers["user-agent"];
// req.classname=classPath;
var params = [];
params.push(gname);
params.push(methodName);
params.push(methodName);
params.push(req.body);
params.push(req.query);
params.push(req);
params.push(req.query);
params.push(req);
var p = null;
var invokeObj = System.getObject("api." + classPath);
if (invokeObj["doexec"]) {
......@@ -47,22 +55,22 @@ module.exports = function (app) {
});
app.post('/api/:gname/:qname/:method', function (req, res) {
var classPath = req.params["qname"];
var methodName = req.params["method"];
var gname=req.params["gname"];
var params = [];
classPath=gname+"."+classPath;
var methodName = req.params["method"];
var gname = req.params["gname"];
var params = [];
classPath = gname + "." + classPath;
console.log("====================");
console.log(classPath);
var tClientIp = System.get_client_ip(req);
req.clientIp = tClientIp;
req.uagent= req.headers["user-agent"];
req.uagent = req.headers["user-agent"];
// req.classname=classPath;
params.push(gname);
params.push(methodName);
params.push(req.body);
params.push(req.query);
params.push(req);
params.push(req.query);
params.push(req);
var p = null;
var invokeObj = System.getObject("api." + classPath);
if (invokeObj["doexec"]) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment