From 63a3c4db205ffd06325cfc6a6bebcf7d62eba65e Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 30 Nov 2021 17:20:06 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger

---
 zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml                           |    6 
 zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java                        |    2 
 zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java                                 |   12 
 zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java          |  548 +++++++++++++++++++----------------
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html                      |   12 
 zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js                                   |    4 
 zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java                        |    3 
 zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java                               |   12 
 zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java                       |    1 
 zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml                                |    4 
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html |  126 ++++++++
 zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml                          |   19 +
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html   |    7 
 zq-erp/src/main/java/com/matrix/system/hive/action/ProjServiceController.java                  |   31 +
 zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java                       |   34 ++
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html         |    2 
 zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java                         |   69 ++++
 17 files changed, 619 insertions(+), 273 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java
index c9b6e8b..6fb3473 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java
@@ -5,6 +5,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -25,6 +26,9 @@
 
     @ApiModelProperty(value = "套餐来源,转让,购买")
     private String source;
+
+    @ApiModelProperty(value = "划扣金额")
+    private BigDecimal price;
 
     @ApiModelProperty(value = "时长")
     private Integer timeLength;
@@ -149,4 +153,12 @@
     public void setBalance(Double balance) {
         this.balance = balance;
     }
+
+    public BigDecimal getPrice() {
+        return price;
+    }
+
+    public void setPrice(BigDecimal price) {
+        this.price = price;
+    }
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java
index 67df2c9..fb43859 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java
@@ -6,6 +6,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -36,6 +37,9 @@
 
     @ApiModelProperty(value = "若套餐为任选套餐 则判断是否无限次 Y是 N否")
     private String isInfinite;
+
+    @ApiModelProperty(value = "来源")
+    private String source;
 
     @ApiModelProperty(value = "套餐内产品")
     List<ServiceProjVo> proj;
@@ -150,4 +154,12 @@
     public void setStatus(String status) {
         this.status = status;
     }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java b/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java
index 0d9a4cb..c72524b 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/dao/SysRolePwoerFnDao.java
@@ -41,4 +41,5 @@
 
 	public SysRolePwoerFn selectForUpdate(Long rpfId);
 
