wuxw
2020-01-09 bec2ef3f7b137304e2188683cc3239716a597e79
Merge branch 'master' of https://github.com/java110/MicroCommunity
7个文件已添加
6个文件已修改
755 ■■■■■ 已修改文件
Api/src/main/java/com/java110/api/listener/complaint/SaveComplaintListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/parkingSpace/QueryParkingSpacesByOwnerListener.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/store/ListStoresByCommunityListener.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AppFrontService/src/main/java/com/java110/app/controller/ComplaintController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AppFrontService/src/main/java/com/java110/app/controller/PaymentController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AppFrontService/src/main/java/com/java110/app/smo/complaint/impl/SaveComplaintSMOImpl.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AppFrontService/src/main/java/com/java110/app/smo/payment/IToPaySMO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AppFrontService/src/main/java/com/java110/app/smo/payment/impl/ToPaySMOImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/store/StoreDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/vo/api/store/ApiStoreDataVo.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/vo/api/store/ApiStoreVo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/PaymentFactory.java 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/complaint/SaveComplaintListener.java
@@ -37,7 +37,7 @@
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
        /*Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");*/
        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择投诉类型");
        Assert.hasKeyAndValue(reqJson, "roomId", "必填,请选择房屋编号");
        Assert.hasKeyAndValue(reqJson, "complaintName", "必填,请填写投诉人");
Api/src/main/java/com/java110/api/listener/parkingSpace/QueryParkingSpacesByOwnerListener.java
@@ -89,7 +89,8 @@
            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
            if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "根据psId 查询存在多条停车位信息" + tmpOwnerCarDto.getPsId());
                //throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "根据psId 查询存在多条停车位信息" + tmpOwnerCarDto.getPsId());
                continue;
            }
            parkingSpaceDto = parkingSpaceDtos.get(0);
Api/src/main/java/com/java110/api/listener/store/ListStoresByCommunityListener.java
New file
@@ -0,0 +1,112 @@
package com.java110.api.listener.store;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.listener.AbstractServiceApiDataFlowListener;
import com.java110.api.listener.AbstractServiceApiListener;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.core.factory.DataFlowFactory;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.core.smo.community.ICommunityInnerServiceSMO;
import com.java110.core.smo.store.IStoreInnerServiceSMO;
import com.java110.dto.CommunityMemberDto;
import com.java110.dto.store.StoreDto;
import com.java110.entity.center.AppService;
import com.java110.event.service.api.ServiceDataFlowEvent;
import com.java110.utils.cache.MappingCache;
import com.java110.utils.constant.*;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.vo.api.advert.ApiAdvertDataVo;
import com.java110.vo.api.advert.ApiAdvertVo;
import com.java110.vo.api.store.ApiStoreDataVo;
import com.java110.vo.api.store.ApiStoreVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import java.util.ArrayList;
import java.util.List;
/**
 * 保存商户信息
 * Created by Administrator on 2019/3/29.
 */
