Helius
2021-04-26 2124957e815ab67a6ad34f03546bac3e5e0c7685
Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop
26 files modified
1 files added
457 ■■■■ changed files
zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java 10 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java 38 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java 5 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java 132 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java 25 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java 64 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/quartz/ShopActivityTimeOutQuartz.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml 11 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html 40 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-logistics-info.html 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff-info.html 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff.html 32 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html 8 ●●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/JyyTests.java 13 ●●●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java
@@ -7,6 +7,7 @@
import com.matrix.core.tools.LogUtil;
import com.matrix.system.shopXcx.mqTask.*;
import com.matrix.system.wechart.templateMsg.Task.UniformMsgSentTask;
import com.rabbitmq.client.DeliverCallback;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -43,9 +44,12 @@
        return new ScoreOrderTask();
    }
    @Bean
    DeliverCallback OrderDingDingNoticeTask() {
        return new OrderDingDingNoticeTask();
    }
    OrderTask OrderrCreateTask() {
        return new OrderTask();
    }
@@ -95,6 +99,7 @@
        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()));
        taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.DINGDING_NOTICE + evn,MQTaskRouting.CREATE_ORDER + evn, OrderDingDingNoticeTask()));
        rabiitMqTemplate.binding(taskList);
@@ -103,4 +108,5 @@
    }
}
zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java
@@ -1,30 +1,29 @@
package com.matrix.system.activity.action;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.activity.dto.ActivitiesListDto;
import com.matrix.system.activity.dto.AddSignAwardSetDto;
import com.matrix.system.activity.dto.BeCloseDto;
import com.matrix.system.activity.dto.BeReadyDto;
import com.matrix.system.activity.dto.CouponDto;
import com.matrix.system.activity.dto.DelRowDto;
import com.matrix.system.activity.dto.GoodsDto;
import com.matrix.system.activity.dto.SignForUpdateDto;
import com.matrix.system.activity.dto.SignReceiveListDto;
import com.matrix.system.activity.dto.UpdateSignAwardSetDto;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.activity.dto.*;
import com.matrix.system.activity.service.ActivitySignAwardSetService;
import com.matrix.system.activity.vo.ActivitiesListVo;
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.common.bean.SysUsers;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
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.web.bind.annotation.*;
import java.util.List;
/**
 * @description 奖品设置表
@@ -37,6 +36,25 @@
    @Autowired
    private ActivitySignAwardSetService activitySignAwardSetService;
    @Autowired
    private ShopActivitiesDao shopActivitiesDao;
    /**
     * 马上创建签到活动
     */
    @PostMapping(value = "/createSignAwardSet")
    public @ResponseBody
    AjaxResult createSignAwardSet() {
        //获取当前登录人员信息
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        Long companyId = user.getCompanyId();
        //签到活动的唯一性
        List<ShopActivities> shopActivitiesDone = shopActivitiesDao.selectOneByCompanyIdAndActType(companyId,ShopActivities.ACTIVITIES_TYPE_SIGN);
        if(CollUtil.isNotEmpty(shopActivitiesDone)){
            return new AjaxResult(AjaxResult.STATUS_FAIL, "签到活动已经创建,请去活动管理菜单查看");
        }
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "");
    }
    /**
     * 新增签到活动
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java
@@ -53,10 +53,12 @@
        //获取当前登录人员信息
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        Long companyId = user.getCompanyId();
        /**
         * todo签到活动的唯一性
         */
        //签到活动的唯一性
        List<ShopActivities> shopActivitiesDone = shopActivitiesDao.selectOneByCompanyIdAndActType(companyId,ShopActivities.ACTIVITIES_TYPE_SIGN);
        if(CollUtil.isNotEmpty(shopActivitiesDone)){
            return new AjaxResult(AjaxResult.STATUS_FAIL, "签到活动只能创建一次");
        }
        //新增活动主表信息
        ShopActivities shopActivities = new ShopActivities();
        shopActivities.setActName(addSignAwardSetDto.getActName());
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java
@@ -25,6 +25,7 @@
import com.matrix.system.activity.vo.ZjrVo;
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.SystemDictionaryDao;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.dao.SysVipInfoDao;
@@ -222,6 +223,7 @@
        shopDeliveryInfo.setLogisticsCompany(systemDictionary.getName());
        shopDeliveryInfo.setLogisticsCompanyCode(systemDictionary.getCode());
        shopDeliveryInfo.setDeliveryWay("物流配送");
        shopDeliveryInfo.setLogisticsStatus(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
        shopDeliveryInfo.setWaybillNo(logisticsSubmitDto.getKddh());
        shopDeliveryInfo.setUpdateBy(sysUsers.getSuName());
zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java
@@ -22,12 +22,17 @@
    
    @ApiModelProperty(value = "连续签到天数")
    private Integer cumulativeDay;
    @ApiModelProperty(value = "数量")
    private Integer scoreCnt;
    
    @ApiModelProperty(value = "奖励类型")
    private String awardType;
    
    @ApiModelProperty(value = "获得奖励")
    private String awardName;
    @ApiModelProperty(value = "优惠券名")
    private String couponName;
    
    @ApiModelProperty(value ="奖项规则(1:每日奖励(默认)2:累计签到天数)")
    private int  awardRule;
zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java
@@ -24,6 +24,7 @@
import java.security.Key;
import java.util.Map;
import java.util.Objects;
/**
 * @description 通用控制器,本action未经session过验证器
@@ -268,8 +269,11 @@
    AjaxResult gwLinkUs(@RequestBody Map<String , Object> param) {
        String title = "hive新客户在官网提交联系请求";
        String content = "hive=>name:" + param.get("name") + "  tel:" +  param.get("tel") ;
        DingDingRobotUtil.sendLink("https://oapi.dingtalk.com/robot/send?access_token=62bb902f0e3945f0ece31306b99abae043fc69a66da0ef04d89fd20bf58d88d8", content, title, "", "www.baidu.com");
        if(Objects.nonNull(param.get("name"))){
            String content = "hive=>name:" + param.get("name") + "  tel:" +  param.get("tel") ;
            DingDingRobotUtil.sendLink("https://oapi.dingtalk.com/robot/send?access_token=62bb902f0e3945f0ece31306b99abae043fc69a66da0ef04d89fd20bf58d88d8", content, title, "", "www.baidu.com");
        }
        return AjaxResult.buildSuccessInstance("提交成功");
    }
zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
@@ -580,6 +580,12 @@
    /**
     * 钉钉通知token
     */
    public static final String WX_ORDER_NOTICE_DINGDING_TOKEN = "wxOrderNoticeDingdingToken";
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java
@@ -20,19 +20,17 @@
import com.matrix.system.activity.entity.ActivitySignReceiveRecord;
import com.matrix.system.activity.entity.ActivitySignRecord;
import com.matrix.system.activity.entity.ActivitySignWriteoff;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.score.entity.ScoreVipDetail;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto;
import com.matrix.system.shopXcx.api.dto.SignAwardDto;
import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService;
import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil;
import com.matrix.system.shopXcx.api.vo.*;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
import com.matrix.system.shopXcx.bean.ShopLogisticsInfo;
import com.matrix.system.shopXcx.bean.ShopReceiveAddress;
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
import com.matrix.system.shopXcx.dao.ShopLogisticsInfoDao;
import com.matrix.system.shopXcx.dao.ShopReceiveAddressDao;
import com.matrix.system.shopXcx.bean.*;
import com.matrix.system.shopXcx.dao.*;
import com.matrix.system.shopXcx.vo.SalesOrderVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -82,6 +80,14 @@
    @Autowired
    private WxShopLogisticsQueryService wxShopLogisticsQueryService;
    @Autowired
    private ScoreVipDetailService scoreVipDetailService;
    @Autowired
    private ShopCouponDao shopCouponDao;
    @Autowired
    private WxShopCouponUtil wxShopCouponUtil;
    @Autowired
    private ShopCouponRecordDao shopCouponRecordDao;
    
    @ApiOperation(value = "获取签到基本信息", notes = "")
    @ApiResponses({
@@ -312,7 +318,7 @@
         * 查询是否有签到奖品
        *         日常奖励和自定义奖品
        */
        SignSuccessVo signSuccessVo = new SignSuccessVo();
        List<SignSuccessVo> signSuccessVos = new ArrayList<>();
        //日常奖励,新增奖品领取记录
        QueryWrapper<ActivitySignAwardSet> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("award_rule",ActivitySignAwardSet.AWARDRULE_NORMAL);
@@ -333,9 +339,54 @@
            activitySignReceiveRecord.setUpdateTime(new Date());
            activitySignReceiveRecordDao.insert(activitySignReceiveRecord);
            SignSuccessVo signSuccessVo = new SignSuccessVo();
            signSuccessVo.setType(1);
            signSuccessVo.setScoreCnt(activitySignAwardSetNormal.getScoreCnt());
            signSuccessVo.setNormalAwardName(activitySignAwardSetNormal.getAwardName());
            signSuccessVo.setNormalAwardImg(activitySignAwardSetNormal.getIntroduceImg());
            signSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName());
            signSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg());
            signSuccessVos.add(signSuccessVo);
            //日常奖励积分,对应用户积分加减
            int awardType = activitySignAwardSetNormal.getAwardType();
            if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){
                int scoreCnt = activitySignAwardSetNormal.getScoreCnt();
                if(scoreCnt > 0){
                    scoreVipDetailService.addScore(userId,null,null,scoreCnt,
                            activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"签到积分");
                }
            }
            //获取优惠券
            if(ActivitySignAwardSet.AWARDTYPE_COUPON == awardType){
                //获取优惠券
                int couponId = Integer.parseInt(activitySignAwardSetNormal.getCouponId());
                ShopCoupon shopCoupon = shopCouponDao.selectById(couponId);
                // 如果没有找到该优惠券
                if (shopCoupon == null) {
                    return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!");
                }
                // 如果优惠券有数量限制并且已经领完
                if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) {
                    return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!");
                }
                boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId);
                // 如果改券是新人专属且当前用户不是新人
                if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) {
                    return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!");
                }
                ShopCouponRecord insertRecord = new ShopCouponRecord();
                insertRecord.setCreateBy(AppConstance.SYSTEM_USER);
                insertRecord.setUpdateBy(AppConstance.SYSTEM_USER);
                insertRecord.setCId(couponId);
                insertRecord.setUserId(userId);
                insertRecord.setIsUsing(2);
                int i = shopCouponRecordDao.insert(insertRecord);
                // 如果插入领取记录表失败
                if (i < 0) {
                    return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!");
                }
                shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1);
                shopCouponDao.updateByModel(shopCoupon);
            }
        }
        //获取当前累计天数
        int cumulativeDay = getCumulativeDay(actId, userId, date, 0);