+	int deleteByFns(@Param("companyId") Long comId, @Param("list") List<String> deletedFn);
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java
index da1be03..bb496c6 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysCompanyServiceImpl.java
@@ -1,250 +1,300 @@
-package com.matrix.system.common.service.impl;
-
-import com.matrix.core.constance.MatrixConstance;
-import com.matrix.core.constance.SystemErrorCode;
-import com.matrix.core.exception.GlobleException;
-import com.matrix.core.pojo.PaginationVO;
-import com.matrix.core.tools.ModelUtils;
-import com.matrix.core.tools.StringUtils;
-import com.matrix.core.tools.WebUtil;
-import com.matrix.system.common.bean.*;
-import com.matrix.system.common.dao.SysCompanyDao;
-import com.matrix.system.common.dao.SysRoleDao;
-import com.matrix.system.common.dao.SysRolePwoerFnDao;
-import com.matrix.system.common.service.SysCompanyService;
-import com.matrix.system.hive.bean.SysShopInfo;
-import com.matrix.system.hive.bean.Warehouse;
-import com.matrix.system.hive.dao.SysShopInfoDao;
-import com.matrix.system.hive.dao.WarehouseDao;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 公司管理
- * 
- * @author JIANGYOUYAO
- * @email 935090232@qq.com
- * @date Dec 11, 2017
- */
-@Service
-public class SysCompanyServiceImpl implements SysCompanyService {
-
-	@Autowired
-	private SysCompanyDao sysCompanyDao;
-	@Autowired
-	private SysRoleDao sysRoleDao;
-	@Autowired
-	private SysRolePwoerFnDao rolePwoerFnDao;
-
-	@Autowired
-	private SysShopInfoDao shopInfoDao;
-
-
-	@Autowired
-	private InitCustomerDataDictionaryService initCustomerDataDictionaryService;
-
-
-	@Autowired
-	private InitShoppingGoodsCategoryService initShoppingGoodsCategoryService;
-
-
-	@Autowired
-	private InitRolePowerService initRolePowerService;
-
-	@Autowired
-	private InitGoodsTypeService initGoodsTypeService;
-
-	@Autowired
-	private InitShopProductCateService initShopProductCateService;
-
-	@Autowired
-	private InitBusParameterSettingService initBusParameterSettingService;
-
-
-	@Transactional
-	@Override
-	public int add(SysCompany sysCompany) {
-		SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-		sysCompany.setCreateBy(user.getSuName());
-		sysCompany.setUpdateBy(user.getSuName());
-		int i= sysCompanyDao.insert(sysCompany);
-		SysShopInfo zbShop=	addZbShop(sysCompany);
-		initCustomerDataDictionaryService.initCustomerDataDictionary(sysCompany);
-		initShoppingGoodsCategoryService.initShoppingGoodsCategory(sysCompany,zbShop);
-		initRolePowerService.initRolePower(sysCompany);
-		initGoodsTypeService.initRolePower(sysCompany);
-		initShopProductCateService.initShopProductCate(sysCompany);
-		initBusParameterSettingService.initBusParameterSetting(sysCompany);
-		initBusParameterSettingService.initBusParameterFenxiaoSetting(sysCompany);
-
-		return i;
-
-	}
-
-
-	@Autowired
-	private WarehouseDao warehouseDao;
-	/**
-	 * 为新公司创建一个总部
-	 * @param sysCompany
-	 */
-	private SysShopInfo addZbShop(SysCompany sysCompany) {
-		SysShopInfo zbShopInfo=new SysShopInfo();
-		zbShopInfo.setShopType(SysShopInfo.SHOP_TYPE_ZONGBU);
-		zbShopInfo.setShopName(sysCompany.getComName()+"(总部)");
-		zbShopInfo.setCompanyId(sysCompany.getComId());
-		zbShopInfo.setShopTel(sysCompany.getComTel());
-		zbShopInfo.setShopShortName("总部");
-		zbShopInfo.setIsOpenNet(SysShopInfo.CLOSE_NET);
-		zbShopInfo.setShopNo(StringUtils.getRandomString(10));
-		shopInfoDao.insert(zbShopInfo);
-
-		//新增一个总部仓库
-		Warehouse warehouse=new Warehouse();
-		warehouse.setCompanyId(sysCompany.getComId());
-		warehouse.setName("总部仓库");
-		warehouse.setShopId(zbShopInfo.getId());
-		warehouse.setSort("1");
-		warehouseDao.insert(warehouse);
-		return  zbShopInfo;
-	}
-
-	@Transactional(rollbackFor = Exception.class)
-	@Override
-	public int modifyByMap(SysCompany oldSysCompany, SysCompany newSysCompany) {
-		SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-		newSysCompany.setUpdateBy(user.getSuName());
-
-		updatePower(newSysCompany);
-		Map<String, Object> modifyMap = null;
-		try {
-			if (!ModelUtils.isModified(oldSysCompany, newSysCompany)) {
-				return MatrixConstance.DML_SUCCESSS;
-			}
-
-			modifyMap = ModelUtils.comparePojo2Map(oldSysCompany, newSysCompany);
-		} catch (Exception e) {
-			throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newSysCompany.getComName());
-		}
-		if (modifyMap.size() > 0) {
-			modifyMap.put("comId", oldSysCompany.getComId());
-			return sysCompanyDao.updateByMap(modifyMap);
-		}
-		return MatrixConstance.DML_SUCCESSS;
-	}
-
-	/**
-	 * 更新公司员工权限
-	 * 
-	 * @author JIANGYOUYAO
-	 * @email 935090232@qq.com
-	 * @date 2017年12月5日
-	 * @param newSysCompany
-	 */
-	private void updatePower(SysCompany newSysCompany) {
-		List<String> oldFunctions = null;
-		String functions = sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions();
-		if (functions == null || functions.equals("")) {
-			oldFunctions = new ArrayList<>();
-		} else {
-			oldFunctions = StringUtils
-					.strToCollToString(sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions(), ",");
-		}
-		List<String> newFunctions = new ArrayList<>();
-		if (StringUtils.isNotBlank(newSysCompany.getComFunctions())) {
-			newFunctions = StringUtils.strToCollToString(newSysCompany.getComFunctions(), ",");
-		}
-
-		for (String old : oldFunctions) {
-			// 如果新权限中不包含这个老的功能,则要更新改企业下所有的角色权限
-			if (!newFunctions.contains(old)) {
-				SysRole role = new SysRole();
-				role.setCompanyId(newSysCompany.getComId());
-				List<SysRole> roles = sysRoleDao.selectByModel(role);
-				// 获取该公司下所有的权限信息
-				List<SysRolePwoerFn> compalyRolePwoer = new ArrayList<>();
-				for (SysRole tempRole : roles) {
-					SysRolePwoerFn r = new SysRolePwoerFn();
-					r.setRoleId(tempRole.getRoleId());
-					compalyRolePwoer.addAll(rolePwoerFnDao.selectByModel(r));
-				}
-				// 记录要删除的id
-				List<String> delRolePwoer = new ArrayList<>();
-				for (SysRolePwoerFn rolePwoer : compalyRolePwoer) {
-					// 如果有一个老权限则删除这个权限
-					if (rolePwoer.getFnId() != null && rolePwoer.getFnId().equals(old)) {
-						delRolePwoer.add(rolePwoer.getRpfId()+"");
-					}
-				}
-				// 如果获取到了就删除
-				if (!delRolePwoer.isEmpty()) {
-					rolePwoerFnDao.deleteByIds(delRolePwoer);
-				}
-			}
-		}
-	}
-
-	@Override
-	public int modifyByModel(SysCompany sysCompany) {
-
-		return sysCompanyDao.updateByModel(sysCompany);
-
-	}
-
-	@Override
-	public int remove(List<String> list) {
-
-		return sysCompanyDao.deleteByIds(list);
-
-	}
-
-	@Override
-	public int removeById(String comId) {
-
-		return sysCompanyDao.deleteById(Long.parseLong(comId));
-
-	}
-
-	@Override
-	public int removeByModel(SysCompany sysCompany) {
-
-		return sysCompanyDao.deleteByModel(sysCompany);
-
-	}
-
-	@Override
-	public List<SysCompany> findInPage(SysCompany sysCompany, PaginationVO pageVo) {
-
-		return sysCompanyDao.selectInPage(sysCompany, pageVo);
-
-	}
-
-	@Override
-	public List<SysCompany> findByModel(SysCompany sysCompany) {
-
-		return sysCompanyDao.selectByModel(sysCompany);
-
-	}
-
-	@Override
-	public int findTotal(SysCompany sysCompany) {
-
-		return sysCompanyDao.selectTotalRecord(sysCompany);
-
-	}
-
-	@Override
-	public SysCompany findById(String comId) {
-
-		return sysCompanyDao.selectById(Long.parseLong(comId));
-
-	}
-
-
-
+package com.matrix.system.common.service.impl;
+
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.json.JSONUtil;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.constance.SystemErrorCode;
+import com.matrix.core.exception.GlobleException;
+import com.matrix.core.pojo.PaginationVO;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.ModelUtils;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.app.authority.AppAuthorityManager;
+import com.matrix.system.common.authority.DefaultAuthorityManager;
+import com.matrix.system.common.bean.SysCompany;
+import com.matrix.system.common.bean.SysRole;
+import com.matrix.system.common.bean.SysRolePwoerFn;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.constance.AppConstance;
+import com.matrix.system.common.dao.SysCompanyDao;
+import com.matrix.system.common.dao.SysRoleDao;
+import com.matrix.system.common.dao.SysRolePwoerFnDao;
+import com.matrix.system.common.init.LocalCache;
+import com.matrix.system.common.service.SysCompanyService;
+import com.matrix.system.common.service.SysUsersService;
+import com.matrix.system.hive.bean.SysShopInfo;
+import com.matrix.system.hive.bean.Warehouse;
+import com.matrix.system.hive.dao.SysShopInfoDao;
+import com.matrix.system.hive.dao.WarehouseDao;
+import com.matrix.system.hive.plugin.util.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 公司管理
+ *
+ * @author JIANGYOUYAO
+ * @email 935090232@qq.com
+ * @date Dec 11, 2017
+ */
+@Service
+public class SysCompanyServiceImpl implements SysCompanyService {
+
+    @Autowired
+    private SysCompanyDao sysCompanyDao;
+    @Autowired
+    private SysRoleDao sysRoleDao;
+    @Autowired
+    private SysRolePwoerFnDao rolePwoerFnDao;
+
+    @Autowired
+    private SysShopInfoDao shopInfoDao;
+
+
+    @Autowired
+    private InitCustomerDataDictionaryService initCustomerDataDictionaryService;
+
+
+    @Autowired
+    private InitShoppingGoodsCategoryService initShoppingGoodsCategoryService;
+
+
+    @Autowired
+    private InitRolePowerService initRolePowerService;
+
+    @Autowired
+    private InitGoodsTypeService initGoodsTypeService;
+
+    @Autowired
+    private InitShopProductCateService initShopProductCateService;
+
+    @Autowired
+    private InitBusParameterSettingService initBusParameterSettingService;
+
+
+    @Transactional
+    @Override
+    public int add(SysCompany sysCompany) {
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        sysCompany.setCreateBy(user.getSuName());
+        sysCompany.setUpdateBy(user.getSuName());
+        int i = sysCompanyDao.insert(sysCompany);
+        SysShopInfo zbShop = addZbShop(sysCompany);
+        initCustomerDataDictionaryService.initCustomerDataDictionary(sysCompany);
+        initShoppingGoodsCategoryService.initShoppingGoodsCategory(sysCompany, zbShop);
+        initRolePowerService.initRolePower(sysCompany);
+        initGoodsTypeService.initRolePower(sysCompany);
+        initShopProductCateService.initShopProductCate(sysCompany);
+        initBusParameterSettingService.initBusParameterSetting(sysCompany);
+        initBusParameterSettingService.initBusParameterFenxiaoSetting(sysCompany);
+
+        return i;
+
+    }
+
+
+    @Autowired
+    private WarehouseDao warehouseDao;
+
+    /**
+     * 为新公司创建一个总部
+     *
+     * @param sysCompany
+     */
+    private SysShopInfo addZbShop(SysCompany sysCompany) {
+        SysShopInfo zbShopInfo = new SysShopInfo();
+        zbShopInfo.setShopType(SysShopInfo.SHOP_TYPE_ZONGBU);
+        zbShopInfo.setShopName(sysCompany.getComName() + "(总部)");
+        zbShopInfo.setCompanyId(sysCompany.getComId());
+        zbShopInfo.setShopTel(sysCompany.getComTel());
+        zbShopInfo.setShopShortName("总部");
+        zbShopInfo.setIsOpenNet(SysShopInfo.CLOSE_NET);
+        zbShopInfo.setShopNo(StringUtils.getRandomString(10));
+        shopInfoDao.insert(zbShopInfo);
+
+        //新增一个总部仓库
+        Warehouse warehouse = new Warehouse();
+        warehouse.setCompanyId(sysCompany.getComId());
+        warehouse.setName("总部仓库");
+        warehouse.setShopId(zbShopInfo.getId());
+        warehouse.setSort("1");
+        warehouseDao.insert(warehouse);
+        return zbShopInfo;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public int modifyByMap(SysCompany oldSysCompany, SysCompany newSysCompany) {
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        newSysCompany.setUpdateBy(user.getSuName());
+
+        updatePower(newSysCompany);
+        Map<String, Object> modifyMap = null;
+        try {
+            if (!ModelUtils.isModified(oldSysCompany, newSysCompany)) {
+                return MatrixConstance.DML_SUCCESSS;
+            }
+
+            modifyMap = ModelUtils.comparePojo2Map(oldSysCompany, newSysCompany);
+        } catch (Exception e) {
+            throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newSysCompany.getComName());
+        }
+        if (modifyMap.size() > 0) {
+            modifyMap.put("comId", oldSysCompany.getComId());
+            return sysCompanyDao.updateByMap(modifyMap);
+        }
+        return MatrixConstance.DML_SUCCESSS;
+    }
+
+    /**
+     * 更新公司员工权限
+     *
+     * @param newSysCompany
+     * @author JIANGYOUYAO
+     * @email 935090232@qq.com
+     * @date 2017年12月5日
+     */
+    private void updatePower(SysCompany newSysCompany) {
+        List<String> oldFunctions = null;
+        String functions = sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions();
+        if (functions == null || functions.equals("")) {
+            oldFunctions = new ArrayList<>();
+        } else {
+            oldFunctions = StringUtils
+                    .strToCollToString(sysCompanyDao.selectById(newSysCompany.getComId()).getComFunctions(), ",");
+        }
+        List<String> newFunctions = new ArrayList<>();
+        if (StringUtils.isNotBlank(newSysCompany.getComFunctions())) {
+            newFunctions = StringUtils.strToCollToString(newSysCompany.getComFunctions(), ",");
+        }
+
+        Collections.sort(newFunctions);
+        Collections.sort(oldFunctions);
+        if (Objects.equals(JSONUtil.toJsonStr(newFunctions), JSONUtil.toJsonStr(oldFunctions))) {
+            //没有更新的权限
+            return;
+        }
+
+        List<String> finalNewFunctions = newFunctions;
+        List<String> deletedFn = oldFunctions.stream().map(old -> {
+            if (finalNewFunctions.stream().noneMatch(newFn -> Objects.equals(newFn, old))) {
+                return old;
+            } else {
+                return "";
+            }
+        }).filter(item->StringUtils.isNotBlank(item)).collect(Collectors.toList());
+
+        if(CollectionUtils.isNotEmpty(deletedFn)){
+            rolePwoerFnDao.deleteByFns(newSysCompany.getComId(),deletedFn);
+            //有更新权限清空缓存
+            SysUsers sysUsers = new SysUsers();
+            sysUsers.setCompanyId(newSysCompany.getComId());
+            sysUsers.setSuValid(AppConstance.RECORD_VALID);
+            List<SysUsers> users = sysUsersService.findByModel(sysUsers);
+            users.forEach(user -> {
+                String userKey = SecureUtil.md5(user.getSuId() + "");
+                LocalCache.remove(DefaultAuthorityManager.USER_POWER_REDISKEY_PC + userKey);
+                LocalCache.remove(AppAuthorityManager.USER_POWER_REDISKEY_APP + userKey);
+            });
+        }
+
+
+
+/*        for (String old : oldFunctions) {
+            // 如果新权限中不包含这个老的功能,则要更新改企业下所有的角色权限
+            if (!newFunctions.contains(old)) {
+                SysRole role = new SysRole();
+                role.setCompanyId(newSysCompany.getComId());
+                List<SysRole> roles = sysRoleDao.selectByModel(role);
+                // 获取该公司下所有的权限信息
+                List<SysRolePwoerFn> compalyRolePwoer = new ArrayList<>();
+                for (SysRole tempRole : roles) {
+                    SysRolePwoerFn r = new SysRolePwoerFn();
+                    r.setRoleId(tempRole.getRoleId());
+                    compalyRolePwoer.addAll(rolePwoerFnDao.selectByModel(r));
+                }
+                // 记录要删除的id
+                List<String> delRolePwoer = new ArrayList<>();
+                for (SysRolePwoerFn rolePwoer : compalyRolePwoer) {
+                    // 如果有一个老权限则删除这个权限
+                    if (rolePwoer.getFnId() != null && rolePwoer.getFnId().equals(old)) {
+                        delRolePwoer.add(rolePwoer.getRpfId() + "");
+                    }
+                }
+                // 如果获取到了就删除
+                if (!delRolePwoer.isEmpty()) {
+                    rolePwoerFnDao.deleteByIds(delRolePwoer);
+                }
+            }
+        }*/
+
+
+
+    }
+
+    @Autowired
+    SysUsersService sysUsersService;
+
+    @Override
+    public int modifyByModel(SysCompany sysCompany) {
+
+        return sysCompanyDao.updateByModel(sysCompany);
+
+    }
+
+    @Override
+    public int remove(List<String> list) {
+
+        return sysCompanyDao.deleteByIds(list);
+
+    }
+
+    @Override
+    public int removeById(String comId) {
+
+        return sysCompanyDao.deleteById(Long.parseLong(comId));
+
+    }
+
+    @Override
+    public int removeByModel(SysCompany sysCompany) {
+
+        return sysCompanyDao.deleteByModel(sysCompany);
+
+    }
+
+    @Override
+    public List<SysCompany> findInPage(SysCompany sysCompany, PaginationVO pageVo) {
+
+        return sysCompanyDao.selectInPage(sysCompany, pageVo);
+
+    }
+
+    @Override
+    public List<SysCompany> findByModel(SysCompany sysCompany) {
+
+        return sysCompanyDao.selectByModel(sysCompany);
+
+    }
+
+    @Override
+    public int findTotal(SysCompany sysCompany) {
+
+        return sysCompanyDao.selectTotalRecord(sysCompany);
+
+    }
+
+    @Override
+    public SysCompany findById(String comId) {
+
+        return sysCompanyDao.selectById(Long.parseLong(comId));
+
+    }
+
+
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
index a60adcd..68cd634 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
@@ -239,7 +239,7 @@
     public @ResponseBody
     ModelAndView printOrder(SysOrder order) throws GlobleException {
         ModelAndView mv = new ModelAndView("admin/hive/beautySalon/print-order");
-        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+        SysUsers user = getMe();
         String comRegisterCode = companyDao.selectById(user.getCompanyId()).getComRegisterCode();
         if (StringUtils.isNotBlank(comRegisterCode)) {
             mv.addObject("page", comRegisterCode);
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 86db596..f2e5c36 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
@@ -1,5 +1,6 @@
 package com.matrix.system.hive.action;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.matrix.core.anotations.RemoveRequestToken;
@@ -26,17 +27,16 @@
 import com.matrix.system.constance.Dictionary;
 import com.matrix.system.hive.bean.*;
 import com.matrix.system.hive.dao.*;
+import com.matrix.system.hive.dto.ServiceOrderTimeDto;
 import com.matrix.system.hive.service.*;
+import com.matrix.system.hive.vo.ServiceOrderInfoVo;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
@@ -143,6 +143,20 @@
 
         result.setStatus(AjaxResult.STATUS_SUCCESS);
         return result;
+    }
+
+    /**
+     * 根据id查询服务单简单信息
+     */
+    @RequestMapping(value = "/findServiceOrderInfoVo/{id}")
+    public @ResponseBody
+    AjaxResult findServiceOrderInfoVo(@PathVariable Long id) {
+        // 获取服务单信息
+        SysProjServices projServices = sysProjServicesService.findById(id);
+
+        ServiceOrderInfoVo serviceOrderInfoVo= BeanUtil.copyProperties(projServices,ServiceOrderInfoVo.class);
+
+        return AjaxResult.buildSuccessInstance(serviceOrderInfoVo);
     }
 
 
@@ -429,13 +443,12 @@
      */
     @RequestMapping(value = "/updateOrderTime")
     public @ResponseBody
-    AjaxResult updateOrderTime(SysProjServices serviceQuery) {
-        SysProjServices services = sysProjServicesDao.selectById(serviceQuery.getId());
-        sysProjServicesDao.updateOrderTime(serviceQuery.getConsumeTime(), serviceQuery.getId());
+    AjaxResult updateOrderTime(@RequestBody  ServiceOrderTimeDto serviceOrderTimeDto) {
+        sysProjServicesDao.updateOrderTime(serviceOrderTimeDto);
         // 更新业绩时间
         AchieveNew achieveNew = new AchieveNew();
-        achieveNew.setServiceOrderId(serviceQuery.getId());
-        achieveNew.setDatatime(serviceQuery.getConsumeTime());
+        achieveNew.setServiceOrderId(serviceOrderTimeDto.getId());
+        achieveNew.setDatatime(serviceOrderTimeDto.getConsumeTime());
         achieveNewService.modifyAchieveTime(achieveNew);
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "修改成功");
     }
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java
index 4266fb8..588612c 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java
@@ -4,6 +4,7 @@
 import com.matrix.system.app.dto.ServiceOrderListDto;
 import com.matrix.system.app.vo.ServiceOrderListVo;
 import com.matrix.system.hive.bean.SysProjServices;
+import com.matrix.system.hive.dto.ServiceOrderTimeDto;
 import com.matrix.system.shopXcx.api.dto.ErpServiceOrderListDto;
 import com.matrix.system.shopXcx.api.vo.ErpServiceOrderListVo;
 import org.apache.ibatis.annotations.Param;
@@ -36,7 +37,7 @@
 
 	public SysProjServices  selectById(Long id);
 
-	public void updateOrderTime(@Param("consumeTime") Date createTime, @Param("id") Long id);
+	public void updateOrderTime(@Param("serviceOrderTimeDto") ServiceOrderTimeDto serviceOrderTimeDto);
 
 	List<ServiceOrderListVo> selectApiServiceOrderListInPage(@Param("record") ServiceOrderListDto serviceOrderListDto, @Param("pageVo") PaginationVO pageVo);
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java
new file mode 100644
index 0000000..bedaf81
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/ServiceOrderTimeDto.java
@@ -0,0 +1,34 @@
+package com.matrix.system.hive.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.matrix.core.tools.DateUtil;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class ServiceOrderTimeDto {
+
+    /**
+     * 服务单id
+     */
+    private Long id;
+    /**
+     * 预约时间
+     */
+    @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM)
+    private Date yyTime;
+
+    /**
+     * 订单创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date createTime;
+    /**
+     * 订单划扣时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date consumeTime;
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java b/zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java
new file mode 100644
index 0000000..a43e901
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/vo/ServiceOrderInfoVo.java
@@ -0,0 +1,69 @@
+package com.matrix.system.hive.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.matrix.core.tools.DateUtil;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 简单服务单信息展示对象不含明细
+ */
+@Data
+public class ServiceOrderInfoVo {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 编号
+     */
+    private String serviceNo;
+
+    /**
+     * 服务单金额
+     */
+    private Double money;
+    /**
+     * 预约时间
+     */
+    @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM)
+    private Date yyTime;
+
+    /**
+     * 订单创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date createTime;
+    /**
+     * 订单划扣时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date consumeTime;
+
+    /**
+     * 开始时间
+     */
+    @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM)
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM)
+    private Date endTime;
+    /**
+     * 超时时间
+     */
+    private String isOverTime;
+
+    /**
+     * 服务状态 0.待预约 1.预约失败,2预约成功待处理,3需配料,4配料中,5配料完成,6,服务中,7服务完成
+     */
+    private String state;
+
+
+
+}
diff --git a/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml b/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml
index 3c5c8b8..a1b0ef2 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/common/SysRolePwoerFnDao.xml
@@ -150,10 +150,21 @@
 		</if>
 		</where>
 	</delete>
