From 112ceac7d0d3c1565464638306bb488c951e471e Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Tue, 08 Jun 2021 20:35:12 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger
---
zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml | 7
zq-erp/pom.xml | 4
zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java | 41 +
zq-xcx/project.config.json | 4
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 49 +
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java | 7
zq-erp/src/test/java/com/matrix/JyyTests2.java | 241 ++++++
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml | 7
zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java | 33
zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html | 34
zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java | 56 +
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html | 366 +++++++++
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java | 5
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml | 101 ++
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java | 8
zq-erp/src/main/java/filecopy.java | 80 ++
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java | 2
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java | 32
zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml | 38
zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-form.html | 4
zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml | 24
zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java | 42 +
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java | 5
zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml | 2
zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java | 80 ++
zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java | 15
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java | 13
zq-erp/src/main/resources/config/application.properties | 15
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java | 24
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java | 2
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java | 22
zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html | 11
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java | 11
zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java | 26
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxRefundRecordAction.java | 13
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java | 6
zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java | 2
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java | 9
zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java | 33
zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java | 6
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 45 +
zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html | 11
zq-erp/src/test/java/com/matrix/JyyTests.java | 41
zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html | 402 ++++++++++
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html | 21
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html | 21
zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java | 2
zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java | 129 +++
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java | 21
49 files changed, 2,060 insertions(+), 113 deletions(-)
diff --git a/zq-erp/pom.xml b/zq-erp/pom.xml
index ed1dc1f..111a11a 100644
--- a/zq-erp/pom.xml
+++ b/zq-erp/pom.xml
@@ -401,12 +401,12 @@
<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>
<exclude>**/*.woff2</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 5884118..03cb319 100644
--- a/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
+++ b/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
@@ -64,14 +64,15 @@
.excludePathPatterns("/plugin/**")
.excludePathPatterns("/swagger**/**")
.excludePathPatterns("/webjars/**");
+
// 用户认证拦截
- registry.addInterceptor(userLoginInterceptor)
- .addPathPatterns("/**")
- .excludePathPatterns("/common/**")
- .excludePathPatterns("/resource/**")
- .excludePathPatterns("/swagger**/**")
- .excludePathPatterns("/webjars/**")
- .excludePathPatterns("/api/**");
+// registry.addInterceptor(userLoginInterceptor)
+// .addPathPatterns("/**")
+// .excludePathPatterns("/common/**")
+// .excludePathPatterns("/resource/**")
+// .excludePathPatterns("/swagger**/**")
+// .excludePathPatterns("/webjars/**")
+// .excludePathPatterns("/api/**");
// url权限拦截
registry.addInterceptor(suAuthorityInterceptor).addPathPatterns("/**/su/**");
diff --git a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
index 894cdf2..08f9c22 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
@@ -521,7 +521,7 @@
/**
* 免免邮金额
*/
- public static final String FREE_PACKAGE_PRICE = "FREE_PACKAGE_PRICE";
+ public static final String FREE_PACKAGE_PRICE = "FREE_PACKAGE_PRICE";
/**
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 2c08183..fe414cc 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
@@ -3,6 +3,8 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.anotations.Extend;
import com.matrix.core.tools.DateUtil;
+import com.matrix.system.app.dto.BasePageDto;
+import com.matrix.system.common.bean.EntityDTOExt;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
@@ -11,7 +13,7 @@
*
* @date 2019-03-24 23:55
*/
-public class AchieveNew implements Serializable{
+public class AchieveNew extends EntityDTOExt {
@Extend
private static final long serialVersionUID = 1L;
@@ -26,7 +28,7 @@
/**
- * 美疗师id
+ * 美疗师id 把这个字段视为正式的业绩归属人
*/
private Long beaultId;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java
new file mode 100644
index 0000000..07e7594
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java
@@ -0,0 +1,33 @@
+package com.matrix.system.hive.bean;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
+import com.matrix.system.score.entity.BaseEntity;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 业绩规则
+ * @author JIANGYOUYAO
+ * @date 2021/6/3 0003
+ */
+@Data
+@TableName("achieve_rule")
+public class AchieveRule extends BaseEntity {
+
+ @NotEmpty(message = "规则名称不能为空")
+ private String name;
+
+
+ private String rules;
+
+ private Long companyId;
+
+ @TableField(exist=false)
+ @NotEmpty(message = "规则不能为空")
+ private List<AchieveRuleItem> ruleItemList;
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
index d0a63cb..0787c91 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
@@ -1,6 +1,8 @@
package com.matrix.system.hive.bean;
+import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.anotations.Extend;
import com.matrix.core.tools.DateUtil;
@@ -14,9 +16,10 @@
*
* @date 2016-09-17 10:17
*/
+
public class MoneyCardUse {
-
+ @TableId(value = "id",type = IdType.AUTO)
private Long id;
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 7dfeeff..9824694 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
@@ -433,12 +433,38 @@
* 任选套餐是否无限次 N-否 Y-是
*/
private String isInfinite;
+ /**
+ *业绩规则id
+ */
+ private Long achieveRuleId;
+
+ /**
+ *业绩规则名称
+ */
+ @Extend
+ private String achieveRuleName;
/**
* 支付方式 1-充值本金 2-赠送金额 3-积分
*/
private String payMethods;
+ public String getAchieveRuleName() {
+ return achieveRuleName;
+ }
+
+ public void setAchieveRuleName(String achieveRuleName) {
+ this.achieveRuleName = achieveRuleName;
+ }
+
+ public Long getAchieveRuleId() {
+ return achieveRuleId;
+ }
+
+ public void setAchieveRuleId(Long achieveRuleId) {
+ this.achieveRuleId = achieveRuleId;
+ }
+
public String getPayMethods() {
return payMethods;
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
index 835d02c..f160d12 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
@@ -42,7 +42,7 @@
private Date orderTime;
/**
- * 收款
+ * calculationType: 1,
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private Date payTime;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java
index d8421e3..bcde36d 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java
@@ -1,10 +1,15 @@
package com.matrix.system.hive.dao;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.app.vo.OrderDetailAchieveItemVo;
import com.matrix.system.app.vo.RankingVo;
import com.matrix.system.app.vo.UserAchieveVo;
import com.matrix.system.hive.bean.AchieveNew;
+import com.matrix.system.hive.dto.AchieveNewStatisticsDto;
+import com.matrix.system.hive.vo.AchieveNewStatisticsVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@@ -18,7 +23,7 @@
*/
-public interface AchieveNewDao{
+public interface AchieveNewDao extends BaseMapper<AchieveNew> {
public int insert(@Param("item") AchieveNew achieveNew);
@@ -82,4 +87,5 @@
int updateAchieveNumOfPeople(@Param("list") List<AchieveNew> list, @Param("num") Double num);
+ IPage<AchieveNewStatisticsVo> achieveNewStatistics(Page<AchieveNewStatisticsVo> page, @Param("record")AchieveNewStatisticsDto queryDto);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java
new file mode 100644
index 0000000..08034c3
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java
@@ -0,0 +1,11 @@
+package com.matrix.system.hive.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.matrix.system.hive.bean.AchieveRule;
+
+/**
+ * 业绩规则dao
+ */
+public interface AchieveRuleDao extends BaseMapper<AchieveRule> {
+
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java
index 1295c04..747dc87 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java
@@ -212,4 +212,6 @@
public SysVipInfo findByOpenId(String openId);
int unbundlingSaleMan(Long userId);
+
+ int bindingRecommend(@Param("recommendId") Long recommendId,@Param("userId") Long userId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java
new file mode 100644
index 0000000..f4b4816
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java
@@ -0,0 +1,41 @@
+package com.matrix.system.hive.dto;
+
+import com.google.common.base.CaseFormat;
+import com.matrix.core.pojo.BasePageQueryDto;
+import com.matrix.core.tools.StringUtils;
+import lombok.Data;
+
+@Data
+public class AchieveNewStatisticsDto extends BasePageQueryDto {
+
+ //规则名称
+ String achieveRuleId;
+
+
+ //业绩归属人id
+ String staffName;
+
+
+ //门店名称
+ Long shopId;
+
+ //公司id
+ Long companyId;
+
+ //订单类型
+ String orderType;
+
+ @Override
+ public void setSort(String sort) {
+ if(StringUtils.isNotBlank(sort)){
+ if ("ruleName".equals(sort)) {
+ super.setSort("u.name");
+ } else {
+ super.setSort(CaseFormat.LOWER_CAMEL.to
+ (CaseFormat.LOWER_UNDERSCORE, sort));
+ }
+ }else{
+ super.setSort(sort);
+ }
+ }
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java
new file mode 100644
index 0000000..601c8fe
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java
@@ -0,0 +1,33 @@
+package com.matrix.system.hive.service;
+
+import cn.hutool.json.JSONUtil;
+import com.matrix.system.hive.bean.AchieveRule;
+import com.matrix.system.hive.dao.AchieveRuleDao;
+import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 业绩规则服务
+ * @author JIANGYOUYAO
+ * @date 2021/6/3 0003
+ */
+@Service
+@AllArgsConstructor
+public class AchieveRuleService {
+
+ AchieveRuleDao achieveRuleDao;
+
+
+ /**
+ * 根据id查询 AchieveRule
+ * @param id
+ * @return
+ */
+ public AchieveRule selectById(Long id){
+ AchieveRule achieveRule = achieveRuleDao.selectById(id);
+ achieveRule.setRuleItemList(JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class));
+ return achieveRule;
+ }
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
index f0c6d88..201047f 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
@@ -1,6 +1,7 @@
package com.matrix.system.hive.service.imp;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
@@ -16,13 +17,11 @@
import com.matrix.system.common.dao.SysUsersDao;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
-import com.matrix.system.hive.dao.AchieveNewDao;
-import com.matrix.system.hive.dao.ShoppingGoodsDao;
-import com.matrix.system.hive.dao.SysBeauticianStateDao;
-import com.matrix.system.hive.dao.SysProjUseDao;
+import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.service.AchieveNewService;
import com.matrix.system.hive.service.SysProjServicesService;
+import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -185,8 +184,14 @@
// 是否为赠送业绩
if (Dictionary.TAOCAN_SOURCE_ZS.equals(projUse.getSource())) {
achieveNew.setFreeConsume(projUse.getPrice()*beauticianState.getCount());
+ //计算提成
+ achieveNew.setProjPercentage(
+ calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_ZS,achieveNew.getFreeConsume(),beauticianState.getProjId()));
} else {
achieveNew.setHisConsume(projUse.getPrice()*beauticianState.getCount());
+ //计算提成
+ achieveNew.setProjPercentage(
+ calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_BJ,achieveNew.getHisConsume(),beauticianState.getProjId()));
}
achieveNew.setT2(projUse.getSource());
achieveNew.setDatatime(new Date());
@@ -239,6 +244,36 @@
}
+ @Autowired
+ AchieveRuleDao achieveRuleDao;
+
+ private Double calculationProjPercentage(int type, Double consume, Long goodsId) {
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(goodsId);
+ if(shoppingGoods.getAchieveRuleId()!=null){
+
+ AchieveRule achieveRule = achieveRuleDao.selectById(shoppingGoods.getAchieveRuleId());
+ if(achieveRule!=null){
+ List<AchieveRuleItem> achieveRuleItems = JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class);
+ double percentage=0D;
+ for(AchieveRuleItem item:achieveRuleItems){
+ if(item.getAchieveType()==type
+ && (item.getLower() == consume
+ || (item.getLower()< consume && consume < item.getUpper() ))){
+
+ if(AchieveRuleItem.ACHIEVE_TYPE_FIXED==item.getCalculationType()){
+ percentage=item.getAchieve();
+ }else{
+ percentage= consume * (item.getAchieve()/100);
+ }
+ break;
+ }
+ }
+ return percentage;
+ }
+ }
+ return 0D;
+ }
+
/**
* 顾问人头业绩
* @param achieveNew
@@ -264,7 +299,6 @@
for (AchieveNew achieveNew : orderItem.getAchieveList()) {
if (achieveNew !=null && achieveNew.getGoodsCash()!=null) {
buildAchieve(pageOrder, orderItem, achieveNew);
- // 新增美疗师业绩
achieveNewList.add(achieveNew);
}
}
@@ -290,7 +324,10 @@
}
achieveNew.setVipId(pageOrder.getVipId());
- achieveNew.setSaleId(pageOrder.getStaffId());
+ if(achieveNew.getSaleId()==null){
+ achieveNew.setSaleId(pageOrder.getStaffId());
+ }
+
if (pageOrder.getPayTime() != null) {
achieveNew.setDatatime(pageOrder.getPayTime());
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 3d19de0..0384cfd 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
@@ -497,6 +497,12 @@
if (!Dictionary.ORDER_STATU_DFK.equals(pageOrder.getStatu())) {
throw new GlobleException("该订单已经收过款,请刷新页面再试!");
}
+
+ //交易业绩设置是否合理
+
+ checkAchieveIsOk(pageOrder);
+
+
// 更新收款时间
pageOrder.setPayTime(new Date());
pageOrder.setStatu(Dictionary.ORDER_STATU_YFK);
@@ -530,6 +536,28 @@
//设置会员积分
addVipScore(pageOrder);
+ }
+
+ /**
+ * 交易业绩设置是否合理
+ * @param pageOrder
+ */
+ private void checkAchieveIsOk(SysOrder pageOrder) {
+ double huakouSum = pageOrder.getItems().stream()
+ .mapToDouble(
+ item ->
+ item.getAchieveList().stream()
+ .filter(achieveNew -> "划扣".equals(achieveNew.getPayMethod()))
+ .mapToDouble(achieve -> achieve.getGoodsCash()).sum()
+ ).sum();
+
+ double czkPay= pageOrder.getFlows().stream()
+ .filter(sysOrderFlow -> "储值卡".equals(sysOrderFlow.getPayMethod()))
+ .mapToDouble(sysOrderFlow ->sysOrderFlow.getAmount().doubleValue()).sum();
+
+ if(czkPay!=huakouSum){
+ throw new GlobleException("划扣业绩不等于储值卡扣款金额,请修改业绩设置!");
+ }
}
/**
@@ -1205,13 +1233,20 @@
} else {
puse.setPrice(goodsAssemble.getPrice() * zk);
}
- puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
+
// 赠送和打折后金额为0的都视为赠送项目
if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
} else {
+ //赠送产品按原价计算消耗
puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ if (taocanId == null) {
+ puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() );
+ } else {
+ puse.setPrice(goodsAssemble.getPrice());
+ }
}
+ puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
puse.setFailTime(failTime);
sysProjUseDao.insert(puse);
return puse;
@@ -1291,18 +1326,22 @@
puse.setVipId(order.getVipId());
puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
- puse.setBalance(sysOrderItem.getZkPrice());
- puse.setPrice(sysOrderItem.getZkPrice());
+
+
puse.setProjName(sysOrderItem.getShoppingGoods().getName());
// 赠送和打折后金额为0的都视为赠送项目
if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
+ puse.setPrice(sysOrderItem.getZkPrice());
} else {
puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ //赠送产品按原价计算消耗
+ puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
}
// 设置失效时间
Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
puse.setFailTime(invalidTime);
+ puse.setBalance(sysOrderItem.getShoppingGoods().getSealPice()*puse.getSurplusCount());
sysProjUseDao.insert(puse);
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
index b5a3280..78e2713 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
@@ -119,7 +119,10 @@
throw new GlobleException(sysVipInfo.getPhone()+"手机已被注册!");
}
}
-
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ if(user!=null){
+ sysVipInfo.setCompanyId(user.getCompanyId());
+ }
sysVipInfo.setCreateTime(new Date());
sysVipInfo.setPointAll(0);
sysVipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java
index 95ac4ed..ba436dc 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java
@@ -1,5 +1,7 @@
package com.matrix.system.hive.statistics;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.PaginationVO;
@@ -13,14 +15,17 @@
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.AchieveNew;
import com.matrix.system.hive.dao.AchieveNewDao;
+import com.matrix.system.hive.dto.AchieveNewStatisticsDto;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.service.AchieveNewService;
import com.matrix.system.hive.service.SysOrderItemService;
import com.matrix.system.hive.service.SysOrderService;
+import com.matrix.system.hive.vo.AchieveNewStatisticsVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;
+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;
@@ -53,6 +58,25 @@
@Autowired
private AchieveNewDao achieveNewDao;
+
+
+ /**
+ * 员工业绩统计
+ */
+ @PostMapping(value = "/achieveNewStatistics")
+ public @ResponseBody
+ AjaxResult achieveNewStatistics(@RequestBody AchieveNewStatisticsDto queryDto){
+ SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+
+ queryDto.setCompanyId(sysUsers.getCompanyId());
+
+ Page<AchieveNewStatisticsVo> page = new Page(queryDto.getPageNum(), queryDto.getPageSize());
+ IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto);
+ AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal());
+ return result;
+ }
+
+
/**
* 门店每日单据明细表
*/
@@ -74,11 +98,16 @@
*/
@RequestMapping(value = "/findDailyInfoNew")
public @ResponseBody
- AjaxResult findDailyInfoNew(AchieveNew achieveNew, PaginationVO pageVo) {
+ AjaxResult findDailyInfoNew(@RequestBody AchieveNew achieveNew) {
SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+ achieveNew.setCompanyId(sysUsers.getCompanyId());
if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){
achieveNew.setShopId(sysUsers.getShopId());
}
+ PaginationVO pageVo = new PaginationVO();
+
+ pageVo.setOffset(achieveNew.getOffset());
+ pageVo.setLimit(achieveNew.getLimit());
pageVo.setSort("datatime");
pageVo.setOrder("desc");
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, achieveNewService.findDayFlow(achieveNew, pageVo),
@@ -86,6 +115,55 @@
return result;
}
+ @RequestMapping(value = "/exportAchieveNewStatisticsExcel")
+ public void exportAchieveNewStatisticsExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNewStatisticsDto queryDto) throws IOException {
+ //这里是从数据库里查数据并组装成我们想要的数据结构的过程
+ List<ExcelSheetPO> res = new ArrayList<>();
+ ExcelSheetPO orderSheet = new ExcelSheetPO();
+ String title = "员工业绩统计";
+ orderSheet.setSheetName(title);
+ orderSheet.setTitle(title);
+ String[] header = {"规则名称", "门店名称", "业绩归属人", "业绩创建人", "订单金额", "现金", "划扣", "本金消耗", "赠送消耗"
+ , "服务提成", "人头", "项目个数", "服务时间", "订单类型"};
+ orderSheet.setHeaders(header);
+ SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+ if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){
+ queryDto.setShopId(sysUsers.getShopId());
+ }
+ queryDto.setCompanyId(sysUsers.getCompanyId());
+ Page<AchieveNewStatisticsVo> page = new Page(1, Long.MAX_VALUE);
+ IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto);
+ List<AchieveNewStatisticsVo> dataList = rows.getRecords();
+ List<List<Object>> list = new ArrayList<>();
+ if (dataList.size() > 0) {
+ for (AchieveNewStatisticsVo item : dataList) {
+ List<Object> temp = new ArrayList<>();
+ temp.add(item.getRuleName());
+ temp.add(item.getShopName());
+ temp.add(item.getGuwen());
+ temp.add(item.getCreateBy());
+ temp.add(item.getZkTotal());
+ temp.add(item.getGoodsCash());
+ temp.add(item.getCardCash());
+ temp.add(item.getHisConsume());
+ temp.add(item.getFreeConsume());
+ temp.add(item.getProjPercentage());
+ temp.add(item.getNumberOfPeople());
+ temp.add(item.getProjNum());
+ temp.add(item.getProjTime());
+ temp.add(item.getOrderType());
+ list.add(temp);
+ }
+ }
+ orderSheet.setDataList(list);
+ res.add(orderSheet);
+ response = ResponseHeadUtil.setExcelHead(response);
+ response.setHeader("Content-Disposition",
+ "attachment;filename=" + java.net.URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8"));
+ OutputStream os = response.getOutputStream();
+ com.matrix.core.tools.excl.ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
+ }
+
@RequestMapping(value = "/exportDailyInfoNew")
public void exportDailyInfoNew(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNew achieveNew) throws IOException {
//这里是从数据库里查数据并组装成我们想要的数据结构的过程
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java b/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java
new file mode 100644
index 0000000..b48a597
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java
@@ -0,0 +1,42 @@
+package com.matrix.system.hive.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AchieveNewStatisticsVo {
+ //规则名称
+ String ruleName;
+ //业绩归属人
+ String guwen;
+ //业绩归属人id
+ Long gwid;
+ //订单创建人
+ String createBy;
+ //创建人id
+ Long createId;
+ //订单金额
+ BigDecimal zkTotal;
+ //消耗金额
+ BigDecimal hisConsume;
+ //赠送消耗
+ BigDecimal freeConsume;
+ //项目提成
+ BigDecimal projPercentage;
+ // 人头数
+ Double numberOfPeople;
+ //项目数
+ Double projNum;
+ //项目时长
+ Integer projTime;
+ //现金支付
+ BigDecimal goodsCash;
+ //卡项支付
+ BigDecimal cardCash;
+ //门店名称
+ String shopName;
+ //订单类型
+ String orderType;
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java
new file mode 100644
index 0000000..ee9deaf
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java
@@ -0,0 +1,129 @@
+package com.matrix.system.hiveErp.action;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.pojo.BasePageQueryDto;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.dao.SysUsersDao;
+import com.matrix.system.hive.action.util.QueryUtil;
+import com.matrix.system.hive.bean.AchieveRule;
+import com.matrix.system.hive.dao.AchieveRuleDao;
+import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 业绩规则Api
+ *
+ * @author jiangyouyao
+ * @date 2021-06-03
+ **/
+@RestController
+@AllArgsConstructor
+@RequestMapping(value = "/admin/achieveRule")
+public class AchieveRuleAction {
+
+ private AchieveRuleDao achieveRuleDao;
+
+
+ private SysUsersDao sysUsersDao;
+
+
+ /**
+ * 新增业绩规则
+ * @param achieveRule
+ * @return
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated AchieveRule achieveRule) {
+
+
+
+ String rules = JSONUtil.toJsonStr(achieveRule.getRuleItemList());
+ achieveRule.setRules(rules);
+
+ QueryUtil.setQueryLimitCom(achieveRule);
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ achieveRule.setCreateTime(DateTime.now());
+ achieveRule.setUpdateTime(DateTime.now());
+ achieveRule.setCreateBy(user.getSuName());
+ achieveRule.setUpdateBy(user.getSuName());
+ achieveRuleDao.insert(achieveRule);
+ return AjaxResult.buildSuccessInstance("新增成功");
+ }
+
+ /**
+ * 修改业绩规则
+ *
+ * @param achieveRule
+ * @return
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated AchieveRule achieveRule) {
+
+ if (achieveRule.getId() == null) {
+ return AjaxResult.buildFailInstance("id不能为空");
+ }
+
+ String rules = JSONUtil.toJsonStr(achieveRule.getRuleItemList());
+ achieveRule.setRules(rules);
+
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ achieveRule.setUpdateBy(user.getSuName());
+ achieveRule.setUpdateTime(DateTime.now());
+ achieveRuleDao.updateById(achieveRule);
+ return AjaxResult.buildSuccessInstance("修改成功");
+ }
+
+ /**
+ * 删除id
+ *
+ * @param id
+ * @return
+ */
+ @GetMapping("/removeById/{id}")
+ public AjaxResult removeById(@PathVariable Long id) {
+ achieveRuleDao.deleteById(id);
+ return AjaxResult.buildSuccessInstance("删除成功");
+ }
+
+
+ /**
+ * 分页查询规则
+ *
+ * @param pageDto
+ * @return
+ */
+ @PostMapping("/selectList")
+ public AjaxResult selectList(@RequestBody BasePageQueryDto pageDto) {
+
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ Page<AchieveRule> page = new Page<>(pageDto.getPageNum(), pageDto.getPageSize());
+ LambdaQueryWrapper<AchieveRule> lambdaQueryWrapper = new LambdaQueryWrapper<AchieveRule>()
+ .eq(AchieveRule::getCompanyId, user.getCompanyId());
+ if (StringUtils.isNotBlank(pageDto.getKeywords())) {
+ lambdaQueryWrapper.like(AchieveRule::getName, pageDto.getKeywords());
+ }
+ IPage<AchieveRule> achieveRuleIPage = achieveRuleDao.selectPage(page, lambdaQueryWrapper);
+ achieveRuleIPage.getRecords().stream().forEach(item->{
+ item.setRuleItemList(JSONUtil.toList(JSONUtil.parseArray(item.getRules()), AchieveRuleItem.class));
+ item.setRules(null);
+ });
+
+ AjaxResult result = AjaxResult.buildSuccessInstance(achieveRuleIPage.getRecords(), achieveRuleIPage.getTotal());
+ return result;
+ }
+
+ @PostMapping("/selectListForm")
+ public AjaxResult selectListForm(BasePageQueryDto pageDto) {
+ return selectList(pageDto);
+ }
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java
new file mode 100644
index 0000000..8eec4db
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java
@@ -0,0 +1,56 @@
+package com.matrix.system.hiveErp.pojo;
+
+import lombok.Data;
+
+/**
+ * 绩效规则明细
+ * @author JIANGYOUYAO
+ * @date 2021/6/3 0003
+ */
+@Data
+public class AchieveRuleItem {
+ /**
+ * 类型,1本金消耗
+ */
+ public static final int ACHIEVE_TYPE_BJ=1;
+ /**
+ * 类型,2赠送消耗
+ */
+ public static final int ACHIEVE_TYPE_ZS =2;
+ /**
+ * 计算类型 1 固定值
+ */
+ public static final int ACHIEVE_TYPE_FIXED=1;
+ /**
+ * 计算类型 2百分比
+ */
+ public static final int ACHIEVE_TYPE_PERCENTAGE=2;
+
+
+ /**
+ * 类型,1本金消耗,2赠送消耗
+ */
+ private Integer achieveType;
+
+ /**
+ * 计算类型 1 固定值,2百分比
+ */
+ private Integer calculationType;
+
+ /**
+ * 区间-低
+ */
+ private Double Lower ;
+
+ /**
+ * 区间-高
+ */
+ private Double upper ;
+
+ /**
+ * 业绩值
+ */
+ private Double achieve;
+
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java
index dded875..48276f1 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java
@@ -17,6 +17,7 @@
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.shopXcx.api.service.WXShopOrderService;
import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService;
@@ -81,6 +82,8 @@
@Autowired
private RabiitMqTemplate rabiitMqTemplate;
+ @Autowired
+ BusParameterSettingsDao parameterSettingsDao;
/**
* 列表显示
@@ -525,8 +528,12 @@
modifyMap.put("refundCharge", shopRefundRecord.getRefundMoney());
shopOrderDao.updateByMap(modifyMap);
+
+
+
rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopRefundRecord.getOrderId()+"");
+
}catch (Exception e){
LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id);
e.printStackTrace();
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxRefundRecordAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxRefundRecordAction.java
index daf749a..1d471ab 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxRefundRecordAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxRefundRecordAction.java
@@ -1,6 +1,5 @@
package com.matrix.system.shopXcx.api.action;
-import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.component.tools.WxUtils;
import com.matrix.core.pojo.AjaxResult;
@@ -9,6 +8,7 @@
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
+import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService;
import com.matrix.system.shopXcx.api.tools.SMSTools;
import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
@@ -103,6 +103,7 @@
return Double.valueOf(moneyStr);
}
+
/**
* 接收保存退款退货数据
*/
@@ -135,13 +136,13 @@
if (i == 0) {
return new AjaxResult(AjaxResult.STATUS_FAIL, "保存失败");
}
-
+ ShopOrder order = shopOrderDao.selectById(refundRecord.getOrderId());
//未发货的订单取消订单不走后台审核直接退款
List<ShopRefundRecord> refundRecordsList = refundRecordDao.selectByModel(record);
if(CollectionUtils.isNotEmpty(refundRecordsList)){
ShopRefundRecord shopRecord = refundRecordsList.get(0);
Integer orderId = shopRecord.getOrderId();
- ShopOrder order = shopOrderDao.selectById(orderId);
+
if (order == null) {
return new AjaxResult(AjaxResult.STATUS_FAIL, "未发货直接退款未找到订单信息");
}
@@ -160,6 +161,10 @@
if(flag){
ShopRefundRecord fundRecord = refundRecordDao.selectById(shopRecord.getId());
refundRecordService.updateGroupBuyStatus(orderId.longValue());
+
+
+
+
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "退款成功");
}
return new AjaxResult(AjaxResult.STATUS_FAIL, "退款失败");
@@ -172,6 +177,8 @@
modifyMap.put("id", orderId);
modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_APPLY_MONEYBACK);
shopOrderDao.updateByMap(modifyMap);
+
+
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功");
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java
index 611820b..faf6fc3 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java
@@ -1,10 +1,15 @@
package com.matrix.system.shopXcx.api.action;
+import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
+import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
+import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.shopXcx.api.dto.SaleProductDto;
import com.matrix.system.shopXcx.bean.ShopProduct;
+import com.matrix.system.shopXcx.bean.ShopSku;
import com.matrix.system.shopXcx.dao.ShopProductAttributeDao;
import com.matrix.system.shopXcx.dao.ShopProductDao;
import com.matrix.system.shopXcx.dao.ShopSkuDao;
@@ -19,7 +24,9 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.math.BigDecimal;
import java.util.List;
+import java.util.Objects;
/**
* @author jyy
@@ -35,9 +42,12 @@
@Autowired
private ShopProductAttributeDao shopProductAttributeDao;
-
+ @Autowired
+ private ShopSalesmanGradeDao shopSalesmanGradeDao;
@Autowired
private ShopSkuDao shopSkuDao;
+ @Autowired
+ private RedisUserLoginUtils redisUserLoginUtils;
@ApiOperation(value = "查询推广商品", notes = "")
@PostMapping(value = "/getSalesProductList")
@@ -54,7 +64,25 @@
shopProduct.setAbleSales(ShopProduct.ABLE_SALES);
shopProduct.setCompanyId(HostInterceptor.getCompanyId());
List<ShopProduct> shopProducts = shopProductDao.selectByModelWx(shopProduct);
- shopProducts.forEach(item->item.setSkus(shopSkuDao.selectByPid(item.getId())));
+ SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade());
+ shopProducts.forEach(item->{
+ List<ShopSku> shopSkus = shopSkuDao.selectByPid(item.getId());
+ //计算产品佣金
+ shopSkus.forEach(shopSku -> {
+ if(Objects.isNull(shopSku.getInvitationPrice())){
+ shopSku.setInvitationPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getInvitationCommission())).divide(BigDecimal.valueOf(100)));
+ }
+ if(Objects.isNull(shopSku.getSealesPrice())){
+ shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSealesCommission())).divide(BigDecimal.valueOf(100)));
+ }
+ if(Objects.isNull(shopSku.getSelfPrice())){
+ shopSku.setSelfPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100)));
+ }
+ });
+ item.setSkus(shopSkus);
+
+ });
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, shopProducts);
return result;
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
index 7e39d58..ee96c85 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
@@ -168,11 +168,7 @@
return AjaxResult.buildSuccessInstance("已经被绑定");
} else {
if (loginUser.getRecommendId()==null) {
- Map<String, Object> updateParam = new HashMap<>();
- updateParam.put("id", loginUser.getId());
- loginUser.setRecommendId(invitationUser.getId());
- loginUser.setBindingParentTime(new Date());
- sysVipInfoDao.update(loginUser);
+ sysVipInfoDao.bindingRecommend(invitationUser.getId(),loginUser.getId());
return AjaxResult.buildSuccessInstance("绑定成功");
} else {
return AjaxResult.buildSuccessInstance("已经存在上级");
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java
index 977b543..5eb9595 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java
@@ -107,7 +107,7 @@
shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSealesCommission())).divide(BigDecimal.valueOf(100)));
}
if(Objects.isNull(shopSku.getSelfPrice())){
- shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100)));
+ shopSku.setSelfPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100)));
}
});
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
index 6466163..97af9ae 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
@@ -15,7 +15,9 @@
import com.matrix.system.constance.Dictionary;
import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao;
+import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
+import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
import com.matrix.system.fenxiao.service.ShopSalesmanApplyService;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.MoneyCardUseDao;
@@ -145,6 +147,8 @@
}
+ @Autowired
+ ShopSalesmanGradeDao shopSalesmanGradeDao;
/**
* 查询用户信息
@@ -160,6 +164,15 @@
res.putInMap("couponCount", shopCouponRecordDao.countUnuseCouponRecord(loginUser.getId()));
res.putInMap("prizeCount",activitySignReceiveRecordDao.getSignAwardReceiveCount(loginUser.getId(),loginUser.getCompanyId()));
res.putInMap("userInfo", sysVipInfo);
+ //查询会员等级
+ if(sysVipInfo.getSalesmanGrade()!=null){
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade());
+ res.putInMap("vipLevel", shopSalesmanGrade.getName());
+ }else if(sysVipInfo.getVipLevel()!=null){
+ res.putInMap("vipLevel", sysVipInfo.getVipLevel().getLevelName());
+ }else{
+ res.putInMap("vipLevel", "初级会员");
+ }
res.setStatus(AjaxResult.STATUS_SUCCESS);
return res;
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
index 9a44280..38a88a4 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
@@ -16,6 +16,7 @@
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.ShoppingGoodsDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
@@ -346,9 +347,11 @@
//计算运费
- discountExplain.setPostage(calculationPostage(discountExplain.getPayPrice(), HostInterceptor.getCompanyId()));
-
-
+ if(ShopOrder.SHIPPING_METHOD_WL==shopOrderDto.getDeliverySelect()){
+ discountExplain.setPostage(calculationPostage(billPrice, HostInterceptor.getCompanyId()));
+ }else{
+ discountExplain.setPostage(BigDecimal.ZERO);
+ }
//账单总金额
discountExplain.setBillPrice(billPrice.add(discountExplain.getPostage()));
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java
index 28e33f6..0b3bfc7 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java
@@ -1,12 +1,14 @@
package com.matrix.system.shopXcx.api.service.impl;
import com.matrix.component.rabbitmq.RabiitMqTemplate;
-import com.matrix.component.tools.WxTempLateMsgUtil;
import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
import com.matrix.core.exception.GlobleException;
-import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.DingDingRobotUtil;
import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.constance.AppConstance;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.shopXcx.api.service.WXShopOrderService;
import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService;
import com.matrix.system.shopXcx.bean.*;
@@ -16,10 +18,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -48,6 +48,10 @@
@Autowired
private ShopActivitiesGroupJoinDao shopActivitiesGroupJoinDao;
+
+ @Autowired
+ private BusParameterSettingsDao busParameterSettingsDao;
+
@Value("${wx_pay_debug_onoff}")
private boolean isDebug;
@@ -146,6 +150,16 @@
rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopRefundRecord.getOrderId()+"");
+ //发送退款通知
+ BusParameterSettings wxOrderNoticeDingdingToken = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN, shopOrder.getCompanyId());
+ if (wxOrderNoticeDingdingToken != null && StringUtils.isNotBlank(wxOrderNoticeDingdingToken.getParamValue())) {
+ DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(),
+ "订单退款,微商城订单编号 "+shopOrder.getOrderNo()
+ +"; 订单金额:¥"+shopOrder.getOrderMoney()
+ +";收货电话:"+ shopOrder.getUserTel()+",收货人:"+ shopOrder.getUserName()
+ ,"");
+ }
+
}catch (Exception e){
LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id);
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java
index 41bc09c..2ea6cb0 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java
@@ -7,10 +7,11 @@
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
-import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.SysVipInfoDao;
+import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
import com.matrix.system.shopXcx.bean.ShopOrder;
import com.matrix.system.shopXcx.bean.ShopOrderDetails;
+import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
import com.matrix.system.shopXcx.dao.ShopOrderDao;
import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao;
import com.rabbitmq.client.DeliverCallback;
@@ -41,11 +42,15 @@
@Autowired
SysVipInfoDao sysVipInfoDao;
+ @Autowired
+ ShopDeliveryInfoDao shopDeliveryInfoDao;
+
@Override
public void handle(String consumerTag, Delivery message) throws IOException {
- String orderId = new String(message.getBody(), "UTF-8");
+ String orderIdStr = new String(message.getBody(), "UTF-8");
+ Integer orderId=Integer.valueOf(orderIdStr);
//获取订单信息
- ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId));
+ ShopOrder order = shopOrderDao.selectById(orderId);
LogUtil.debug("收到创建订单通知任务orderId={}", orderId);
BusParameterSettings wxOrderNoticeDingdingToken = parameterSettingsDao.selectCompanyParamByCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN, order.getCompanyId());
if (wxOrderNoticeDingdingToken != null && StringUtils.isNotBlank(wxOrderNoticeDingdingToken.getParamValue())) {
@@ -54,8 +59,19 @@
StringBuilder content = new StringBuilder();
orderDetails.stream().forEach(i -> content.append(i.getsTitle()).append("*").append(
i.getCount()).append(";"));
+ ShopDeliveryInfo addInfo = shopDeliveryInfoDao.selectByOrderId(orderId);
- DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(),"微商城订单 ("+order.getUserName()+") | 订单金额:¥"+order.getOrderMoney()+",订单内容:"+ content.toString(),"");
+ String shippingMethod="物流配送";
+ if(AppConstance.SHIPPING_METHOD_SELF .equals(order.getShippingMethod())){
+ shippingMethod="门店自提";
+ }
+ DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(),
+ "新订单,微商城订单编号 "+order.getOrderNo()
+ +"; 订单金额:¥"+order.getOrderMoney()
+ +";订单内容:"+ content.toString()
+ +";收货电话:"+ order.getUserTel()+",收货人:"+ order.getUserName()+",收货地址:"+ addInfo.getReceiveAddress()
+ +"配送方式:"+shippingMethod
+ ,"");
}else{
LogUtil.debug("未配置订单钉钉提醒");
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java
index d7eab53..8b52165 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java
@@ -16,6 +16,7 @@
import org.springframework.stereotype.Component;
import java.io.IOException;
+import java.util.List;
/**
* 分销订单退款
@@ -44,13 +45,19 @@
LogUtil.debug("收到分销订单退款任务orderId={}", orderId);
QueryWrapper queryWrapper=new QueryWrapper();
queryWrapper.eq("order_id",orderId);
- ShopSalesmanOrder shopSalesmanOrder = shopSalesmanOrderDao.selectOne(queryWrapper);
- if(shopSalesmanOrder!=null){
- shopSalesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_YTK);
- shopSalesmanOrderDao.updateById(shopSalesmanOrder);
- }else{
- LogUtil.debug("改订单为生成分销订单={}", orderId);
- }
+ List<ShopSalesmanOrder> list = shopSalesmanOrderDao.selectList(queryWrapper);
+
+ list.forEach(shopSalesmanOrder->{
+
+ if(shopSalesmanOrder!=null){
+ shopSalesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_YTK);
+ shopSalesmanOrderDao.updateById(shopSalesmanOrder);
+ }else{
+ LogUtil.debug("改订单为生成分销订单={}", orderId);
+ }
+
+
+ });
ShopOrder order=shopOrderDao.selectById(Integer.parseInt(orderId));
//如果是积分支付则需要返还积分
diff --git a/zq-erp/src/main/java/filecopy.java b/zq-erp/src/main/java/filecopy.java
new file mode 100644
index 0000000..544d6cb
--- /dev/null
+++ b/zq-erp/src/main/java/filecopy.java
@@ -0,0 +1,80 @@
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * 文件对比复制
+ * @author JIANGYOUYAO
+ * @date 2021/6/7 0007
+ */
+public class filecopy {
+
+
+ static String targetFilePath="/mnt/sdc/webresource";
+
+ static String sourceFilePaht="/mnt/sdc/webresourceback";
+
+ public static void main(String[] args) throws IOException {
+
+
+ File sourceFile=new File(sourceFilePaht);
+ traverseFolder(sourceFile);
+
+
+ }
+
+
+ public static void traverseFolder(File file) throws IOException {
+
+ if (file.exists()) {
+ File[] files = file.listFiles();
+ if (null == files || files.length == 0) {
+ System.out.println("文件夹是空的!");
+ return;
+ } else {
+ for (File file2 : files) {
+ if (file2.isDirectory()) {
+ //对比target是否存在
+ final String s = file2.getCanonicalPath().replaceAll("webresourceback", "webresource");
+ File f=new File(s);
+ if(!f.exists()){
+ System.out.println("复制文件:" + file2.getAbsolutePath());
+ f.mkdir();
+ }else{
+ System.out.println("文件:" + file2.getAbsolutePath()+"存在");
+ }
+ traverseFolder(file2);
+ } else {
+
+ //对比target是否存在,不存在则copy
+ final String s = file2.getCanonicalPath().replaceAll("webresourceback", "webresource");
+ File f=new File(s);
+ if(!f.exists()){
+ System.out.println("复制文件:" + file2.getAbsolutePath());
+ FileInputStream in=new FileInputStream(file2);
+ FileOutputStream out=new FileOutputStream(f);
+ byte[] buff=new byte[1024];
+ int length=in.read(buff);
+ while (length>0){
+ out.write(buff,0,length);
+ length=in.read(buff);
+ }
+ out.close();
+ in.close();
+
+ }else{
+ System.out.println("文件:" + 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 14fb986..7589d03 100644
--- a/zq-erp/src/main/resources/config/application.properties
+++ b/zq-erp/src/main/resources/config/application.properties
@@ -3,19 +3,20 @@
#线上测试环境
-
-#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/hive_prd?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/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
spring.datasource.initialSize=3
diff --git a/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml b/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml
index ee69a10..df93edb 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml
@@ -323,7 +323,7 @@
<set>
update_time=now(),
<if test="updateBy!=null">
- update_by = #{btnKey},
+ update_by = #{updateBy},
</if>
<if
test="(suName!=null and suName!='') or (suName!='' and suName==0)">
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 fb605a0..651ca07 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -95,6 +95,7 @@
left join sys_proj_services l on a.service_order_id=l.id
left join sys_order_item j on a.order_item_id=j.ID
<where>
+ and a.company_id = #{record.companyId}
<if test="record!=null">
<if
test="(record.shopId!=null and record.shopId!='') or (record.shopId!='' and record.shopId==0) ">
@@ -118,9 +119,7 @@
<if test="record.beaultId != null and record.beaultId !='' ">
and a.beault_id = #{record.beaultId}
</if>
- <if test="record.companyId != null and record.companyId !='' ">
- and a.company_id = #{record.companyId}
- </if>
+
<if test="record.beaultId != null and record.beaultId !='' ">
and a.beault_id = #{record.beaultId}
</if>
@@ -196,7 +195,41 @@
</where>
</select>
+<!--
+ 统计员工业绩
+
+select
+ u.name,
+ g.su_name guwen,
+ cast(SUM(b.ZK_TOTAL) AS decimal(15,2)) as zk_total,
+ cast(SUM(a.his_consume) AS decimal(15,2)),
+ cast(SUM(a.free_consume) AS decimal(15,2)),
+ cast(SUM(a.proj_percentage) AS decimal(15,2)),
+ cast(SUM(a.number_of_people) AS decimal(15,2)),
+ cast(SUM(a.proj_num) AS decimal(15,2)),
+ cast(SUM(a.proj_time) AS decimal(15,2)),
+ h.shop_short_name shop_name,
+ a.order_type,
+ a.achieveType
+ from
+ achieve_new a
+ left join sys_order b on a.order_id=b.id
+ left join sys_vip_info c on a.vip_id=c.id
+ left join sys_vip_level d on c.LEVEL_ID=d.id
+ left join shopping_goods e on a.shopping_goods_id=e.id
+ LEFT JOIN sys_users f on a.beault_id=f.su_id
+ LEFT JOIN sys_users g on a.sale_id = g.su_id
+ LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID
+ LEFT JOIN shopping_goods_category i ON e.cate_id = i.id
+ left join sys_proj_services l on a.service_order_id=l.id
+ left join sys_order_item j on a.order_item_id=j.ID
+ left join achieve_rule u on u.id=e.achieve_rule_id
+ where h.shop_short_name='龙华店'
+ GROUP BY g.su_name , a.order_type, h.id,a.achieveType
+ ORDER BY g.su_name
+
+-->
<select id="findSumDailyInfoNew" resultMap="AchieveNewMap">
@@ -1090,6 +1123,68 @@
and date_format(datatime, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
</select>
+ <select id="achieveNewStatistics" resultType="com.matrix.system.hive.vo.AchieveNewStatisticsVo">
+
+ select
+ u.name ruleName,
+ f.su_name guwen,
+ f.su_id gwid,
+ g.su_name createBy,
+ g.su_id createId,
+ cast(SUM(b.ZK_TOTAL) AS decimal(15,2)) as zk_total,
+ cast(SUM(a.his_consume) AS decimal(15,2)) his_consume,
+ cast(SUM(a.free_consume) AS decimal(15,2)) free_consume,
+ cast(SUM(a.proj_percentage) AS decimal(15,2)) proj_percentage,
+ cast(SUM(a.number_of_people) AS decimal(15,2)) number_of_people,
+ cast(SUM(a.proj_num) AS decimal(15,2)) proj_num,
+ cast(SUM(case when a.pay_method = '划扣' then goods_cash end )AS decimal(15,2)) card_cash,
+ cast(SUM(a.proj_time) AS decimal(15,2)) proj_time,
+ cast(SUM(case when a.pay_method = '现金' then goods_cash end )AS decimal(15,2)) goods_cash,
+ h.shop_short_name shop_name,
+ a.order_type
+ from
+ achieve_new a
+ left join sys_order b on a.order_id=b.id
+ left join sys_vip_info c on a.vip_id=c.id
+ left join sys_vip_level d on c.LEVEL_ID=d.id
+ left join shopping_goods e on a.shopping_goods_id=e.id
+ LEFT JOIN sys_users f on a.beault_id=f.su_id
+ LEFT JOIN sys_users g on a.sale_id = g.su_id
+ LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID
+ LEFT JOIN shopping_goods_category i ON e.cate_id = i.id
+ left join sys_proj_services l on a.service_order_id=l.id
+ left join sys_order_item j on a.order_item_id=j.ID
+ left join achieve_rule u on u.id=e.achieve_rule_id
+ <where>
+ and a.company_id = #{record.companyId}
+ <if test="record.shopId != null">
+ and a.shop_id = #{record.shopId}
+ </if>
+ <if test="record.achieveRuleId != null">
+ and u.id = #{record.achieveRuleId}
+ </if>
+
+ <if test="record.staffName != null and record.staffName!=''">
+ <!-- 创建人和归属人都有业绩 -->
+ and (f.su_name like concat('%',#{record.staffName},'%') or g.su_name like concat('%',#{record.staffName},'%') )
+ </if>
+
+ <if test="record.orderType != null and record.orderType != '' ">
+ and a.order_type= #{record.orderType}
+ </if>
+ <if test="record.beginTime != null ">
+ and a.datatime >= #{record.beginTime}
+ </if>
+ <if test="record.endTime != null ">
+ <![CDATA[and a.datatime <= #{record.endTime}]]>
+ </if>
+
+ </where>
+ GROUP BY g.su_id , f.su_id, a.order_type, h.id,a.achieveType,u.name
+ <if test="record.sort !=null and record.sort!=''"> order by ${record.sort} ${record.order}</if>
+
+ </select>
+
<update id="updateAchieveNumOfPeople">
<foreach collection="list" item="item" index="index"
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml
new file mode 100644
index 0000000..a6c3707
--- /dev/null
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.matrix.system.hive.dao.AchieveRuleDao">
+
+</mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml
index a60b9d8..4bb2b75 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml
@@ -17,7 +17,7 @@
<result property="staffId" column="staff_id" />
<result property="vipName" column="vip_name" />
<result property="tel" column="tel" />
- <result property="bizUserId" column="sys_vip_info_id" />
+ <result property="bizUserId" column="biz_user_id" />
<result property="formId" column="form_id" />
<result property="productId" column="product_id" />
@@ -42,7 +42,7 @@
<result property="staffId" column="staff_id" />
<result property="vipName" column="vip_name" />
<result property="tel" column="tel" />
- <result property="bizUserId" column="sys_vip_info_id" />
+ <result property="bizUserId" column="biz_user_id" />
<result property="productId" column="product_id" />
<result property="orderNo" column="order_no" />
<result property="formId" column="form_id" />
@@ -66,7 +66,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no,
form_id
@@ -129,7 +129,7 @@
tel = #{tel},
</if>
<if test="(bizUserId!=null and bizUserId!='') or (bizUserId!='' and bizUserId==0)">
- sys_vip_info_id = #{bizUserId},
+ biz_user_id = #{bizUserId},
</if>
<if test="(productId!=null and productId!='') or (productId!='' and productId==0)">
product_id = #{productId},
@@ -199,7 +199,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no,
form_id,
@@ -303,7 +303,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id
from onlinebooking
where 1=1
@@ -417,7 +417,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no
from onlinebooking
@@ -442,7 +442,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id
from onlinebooking
where 1=1
@@ -495,7 +495,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no
from onlinebooking
@@ -547,7 +547,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no,
form_id,
@@ -565,7 +565,7 @@
and vip_Id = #{record.vipId}
</if>
<if test="(record.bizUserId!=null and record.bizUserId!='') or (record.bizUserId!='' and record.bizUserId==0)">
- and sys_vip_info_id = #{record.bizUserId}
+ and biz_user_id = #{record.bizUserId}
</if>
<if test="(record.time!=null and record.time!='') or (record.time!='' and record.time==0)">
and time = #{record.time}
@@ -611,7 +611,7 @@
and vip_Id = #{record.vipId}
</if>
<if test="(record.bizUserId!=null and record.bizUserId!='') or (record.bizUserId!='' and record.bizUserId==0)">
- and sys_vip_info_id = #{record.bizUserId}
+ and biz_user_id = #{record.bizUserId}
</if>
<if test="(record.time!=null and record.time!='') or (record.time!='' and record.time==0)">
and time = #{record.time}
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 0c6cb3c..d0ff42f 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
@@ -85,12 +85,15 @@
<result property="goodsSortName" column="goodsSortName" />
+ <result property="achieveRuleName" column="achieveRuleName" />
+
<result property="payMethods" column="pay_methods" />
<result property="invalidTime" column="invalid_time" />
<result property="useValid" column="use_valid" />
<result property="buyValid" column="buy_valid" />
<result property="isInfinite" column="is_infinite" />
+ <result property="achieveRuleId" column="achieve_rule_id" />
@@ -160,11 +163,14 @@
<!-- 服务项目信息 -->
<result property="proReward" column="proReward" />
<result property="timeLength" column="TIME_LENGTH" />
+ <result property="achieveRuleId" column="achieve_rule_id" />
<!-- 扩展属性 -->
<result property="cateName" column="cate_name" />
<result property="goodsSortName" column="goodsSortName" />
+ <result property="achieveRuleName" column="achieveRuleName" />
+
</resultMap>
@@ -301,7 +307,9 @@
use_valid,
invalid_time,
pay_methods,
- is_infinite
+ is_infinite,
+ achieve_rule_id
+
)
VALUES (
#{id},
@@ -362,7 +370,9 @@
#{useValid},
#{invalidTime},
#{payMethods},
- #{isInfinite}
+ #{isInfinite},
+ #{achieveRuleId}
+
)
</insert>
@@ -538,6 +548,10 @@
<if test="isInfinite != null and isInfinite !='' ">
is_infinite = #{isInfinite},
</if>
+
+ <if test="achieveRuleId != null and achieveRuleId !='' ">
+ achieve_rule_id = #{achieveRuleId},
+ </if>
invalid_time = #{invalidTime},
buy_valid = #{buyValid},
use_valid = #{useValid},
@@ -576,8 +590,9 @@
<select id="selectInPage" resultMap="ShoppingGoodsMap">
select
a.*,
- (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
- (select NAME from shopping_goods_category t where t.id=a.cate_id) cate_name,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
+ (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) as goodsSortName,
+ (select NAME from shopping_goods_category t where t.id=a.cate_id) as cate_name,
(select shop_name from sys_shop_info h where a.SHOP_ID=h.ID ) as shop_name
from shopping_goods a
where 1=1
@@ -652,6 +667,11 @@
</if>
+ <if test="record.achieveRuleId != null and record.achieveRuleId !='' ">
+ and achieve_rule_id = #{record.achieveRuleId}
+ </if>
+
+
<if test="record.headquarters != null and record.headquarters !='' ">
and headquarters = #{record.headquarters}
@@ -718,7 +738,9 @@
<if test="record.isVipCar != null and record.isVipCar !='' ">
and is_vip_car = #{record.isVipCar}
</if>
-
+ <if test="record.achieveRuleId != null and record.achieveRuleId !='' ">
+ and achieve_rule_id = #{record.achieveRuleId}
+ </if>
<if test="record.isCourse != null and record.isCourse !=''">
and is_course = #{record.isCourse}
@@ -763,6 +785,7 @@
<select id="selectAll" resultMap="ShoppingGoodsSimpleMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -868,6 +891,7 @@
<select id="findByCode" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from shopping_goods_category t where
t.id=cate_id)
@@ -880,6 +904,7 @@
<select id="selectSimpleMapById" resultMap="ShoppingGoodsSimpleMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -899,6 +924,7 @@
<select id="selectByModel" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -978,6 +1004,7 @@
<select id="selectByModel1" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -1056,6 +1083,7 @@
<select id="selectInPageNoTaocan" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml
index 9724622..68afb0d 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml
@@ -499,9 +499,7 @@
<if test="isDeal != null ">
is_deal = #{isDeal},
</if>
- <if test="recommendId != null ">
- recommend_id = #{recommendId},
- </if>
+
<if test="province != null and province !='' ">
province = #{province},
</if>
@@ -552,6 +550,9 @@
<update id="unbundlingSaleMan">
UPDATE sys_vip_info set recommend_id = NULL where id=#{userId};
</update>
+ <update id="bindingRecommend">
+ UPDATE sys_vip_info set recommend_id = #{recommendId} where id=#{userId};
+ </update>
<!-- 批量删除 -->
<delete id="deleteByIds" parameterType="java.util.List">
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html
new file mode 100644
index 0000000..c82e927
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html
@@ -0,0 +1,402 @@
+<!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>
+ <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
+ <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
+ <title></title>
+ <style>
+ .panel-body {
+ overflow: hidden;
+ }
+
+ .buttonPanel {
+ background: #ffffff;
+ padding: 10px 10px;
+ margin: 0px 0px 10px 0px;
+ }
+
+ .rowPanel {
+ background: #ffffff;
+ padding: 0px 10px;
+ padding-top: 10px;
+ margin: 0px 0px 10px 0px;
+ }
+
+ .paginationStyle {
+ background: #ffffff;
+ padding: 10px 10px;
+ margin: 0px 0px 10px 0px;
+ text-align: right;
+ }
+ </style>
+</head>
+<body>
+<div class="panel-body" id="app">
+
+ <el-row class="buttonPanel">
+ <el-button @click="openForm('add')" type="primary">新增</el-button>
+ </el-row>
+
+ <el-row class="rowPanel">
+ <el-form ref="form" :model="form" inline>
+ <el-form-item label="规则名称" prop="queryKey">
+ <el-input v-model="form.keyword" placeholder="请输入规则名称"></el-input>
+ </el-form-item>
+ <el-button type="primary" @click="search">搜索</el-button>
+ <el-button @click="resetForm('form')">重置</el-button>
+ </el-form>
+ </el-row>
+
+ <el-row class="table-style">
+
+ <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange">
+ <el-table-column
+ prop="name"
+ label="规则名称">
+ </el-table-column>
+ <el-table-column
+ prop="updateTime"
+ sortable="custom"
+ label="修改时间"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="updateBy"
+ label="修改人">
+ </el-table-column>
+
+ <el-table-column
+ prop="createTime"
+ sortable="custom"
+ label="创建时间"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="createBy"
+ label="创建人"
+ width="180">
+ </el-table-column>
+
+ <el-table-column label="操作">
+ <template slot-scope="scope">
+ <el-button type="text" @click="openForm('modify', scope.row)" size="small">修改</el-button>
+ <el-button type="text" @click="remove(scope.$index, scope.row)" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-row>
+ <el-row class="paginationStyle">
+ <el-pagination background
+ @size-change="changePageSize"
+ @current-change="changeCurrentPage"
+ :current-page="table.currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="table.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="table.total">
+ </el-pagination>
+ </el-row>
+
+ <el-dialog
+ :title="title"
+ :visible.sync="dialogVisible"
+ width="60%"
+ :before-close="handleClose">
+
+ <el-form :model="formData" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+
+ <el-form-item label="规则名称" >
+ <el-input style="width: 200px" v-model="formData.name"></el-input>
+ <el-button type="primary" @click="addRuleItem()" size="small">添加规则</el-button>
+ </el-form-item>
+
+ <el-form-item label="绩效方案" >
+ <el-table
+ :data="formData.ruleItemList"
+ style="width: 100%">
+ <el-table-column
+ label="业绩类型"
+ >
+ <template slot-scope="scope">
+ <el-select v-model="scope.row.achieveType" placeholder="请选择业绩类型">
+ <el-option label="本金消耗" :value="1"></el-option>
+ <el-option label="赠送消耗" :value="2"></el-option>
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="计算方式"
+ >
+ <template slot-scope="scope">
+ <el-select v-model="scope.row.calculationType" placeholder="请选择计算方式">
+ <el-option label="固定金额" :value="1"></el-option>
+ <el-option label="百分比(%)" :value="2"></el-option>
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="区间"
+ width="240">
+ <template slot-scope="scope">
+ <el-input style="width: 100px" v-model="scope.row.lower"></el-input>
+ -
+ <el-input style="width: 100px" v-model="scope.row.upper"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="业绩">
+ <template slot-scope="scope">
+ <el-input v-model="scope.row.achieve"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column label="操作">
+ <template slot-scope="scope">
+ <el-button type="text" @click="removeRuleItem(scope.$index, scope.row)" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-form-item>
+
+
+
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="dialogVisible = false">取 消</el-button>
+ <el-button type="primary" @click="submitForm">确 定</el-button>
+ </span>
+</el-dialog>
+
+
+</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="@{/plugin/layer/layer.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 type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
+<script type="text/javascript" th:inline="javascript">
+
+ var vue = new Vue({
+ el: '#app',
+ data: {
+ table: {
+ rows: [],
+ total: 0,
+ pageSize: 10,
+ currentPage: 1,
+ },
+ form: {
+ queryKey: null,
+ },
+
+ height: 'calc(100vh - 240px)',
+ dialogVisible: false,
+ title: '',
+ formData: {
+ name: '',
+ ruleItemList: [
+ {
+ achieveType: 1,
+ calculationType: 1,
+ lower: '',
+ upper: '',
+ achieve: '',
+ }
+ ]
+ },
+
+ type: '',
+
+ },
+ created: function () {
+ this.loadData();
+ window.addEventListener("keydown", this.keydown);
+ },
+ methods: {
+ changePageSize(val) {
+ this.table.pageSize = val;
+ this.loadData();
+ },
+ changeCurrentPage(val) {
+ this.table.currentPage = val;
+ this.loadData();
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields();
+ },
+ sortChange: function (column) {
+ if (column.order) {
+ if (column.order.indexOf("desc")) {
+ this.form.order = "desc";
+ } else {
+ this.form.order = "asc";
+ }
+ this.form.sort = column.prop;
+ this.loadData();
+ }
+ },
+ loadData: function () {
+ let _this = this;
+ let data = _this.getRequestParam();
+ data.pageSize = _this.table.pageSize;
+ data.pageNum = _this.table.currentPage;
+ AjaxProxy.requst({
+ app: _this,
+ data: data,
+ url: basePath + '/admin/achieveRule/selectList',
+ callback: function (data) {
+ _this.table.rows = data.rows;
+ _this.table.total = data.total;
+ }
+ });
+ },
+ getRequestParam() {
+ let _this = this;
+ return {
+ queryKey: _this.form.queryKey,
+ }
+ },
+ search: function () {
+ this.table.currentPage = 1;
+ this.loadData();
+ },
+ keydown(evt) {
+ if (evt.keyCode == 13) {
+ this.search();
+ }
+ },
+
+ remove(index, row) {
+ let _this = this;
+ this.$confirm('确认删除该规则吗?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ AjaxProxy.requst({
+ app: _this,
+ type: 'GET',
+ url: basePath + "/admin/achieveRule/removeById/" + row.id,
+ callback: function (data) {
+ _this.loadData();
+ _this.$message({
+ type: 'success',
+ message: data.info,
+ });
+ }
+ });
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '已取消删除'
+ });
+ });
+ },
+ //开启表单弹窗
+ openForm(type, data) {
+
+ if (type == 'add') {
+ this.title = '新增规则';
+ //this.$refs['formName'].resetFields();
+
+ } else {
+ this.title = '修改规则';
+ this.formData = data;
+ }
+ this.type = type;
+ this.dialogVisible = true;
+ },
+ //提交表单
+ submitForm() {
+ let url = basePath + "/admin/achieveRule/add";
+ if (this.type == 'modify') {
+ url = basePath + "/admin/achieveRule/update";
+ }
+ let data=this.formData;
+
+ if(MTools.isBlank(data.name)){this.$message.error("请输入规则名称");return;}
+
+ if(data.ruleItemList.length<1){
+ this.$message.error("最少需要一个计算规则");;return;}
+ let flag=true;
+ data.ruleItemList.forEach(item=>{
+ if(MTools.isBlank(item.lower)){
+ this.$message.error("请输入业绩下限");flag=false;}
+ else if(MTools.isBlank(item.upper)){
+ this.$message.error("请输入业绩上限");flag=false;}
+ else if(MTools.isBlank(item.achieve)){
+ this.$message.error("请输入业绩金额或者比例");flag=false;}
+ })
+ if(flag){
+ var _this=this;
+ AjaxProxy.requst({
+ app: _this,
+ data:data,
+ url:url,
+ callback: function (data) {
+ _this.$message.success(data.info);
+ _this.loadData();
+ _this.dialogVisible = false;
+ _this.formData={
+ name: '',
+ ruleItemList: [
+ {
+ achieveType: 1,
+ calculationType: 1,
+ lower: '',
+ upper: '',
+ achieve: '',
+ }
+ ]
+ };
+ }
+ });
+
+ }
+ },
+ handleClose(done) {
+ this.$confirm('确认关闭?')
+ .then(_ => {
+ done();
+ })
+ .catch(_ => {
+ });
+ },
+ addRuleItem(){
+ this.formData.ruleItemList.push(
+ {
+ achieveType: 1,
+ calculationType: 1,
+ lower: '',
+ upper: '',
+ achieve: '',
+ }
+ );
+ },
+ removeRuleItem(index,row){
+ this.formData.ruleItemList.splice(index, 1);
+ },
+
+
+ }
+
+ });
+
+
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html
new file mode 100644
index 0000000..34ecd48
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html
@@ -0,0 +1,366 @@
+<!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>
+ <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
+ <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
+ <title></title>
+ <style>
+ .panel-body{
+ overflow: hidden;
+ }
+ .buttonPanel{
+ background: #ffffff;
+ padding: 10px 10px ;
+ margin: 0px 0px 10px 0px;
+ }
+ .rowPanel{
+ background: #ffffff;
+ padding: 0px 10px ;
+ padding-top: 10px;
+ margin: 0px 0px 10px 0px;
+ }
+ .paginationStyle{
+ background: #ffffff;
+ padding: 10px 10px;
+ margin: 0px 0px 10px 0px;
+ text-align: right;
+ }
+ </style>
+</head>
+<body>
+<div class="panel-body" id="app">
+
+ <el-row class="buttonPanel">
+ <el-button @click="exportExcel" type="primary" >导出</el-button>
+ </el-row>
+
+ <el-row class="rowPanel" >
+ <el-form ref="form" :model="form" inline >
+
+ <el-form-item label="业绩规则" >
+ <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.staffName"></el-input>
+ </el-form-item>
+
+
+ <el-form-item label="统计门店" >
+ <el-select v-model="form.shopId" placeholder="请选择">
+ <el-option
+ v-for="item in shopList"
+ :key="item.shopShortName"
+ :label="item.shopShortName"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+
+ <el-form-item label="订单类型" >
+ <el-select v-model="form.orderType" placeholder="请选择">
+ <el-option
+ v-for="item in orderTypeList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="统计时间" prop="datetimeArr">
+ <el-date-picker
+ v-model="form.datetimeArr"
+ type="daterange"
+ range-separator="至" format="yyyy-MM-dd HH:mm"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期">
+ </el-date-picker>
+ </el-form-item>
+
+ <el-button type="primary" @click="search" >搜索</el-button>
+ <el-button @click="resetForm('form')">重置</el-button>
+ </el-form>
+ </el-row>
+
+ <el-row class="table-style" >
+
+ <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange">
+ <el-table-column
+ sortable="custom"
+ prop="ruleName"
+ label="规则名称"
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="shopName"
+ label="门店名称"
+ show-overflow-tooltip
+ width="240">
+ </el-table-column>
+ <el-table-column
+ prop="guwen"
+ label="业绩归属人"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="createBy"
+ label="业绩创建人"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="zkTotal"
+ label="订单金额">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="goodsCash"
+ label="现金">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="cardCash"
+ label="划扣">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="hisConsume"
+ label="本金消耗">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="freeConsume"
+ label="赠送消耗">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="projPercentage"
+ label="服务提成">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="numberOfPeople"
+ label="人头">
+ </el-table-column>
+
+ <el-table-column
+ sortable="custom"
+ prop="projNum"
+ label="项目个数">
+ </el-table-column>
+
+ <el-table-column
+ sortable="custom"
+ prop="projTime"
+ label="服务时间">
+ </el-table-column>
+
+ <el-table-column
+ sortable="custom"
+ prop="orderType"
+ label="订单类型">
+ </el-table-column>
+
+ </el-table>
+ </el-row>
+ <el-row class="paginationStyle" >
+ <el-pagination background
+ @size-change="changePageSize"
+ @current-change="changeCurrentPage"
+ :current-page="table.currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="table.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="table.total">
+ </el-pagination>
+ </el-row>
+
+</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="@{/plugin/layer/layer.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 type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
+<script type="text/javascript" th:inline="javascript">
+
+ var vue = new Vue({
+ el: '#app',
+ data: {
+ table:{
+ rows:[],
+ total:0,
+ pageSize:10,
+ currentPage:1,
+ },
+ form:{
+ achieveRuleId:null,
+ staffName:null,
+ shopId:null,
+ orderType:'',
+ order:'',
+ sort:'',
+ beginTime:'',
+ endTime:'',
+ },
+ height:'calc(100vh - 240px)',
+
+ //提成规则
+ achieveRulsList:[],
+ //业绩用户列表
+ userList: [],
+ shopList:[{id:0,shopShortName:'全部'}],
+
+ orderTypeList:[
+ {value:'',label:'全部'},
+ {value:'订单',label:'订单'},
+ {value:'服务单',label:'服务单'},
+
+ ],
+ },
+ created: function () {
+ let _this=this;
+ //获取业绩用户列表
+ AjaxProxy.requst({
+ app: _this,
+ url: basePath + '/admin/shopAll',
+ callback: function (data) {
+ _this.userList = data.rows;
+ }
+ });
+ AjaxProxy.requst({
+ app:_this,
+ url:basePath+"/admin/shopInfo/findAll",
+ callback:function (data) {
+ data.rows.forEach(shop=>{
+ _this.shopList.push(shop);
+ });
+ }
+
+ })
+ this.getAchieveRule();
+ this.loadData();
+ window.addEventListener("keydown", this.keydown);
+ },
+ methods: {
+ changePageSize(val) {
+ this.table.pageSize = val;
+ this.loadData();
+ },
+ changeCurrentPage(val) {
+ this.table.currentPage = val;
+ this.loadData();
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields();
+ this.form={
+ achieveRuleId:null,
+ staffName:null,
+ shopId:null,
+ orderType:'',
+ order:'',
+ sort:'',
+ beginTime:'',
+ endTime:'',
+ };
+ },
+ sortChange:function (column){
+ if(column.order){
+ if(column.order.indexOf("desc")){
+ this.form.order="desc";
+ }else{
+ this.form.order="asc";
+ }
+ this.form.sort=column.prop;
+ this.loadData();
+ }
+ },
+ loadData:function(){
+ let _this = this;
+ let data=_this.getRequestParam();
+ data.pageSize=_this.table.pageSize;
+ data.pageNum=_this.table.currentPage;
+ AjaxProxy.requst({
+ app: _this,
+ data:data,
+ url: basePath + '/admin/achieve/achieveNewStatistics',
+ callback: function (data) {
+ _this.table.rows = data.rows;
+ _this.table.total=data.total;
+ }
+ });
+ },
+
+ /**
+ * 获取规则
+ */
+ 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;
+ }
+ });
+ },
+
+ getRequestParam(){
+ let _this = this;
+ return {
+ achieveRuleId:_this.form.achieveRuleId,
+ staffName:_this.form.staffName,
+ shopId:_this.form.shopId,
+ orderType:_this.form.orderType,
+ beginTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'',
+ endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'',
+ order:_this.form.order,
+ sort:_this.form.sort,
+ }
+ },
+ search:function(){
+ this.table.currentPage=1;
+ this.loadData();
+ },
+ keydown(evt){
+ if(evt.keyCode==13) {
+ this.search();
+ }
+ },
+
+ //导出
+ exportExcel(){
+ window.location.href=basePath+"/admin/achieve/exportAchieveNewStatisticsExcel?"+MTools.jsonToUrlParam(this.getRequestParam());
+ }
+
+ }
+ });
+
+
+</script>
+</body>
+</html>
\ No newline at end of file
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 f19c967..2243f43 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
@@ -149,7 +149,6 @@
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
-<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script>
<script type="text/javascript" th:inline="javascript">
var vue = new Vue({
el : "#app",
@@ -184,10 +183,11 @@
},
methods : {
queryTableData () {
+
let _this = this;
- var form = _this.form;
- var page = _this.page;
- var params = _this.form;
+ let form = _this.form;
+ let page = _this.page;
+ let params = _this.form;
params.limit = page.size;
params.offset = (page.currentPage - 1) * page.size;
@@ -195,11 +195,14 @@
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({
- p:params
- }).invoke(basePath + "/admin/achieve/findDailyInfoNew", function (loj) {
- _this.tableData = loj.getValue("rows");
- _this.page.total = loj.getResult().total;
+ AjaxProxy.requst({
+ app: _this,
+ data: params,
+ url: basePath + "/admin/achieve/findDailyInfoNew",
+ callback: function (loj) {
+ _this.tableData = loj.rows;
+ _this.page.total = loj.total;
+ }
});
},
queryCustomColumns() {
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
index 225ed3c..212a682 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
@@ -83,6 +83,19 @@
</el-form-item>
</el-col>
+ <el-col :offset="2" :span="10" v-if="form.goodType!='家居产品'">
+ <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-col>
+
</el-row>
<el-row>
@@ -1097,7 +1110,8 @@
loading_zhk: false,
/******综合卡表格数据END********/
-
+ //提成规则
+ achieveRulsList:[],
//默认充值卡选中项
defaultCates: [],
@@ -1145,6 +1159,8 @@
useDateNum : '',
buyDateNum : '',
payMethods : '',
+ achieveRuleId:'',
+
},
submitUrl: '/admin/shoppinggoods/addShoppingGoods',
modifySubmitUrl: '/admin/shoppinggoods/modifyShoppingGoods',
@@ -1174,6 +1190,7 @@
this.getGoodstype();
this.getDictionary();
this.getShopInfo();
+ this.getAchieveRule();
if(goodType=='家居产品'){
this.getSupplierList();
}
@@ -1194,6 +1211,21 @@
methods: {
/**
+ * 获取规则
+ */
+ 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;
+ }
+ });
+ },
+
+ /**
* 商品分类树形组件格式化
*/
normalizer(node) {
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
index 8608af7..77b6bba 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
@@ -62,6 +62,16 @@
<option value=''>请选择项目状态</option>
</select>
</div>
+ <div class="form-group mr-20">
+ <label for="staus">业绩规则</label>
+ <select class="form-control autoFull" name="achieveRuleId"
+ data-filed="name"
+ data-value="id"
+ th:data-url="@{/admin/achieveRule/selectListForm}"
+ data-param="{pageNum:1,pageSize:1000}">
+ <option value=''>请选择业绩规则</option>
+ </select>
+ </div>
<div class="form-group mr-20">
<label for="isPresent">是否赠送</label>
@@ -114,6 +124,7 @@
<th data-field="isPresent">是否赠送</th>
<th data-field="goodType" data-sortable="true">类型</th>
<th data-field="cateName">分类</th>
+ <th data-field="achieveRuleName" >业绩规则</th>
<th data-field="createTime" data-sortable="true" data-formatter="MGrid.getTime">创建时间</th>
</tr>
</thead>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
index b2d8c30..a9e5af4 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
@@ -63,6 +63,16 @@
<option value=''>请选择项目状态</option>
</select>
</div>
+ <div class="form-group mr-20">
+ <label for="staus">业绩规则</label>
+ <select class="form-control autoFull" name="achieveRuleId"
+ data-filed="name"
+ data-value="id"
+ th:data-url="@{/admin/achieveRule/selectListForm}"
+ data-param="{pageNum:1,pageSize:1000}">
+ <option value=''>请选择业绩规则</option>
+ </select>
+ </div>
<div class="form-group mr-20">
<label for="isPresent">是否赠送</label>
@@ -110,6 +120,7 @@
<th data-field="isPresent">是否赠送</th>
<th data-field="goodType" data-sortable="true">类型</th>
<th data-field="cateName" >分类</th>
+ <th data-field="achieveRuleName" >业绩规则</th>
<th data-field="createTime" data-sortable="true" data-formatter="MGrid.getTime">创建时间</th>
</tr>
</thead>
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 611e200..8da1de1 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
@@ -151,7 +151,6 @@
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
-<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script>
<script type="text/javascript" th:inline="javascript">
var vue = new Vue({
el : "#app",
@@ -187,10 +186,11 @@
},
methods : {
queryTableData () {
+
let _this = this;
- var form = _this.form;
- var page = _this.page;
- var params = _this.form;
+ let form = _this.form;
+ let page = _this.page;
+ let params = _this.form;
params.limit = page.size;
params.offset = (page.currentPage - 1) * page.size;
@@ -198,11 +198,14 @@
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({
- p:params
- }).invoke(basePath + "/admin/achieve/findDailyInfoNew", function (loj) {
- _this.tableData = loj.getValue("rows");
- _this.page.total = loj.getResult().total;
+ AjaxProxy.requst({
+ app: _this,
+ data: params,
+ url: basePath + "/admin/achieve/findDailyInfoNew",
+ callback: function (loj) {
+ _this.tableData = loj.rows;
+ _this.page.total = loj.total;
+ }
});
},
queryCustomColumns() {
diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-form.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-form.html
index 0030e60..ff23851 100644
--- a/zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-form.html
@@ -94,8 +94,8 @@
<label class="col-sm-2 control-label">配送方式
</label>
<div class="col-sm-4">
- <input autocomplete="off" type="text" class="form-control" readonly="readonly"
- th:value="${orderInfo.shippingMethod}" nullmsg="订单备注不能为空">
+ <input autocomplete="off" type="text" class="form-control" readonly="readonly" th:if="${orderInfo.shippingMethod==1}" th:value="物流配送" >
+ <input autocomplete="off" type="text" class="form-control" readonly="readonly" th:if="${orderInfo.shippingMethod==2}" th:value="门店自提" >
</div>
</div>
<div class="form-group">
diff --git a/zq-erp/src/test/java/com/matrix/JyyTests.java b/zq-erp/src/test/java/com/matrix/JyyTests.java
index 9297740..b955d11 100644
--- a/zq-erp/src/test/java/com/matrix/JyyTests.java
+++ b/zq-erp/src/test/java/com/matrix/JyyTests.java
@@ -1,27 +1,53 @@
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.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.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.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 测试类示例
@@ -56,8 +82,13 @@
OrderDingDingNoticeTask orderDingDingNoticeTask;
@Test
+ @Rollback
public void testNoticeTask() throws IOException {
- orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
+ // orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
+
+
+
+
}
diff --git a/zq-erp/src/test/java/com/matrix/JyyTests2.java b/zq-erp/src/test/java/com/matrix/JyyTests2.java
new file mode 100644
index 0000000..0304fff
--- /dev/null
+++ b/zq-erp/src/test/java/com/matrix/JyyTests2.java
@@ -0,0 +1,241 @@
+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.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.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 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 java.io.IOException;
+import java.util.*;
+
+/**
+ * 测试类示例
+ *
+ * @author jiangyouyao
+ * @email 512061637@qq.com
+ * @date 2019年2月25日
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {ZqErpApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class JyyTests2 {
+
+ @Autowired
+ ShopOrderDao shopOrderDao;
+ @Autowired
+ ShopOrderDetailsDao shopOrderDetailsDao;
+
+ @Autowired
+ SysVipInfoService sysVipInfoService;
+
+
+ @Autowired
+ private SysVipInfoDao vipDap;
+
+ @Autowired
+ SysVipInfoDao vipDao;
+
+ @Autowired
+ CodeService codeService;
+
+ @Autowired
+ SysOrderDao sysOrderDao;
+
+ @Autowired
+ ShoppingGoodsService shoppingGoodsService;
+
+ @Autowired
+ SysOrderItemDao orderItemDao;
+
+ @Autowired
+ SysOrderService orderService;
+
+ @Autowired
+ ShopSkuDao shopSkuDao;
+
+ @Autowired
+ BusParameterSettingsDao parameterSettingsDao;
+
+
+ @Autowired
+ private ShopSalesmanOrderDao shopSalesmanOrderDao;
+
+ @Autowired
+ private ShopSalesmanGradeDao shopSalesmanGradeDao;
+
+
+ @Test
+ @Rollback
+ public void testNoticeTask() throws IOException {
+ // orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
+
+ ShopOrder order=shopOrderDao.selectById(1353);
+ //判读客户是否存在上级,存在则产生上级的收益
+ SysVipInfo sysVipInfo = sysVipInfoService.findById(order.getUserId());
+ LogUtil.debug("处理分销订单userOpid={}",sysVipInfo.getOpenId());
+ //判断是否重复生成
+ QueryWrapper queryWrapper=new QueryWrapper();
+ queryWrapper.eq("order_id",order.getId());
+ Integer orderCount = shopSalesmanOrderDao.selectCount(queryWrapper);
+ ShopSalesmanOrder salesmanOrder=new ShopSalesmanOrder();
+ salesmanOrder.setCompanyId(order.getCompanyId());
+ salesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER);
+ salesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER);
+ salesmanOrder.setCreateTime(new Date());
+ salesmanOrder.setUpdateTime(new Date());
+ salesmanOrder.setOrderId(Long.parseLong(order.getId()+""));
+ salesmanOrder.setUserId(order.getUserId());
+ salesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES);
+ salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS);
+ Double selfAmount=0D;
+ Double zk=1D;
+ //分销订单总额
+ Double orderTotal=0D;
+ for (ShopOrderDetails item:order.getDetails() ){
+ if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){
+ orderTotal+=item.getTotalPrice().doubleValue();
+ }
+ }
+ //自购返佣
+ Integer isSales = sysVipInfo.getIsSales();
+ if(SysVipInfo.IS_SALES == isSales){
+ for (ShopOrderDetails item:order.getDetails() ){
+ if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){
+ //分销规则是否开启自购返佣
+ BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, sysVipInfo.getCompanyId());
+ //按分销等级计算
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade());
+ if(ObjectUtil.isNotEmpty(zgfy)) {
+ //获取商品的自购返佣价格,如果没有设置,在去获取当前推广人的等级的自购返佣比例
+ if(StrUtil.isNotEmpty(zgfy.getParamValue()) &&
+ FenxiaoSettingConstant.FX_ZGFY_YES.equals(zgfy.getParamValue())) {
+ if(item.getShopSku().getSelfPrice() == null
+ ||item.getShopSku().getSealesPrice().doubleValue() == 0){
+ selfAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSelfCommission()/100);
+ }else {
+ //按产品设置的自购返佣金额计算
+ selfAmount+=item.getShopSku().getSelfPrice().doubleValue()*item.getCount();
+ }
+ }
+ }
+ }
+ }
+ //自购返佣记录
+ if(selfAmount > 0) {
+ //整体的优惠金额折算成折扣,* 佣金
+ zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal;
+ selfAmount=selfAmount*zk;
+ salesmanOrder.setAmount(selfAmount);
+ salesmanOrder.setSalesUserId(order.getUserId());
+ shopSalesmanOrderDao.insert(salesmanOrder);
+ }
+ }
+
+ //存在上级
+ if(sysVipInfo.getRecommendId()!=null) {
+ SysVipInfo salesMan=sysVipInfoService.findById(sysVipInfo.getRecommendId());
+ Double salesAmount=0D;
+ Double invitationAmount=0D;
+ SysVipInfo invitationMan=null;
+ ShopSalesmanOrder invitationOrder=null;
+ boolean hasInvitationMan=salesMan.getRecommendId()!=null;
+ //判断推广员是否还存在上级,存在则计算邀请收益
+ if(hasInvitationMan){
+ invitationMan=sysVipInfoService.findById(salesMan.getRecommendId());
+ invitationOrder=new ShopSalesmanOrder();
+ BeanUtils.copyProperties(salesmanOrder,invitationOrder);
+ invitationOrder.setSalesUserId(invitationMan.getId());
+ invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION);
+ }
+ //收益计算
+ for (ShopOrderDetails item:order.getDetails() ){
+ if(item.getShopProduct().getAbleSales()== ShopProduct.ABLE_SALES){
+ //按分销等级计算
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade());
+ //推广提成,按分销等级计算或者按产品设置的推广金额计算
+ if(item.getShopSku().getSealesPrice()==null
+ ||item.getShopSku().getSealesPrice().doubleValue()==0){
+ salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100);
+ }else{
+ salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount();
+ }
+ //邀请提成,获取商品的邀请提成价格和是否有上级推广人,如果没有设置,在去获取当前推广人的等级的自购返佣比例
+ if(hasInvitationMan) {
+ if(item.getShopSku().getInvitationPrice() == null
+ ||item.getShopSku().getInvitationPrice().doubleValue() == 0){
+ //获取上级的推广等级设置
+ ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade());
+ invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getInvitationCommission()/100);
+ }else {
+ //按产品设置的邀请提成价格计算
+ invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount();
+ }
+ }
+ }
+ }
+ //推广提成记录
+ if(salesAmount>0){
+ //整体的优惠金额折算成折扣,* 佣金
+ zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal;
+ salesAmount=salesAmount*zk;
+ salesmanOrder.setAmount(salesAmount);
+ salesmanOrder.setSalesUserId(sysVipInfo.getRecommendId());
+ shopSalesmanOrderDao.insert(salesmanOrder);
+ }
+ //邀请提成记录
+ if(invitationAmount > 0) {
+ //整体的优惠金额折算成折扣,* 佣金
+ invitationAmount=invitationAmount*zk;
+ invitationOrder.setAmount(invitationAmount);
+ shopSalesmanOrderDao.insert(invitationOrder);
+ }
+ }else{
+ LogUtil.debug("不存在父级userOpid={}",sysVipInfo.getOpenId());
+ }
+
+
+
+
+ }
+
+
+
+}
diff --git a/zq-xcx/project.config.json b/zq-xcx/project.config.json
index 8b486aa..77acbda 100644
--- a/zq-xcx/project.config.json
+++ b/zq-xcx/project.config.json
@@ -23,18 +23,20 @@
"compileHotReLoad": false,
"useMultiFrameRuntime": true,
"useApiHook": true,
+ "useApiHostProcess": false,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
+ "enableEngineNative": false,
+ "bundle": false,
"useIsolateContext": true,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"userConfirmedBundleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
- "enableEngineNative": false,
"minifyWXSS": true
},
"compileType": "miniprogram",
--
Gitblit v1.9.1