jyy
2021-07-10 870960399814cff73d1e6ef93fccb11bede8d464
Merge branch 'score_shop' into api_score_meger

# Conflicts:
# zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
# zq-erp/src/main/resources/config/application.properties
4 files added
55 files modified
1614 ■■■■■ changed files
zq-erp/pom.xml 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java 12 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/vo/ShoppingGoodsDetailVo.java 154 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java 40 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/common/interceptor/UserLoginInterceptor.java 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/CardLevelController.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/CustomerController.java 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java 57 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java 178 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjUseFlow.java 112 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java 8 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/QuestionDao.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/QuestionSerivce.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/QuestionServiceImpl.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java 10 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java 43 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java 150 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysWorktimeServiceImpl.java 25 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpOrderController.java 31 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java 4 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/job/InvalidTimeJob.java 37 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/findC.java 50 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/application.properties 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/mdPrd/application.properties 70 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/mdPrd/config.json 94 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/mdPrd/system.properties 104 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/system.properties 3 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml 3 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/QuestionDao.xml 5 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml 12 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive-erp/order/orderXq-form.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html 75 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-order.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-service.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html 11 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yypb-form.html 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html 81 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/vip/question-form.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/vip/question-list.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-form.html 17 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/index.html 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/权限 24 ●●●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/JyyTests.java 54 ●●●●● patch | view | raw | blame | history
zq-erp/src/test/java/com/matrix/TcProjTest.java 16 ●●●● patch | view | raw | blame | history
zq-erp/pom.xml
@@ -401,11 +401,11 @@
                    <exclude>config/xcx/*</exclude>
                    <exclude>config/xcshop/*</exclude>
                    <!---->
                    <!--
                    <exclude>config/config.json</exclude>
                    <exclude>config/application.properties</exclude>
                    <exclude>config/system.properties</exclude>
-->
                    <exclude>**/*.woff</exclude>
zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
@@ -66,16 +66,10 @@
                .excludePathPatterns("/webjars/**");
        // 用户认证拦截
//        registry.addInterceptor(userLoginInterceptor)
//                .addPathPatterns("/**")
//                .excludePathPatterns("/common/**")
//                .excludePathPatterns("/resource/**")
//                .excludePathPatterns("/swagger**/**")
//                .excludePathPatterns("/webjars/**")
//                .excludePathPatterns("/api/**");
        registry.addInterceptor(userLoginInterceptor)
                .addPathPatterns("/admin/**");
        // url权限拦截
        registry.addInterceptor(suAuthorityInterceptor).addPathPatterns("/**/su/**");
        //小程序公司与域名对应关系拦截
        registry.addInterceptor(hostInterceptor).addPathPatterns("/**/wxapi/**")
                .excludePathPatterns("/wxCommon/wxapi/wxpayCallback")
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -219,7 +219,6 @@
    }
    @ApiOperation(value = "获取api接口地址", notes = "获取api接口地址")
    @GetMapping(value = "/findApiUrl")
    public AjaxResult findApiUrl() {
@@ -233,9 +232,16 @@
        urlDto.setUrl("http://test.hive.jyymatrix.cc");
        urlDto.setName("测试环境");
        data.add(urlDto);
        urlDto = new UrlDto();
        urlDto.setUrl("http://hive.mydoline.com");
        urlDto.setName("美度专线");
        data.add(urlDto);
        return AjaxResult.buildSuccessInstance(data);
    }
}
zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
@@ -116,7 +116,6 @@
            }
        } else {
            queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
            queryUse.setIsOver(Dictionary.FLAG_NO_N);
        }
        queryUse.setQueryKey(serviceVipProjDto.getQueryKey());
zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java
@@ -191,7 +191,8 @@
    @GetMapping(value = "/findVipQuestions/{vipId}")
    public AjaxResult findVipQuestions(@PathVariable("vipId") Long vipId) {
        // 获取会员所有的答案,分类型
        List<Question> questions = questionSerivce.findByVipId(vipId);
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        List<Question> questions = questionSerivce.findByVipId(vipId,user.getCompanyId());
        AjaxResult result = AjaxResult.buildSuccessInstance("获取成功");
        List<QuestionVo> list = QuestionMapper.INSTANCE.entitiesToVos(questions);
        result.putInMap("questions", list);
zq-erp/src/main/java/com/matrix/system/app/vo/ShoppingGoodsDetailVo.java
@@ -3,6 +3,7 @@
import com.matrix.system.hive.bean.ShoppingGoodsCategory;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@@ -11,6 +12,7 @@
 * @author wzy
 * @date 2020-12-24
 **/
@Data
@ApiModel(value = "ShoppingGoodsDetailVo", description = "商品详情返回参数类")
public class ShoppingGoodsDetailVo {
@@ -45,7 +47,7 @@
    private Integer maxSaleCnt;
    @ApiModelProperty(value = "每人限购次数")
    private String limitBuyCnt;
    private Integer limitBuyCnt;
    @ApiModelProperty(value = "充值卡使用范围 是-所有产品 否-部分产品")
    private String carIsAll;
@@ -71,155 +73,5 @@
    @ApiModelProperty(value = "卡项产品可消费类型")
    List<ShoppingGoodsCategory> cardCategory;
    public BigDecimal getGiftPrice() {
        return giftPrice;
    }
    public void setGiftPrice(BigDecimal giftPrice) {
        this.giftPrice = giftPrice;
    }
    public String getCarIsAll() {
        return carIsAll;
    }
    public void setCarIsAll(String carIsAll) {
        this.carIsAll = carIsAll;
    }
    public String getGoodsNo() {
        return goodsNo;
    }
    public void setGoodsNo(String goodsNo) {
        this.goodsNo = goodsNo;
    }
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public BigDecimal getSalePrice() {
        return salePrice;
    }
    public void setSalePrice(BigDecimal salePrice) {
        this.salePrice = salePrice;
    }
    public Integer getSaleCnt() {
        return saleCnt;
    }
    public void setSaleCnt(Integer saleCnt) {
        this.saleCnt = saleCnt;
    }
    public String getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = img;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    public String getGoodsType() {
        return goodsType;
    }
    public void setGoodsType(String goodsType) {
        this.goodsType = goodsType;
    }
    public Integer getVolume() {
        return volume;
    }
    public void setVolume(Integer volume) {
        this.volume = volume;
    }
    public String getMeasure() {
        return measure;
    }
    public void setMeasure(String measure) {
        this.measure = measure;
    }
    public Integer getMaxSaleCnt() {
        return maxSaleCnt;
    }
    public void setMaxSaleCnt(Integer maxSaleCnt) {
        this.maxSaleCnt = maxSaleCnt;
    }
    public String getLimitBuyCnt() {
        return limitBuyCnt;
    }
    public void setLimitBuyCnt(String limitBuyCnt) {
        this.limitBuyCnt = limitBuyCnt;
    }
    public List<ShoppingGoodsDetailVo> getAssembleProj() {
        return assembleProj;
    }
    public void setAssembleProj(List<ShoppingGoodsDetailVo> assembleProj) {
        this.assembleProj = assembleProj;
    }
    public List<ShoppingGoodsDetailVo> getAssembleTaocanProj() {
        return assembleTaocanProj;
    }
    public void setAssembleTaocanProj(List<ShoppingGoodsDetailVo> assembleTaocanProj) {
        this.assembleTaocanProj = assembleTaocanProj;
    }
    public List<ShoppingGoodsDetailVo> getAssembleTaocanProduct() {
        return assembleTaocanProduct;
    }
    public void setAssembleTaocanProduct(List<ShoppingGoodsDetailVo> assembleTaocanProduct) {
        this.assembleTaocanProduct = assembleTaocanProduct;
    }
    public List<ShoppingGoodsCategory> getCardCategory() {
        return cardCategory;
    }
    public void setCardCategory(List<ShoppingGoodsCategory> cardCategory) {
        this.cardCategory = cardCategory;
    }
    public String getIsCourse() {
        return isCourse;
    }
    public void setIsCourse(String isCourse) {
        this.isCourse = isCourse;
    }
    public Integer getMaxUseCnt() {
        return maxUseCnt;
    }
    public void setMaxUseCnt(Integer maxUseCnt) {
        this.maxUseCnt = maxUseCnt;
    }
}
zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java
@@ -450,6 +450,7 @@
    AjaxResult all() {
        SysUsers sysUsers = new SysUsers();
        QueryUtil.setQueryLimit(sysUsers);
        sysUsers.setSuValid(AppConstance.RECORD_VALID);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, sysUsersService.findInPage(sysUsers, null));
    }
