Helius
2021-04-13 c5f009b990f649fdbcd004305d49736fd41f3a22
Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop
1 files deleted
32 files modified
9 files added
1769 ■■■■ changed files
zq-erp/pom.xml 9 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java 105 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/actions/MultipleFileUploadAction.java 169 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java 3 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseFlowDao.java 7 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopDeliveryInfoAction.java 13 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java 47 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java 197 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java 16 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java 41 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java 86 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/MoneyCardUseFlowDto.java 34 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SeeAwardTextDto.java 24 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SignAwardDto.java 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java 33 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java 144 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java 49 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVO.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVo.java 37 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignBasicInfoVo.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java 29 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/pojo/ShopOrderQueryPOJO.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/application.properties 10 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/db/increment/推广员.sql 4 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/xcshop/application.properties 75 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/xcshop/config.json 94 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/xcshop/system.properties 98 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml 48 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml 29 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopDeliveryInfoDao.xml 3 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml 50 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-list.html 234 ●●●● patch | view | raw | blame | history
zq-erp/pom.xml
@@ -59,6 +59,12 @@
                <env>lhx</env>
            </properties>
        </profile>
        <profile>
            <id>xcshop</id>
            <properties>
                <env>xcshop</env>
            </properties>
        </profile>
    </profiles>
    <dependencies>
@@ -393,8 +399,9 @@
                    <exclude>config/prd/*</exclude>
                    <exclude>config/test/*</exclude>
                    <exclude>config/xcx/*</exclude>
                    <exclude>config/xcshop/*</exclude>
                    <!-- -->
                    <!---->
                    <exclude>config/config.json</exclude>
                    <exclude>config/application.properties</exclude>
                    <exclude>config/system.properties</exclude>
zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java
@@ -92,8 +92,8 @@
        taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.SHOP_ORDER_REFUND + evn,MQTaskRouting.SHOP_ORDER_REFUND + evn, SalesOrderRefundTask()));
        //不同任务在不同的队列,但是routingKey一样则可以收到生产者消息
        taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,SalesOrderTask()));
        taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SALES_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,OrderrCreateTask()));
        taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,OrderrCreateTask()));
        taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SALES_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,SalesOrderTask()));
        taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SCORE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,ScoreOrderTask()));
zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java
@@ -11,6 +11,12 @@
import com.matrix.system.activity.vo.CouponVo;
import com.matrix.system.activity.vo.GoodsVo;
import com.matrix.system.activity.vo.SignReceiveListVo;
import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto;
import com.matrix.system.shopXcx.api.dto.SignAwardDto;
import com.matrix.system.shopXcx.api.vo.SeeAwardTextVo;
import com.matrix.system.shopXcx.api.vo.SignAwardListVo;
import com.matrix.system.shopXcx.vo.SalesOrderVo;
import org.apache.ibatis.annotations.Param;
/**
@@ -28,4 +34,8 @@
    int getSignAwardReceiveCount(@Param("userId")Long userId, @Param("companyId")Long companyId);
    IPage<SignAwardListVo> selectSignAwardList(Page<SalesOrderVo> page, @Param("record")SignAwardDto signAwardDto);
    SeeAwardTextVo selectSeeAwardTextVOById(@Param("record")SeeAwardTextDto seeAwardTextDto);
}
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java
@@ -33,7 +33,6 @@
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
import com.matrix.system.shopXcx.dao.ShopLogisticsInfoDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -195,20 +194,96 @@
        shopDeliveryInfo.setDeliveryTime(new Date());
        shopDeliveryInfoDao.insert(shopDeliveryInfo);
        //更新核销记录
        activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
        activitySignWriteoff.setWriteoffTime(new Date());
        activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
        activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId());
        activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId());
        activitySignWriteoffDao.updateById(activitySignWriteoff);
        //更新领取记录
        ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
        activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE);
        activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr());
        activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz());
        activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh());
        activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
//        Integer id = shopDeliveryInfo.getId();
//        if(ObjectUtil.isNotEmpty(id)) {
//            List<ShopLogisticsInfo> shopLogisticsList = new ArrayList<ShopLogisticsInfo>();
//            AjaxResult result = new AjaxResult();
//            Map<String, String> logisticsInfo = new HashMap<String, String>();
//            try {
//                if (shopDeliveryInfo == null) {
//                    return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息");
//                }
//                if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) {
//                    return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空");
//                }
//                logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
//                logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
//
//                //如果已经签收直接查数据库
//                if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) {
//
//                    List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
//                    logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR));
//                    result.setStatus(AjaxResult.STATUS_SUCCESS);
//                    result.setRows(shopLogisticsInfos);
//                    result.putInMap("logisticsInfo", logisticsInfo);
//                    return result;
//                }
//                Map<String, String> param = new HashMap<String, String>();
//                param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode());
//                param.put("LogisticCode", shopDeliveryInfo.getWaybillNo());
//                Map<String, String> paramsUrl = getparams(param);
//                LogUtil.info("物流查询参数" + paramsUrl);
//                String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl);
//                LogUtil.info("查询物流返回信息" + logisticsResult);
//                LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class);
//                if (logisticsInfoVo.isSuccess()) {
//                    ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo();
//                    shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState()));
//                    shopDelivery.setId(shopDeliveryInfo.getId());
//                    logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState());
//                    //更新物流状态
//                    shopDeliveryInfoDao.updateByModel(shopDelivery);
//                    if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) {
//                        List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces();
//                        for (int i = 0; i < mapTraces.size(); i++) {
//                            ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo();
//                            shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER);
//                            shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER);
//                            shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime"));
//                            String acceptStation = mapTraces.get(i).get("AcceptStation");
//                            shopLogisticsInfo.setDescribe(acceptStation);
//                            shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId());
//                            if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR);
//                            } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
//                            } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY);
//                            } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE);
//                            } else {
//                                shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE);
//                            }
//                            shopLogisticsList.add(shopLogisticsInfo);
//                        }
//                        shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId());
//                        if (CollectionUtils.isNotEmpty(shopLogisticsList)) {
//                            shopLogisticsInfoDao.batchInsert(shopLogisticsList);
//                        }
//                    }
//                } else {
//                    throw new GlobleException(logisticsInfoVo.getReason());
//                }
//
//            } catch (Exception e) {
//                throw new GlobleException("物流信息查询失败");
//            }
            //更新核销记录
            activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
            activitySignWriteoff.setWriteoffTime(new Date());
            activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
            activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId());
            activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId());
            activitySignWriteoffDao.updateById(activitySignWriteoff);
            //更新领取记录
            ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
            activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE);
            activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr());
            activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz());
            activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh());
            activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
//        }
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "发货成功");
    }
zq-erp/src/main/java/com/matrix/system/common/actions/MultipleFileUploadAction.java
New file
@@ -0,0 +1,169 @@
package com.matrix.system.common.actions;
import com.alibaba.fastjson.JSONObject;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.UUIDUtil;
import com.matrix.system.common.constance.AppConstance;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 多文件上传控制器
 *
 * @author jiangyouyao
 * @email 512061637@qq.com
 * @date 2019年2月25日
 */