@@ -361,9 +412,16 @@
                    if (ObjectUtil.isNotEmpty(activitySignReceiveRecordDone)) {
                        String awardNameCumulativeDay = activitySignAwardSetCumulativeDay.getAwardName();
                        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(awardNameCumulativeDay+"已经领取过了");
                        ajaxResult.setData(signSuccessVo);
                        ajaxResult.setData(signSuccessVos);
                        return ajaxResult;
                    }
                    SignSuccessVo signSuccessVo = new SignSuccessVo();
                    signSuccessVo.setType(2);
                    signSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType());
                    signSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName());
                    signSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg());
                    signSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState());
                    //新增奖品领取记录
                    ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord();
                    activitySignReceiveRecord.setUserId(userId);
@@ -391,11 +449,7 @@
                         * 获取对应奖品的领取方式(兑奖方式(1:线下兑换2:物流配送3:客服兑换)
                         */
                        signSuccessVo.setWriteOffCode(randomString);
                        signSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType());
                        signSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName());
                        signSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg());
                        signSuccessVo.setAwardWay(activitySignAwardSetCumulativeDay.getAwardWay());
                        signSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState());
                        //2:物流配送
                        signSuccessVo.setOperationTip(activitySignAwardSetCumulativeDay.getOperationTip());
                        //1:线下兑换
