935090232@qq.com
2021-04-03 00efd2e4db8157ece4116c956c314803ed073042
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java
@@ -12,13 +12,18 @@
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.dto.ServiceOrderListDto;
import com.matrix.system.app.vo.ServiceOrderListVo;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.dao.SysUsersDao;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.*;
import com.matrix.system.score.constant.ScoreSettingConstant;
import com.matrix.system.score.entity.ScoreVipDetail;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
import org.apache.commons.collections.CollectionUtils;
@@ -106,6 +111,16 @@
    @Autowired
    private RabiitMqTemplate rabiitMqTemplate;
    @Autowired
    BusParameterSettingsDao busParameterSettingsDao;
    @Autowired
    ScoreVipDetailService scoreVipDetailService;
    @Autowired
    SysVipInfoDao sysVipInfoDao;
    @Value("${evn}")
    private String evn;
@@ -482,6 +497,9 @@
            sysOutStoreDao.deleteById(sysOutStore.getId());
            sysOutStoreItemDao.deleteByOrderId(sysOutStore.getId());
        }
        //删除积分
        scoreVipDetailService.removeByBusinessId(null,checkProjServices.getVipId(), checkProjServices.getId());
        //更新服务单状态
        return sysProjServicesDao.update(checkProjServices);
    }
@@ -602,15 +620,126 @@
            int result=sysProjServicesDao.update(projServices);
            achieveNewService.addAchieveByServiceOrder(projServices);
            //设置会员积分
            addVipScore(projServices);
            //发送微信公众号提醒
            UniformMsgParam uniformMsgParam=new UniformMsgParam(projServices.getCompanyId(),UniformMsgParam.GZH_FWWC);
            uniformMsgParam.put("serviceId",projServices.getId());
            rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG+evn,uniformMsgParam.toJSONString());
            return result;
        }
    }
    /**
     * 设置会员消费积分
     */
    private void addVipScore(SysProjServices projServices) {
        SysVipInfo vipInfo =sysVipInfoDao.selectById(projServices.getVipId());
        List<SysBeauticianState> sysBeauticianStates = beauticianStateDao.selectBySerIds(projServices.getId());
        double principalPrice = 0D;
        double giftPrice = 0D;
        for (SysBeauticianState sysBeauticianState : sysBeauticianStates) {
            SysProjUse projUse = sysBeauticianState.getProjUse();
            if (projUse.getSource().equals(Dictionary.TAOCAN_SOURCE_ZS)) {
                giftPrice += projUse.getPrice();
            } else {
                principalPrice += projUse.getPrice();
        }
    }
        int[] principalConsumScore = {0, 0, 0};
        BusParameterSettings principalConsumption = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.PRINCIPAL_CONSUMPTION, vipInfo.getCompanyId());
        //本金消耗
        if (principalPrice > 0
                && StringUtils.isNotBlank(principalConsumption.getParamValue())) {
            principalConsumScore[0] = (int) (principalPrice / Double.parseDouble(principalConsumption.getParamValue()));
            if (StringUtils.isNotBlank(principalConsumption.getParamValue1())) {
                principalConsumScore[1] = (int) (principalPrice / Double.parseDouble(principalConsumption.getParamValue1()));
            }
            if (StringUtils.isNotBlank(principalConsumption.getParamValue2())) {
                principalConsumScore[2] = (int) (principalPrice / Double.parseDouble(principalConsumption.getParamValue2()));
            }
        }
        int[] giveConsumScore = {0, 0, 0};
        BusParameterSettings giveConsumption = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.GIVE_CONSUMPTION, vipInfo.getCompanyId());
        //本金消耗
        if (giftPrice > 0
                && StringUtils.isNotBlank(giveConsumption.getParamValue())) {
            giveConsumScore[0] = (int) (giftPrice / Double.parseDouble(giveConsumption.getParamValue()));
            if (StringUtils.isNotBlank(giveConsumption.getParamValue1())) {
                giveConsumScore[1] = (int) (giftPrice / Double.parseDouble(giveConsumption.getParamValue1()));
            }
            if (StringUtils.isNotBlank(giveConsumption.getParamValue2())) {
                giveConsumScore[2] = (int) (giftPrice / Double.parseDouble(giveConsumption.getParamValue2()));
            }
        }
        int selfScore =principalConsumScore[0]+giveConsumScore[0];
        int parentScore =principalConsumScore[1]+giveConsumScore[1];
        int topParentScore =principalConsumScore[2]+giveConsumScore[2];
        //添加自己的积分
        if (selfScore > 0) {
            scoreVipDetailService.addScore(null,
                    vipInfo.getId(),
                    projServices.getCreateStaffId(),
                    projServices.getShopId(),
                    selfScore,
                    projServices.getId(),
                    ScoreVipDetail.SCORE_VIP_TYPE_CASH,
                    "消耗奖励"
            );
        }
        if (vipInfo.getRecommendId() != null) {
            //推荐注册老带新积分奖励
            SysVipInfo referrerVip = sysVipInfoDao.selectById(vipInfo.getRecommendId());
            if (parentScore > 0) {
                scoreVipDetailService.addScore(null,
                        referrerVip.getId(),
                        projServices.getCreateStaffId(),
                        projServices.getShopId(),
                        parentScore,
                        projServices.getId(),
                        ScoreVipDetail.SCORE_VIP_TYPE_CASH,
                        "推荐消耗奖励"
                );
            }
            //推荐注册二级带新积分奖励
            if (referrerVip.getRecommendId() != null) {
                SysVipInfo topVipInfo = sysVipInfoDao.selectById(referrerVip.getRecommendId());
                if (topParentScore > 0) {
                    scoreVipDetailService.addScore(null,
                            topVipInfo.getId(),
                            projServices.getCreateStaffId(),
                            projServices.getShopId(),
                            topParentScore,
                            projServices.getId(),
                            ScoreVipDetail.SCORE_VIP_TYPE_CASH,
                            "推荐消耗奖励"
                    );
                }
            }
        }
    }
    // 派单 jyy
@@ -745,6 +874,7 @@
    /**
     * 服务单收费需要生成出库记录
     *
     * @param projServicesVo
     * @return
     */