@Controller
@RequestMapping(value = "admin/multipleUploadFile")
public class MultipleFileUploadAction {
    Logger log = Logger.getLogger(MultipleFileUploadAction.class);
    @Value("${file_storage_path}")
    private String fileStoragePath;
    @Value("${static_resource_url}")
    private String nginxUrl;
    /**
     * 最大值
     */
    private Long maxSize = 1024*1024*100L;
    /**
     * 多文件上传方法
     *
     * @author jiangyouyao
     * @email 512061637@qq.com
     * @date 2019年2月25日
     * @param response
     * @param request
     * @return
     * @throws IOException
     * @throws FileUploadException
     */
    @RequestMapping(value = "/doUpload")
    public @ResponseBody JSONObject doFileUpload(HttpServletResponse response, MultipartHttpServletRequest request, Integer data)
            throws IOException, FileUploadException {
        // 文件保存目录路径
        String savePath = fileStoragePath;
        // 文件保存目录URL
        String saveUrl = nginxUrl;
        // String msgPag = "common/fileUploadResult";
        JSONObject object = new JSONObject();
        response.setContentType("text/html; charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        // 保存和访问路径检查
        if (StringUtils.isBlank(saveUrl) || StringUtils.isBlank(savePath)) {
            object.put("status", "err");
            object.put("msg", "文件上传失败错误代码:001");
            return object;
        }
        // 检查目录
        File uploadDir = new File(savePath);
        if (!uploadDir.isDirectory()) {
            uploadDir.mkdir();
        }
        // 检查目录写权限
//        if (!uploadDir.canWrite()) {
//            object.put("status", "err");
//            object.put("msg", "上传目录没有写权限");
//            return object;
//        }
        Map<String, MultipartFile> fileMaps = request.getFileMap();
        for (String key : fileMaps.keySet()) {
            MultipartFile file = fileMaps.get(key);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            String ymd = sdf.format(new Date());
            savePath += ymd + "/";
            saveUrl += ymd + "/";
            File dirFile = new File(savePath);
            if (!dirFile.exists()) {
                dirFile.mkdirs();
            }
            log.info("上传文件名:" + file.getOriginalFilename());
            log.info("上传文件大小:" + file.getBytes().length);
            log.info("上传文件大小限制:" + maxSize);
            log.info("上传文件大小是否超过限制:" + (file.getBytes().length > maxSize));
            if (file.getBytes().length > maxSize) {
                object.put("status", "err");
                object.put("msg", "上传文件大小超过限制");
                return object;
            }
            String fileName = file.getOriginalFilename();
            String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
            fileName = fileName.replace("." + fileExt, "");
            fileName = getSensitive(fileName);
            String newFileName = UUIDUtil.getRandomID() + UUIDUtil.getRandomID() + "." + fileExt;
            File uploadedFile = new File(savePath, newFileName);
            try {
                FileCopyUtils.copy(file.getBytes(), uploadedFile);
            } catch (Exception e) {
                object.put("status", "err");
                object.put("msg", "上传文件失败 "+e.getMessage());
                return object;
            }
            log.info("saveUrl:" + saveUrl);
            String visitPath = saveUrl + newFileName;
            log.info("上传一个文件:" + newFileName);
            log.info("访问路径:" + visitPath);
            // 获取回调函数
            /*
             * String callBack = request.getParameter("callBack"); String inputId =
             * request.getParameter("inputId"); request.setAttribute("status", "200");
             * request.setAttribute("callBack", callBack); request.setAttribute("inputId",
             * inputId); request.setAttribute("url", visitPath);
             */
            object.put("path", visitPath);
            object.put("fileName", fileName);
            object.put("status", 200);
            if (data != null) {
                object.put("index", data);
            }
        }
        return object;
    }
    /**
     * 检查文件名,过滤特殊字符
     *
     * @author jiangyouyao
     * @email 512061637@qq.com
     * @date 2019年2月25日
     * @param globWords
     * @return
     */
    public String getSensitive(String globWords) {
        String sensitive = "";
        Pattern pattern = Pattern.compile(AppConstance.SPECIAL_CHARACTERS);
        Matcher matcher = pattern.matcher(globWords);
        while (matcher.find()) {
            sensitive += matcher.group();
        }
        /*
         * if(sensitive=="" || sensitive.length()<3 ){
         * sensitive=StringUtils.getRandomString(8); }
         */
        return sensitive;
    }
}
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
@@ -1,5 +1,7 @@
package com.matrix.system.hive.bean;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
/**
@@ -48,6 +50,7 @@
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date  createTime;
    
    /**
zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseFlowDao.java
@@ -1,10 +1,11 @@
package com.matrix.system.hive.dao;
import java.util.List;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.MoneyCardUseFlow;
import com.matrix.system.shopXcx.api.dto.MoneyCardUseFlowDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@@ -25,6 +26,8 @@
    
    public List<MoneyCardUseFlow> selectInPage(@Param("record") MoneyCardUseFlow moneyCardUseFlow, @Param("pageVo") PaginationVO pageVo);
    public List<MoneyCardUseFlow> selectForWxInPage(@Param("record")MoneyCardUseFlowDto moneyCardUseFlowDto);
    public List<MoneyCardUseFlow> selectByModel(@Param("record") MoneyCardUseFlow moneyCardUseFlow);
    
    public int  selectTotalRecord(@Param("record") MoneyCardUseFlow moneyCardUseFlow);
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopDeliveryInfoAction.java
@@ -12,20 +12,18 @@
import com.matrix.core.tools.ModelUtils;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.CustomerDataDictionary;
import com.matrix.system.common.bean.SystemDictionary;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.bean.SystemDictionary;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
import com.matrix.system.common.dao.SystemDictionaryDao;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.action.BaseController;
import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil;
import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
import com.matrix.system.shopXcx.bean.ShopOrder;
import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
import com.matrix.system.shopXcx.dao.ShopLogisticsInfoDao;
import com.matrix.system.shopXcx.dao.ShopOrderDao;
import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -86,11 +84,6 @@
        pageVo.setSort("create_time");
        pageVo.setOrder("desc");
        shopDeliveryInfo.setCompanyId(sysUsers.getCompanyId());
        if (getMe().getShopRole().equals(Dictionary.FLAG_NO_N)) {
            shopDeliveryInfo.setShopId(sysUsers.getShopId());
        }
        List<ShopDeliveryInfo> dataList = shopDeliveryInfoDao.selectInPage(shopDeliveryInfo, pageVo);
        AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList,
                shopDeliveryInfoDao.selectTotalRecord(shopDeliveryInfo));
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java
@@ -16,7 +16,6 @@
import com.matrix.core.tools.excl.ExcelVersion;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.action.BaseController;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.SysShopInfo;
@@ -108,8 +107,8 @@
        ExcelSheetPO orderSheet = new ExcelSheetPO();
        orderSheet.setSheetName("订单列表");
        orderSheet.setTitle("订单列表");
        String[] header = new String[]{"订单编号", "客户姓名", "客户电话", "收货地址", "下单时间", "订单金额",
                "优惠总金额", "优惠说明", "订单状态", "配送方式", "门店名称", "商品名称", "规格", "生产企业", "单价", "购买数量"};
        String[] header = new String[]{"订单编号", "客户姓名", "客户电话", "收货地址", "店铺名称","订单状态","下单时间",  "购买商品","订单金额",
                "优惠总金额",  "配送方式"};
        orderSheet.setHeaders(header);
        List<List<Object>> body = new ArrayList<>();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
@@ -133,42 +132,26 @@
                } else {
                    bodyItem.add("");
                }
                //下单时间
                bodyItem.add(dateFormat.format(shopOrder.getOrderTime()));
                //购买数量
//                bodyItem.add(shopOrder.getPurchaseQuantity());
                //订单金额
                bodyItem.add(shopOrder.getOrderMoney());
                //优惠总金额
                bodyItem.add(shopOrder.getDiscountAmount());
                //优惠说明
                bodyItem.add(shopOrder.getDiscountExplain());
                //店铺名称
                bodyItem.add(shopOrder.getStoreName());
                //订单状态
                bodyItem.add(OrderStatusEnum.getNameByCode(shopOrder.getOrderStatus()));
                //配送方式 门店
                bodyItem.add("物流");
                bodyItem.add("");
                //商品名称
                //下单时间
                bodyItem.add(dateFormat.format(shopOrder.getOrderTime()));
                //购买商品
                ShopSku shopSku = shopOrderDetails.getShopSku();
                ShopProduct shopProduct = shopOrderDetails.getShopProduct();
                if (shopProduct == null) {
                    bodyItem.add("");
                } else {
                    bodyItem.add(shopProduct.getTitle());
                    bodyItem.add(shopProduct.getTitle()+ "(" +shopSku.getName()+ ")*" + shopOrderDetails.getCount());
                }
                //规格名称、生产企业、单价
                ShopSku shopSku = shopOrderDetails.getShopSku();
                if (shopSku == null) {
                    bodyItem.add("");
                    bodyItem.add(shopOrderDetails.getProductionEnterprise());
                    bodyItem.add("");
                } else {
                    bodyItem.add(shopSku.getName());
                    bodyItem.add(shopOrderDetails.getProductionEnterprise());
                    bodyItem.add(shopSku.getPrice());
                }
                //购买数量
                bodyItem.add(shopOrderDetails.getCount());
                //订单金额
                bodyItem.add(shopOrder.getOrderMoney());
                //优惠总金额
                bodyItem.add(shopOrder.getDiscountAmount());
                //配送方式 门店
                bodyItem.add("物流");
                body.add(bodyItem);
            }
        }
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java
@@ -1,30 +1,43 @@
package com.matrix.system.shopXcx.api.action;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.component.rabbitmq.RabiitMqTemplate;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData;
import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
import com.matrix.config.RabbitMqConfig;
import com.matrix.core.constance.SystemErrorCode;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.LogUtil;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.bean.MoneyCardUseFlow;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
import com.matrix.system.hive.dao.ShoppingGoodsDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.score.dao.ScoreVipDetailDao;
import com.matrix.system.shopXcx.api.pojo.OrderInfoQueryPOJO;
import com.matrix.system.shopXcx.api.pojo.ShopOrderDto;
import com.matrix.system.shopXcx.api.service.OrderCouponGroupService;
import com.matrix.system.shopXcx.api.service.ShoppingCartService;
import com.matrix.system.shopXcx.api.service.WXShopOrderService;
import com.matrix.system.shopXcx.api.service.WxShopCouponService;
import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil;
import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil;
import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoin;
import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoinUser;
import com.matrix.system.shopXcx.bean.ShopOrder;
import com.matrix.system.shopXcx.bean.ShopPayLog;
import com.matrix.system.shopXcx.dao.*;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.*;
/**
@@ -42,16 +55,10 @@
    @Autowired
    WxShopCouponService wxShopCouponService;
    @Autowired
    private ShopReceiveAddressDao shopReceiveAddressDao;
    @Autowired
    ShoppingCartService shoppingCartService;
    @Autowired
    private ShopCouponDao shopCouponDao;
    @Autowired
    private WxShopCouponUtil wxShopCouponUtil;
    @Autowired
    private RedisUserLoginUtils redisUserLoginUtils;
@@ -64,20 +71,39 @@
    @Autowired
    ShopProductDao shopProductDao;
    @Autowired
    private WxShopOrderUtil wxShopOrderUtil;
    @Autowired
    private ShopOrderDetailsDao shopOrderDetailsDao;
    @Autowired
    OrderCouponGroupService orderCouponGroupService;
    @Autowired
    private ShopPayLogDao shopPayLogDao;
    @Autowired
    ShopOrderDao shopOrderDao;
    @Autowired
    SysVipInfoDao sysVipInfoDao;
    @Autowired
    private ShopActivitiesGroupJoinUserDao shopActivitiesGroupJoinUserDao;
    @Autowired
    private ShopActivitiesGroupJoinDao shopActivitiesGroupJoinDao;
    @Autowired
    private RabiitMqTemplate rabiitMqTemplate;
    @Autowired
    ShoppingGoodsDao shoppingGoodsDao;
    @Autowired
    MoneyCardUseFlowDao moneyCardUseFlowDao;
    @Autowired
    MoneyCardUseDao moneyCardUseDao;
    @Value("${evn}")
    private String evn;
    /**
     * 计算购物车订单价格
@@ -90,17 +116,15 @@
    public
    @ResponseBody
    AjaxResult calculationCartOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception {
        return shopOrderService.buildDiscountExplain(shopOrderDto);
    }
    @Autowired
    ShoppingGoodsDao shoppingGoodsDao;
    private ScoreVipDetailDao scoreVipDetailDao;
    /**
     * 新增订单
     * 新增微信支付订单
     *
     * @param shopOrderDto
     * @return
@@ -108,43 +132,128 @@
    @PostMapping(value = "/addShopOrder")
    public
    @ResponseBody
    AjaxResult addShopOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception {
        return shopOrderService.createShopOrder(shopOrderDto);
    AjaxResult addShopOrder(@RequestBody @Validated ShopOrderDto shopOrderDto) throws Exception {
        ShopOrder shopOrder = shopOrderService.createShopOrder(shopOrderDto);
        AjaxResult result = AjaxResult.buildSuccessInstance("订单创建成功");
        result.putInMap("orderId", shopOrder.getId());
        if (shopOrderDto.getPayMethod().equals(ShopOrder.SHOP_ORDER_PAY_METHOD_WX)) {
            BrandWCPayRequestData payData = shopOrderService.startPayment(shopOrder);
            result.setRows(Arrays.asList(payData));
        }
        return result;
    }
    @Value("${wx_pay_debug_onoff}")
    private boolean isDebug;
    @Autowired
    private WeixinServiceUtil weixinServiceUtil;
    /**
     * 开始付款
     * 余额支付确认
     *
     * @param shopOrder
     * @param orderId
     * @return
     * @throws Exception
     */
    public BrandWCPayRequestData startPayment(ShopOrder shopOrder) throws Exception {
        BigDecimal unit = new BigDecimal("100");
        BigDecimal money = new BigDecimal(shopOrder.getOrderMoney().toString());
        BrandWCPayRequestData payData;
        String productNames = wxShopOrderUtil.getProductNames(shopOrder.getUserId(), shopOrder.getId());
        SysVipInfo vipInfo = sysVipInfoDao.selectById(shopOrder.getUserId());
    @GetMapping(value = "/moneyCardPay/{orderId}")
    @ResponseBody
    @Transactional
    public   AjaxResult moneyCardPay(@PathVariable Integer orderId) throws Exception {
        if (isDebug) {
            payData = weixinServiceUtil.createOrder("[测试]" + productNames, shopOrder.getOrderNo(),
                    1, vipInfo.getOpenId(), String.valueOf(shopOrder.getId()));
        ShopOrder order = shopOrderDao.selectById(orderId);
        if (order != null
                && ShopOrder.SHOP_ORDER_PAY_METHOD_VIPCARD == order.getPayMethod()
                && ShopOrder.ORDER_PAY_STATUS_WAIT == order.getPayStatus()) {
            MoneyCardUse moneyCardUse = moneyCardUseDao.selectVipCard(order.getUserId());
            Double balance=moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney();
            if(balance>=order.getOrderMoney().doubleValue()){
                //扣减会员卡余额
                if(moneyCardUse.getRealMoney()>=order.getOrderMoney().doubleValue()){
                    moneyCardUse.setRealMoney(moneyCardUse.getRealMoney()-order.getOrderMoney().doubleValue());
                }else{
                    moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney()-(order.getOrderMoney().doubleValue()- moneyCardUse.getRealMoney() ));
                    moneyCardUse.setRealMoney(0D);
                }
                moneyCardUseDao.update(moneyCardUse);
                //插入扣减记录
                MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
                moneyCardUseFlow.setTotal(order.getOrderMoney().doubleValue());
                moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
                moneyCardUseFlow.setVipId(order.getUserId());
                moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
                moneyCardUseFlow.setOrderNo(order.getOrderNo());
                moneyCardUseFlow.setCreateTime(new Date());
                moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney()+moneyCardUse.getRealMoney());
                moneyCardUseFlow.setCardName(moneyCardUse.getCardName());
                moneyCardUseFlowDao.insert(moneyCardUseFlow);
                //构建需要修改订单信息Map
                Map<String, Object> modifyMap = new HashMap<>();
                modifyMap.put("id", order.getId());
                //设置微信支付状态为已支付
                modifyMap.put("payResult", ShopOrder.ORDER_WX_STATUS_PAY_SUCCESS);
                //设置支付状态为支付成功
                modifyMap.put("payStatus", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
                //如果是商品订单则进入待发货
                modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_WAIT_SEND);
                shopOrderDao.updateByMap(modifyMap);
                // 判断该订单是否为拼团产生的订单
                ShopActivitiesGroupJoinUser joinUser = shopActivitiesGroupJoinUserDao.selectGroupJoinUserByOrderId(order.getId().longValue());
                if (joinUser != null) {
                    joinUser.setIsHasPay(ShopActivitiesGroupJoinUser.IS_HAS_PAY_Y);
                    shopActivitiesGroupJoinUserDao.updateByModel(joinUser);
                    ShopActivitiesGroupJoin groupJoin = shopActivitiesGroupJoinDao.selectGroupAndPriceById(joinUser.getGjId());
                    List<ShopActivitiesGroupJoinUser> joinUserList = shopActivitiesGroupJoinUserDao.selectGroupJoinUserListByGjId(joinUser.getGjId());
                    LogUtil.info("#当前已支付完成:{}#", joinUserList.size());
                    // 若拼团中已支付的数量等于几人团预设值,则更新拼团状态为拼团成功
                    if (groupJoin.getGroupPrice().getGpCount() == joinUserList.size()) {
                        groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_SUCCESS);
                    } else {
                        if (joinUser.getUserId().equals(groupJoin.getGjHeadId())) {
                            groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_ING);
                        }
                    }
                    shopActivitiesGroupJoinDao.updateByModel(groupJoin);
                    SysVipInfo sysVipInfo = sysVipInfoDao.selectByPhone(order.getUserTel());
                    if (sysVipInfo != null) {
                        sysVipInfo.setIsDeal(SysVipInfo.DEAL_VIP);
                        sysVipInfoDao.update(sysVipInfo);
                    }
                }
                // 根据订单类型创建不同的处理任务
                rabiitMqTemplate.sendTopicMsg(RabbitMqConfig.MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn, orderId + "");
                //支付记录
                recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), order.getOrderMoney(), "会员卡余额支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
                return AjaxResult.buildSuccessInstance("支付成功");
            }else{
                return AjaxResult.buildFailInstance("会员卡余额不足");
            }
        } else {
            payData = weixinServiceUtil.createOrder(productNames, shopOrder.getOrderNo(),
                    unit.multiply(money).intValue(), vipInfo.getOpenId(), String.valueOf(shopOrder.getId()));
            LogUtil.info("订单状态不为待付款,order status=", order.getOrderStatus());
            return AjaxResult.buildFailInstance("订单不支持本次结算");
        }
        ShopOrder updateParam = new ShopOrder();
        updateParam.setId(shopOrder.getId());
        updateParam.setWxOrderNo(payData.getPrepay_id());
        shopOrderDao.updateByModel(updateParam);
        return payData;
    }
    private void recordPayLog(Integer orderId, Integer type, String orderNo, BigDecimal payMoney, String payRemark, int payStatus) {
        //设置支付类型为收款
        ShopPayLog payLog = new ShopPayLog();
        payLog.setPayType(type);
        payLog.setJoinId(orderId);
        payLog.setPayMoney(payMoney);
        payLog.setPayOrderNo(orderNo);
        payLog.setPayRemark(payRemark);
        payLog.setPayStatus(payStatus);
        payLog.setCreateBy(AppConstance.SYSTEM_USER);
        payLog.setUpdateBy(AppConstance.SYSTEM_USER);
        shopPayLogDao.insert(payLog);
    }
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
@@ -204,7 +204,7 @@
                            resXml = AppConstance.RESULT_XML_SUCCESS;
                            //支付记录
                            recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney,  payLog, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
                            recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney,  "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
                        } else {
@@ -306,17 +306,22 @@
                                BigDecimal.ROUND_HALF_DOWN).doubleValue();
                        if (moneyCardUseFlow.getCarUseId()==null) {
                            ShopPayLog payLog = new ShopPayLog();
                            if(payMoney.equals(moneyCardUseFlow.getTotal())){
                                threadResult.putInMap("status", "success");
                                resXml = AppConstance.RESULT_XML_SUCCESS;
                                MoneyCardUse moneyCardUse = moneyCardUseDao.selectVipCard(user.getId());
                                moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
                                moneyCardUseFlow.setCardName(moneyCardUse.getCardName());
                                moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
                                Double balance=moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney();
                                moneyCardUseFlow.setBalance(balance==null?0:balance);
                                moneyCardUseFlowDao.update(moneyCardUseFlow);
                                moneyCardUse.setRealMoney(moneyCardUse.getRealMoney()+payMoney.doubleValue());
                                moneyCardUseDao.update(moneyCardUse);
                                //充值记录
                                recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney),  payLog, "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
                                recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney), "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
                            }else{
                                LogUtil.debug("支付金额不一致,检查支付金额payMoney={},order.getPayMoney()={}", payMoney, moneyCardUseFlow.getTotal());
                                threadResult.putInMap("status", "err");
@@ -362,8 +367,9 @@
    private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, ShopPayLog payLog, String payRemark, int payStatus) {
    private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, String payRemark, int payStatus) {
        //设置支付类型为收款
        ShopPayLog payLog=new ShopPayLog();
        payLog.setPayType(type);
        payLog.setJoinId(orderId);
        payLog.setPayMoney(payMoney);
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java
@@ -8,7 +8,6 @@
import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.BasePageQueryDto;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.hive.bean.MoneyCardUse;
@@ -17,6 +16,7 @@
import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
import com.matrix.system.hive.dao.MoneyCardUseV2Dao;
import com.matrix.system.hive.service.CodeService;
import com.matrix.system.shopXcx.api.dto.MoneyCardUseFlowDto;
import com.matrix.system.shopXcx.api.vo.WxMoneyCardUseVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -58,6 +58,26 @@
    @Autowired
    CodeService codeService;
    @ApiOperation(value = "查询会员主卡", notes = "")
    @GetMapping(value = "/getUserVipCard")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = WxMoneyCardUseVO.class)
    })
    public AjaxResult getUserVipCard() {
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.eq("vip_id", sysVipInfo.getId());
        queryWrapper.eq("is_vip_car","Y");
        MoneyCardUse moneyCardUse = moneyCardUseV2Dao.selectOne(queryWrapper);
        WxMoneyCardUseVO vo = new WxMoneyCardUseVO();
        BeanUtils.copyProperties(moneyCardUse, vo);
        return AjaxResult.buildSuccessInstance(vo);
    }
    @ApiOperation(value = "查询会员储值卡", notes = "")
    @PostMapping(value = "/getUserMoneyCardUseList")
    @ApiResponses({
@@ -76,6 +96,9 @@
        }).collect(Collectors.toList());
        return AjaxResult.buildSuccessInstance(rows);
    }
    @ApiOperation(value = "创建储值卡充值预付单", notes = "传入参数 {rechargeAmount:10} 最少充值1元,最多2位小数 ")
    @PostMapping(value = "/createRechargeOrder")