@Java110Listener("listStoresByCommunityListener")
public class ListStoresByCommunityListener extends AbstractServiceApiListener {
    @Autowired
    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
    @Autowired
    private IStoreInnerServiceSMO storeInnerServiceSMOImpl;
    @Override
    public int getOrder() {
        return 0;
    }
    @Override
    public String getServiceCode() {
        return ServiceCodeConstant.SERVICE_CODE_LIST_STORES_BY_COMMUNITY;
    }
    @Override
    public HttpMethod getHttpMethod() {
        return HttpMethod.POST;
    }
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        super.validatePageInfo(reqJson);
        Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
    }
    @Override
    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
        CommunityMemberDto communityMemberDto = BeanConvertUtil.covertBean(reqJson, CommunityMemberDto.class);
        int storeCount = communityInnerServiceSMOImpl.getCommunityMemberCount(communityMemberDto);
        List<CommunityMemberDto> communityMemberDtos = null;
        List<ApiStoreDataVo> stores = null;
        if (storeCount > 0) {
            communityMemberDtos = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto);
            StoreDto storeDto = new StoreDto();
            storeDto.setStoreIds(getStoreIds(communityMemberDtos));
            List<StoreDto> storeDtos = storeInnerServiceSMOImpl.getStores(storeDto);
            stores = BeanConvertUtil.covertBeanList(storeDtos, ApiStoreDataVo.class);
        } else {
            stores = new ArrayList<>();
        }
        ApiStoreVo apiStoreVo = new ApiStoreVo();
        apiStoreVo.setTotal(storeCount);
        apiStoreVo.setRecords((int) Math.ceil((double) storeCount / (double) reqJson.getInteger("row")));
        apiStoreVo.setStores(stores);
        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiStoreVo), HttpStatus.OK);
        context.setResponseEntity(responseEntity);
    }
    /**
     * 查询商户ID
     *
     * @param communityMemberDtos
     * @return
     */
    private String[] getStoreIds(List<CommunityMemberDto> communityMemberDtos) {
        List<String> storeIds = new ArrayList<>();
        for (CommunityMemberDto communityMemberDto : communityMemberDtos) {
            storeIds.add(communityMemberDto.getMemberId());
        }
        return storeIds.toArray(new String[storeIds.size()]);
    }
}
AppFrontService/src/main/java/com/java110/app/controller/ComplaintController.java
@@ -1,10 +1,12 @@
package com.java110.app.controller;
import com.alibaba.fastjson.JSONObject;
import com.java110.app.smo.complaint.ISaveComplaintSMO;
import com.java110.app.smo.wxLogin.IWxLoginSMO;
import com.java110.core.base.controller.BaseController;
import com.java110.core.context.IPageData;
import com.java110.core.context.PageData;
import com.java110.utils.constant.CommonConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +28,7 @@
    private final static Logger logger = LoggerFactory.getLogger(ComplaintController.class);
    @Autowired
    private IWxLoginSMO wxLoginSMOImpl;
    private ISaveComplaintSMO saveComplaintSMOImpl;
    /**
@@ -38,7 +40,11 @@
    @RequestMapping(path = "/complaint", method = RequestMethod.POST)
    public ResponseEntity<String> complaint(@RequestBody String postInfo, HttpServletRequest request) {
        return wxLoginSMOImpl.doLogin(null);
        /*IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);*/
        IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
        return saveComplaintSMOImpl.save(pd);
    }
}
AppFrontService/src/main/java/com/java110/app/controller/PaymentController.java
New file
@@ -0,0 +1,51 @@
package com.java110.app.controller;
import com.java110.app.smo.complaint.ISaveComplaintSMO;
import com.java110.core.base.controller.BaseController;
import com.java110.core.context.IPageData;
import com.java110.utils.constant.CommonConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
 * 支付 处理类
 */
@RestController
@RequestMapping(path = "/app/payment")
public class PaymentController extends BaseController {
    private final static Logger logger = LoggerFactory.getLogger(PaymentController.class);
    /**
     * <p>统一下单入口</p>
     *
     * @param request
     * @throws Exception
     */
    @RequestMapping(path = "/toPay", method = RequestMethod.POST)
    public ResponseEntity<String> toPay(@RequestBody String postInfo, HttpServletRequest request) {
        return null;
    }
    /**
     * <p>支付回调Api</p>
     *
     * @param request
     * @throws Exception
     */
    @RequestMapping(path = "/notify", method = RequestMethod.POST)
    public ResponseEntity<String> notify(@RequestBody String postInfo, HttpServletRequest request) {
        return null;
    }
}
AppFrontService/src/main/java/com/java110/app/smo/complaint/impl/SaveComplaintSMOImpl.java
@@ -1,26 +1,68 @@
package com.java110.app.smo.complaint.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.app.smo.AppAbstractComponentSMO;
import com.java110.app.smo.complaint.ISaveComplaintSMO;
import com.java110.app.smo.wxLogin.impl.WxLoginSMOImpl;
import com.java110.core.context.IPageData;
import com.java110.utils.constant.ServiceConstant;
import com.java110.utils.util.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Service("saveComplaintSMOImpl")
public class SaveComplaintSMOImpl extends AppAbstractComponentSMO implements ISaveComplaintSMO {
    private final static Logger logger = LoggerFactory.getLogger(SaveComplaintSMOImpl.class);
    @Autowired
    private RestTemplate restTemplate;
    @Override
    public ResponseEntity<String> save(IPageData pd) {
        return null;
        return businessProcess(pd);
    }
    @Override
    protected void validate(IPageData pd, JSONObject paramIn) {
        Assert.hasKeyAndValue(paramIn, "communityId", "请求报文中未包含小区信息");
    }
    @Override
    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) throws IOException {
        return null;
        //查询用户ID
        paramIn.put("userId", pd.getUserId());
        //查询商户ID
        Map paramObj = new HashMap();
        paramObj.put("communityId", paramIn.getString("communityId"));
        paramObj.put("auditStatusCd", "1100");
        paramObj.put("memberTypeCd", "390001200002");
        paramObj.put("page", 1);
        paramObj.put("row", 1);
        String url = ServiceConstant.SERVICE_API_URL + "/api/store.listStoresByCommunity" + mapToUrlParam(paramObj);
        ResponseEntity<String> responseEntity = super.callCenterService(restTemplate, pd, "", url, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) {
            return responseEntity;
        }
        JSONObject storeObj = JSONObject.parseObject(responseEntity.getBody());
        JSONArray stores = storeObj.getJSONArray("stores");
        String storeId = stores.getJSONObject(0).getString("storeId");
        paramIn.put("storeId", storeId);
        url = ServiceConstant.SERVICE_API_URL + "/api/complaint.saveComplaint";
        responseEntity = super.callCenterService(restTemplate, pd, paramIn.toJSONString(), url, HttpMethod.POST);
        return responseEntity;
    }
}
AppFrontService/src/main/java/com/java110/app/smo/payment/IToPaySMO.java
New file
@@ -0,0 +1,17 @@
package com.java110.app.smo.payment;
import com.java110.core.context.IPageData;
import org.springframework.http.ResponseEntity;
/**
 * 统一下单接口类
 */