-	
-	
-	
-	<!-- 分页查询 -->
+    <delete id="deleteByFns">
+		DELETE a
+		FROM
+		sys_role_pwoer_fn a , sys_role b
+		WHERE
+		a.role_id = b.role_id
+		and b.company_id=#{companyId}
+		and a.fn_id in <foreach collection="list" index="index" item="item" open="("
+									 separator="," close=")">
+		#{item}
+	</foreach>
+	</delete>
+
+
+    <!-- 分页查询 -->
 	<select id="selectInPage" resultMap="SysRolePwoerFnMap">
 		select 
 			rpf_id,
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml
index e6ed5bb..558112d 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml
@@ -140,7 +140,11 @@
 
 	<!--  根据id更新 部分更新   -->
 	<update id="updateOrderTime">
-		UPDATE sys_proj_services set consume_time=#{consumeTime} WHERE id=#{id}
+		UPDATE sys_proj_services set
+		consume_time=#{serviceOrderTimeDto.consumeTime},
+			yy_time=#{serviceOrderTimeDto.yyTime},
+			create_time=#{serviceOrderTimeDto.createTime}
+		WHERE id=#{serviceOrderTimeDto.id}
 	</update>
 
 	<!-- 设置服务单为已通知 -->
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 957d259..17b4ddf 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
@@ -892,6 +892,8 @@
         <collection property="taocanProjUse" ofType="com.matrix.system.hive.bean.SysProjUse">
             <id property="id" column="proj_info_id" />
             <result property="projName" column="proj_proj_name"/>