@@ -135,19 +158,11 @@
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = MoneyCardUseFlow.class)
    })
    public AjaxResult getRechargeList(@RequestBody @Validated BasePageQueryDto pageDto) {
        if(StringUtils.isBlank(pageDto.getKeywords())){
            return AjaxResult.buildFailInstance("keywords参数是必须的");
        }
        PaginationVO pageVo = new PaginationVO();
        pageVo.setOffset((pageDto.getPageNum() - 1) * pageDto.getPageSize());
        pageVo.setLimit(pageDto.getPageSize());
    public AjaxResult getRechargeList(@RequestBody @Validated MoneyCardUseFlowDto pageDto) {
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
        moneyCardUseFlow.setVipId(sysVipInfo.getId());
        moneyCardUseFlow.setCarUseId(Long.parseLong(pageDto.getKeywords()));
        List<MoneyCardUseFlow> dataList = moneyCardUseFlowDao.selectInPage(moneyCardUseFlow, pageVo);
        return AjaxResult.buildSuccessInstance(dataList, moneyCardUseFlowDao.selectTotalRecord(moneyCardUseFlow));
        pageDto.setCompanyId(sysVipInfo.getCompanyId());
        List<MoneyCardUseFlow> dataList = moneyCardUseFlowDao.selectForWxInPage(pageDto);
        return AjaxResult.buildSuccessInstance(dataList);
    }
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java
@@ -5,6 +5,8 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
@@ -18,15 +20,19 @@
import com.matrix.system.activity.entity.ActivitySignWriteoff;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.shopXcx.api.dto.ClickSignDTO;
import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto;
import com.matrix.system.shopXcx.api.dto.SignAwardDto;
import com.matrix.system.shopXcx.api.vo.*;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
import com.matrix.system.shopXcx.vo.SalesOrderVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@@ -312,25 +318,67 @@
        return getCumulativeDay(actId,userId,offsetDay,i);
    }
    
