提交 60126093 编写于 作者: L lsh

完成部分核心业务事件。

上级 ae6d785f
/**
* Copyright (c) Since 2014, Power by Pw186.com
*/
package com.bytechainx.psi.web.epc;
import java.util.ArrayList;
import java.util.List;
import com.bytechainx.psi.common.kit.RandomUtil;
import com.jfinal.aop.Inject;
import com.jfinal.kit.Ret;
import com.jfinal.log.Log;
import com.silkie.epc.EpcEvent;
import com.silkie.epc.ModeLock;
import com.silkie.epc.impl.EpcEventParam;
import com.silkie.epc.impl.ThreadPoolEpc;
/**
* 消息生产者
*
* @version 1.0
*/
public class TraderEventProducer {
private static final Log LOG = Log.getLog(TraderEventProducer.class);
@Inject
private ThreadPoolEpc epc;
@Inject
private ModeLock modeLock;
public Ret request(Integer adminId, EpcEvent event, Object... params) {
try {
modeLock.lock();
EpcEventParam param = new EpcEventParam();
param.setModeLock(modeLock);
param.setValue("admin_id", adminId);
if(params != null) {
List<Object> paramsList = new ArrayList<>();
for (int i = 0; i < params.length; i++) {
paramsList.add(params[i]);
}
param.setValue(paramsList.getClass().getName(), paramsList);
}
String requestId = RandomUtil.genUUID();
param.setValue("request_id", requestId);
event.setEventParam(param);
epc.pushEvent(event, event.getCollision());
modeLock.await();
EpcEventParam respParam = event.getResponseParam();
if(respParam == null) {
return Ret.ok("正在处理中").set("request_id", requestId); // 如果有request_id返回,前端需要轮询结果
}
Ret ret = (Ret) respParam.getObjValue(Ret.class.getName());
return ret;
} catch (Exception e) {
LOG.error("发送请求异常!!!", e);
return Ret.fail("处理异常:"+e.getMessage());
} finally {
modeLock.unlock();
}
}
public EpcEventParam sendRequestMessage(EpcEvent event, Integer adminId, Object... params) throws Exception {
try {
modeLock.lock();
EpcEventParam param = new EpcEventParam();
param.setValue("admin_id", adminId);
if(params != null) {
for (int i = 0; i < params.length; i++) {
Object p = params[i];
param.setValue(p.getClass().getName(), p);
}
}
event.setEventParam(param);
epc.pushEvent(event, event.getCollision());
modeLock.await();
} catch (Exception e) {
LOG.error("发送请求异常!!!", e);
} finally {
modeLock.unlock();
}
return event.getResponseParam();
}
}
/**
* Sangame.com Inc. Copyright (c) 2006-2012 All Rights Reserved.
*/
package com.bytechainx.psi.web.epc.base;
import com.bytechainx.psi.common.BizException;
import com.bytechainx.psi.common.TransactionService;
import com.jfinal.kit.Ret;
import com.jfinal.log.Log;
import com.jfinal.plugin.redis.Cache;
import com.jfinal.plugin.redis.Redis;
import com.silkie.epc.impl.BaseEpcEvent;
import com.silkie.epc.impl.EpcEventParam;
/**
* 交易事件基类
*
* @author defier
* 2016年7月16日 下午4:48:35
* @version 1.0
*/
public abstract class BaseTraderEvent extends BaseEpcEvent {
private static final Log LOG = Log.getLog(BaseTraderEvent.class);
protected EpcEventParam eventParam;
private int adminId;
private String requestId;
@Override
protected int checkParam(EpcEventParam param) throws Exception {
this.eventParam = param;
this.adminId = param.getIntValue("admin_id");
this.requestId = param.getStrValue("request_id");
return checkBizParam(eventParam);
}
protected abstract int checkBizParam(EpcEventParam param) throws Exception;
protected void doBiz() {
// 业务逻辑处理
TransactionService transactionService = new TransactionService();
transactionService.startTransaction();
try {
dealBiz();
transactionService.commitTransaction();
} catch (Exception e) {
LOG.error("事件处理异常,交易失败", e);
transactionService.rollbackTransaction();
if(e instanceof BizException) {
responseMsg(Ret.fail(e.getMessage()));
} else {
responseMsg(Ret.fail("业务处理异常:"+e.getMessage()));
}
} finally {
transactionService.closeTransaction();
}
}
protected abstract void dealBiz() throws Exception;
/**
* 参数错误的处理方式
*/
@Override
public void doParamError(int errCode) throws Exception {
responseMsg(Ret.fail("参数错误"));
}
@Override
protected void handleExceptionResponse(EpcEventParam param) {
responseMsg(Ret.fail("执行异常"));
}
public int getAdminId() {
return adminId;
}
public void setAdminId(int adminId) {
this.adminId = adminId;
}
/**
* 执行完成后返回消息,先推送结果到redis上,然后同时设置返回值,谁快谁就被处理
* @param ret
*/
protected void responseMsg(Ret ret) {
commonResponse(ret);
Cache redis = Redis.use();
redis.lpush(getRequestId(), ret.toJson());
redis.expire(getRequestId(), 30); // 有效期30S
}
protected void commonResponse(Ret ret) {
EpcEventParam responseParam = new EpcEventParam();
responseParam.setValue(Ret.class.getName(), ret);
setResponseParam(responseParam);
eventParam.getModeLock().singal(); // 解锁,立即返回结果
}
public String getRequestId() {
return requestId;
}
public void setRequestId(String requestId) {
this.requestId = requestId;
}
}
/**
*
*/
package com.bytechainx.psi.web.epc.event.sale;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.bytechainx.psi.common.model.CustomerInfo;
import com.bytechainx.psi.sale.service.CustomerInfoService;
import com.bytechainx.psi.web.epc.base.BaseTraderEvent;
import com.jfinal.aop.Aop;
import com.jfinal.kit.Ret;
import com.jfinal.log.Log;
import com.silkie.epc.EpcErrCode;
import com.silkie.epc.impl.Collision;
import com.silkie.epc.impl.EpcEventParam;
/**
* 客户管理
* @author defier
*
*/
public class CustomerInfoEvent extends BaseTraderEvent {
private static final Log LOG = Log.getLog(CustomerInfoEvent.class);
private String action; // 执行的方法名,通过这个参数判断需要执行什么行为
private List<Object> paramList; // 参数列表,按照接口方法顺序存入
public CustomerInfoEvent(String action) {
this.action = action;
}
@Override
protected int checkBizParam(EpcEventParam param) throws Exception {
if (param == null) {
if (LOG.isWarnEnabled())
LOG.warn("未收到事件参数");
return EpcErrCode.INVALID_PARAM;
}
paramList = param.getListValue(ArrayList.class.getName());
if(paramList == null) {
return EpcErrCode.INVALID_PARAM;
}
return EpcErrCode.SUCCESS;
}
@Override
protected void dealBiz() throws Exception {
CustomerInfoService customerInfoService = Aop.get(CustomerInfoService.class);
Ret ret = Ret.ok();
if(StringUtils.equals(action, "create")) {
Object customerInfoObject = paramList.get(0);
if(customerInfoObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
ret = customerInfoService.create(getAdminId(), (CustomerInfo)customerInfoObject);
} else if(StringUtils.equals(action, "update")) {
Object customerInfoObject = paramList.get(0);
if(customerInfoObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
ret = customerInfoService.update(getAdminId(), (CustomerInfo)customerInfoObject);
} else if(StringUtils.equals(action, "updateOpenBalance")) {
Object customerInfoIdObject = paramList.get(0);
if(customerInfoIdObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object openBalanceObject = paramList.get(1);
if(openBalanceObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
ret = customerInfoService.updateOpenBalance(getAdminId(), (Integer)customerInfoIdObject, (BigDecimal)openBalanceObject);
}
responseMsg(ret);
}
@Override
public Collision getCollision() {
return Collision.generateCollision("tenant.org.id.0");
}
}
package com.bytechainx.psi.web.epc.event.sale;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.bytechainx.psi.common.EnumConstant.AuditStatusEnum;
import com.bytechainx.psi.common.model.SaleOrder;
import com.bytechainx.psi.common.model.SaleOrderCost;
import com.bytechainx.psi.common.model.SaleOrderFee;
import com.bytechainx.psi.common.model.SaleOrderFund;
import com.bytechainx.psi.common.model.SaleOrderGoods;
import com.bytechainx.psi.sale.service.SaleOrderService;
import com.bytechainx.psi.web.epc.base.BaseTraderEvent;
import com.jfinal.aop.Aop;
import com.jfinal.kit.Ret;
import com.jfinal.log.Log;
import com.silkie.epc.EpcErrCode;
import com.silkie.epc.impl.Collision;
import com.silkie.epc.impl.EpcEventParam;
/**
* 销售单
*
* @author defier
*
*/
public class SaleOrderEvent extends BaseTraderEvent {
private static final Log LOG = Log.getLog(SaleOrderEvent.class);
private String action; // 执行的方法名,通过这个参数判断需要执行什么行为
private List<Object> paramList; // 参数列表,按照接口方法顺序存入
public SaleOrderEvent(String action) {
this.action = action;
}
@Override
protected int checkBizParam(EpcEventParam param) throws Exception {
if (param == null) {
if (LOG.isWarnEnabled())
LOG.warn("未收到事件参数");
return EpcErrCode.INVALID_PARAM;
}
paramList = param.getListValue(ArrayList.class.getName());
if(paramList == null) {
return EpcErrCode.INVALID_PARAM;
}
return EpcErrCode.SUCCESS;
}
@SuppressWarnings("unchecked")
@Override
protected void dealBiz() throws Exception {
SaleOrderService saleOrderService = Aop.get(SaleOrderService.class);
Ret ret = Ret.ok();
if(StringUtils.equals(action, "create")) {
Object saleOrderObject = paramList.get(0);
if(saleOrderObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderGoodListObject = paramList.get(1);
if(orderGoodListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFundListObject = paramList.get(2);
if(orderFundListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFeeListObject = paramList.get(3);
if(orderFeeListObject == null) {
}
Object orderCostListObject = paramList.get(4);
if(orderCostListObject == null) {
}
ret = saleOrderService.create((SaleOrder) saleOrderObject, (List<SaleOrderGoods>)orderGoodListObject, (List<SaleOrderFund>)orderFundListObject, (List<SaleOrderFee>)orderFeeListObject, (List<SaleOrderCost>)orderCostListObject);
} else if(StringUtils.equals(action, "update")) {
Object saleOrderObject = paramList.get(0);
if(saleOrderObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderGoodListObject = paramList.get(1);
if(orderGoodListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFundListObject = paramList.get(2);
if(orderFundListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFeeListObject = paramList.get(3);
if(orderFeeListObject == null) {
}
Object orderCostListObject = paramList.get(4);
if(orderCostListObject == null) {
}
ret = saleOrderService.update((SaleOrder) saleOrderObject, (List<SaleOrderGoods>)orderGoodListObject, (List<SaleOrderFund>)orderFundListObject, (List<SaleOrderFee>)orderFeeListObject, (List<SaleOrderCost>)orderCostListObject);
} else if(StringUtils.equals(action, "disable")) {
Object idsObject = paramList.get(0);
if(idsObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
ret = saleOrderService.disable((List<Integer>) idsObject);
} else if(StringUtils.equals(action, "audit")) {
Object idsObject = paramList.get(0);
if(idsObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object auditStatusObject = paramList.get(1);
if(auditStatusObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object auditDescObject = paramList.get(2);
if(auditDescObject == null) {
auditDescObject = "";
}
Object auditorIdObject = paramList.get(3);
if(auditorIdObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
ret = saleOrderService.audit((List<Integer>) idsObject, (AuditStatusEnum)auditStatusObject, (String)auditDescObject, (Integer)auditorIdObject);
}
responseMsg(ret);
}
@Override
public Collision getCollision() {
return Collision.generateCollision("tenant.org.id.0");
}
}
package com.bytechainx.psi.web.epc.event.sale;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.bytechainx.psi.common.EnumConstant.AuditStatusEnum;
import com.bytechainx.psi.common.model.SaleRejectOrder;
import com.bytechainx.psi.common.model.SaleRejectOrderCost;
import com.bytechainx.psi.common.model.SaleRejectOrderFee;
import com.bytechainx.psi.common.model.SaleRejectOrderFund;
import com.bytechainx.psi.common.model.SaleRejectOrderGoods;
import com.bytechainx.psi.sale.service.SaleRejectOrderService;
import com.bytechainx.psi.web.epc.base.BaseTraderEvent;
import com.jfinal.aop.Aop;
import com.jfinal.kit.Ret;
import com.jfinal.log.Log;
import com.silkie.epc.EpcErrCode;
import com.silkie.epc.impl.Collision;
import com.silkie.epc.impl.EpcEventParam;
/**
* 销售退货单
*
* @author defier
*
*/
public class SaleRejectOrderEvent extends BaseTraderEvent {
private static final Log LOG = Log.getLog(SaleRejectOrderEvent.class);
private String action; // 执行的方法名,通过这个参数判断需要执行什么行为
private List<Object> paramList; // 参数列表,按照接口方法顺序存入
public SaleRejectOrderEvent(String action) {
this.action = action;
}
@Override
protected int checkBizParam(EpcEventParam param) throws Exception {
if (param == null) {
if (LOG.isWarnEnabled())
LOG.warn("未收到事件参数");
return EpcErrCode.INVALID_PARAM;
}
paramList = param.getListValue(ArrayList.class.getName());
if(paramList == null) {
return EpcErrCode.INVALID_PARAM;
}
return EpcErrCode.SUCCESS;
}
@SuppressWarnings("unchecked")
@Override
protected void dealBiz() throws Exception {
SaleRejectOrderService saleRejectOrderService = Aop.get(SaleRejectOrderService.class);
Ret ret = Ret.ok();
if(StringUtils.equals(action, "create")) {
Object saleRejectOrderObject = paramList.get(0);
if(saleRejectOrderObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderGoodListObject = paramList.get(1);
if(orderGoodListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFundListObject = paramList.get(2);
if(orderFundListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFeeListObject = paramList.get(3);
if(orderFeeListObject == null) {
}
Object orderCostListObject = paramList.get(4);
if(orderCostListObject == null) {
}
ret = saleRejectOrderService.create((SaleRejectOrder) saleRejectOrderObject, (List<SaleRejectOrderGoods>)orderGoodListObject, (List<SaleRejectOrderFund>)orderFundListObject, (List<SaleRejectOrderFee>)orderFeeListObject, (List<SaleRejectOrderCost>)orderCostListObject);
} else if(StringUtils.equals(action, "update")) {
Object saleRejectOrderObject = paramList.get(0);
if(saleRejectOrderObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderGoodListObject = paramList.get(1);
if(orderGoodListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFundListObject = paramList.get(2);
if(orderFundListObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object orderFeeListObject = paramList.get(3);
if(orderFeeListObject == null) {
}
Object orderCostListObject = paramList.get(4);
if(orderCostListObject == null) {
}
ret = saleRejectOrderService.update((SaleRejectOrder) saleRejectOrderObject, (List<SaleRejectOrderGoods>)orderGoodListObject, (List<SaleRejectOrderFund>)orderFundListObject, (List<SaleRejectOrderFee>)orderFeeListObject, (List<SaleRejectOrderCost>)orderCostListObject);
} else if(StringUtils.equals(action, "disable")) {
Object idsObject = paramList.get(0);
if(idsObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
ret = saleRejectOrderService.disable((List<Integer>) idsObject);
} else if(StringUtils.equals(action, "audit")) {
Object idsObject = paramList.get(0);
if(idsObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object auditStatusObject = paramList.get(1);
if(auditStatusObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
Object auditDescObject = paramList.get(2);
if(auditDescObject == null) {
auditDescObject = "";
}
Object auditorIdObject = paramList.get(3);
if(auditorIdObject == null) {
responseMsg(Ret.fail("参数异常"));
return;
}
ret = saleRejectOrderService.audit((List<Integer>) idsObject, (AuditStatusEnum)auditStatusObject, (String)auditDescObject, (Integer)auditorIdObject);
}
responseMsg(ret);
}
@Override
public Collision getCollision() {
return Collision.generateCollision("tenant.org.id.0");
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册