@@ -419,8 +473,48 @@
                    //3:优惠券
                    if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) {
                        signSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName());
                        //获取优惠券
                        int couponId = Integer.parseInt(activitySignAwardSetCumulativeDay.getCouponId());
                        ShopCoupon shopCoupon = shopCouponDao.selectById(couponId);
                        // 如果没有找到该优惠券
                        if (shopCoupon == null) {
                            return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!");
                        }
                        // 如果优惠券有数量限制并且已经领完
                        if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) {
                            return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!");
                        }
                        boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId);
                        // 如果改券是新人专属且当前用户不是新人
                        if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) {
                            return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!");
                        }
                        ShopCouponRecord insertRecord = new ShopCouponRecord();
                        insertRecord.setCreateBy(AppConstance.SYSTEM_USER);
                        insertRecord.setUpdateBy(AppConstance.SYSTEM_USER);
                        insertRecord.setCId(couponId);
                        insertRecord.setUserId(userId);
                        insertRecord.setIsUsing(2);
                        int i = shopCouponRecordDao.insert(insertRecord);
                        // 如果插入领取记录表失败
                        if (i < 0) {
                            return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!");
                        }
                        shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1);
                        shopCouponDao.updateByModel(shopCoupon);
                    }
                    activitySignReceiveRecordDao.insert(activitySignReceiveRecord);
                    //累计奖励积分,对应用户积分加减
                    if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) {
                        int awardType = activitySignAwardSetCumulativeDay.getAwardType();
                        if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){
                            int scoreCnt = activitySignAwardSetCumulativeDay.getScoreCnt();
                            if(scoreCnt > 0){
                                scoreVipDetailService.addScore(userId,null,null,scoreCnt,
                                        activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"签到积分");
                            }
                        }
                    }
                    //生成核销记录
                    if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) {
                        ActivitySignWriteoff activitySignWriteoff = new ActivitySignWriteoff();
@@ -446,11 +540,12 @@
                        activitySignWriteoff.setUpdateTime(new Date());
                        activitySignWriteoffDao.insert(activitySignWriteoff);
                    }
                    signSuccessVos.add(signSuccessVo);
                }
            }
        }
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("签到成功");
        ajaxResult.setData(signSuccessVo);
        ajaxResult.setData(signSuccessVos);
        return ajaxResult;
    }
    /**
@@ -469,7 +564,8 @@
        DateTime offsetDay = DateUtil.offsetDay(date, -i);
        return getCumulativeDay(actId,userId,offsetDay,i);
    }
    /**
     * 获取累计的签到奖品
     *
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java
@@ -1,5 +1,7 @@
package com.matrix.system.shopXcx.api.action;
import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.core.pojo.AjaxResult;
@@ -15,9 +17,11 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
 * @author pengliang
@@ -72,6 +76,9 @@
    @Autowired
    private ShopProductCommentDao productCommentDao;
    @Autowired
    private ShopSalesmanGradeDao shopSalesmanGradeDao;
    /**
     * 根据id查询商品信息
     *
@@ -81,15 +88,29 @@
    @RequestMapping(value = "/getProductById/{shopId}/{id}")
    @ResponseBody
    public AjaxResult getProductById(@PathVariable Long shopId, @PathVariable("id") Integer id) {
        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
        ShopProduct shopProduct = shopProductDao.selectById(id);
        if (shopProduct == null) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "没有查询到商品");
        }
        List<ShopProductAttrRef> shopProductAttrRefs = shopProductAttrRefDao.selectByPid(id);
        List<ShopProductImg> shopProductImgs = shopProductImgDao.selectByPid(id);
        List<ShopSku> shopSkus = shopSkuDao.selectByPid(id);
        if(SysVipInfo.IS_SALES==sysVipInfo.getIsSales()){
            ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade());
            //计算产品佣金
            shopSkus.forEach(shopSku -> {
                if(Objects.isNull(shopSku.getInvitationPrice())){
                   shopSku.setInvitationPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getInvitationCommission())).divide(BigDecimal.valueOf(100)));
                }
                if(Objects.isNull(shopSku.getSealesPrice())){
                    shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSealesCommission())).divide(BigDecimal.valueOf(100)));
                }
                if(Objects.isNull(shopSku.getSelfPrice())){
                    shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100)));
                }
            });
        }
        List<ShopProductParamRef> shopProductParamRefs = shopProductParamRefDao.selectByPid(id);
        shopProduct.setAttrRefs(shopProductAttrRefs);
        shopProduct.setProductImgs(shopProductImgs);
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java
@@ -59,7 +59,6 @@
    @Override
    @Transactional
    public Boolean refundToUser(String id, ShopRefundRecord shopRefundRecord) {
        LogUtil.debug("进入退款接口进行退款。。。", id);
        Boolean flag = false;
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java
@@ -1,22 +1,19 @@
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;
import com.fasterxml.jackson.annotation.JsonFormat;
@Data
@ApiModel(value = "SignSuccessVo", description = "签到活动")
public class SignSuccessVo {
    @ApiModelProperty(value ="日常奖励名称")
    private String normalAwardName;
    @ApiModelProperty(value ="日常奖励图片")
    private String normalAwardImg;
    @ApiModelProperty(value ="奖励类型  1:日常奖励  2:累计奖励")
    private int type;
    
    @ApiModelProperty(value ="累计奖励名称")
    private String awardName;
zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java
@@ -59,4 +59,6 @@
    public ShopActivities selectOneByCompanyIdAndActTypeAndActStatus(@Param("companyId")Long companyId, @Param("activitiesTypeSign")int activitiesTypeSign,
            @Param("actstatusStatusIng")int actstatusStatusIng);
    List<ShopActivities> selectOneByCompanyIdAndActType(@Param("companyId")Long companyId,@Param("activitiesTypeSign") int activitiesTypeSign);
}
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java
@@ -10,6 +10,7 @@
    String CREATE_ORDER = "CREATE_ORDER";
    String SALES_ORDER = "SALES_ORDER";
    String SCORE_ORDER = "SCORE_ORDER";
    String DINGDING_NOTICE = "DINGDING_NOTICE" ;
    /**
     * 发送微信消息
     */
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java
New file
@@ -0,0 +1,64 @@
package com.matrix.system.shopXcx.mqTask;
import com.matrix.core.tools.DingDingRobotUtil;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.shopXcx.bean.ShopOrder;
import com.matrix.system.shopXcx.bean.ShopOrderDetails;
import com.matrix.system.shopXcx.dao.ShopOrderDao;
import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao;
import com.rabbitmq.client.DeliverCallback;
import com.rabbitmq.client.Delivery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.List;
/**
 * 微商城订单同步到erp系统
 */
