From 870960399814cff73d1e6ef93fccb11bede8d464 Mon Sep 17 00:00:00 2001
From: jyy <jyy>
Date: Sat, 10 Jul 2021 09:04:39 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger

---
 zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java                  |    2 
 zq-erp/src/main/resources/templates/views/admin/index.html                              |    6 
 zq-erp/src/main/java/com/matrix/system/common/interceptor/UserLoginInterceptor.java     |    3 
 zq-erp/src/main/resources/templates/views/admin/hive/vip/question-list.html             |    2 
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html               |   11 
 zq-erp/pom.xml                                                                          |    4 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java    |   20 
 zq-erp/src/main/resources/mybatis/mapper/hive/QuestionDao.xml                           |    5 
 zq-erp/src/main/java/com/matrix/system/job/InvalidTimeJob.java                          |   37 
 zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java                    |    2 
 zq-erp/src/main/java/com/matrix/system/app/vo/ShoppingGoodsDetailVo.java                |  154 -----
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java   |   10 
 zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpOrderController.java           |   31 
 zq-erp/src/main/resources/config/mdPrd/application.properties                           |   70 ++
 zq-erp/src/main/resources/config/system.properties                                      |    3 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysWorktimeServiceImpl.java     |   25 
 zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java         |    4 
 zq-erp/src/main/resources/config/mdPrd/config.json                                      |   94 +++
 zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml                         |    3 
 zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java                      |    2 
 zq-erp/src/main/resources/权限                                                            |   24 
 zq-erp/src/test/java/com/matrix/TcProjTest.java                                         |   16 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java      |  150 ++--
 zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml                      |    4 
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-order.html       |    2 
 zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java          |   57 +
 zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjUseFlow.java                    |  112 ----
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java              |    1 
 zq-erp/src/main/resources/templates/views/admin/hive/vip/question-form.html             |    2 
 zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java                               |   12 
 zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java               |  178 +++++-
 zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java                   |    2 
 zq-erp/src/main/resources/config/application.properties                                 |   14 
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-service.html     |    2 
 zq-erp/src/main/java/com/matrix/system/hive/service/QuestionSerivce.java                |    2 
 zq-erp/src/main/java/com/matrix/system/hive/action/CardLevelController.java             |    2 
 zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml                       |    9 
 zq-erp/src/main/java/com/matrix/system/hive/dao/QuestionDao.java                        |    2 
 zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java                     |    7 
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yypb-form.html         |    4 
 zq-erp/src/main/java/com/matrix/system/hive/action/CustomerController.java              |    3 
 zq-erp/src/main/resources/templates/views/admin/hive-erp/order/orderXq-form.html        |    2 
 zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java    |   40 +
 zq-erp/src/main/java/findC.java                                                         |   50 +
 zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml                         |   12 
 zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java                  |    8 
 zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java                        |    9 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java        |   43 +
 zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml                       |    9 
 zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java                    |    8 
 zq-erp/src/test/java/com/matrix/JyyTests.java                                           |   54 -
 zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java            |    1 
 zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java           |    1 
 zq-erp/src/main/resources/config/mdPrd/system.properties                                |  104 +++
 zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html |   75 +
 zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html     |   81 +-
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/QuestionServiceImpl.java        |    4 
 zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java                 |    3 
 zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-form.html              |   17 
 59 files changed, 971 insertions(+), 643 deletions(-)

diff --git a/zq-erp/pom.xml b/zq-erp/pom.xml
index ed1dc1f..8f383be 100644
--- a/zq-erp/pom.xml
+++ b/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>
diff --git a/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java b/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
index 03cb319..54801c7 100644
--- a/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
+++ b/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")
diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
index d2730e9..6090035 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
+++ b/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);
     }
 
 
 