public interface IToPaySMO {
    /**
     * 下单
     * @param pd
     * @return
     */
    public ResponseEntity<String> toPay(IPageData pd);
}
AppFrontService/src/main/java/com/java110/app/smo/payment/impl/ToPaySMOImpl.java
New file
@@ -0,0 +1,26 @@
package com.java110.app.smo.payment.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.app.smo.AppAbstractComponentSMO;
import com.java110.app.smo.payment.IToPaySMO;
import com.java110.core.context.IPageData;
import org.springframework.http.ResponseEntity;
import java.io.IOException;
public class ToPaySMOImpl extends AppAbstractComponentSMO implements IToPaySMO {
    @Override
    public ResponseEntity<String> toPay(IPageData pd) {
        return super.businessProcess(pd);
    }
    @Override
    protected void validate(IPageData pd, JSONObject paramIn) {
    }
    @Override
    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) throws IOException {
        return null;
    }
}
java110-bean/src/main/java/com/java110/dto/store/StoreDto.java
@@ -17,6 +17,7 @@
    private String storeId;
    private String[] storeIds;
    private String userId;
    private String name;
    private String address;
@@ -136,4 +137,12 @@
    public void setStoreTypeName(String storeTypeName) {
        this.storeTypeName = storeTypeName;
    }
    public String[] getStoreIds() {
        return storeIds;
    }
    public void setStoreIds(String[] storeIds) {
        this.storeIds = storeIds;
    }
}
java110-bean/src/main/java/com/java110/vo/api/store/ApiStoreDataVo.java
New file
@@ -0,0 +1,115 @@
package com.java110.vo.api.store;
import java.io.Serializable;
import java.util.Date;
public class ApiStoreDataVo implements Serializable {
    private String storeId;
    private String userId;
    private String name;
    private String address;
    private String tel;
    private String storeTypeCd;
    private String nearByLandmarks;
    private String mapX;
    private String mapY;
    private String storeName;
    private String storeTypeName;
    private String createTime;
    public String getStoreId() {
        return storeId;
    }
    public void setStoreId(String storeId) {
        this.storeId = storeId;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    public String getStoreTypeCd() {
        return storeTypeCd;
    }
    public void setStoreTypeCd(String storeTypeCd) {
        this.storeTypeCd = storeTypeCd;
    }
    public String getNearByLandmarks() {
        return nearByLandmarks;
    }
    public void setNearByLandmarks(String nearByLandmarks) {
        this.nearByLandmarks = nearByLandmarks;
    }
    public String getMapX() {
        return mapX;
    }
    public void setMapX(String mapX) {
        this.mapX = mapX;
    }
    public String getMapY() {
        return mapY;
    }
    public void setMapY(String mapY) {
        this.mapY = mapY;
    }
    public String getStoreName() {
        return storeName;
    }
    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }
    public String getStoreTypeName() {
        return storeTypeName;
    }
    public void setStoreTypeName(String storeTypeName) {
        this.storeTypeName = storeTypeName;
    }
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
}
java110-bean/src/main/java/com/java110/vo/api/store/ApiStoreVo.java
New file
@@ -0,0 +1,19 @@
package com.java110.vo.api.store;
import com.java110.vo.MorePageVo;
import java.io.Serializable;
import java.util.List;
public class ApiStoreVo extends MorePageVo implements Serializable {
    List<ApiStoreDataVo> stores;
    public List<ApiStoreDataVo> getStores() {
        return stores;
    }
    public void setStores(List<ApiStoreDataVo> stores) {
        this.stores = stores;
    }
}
java110-core/src/main/java/com/java110/core/factory/PaymentFactory.java
New file
@@ -0,0 +1,338 @@
package com.java110.core.factory;
import com.alibaba.fastjson.JSONObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.util.StringUtils;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringWriter;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * Function: 支付工厂类 <br/>
 * date: 2018-01-18 <br/>
 *
 * @author att
 * @version 1.0
 * @see
 * @since JDK1.8
 */