@@ -499,6 +500,7 @@
        orderSheet.setHeaders(header);
        SysUsers loginUser = getSessionUser();
        shopStaffInfo.setShopId(loginUser.getShopId());
        shopStaffInfo.setSuValid(AppConstance.RECORD_VALID);
        List<SysUsers> dataList = sysUsersService.findInPage(shopStaffInfo, null);
        List<List<Object>> list = new ArrayList<>();
        if (dataList.size() > 0) {
zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java
@@ -79,24 +79,33 @@
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        Map<String, SysFunction> userFunction = WebUtil.getSessionAttribute(USERFUNCTION);
        // 企业管理员不校验按钮权限
        if (AppConstance.USER_TYPE_DEVELOPER.equals(user.getSuUserType())
                || AppConstance.USER_TYPE_SUPER.equals(user.getSuUserType())
                || AppConstance.USER_TYPE_ADMIN.equals(user.getSuUserType())) {
            return true;
        }
        String[] strs = matchStr.split("-");
        if (strs.length != DEFAULT_2) {
            throw new IllegalArgumentException("权限matchStr格式错误,需要fnCode:btnValue");
        }
        SysFunction fn = userFunction.get(strs[0].trim());
        // 功能是否存在
        if (fn == null) {
        if (userFunction == null) {
            return false;
        } else {
            return StringUtils.isContentSet(strs[1].trim(), fn.getRpfBns());
            String[] strs = matchStr.split("-");
            if (strs.length != DEFAULT_2) {
                throw new IllegalArgumentException("权限matchStr格式错误,需要fnCode:btnValue");
            }
            SysFunction fn = userFunction.get(strs[0].trim());
            // 功能是否存在
            if (fn == null) {
                return false;
            } else {
                return StringUtils.isContentSet(strs[1].trim(), fn.getRpfBns());
            }
        }
    }
    /**
@@ -113,8 +122,13 @@
            return true;
        }
        Map<String, SysFunction> userFunction = WebUtil.getSessionAttribute(USERFUNCTION);
        SysFunction fn = userFunction.get(fnCode);
        return fn == null ? false : true;
        if (userFunction == null) {
            return false;
        } else {
            SysFunction fn = userFunction.get(fnCode);
            return fn == null ? false : true;
        }
    }
    /**
@@ -141,7 +155,7 @@
        SysUsers sysUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        String redisKey = USER_POWER_REDISKEY_PC + SecureUtil.md5(sysUser.getSuId()+"");
        String redisKey = USER_POWER_REDISKEY_PC + SecureUtil.md5(sysUser.getSuId() + "");
        String cachedValue = redisClient.getCachedValue(redisKey);
        if (StringUtils.isNotBlank(cachedValue)) {
            //从缓存中获取用户权限
@@ -169,11 +183,11 @@
            // 组装菜单
            assembleMenu(menuFunction, menuFunctionMap);
            Map<String ,Object> powerMap=new HashMap<>();
            Map<String, Object> powerMap = new HashMap<>();
            powerMap.put(USERFUNCTION, userFunction);
            powerMap.put(MENUSFUNCTION, menuFunction);
            powerMap.put(USER_URL_MAPPING, userUrlMapping);
            redisClient.saveValue(redisKey,JSONUtil.parseObj(powerMap,true));
            redisClient.saveValue(redisKey, JSONUtil.parseObj(powerMap, true));
        }
zq-erp/src/main/java/com/matrix/system/common/interceptor/UserLoginInterceptor.java
@@ -33,10 +33,11 @@
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
        String requestUrl = request.getRequestURI();
         String requestUrl = request.getRequestURI();
        // 如果访问特殊的路径需要验证管理员的登录权限
        if (requestUrl.indexOf(ADMIN) != -1 || requestUrl.indexOf(SUPER) != -1
                || requestUrl.indexOf(DEVELOPER) != -1 || requestUrl.indexOf(CUSTOMER) != -1) {
            if (WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY) == null) {
                // 判断是否为异步请求
                String requestType = request.getHeader(X_REQUESTED_WITH);
zq-erp/src/main/java/com/matrix/system/hive/action/CardLevelController.java
@@ -33,7 +33,7 @@
    @RequestMapping(value = "/showList")
    public @ResponseBody AjaxResult showList(SysVipLevel vipLevel,PaginationVO pageVo) {
        SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        vipLevel.setShopId(users.getShopId());
        vipLevel.setCompanyId(users.getCompanyId());
        return showList(cardLevelService,vipLevel,pageVo);
    }
    /**
zq-erp/src/main/java/com/matrix/system/hive/action/CustomerController.java
@@ -153,7 +153,8 @@
    @RequestMapping(value = "/findVipQuestionVipId")
    public String findVipQuestionVipId(Long id) {
        //获取会员所有的答案,分类型
        List<Question> questions=questionSerivce.findByVipId(id);
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        List<Question> questions=questionSerivce.findByVipId(id,user.getCompanyId());
        WebUtil.getRequest().setAttribute("questions", questions);
        return "admin/hive/mobile/CRM-account-detail";
        
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
@@ -9,11 +9,9 @@
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.constance.SystemConstance;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.hive.pojo.CzXkVo;
import com.matrix.system.hive.service.*;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
@@ -27,7 +25,6 @@
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -282,9 +279,9 @@
    @RequestMapping(value = "/active")
    public @ResponseBody
    AjaxResult active(MoneyCardUse moneyCardUse) {
        MoneyCardUse proj = moneyCardUseDao.selectById(moneyCardUse.getId());
        String status = proj.getStatus();
        Date failTime = proj.getFailTime();
        MoneyCardUse cardUse = moneyCardUseDao.selectById(moneyCardUse.getId());
        String status = cardUse.getStatus();
        Date failTime = cardUse.getFailTime();
        Date today = new Date();
        Date newDate = null;
        newDate = moneyCardUse.getFailTime();
@@ -303,14 +300,27 @@
            //如果是冻结状态则要算出冻结的天数,延长有效期
            case Dictionary.TAOCAN_STATUS_DJ:
                MoneyCardUseFreeze freeze = new MoneyCardUseFreeze();
                freeze = moneyCardUseFreezeService.findByMoneyCardUseId(proj.getId());
                proj.setFailTime(DateUtil.nextNDate(failTime, freeze.getGapDays()));
                freeze = moneyCardUseFreezeService.findByMoneyCardUseId(cardUse.getId());
                cardUse.setFailTime(DateUtil.nextNDate(failTime, freeze.getGapDays()));
                break;
            default:
                return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择无效或者冻结的充值卡");
        }
        proj.setFailTime(moneyCardUse.getFailTime());
        cardUseService.active(proj);
        cardUse.setFailTime(moneyCardUse.getFailTime());
        cardUseService.active(cardUse);
        MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        moneyCardUseFlow.setCarUseId(cardUse.getId());
        moneyCardUseFlow.setVipId(cardUse.getVipId());
        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CARD_MODIFY);
        moneyCardUseFlow.setCreateTime(new Date());
        moneyCardUseFlow.setOperationId(user.getSuId());
        moneyCardUseFlow.setContent("设置为有效");
        moneyCardUseFlowDao.insert(moneyCardUseFlow);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "已设置为有效");
    }
@@ -323,9 +333,9 @@
    @RequestMapping(value = "/invalid")
    public @ResponseBody
    AjaxResult invalidTc(MoneyCardUse moneyCardUse) {
        MoneyCardUse proj = cardUseService.findById(moneyCardUse.getId());
        MoneyCardUse cardUse = cardUseService.findById(moneyCardUse.getId());
        //以及转让或者退款的不能在设置为无效
        String status = proj.getStatus();
        String status = cardUse.getStatus();
        switch (status) {
            case Dictionary.TAOCAN_STATUS_TK:
                return new AjaxResult(AjaxResult.STATUS_FAIL, "充值卡已退款");
@@ -334,7 +344,16 @@
            case Dictionary.TAOCAN_STATUS_DJ:
                return new AjaxResult(AjaxResult.STATUS_FAIL, "充值卡已冻结");
        }
        cardUseService.invalid(proj);
        cardUseService.invalid(cardUse);
        MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        moneyCardUseFlow.setCarUseId(cardUse.getId());
        moneyCardUseFlow.setVipId(cardUse.getVipId());
        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CARD_MODIFY);
        moneyCardUseFlow.setCreateTime(new Date());
        moneyCardUseFlow.setOperationId(user.getSuId());
        moneyCardUseFlow.setContent("设置为无效");
        moneyCardUseFlowDao.insert(moneyCardUseFlow);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "已设置为无效");
    }
@@ -365,6 +384,18 @@
    public @ResponseBody
    AjaxResult freeze(MoneyCardUse moneyCardUse) {
        int i = cardUseService.freeze(moneyCardUse);
        cardUseService.invalid(moneyCardUse);
        MoneyCardUse cardUse = cardUseService.findById(moneyCardUse.getId());
        MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        moneyCardUseFlow.setCarUseId(cardUse.getId());
        moneyCardUseFlow.setVipId(cardUse.getVipId());
        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CARD_MODIFY);
        moneyCardUseFlow.setCreateTime(new Date());
        moneyCardUseFlow.setOperationId(user.getSuId());
        moneyCardUseFlow.setContent("冻结会员卡");
        moneyCardUseFlowDao.insert(moneyCardUseFlow);
        if (i > 0) {
            return new AjaxResult(AjaxResult.STATUS_SUCCESS, "冻结成功");
        }
zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java
@@ -191,7 +191,6 @@
        queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
        queryUse.setTaocanId(-1L);
        queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
        queryUse.setIsOver(Dictionary.FLAG_NO_N);
        List<SysProjUse> projList = projUseService.findInPage(queryUse, null);
        //切换到套餐查询条件
        queryUse.setTaocanId(null);
zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java
@@ -5,7 +5,10 @@
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.*;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.PropertiesUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.core.tools.excl.ExcelSheetPO;
import com.matrix.core.tools.excl.ExcelUtil;
import com.matrix.core.tools.excl.ExcelVersion;
@@ -18,11 +21,9 @@
import com.matrix.system.common.tools.ResponseHeadUtil;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.Question;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.bean.SysVipLevel;
import com.matrix.system.hive.bean.VipAnswer;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.dao.ShoppingGoodsDao;
import com.matrix.system.hive.dao.SysVipLabelDao;
import com.matrix.system.hive.dao.VipAnswerDao;
import com.matrix.system.hive.pojo.RegisterInfo;
@@ -31,10 +32,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@@ -43,10 +41,8 @@
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
@@ -90,9 +86,140 @@
    private CustomerDataDictionaryDao customerDataDictionaryDao;
    @Resource
    private SysOrderService sysOrderService;
    @Autowired
    ShoppingGoodsDao shoppingGoodsDao;
    @Autowired
    private ScoreVipDetailDao scoreVipDetailDao;
    @Resource
    private SysProjUseService projUseService;
    @Resource
    HttpServletResponse response;
    @RequestMapping(value = "/exportExcel/{vipId}")
    public  void getVipAllProjInfo(@PathVariable Long vipId) throws IOException {
        List<ExcelSheetPO> res = new ArrayList<>();
        ExcelSheetPO orderSheet = new ExcelSheetPO();
        SysVipInfo vipInfo = vipInfoService.findById(vipId);
        String title = vipInfo.getVipName()+"("+vipInfo.getVipNo()+")会员资料";
        orderSheet.setSheetName(title);
        orderSheet.setTitle(title);
        String[] header = {"产品类型", "产品名称","来源", "状态", "余额", "余次", "到期时间", "本金", "赠金"};
        orderSheet.setHeaders(header);
        SysProjUse queryUse = new SysProjUse();
        queryUse.setVipId(vipId);
        queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
        queryUse.setTaocanId(-1L);
        queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
        List<SysProjUse> projList = projUseService.findInPage(queryUse, null);
        List<List<Object>> list = new ArrayList<>();
        if (projList.size() > 0) {
            for (SysProjUse item : projList) {
                List<Object> temp = new ArrayList<>();
                temp.add("项目");
                temp.add(item.getProjName());
                temp.add(item.getSource());
                temp.add("有效");
                temp.add(item.getBalance());
                temp.add(item.getSurplusCount());
                temp.add(DateUtil.dateToString(item.getFailTimeStr(),DateUtil.DATE_FORMAT_DD));
                temp.add("");
                temp.add("");
                list.add(temp);
            }
        }
        //套餐
        //切换到套餐查询条件
        SysProjUse queryTaocan = new SysProjUse();
        queryTaocan.setType(Dictionary.SHOPPING_GOODS_TYPE_TC);
        queryTaocan.setStatus(Dictionary.TAOCAN_STATUS_YX);
        queryTaocan.setVipId(vipId);
        List<SysProjUse> taoCanList = projUseService.findInPage(queryTaocan, null);
        taoCanList.forEach(item->{
            item.setTaocanProjUse(projUseService.selectTaocanProjUse(item.getId(), queryUse.getStatus()));
            item.setProjInfo(shoppingGoodsDao.selectById(item.getProjId()));
        });
        if (taoCanList.size() > 0) {
            for (SysProjUse item : taoCanList) {
                List<Object> temp = new ArrayList<>();
                if(Dictionary.FLAG_YES_Y.equals(item.getIsCourse())){
                    temp.add("任选套餐");
                }else{
                    temp.add("固定套餐");
                }
                temp.add(item.getProjName());
                temp.add(item.getSource());
                temp.add("有效");
                temp.add(item.getBalance());
                temp.add(item.getSurplusCount());
                temp.add(DateUtil.dateToString(item.getFailTimeStr(),DateUtil.DATE_FORMAT_DD));
                temp.add("");
                temp.add("");
                list.add(temp);
                    //套餐下项目
                List<SysProjUse> taocanProjUse = item.getTaocanProjUse();
                if (taocanProjUse.size() > 0) {
                    for (SysProjUse proj_item : taocanProjUse) {
                        List<Object> temp2 = new ArrayList<>();
                        temp2.add(" |————");
                        temp2.add(proj_item.getProjName());
                        temp2.add(proj_item.getSource());
                        temp2.add("有效");
                        temp2.add(proj_item.getBalance());
                        temp2.add(proj_item.getSurplusCount());
                        temp2.add(DateUtil.dateToString(proj_item.getFailTimeStr(),DateUtil.DATE_FORMAT_DD));
                        temp2.add("");
                        temp2.add("");
                        list.add(temp2);
                    }
                }
            }
        }
        //储值卡
        MoneyCardUse moneyCardUse = new MoneyCardUse();
        moneyCardUse.setVipId(vipId);
        moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
        List<MoneyCardUse> cards = cardUseService.findByModel(moneyCardUse);
        if (cards.size() > 0) {
            for (MoneyCardUse item : cards) {
                List<Object> temp = new ArrayList<>();
                temp.add("储值卡");
                temp.add(item.getCardName());
                temp.add(item.getSource());
                temp.add("有效");
                temp.add("");
                temp.add(item.getLastCount());
                temp.add(DateUtil.dateToString(item.getFailTime(),DateUtil.DATE_FORMAT_DD));
                temp.add(item.getRealMoney());
                temp.add(item.getGiftMoney());
                list.add(temp);
            }
        }
        orderSheet.setDataList(list);
        res.add(orderSheet);
        response = ResponseHeadUtil.setExcelHead(response);
        response.setHeader("Content-Disposition",
                "attachment;filename=" + URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8"));
        OutputStream os = response.getOutputStream();
        ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
    }
    @RequestMapping(value = "/showVipLevel")
@@ -135,9 +262,9 @@
            vips.get(0).setLabels(sysVipLabelDao.selectByVipId(vips.get(0).getId()));
            vips.get(0).setAge(DateUtil.getAgeForBirthDay(vips.get(0).getBirthday1()));
            vips.get(0).setBalance(moneyCardUseDao.selectVipCardTotalMoney(vips.get(0).getId()));
            AjaxResult result=  new AjaxResult(AjaxResult.STATUS_SUCCESS, vips, 0);
            AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, vips, 0);
            return result;
        }else{
        } else {
            return AjaxResult.buildFailInstance("未查到询客户信息");
        }
@@ -162,25 +289,9 @@
    public @ResponseBody
    AjaxResult addOrModify(SysVipInfo vipInfo) {
        if (vipInfo.getId() != null) {
            try {
                if (vipInfo.getPassWord() != null) {
                    vipInfo.setPassWord(EncrypUtil.getMD5(vipInfo.getPassWord()));
                }
            } catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return modify(vipInfoService, vipInfo, "会员信息");
        } else {
            try {
                if (StringUtils.isNotBlank(vipInfo.getPassWord())) {
                    vipInfo.setPassWord(EncrypUtil.getMD5(vipInfo.getPassWord()));
                }
                vipInfo.setVipState(Dictionary.VIP_STATE_HY);
            } catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            vipInfo.setVipState(Dictionary.VIP_STATE_HY);
            SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
            vipInfo.setShopId(users.getShopId());
            return add(vipInfoService, vipInfo, "会员信息");
@@ -253,7 +364,8 @@
    public @ResponseBody
    AjaxResult getVipQuestions(Long id, HttpServletRequest request) {
        // 获取会员所有的答案,分类型
        List<Question> questions = questionSerivce.findByVipId(id);
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        List<Question> questions = questionSerivce.findByVipId(id, user.getCompanyId());
        request.setAttribute("questions", questions);
        AjaxResult result = new AjaxResult();
        result.putInMap("questions", questions);
@@ -317,7 +429,7 @@
        SystemDictionary dataDictionary = new SystemDictionary();
        // 获取到店途径
        dataDictionary.setType("到店途径");
        WebUtil.getRequest().setAttribute("ddtj", customerDataDictionaryDao.selectByParentCode("DDTJ",getMe().getCompanyId()));
        WebUtil.getRequest().setAttribute("ddtj", customerDataDictionaryDao.selectByParentCode("DDTJ", getMe().getCompanyId()));
        // 获取生肖
        dataDictionary.setType("生肖");
        WebUtil.getRequest().setAttribute("sx", dataDictionaryService.findByModel(dataDictionary));
zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java
@@ -192,6 +192,8 @@
    private String vipQueryKey;
    private Long achieveRuleId;
    /**
     * 订单编号
@@ -541,6 +543,13 @@
        this.day = day;
    }
    public Long getAchieveRuleId() {
        return achieveRuleId;
    }
    public void setAchieveRuleId(Long achieveRuleId) {
        this.achieveRuleId = achieveRuleId;
    }
    public String getOrderNo() {
        return orderNo;
zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
@@ -210,7 +210,7 @@
    /**
     * 单会员是否只买一次
     */
    private String isOnce;
    private Integer isOnce;
    /**
     * 销售平台
@@ -1002,11 +1002,12 @@
        this.saleOffTime = saleOffTime;
    }
    public String getIsOnce() {
    public Integer getIsOnce() {
        return isOnce;
    }
    public void setIsOnce(String isOnce) {
    public void setIsOnce(Integer isOnce) {
        this.isOnce = isOnce;
    }
zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjUseFlow.java
@@ -4,19 +4,18 @@
import com.matrix.core.anotations.Extend;
import com.matrix.core.pojo.EntityDTO;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.common.bean.EntityDTOExt;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**项目余次操作记录
 * @date 2016-07-03 20:53
 */
@Data
public class SysProjUseFlow extends EntityDTO {
    private static final long serialVersionUID = 1L;
@@ -94,107 +93,4 @@
    @Extend
    private String endTime;
    public String getBeginTime() {
        return beginTime;
    }
    public void setBeginTime(String beginTime) {
        this.beginTime = beginTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getProjUseId() {
        return projUseId;
    }
    public void setProjUseId(Long projUseId) {
        this.projUseId = projUseId;
    }
    public Integer getSurplusCount() {
        return surplusCount;
    }
    public void setSurplusCount(Integer surplusCount) {
        this.surplusCount = surplusCount;
    }
    public String getIsOver() {
        return isOver;
    }
    public void setIsOver(String isOver) {
        this.isOver = isOver;
    }
    public Date getFailTime() {
        return failTime;
    }
    public void setFailTime(Date failTime) {
        this.failTime = failTime;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public Double getBalance() {
        return balance;
    }
    public void setBalance(Double balance) {
        this.balance = balance;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getProjName() {
        return projName;
    }
    public void setProjName(String projName) {
        this.projName = projName;
    }
    public String getOptionType() {
        return optionType;
    }
    public void setOptionType(String optionType) {
        this.optionType = optionType;
    }
}
zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.MoneyCardUse;
import org.apache.ibatis.annotations.Param;
@@ -15,7 +16,7 @@
 */
public interface MoneyCardUseDao{
public interface MoneyCardUseDao extends BaseMapper<MoneyCardUse> {
    public int insert(MoneyCardUse moneyCardUse);
       
@@ -84,6 +85,7 @@
    public Double  selectVipCardTotalMoney(@Param("vipId") Long vipId);
    List<MoneyCardUse> selectHasValidMoneyCardUse();
    int updateInvalidMoneyCardUse();
    void updateId(@Param("id")Long id, @Param("newId")Long i);
}
zq-erp/src/main/java/com/matrix/system/hive/dao/QuestionDao.java
@@ -47,6 +47,6 @@
     * @param type 问卷分类
     * @return
     */
    public List<Question> selectVipAnswerAllByModel(@Param("id") Long id, @Param("type") String type);
    public List<Question> selectVipAnswerAllByModel(@Param("id") Long id,@Param("companyId") Long companyId, @Param("type") String type);
    
}
zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java
@@ -91,4 +91,6 @@
    int selectShopppingGoodsAipTotal(@Param("record") ShoppingGoodsListDto shoppingGoodsListDto);
    public List<ShoppingGoods> selectByIds(@Param("ids")List<Integer> ids);
    int updateInvalidProduct();
}
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java
@@ -46,7 +46,7 @@
     */
    public List<SysOrderItem> selectByOrderId(@Param("orderId") Long orderId);
    public Integer selectByGoodsId(@Param("goodsId") Long goodsId);
    public Integer selectByGoodsId(@Param("goodsId") Long goodsId,@Param("vipId") Long vipId);
    public List<SysOrderItem> selectItemByTime(@Param("shopId")Long shopId, @Param("time")Date time);
zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java
@@ -127,7 +127,7 @@
    public int updateTcStatus(@Param("id") Long id, @Param("status") String status);
    List<SysProjUse> selectHasValidProjUse();
    int updateInvalidProjUse();
    List<SysProjUseFlow> selectProjUseFlow(@Param("record") SysProjUseFlow projUseFlow, @Param("pageVo")PaginationVO pageVo);
zq-erp/src/main/java/com/matrix/system/hive/service/QuestionSerivce.java
@@ -77,7 +77,7 @@
     * luokai
     * @return
     */
    public List<Question> findByVipId(Long id);
    public List<Question> findByVipId(Long id,Long companyId);
       
zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
@@ -1,21 +1,20 @@
package com.matrix.system.hive.service.imp;
import com.matrix.core.constance.MatrixConstance;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.bean.MoneyCardUseFreeze;
import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.service.MoneyCardUseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
@@ -24,7 +23,7 @@
 * @date 2016-09-17 10:17
 */
@Service("moneyCardUseService")
public class MoneyCardUseServiceImpl implements MoneyCardUseService {
public class MoneyCardUseServiceImpl extends ServiceImpl<MoneyCardUseDao,MoneyCardUse> implements MoneyCardUseService {
    @Autowired
@@ -231,8 +230,7 @@
            }
        }
        moneyCardUseDao.update(proj);
        StringBuilder content = new StringBuilder();
        content.append(proj.getCardName() + "设置有效");
    }
    //设置为失效
zq-erp/src/main/java/com/matrix/system/hive/service/imp/QuestionServiceImpl.java
@@ -175,12 +175,12 @@
     * @return
     */
    @Override
    public List<Question> findByVipId(Long id) {
    public List<Question> findByVipId(Long id,Long companyId) {
        List<Question> vipAnswerList=quesionDao.selectVipAnswerAllByModel(id,Question.TYPE_ZXDAGL);
        List<Question> vipAnswerList=quesionDao.selectVipAnswerAllByModel(id,companyId,Question.TYPE_ZXDAGL);
        
        return vipAnswerList;
zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
@@ -14,12 +14,14 @@
import com.matrix.system.common.tools.ServiceUtil;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.constance.TableMapping;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.bean.ShoppingGoods;
import com.matrix.system.hive.bean.ShoppingGoodsAssemble;
import com.matrix.system.hive.bean.ShoppingGoodsCategory;
import com.matrix.system.hive.bean.SysShopInfo;
import com.matrix.system.hive.dao.MoneyCardAssembleDao;
import com.matrix.system.hive.dao.ShoppingGoodsAssembleDao;
import com.matrix.system.hive.dao.ShoppingGoodsDao;
import com.matrix.system.hive.dao.SysShopInfoDao;
import com.matrix.system.hive.plugin.message.StringUtil;
import com.matrix.system.hive.service.ShoppingGoodsService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,9 +29,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
import java.awt.event.WindowStateListener;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -526,7 +526,7 @@
        goodsDetailVo.setGoodsType(shoppingGoods.getGoodType());
        goodsDetailVo.setDesc(shoppingGoods.getDescription());
        goodsDetailVo.setMaxSaleCnt(shoppingGoods.getCarMaxSaleCount());
        goodsDetailVo.setLimitBuyCnt("否".equals(shoppingGoods.getIsOnce()) ? null : shoppingGoods.getIsOnce());
        goodsDetailVo.setLimitBuyCnt(shoppingGoods.getIsOnce());
        goodsDetailVo.setMaxUseCnt(shoppingGoods.getCarUseCount());
        goodsDetailVo.setMeasure(shoppingGoods.getMeasure());
        goodsDetailVo.setVolume(shoppingGoods.getVolume());
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -498,8 +498,10 @@
            throw new GlobleException("该订单已经收过款,请刷新页面再试!");
        }
        //交易业绩设置是否合理
        //检查交易限制调整
        checkSealLimit(pageOrder);
        //交易业绩设置是否合理
        checkAchieveIsOk(pageOrder);
@@ -535,6 +537,41 @@
        //设置会员积分
        addVipScore(pageOrder);
    }
    /**
     * 检查产品销售次数
     */
    private void checkSealLimit(SysOrder pageOrder) {
         pageOrder.getItems().forEach(item->{
             ShoppingGoods shopGoods = shoppingGoodsDao.selectById(item.getGoodsId());
             //最大销售次数检测
             Integer maxNum = shopGoods.getCarMaxSaleCount();
             if (maxNum != null && maxNum != 0) {
                 Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId(),null);
                 if ((buyNum + item.getCount()) > maxNum) {
                     throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
                 }
                 if ((buyNum + item.getCount()) == maxNum) {
                     if (!shopGoods.getStaus().equals(Dictionary.BUSINESS_STATE_DOWN)) {
                         shopGoods.setStaus(Dictionary.BUSINESS_STATE_DOWN);
                         shoppingGoodsDao.update(shopGoods);
                     }
                 }
             }
             //每人限购次数检测
             Integer onceCount = shopGoods.getIsOnce();
             if(onceCount!=null && onceCount!=0){
                 Integer buyOnceCount = orderItemDao.selectByGoodsId(shopGoods.getId(),pageOrder.getVipId());
                 if ((buyOnceCount + item.getCount()) > onceCount) {
                     throw new GlobleException(shopGoods.getName() + "每人限购"+onceCount+"次");
                 }
             }
         });
    }
@@ -780,7 +817,7 @@
        // 最大发卡数量为0代表不做限制
        if (maxNum != null && maxNum != 0) {
            // 查询该商品已经被购买的次数
            Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId());
            Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId(),null);
            buyNum = (buyNum == null ? 0 : buyNum);
            if ((buyNum + carItem.getCount()) > maxNum) {
                throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
@@ -944,7 +981,6 @@
                    moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
                    moneyCardUse.setRealMoney(moneyCar.getSealPice());
                    moneyCardUse.setGoodsId(moneyCar.getId());
                    moneyCardUse.setIsOver(Dictionary.FLAG_NO_N);
                    moneyCardUse.setOrderItemId(sysOrderItem.getId());
                    moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
                    moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
@@ -1702,7 +1738,6 @@
            if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) {
                MoneyCardUse queryCardUse = new MoneyCardUse();
                queryCardUse.setIsOver(Dictionary.FLAG_NO_N);
                queryCardUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
                queryCardUse.setOrderItemId(item.getOldItemId());
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -10,7 +10,6 @@
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.CollectionUtils;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.SysProjUseService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -230,6 +229,19 @@
        }
        taocan.setStatus(Dictionary.TAOCAN_STATUS_YX);
        sysProjUseDao.updateProjStatus(taocan);
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        SysProjUseFlow useFlow=new SysProjUseFlow();
        useFlow.setProjName(taocan.getProjName());
        useFlow.setProjUseId(taocan.getId());
        useFlow.setOptionType("人工修改");
        useFlow.setRemark("设置为有效状态");
        useFlow.setFailTime(taocan.getFailTime());
        useFlow.setStatus(Dictionary.TAOCAN_STATUS_YX);
        useFlow.setCreateBy(sysUsers.getSuName());
        useFlow.setUpdateBy(sysUsers.getSuName());
        sysProjUseDao.insertFlow(useFlow);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功");
    }