+
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
index 00c4211..73fe8c5 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
+++ b/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());
diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java
index bac7d9e..d9987fd 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java
+++ b/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);
diff --git a/zq-erp/src/main/java/com/matrix/system/app/vo/ShoppingGoodsDetailVo.java b/zq-erp/src/main/java/com/matrix/system/app/vo/ShoppingGoodsDetailVo.java
index 5ef3256..567c6b9 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/vo/ShoppingGoodsDetailVo.java
+++ b/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;
-    }
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java b/zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java
index 70b7250..4cdafd3 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/actions/AdminAction.java
+++ b/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) {
diff --git a/zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java b/zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java
index 4329524..db8c386 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/authority/DefaultAuthorityManager.java
+++ b/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));
         }
 
 
diff --git a/zq-erp/src/main/java/com/matrix/system/common/interceptor/UserLoginInterceptor.java b/zq-erp/src/main/java/com/matrix/system/common/interceptor/UserLoginInterceptor.java
index e1e5bb3..9603548 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/interceptor/UserLoginInterceptor.java
+++ b/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);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/CardLevelController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/CardLevelController.java
index b92149f..54729d2 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/CardLevelController.java
+++ b/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);
 	}
 	/**
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/CustomerController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/CustomerController.java
index 1b8c0b4..80835bf 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/CustomerController.java
+++ b/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";
 		
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
index acb73b6..c19da86 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
+++ b/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, "冻结成功");
         }
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java
index faed6f0..77dc742 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java
+++ b/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);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java
index aa8f6b4..a1c45d6 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/VipInfoController.java
+++ b/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));
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java
index ff883d8..8f498a0 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java
+++ b/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;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
index 9824694..789b879 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
+++ b/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;
     }
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjUseFlow.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjUseFlow.java
index 932fffb..5c23ed7 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjUseFlow.java
+++ b/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;
-    }
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java
index d0d0ad3..4f422ae 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseDao.java
+++ b/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);
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/QuestionDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/QuestionDao.java
index 19a388a..b102348 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/QuestionDao.java
+++ b/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);
 	
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java
index c846f0d..cc06823 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java
+++ b/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();
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java
index 1abccec..b8793dc 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java
+++ b/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);
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java
index cd06925..6eac36c 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java
+++ b/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);
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/QuestionSerivce.java b/zq-erp/src/main/java/com/matrix/system/hive/service/QuestionSerivce.java
index 44b94b7..c986c81 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/QuestionSerivce.java
+++ b/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);
 
    	
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
index 414e544..5eb09f1 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
+++ b/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() + "设置有效");
+
     }
 
     //设置为失效
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/QuestionServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/QuestionServiceImpl.java
index b37bbfd..5cb357a 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/QuestionServiceImpl.java
+++ b/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;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
index 299361c..09acbd5 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
+++ b/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());
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 1e80f7f..e3e1fa1 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/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());
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
index d113cc4..9e78b10 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
+++ b/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, "操作成功");
     }
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysWorktimeServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysWorktimeServiceImpl.java
index 77ccadb..793ae96 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysWorktimeServiceImpl.java
+++ b/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;
 		}
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpOrderController.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpOrderController.java
index ed53c67..49064d1 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpOrderController.java
+++ b/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";
     }
 
 
+
     /**
      * 取消订单
      */
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java
index a412f07..bc1e2a2 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpVipInfoController.java
+++ b/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);
diff --git a/zq-erp/src/main/java/com/matrix/system/job/InvalidTimeJob.java b/zq-erp/src/main/java/com/matrix/system/job/InvalidTimeJob.java
index ae6680e..9a71f5b 100644
--- a/zq-erp/src/main/java/com/matrix/system/job/InvalidTimeJob.java
+++ b/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();
+    }
+
+
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java
index 41df41b..dbc9272 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java
+++ b/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);
 