//    /**
//     * 获取累计的签到奖品数量
//     *
//     * @return
//     */
//    @ApiOperation(value = "获取累计的签到奖品列表", notes = "")
//    @ApiResponses({
//            @ApiResponse(code = 200, message = "ok", response = SignAwardListVO.class)
//    })
//    @GetMapping(value = "/getSignAwardList")
//    @PostMapping(value = "/getSignAwardList")
//    public AjaxResult getSignAwardList(@RequestBody SignAwardListVO signAwardListVO) {
//        SysVipInfo user = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
//        Long userId = user.getId();
//        Long companyId = user.getCompanyId();
//        int size = activitySignReceiveRecordDao.getSignAwardReceiveCount(userId, companyId);
//        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(size);
//        return ajaxResult;
//    }
    /**
     * 获取累计的签到奖品
     *
     * @return
     */
    @ApiOperation(value = "获取累计的签到奖品", notes = "")
    @PostMapping(value = "/getSignAwardList")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = SignAwardListVo.class)
    })
    public AjaxResult getSignAwardList(@RequestBody @Validated SignAwardDto signAwardDto) {
        SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        Page<SalesOrderVo> page=new Page<>(signAwardDto.getPageNum(),signAwardDto.getPageSize());
        if(StringUtils.isBlank(signAwardDto.getSort())){
            signAwardDto.setSort("create_time");
            signAwardDto.setOrder("desc");
        }
        signAwardDto.setUserId(loginUser.getId());
        signAwardDto.setCompanyId(loginUser.getCompanyId());
        IPage<SignAwardListVo> signAwardListVos = activitySignReceiveRecordDao.selectSignAwardList(page,signAwardDto);
        AjaxResult result=AjaxResult.buildSuccessInstance(signAwardListVos.getRecords());
        return result;
    }
    /**
     * 查看劵码
     *
     * @return
     */
    @ApiOperation(value = "查看劵码", notes = "")
    @PostMapping(value = "/seeAwardText")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = SeeAwardTextVo.class)
    })
    public AjaxResult seeAwardText(@RequestBody @Validated SeeAwardTextDto seeAwardTextDto) {
        SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        seeAwardTextDto.setUserId(loginUser.getId());
        seeAwardTextDto.setCompanyId(loginUser.getCompanyId());
        SeeAwardTextVo seeAwardTextVO = activitySignReceiveRecordDao.selectSeeAwardTextVOById(seeAwardTextDto);
        AjaxResult result=AjaxResult.buildSuccessInstance(seeAwardTextVO);
        return result;
    }
    /**
     * 物流配送确认
     *
     * @return
     */
    @ApiOperation(value = "查看劵码", notes = "")
    @PostMapping(value = "/logisticsInsure")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = SeeAwardTextVo.class)
    })
    public AjaxResult logisticsInsure(@RequestBody @Validated SeeAwardTextDto seeAwardTextDto) {
        SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        seeAwardTextDto.setUserId(loginUser.getId());
        seeAwardTextDto.setCompanyId(loginUser.getCompanyId());
        SeeAwardTextVo seeAwardTextVO = activitySignReceiveRecordDao.selectSeeAwardTextVOById(seeAwardTextDto);
        AjaxResult result=AjaxResult.buildSuccessInstance(seeAwardTextVO);
        return result;
    }
    
    
    
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java
@@ -68,6 +68,8 @@
        }
        logisticsInfo.put("isShipments",AppConstance.IS_SHIPMENTS);
        logisticsInfo.put("logisticsStatus",shopDeliveryInfo.getLogisticsStatus()==null?"0":String.valueOf(shopDeliveryInfo.getLogisticsStatus()));
        logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
        logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
        logisticsInfo.put("describe",describe);
        result.setStatus(AjaxResult.STATUS_SUCCESS);
        result.putInMap("logisticsInfo",logisticsInfo);
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/MoneyCardUseFlowDto.java
New file
@@ -0,0 +1,34 @@
package com.matrix.system.shopXcx.api.dto;
import com.matrix.core.pojo.BasePageQueryDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "MoneyCardUseFlowDto", description = "储值卡流水查询参数接收类")
public class MoneyCardUseFlowDto extends BasePageQueryDto {
    @NotEmpty(message = "请选择查询时间")
    @ApiModelProperty(value = "查询月份",example = "2021-03")
    private String queryTime;
    @ApiModelProperty(value = "收支类型 不传全部,1,收入,2支出", example = "1")
    private Integer  revenueType;
    @NotNull(message = "请选择要查询的储值卡ID")
    @ApiModelProperty(value = "储值卡id", example = "1")
    private Long  carUseId;
    @ApiModelProperty(hidden = true)
    private Long  companyId;
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SeeAwardTextDto.java
New file
@@ -0,0 +1,24 @@
package com.matrix.system.shopXcx.api.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "SeeAwardTextDto", description = "查询参数接收类")
public class SeeAwardTextDto {
    @NotNull(message = "奖品ID不能为空")
    @ApiModelProperty(value = "奖品ID", example = "1")
    private Long  awardId;
    @ApiModelProperty(hidden = true)
    private Long  userId;
    @ApiModelProperty(hidden = true)
    private Long  companyId;
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SignAwardDto.java
New file
@@ -0,0 +1,20 @@
package com.matrix.system.shopXcx.api.dto;
import com.matrix.core.pojo.BasePageQueryDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "SignAwardDto", description = "查询参数接收类")
public class SignAwardDto extends BasePageQueryDto {
    @ApiModelProperty(hidden = true)
    private Long  userId;
    @ApiModelProperty(hidden = true)
    private Long  companyId;
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java
@@ -2,6 +2,7 @@
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
@@ -15,6 +16,7 @@
    /**
     *  收货地址ID
     */
    @NotNull(message = "请选择正确的收获地址")
    private Integer receiveAddrId;
    /**
@@ -37,7 +39,11 @@
     */
    private Integer joinActive;
    /**
     *  支付方式1微信,2 vipCard余额
     */
    @NotNull(message = "请选择支付方式")
    private Integer payMethod;
    /**
     *  订单备注
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java
@@ -23,7 +23,7 @@
     * @return
     * @throws Exception
     */
    AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception;
    ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception;
    /**
     * 订单结算
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
@@ -3,7 +3,6 @@
import cn.hutool.core.collection.CollUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.component.rabbitmq.RabiitMqTemplate;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.component.tools.WxUtils;
@@ -17,6 +16,7 @@
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
import com.matrix.system.common.interceptor.HostInterceptor;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.ShoppingGoodsDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.score.dao.ScoreVipDetailDao;
@@ -29,7 +29,6 @@
import com.matrix.system.shopXcx.api.service.ShoppingCartService;
import com.matrix.system.shopXcx.api.service.WXShopOrderService;
import com.matrix.system.shopXcx.api.service.WxShopCouponService;
import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil;
import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil;
import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO;
import com.matrix.system.shopXcx.bean.*;
@@ -55,8 +54,6 @@
    @Autowired
    private WxShopOrderUtil wxShopOrderUtil;
    @Autowired
    private WxShopCouponUtil wxShopCouponUtil;
    @Autowired
    private RedisUserLoginUtils redisUserLoginUtils;
    @Autowired
    private WeixinServiceUtil weixinServiceUtil;
@@ -68,8 +65,6 @@
    private ShopOrderDao shopOrderDao;
    @Autowired
    private ShopOrderDetailsDao shopOrderDetailsDao;
    @Autowired
    private ShopCouponDao shopCouponDao;
    @Autowired
    private ShopProductDao shopProductDao;
    @Autowired
@@ -131,27 +126,25 @@
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
    public ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        //校验收货地址
        ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(shopOrderDto.getReceiveAddrId());
        if (shopReceiveAddress == null) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择正确的收获地址");
        }
        //计算订单优惠信息
        AjaxResult caculateResult= buildDiscountExplain(shopOrderDto);
        DiscountExplain discountExplain= (DiscountExplain) caculateResult.getMapInfo().get("discountExplain");
        if(discountExplain.getScorePay()!=null){
            //校验用户积分是否够用
            int score=scoreVipDetailDao.selectUserTotalScore(sysVipInfo.getId());
            if(score<discountExplain.getScorePay()){
                return  AjaxResult.buildFailInstance("积分不足");
                throw new GlobleException("积分不足");
            }
        }
        ShopOrder shopOrder = new ShopOrder();
        shopOrder.setCompanyId(sysVipInfo.getCompanyId());
@@ -200,6 +193,7 @@
        shopOrder.setUserId(sysVipInfo.getId());
        shopOrder.setCreateBy("微信小程序生成");
        shopOrder.setUpdateBy("微信小程序生成");
        shopOrder.setPayMethod(shopOrderDto.getPayMethod());
        shopOrder.setCommodityPrice(discountExplain.getBillPrice());
        shopOrder.setPurchaseQuantity(orderCount);
        shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
@@ -256,11 +250,8 @@
        BrandWCPayRequestData payData = startPayment(shopOrder);
        AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(payData));
        result.putInMap("orderId", shopOrder.getId());
        return result;
        return shopOrder;
    }
    @Override
@@ -392,11 +383,15 @@
    @Override
    public AjaxResult orderSettlement(int orderId) throws Exception {
        ShopOrder shopOrder = shopOrderDao.selectById(orderId);
        if (shopOrder == null) {
            throw new GlobleException("订单不存在!");
            return AjaxResult.buildFailInstance("订单不存在!");
        }
        if (ShopOrder.SHOP_ORDER_PAY_METHOD_WX != shopOrder.getPayMethod()) {
            return AjaxResult.buildFailInstance("支付方式错误");
        }
        if (!shopOrder.getPayResult().equals(ShopOrder.ORDER_PAY_STATUS_WAIT)) {
            throw new GlobleException("该订单不是待支付状态!");
            return AjaxResult.buildFailInstance("该订单不是待支付状态!");
        }
        if(shopOrder.getScorePay()!=null){
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java
@@ -79,76 +79,72 @@
        List<ShopLogisticsInfo> shopLogisticsList = new ArrayList<ShopLogisticsInfo>();
        AjaxResult result = new AjaxResult();
        Map<String, String> logisticsInfo = new HashMap<String, String>();
        try {
            if (shopDeliveryInfo == null) {
                return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息");
            }
            if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) {
                return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空");
            }
            logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
            logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
            //如果已经签收直接查数据库
            if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) {
                List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
                logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR));
                result.setStatus(AjaxResult.STATUS_SUCCESS);
                result.setRows(shopLogisticsInfos);
                result.putInMap("logisticsInfo", logisticsInfo);
                return result;
            }
            Map<String, String> param = new HashMap<String, String>();
            param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode());
            param.put("LogisticCode", shopDeliveryInfo.getWaybillNo());
            Map<String, String> paramsUrl = getparams(param);
            LogUtil.info("物流查询参数" + paramsUrl);
            String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl);
            LogUtil.info("查询物流返回信息" + logisticsResult);
            LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class);
            if (logisticsInfoVo.isSuccess()) {
                ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo();
                shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState()));
                shopDelivery.setId(shopDeliveryInfo.getId());
                logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState());
                //更新物流状态
                shopDeliveryInfoDao.updateByModel(shopDelivery);
                if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) {
                    List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces();
                    for (int i = 0; i < mapTraces.size(); i++) {
                        ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo();
                        shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER);
                        shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER);
                        shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime"));
                        String acceptStation = mapTraces.get(i).get("AcceptStation");
                        shopLogisticsInfo.setDescribe(acceptStation);
                        shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId());
                        if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) {
                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR);
                        } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) {
                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
                        } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) {
                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY);
                        } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) {
                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE);
                        } else {
                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE);
                        }
                        shopLogisticsList.add(shopLogisticsInfo);
                    }
                    shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId());
                    if (CollectionUtils.isNotEmpty(shopLogisticsList)) {
                        shopLogisticsInfoDao.batchInsert(shopLogisticsList);
                    }
                }
            } else {
                throw new GlobleException(logisticsInfoVo.getReason());
            }
        } catch (Exception e) {
            throw new GlobleException("物流信息查询失败");
        if (shopDeliveryInfo == null) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息");
        }
        if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空");
        }
        logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
        logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
        //如果已经签收直接查数据库
        if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) {
            List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
            logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR));
            result.setStatus(AjaxResult.STATUS_SUCCESS);
            result.setRows(shopLogisticsInfos);
            result.putInMap("logisticsInfo", logisticsInfo);
            return result;
        }
        Map<String, String> param = new HashMap<String, String>();
        param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode());
        param.put("LogisticCode", shopDeliveryInfo.getWaybillNo());
        Map<String, String> paramsUrl = getparams(param);
        LogUtil.info("物流查询参数" + paramsUrl);
        String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl);
        LogUtil.info("查询物流返回信息" + logisticsResult);
        LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class);
        if (logisticsInfoVo.isSuccess()) {
            ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo();
            shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState()));
            shopDelivery.setId(shopDeliveryInfo.getId());
            logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState());
            //更新物流状态
            shopDeliveryInfoDao.updateByModel(shopDelivery);
            if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) {
                List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces();
                for (int i = 0; i < mapTraces.size(); i++) {
                    ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo();
                    shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER);
                    shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER);
                    shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime"));
                    String acceptStation = mapTraces.get(i).get("AcceptStation");
                    shopLogisticsInfo.setDescribe(acceptStation);
                    shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId());
                    if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) {
                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR);
                    } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) {
                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
                    } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) {
                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY);
                    } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) {
                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE);
                    } else {
                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE);
                    }
                    shopLogisticsList.add(shopLogisticsInfo);
                }
                shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId());
                if (CollectionUtils.isNotEmpty(shopLogisticsList)) {
                    shopLogisticsInfoDao.batchInsert(shopLogisticsList);
                }
            }
        }
        List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
        result.setStatus(AjaxResult.STATUS_SUCCESS);
        result.setRows(shopLogisticsInfos);
@@ -187,14 +183,18 @@
     * @param map
     * @return
     */
    private Map<String, String> getparams(Map<String, String> map) throws Exception {
    private Map<String, String> getparams(Map<String, String> map)  {
        String params = JSON.toJSONString(map);
        Map<String, String> paramsUrl = new HashMap<String, String>();
        paramsUrl.put("RequestData", URLEncoder.encode(params, "UTF-8"));
        try {
            paramsUrl.put("RequestData", URLEncoder.encode(params, "UTF-8"));
            String dataSign = encrypt(params, appKey, "UTF-8");
            paramsUrl.put("DataSign", URLEncoder.encode(dataSign, "UTF-8"));
        } catch (Exception e) {
           throw new GlobleException(e.getMessage());
        }
        paramsUrl.put("EBusinessID", eBusinessID);
        paramsUrl.put("RequestType", requestType);
        String dataSign = encrypt(params, appKey, "UTF-8");
        paramsUrl.put("DataSign", URLEncoder.encode(dataSign, "UTF-8"));
        paramsUrl.put("DataType", AppConstance.DATATYPE);
        return paramsUrl;
    }
zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java
@@ -225,6 +225,7 @@
        shopDeliveryInfo.setUserId(shopOrder.getUserId());
        shopDeliveryInfo.setDeliveryWay(shippingMethod);
        shopDeliveryInfo.setShopId(shopOrder.getStoreId().longValue());
        shopDeliveryInfo.setCompanyId(shopOrder.getCompanyId());
        StringBuffer receiveAddrStr = new StringBuffer();
        if (receiveAddress != null) {
            receiveAddrStr.append(receiveAddress.getAddrProvince());
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java
New file
@@ -0,0 +1,49 @@
package com.matrix.system.shopXcx.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "SeeAwardTextVo", description = "劵码信息")
public class SeeAwardTextVo {
    @ApiModelProperty(value ="奖项名称")
    private String  awardName;
    @ApiModelProperty(value ="图片介绍")
    private String  introduceImg;
    @ApiModelProperty(value ="兑奖方式(1:线下兑换2:物流配送3:客服兑换)")
    private int  awardWay;
    @ApiModelProperty(value ="数量")
    private int  total;
    @ApiModelProperty(value ="兑奖期限开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date  prizeStartTime;
    @ApiModelProperty(value ="兑奖期限结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date  prizeEndTime;
    @ApiModelProperty(value =" 核销码")
    private String  writeOffCode;
    @ApiModelProperty(value ="兑奖须知")
    private String  operationTip;
    @ApiModelProperty(value ="兑奖地址")
    private String  prizeAddress;
    @ApiModelProperty(value ="客服微信")
    private String  wechatImg;
    @ApiModelProperty(value =" 是否已领取(1:待领取2:已领取)")
    private Integer  state;
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVO.java
File was deleted
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVo.java
New file
@@ -0,0 +1,37 @@
package com.matrix.system.shopXcx.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "SignAwardListVo", description = "奖品列表")
public class SignAwardListVo {
    /**
     * 主键
     */
    private Long  id;
    @ApiModelProperty(value ="奖项名称")
    private String  awardName;
    @ApiModelProperty(value ="图片介绍")
    private String  introduceImg;
    @ApiModelProperty(value ="兑奖方式(1:线下兑换2:物流配送3:客服兑换)")
    private int  awardWay;
    @ApiModelProperty(value ="数量")
    private int  total;
    @ApiModelProperty(value ="是否已领取(1:待领取2:已领取)")
    private Integer  state;
    @ApiModelProperty(value ="领取时间")
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8")
    private Date  receiveTime;
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignBasicInfoVo.java
@@ -7,6 +7,8 @@
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
@Data
@ApiModel(value = "SignBasicInfoVo", description = "签到活动")
@@ -27,8 +29,10 @@
    @ApiModelProperty(value ="活动编码")
    private String actCode;
    @ApiModelProperty(value ="活动开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8")
    private Date beginTime;
    @ApiModelProperty(value ="活动结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8")
    private Date endTime;
    @ApiModelProperty(value ="活动基本参数")
    private SignBasicInfoJsonVo signBasicInfoJsonVo;
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java
@@ -6,6 +6,8 @@
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@Data
@ApiModel(value = "SignSuccessVo", description = "签到活动")
@@ -87,6 +89,7 @@
    @ApiModelProperty(value ="兑奖期限开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8")
    private Date  prizeStartTime;
    
    /**
@@ -94,6 +97,7 @@
     */
    @ApiModelProperty(value ="兑奖期限结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8")
    private Date  prizeEndTime;
    
    /**
zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java
@@ -17,9 +17,22 @@
public class ShopOrder extends EntityDTO {
    /**
     * 支付方式-微信支付
     */
    public static final int SHOP_ORDER_PAY_METHOD_WX = 1;
    /**
     * 支付方式-vip会籍卡
     */
    public static final int SHOP_ORDER_PAY_METHOD_VIPCARD = 2;
    /**
     * 订单微信支付状态(待支付)
     */
    public static final int ORDER_WX_STATUS_WAIT_PAY = 1;
    /**
     * 订单微信支付状态(支付成功)
     */
@@ -162,7 +175,10 @@
     * 支付状态(1=待支付,2=支付成功,3=支付失败)
     */
    private Integer payStatus;
    /**
     *  支付方式1微信,2 vipCard余额
     */
    private Integer payMethod;
    /**
     * 优惠说明
@@ -491,10 +507,21 @@
        this.delFlag = delFlag;
    }
    public Integer getPayMethod() {
        return payMethod;
    }
    public void setPayMethod(Integer payMethod) {
        this.payMethod = payMethod;
    }
    public String getWxOrderNo() {
        return wxOrderNo;
    }
    public void setWxOrderNo(String wxOrderNo) {
        this.wxOrderNo = wxOrderNo;
    }
zq-erp/src/main/java/com/matrix/system/shopXcx/pojo/ShopOrderQueryPOJO.java
@@ -19,6 +19,10 @@
     * 开始时间
     */
    private String orderBeginTime;
    /**
     * 开始时间
     */
    private String orderTime;
    /**
     * 结束时间
zq-erp/src/main/resources/config/application.properties
@@ -4,9 +4,13 @@
#线上测试环境
spring.datasource.username=ct_test
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
#spring.datasource.username=ct_test
#spring.datasource.password=123456
#spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.username=xc_shop
spring.datasource.password=xc_shop123!@#
spring.datasource.url=jdbc:mysql://124.70.222.34/xc_shop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
zq-erp/src/main/resources/config/db/increment/推广员.sql
@@ -227,7 +227,9 @@
ADD COLUMN `pay_no`  varchar(32) NULL COMMENT '微信充值订单号';
ALTER TABLE `shop_order`
    ADD COLUMN `pay_method`  int(2) NULL COMMENT '支付方式1微信,2 vipCard余额';
update shop_order set pay_method=1;
ALTER TABLE `sys_vip_info`
    ADD COLUMN `fenxiao_state` int(11) NULL DEFAULT NULL COMMENT '分销审核状态' AFTER `recommend_id`,
zq-erp/src/main/resources/config/xcshop/application.properties
New file
@@ -0,0 +1,75 @@
evn=xcshop
server.port=8080
#线上测试环境
spring.datasource.username=xc_shop
spring.datasource.password=xc_shop123!@#
spring.datasource.url=jdbc:mysql://124.70.222.34/xc_shop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
#spring.datasource.username=chuhuan
#spring.datasource.password=chuhuan
#spring.datasource.url=jdbc:mysql://175.6.132.141:3306/hive_v2_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=3
spring.datasource.minIdle=3
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=true
spring.datasource.testOnReturn=true
spring.datasource.filters=stat,wall,log4j
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
spring.thymeleaf.prefix: classpath:/templates/views/
spring.thymeleaf.cache=false
mybatis-plus.config-location=classpath:mybatis/mybatis-config.xml
mybatis-plus.mapper-locations=classpath*:mybatis/mapper/**/*.xml
#设置全局时间返回格式 第三行设置为true表示返回时间戳
#spring.jackson.date-format=yyyy-MM-dd
#spring.jackson.time-zone=GMT+8
#spring.jackson.serialization.write-dates-as-timestamps=true
#文件上传时的大小限制 单位M
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
#--------------------------------------
#rabbitMQ配置
rabbitmq.host=47.111.134.136
rabbitmq.port=5672
rabbitmq.username=hivequeue
rabbitmq.password=hivequeueadmin
useRabbit=false
server.session.timeout=120
ali.sms.accessKeyId=LTAI4FrjY9R9iDfC6YQTHfne
ali.sms.accessKeySecret=eSvQslpHpDSGlI9Hxm4y5MynNgLbCp
ali.sms.regionId=cn-hangzhou
ali.sms.signName=\u80bd\u598d
#hour
activities.groupBuy.limit=24
#minute
groupBuy.pay.timeLimit=30
#定时任务
scheduling.enabled=false
swagger.enable=true
swagger.security.username=admin
swagger.security.password=admin
#默认头像
default.vip.photo.woman=https://filehive2.jyymatrix.cc/uploadeFile/20210125/db53552e688040afb286686f081e1e68f3fe946f75624598828f01898635152e.png
default.vip.photo.man=https://filehive2.jyymatrix.cc/uploadeFile/20210125/3642f1d827c44c76832fea106c85e0f89e089c16cbcc4dd0a82bb52b9ac700f4.png
zq-erp/src/main/resources/config/xcshop/config.json
New file
@@ -0,0 +1,94 @@
/* 前后端通信相关的配置,注释只允许使用多行方式 */
{
    /* 上传图片配置项 */
    "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
    "imageFieldName": "upfile", /* 提交的图片表单名称 */
    "imageMaxSize": 2048000, /* 上传大小限制,单位B */
    "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
    "imageCompressEnable": true, /* 是否压缩图片,默认是true */
    "imageCompressBorder": 1600, /* 图片压缩最长边限制 */
    "imageInsertAlign": "none", /* 插入的图片浮动方式 */
    "imageUrlPrefix": "http://xcshop.csxuncong.com/uploadfile", /* 图片访问路径前缀 */
    "imagePathFormat": "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                                /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
                                /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
                                /* {time} 会替换成时间戳 */
                                /* {yyyy} 会替换成四位年份 */
                                /* {yy} 会替换成两位年份 */
                                /* {mm} 会替换成两位月份 */
                                /* {dd} 会替换成两位日期 */
                                /* {hh} 会替换成两位小时 */
                                /* {ii} 会替换成两位分钟 */
                                /* {ss} 会替换成两位秒 */
                                /* 非法字符 \ : * ? " < > | */
                                /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */
    /* 涂鸦图片上传配置项 */
    "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
    "scrawlFieldName": "upfile", /* 提交的图片表单名称 */
    "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
    "scrawlUrlPrefix": "http://xcshop.csxuncong.com/uploadfile", /* 图片访问路径前缀 */
    "scrawlInsertAlign": "none",
    /* 截图工具上传 */
    "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
    "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "snapscreenUrlPrefix": "http://xcshop.csxuncong.com/uploadfile", /* 图片访问路径前缀 */
    "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
    /* 抓取远程图片配置 */
    "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
    "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
    "catcherFieldName": "source", /* 提交的图片列表表单名称 */
    "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "catcherUrlPrefix": "http://xcshop.csxuncong.com/uploadfile", /* 图片访问路径前缀 */
    "catcherMaxSize": 2048000, /* 上传大小限制,单位B */
    "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
    /* 上传视频配置 */
    "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
    "videoFieldName": "upfile", /* 提交的视频表单名称 */
    "videoPathFormat": "/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "videoUrlPrefix": "http://127.0.0.1:1088/uploadeFile/", /* 视频访问路径前缀 */
    "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
    "videoAllowFiles": [
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */
    /* 上传文件配置 */
    "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
    "fileFieldName": "upfile", /* 提交的文件表单名称 */
    "filePathFormat": "/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "fileUrlPrefix": "http://127.0.0.1:1088/uploadeFile/", /* 文件访问路径前缀 */
    "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
    "fileAllowFiles": [
        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
    ], /* 上传文件格式显示 */
    /* 列出指定目录下的图片 */
    "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
    "imageManagerListPath": "http://127.0.0.1:1088/uploadeFile/", /* 指定要列出图片的目录 */
    "imageManagerListSize": 20, /* 每次列出文件数量 */
    "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
    "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
    "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */
    /* 列出指定目录下的文件 */
    "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
    "fileManagerListPath": "http://127.0.0.1:1088/uploadeFile/", /* 指定要列出文件的目录 */
    "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
    "fileManagerListSize": 20, /* 每次列出文件数量 */
    "fileManagerAllowFiles": [
        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
    ] /* 列出的文件类型 */
}
zq-erp/src/main/resources/config/xcshop/system.properties
New file
@@ -0,0 +1,98 @@
#是否启用debug模式
debug=false
# 日志文件保存地址
log_path=/mnt/xcshop/log
# 系统语言环境 zh中文,us英文
system_language=zh
# 错误密码允许输入的次数,大于五次后账号锁定,0表示不锁账号
error_password_times=5
# 默认密码
default_password=123
#nginx静态资源访问地址
static_resource_url=http://xcshop.csxuncong.com/uploadfile/
#文件保存地址
file_storage_path=/mnt/xcshop/uploadfile/
#文件上传大小字节为单位  10MB
maxUploadSize=10485760
#Matser\u7684ip\u5730\u5740
redis.hostname=120.27.238.55
#\u7AEF\u53E3\u53F7
redis.port=6379
#\u5982\u679C\u6709\u5BC6\u7801
redis.password=xcong123
#\u5BA2\u6237\u7AEF\u8D85\u65F6\u65F6\u95F4\u5355\u4F4D\u662F\u6BEB\u79D2 \u9ED8\u8BA4\u662F2000
redis.timeout=10000
redis.database=2
redis_time_out=1800000
cookie_time_out=36000
#APP登录公钥
login_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWvK6UWCtSp/8qnTqyUfO0wbg4CuxOe7IeiDSAmATfHnWqBPnbZ73qQ4A90vGowB7mp5XnmBvgTwfXtDh08yd4btlHwSD3ShbRyGfGfV8lc47ZTLiJH0xuuN2iHfnfj8zQ5kcqijeotggo2rF8Uu7KSR3HxVyN9mO22C6p1r5wVQIDAQAB
#APP登录秘钥
login_private_key=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJa8rpRYK1Kn/yqdOrJR87TBuDgK7E57sh6INICYBN8edaoE+dtnvepDgD3S8ajAHuanleeYG+BPB9e0OHTzJ3hu2UfBIPdKFtHIZ8Z9XyVzjtlMuIkfTG643aId+d+PzNDmRyqKN6i2CCjasXxS7spJHcfFXI32Y7bYLqnWvnBVAgMBAAECgYBNzQFGq+NgfDllo1WCaG4jI8GTm3+wWoPq4l5G6S/KgYw1vu+/YOJTIZf1UQVOFitc3a6vpIDu25uup+Rj6IS8B4V8NDfc8P+iMNwdIKqqBj8wHu0/SaxYdW1uqlU5+XkJMxsNMgNRRGPSIQhla5OPHtBzIa7t4lmypETMZtXEmQJBAMsa1OIQzAKU05GweCnNNSoqo/nAQLqp8zfbJypxRx24uaCyS7C+KxN+O4FyaYmM9n0X+cgkr+RYHAIa7mg3gccCQQC9/nJvRBum8+4TINnz6QrvTmTlhi8QKW/CiRYpGgmo5PtQYw4BkRQbYO8ktFDM2yeO75XBv09qnGQaivDCeL0DAkEAisFg8LSy+4x7YcvivAQirxUEg2qRjjTvIZjKEBflkuuRfbRxO2Uf/qg9tPjaGwu/lcScc9yEggaj09hcSbyqHwJAN8QLiqUPCL3oTy0BTBpG316/Nq9f+Ppwl0TtgDroQu6S5VFttwACStb02m0imj5pKgcgibHBeaVVrITDjhEqSQJAaCHD/ytTzgtgLoVVyZZxOB272W7PI3mnzL8qQSldx1/QOBs1NmmEZuo7ELFMrfTmlxa1qR4gsq/ImfIdUdXewQ==
#日志文件清理阈值  单位:MB
log_max=20
#日志清理天数
log_clear_day=5
wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
xcx_appid =wx5cc58f796224af61
xcx_secret =facea088aae414e5c2ee86b459887721
gzh_appid=wx57e6335559bdbda6
gzh_secret=ecb408af170e3890e6544290cad33760
#微信支付调试开关
wx_pay_debug_onoff = false
#快递鸟用户id
logistics.eBusinessID=1530881
#快递鸟密钥
logistics.appKey=f1cf9777-26fb-4e3f-a14d-896075e6384e
#快递鸟接口地址
logistics.url=http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx
#快递鸟接口指令
logistics.requestType=1002
#发送短信配置
crm.request_url = http://192.168.1.248
sms.request_url = http://smssh1.253.com
sms.login_account = M7315130
sms.login_password = J7FAoehPkv63e3
sms.login_accountNe = N4617160
sms.login_passwordNe = rb1cxLitRB83e0
#接入统一登录平台配置
platform_app_code = wx_shop
platform_secret_key = b21e309f07964e4fae5b156d74b5d66z
#platform_verity_url = http://localhost:8080/platform/getUserInfo
platform_verity_url = http://stg1-xcerp-ca.xc.jyymatrix.cc/platform/getUserInfo
qrcodeBackgroundImgPath=/mnt/xcshop/webresource/static/xcxresource/bj1.png
qrcodeFrontImgPath=/mnt/xcshop/webresource/static/xcxresource/qj2.png
#hive仓库地址
hive.service=http://localhost:8082/meidu-crm/
#是否启用异常上报
is_open_exception_report=true
showExcptionUrl=http://xcshop.csxuncong.com/showException
#异常信息查询接口
showExcptionUrl=http://xcshop.csxuncong.com/showException
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml
@@ -92,4 +92,52 @@
    </select>
    <select id="selectSignAwardList" resultType="com.matrix.system.shopXcx.api.vo.SignAwardListVo">
        SELECT
        a.id id,
        a.state state,
        1 total,
        a.receive_time receiveTime,
        b.award_way awardWay,
        b.introduce_img introduceImg,
        b.award_name awardName
        FROM
        activity_sign_receive_record a
        LEFT JOIN activity_sign_award_set b ON a.award_id = b.id
        WHERE
        b.award_type = 1
        AND a.state = 1
        and a.company_id = #{record.companyId}
        and a.user_id = #{record.userId}
        <if test="record.sort !=null">
            order by
            a.${record.sort} ${record.order}
        </if>
    </select>
    <select id="selectSeeAwardTextVOById" resultType="com.matrix.system.shopXcx.api.vo.SeeAwardTextVo">
        SELECT
            a.id id,
            a.state state,
            a.receive_time receiveTime,
            a.write_off_code writeOffCode,
            1 total,
            b.wechat_img wechatImg,
            b.prize_address prizeAddress,
            b.operation_tip operationTip,
            b.prize_end_time prizeEndTime,
            b.prize_start_time prizeStartTime,
            b.award_way awardWay,
            b.introduce_img introduceImg,
            b.award_name awardName
        FROM
            activity_sign_receive_record a
                LEFT JOIN activity_sign_award_set b ON a.award_id = b.id
        WHERE
        a.id = #{record.awardId}
        and a.company_id = #{record.companyId}
        and a.user_id = #{record.userId}
    </select>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml
@@ -619,7 +619,7 @@
    </select>
    <select id="selectVipCardTotalMoney" resultType="java.lang.Double">
            SELECT TRUNCATE( SUM(gift_money)+SUM(real_money) ,2 ) from money_card_use where vip_id=#{vipId}  and `status` ='有效'
            SELECT  IFNULL(sum(IFNULL(gift_money, 0)),0)+ IFNULL(sum(IFNULL(real_money, 0)),0)  from money_card_use where vip_id=#{vipId}  and `status` ='有效'
    </select>
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml
@@ -331,6 +331,35 @@
            </if>
        </if>
    </select>
    <select id="selectForWxInPage" resultMap="MoneyCardUseFlowMap">
        select
            id,
            order_no,
            pay_no,
            content,
            create_time,
            type,
            total,
            times,
            gift_money,
            balance,
            (SELECT su_name from sys_users a WHERE operation_id=a.su_id) staffName
        from money_card_use_flow
        <where>
                and car_use_id=#{record.carUseId}
            <if test="record.queryTime!=null and record.queryTime!=''">
                and DATE_FORMAT(create_time,'%Y-%m')=#{record.queryTime}
            </if>
            <if test="record.revenueType==1">
                and  total>0
            </if>
            <if test="record.revenueType==2">
                <![CDATA[ and total<0 ]]>
            </if>
        </where>
        order by  create_time desc
    </select>
</mapper>
        
zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml
@@ -5,7 +5,7 @@
<mapper namespace="com.matrix.system.score.dao.ScoreVipDetailDao">
    <select id="selectUserTotalScore" resultType="java.lang.Integer">
        select IFNULL(sum(IFNULL( remain_score, 0 )),0) from score_vip_detail
        select IFNULL(sum(IFNULL(remain_score, 0 )),0) from score_vip_detail
        where  state=1 and vip_id=#{vipId}
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopDeliveryInfoDao.xml
@@ -241,6 +241,9 @@
            <if test="record.orderId != null ">
                order_id  = #{record.orderId},
            </if>
            <if test="record.receiveId != null ">
                receive_id  = #{record.receiveId},
            </if>
            <if test="record.userId != null and record.userId != '' ">
                user_id  = #{record.userId},
            </if>
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
@@ -34,7 +34,11 @@
            <result property="orderType" column="order_type" />
            <result property="applyStatus" column="apply_status" />
            <result property="scorePay" column="score_pay" />
            <result property="payMethod" column="pay_method" />
            <result property="companyId" column="company_id" />
            <!--返回详情列表-->
            <collection property="details" column="{orderId=id}"
                        select="com.matrix.system.shopXcx.dao.ShopOrderDetailsDao.selectByOrderId"/>
    </resultMap>
@@ -45,6 +49,7 @@
        <result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" />
        <result property="updateTime" column="update_time" />
        <result property="payMethod" column="pay_method" />
            <result property="orderNo" column="order_no" />
            <result property="orderMoney" column="order_money" />
            <result property="commodityPrice" column="commodity_price" />
@@ -130,6 +135,8 @@
            order_type,
            activity_type,
score_pay,
        pay_method,
            company_id
    </sql>
    
@@ -163,6 +170,7 @@
            #{item.orderType},
            #{item.activityType},
            #{item.scorePay},
            #{item.payMethod},
            #{item.companyId}
    </sql>
    
@@ -239,6 +247,7 @@
             <if test="(record.companyId!=null and record.companyId!='') or  (record.companyId!='' and record.companyId==0)  ">
                 and company_id  = #{record.companyId}
             </if>
        </if>
         
    </sql>
@@ -541,35 +550,8 @@
    <!-- 分页查询 -->
    <select id="selectInPageByQuery" resultMap="ShopOrderMap">
        select
        o.create_by,
        o.create_time,
        o.update_by,
        o.update_time,
        o.id,
        o.order_no,
        o.order_money,
        o.commodity_price,
        o.user_id,
        o.order_time,
        o.pay_status,
        o.discount_explain,
        o.discount_amount,
        o.order_status,
        o.refund_charge,
        o.user_name,
        o.user_tel,
        o.remarks,
        o.shipping_method,
        o.store_id,
        o.purchase_quantity,
        o.del_flag,
        o.wx_order_no,
        o.pay_result,
        o.postage,
        s.shop_name,
        o.order_type,
        o.score_pay,
        o.apply_status
        o.*,
        s.shop_name
        from shop_order o
        INNER JOIN sys_shop_info s on o.store_id = s.ID
        where del_flag = 2 and o.company_id  = #{record.companyId}
@@ -598,6 +580,8 @@
            <if test="(record.shopId!=null and record.shopId!='')">
                and o.store_id=#{record.shopId}
            </if>
        </if>
        <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
            <if test="pageVo.sort !=null  and pageVo.order !=null">
@@ -639,11 +623,11 @@
        o.wx_order_no,
        o.pay_result,
        o.postage,
        s.store_name,
        s.score_pay,
               o.pay_method,
        s.shop_name,
        o.order_type
        from shop_order o
        LEFT JOIN shop_store s on o.store_id = s.store_id
        LEFT JOIN sys_shop_info s on o.store_id = s.ID
        where del_flag = 2 and o.company_id  = #{record.companyId}
        <if test="record != null">
@@ -666,7 +650,7 @@
                and  o.order_status = #{record.orderStatus}
            </if>
            <if test="(record.storeName!=null and record.storeName!='')">
                and s.store_name like concat('%', #{record.storeName}, '%')
                and s.shop_name like concat('%', #{record.storeName}, '%')
            </if>
        </if>
        <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml
@@ -425,7 +425,7 @@
            shop_product_comment c
            LEFT JOIN shop_product p ON c.product_id = p.id
            LEFT JOIN shop_order o ON c.order_id = o.id
            LEFT JOIN sys_vip_info b ON c.user_id = b.id
            LEFT JOIN sys_vip_info b ON c.user_id = b.openid
        <where>
            and c.product_id = #{record.productId}
            AND p.del_flag = 2
@@ -448,7 +448,7 @@
        shop_product_comment c
        LEFT JOIN shop_product p ON c.product_id = p.id
        LEFT JOIN shop_order o ON c.order_id = o.id
        LEFT JOIN sys_vip_info b ON c.user_id = b.id
        LEFT JOIN sys_vip_info b ON c.user_id = b.openid
        <where>
            <if test="record!=null">
                <if test="(record.productId!=null and record.productId!='') or  (record.productId!='' and record.productId==0)  ">
zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-list.html
@@ -13,120 +13,108 @@
            th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
    <script type="text/javascript"
            th:src="@{/js/systools/MBase.js}"></script>
    <style type="text/css">
        .btn-my {
            background-color: #f8ac59;
            border-color: #f8ac59;
            color: #fff
        }
        .btn-my:hover {
            background-color: #FFD19F;
            border-color: #FFD19F;
            color: #fff
        }
        .btn-my:focus {
            outline: 0 !important;
        }
        .btn-my.active {
            background-color: rgb(185, 136, 85);
            border-color: rgb(185, 136, 85);
            color: #fff;
            outline: 0;
        }
    </style>
</head>
<body class=" container-fluid">
<div class="pd-10">
    <!-- 搜索框部分start -->
    <!-- 搜索框部分start -->
    <div class="row form-head">
        <div class="col-md-2 col-xs-12">
            <!-- 功能按钮部分 -->
            <div class="">
                <!--<button onclick="myGrid.delItems('id')" type="button"-->
                <!--class="btn btn-danger btn-sm">-->
                <!--<i class="fa fa-trash"></i>批量删除-->
                <!--</button>-->
            </div>
        </div>
        <div class="col-md-10 col-xs-12">
            <div class="row">
                <div class="col-md-11" style="text-align: right">
                    <form class="form-inline" id="serchform">
                        <div class="input-group">
                            <div class="btn-group search-list " data-for="search-text">
                                <button type="button"
                                        class="btn btn-default dropdown-toggle searchlist"
                                        data-toggle="dropdown">
                                    用户姓名 <span class="caret "></span>
                                </button>
                                <ul class="dropdown-menu" role="menu">
                                    <li data-field="userName"><a>用户姓名</a></li>
                                    <li data-field="userTel"><a>用户电话 </a></li>
                                    <li data-field="orderNo"><a>订单号 </a></li>
                                    <li data-field="storeName"><a>门店名称 </a></li>
                                </ul>
                            </div>
                            <div class="form-group mr-20 ml-20">
                                <input autocomplete="off"   id="search-text" name="userName" placeholder="输入查询关键词"
                                       type="text" class="form-control">
                            </div>
                            <div class="form-group">
                                <button onclick="myGrid.serchData(1)" type="button"
                                        class="btn btn-info">
                                    <i class="fa fa-search "></i> 搜索
                                </button>
                                <button onclick="exportExcel()" type="button"
                                        class="btn btn-info"
                                        matrix:btn="order-exportExcel">
                                    <i class="fa fa-search "></i> 导出EXCEL
                                </button>
                                <button type="reset" class="btn btn-info ">
                                    <i class="fa fa-refresh "></i> 重置
                                </button>
                                <button type="reset" class="btn btn-info " onclick="applyMoney()">
                                    <i class="fa fa-bank "></i> 申请提现
                                </button>
                            </div>
                        </div>
                        <!-- 高级搜索 -->
                        <div class="senior-content">
                            <!-- <div><a class="serch-close closestyle">×</a></div> -->
                            <div class="serch-headline">高级搜索</div>
                            <div>
                                <div style="margin-bottom: 20px!important;">
                                    <div class="col-sm-6" style="text-align: right!important;">
                                        <label class="col-sm-12 control-label">
                                            开始日期:
                                        </label>
                                    </div>
                                    <div class="col-sm-6">
                                        <input autocomplete="off"   name="orderBeginTime" readonly="readonly"
                                               type="text" class="form-control datetimepicker" style="width: 98%">
                                    </div>
                                </div>
                                <div style="margin-bottom: 20px!important;">
                                    <div class="col-sm-6" style="text-align: right!important;">
                                        <label class="col-sm-12 control-label">
                                            结束日期:
                                        </label>
                                    </div>
                                    <div class="col-sm-6">
                                        <input autocomplete="off"   name="orderEndTime" readonly="readonly"
                                               type="text" class="form-control datetimepicker" style="width: 98%">
                                    </div>
                                </div>
        <!-- ------------搜索服务单开始---------------- -->
        <form class="form-inline" id="serchform">
                                <div style="margin-bottom: 20px!important;">
                                    <div class="col-sm-6" style="text-align: right!important;">
                                        <label class="col-sm-12 control-label">
                                            订单状态:
                                        </label>
                                    </div>
                                    <div class="col-sm-6">
                                        <select class="form-control autoFull select2" dataType="*"
                                                th:data-url="@{/admin/shopOrder/getOrderStatusSelectValue}"
                                                data-value="code"
                                                data-filed="name" name="orderStatus" style="width: 98%">
                                            <option value=''>请选择</option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                            <div class="button col-sm-12">
                                <button type="button" class="btn btn-sm btn-info mr20" onclick="myGrid.serchData()">确认
                                </button>
                                <button type="button" class="btn btn-warning serch-close">取消</button>
                            </div>
                        </div>
                    </form>
                </div>
                <div class="col-md-1 text-r layui-anim" data-anim="layui-anim-up">
                    <a class="senior-serch">高级搜索</a>
            <div class="form-group mr-20">
                <div class="btn-group search-list " data-for="search-text">
                    <button type="button"
                            class="btn btn-default dropdown-toggle searchlist"
                            data-toggle="dropdown">
                        用户姓名 <span class="caret "></span>
                    </button>
                    <ul class="dropdown-menu" role="menu">
                        <li data-field="userName"><a>用户姓名</a></li>
                        <li data-field="userTel"><a>用户电话 </a></li>
                        <li data-field="orderNo"><a>订单号 </a></li>
                        <li data-field="storeName"><a>门店名称 </a></li>
                    </ul>
                </div>
            </div>
        </div>
            <div class="form-group mr-20">
                <input autocomplete="off"   id="search-text" name="userName" placeholder="输入查询关键词"
                       type="text" class="form-control">
            </div>
            <div class="form-group mr-20">
                <label>开始日期:</label>
                <input autocomplete="off"   name="orderBeginTime" type="text"
                       class="form-control datetimepicker" id="orderBeginTime">
            </div>
            <div class="form-group mr-20">
                <label>结束日期:</label>
                <input autocomplete="off"   name="orderEndTime" type="text"
                       class="form-control datetimepicker" id="orderEndTime">
            </div>
            <input type="hidden" value="" name="orderStatus" id="orderStatus"/>
            <div class="form-group mr-20">
                <button type="button" class="btn btn-my btn-sm active" id="btn0" value="">全部</button>
                <button type="button" class="btn btn-my btn-sm" id="btn1" value="1">待付款</button>
                <button type="button" class="btn btn-my btn-sm" id="btn2" value="2">待配送</button>
                <button type="button" class="btn btn-my btn-sm" id="btn3" value="3">待收货</button>
                <button type="button" class="btn btn-my btn-sm" id="btn4" value="4">待评价</button>
                <button type="button" class="btn btn-my btn-sm" id="btn5" value="5">已评价</button>
                <button type="button" class="btn btn-my btn-sm" id="btn6" value="6">申请退款</button>
                <button type="button" class="btn btn-my btn-sm" id="btn7" value="7">退款成功</button>
                <button type="button" class="btn btn-my btn-sm" id="btn8" value="8">退款拒绝</button>
                <button type="button" class="btn btn-my btn-sm" id="btn9" value="9">已取消</button>
            </div>
            <div class="form-group mr-20">
                <button onclick="myGrid.serchData(1)" type="button"
                        class="btn btn-info">
                    <i class="fa fa-search "></i> 搜索
                </button>
                <button onclick="exportExcel()" type="button"
                        class="btn btn-info"
                        matrix:btn="order-exportExcel">
                    <i class="fa fa-search "></i> 导出EXCEL
                </button>
                <button type="reset" class="btn btn-info ">
                    <i class="fa fa-refresh "></i> 重置
                </button>
                <!--<button type="reset" class="btn btn-info " onclick="applyMoney()">
                    <i class="fa fa-bank "></i> 申请提现
                </button>-->
            </div>
        </form>
    </div>
    <div class="row">
@@ -142,13 +130,14 @@
                    <th data-field="storeName">店铺名称</th>
                    <th data-field="orderStatus" data-formatter="buildOrderStatus">订单状态</th>
                    <th data-field="orderTime" data-formatter="MGrid.getTime">下单时间</th>
                    <th data-field="purchaseQuantity">购买件数</th>
                    <th data-field="details" data-formatter="buildDetails">购买商品</th>
                    <!--<th data-field="purchaseQuantity">购买件数</th>-->
                    <th data-field="orderMoney">订单金额</th>
                    <th data-field="discountAmount">优惠总金额</th>
                    <th data-field="shippingMethod" >配送方式</th>
                    <th data-field="orderType" data-formatter="orderTypeFormatter">订单类型</th>
                    <th data-field="shippingMethod"  data-formatter="buildShippingMethod" >配送方式</th>
                    <!--<th data-field="orderType" data-formatter="orderTypeFormatter">订单类型</th>-->
                    <th data-field="orderNo">订单编号</th>
                    <th data-field="applyStatus" data-formatter="applyStatusFormatter">是否已提现</th>
                    <!--<th data-field="applyStatus" data-formatter="applyStatusFormatter">是否已提现</th>-->
                </tr>
                </thead>
            </table>
@@ -172,6 +161,17 @@
    });
    $(".btn-my").click(function () {
        var btnValue = $(this).val();
        $("#orderStatus").val(btnValue);
        myGrid.serchData();
        /* $("#state").val(""); */
        $(".btn-my").removeClass("active");
        $(this).addClass("active");
    });
    function exportExcel() {
        var userName = $('input[name=userName]').val();
        if (typeof userName == 'undefined') {
@@ -191,7 +191,7 @@
        }
        var orderBeginTime = $('input[name=orderBeginTime]').val();
        var orderEndTime = $('input[name=orderEndTime]').val();
        var orderStatus = $('select[name=orderStatus]').val();
        var orderStatus = $('input[name=orderStatus]').val();
        var url = basePath + "/admin/shopOrder/exportOrderExcel";
        url += "?userName=" + userName;
        url += "&orderNo=" + orderNo;
@@ -201,6 +201,14 @@
        url += "&userTel=" + userTel;
        url += "&storeName=" + storeName;
        window.open(url);
    }
    function buildDetails(value, row, index) {
        var details = "";
        for(var i= 0;i<value.length;i++){
            details = details +value[i].shopProduct.title+ "("+value[i].shopSku.name+ ")*"+value[i].count+";";
        }
        return details;
    }
@@ -227,6 +235,16 @@
        return "";
    }
    function buildShippingMethod(value, row, index) {
        if (value == 1) {
            return "物流配送";
        } else if (value == 2) {
            return "<lable class='label label-warning' >门店自取</lable>";
        }else {
            return "-";
        }
    }
    var btns = [];
    btns[0] = "", btns[1] = "", btns[2] = "";