@@ -257,6 +269,19 @@
            } else {
                i = sysProjuseFreezeDao.insert(freeze);
            }
            SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
            SysProjUseFlow useFlow=new SysProjUseFlow();
            useFlow.setProjName(taocan.getProjName());
            useFlow.setProjUseId(taocan.getId());
            useFlow.setOptionType("人工修改");
            useFlow.setStatus(Dictionary.TAOCAN_STATUS_DJ);
            useFlow.setRemark("冻结项目");
            useFlow.setCreateBy(sysUsers.getSuName());
            useFlow.setUpdateBy(sysUsers.getSuName());
            sysProjUseDao.insertFlow(useFlow);
            return i;
        } else {
            throw new GlobleException("未找到套餐");
@@ -302,73 +327,6 @@
        return money;
    }
    public double getTotalMoney(SysProjUse sysProjUse, MoneyCardUse cardUse, Long moneyCardUseId) {
        List<SysProjUse> list = sysProjUseDao.selectByModel(sysProjUse);
        double money = 0;
        if (CollectionUtils.isEmpty(list)) {
            throw new GlobleException("该套餐没有可退款的项目!");
        }
        //判断套餐是否存在欠款
        SysProjUse projuse = list.get(0);
        checkOrderStatu(projuse);
        if (!(projuse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX))) {
            throw new GlobleException("不是有效套餐");
        }
        if (projuse.getSource().contains(Dictionary.TAOCAN_SOURCE_ZR)) {
            throw new GlobleException("转让的套餐不能退款");
        }
        if (projuse.getSource().contains(Dictionary.TAOCAN_SOURCE_ZS)) {
            throw new GlobleException("赠送的套餐不能退款");
        }
        //获取会员卡
        cardUse = moneyCardUseDao.selectVipCard(projuse.getVipId());
        String content;
        //如果是套餐卡
        ShoppingGoodsAssemble shoppingGoodsAssemble = shoppingGoodsAssembleDao.selectById(sysProjUse.getAssembleId());
        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(shoppingGoodsAssemble.getShoppingGoodsId());
        if (Dictionary.SHOPPING_GOODS_TYPE_TCK.equals(projuse.getType())) {
            money = projuse.getBalance();
            //余次使用流水操作
            content = shoppingGoods.getName() + "退款¥" + projuse.getBalance();
        } else {
            for (SysProjUse itemUser : list) {
                Double emoney = MoneyUtil.mul(Double.parseDouble(itemUser.getSurplusCount() + ""), itemUser.getPrice());
                money = MoneyUtil.add(emoney, money);
            }
            //余次使用流水操作
            content = shoppingGoods.getName() + "退款¥" + money;
        }
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        // 1、金额退到该用户的有效会籍卡中
        System.out.println("==========" + cardUse);
        if (moneyCardUseId != null) {
            if (cardUse == null) {
                content += "到现金。";
            } else {
                //SysOrderItem orderItem = orderItemDao.selectById(cardUse.getOrderItemId());
                StringBuilder contentBuild = new StringBuilder();
                contentBuild.append("到" + cardUse.getCardName())
                        .append(",余次:" + cardUse.getLastCountName())
                        .append(",本金余额:" + MoneyUtil.add(cardUse.getRealMoney(), money))
                        .append(",赠送余额:" + cardUse.getGiftMoney())
                        .append(",有效期:" + DateUtil.dateToString(cardUse.getFailTime(), DateUtil.DATE_FORMAT_MM))
                        .append(",是否赠送:" + cardUse.getSourceName());
                content += contentBuild.toString();
                cardUse.setRealMoney(cardUse.getRealMoney() + money);
                ;
                moneyCardUseDao.update(cardUse);
            }
        } else {
            content += "到现金。";
        }
        return money;
    }
    /**
     * 检测是否存在欠款
@@ -400,7 +358,22 @@
                throw new GlobleException("套餐已冻结");
        }
        taocan.setStatus(Dictionary.TAOCAN_STATUS_WX);
        int i = sysProjUseDao.updateTcStatus(sysProjUse.getId(), "无效");
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        SysProjUseFlow useFlow=new SysProjUseFlow();
        useFlow.setProjName(taocan.getProjName());
        useFlow.setProjUseId(taocan.getId());
        useFlow.setOptionType("人工修改");
        useFlow.setStatus(Dictionary.TAOCAN_STATUS_WX);
        useFlow.setRemark("设置为无效状态");
        useFlow.setFailTime(taocan.getFailTime());
        useFlow.setCreateBy(sysUsers.getSuName());
        useFlow.setUpdateBy(sysUsers.getSuName());
        sysProjUseDao.insertFlow(useFlow);
        return i;
    }
@@ -502,6 +475,17 @@
        } else {
            i = sysProjuseFreezeDao.insert(freeze);
        }
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        SysProjUseFlow useFlow=new SysProjUseFlow();
        useFlow.setProjName(sysProjUse.getProjName());
        useFlow.setProjUseId(sysProjUse.getId());
        useFlow.setOptionType("人工修改");
        useFlow.setStatus(Dictionary.TAOCAN_STATUS_DJ);
        useFlow.setRemark("冻结项目");
        useFlow.setCreateBy(sysUsers.getSuName());
        useFlow.setUpdateBy(sysUsers.getSuName());
        sysProjUseDao.insertFlow(useFlow);
        return i;
    }
@@ -527,9 +511,19 @@
                throw new GlobleException("套餐已冻结");
        }
        sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(sysProjUse.getProjId());
        String content = shoppingGoods.getName() + "设置为" + sysProjUse.getStatus();
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        SysProjUseFlow useFlow=new SysProjUseFlow();
        useFlow.setProjName(sysProjUse.getProjName());
        useFlow.setProjUseId(sysProjUse.getId());
        useFlow.setOptionType("人工修改");
        useFlow.setStatus(Dictionary.TAOCAN_STATUS_WX);
        useFlow.setRemark("设置为无效状态");
        useFlow.setFailTime(sysProjUse.getFailTime());
        useFlow.setCreateBy(sysUsers.getSuName());
        useFlow.setUpdateBy(sysUsers.getSuName());
        sysProjUseDao.insertFlow(useFlow);
        return sysProjUseDao.update(sysProjUse);
    }
@@ -576,11 +570,19 @@
        }
        proj.setStatus(Dictionary.TAOCAN_STATUS_YX);
        sysProjUseDao.update(proj);
        StringBuilder content = new StringBuilder();
        ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(proj.getProjId());
        content.append(shoppingGoods.getName() + "设置为有效")
                .append(",有效期:" + DateUtil.dateToString(proj.getFailTime(), DateUtil.DATE_FORMAT_MM));
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        SysProjUseFlow useFlow=new SysProjUseFlow();
        useFlow.setProjName(proj.getProjName());
        useFlow.setProjUseId(proj.getId());
        useFlow.setOptionType("人工修改");
        useFlow.setStatus(Dictionary.TAOCAN_STATUS_YX);
        useFlow.setRemark("设置为有效状态");
        useFlow.setFailTime(proj.getFailTime());
        useFlow.setCreateBy(sysUsers.getSuName());
        useFlow.setUpdateBy(sysUsers.getSuName());
        sysProjUseDao.insertFlow(useFlow);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功");
    }
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysWorktimeServiceImpl.java
@@ -99,16 +99,21 @@
    public boolean isInWorkTime(Long shopId, Date beginTime, Date endTime) {
        if(beginTime!=null){
            Date minTime = findMinTime(shopId);
            Date maxTime = findMaxTime(shopId);
            minTime.setYear(beginTime.getYear());
            minTime.setMonth(beginTime.getMonth());
            minTime.setDate(beginTime.getDate());
            maxTime.setYear(beginTime.getYear());
            maxTime.setMonth(beginTime.getMonth());
            maxTime.setDate(beginTime.getDate());
            return (
                    (DateUtil.isDuringDate(minTime, maxTime, beginTime) || minTime.getTime()==beginTime.getTime()  )
                            && DateUtil.isDuringDate(minTime, maxTime, endTime) || maxTime.getTime()==endTime.getTime() );
            if(minTime!=null){
                Date maxTime = findMaxTime(shopId);
                minTime.setYear(beginTime.getYear());
                minTime.setMonth(beginTime.getMonth());
                minTime.setDate(beginTime.getDate());
                maxTime.setYear(beginTime.getYear());
                maxTime.setMonth(beginTime.getMonth());
                maxTime.setDate(beginTime.getDate());
                return (
                        (DateUtil.isDuringDate(minTime, maxTime, beginTime) || minTime.getTime()==beginTime.getTime()  )
                                && DateUtil.isDuringDate(minTime, maxTime, endTime) || maxTime.getTime()==endTime.getTime() );
            }else {
                return false;
            }
        }else{
            return false;
        }
zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpOrderController.java
@@ -18,7 +18,6 @@
import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.hive.dao.SysOrderDao;
import com.matrix.system.hive.dao.SysOrderItemDao;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.hive.service.AchieveNewService;
import com.matrix.system.hive.service.MoneyCardUseService;
import com.matrix.system.hive.service.SysOrderItemService;
@@ -85,37 +84,27 @@
//=======================================页面转发==================================
    /**
     * 跳转 消费流水详情页面
     *
     * @author jyy
     */
    @RequestMapping(value = "/orderItem")
    public String orderItem(Long id, HttpServletRequest request) {
        // 根据id查到对应的订单信息
        SysOrder order = orderService.findById(id);
        List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(id);
        order.setItems(sysOrderItems);
    public String orderItem(SysOrder orderVo) {
        WebUtil.getRequest().setAttribute("order", order);
        // 根据会员Id查到会员有效的会员卡
        // 根据订单号查找订单条目
        SysOrderItem orderItem = new SysOrderItem();
        orderItem.setOrderId(id);
        List<SysOrderItem> orderItems = orderItemService.findByModel(orderItem);
        WebUtil.getRequest().setAttribute("orderItems", orderItems);
        MoneyCardUse moneyCardUse = new MoneyCardUse();
        moneyCardUse.setVipId(order.getVipId());
        List<MoneyCardUse> cards = cardUseService.findByModel(moneyCardUse);
        WebUtil.getRequest().setAttribute("orderParam", id);
        WebUtil.getRequest().setAttribute("cards", cards);
        if(orderVo.getId()!=null){
            WebUtil.getRequest().setAttribute("orderParam", orderVo.getId());
            WebUtil.getRequest().setAttribute("orderId", orderVo.getId());
        }else if(StringUtils.isNotBlank(orderVo.getOrderNo())){
            WebUtil.getRequest().setAttribute("orderParam", orderVo.getOrderNo());
            WebUtil.getRequest().setAttribute("orderNo", orderVo.getOrderNo());
        }
        return "admin/hive-erp/order/orderXq-form";
    }
    /**
     * 取消订单
     */
zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java
@@ -2,6 +2,7 @@
import com.matrix.core.anotations.RemoveRequestToken;
import com.matrix.core.anotations.SaveRequestToken;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.DateUtil;
@@ -223,7 +224,8 @@
    public @ResponseBody
    AjaxResult getVipQuestions(Long id, HttpServletRequest request) {
        // 获取会员所有的答案,分类型
       List<Question> questions = questionSerivce.findByVipId(id);
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        List<Question> questions=questionSerivce.findByVipId(id,user.getCompanyId());
        request.setAttribute("questions", questions);
        AjaxResult result = new AjaxResult();
        result.putInMap("questions", questions);
zq-erp/src/main/java/com/matrix/system/job/InvalidTimeJob.java
@@ -1,17 +1,12 @@
package com.matrix.system.job;
import com.matrix.core.tools.LogUtil;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.bean.SysProjUse;
import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.dao.ShoppingGoodsDao;
import com.matrix.system.hive.dao.SysProjUseDao;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * @author wzy19
@@ -25,26 +20,22 @@
    @Autowired
    private MoneyCardUseDao moneyCardUseDao;
    @Autowired
    private ShoppingGoodsDao shoppingGoodsDao;
    @Scheduled(cron = "0 0 0 * * ?")
    public void setProjUseToInvalid() {
        LogUtil.info("#项目,套餐失效任务处理#");
        List<SysProjUse> sysProjUses = sysProjUseDao.selectHasValidProjUse();
        List<MoneyCardUse> moneyCardUses = moneyCardUseDao.selectHasValidMoneyCardUse();
        if (CollectionUtils.isNotEmpty(sysProjUses)) {
            sysProjUses.forEach(item -> {
                item.setStatus(Dictionary.MONEYCARD_STATUS_WX);
                sysProjUseDao.update(item);
            });
        }
        if (CollectionUtils.isNotEmpty(moneyCardUses)) {
            moneyCardUses.forEach(item -> {
                item.setStatus(Dictionary.MONEYCARD_STATUS_WX);
                moneyCardUseDao.update(item);
            });
        }
        sysProjUseDao.updateInvalidProjUse();
        moneyCardUseDao.updateInvalidMoneyCardUse();
    }
    @Scheduled(cron = "0 0 0 * * ?")
    public void setProductAutoSoldOut() {
        LogUtil.info("#商品自动下架任务处理#");
        shoppingGoodsDao.updateInvalidProduct();
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java
@@ -237,7 +237,6 @@
        queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
        queryUse.setTaocanId(-1L);
        queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
        queryUse.setIsOver(Dictionary.FLAG_NO_N);
        List<SysProjUse> projList = projUseService.findInPage(queryUse, null);
        List<ServiceProjVo> serviceProjVos = SysProjUseMapper.INSTANCE.entityListToProjVoList(projList);
zq-erp/src/main/java/findC.java
New file
@@ -0,0 +1,50 @@
import java.io.File;
import java.io.IOException;
/**
 * 文件对比复制
 * @author JIANGYOUYAO
 * @date 2021/6/7 0007
 */
public class findC {
    static  String targetFilePath="C:/";
    static  Long _1mb=1024L*1024L;
    public static void main(String[] args) throws IOException {
        File sourceFile=new File(targetFilePath);
        traverseFolder(sourceFile);
    }
    public static  void traverseFolder(File file) throws IOException {
        if (file.exists()) {
            File[] files = file.listFiles();
            if (null == files || files.length == 0) {
                return;
            } else {
                for (File file2 : files) {
                    if (file2.isDirectory()) {
                        traverseFolder(file2);
                    } else {
                        if(file2.length()>_1mb*100){
                            System.out.println( file2.length()/_1mb+"MB"+"\t"+file2.getAbsolutePath());
                        }
                    }
                }
            }
        } else {
            System.out.println("文件不存在!");
        }
    }
}
zq-erp/src/main/resources/config/application.properties
@@ -3,18 +3,19 @@
#线上测试环境
#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
spring.datasource.username=hive
spring.datasource.password=hive123!@#
spring.datasource.url=jdbc:mysql://124.70.222.34:3306/hive_prd?useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
#spring.datasource.username=hive
#spring.datasource.password=hive123!@#
#spring.datasource.url=jdbc:mysql://124.70.222.34/hive_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
@@ -72,5 +73,6 @@
default.vip.photo.woman=https://filehive2.jyymatrix.cc/uploadeFile/20210125/db53552e688040afb286686f081e1e68f3fe946f75624598828f01898635152e.png
default.vip.photo.man=https://filehive2.jyymatrix.cc/uploadeFile/20210125/3642f1d827c44c76832fea106c85e0f89e089c16cbcc4dd0a82bb52b9ac700f4.png
mybatis-plus.global-config.db-config.id-type=auto
mybatis-plus.config-location=classpath:mybatis/mybatis-config.xml
mybatis-plus.mapper-locations=classpath*:mybatis/mapper/**/*.xml
zq-erp/src/main/resources/config/mdPrd/application.properties
New file
@@ -0,0 +1,70 @@
evn=prd
server.port=8080
spring.datasource.username=meidu_data
spring.datasource.password=meidu_4321#&@
spring.datasource.url=jdbc:mysql://47.111.134.136/db_meidu_prd?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.config-location=classpath:mybatis/mybatis-config.xml
mybatis.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=300MB
spring.servlet.multipart.max-request-size=300MB
#--------------------------------------
#rabbitMQ配置
rabbitmq.host=47.111.134.136
rabbitmq.port=5672
rabbitmq.username=hivequeue
rabbitmq.password=hivequeueadmin
useRabbit=true
#指定消费者确认方式  当为manual时手动确认 不配置表示自动确认
#spring.rabbitmq.listener.simple.acknowledge-mode=manual
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=true
swagger.enable=false
#默认头像
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/mdPrd/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://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */
    "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://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */
    "scrawlInsertAlign": "none",
    /* 截图工具上传 */
    "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
    "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "snapscreenUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */
    "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://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */
    "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/mdPrd/system.properties
New file
@@ -0,0 +1,104 @@
#是否启用debug模式
debug=false
# 日志文件保存地址
log_path=/mnt/md-hive/log
# 系统语言环境 zh中文,us英文
system_language=zh
# 错误密码允许输入的次数,大于五次后账号锁定,0表示不锁账号
error_password_times=5
# 默认密码
default_password=123
#nginx静态资源访问地址
static_resource_url=https://filehive2.jyymatrix.cc/uploadeFile/md/
#文件保存地址
file_storage_path=/mnt/hive/static/uploadeFile/md/
#文件上传大小字节为单位  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=1
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==
#是否启用异常上报
is_open_exception_report=true
showExcptionUrl=http://erp.hive.jyymatrix.cc/showException
#异常上报地址
exception_center_url =http://geek.xc.jyymatrix.cc/addException
#项目编号
projNo=78
#项目负责人
owner=姜友瑶
#日志文件清理阈值  单位: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 =wx3836ab3c1490ff29
xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
#微信支付调试开关
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
#丰桥顾客编码
sf.logistics.clientCode=XCZHYF
#丰桥校验码
sf.logistics.checkword=zqcjA2A5m6MIGa6mImMcnpKQ9ipYlbUW
#丰桥接口地址
sf.logistics.url=https://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService
#发送短信配置
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
#微信支付回调地址
pay_notify_url = https://xcxhive2.jyymatrix.cc/wxCommon/wxpayCallback
qrcodeBackgroundImgPath=/mnt/xcshop/webresource/static/xcxresource/bj1.png
qrcodeFrontImgPath=/mnt/xcshop/webresource/static/xcxresource/qj2.png
#hive仓库地址
hive.service=http://erp.hive.jyymatrix.cc/meidu-crm/
zq-erp/src/main/resources/config/system.properties
@@ -103,6 +103,5 @@
showExcptionUrl=http://test.hive.jyymatrix.cc/showException
#异常信息查询接口
showExcptionUrl=http://test.hive.jyymatrix.cc/showException
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -104,6 +104,9 @@
                    test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
                    and a.shop_id = #{record.shopId}
                </if>
                <if test="record.achieveRuleId != null  ">
                    and e.achieve_rule_id = #{record.achieveRuleId}
                </if>
                <if test="record.year != null and record.year !='' ">
                    and YEAR (a.datatime) = #{record.year}
                </if>
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml
@@ -141,6 +141,9 @@
        </set>
        WHERE id=#{id}
    </update>
    <update id="updateId">
        update money_card_use set id=#{newId} where id=#{id}
    </update>
    <!-- 批量删除 -->
@@ -623,8 +626,8 @@
    </select>
    <select id="selectHasValidMoneyCardUse" resultMap="MoneyCardUseSimpleMap">
        select * from money_card_use
    <update id="updateInvalidMoneyCardUse">
        update money_card_use set STATUS='无效'
        where date_format(now(), '%Y-%m-%d') > date_format(FAIL_TIME, '%Y-%m-%d') and STATUS='有效'
    </select>
    </update>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/QuestionDao.xml
@@ -50,7 +50,10 @@
    FROM
        question a
    LEFT JOIN vip_answer b ON a.id = b.quesion_id and b.vip_id=#{id}
    WHERE category=#{type}
    WHERE
    a.company_id=#{companyId}
    and category=#{type}
    ORDER BY order_field DESC
    </select>
    
zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
@@ -1255,6 +1255,10 @@
</foreach>
    </update>
    <update id="updateInvalidProduct">
        update shopping_goods set staus = '下架'
        where    date_format(now(), '%Y-%m-%d') > date_format(sale_off_time, '%Y-%m-%d') and staus='上架'
    </update>
    <!-- 根据code查询 -->
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
@@ -275,10 +275,13 @@
    </select>
    <!-- 根据商品id查询改商品下单次数总和-->
    <select id="selectByGoodsId" resultType="java.lang.Integer">
        select sum(COUNT) from sys_order_item a
        select IFNULL(sum(COUNT),0) AS total from sys_order_item a
        left join  sys_order b on b.ID=a.ORDER_ID
        where a.GOODS_ID = #{goodsId}
        and b.STATU !='已取消'
        where a.GOODS_ID = #{goodsId}
        <if test="vipId != null">
            and b.vip_id=#{vipId}
        </if>
        and b.STATU ='已付款'
    </select>
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
@@ -854,10 +854,14 @@
        group by b.id) t
    </select>
    <select id="selectHasValidProjUse" resultMap="SysProjUseMap">
        select * from sys_proj_use
        where date_format(now(), '%Y-%m-%d') > date_format(FAIL_TIME, '%Y-%m-%d') and STATUS='有效'
    </select>
    <update id="updateInvalidProjUse"  >
        update   sys_proj_use set STATUS='无效'
        where
            (    date_format(now(), '%Y-%m-%d') > date_format(FAIL_TIME, '%Y-%m-%d')
                or SURPLUS_COUNT=0
                or balance =0 )
          and STATUS='有效'
    </update>
    <resultMap type="SysProjUse" id="TaoCanWithProjMap">
zq-erp/src/main/resources/templates/views/admin/hive-erp/order/orderXq-form.html
@@ -625,7 +625,7 @@
                        //获取用户列表
                        AjaxProxy.requst({
                            app: _this,
                            url: basePath + '/admin/shopAll',
                            url: basePath + '/admin/all',
                            callback: function (data) {
                                _this.userList = data.rows;
                            }
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html
@@ -2,22 +2,22 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
    content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<LINK rel="Bookmark" href="../images/favicon.ico">
<!-- 本框架基本脚本和样式 -->
<script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
<link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
<link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
<script type="text/javascript" th:src="@{/js/function/public.js}"></script>
    <meta charset="utf-8">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
    <meta http-equiv="Cache-Control" content="no-siteapp" />
    <LINK rel="Bookmark" href="../images/favicon.ico">
    <!-- 本框架基本脚本和样式 -->
    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
    <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
    <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
    <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
    <script type="text/javascript" th:src="@{/js/function/public.js}"></script>
</head>
<style>
    .table-style {
@@ -38,7 +38,7 @@
    <el-row class="search-form">
        <el-form ref="form" :model="form" inline>
            <el-form-item label="选择年月">
                <el-select v-model="form.year" style="width:120px;" placeholder="请选择">
                <el-select v-model="form.year" style="width:120px;" placeholder="请选择年份">
                    <el-option v-for="item in years"
                               :key="item"
                               :label="item"
@@ -46,7 +46,7 @@
                </el-select>
            </el-form-item>
            <el-form-item>
                <el-select v-model="form.month" style="width:120px;" placeholder="请选择">
                <el-select v-model="form.month" style="width:120px;" placeholder="请选择月份">
                    <el-option v-for="item in months"
                               :key="item"
                               :label="item"
@@ -54,7 +54,7 @@
                </el-select>
            </el-form-item>
            <el-form-item>
                <el-select v-model="form.day" style="width:120px;" placeholder="请选择">
                <el-select v-model="form.day" style="width:120px;" placeholder="请选择日">
                    <el-option v-for="item in days"
                               :key="item"
                               :label="item"
@@ -69,7 +69,16 @@
                                end-placeholder="结束日期">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="业绩规则" prop="achieveRuleId">
                <el-select v-model="form.achieveRuleId" filterable placeholder="请选择业绩规则">
                    <el-option
                            v-for="item in achieveRulsList"
                            :key="item.id"
                            :label="item.name"
                            :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="会员">
                <el-input v-model="form.vipQueryKey"></el-input>
            </el-form-item>
@@ -86,9 +95,9 @@
            <el-form-item label="门店">
                <el-select v-model="form.shopId" placeholder="请选择所属门店">
                    <el-option v-for="item in shopList"
                            :key="item.id"
                            :label="item.shopName"
                            :value="item.id">
                               :key="item.id"
                               :label="item.shopName"
                               :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
@@ -116,7 +125,7 @@
            <el-table-column prop="zkTotal" label="订单金额"></el-table-column>
            <el-table-column prop="goodsCash" label="现金"></el-table-column>
            <el-table-column prop="cardCash" label="划扣"></el-table-column>
<!--            <el-table-column prop="goodsCash" label="订单业绩"></el-table-column>-->
            <!--            <el-table-column prop="goodsCash" label="订单业绩"></el-table-column>-->
            <el-table-column prop="meiliao" label="员工"></el-table-column>
            <el-table-column v-for="(item, index) in customColumns" width="120" :key="index" :label="item.value">
                <template slot-scope="scope">
@@ -156,6 +165,7 @@
        data : {
            tableData : [],
            customColumns : [],
            achieveRulsList : [],
            shopList : [],
            achieveUsers : [],
            years : [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021],
@@ -168,6 +178,7 @@
                timeRange : '',
                vipQueryKey : '',
                beaultId : '',
                achieveRuleId : '',
                shopId : ''
            },
            page : {
@@ -181,6 +192,7 @@
            this.queryCustomColumns();
            this.queryShops();
            this.queryAchieveUsers();
            this.getAchieveRule();
        },
        methods : {
            queryTableData () {
@@ -190,6 +202,7 @@
                let page = _this.page;
                let params = {};
                params.year=form.year;
                params.achieveRuleId=form.achieveRuleId;
                params.month=form.month;
                params.year=form.year;
                params.day=form.day;
@@ -225,6 +238,20 @@
                    }
                });
            },
            /**
             * 获取规则
             */
            getAchieveRule(){
                let _this = this;
                AjaxProxy.requst({
                    app: _this,
                    data: {pageNum:1,pageSize:1000},
                    url: basePath + "/admin/achieveRule/selectList",
                    callback: function (data) {
                        _this.achieveRulsList=data.rows;
                    }
                });
            },
            queryShops() {
                let _this = this;
                AjaxProxy.requst({
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-order.html
@@ -130,7 +130,7 @@
            <div style="text-align: center;">
                <img style="width: 100%;" :src="shopInfo.qrcode" /><br>
                更多精彩请访问肽妍小程序<br>
                更多精彩请访问小程序<br>
            </div>
            &nbsp;<br>
            &nbsp;<br>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-service.html
@@ -112,7 +112,7 @@
            <div style="text-align: center;">
                <img style="width: 100%;" :src="shopInfo.qrcode" /><br>
                更多精彩请访问肽妍小程序<br>
                更多精彩请访问小程序<br>
            </div>
            &nbsp;<br>
            &nbsp;<br>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
@@ -127,6 +127,7 @@
                <el-button type="primary" plain @click="recharge">充值</el-button>
                <el-button type="warning" plain @click="addOrder">开单</el-button>
                <el-button type="success" plain @click="addServiceOrder">开服务单</el-button>
                <el-button type="info" plain @click="exportExcel">导出项目</el-button>
            </el-col>
        </el-header>
        <el-container>
@@ -195,7 +196,7 @@
                            </el-col>
                            <el-col :span="10">
                                <p>会员卡类型 : {{vipInfo.vipType}}</p>
                                <p>会员等级 : {{vipInfo.levelName}}</p>
                                <p>会员等级 : {{vipInfo.vipLevel == null ? "" : vipInfo.vipLevel.levelName}}</p>
                                <p>生肖/星座 : {{vipInfo.constell}}</p>
                                <p>地址 : {{vipInfo.addr}}</p>
                                <p>健康顾问 : {{vipInfo.staffName}}</p>
@@ -1542,6 +1543,14 @@
                vipId = this.vipInfo.id;
                openAddService(vipId);
            },
            exportExcel(){
                if (!this.vipInfo.id) {
                    this.$message.error('请选择用户');
                    return;
                }
                vipId = this.vipInfo.id;
                window.location.href=basePath+"/admin/vipInfo/exportExcel/"+vipId;
            },
            // 开订单
            addOrder() {
                if (!this.vipInfo.id) {
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yypb-form.html
@@ -115,7 +115,6 @@
                                        <th width="100px">服务时长(分钟)</th>
                                        <th>服务时间</th>
                                        <th width="300px">美疗师</th>
                                        <th style="width: 100px;">提成</th>
                                        <th>操作</th>
                                    </tr>
@@ -156,9 +155,6 @@
                                                        :value="item.suId">
                                                </el-option>
                                            </el-select>
                                        </td>
                                        <td>
                                            <el-input v-model="item.extract"></el-input>
                                        </td>
                                        <td>
                                            <el-button size="mini" type="danger"
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html
@@ -2,22 +2,22 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
    content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<LINK rel="Bookmark" href="../images/favicon.ico">
<!-- 本框架基本脚本和样式 -->
<script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
<link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
<link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
<script type="text/javascript" th:src="@{/js/function/public.js}"></script>
    <meta charset="utf-8">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
    <meta http-equiv="Cache-Control" content="no-siteapp" />
    <LINK rel="Bookmark" href="../images/favicon.ico">
    <!-- 本框架基本脚本和样式 -->
    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
    <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
    <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
    <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
    <script type="text/javascript" th:src="@{/js/function/public.js}"></script>
</head>
<style>
    .table-style {
@@ -38,7 +38,7 @@
    <el-row class="search-form">
        <el-form ref="form" :model="form" inline>
            <el-form-item label="选择年月">
                <el-select v-model="form.year" style="width:120px;" placeholder="请选择">
                <el-select v-model="form.year" style="width:120px;" placeholder="请选择年份">
                    <el-option v-for="item in years"
                               :key="item"
                               :label="item"
@@ -46,7 +46,7 @@
                </el-select>
            </el-form-item>
            <el-form-item>
                <el-select v-model="form.month" style="width:120px;" placeholder="请选择">
                <el-select v-model="form.month" style="width:120px;" placeholder="请选择月份">
                    <el-option v-for="item in months"
                               :key="item"
                               :label="item"
@@ -54,7 +54,7 @@
                </el-select>
            </el-form-item>
            <el-form-item>
                <el-select v-model="form.day" style="width:120px;" placeholder="请选择">
                <el-select v-model="form.day" style="width:120px;" placeholder="请选择日">
                    <el-option v-for="item in days"
                               :key="item"
                               :label="item"
@@ -69,7 +69,16 @@
                                end-placeholder="结束日期">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="业绩规则" prop="achieveRuleId">
                <el-select v-model="form.achieveRuleId" filterable placeholder="请选择业绩规则">
                    <el-option
                            v-for="item in achieveRulsList"
                            :key="item.id"
                            :label="item.name"
                            :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="会员">
                <el-input v-model="form.vipQueryKey"></el-input>
            </el-form-item>
@@ -86,9 +95,9 @@
            <el-form-item label="门店">
                <el-select v-model="form.shopId" placeholder="请选择所属门店">
                    <el-option v-for="item in shopList"
                            :key="item.id"
                            :label="item.shopName"
                            :value="item.id">
                               :key="item.id"
                               :label="item.shopName"
                               :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
@@ -100,9 +109,7 @@
    </el-row>
    <el-row class="table-style">
        <el-table :data="tableData"
                  :height="height"
                  style="width: 100%">
        <el-table :data="tableData" style="width: 100%">
            <el-table-column type="index" width="30"></el-table-column>
            <el-table-column prop="datatime" width="150" label="时间"></el-table-column>
            <el-table-column prop="orderNo" width="180" label="订单编号">
@@ -118,7 +125,7 @@
            <el-table-column prop="zkTotal" label="订单金额"></el-table-column>
            <el-table-column prop="goodsCash" label="现金"></el-table-column>
            <el-table-column prop="cardCash" label="划扣"></el-table-column>
<!--            <el-table-column prop="goodsCash" label="订单业绩"></el-table-column>-->
            <!--            <el-table-column prop="goodsCash" label="订单业绩"></el-table-column>-->
            <el-table-column prop="meiliao" label="员工"></el-table-column>
            <el-table-column v-for="(item, index) in customColumns" width="120" :key="index" :label="item.value">
                <template slot-scope="scope">
@@ -158,9 +165,9 @@
        data : {
            tableData : [],
            customColumns : [],
            achieveRulsList : [],
            shopList : [],
            achieveUsers : [],
            height:'calc(100vh - 240px)',
            years : [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021],
            months : ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"],
            days : [],
@@ -171,6 +178,7 @@
                timeRange : '',
                vipQueryKey : '',
                beaultId : '',
                achieveRuleId : '',
                shopId : ''
            },
            page : {
@@ -184,6 +192,7 @@
            this.queryCustomColumns();
            this.queryShops();
            this.queryAchieveUsers();
            this.getAchieveRule();
        },
        methods : {
            queryTableData () {
@@ -193,6 +202,7 @@
                let page = _this.page;
                let params = {};
                params.year=form.year;
                params.achieveRuleId=form.achieveRuleId;
                params.month=form.month;
                params.year=form.year;
                params.day=form.day;
@@ -206,6 +216,7 @@
                    params.beginTime = form.timeRange?moment(form.timeRange[0]).format("YYYY-MM-DD HH:mm"):'';
                    params.endTime = form.timeRange?moment(form.timeRange[1]).format("YYYY-MM-DD HH:mm"):'';
                }
                AjaxProxy.requst({
                    app: _this,
                    data: params,
@@ -227,6 +238,20 @@
                    }
                });
            },
            /**
             * 获取规则
             */
            getAchieveRule(){
                let _this = this;
                AjaxProxy.requst({
                    app: _this,
                    data: {pageNum:1,pageSize:1000},
                    url: basePath + "/admin/achieveRule/selectList",
                    callback: function (data) {
                        _this.achieveRulsList=data.rows;
                    }
                });
            },
            queryShops() {
                let _this = this;
                AjaxProxy.requst({
zq-erp/src/main/resources/templates/views/admin/hive/vip/question-form.html
@@ -41,7 +41,7 @@
                        th:data-url="@{/admin/dataDictionary/showDataDictionary}"
                        data-filed="name"
                        data-value="name"
                        data-param="{type:'字段类型'}"
                        data-param="{type:'问卷类型'}"
                        th:data-def="${obj?.type }"
                >
                    <option value="">--请选择字段类型--</option>
zq-erp/src/main/resources/templates/views/admin/hive/vip/question-list.html
@@ -45,7 +45,7 @@
                            th:data-url="@{/admin/dataDictionary/showDataDictionary}"
                            data-filed="name"
                            data-value="name"
                            data-param="{type:'字段类型'}"
                            data-param="{type:'问卷类型'}"
                    >
                        <option value="">请选择字段类型</option>
                    </select>
zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-form.html
@@ -175,9 +175,9 @@
                            </div>
                            <div class="form-group">
                                <label class="col-sm-2 control-label">美疗师<span class="text-danger">*</span></label>
                                <label class="col-sm-2 control-label">美疗师</label>
                                <div class="col-sm-4">
                                    <select class="form-control autoFull select2" dataType="*" nullmsg="请选择美疗师"
                                    <select class="form-control autoFull select2" dataType="*" nullmsg="请选择美疗师"  ignore="ignore"
                                            th:data-url="@{/admin/getShopStaffByRoleName?roleName=美疗师}"
                                            data-value="suId"
                                            data-filed="suName" th:data-def="${obj?.beatuyId}" name="beatuyId"
@@ -217,6 +217,19 @@
                                    <div class="Validform_checktip"></div>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-2 control-label">资金密码</label>
                                <div class="col-sm-4">
                                    <input autocomplete="off"   type="input" class="form-control" name="passWord"
                                           th:value="${obj?.passWord}" datatype="*0-500" ignore="ignore">
                                    <div class="Validform_checktip"></div>
                                </div>
                            </div>
                        </div>
                    </div>
            </div>
zq-erp/src/main/resources/templates/views/admin/index.html
@@ -85,11 +85,13 @@
                </div>
                <div class=" hidden-xs">
                    <div style="text-align:right;font-size: 14px; " >
                         <span style="line-height: 35px; display: inline-block; " th:utext="${session.userInfo.shopName}+' | '"></span>
                        <i class="fa fa-user" ></i>
                        <span style="line-height: 35px; color: #333; " th:utext="${session.userInfo.suName}">
                        <span style="line-height: 35px; color: #333; " th:utext="${session.userInfo.suName}+' | '">
                        </span>
                        <a style="line-height: 35px; color: #333; " target="_blank" href="https://www.yuque.com/books/share/70c39d28-6aac-4763-ae92-899ea5822a0d" >
                            <i class="fa fa-book" aria-hidden="true"></i>
                            帮助手册</a>
                    </div>
                </div>
zq-erp/src/main/resources/权限
@@ -1,22 +1,2 @@
<button  matrix:btn="orderClub-exportExcel"  onclick="exportExcel()" type="button" class="btn btn-info btn-sm"><i class="fa fa-download" ></i> 导出</button>
<button  matrix:btn="orderClub-del"  class="btn btn-danger btn-sm mr-5" onClick="cancelOrder()"  ><i class="fa fa-trash-o fa-fw"></i> 取消</button>
<script matrix:btn="orderClub-look"  >
    btns[0]='<li> <button class="btn btn-default btn-sm mr-5" onClick="openLook(\'VALUE\')"  title="查看详情"><i class="fa fa-eye fa-trash-o">查看</i></buttoun></li>'
</script>
<script matrix:btn="orderClub-payment"  >
    btns[1]='<li> <button class="btn btn-default btn-sm mr-5" onclick="openBj(\'VALUE\')" title=补交"><i class="fa fa-sign-in">补交</i></button></li>'
</script>
<script matrix:btn="orderClub-gathering"  >
    btns[2]='<li> <button class="btn btn-default btn-sm mr-5" onclick="openEdit(\'VALUE\')" title="收款"><i class="fa fa-edit">收款</i></button></li>'
</script>
<script matrix:btn="orderClub-edit"  >
    btns[3]='<li> <button class="btn btn-default btn-sm mr-5" onclick="updateTime(\'VALUE\')" title="修改时间"><i class="fa fa-edit">修改时间</i></button></li>'
</script>
 var btns=[];
 btns[0]="",btns[1]="",btns[2]="",btns[3]="",btns[4]="";
 btns[0].replace('VALUE',value);
select ID, NAME, TYPE, code from sys_data_dictionary where 1=1 and TYPE like CONCAT('%',?,'%')
 2021-06-26 16:36:49.487-[ TR = rGpKxAflK1Qt5O66 ] [ DEBUG ]-[ http-nio-8080-exec-3 ] ==> Parameters: 字段类型(String)
zq-erp/src/test/java/com/matrix/JyyTests.java
@@ -1,53 +1,30 @@
package com.matrix;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.matrix.component.redis.RedisClient;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.tools.LogUtil;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.bean.SysFunction;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao;
import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
import com.matrix.system.fenxiao.entity.ShopSalesmanOrder;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.SysOrderDao;
import com.matrix.system.hive.dao.SysOrderItemDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.hive.service.CodeService;
import com.matrix.system.hive.service.ShoppingGoodsService;
import com.matrix.system.hive.service.SysOrderService;
import com.matrix.system.hive.service.SysVipInfoService;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.service.imp.SysVipInfoServiceImpl;
import com.matrix.system.score.dao.ScoreVipDetailDao;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.bean.ShopOrder;
import com.matrix.system.shopXcx.bean.ShopOrderDetails;
import com.matrix.system.shopXcx.bean.ShopProduct;
import com.matrix.system.shopXcx.dao.ShopOrderDao;
import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao;
import com.matrix.system.shopXcx.dao.ShopOrderV2Dao;
import com.matrix.system.shopXcx.dao.ShopSkuDao;
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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 测试类示例
@@ -81,6 +58,23 @@
    @Autowired
    OrderDingDingNoticeTask orderDingDingNoticeTask;
    @Autowired
    MoneyCardUseDao moneyCardUseDao;
    @Test
    public void finxMoneyCardUserId() throws IOException {
        long id=2531;
        final List<MoneyCardUse> moneyCardUses = moneyCardUseDao.selectList(new LambdaQueryWrapper<MoneyCardUse>().gt(MoneyCardUse::getId, 2531));
        for (MoneyCardUse moneyCardUs : moneyCardUses) {
            moneyCardUseDao.updateId(moneyCardUs.getId(),++id);
        }
        System.out.println(moneyCardUses.size());
    }
    @Test
    @Rollback
    public void testNoticeTask() throws IOException {
zq-erp/src/test/java/com/matrix/TcProjTest.java
@@ -1,15 +1,12 @@
package com.matrix;
import cn.hutool.core.collection.CollUtil;
import com.matrix.system.hive.bean.SysProjUse;
import com.matrix.system.hive.dao.AchieveNewDao;
import com.matrix.system.hive.dao.SysProjUseDao;
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.util.List;
/**
 * @author wzy
@@ -23,11 +20,14 @@
    @Autowired
    private SysProjUseDao sysProjUseDao;
    @Autowired
    AchieveNewDao achieveNewDao;
    @Test
    public void tcProjTest() {
//        List<SysProjUse> projUses = sysProjUseDao.selectTaoCanListWithProj();
//        if (CollUtil.isNotEmpty(projUses)) {
//
//        }
        //achieveNewDao
    }
}