fs-danaus
2022-08-03 1937886b35d7610cf142e89b11fda29ccc49fa8b
src/com/yc/open/deli/controller/DeliController.java
@@ -1,5 +1,6 @@
package com.yc.open.deli.controller;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.yc.action.grid.GridUtils;
import com.yc.entity.DataSourceEntity;
@@ -10,8 +11,8 @@
import com.yc.multiData.SpObserver;
import com.yc.open.controller.BaseController;
import com.yc.open.deli.entity.*;
import com.yc.open.deli.service.DeLiIfc;
import com.yc.open.deli.service.PostDataBaseService;
import com.yc.open.deli.service.v2.DeLiIfc;
import com.yc.open.init.Task;
import com.yc.open.utils.ApiUtils;
import com.yc.open.utils.CallBackMessageToObject;
@@ -20,6 +21,7 @@
import com.yc.service.panel.SqlDBHelperIfc;
import com.yc.utils.SessionKey;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +53,7 @@
    @Autowired
    PostDataBaseService mPostDataBaseService;
    final Logger log = LoggerFactory.getLogger(this.getClass());
    /**
     * 生成数字签名及相关的公共参数
     * @param request
@@ -71,6 +74,8 @@
        //取accesskey,secretkey
        DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(dbid);
        String accessKey=dataSourceEntity.getSystemAccessKey();
        String outUserID=dataSourceEntity.getDeliUserId();
        concurrentHashMap.putIfAbsent("outUserID",outUserID);
        concurrentHashMap.putIfAbsent("accesskey",MD5Util.string2MD5(accessKey));
        String sign= ApiUtils.SignRequest(concurrentHashMap,task.getAppSecret());
        concurrentHashMap.putIfAbsent("sign",sign);
@@ -81,6 +86,8 @@
                .append(concurrentHashMap.get("nonce")).append("&")
                .append("accesskey").append("=")
                .append(concurrentHashMap.get("accesskey")).append("&")
                .append("outUserID").append("=")
                .append(concurrentHashMap.get("outUserID")).append("&")
                .append("sign").append("=")
                .append(concurrentHashMap.get("sign"));
        return stringBuilder.toString();
@@ -369,6 +376,114 @@
    }
    /**
     *
     * 与德立营销系统账号进行绑定
     * @return
     */
    @RequestMapping(value="/deli/bindUserAccount.do", method = RequestMethod.GET)
    public @ResponseBody Object bindUserAccount(String userName,String userPass,HttpServletRequest request, HttpServletResponse response){
        CallBackMessageToObject callMsg =new CallBackMessageToObject();
        try {
            if(StringUtils.isBlank(userName)){
                throw new ApplicationException("账号不能为空");
            }
            if(StringUtils.isBlank(userPass)){
                throw new ApplicationException("密码不能为空");
            }
            Object dbid = request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
            DeliController baseController = FactoryBean.getBean(DeliController.class);
            UserAccountEntity userAccountEntity=new UserAccountEntity();
            userAccountEntity.setUserPass(userPass);
            userAccountEntity.setUserName(userName);
            String data= JSON.toJSONString(userAccountEntity);
            //生成签名
            String query = baseController.getSignByRequest(request, data, dbid+"");
            //拉取代理商数据,取得返回信息
            String msgs=baseController.doPostByParameter(Constant.BIND_USERACCOUNT_URL + query, data);
            CallBackMessageToObject callBackMessageToObject =null;
            callBackMessageToObject =new Gson().fromJson(msgs,new com.google.gson.reflect.TypeToken<CallBackMessageToObject>() {}.getType() );
            if(callBackMessageToObject==null||callBackMessageToObject.getState()==-1){
                return  callMsg.sendErrorMessage(callBackMessageToObject.getMsg());
            }
            if("{}".equals(callBackMessageToObject.getData())&&callBackMessageToObject.getState()==0){
                return  callMsg.sendSuccessMessage("返回数据结果为空");
            }else{
                //成功则写入数据源表和更新内存中的数据源
                DataSourceEntity dataSource=MultiDataSource.getDataSourceMap(dbid+"");
                dataSource.setDeliUserCode(((Map)callBackMessageToObject.getData()).get("userName")+"");
                dataSource.setDeliUserId(((Map)callBackMessageToObject.getData()).get("outUserID")+"");
                try{
                    SpObserver.setDBtoDemo();
                        mDeLiIfc.bindUserAccount(dataSource);
                        return callMsg.sendSuccessMessage("绑定成功");
                }catch(Exception ex){
                    return callMsg.sendErrorMessage(this.getErrorMsg(ex));
                }finally {
                    SpObserver.setDBtoInstance();
                }
            }
        }catch (Exception ex){
            return callMsg.sendErrorMessage(this.getErrorMsg(ex));
        }finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     *
     * 与德立营销系统账号进行绑定
     * @return
     */
    @RequestMapping(value="/deli/unbindUserAccount.do", method = RequestMethod.GET)
    public @ResponseBody Object unbindUserAccount(String userName,String userPass,HttpServletRequest request, HttpServletResponse response){
        CallBackMessageToObject callMsg =new CallBackMessageToObject();
        try {
            if(StringUtils.isBlank(userName)){
                throw new ApplicationException("账号不能为空");
            }
            if(StringUtils.isBlank(userPass)){
                throw new ApplicationException("密码不能为空");
            }
            Object dbid = request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
            DeliController baseController = FactoryBean.getBean(DeliController.class);
            UserAccountEntity userAccountEntity=new UserAccountEntity();
            userAccountEntity.setUserPass(userPass);
            userAccountEntity.setUserName(userName);
            String data= JSON.toJSONString(userAccountEntity);
            //生成签名
            String query = baseController.getSignByRequest(request, data, dbid+"");
            //拉取代理商数据,取得返回信息
            String msgs=baseController.doPostByParameter(Constant.UNBIND_USERACCOUNT_URL + query, data);
            CallBackMessageToObject callBackMessageToObject =null;
            callBackMessageToObject =new Gson().fromJson(msgs,new com.google.gson.reflect.TypeToken<CallBackMessageToObject>() {}.getType() );
            if(callBackMessageToObject==null||callBackMessageToObject.getState()==-1){
                return  callMsg.sendErrorMessage(callBackMessageToObject.getMsg());
            }
            if("{}".equals(callBackMessageToObject.getData())&&callBackMessageToObject.getState()==0){
                return  callMsg.sendSuccessMessage("返回数据结果为空");
            }else{
                //成功则写入数据源表和更新内存中的数据源
                DataSourceEntity dataSource=MultiDataSource.getDataSourceMap(dbid+"");
                dataSource.setDeliUserCode(((Map)callBackMessageToObject.getData()).get("userName")+"");
                dataSource.setDeliUserId(((Map)callBackMessageToObject.getData()).get("outUserID")+"");
                try{
                    SpObserver.setDBtoDemo();
                    mDeLiIfc.unbindUserAccount(dataSource);
                    return callMsg.sendSuccessMessage("解绑成功");
                }catch(Exception ex){
                    return callMsg.sendErrorMessage(this.getErrorMsg(ex));
                }finally {
                    SpObserver.setDBtoInstance();
                }
            }
        }catch (Exception ex){
            return callMsg.sendErrorMessage(this.getErrorMsg(ex));
        }finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * 手动接门店资料
     * 从德立营销系统把门店资料表拉取给巴士软件
     * @return