+            <result property="source" column="proj_source"/>
+            <result property="price" column="proj_price"/>
             <result property="failTime" column="proj_FAIL_TIME"/>
             <result property="surplusCount" column="proj_SURPLUS_COUNT"/>
             <result property="timeLength" column="proj_time_length"/>
@@ -913,6 +915,8 @@
             e.SURPLUS_COUNT proj_SURPLUS_COUNT,
             e.id proj_info_id,
             e.proj_id proj_projId,
+            e.source proj_source,
+            e.price proj_price,
             e.status proj_status,
             f.time_length proj_time_length,
             f.img proj_img
diff --git a/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js b/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js
index ef97725..878dd39 100644
--- a/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js
+++ b/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js
@@ -121,6 +121,10 @@
 
 
 var MTools = {
+    closeIframe: function () {
+        parent.layer.close(parent.layer.getFrameIndex(window.name));
+    },
+
     /** 返回一个随机字符串 */
     uuid : function() {
 
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html
index 106f1be..6f356c3 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html
@@ -218,7 +218,7 @@
             title: "修改订单时间",
             maxmin: true,
             area: [MUI.SIZE_L, '500px'],
-            content: [basePath + '/admin/projService/toServiceOrderUpdateTime?id=' + id]
+            content: [basePath + '/admin/redirect/hive/beautySalon/updateServiceOrderTimeV2?id=' +id]
         });
     }
 
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html
index 867bbc2..1287221 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTime.html
@@ -1,9 +1,4 @@
-
-
-
-
-
-<!DOCTYPE HTML>
+<!DOCTYPE HTML>
 <html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
 <head>
 <meta charset="utf-8">
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html
new file mode 100644
index 0000000..5f36762
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/updateServiceOrderTimeV2.html
@@ -0,0 +1,126 @@
+<!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"/>
+    <!-- 本框架基本脚本和样式 -->
+    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.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"/>
+
+</head>
+<body>
+<div class="ibox-content" id="app" v-cloak  >
+    <el-form :model="serviceOrder"  ref="form" label-width="100px" class="demo-form">
+
+
+        <el-form-item label="创建时间">
+            <el-date-picker v-model="serviceOrder.createTime"   type="datetime"></el-date-picker>
+        </el-form-item>
+
+
+        <el-form-item label="预约时间">
+            <el-date-picker v-model="serviceOrder.yyTime"   type="datetime"></el-date-picker>
+        </el-form-item>
+
+
+        <el-form-item label="划扣时间">
+            <el-date-picker v-model="serviceOrder.consumeTime"   type="datetime" ></el-date-picker>
+            <span>修改划扣时间才会同步修改服务单业绩</span>
+        </el-form-item>
+
+        <el-form-item>
+            <el-button type="primary" @click="submitForm('form')" >保存</el-button>
+            <el-button @click="closeFram()">关闭</el-button>
+        </el-form-item>
+
+    </el-form>
+</div>
+</body>
+<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="@{/js/systools/AjaxProxyVue.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
+<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script>
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css">
+
+
+<script>
+    var id = $.query.get("id");
+
+
+    var app = new Vue({
+        el: '#app',
+        data: {
+
+            //表单数据
+           serviceOrder:{}
+
+        },
+
+        /**
+         * 初始化数据表
+         */
+        created: function () {
+            this.loadData()
+        },
+
+        methods: {
+            loadData(){
+                let _this=this;
+                AjaxProxy.requst({
+                    app: _this,
+                    url: basePath + '/admin/projService/findServiceOrderInfoVo/'+id,
+                    callback: function (data) {
+                        _this.serviceOrder = data.data;
+                    }
+                });
+            },
+            submitForm(){
+                let _this=this;
+                let data={
+                    id:this.serviceOrder.id,
+                    yyTime:this.serviceOrder.yyTime,
+                    createTime:this.serviceOrder.createTime,
+                    consumeTime:this.serviceOrder.consumeTime
+                }
+                AjaxProxy.requst({
+                    app: _this,
+                    data: data,
+                    contentType: 'application/json',
+                    url: basePath + '/admin/projService/updateOrderTime',
+                    callback: function (data) {
+
+                        _this.$message.success("修改成功");
+                        if(parent.myGrid){
+                            parent.myGrid.serchData()
+                        }
+                        if(parent.app){
+                            parent.app.serviceOrderQuery();
+                        }
+                        setInterval(MTools.closeIframe(), 1000);
+
+                    }
+                });
+
+            },
+            closeFram: function () {
+
+              parent.layer.close(parent.layer.getFrameIndex(window.name));
+
+            },
+
+        }
+
+    })
+</script>
+
+</body>
+</html>
+
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 654e4b9..393eb60 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
@@ -124,10 +124,12 @@
                 </el-col>
             </el-col>
             <el-col :span="8" style="float: right; margin-right: 20px;">
+
                 <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-button type="primary" plain @click="openAdd">会员注册</el-button>
             </el-col>
         </el-header>
         <el-container>
@@ -820,6 +822,14 @@
             }
         },
         methods : {
+            openAdd(){
+                layer.full(layer.open({
+                    type : 2,
+                    title : "添加会员信息",
+                    area : [ MUI.SIZE_L, '450px' ],
+                    content : [ basePath+'/admin/vipInfo/editForm' ]
+                }));
+            },
             //打开订单详情页面
             openOrder(index,row){
                 layer.full(layer.open({
@@ -1243,7 +1253,7 @@
                     title: "修改订单时间",
                     maxmin: true,
                     area: [MUI.SIZE_L, '500px'],
-                    content: [basePath + '/admin/projService/toServiceOrderUpdateTime?id=' + row.id]
+                    content: [basePath + '/admin/redirect/hive/beautySalon/updateServiceOrderTimeV2?id=' + row.id]
                 });
             },
             /********* 服务单tab end ***********/

--
Gitblit v1.9.1