@Component
public class OrderDingDingNoticeTask implements DeliverCallback {
    @Autowired
    ShopOrderDao shopOrderDao;
    @Autowired
    ShopOrderDetailsDao shopOrderDetailsDao;
    @Autowired
    BusParameterSettingsDao parameterSettingsDao;
    @Autowired
    SysVipInfoDao sysVipInfoDao;
    @Override
    public void handle(String consumerTag, Delivery message) throws IOException {
        String orderId = new String(message.getBody(), "UTF-8");
        //获取订单信息
        ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId));
        LogUtil.debug("收到创建订单通知任务orderId={}", orderId);
        BusParameterSettings wxOrderNoticeDingdingToken = parameterSettingsDao.selectCompanyParamByCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN, order.getCompanyId());
        if (wxOrderNoticeDingdingToken != null && StringUtils.isNotBlank(wxOrderNoticeDingdingToken.getParamValue())) {
            //获取订单详情
            List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId));
            StringBuilder content = new StringBuilder();
            orderDetails.stream().forEach(i -> content.append(i.getsTitle()).append("*").append(
                    i.getCount()).append(";"));
            DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(),"微商城订单 ("+order.getUserName()+") | 订单金额:¥"+order.getOrderMoney()+",订单内容:"+ content.toString(),"");
        }else{
            LogUtil.debug("未配置订单钉钉提醒");
        }
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/quartz/ShopActivityTimeOutQuartz.java
@@ -11,6 +11,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
@@ -98,6 +99,7 @@
     *
     * @param groupJoin
     */
    @Transactional
    public void doUnVirtualGroup(ShopActivitiesGroupJoin groupJoin) {
        LogUtil.info("#非虚拟拼团逻辑处理#");
        groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_FAIL);
zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml
@@ -14,6 +14,8 @@
        c.cumulative_day cumulativeDay,
        c.award_type awardType,
        c.award_name awardName,
        c.coupon_name couponName,
        c.score_cnt scoreCnt,
        c.award_rule awardRule
        FROM
        activity_sign_receive_record a
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml
@@ -428,4 +428,15 @@
            and a.act_type=#{activitiesTypeSign}
            and a.act_status=#{actstatusStatusIng}
    </select>
    <select id="selectOneByCompanyIdAndActType" resultType="com.matrix.system.shopXcx.bean.ShopActivities">
        SELECT
            *
        FROM
            shop_activities a
        where
            a.company_id=#{companyId}
          and a.act_type=#{activitiesTypeSign}
          and a.act_status != 5
    </select>
</mapper>
zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html
@@ -31,6 +31,7 @@
        .image {
            width: 100%;
            height: 100%;
            display: block;
        }
@@ -58,9 +59,9 @@
            <el-card class="box-card" :body-style="{ padding: '10px 10px'}">
                <img src="../../../images/sign/meiriqiandao.png" class="image">
                <div style="padding: 5px;">
                    <span style="padding:5px;font-size: 30px;">每日签到</span>
                    <span style="padding:5px;font-size: 18px;">每日签到</span>
                    <div class="bottom clearfix">
                        <el-button type="primary" class="button" @click="createSign()" round>马上创建</el-button>
                        <el-button type="primary" size="mini" class="button" @click="createSign()" round>马上创建</el-button>
                    </div>
                </div>
            </el-card>