public class PaymentFactory {
    static Logger log = LogManager.getLogger(PaymentFactory.class);
    /**
     * 获取当前机器的ip
     *
     * @return String
     */
    public static String getLocalIp() {
        InetAddress ia = null;
        String localip = null;
        try {
            ia = ia.getLocalHost();
            localip = ia.getHostAddress();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return localip;
    }
    /**
     * Map转换为 Xml
     *
     * @return Xml
     * @throws Exception
     */
    public static String mapToXml(SortedMap<String, String> map) throws Exception {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
//防止XXE攻击
        documentBuilderFactory.setXIncludeAware(false);
        documentBuilderFactory.setExpandEntityReferences(false);
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        org.w3c.dom.Document document = documentBuilder.newDocument();
        org.w3c.dom.Element root = document.createElement("xml");
        document.appendChild(root);
        for (String key : map.keySet()) {
            String value = map.get(key);
            if (value == null) {
                value = "";
            }
            value = value.trim();
            org.w3c.dom.Element filed = document.createElement(key);
            filed.appendChild(document.createTextNode(value));
            root.appendChild(filed);
        }
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        DOMSource source = new DOMSource(document);
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        StringWriter writer = new StringWriter();
        StreamResult result = new StreamResult(writer);
        transformer.transform(source, result);
        String output = writer.getBuffer().toString();
        try {
            writer.close();
        } catch (Exception ex) {
        }
        return output;
    }
    /**
     * 创建签名Sign
     *
     * @param key
     * @param parameters
     * @return
     */
    public static String createSign(SortedMap<String, String> parameters, String key) {
        StringBuffer sb = new StringBuffer();
        Set es = parameters.entrySet();
        Iterator<?> it = es.iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            String k = (String) entry.getKey();
            if (entry.getValue() != null || !"".equals(entry.getValue())) {
                String v = String.valueOf(entry.getValue());
                if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
                    sb.append(k + "=" + v + "&");
                }
            }
        }
        sb.append("key=" + key);
        String sign = AuthenticationFactory.md5(sb.toString()).toUpperCase();
        return sign;
    }
    /**
     * XML转换为Map
     *
     * @param strXML
     * @return Map
     * @throws Exception
     */
    public static Map<String, Object> getMapFromXML(String strXML) throws Exception {
        try {
            Map<String, Object> data = new HashMap<String, Object>();
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
//防止XXE攻击
            documentBuilderFactory.setXIncludeAware(false);
            documentBuilderFactory.setExpandEntityReferences(false);
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8"));
            org.w3c.dom.Document doc = documentBuilder.parse(stream);
            doc.getDocumentElement().normalize();
            NodeList nodeList = doc.getDocumentElement().getChildNodes();
            for (int idx = 0; idx < nodeList.getLength(); ++idx) {
                Node node = nodeList.item(idx);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    org.w3c.dom.Element element = (org.w3c.dom.Element) node;
                    data.put(element.getNodeName(), element.getTextContent());
                }
            }
            try {
                stream.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return data;
        } catch (Exception ex) {
            throw ex;
        }
    }
    /**
     * 生成随机数
     *
     * @return
     */
    public static String makeUUID(int len) {
        return UUID.randomUUID().toString().replaceAll("-", "").substring(0, len);
    }
    /**
     * 获取当前的Timestamp
     *
     * @return
     */
    public static String getCurrentTimeStamp() {
        return Long.toString(System.currentTimeMillis() / 1000);
    }
    /**
     * 获取当前的时间
     *
     * @return
     */
    public static long getCurrentTimestampMs() {
        return System.currentTimeMillis();
    }
    /**
     * 生成订单号
     *
     * @return
     */
    public static String generateOrderNo() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
        return sdf.format(new Date()) + makeUUID(16);
    }
    /**
     * 获取当前工程url
     *
     * @param request
     * @return
     */
    public static String getCurrentUrl(HttpServletRequest request) {
        return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
    }
    /**
     * Xml字符串转换为Map
     *
     * @param xmlStr
     * @return
     */
    public static Map<String, String> xmlStrToMap(String xmlStr) {
        Map<String, String> map = new HashMap<String, String>();
        Document doc;
        try {
            doc = DocumentHelper.parseText(xmlStr);
            Element root = doc.getRootElement();
            List children = root.elements();
            if (children != null && children.size() > 0) {
                for (int i = 0; i < children.size(); i++) {
                    Element child = (Element) children.get(i);
                    map.put(child.getName(), child.getTextTrim());
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return map;
    }
    public static String getSceneInfo(String wapUrl, String name) {
        Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
        if (!StringUtils.isEmpty(wapUrl) && !StringUtils.isEmpty(name)) {
            /*{"h5_info": {"type":"Wap","wap_url": "https://pay.qq.com","wap_name": "腾讯充值"}}*/
            Map<String, String> childmap = new TreeMap<String, String>();
            childmap.put("type", "Wap");
            childmap.put("wap_url", wapUrl);
            childmap.put("wap_name", name);
            map.put("h5_info", childmap);
            return JSONObject.toJSONString(map);
        }
        return null;
    }
    /**
     * 转换金额型到整型
     *
     * @param money
     * @return
     */
    public static String moneyToIntegerStr(Double money) {
        BigDecimal decimal = new BigDecimal(money);
        int amount = decimal.multiply(new BigDecimal(100))
                .setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
        return String.valueOf(amount);
    }
    /**
     * 除去数组中的空值和签名参数
     *
     * @param sArray 签名参数组
     * @return 去掉空值与签名参数后的新签名参数组
     */
    public static Map<String, String> paraFilter(Map<String, String> sArray) {
        Map<String, String> result = new HashMap<String, String>();
        if (sArray == null || sArray.size() <= 0) {
            return result;
        }
        for (String key : sArray.keySet()) {
            String value = sArray.get(key);
            if (value == null || value.equals("") || key.equalsIgnoreCase("sign")
                    || key.equalsIgnoreCase("sign_type")) {
                continue;
            }
            result.put(key, value);
        }
        return result;
    }
    /**
     * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
     *
     * @param params 需要排序并参与字符拼接的参数组
     * @return 拼接后字符串
     */
    public static String createLinkString(Map<String, String> params) {
        List<String> keys = new ArrayList<String>(params.keySet());
        Collections.sort(keys);
        String prestr = "";
        for (int i = 0; i < keys.size(); i++) {
            String key = keys.get(i);
            String value = params.get(key);
            if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符
                prestr = prestr + key + "=" + value;
            } else {
                prestr = prestr + key + "=" + value + "&";
            }
        }
        return prestr;
    }
    /**
     * 根据不同环境生成支付金额
     *
     * @param env
     * @param money
     * @return
     */
    public static double getPayAmountByEnv(String env, Double money) {
        double pay_money = 0.01;
//测试环境
        if ("ON".equals(env)) {
            if (money > 10000) {
                pay_money = 0.03;
            } else if (money > 1000) {
                pay_money = 0.02;
            } else {
                pay_money = 0.01;
            }
            return pay_money;
        } else {
//生成环境
            return money;
        }
    }
}
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java
@@ -128,6 +128,11 @@
    public static final String SERVICE_CODE_SAVE_STORE_INFO = "save.store.info";
    /**
     * 保存商户信息
     */
    public static final String SERVICE_CODE_LIST_STORES_BY_COMMUNITY = "store.listStoresByCommunity";
    /**
     * 修改商户信息
     */
    public static final String SERVICE_CODE_UPDATE_STORE_INFO = "update.store.info";