Browse Source

增加结算任务调用营销接口,调用财务系统接口进行记账

master
陈裕财 5 years ago
parent
commit
5d137695ed
  1. 13
      xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java
  2. 144
      xm-core/src/main/java/com/xm/core/service/client/CashOperateServie.java
  3. 46
      xm-core/src/main/java/com/xm/core/service/client/MkClient.java

13
xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java

@ -11,6 +11,8 @@ import com.mdp.safe.client.utils.LoginUtils;
import com.xm.core.entity.XmProjectMCostUser;
import com.xm.core.entity.XmTask;
import com.xm.core.entity.XmTaskExecuser;
import com.xm.core.service.client.CashOperateServie;
import com.xm.core.service.client.MkClient;
import com.xm.core.service.push.XmPushMsgService;
import com.xm.core.vo.XmProjectGroupVo;
import org.springframework.beans.factory.annotation.Autowired;
@ -46,6 +48,12 @@ public class XmTaskExecuserService extends BaseService {
@Autowired
XmPushMsgService pushMsgService ;
@Autowired
CashOperateServie cashOperateServie;
@Autowired
MkClient mkClient;
public void addExecuser(XmTaskExecuser xmTaskExecuser){
User user = LoginUtils.getCurrentUserInfo();
XmTaskExecuser xmTaskExecuserQuery=new XmTaskExecuser();
@ -458,7 +466,10 @@ public class XmTaskExecuserService extends BaseService {
this.updateFlowStateByProcInst("1", flowVars);
}else if("PROCESS_COMPLETED".equals(eventName)) {
if("1".equals(agree)) { //结算通过需要调用财务系统进行记账结算到用户的结算账户中//用户可以通过该账户提现取现金
// todo 需要调用财务系统进行记账结算到用户的结算账户中用户可以通过该账户提现取现金
// 需要调用财务系统进行记账结算到用户的结算账户中用户可以通过该账户提现取现金
cashOperateServie.shopBalancePayToClient(bizExecuser.getBranchId(),"platform",bizExecuser.getId(),bizExecuser.getSettleAmount(),bizExecuser.getTaskName()+"结算费用给执行人",bizExecuser.getUserid(),bizExecuser.getBranchId());
// 需要调用营销系统计算佣金
mkClient.pushActiExecOrder(bizExecuser.getTaskId(), bizExecuser.getUserid(), bizExecuser.getBranchId(),bizExecuser.getTaskId(),new BigDecimal(1),bizExecuser.getSettleAmount(),bizExecuser.getSettleAmount());
flowVars.put("settleStatus","6");
flowVars.put("status","6");
this.updateFlowStateByProcInst("2", flowVars);

144
xm-core/src/main/java/com/xm/core/service/client/CashOperateServie.java

@ -0,0 +1,144 @@
package com.xm.core.service.client;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.utils.BaseUtils;
import com.mdp.core.utils.SequenceFormat;
import com.mdp.micro.client.CallBizService;
import com.mdp.tpa.client.entity.AppShopConfig;
import com.mdp.tpa.client.service.AppShopConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@Service
public class CashOperateServie {
@Autowired
CallBizService restTemplate;
@Autowired
ObjectMapper om;
@Autowired
AppShopConfigService appShopConfigService;
Set<String> userCardCodeSet=new HashSet<String>(1000);
/**
* 结算商家付款给客户不适用第三方支付而是直接使用本系统账户余额支付登记流水及记账一次性完成
* @param payShopId 支付商户编号
* @param payLocationId 支付方店铺编号
* @param acctPrjType 核算项目类型 platfrom/shop/location
* @param orderId 订单号 如没有调用者自行编码一个订单号
* @param orderAmount 订单总金额 如果有多次付款即为所有子单总金额之和
* @param remark 备注
* @param goodsShopId 收款方商户编号
* @param goodsLocationId 收款方店铺编号
* @return
*/
public Map<String,Object> shopBalancePayToClient(String payShopId,String payLocationId,String acctPrjType, String orderId, BigDecimal orderAmount, String remark,
String incomeUserid, String goodsShopId, String goodsLocationId){
String urls = "/accore/accore/tpa/pay/shopBalancePayToClient";
Map<String,Object> m=new HashMap<>();
m.put("payShopId", payShopId);
m.put("payLocationId", payLocationId);
m.put("acctPrjType", acctPrjType);
m.put("orderId",orderId);
m.put("orderAmount", orderAmount);
m.put("remark", remark);
m.put("incomeUserid", incomeUserid);
m.put("goodsShopId", goodsShopId);
m.put("goodsLocationId", goodsLocationId);
Map<String,Object> tipMap = restTemplate.postForMap(urls,m);
Tips tips= BaseUtils.mapToTips(tipMap);
if(!tips.isOk()){
throw new BizException(tips);
}
return tipMap;
}
/**
* 结算商家付款给客户不适用第三方支付而是直接使用本系统账户余额支付登记流水及记账一次性完成
* @param payBranchId 支付商户归属机构编号
* @param acctPrjType 核算项目类型 platfrom/shop/location
* @param orderId 订单号 如没有调用者自行编码一个订单号
* @param orderAmount 订单总金额 如果有多次付款即为所有子单总金额之和
* @param remark 备注
* @param receBranchId 收款方商户归属机构编号
* @return
*/
public Map<String,Object> shopBalancePayToClient(String payBranchId,String acctPrjType, String orderId, BigDecimal orderAmount, String remark,
String incomeUserid,String receBranchId){
AppShopConfig payConfig=appShopConfigService.getShopConfigByBranchId(payBranchId);
AppShopConfig receConfig=payConfig;
if( StringUtils.hasText(receBranchId) && !payBranchId.equals(receBranchId)){
receConfig=appShopConfigService.getShopConfigByBranchId(receBranchId);
}
String urls = "/accore/accore/tpa/pay/shopBalancePayToClient";
Map<String,Object> m=new HashMap<>();
m.put("payShopId", payConfig.getShopId());
m.put("payLocationId", payConfig.getHeadLocationId());
m.put("acctPrjType", acctPrjType);
m.put("orderId",orderId);
m.put("orderAmount", orderAmount);
m.put("remark", remark);
m.put("incomeUserid", incomeUserid);
m.put("goodsShopId", receConfig.getShopId());
m.put("goodsLocationId", receConfig.getHeadLocationId());
Map<String,Object> tipMap = restTemplate.postForMap(urls,m);
Tips tips= BaseUtils.mapToTips(tipMap);
if(!tips.isOk()){
throw new BizException(tips);
}
return tipMap;
}
/**
* 结算商家 付款 合作商家用于退还合作商家缴纳的活动保证金等核销卡券时付款给合作商家等不适用第三方支付而是直接使用本系统账户余额支付登记流水及记账一次性完成
* @param payShopId 支付商户编号
* @param payLocationId 支付方店铺编号
* @param acctPrjType 核算项目类型 platfrom/shop/location
* @param orderId 订单号 如没有调用者自行编码一个订单号
* @param orderAmount 订单总金额 如果有多次付款即为所有子单总金额之和
* @param remark 备注
* @param goodsShopId 收款方商户编号
* @param goodsLocationId 收款方店铺编号
* @return
*/
public Map<String,Object> shopBanlancePayToShop(String payShopId,String payLocationId,String acctPrjType, String orderId, BigDecimal orderAmount, String remark,
String goodsShopId, String goodsLocationId){
String urls = "/accore/accore/tpa/pay/shopBanlancePayToShop";
Map<String,Object> m=new HashMap<>();
m.put("payShopId", payShopId);
m.put("payLocationId", payLocationId);
m.put("acctPrjType", acctPrjType);
m.put("orderId",orderId);
m.put("orderAmount", orderAmount);
m.put("remark", remark);
m.put("goodsShopId", goodsShopId);
m.put("goodsLocationId", goodsLocationId);
Map<String,Object> tipMap = restTemplate.postForMap(urls,m);
Tips tips= BaseUtils.mapToTips(tipMap);
if(!tips.isOk()){
throw new BizException(tips);
}
return tipMap;
}
public String getOrderId(){
String s= SequenceFormat.parse("{date:yyMMddHH}{rands:2}{rand:2}");
while(userCardCodeSet.contains(s)){
s= SequenceFormat.parse("{date:yyMMddHH}{rands:2}{rand:2}");
}
userCardCodeSet.add(s);
return s;
}
}

46
xm-core/src/main/java/com/xm/core/service/client/MkClient.java

@ -0,0 +1,46 @@
package com.xm.core.service.client;
import com.mdp.core.entity.Tips;
import com.mdp.core.utils.BaseUtils;
import com.mdp.micro.client.CallBizService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
@Service
/**
* 对mk接口调用
*/
public class MkClient {
@Autowired
CallBizService callBizService;
/**
* execOrder.setOrderId(sequence.getReqFlowNo());
* execOrder.setActNum(new BigDecimal("1"));
* execOrder.setEntityId(entityId);
* execOrder.setCustId(receiverId);
* execOrder.setActSinglePrice(new BigDecimal("10.22"));
* execOrder.setTotalPrice(new BigDecimal("10.22"));
* execOrder.setCustBranchId("platform-branch-001");
* @return
*/
public Tips pushActiExecOrder(String orderId,String custId,String custBranchId, String entityId,BigDecimal actNum,BigDecimal actSinglePrice,BigDecimal totalPrice){
Tips tips = new Tips("推送订单成功");
String restUrl="/mk/mk/acti/execOrder/add";
Map<String,Object> params=new HashMap<>();
params.put("orderId",orderId);
params.put("custId",custId);
params.put("entityId",entityId);
params.put("actNum",actNum);
params.put("actSinglePrice",orderId);
params.put("totalPrice",totalPrice);
Map<String,Object> resultMap=callBizService.postForMap(restUrl,params);
tips= BaseUtils.mapToTips(resultMap);
return tips;
}
}
Loading…
Cancel
Save