@@ -69,9 +70,9 @@
            <el-card class="box-card" :body-style="{ padding: '10px 10px'}">
                <img src="../../../images/sign/tiantianpingtuan.png" class="image">
                <div style="padding: 5px;">
                    <span style="padding:5px;font-size: 30px;">拼团</span>
                    <span style="padding:5px;font-size: 18px;">拼团</span>
                    <div class="bottom clearfix">
                        <el-button type="primary" class="button" @click="openAdd(1)" round>马上创建</el-button>
                        <el-button type="primary" size="mini" class="button" @click="openAdd(1)" round>马上创建</el-button>
                    </div>
                </div>
            </el-card>
@@ -80,9 +81,9 @@
            <el-card class="box-card" :body-style="{ padding: '10px 10px'}">
                <img src="../../../images/sign/jisumiaosha.png" class="image">
                <div style="padding: 5px;">
                    <span style="padding:5px;font-size: 30px;">秒杀</span>
                    <span style="padding:5px;font-size: 18px;">秒杀</span>
                    <div class="bottom clearfix">
                        <el-button type="primary" class="button" @click="openSecKill()" round>马上创建</el-button>
                        <el-button type="primary" size="mini" class="button" @click="openSecKill()" round>马上创建</el-button>
                    </div>
                </div>
            </el-card>