diff --git a/zq-erp/src/main/java/findC.java b/zq-erp/src/main/java/findC.java
new file mode 100644
index 0000000..4fccf6e
--- /dev/null
+++ b/zq-erp/src/main/java/findC.java
@@ -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("文件不存在!");
+        }
+    }
+
+
+
+}
diff --git a/zq-erp/src/main/resources/config/application.properties b/zq-erp/src/main/resources/config/application.properties
index 5e7f6d5..66e9789 100644
--- a/zq-erp/src/main/resources/config/application.properties
+++ b/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
diff --git a/zq-erp/src/main/resources/config/mdPrd/application.properties b/zq-erp/src/main/resources/config/mdPrd/application.properties
new file mode 100644
index 0000000..a5eb132
--- /dev/null
+++ b/zq-erp/src/main/resources/config/mdPrd/application.properties
@@ -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
diff --git a/zq-erp/src/main/resources/config/mdPrd/config.json b/zq-erp/src/main/resources/config/mdPrd/config.json
new file mode 100644
index 0000000..1b5f059
--- /dev/null
+++ b/zq-erp/src/main/resources/config/mdPrd/config.json
@@ -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"
+    ] /* 列出的文件类型 */
+
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/config/mdPrd/system.properties b/zq-erp/src/main/resources/config/mdPrd/system.properties
new file mode 100644
index 0000000..4ac1ef2
--- /dev/null
+++ b/zq-erp/src/main/resources/config/mdPrd/system.properties
@@ -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/
diff --git a/zq-erp/src/main/resources/config/system.properties b/zq-erp/src/main/resources/config/system.properties
index 36cb7f1..42c4024 100644
--- a/zq-erp/src/main/resources/config/system.properties
+++ b/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
+
 
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
index 8d89990..2721f19 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
+++ b/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>
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml
index 493f7d5..0d608c5 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseDao.xml
+++ b/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>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/QuestionDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/QuestionDao.xml
index 9d9e344..ea70d23 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/QuestionDao.xml
+++ b/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>
 	
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
index d0ff42f..1277ab1 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
+++ b/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查询 -->
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
index 6c658ad..a3b0cd3 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
+++ b/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>
 
 
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
index d49243d..8e39c76 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
+++ b/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">
 
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/order/orderXq-form.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/order/orderXq-form.html
index f066a6d..185869e 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/order/orderXq-form.html
+++ b/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;
                             }
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html
index 5cd963f..01cda5f 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html
+++ b/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({
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-order.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-order.html
index c902c92..c5284e5 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-order.html
+++ b/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>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-service.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-service.html
index d40c8cf..d549df3 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/print-service.html
+++ b/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>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
index cd511b3..7aa8771 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
+++ b/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) {
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yypb-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yypb-form.html
index c549076..93b3a8e 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/yypb-form.html
+++ b/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"
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html
index 066b4cb..01cda5f 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html
+++ b/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({
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/vip/question-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/vip/question-form.html
index acad6d3..d556c5f 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/vip/question-form.html
+++ b/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>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/vip/question-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/vip/question-list.html
index 0ee705e..d57d3a0 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/vip/question-list.html
+++ b/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>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-form.html
index 2d7895b..c6e1c38 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/vip/vipInfo-form.html
+++ b/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>
diff --git a/zq-erp/src/main/resources/templates/views/admin/index.html b/zq-erp/src/main/resources/templates/views/admin/index.html
index f3bb64a..219d21a 100644
--- a/zq-erp/src/main/resources/templates/views/admin/index.html
+++ b/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>
diff --git "a/zq-erp/src/main/resources/\346\235\203\351\231\220" "b/zq-erp/src/main/resources/\346\235\203\351\231\220"
index 2ae0118..2b38d8a 100644
--- "a/zq-erp/src/main/resources/\346\235\203\351\231\220"
+++ "b/zq-erp/src/main/resources/\346\235\203\351\231\220"
@@ -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);
\ No newline at end of file
+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)
\ No newline at end of file
diff --git a/zq-erp/src/test/java/com/matrix/JyyTests.java b/zq-erp/src/test/java/com/matrix/JyyTests.java
index b955d11..741ebdc 100644
--- a/zq-erp/src/test/java/com/matrix/JyyTests.java
+++ b/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 {
diff --git a/zq-erp/src/test/java/com/matrix/TcProjTest.java b/zq-erp/src/test/java/com/matrix/TcProjTest.java
index a6c485c..4b5e0ba 100644
--- a/zq-erp/src/test/java/com/matrix/TcProjTest.java
+++ b/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
+
+
+
     }
 }

--
Gitblit v1.9.1