@@ -91,9 +92,9 @@
            <el-card class="box-card" :body-style="{ padding: '10px 10px'}">
                <img src="../../../images/sign/shalonghuodong.png" class="image">
                <div style="padding: 5px;">
                    <span style="padding:5px;font-size: 30px;">沙龙</span>
                    <span style="padding:5px;font-size: 18px;">沙龙</span>
                    <div class="bottom clearfix">
                        <el-button type="primary" class="button" @click="openSalon()" round>马上创建</el-button>
                        <el-button type="primary" size="mini" class="button" @click="openSalon()" round>马上创建</el-button>
                    </div>
                </div>
            </el-card>
@@ -126,13 +127,22 @@
        methods: {
            //跳转到设置签到活动
            createSign(){
                layer.full(layer.open({
                    type: 2,
                    title: "签到管理",
                    maxmin: true,
                    area: [MUI.SIZE_L, '500px'],
                    content : [ basePath + '/admin/redirect/activity/activity-sign']
                }));
                $.AjaxProxy().invoke(basePath + "/admin/activitySignAwardSet/createSignAwardSet", function(loj) {
                    if (loj[0].result.status == '200') {
                        layer.full(layer.open({
                            type: 2,
                            title: "签到管理",
                            maxmin: true,
                            area: [MUI.SIZE_L, '500px'],
                            content : [ basePath + '/admin/redirect/activity/activity-sign']
                        }));
                    }else{
                        _this.$message({
                            message: data.info,
                            type: 'success',
                        });
                    }
                });
            },
            // 打新增拼团界面
            openAdd(value) {
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-logistics-info.html
@@ -136,7 +136,7 @@
                    </el-col>
                </el-row>
                <el-row style="padding: 10px">
                    <el-col class="col-sm-10" >
                    <el-col class="col-sm-10"  v-show='false'>
                        <el-form-item label="快递公司编码:">
                            <el-input v-model="ruleForm.kdgs" :disabled="(formSelect.state == 3 ? true:false)"></el-input>
                        </el-form-item>
@@ -256,7 +256,7 @@
        mounted: function () {
        },
        methods: {
            //加载分类
            //加载
            loadInfo() {
                let _this = this;
                //加载配置
@@ -320,8 +320,7 @@
                            message: data.info,
                            type: 'success',
                        });
                        parent.layer.close(parent.layer.getFrameIndex(window.name));
                        parent.location.reload();
                        _this.loadInfo();
                    }
                });
            },
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html
@@ -121,6 +121,16 @@
                        label="获得奖励"
                        show-overflow-tooltip>
                </el-table-column>
                <el-table-column
                        label="奖励名称"
                        show-overflow-tooltip>
                    <template slot-scope="scope">
                        {{scope.row.awardName}}
                        <span v-if="scope.row.awardType == 3">({{scope.row.couponName}})</span>
                        <span v-if="scope.row.awardType == 2">(*{{scope.row.scoreCnt}})</span>
                    </template>
                </el-table-column>
            </el-table>
        </el-row>
        <el-row class="paginationStyle"  >
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html
@@ -267,7 +267,7 @@
                                                        </el-col>
                                                    </el-row>
                                                </div>
                                                <div v-show="item.content.awardWay === 3">
                                                <div v-show="[1,3].includes(item.content.awardWay)">
                                                    <el-row >
                                                        <el-col>
                                                            <el-form-item label="客服电话">
@@ -525,11 +525,11 @@
                                    <el-color-picker v-model="typographyColor"></el-color-picker>
                                </el-form-item>
                                <el-form-item label="字体大小" style="padding: 10px">
                                    <el-input-number v-model="typographyNum" :min="10" :max="20" label="描述文字"></el-input-number>
                                    <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number>
                                </el-form-item>
                                <el-form-item label="字体透明度" style="padding: 10px">
                                <!--<el-form-item label="字体透明度" style="padding: 10px">
                                    <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number>
                                </el-form-item>
                                </el-form-item>-->
                            </div>
                        </el-tab-pane>
                    </el-tabs>
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff-info.html
@@ -177,8 +177,7 @@
                            message: data.info,
                            type: 'success',
                        });
                        parent.layer.close(parent.layer.getFrameIndex(window.name));
                        parent.location.reload();
                        _this.loadInfo();
                    }
                });
            },
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff.html
@@ -60,21 +60,9 @@
                      stripe:true
                      @sort-change="sortChange">
                <el-table-column
                        prop="writeoffTime"
                        label="核销时间"
                        prop="receiveName"
                        label="中奖者"
                        show-overflow-tooltip>
                </el-table-column>
                <el-table-column
                        prop="writeoffUser"
                        label="核销员"
                        show-overflow-tooltip>
                </el-table-column>
                <el-table-column
                        label="兑奖码"
                        show-overflow-tooltip>
                    <template slot-scope="scope">
                        <span v-if="scope.row.state == 3">{{scope.row.writeoffCode}}</span>
                    </template>
                </el-table-column>
                <el-table-column
                        prop="actName"
@@ -109,11 +97,23 @@
                    </template>
                </el-table-column>
                <el-table-column
                        prop="receiveName"
                        label="中奖者"
                        prop="writeoffTime"
                        label="核销时间"
                        show-overflow-tooltip>
                </el-table-column>
                <el-table-column
                        prop="writeoffUser"
                        label="核销员"
                        show-overflow-tooltip>
                </el-table-column>
                <el-table-column
                        label="兑奖码"
                        show-overflow-tooltip>
                    <template slot-scope="scope">
                        <span v-if="scope.row.state == 3">{{scope.row.writeoffCode}}</span>
                    </template>
                </el-table-column>
                <el-table-column
                        prop="receiveAddress"
                        label="收货地址"
                        show-overflow-tooltip>
zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html
@@ -274,7 +274,7 @@
                                                            </el-col>
                                                        </el-row>
                                                    </div>
                                                    <div v-show="item.content.awardWay === '3'">
                                                    <div v-show="[1,3].includes(item.content.awardWay)">
                                                        <el-row >
                                                            <el-col>
                                                                <el-form-item label="客服电话">
@@ -531,11 +531,11 @@
                                        <el-color-picker v-model="typographyColor"></el-color-picker>
                                    </el-form-item>
                                    <el-form-item label="字体大小" style="padding: 10px">
                                        <el-input-number v-model="typographyNum" :min="10" :max="20" label="描述文字"></el-input-number>
                                        <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number>
                                    </el-form-item>
                                    <el-form-item label="字体透明度" style="padding: 10px">
                                    <!--<el-form-item label="字体透明度" style="padding: 10px">
                                        <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number>
                                    </el-form-item>
                                    </el-form-item>-->
                                </div>
                           </el-tab-pane>
                        </el-tabs>
zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java
@@ -44,7 +44,7 @@
    private ActivitySignReceiveRecordDao activitySignReceiveRecordDao;
    
    @Autowired
    private ActivitySignWriteoffDao activitySignWriteoffDao;
    private ActivitySignWriteoffDao activitgwLinkUsySignWriteoffDao;
    
    @Autowired
    private ActivitySignRecordDao activitySignRecordDao;
zq-erp/src/test/java/com/matrix/JyyTests.java
@@ -9,12 +9,15 @@
import com.matrix.system.score.dao.ScoreVipDetailDao;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.dao.ShopOrderV2Dao;
import com.matrix.system.shopXcx.mqTask.OrderDingDingNoticeTask;
import com.rabbitmq.client.Delivery;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -48,6 +51,16 @@
    @Autowired
    RedisClient redisClient;
    @Autowired
    OrderDingDingNoticeTask orderDingDingNoticeTask;
    @Test
    public void testNoticeTask() throws IOException {
        orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
    }
    @Test
    public void testRedis() {
zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java
@@ -75,6 +75,12 @@
        newSetting4.setCategory("店务配置");
        newSettings.add(newSetting4);
        ParameterSettings newSetting5=new ParameterSettings();
        newSetting5.setCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN);
        newSetting5.setName("钉钉通知token");
        newSetting5.setType(1);
        newSetting5.setCategory("微商城配置");
        newSettings.add(newSetting5);
        for (ParameterSettings newSetting : newSettings) {