From 76ed413ae6fd573996207760904304b4951df5d5 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sun, 13 Mar 2022 18:43:34 +0800
Subject: [PATCH] 重构:套餐项目
---
zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java | 18
zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java | 3
zq-erp/src/main/java/com/matrix/system/common/validate/beans/ErrorMessage.java | 44 +
zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java | 2
zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java | 19
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html | 13
zq-erp/src/main/java/com/matrix/system/common/validate/HDValidateResult.java | 213 ++++++
zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidate.java | 136 ++++
zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java | 185 ++++
zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidateFailNoFast.java | 134 +++
zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java | 2
zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java | 9
zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java | 71 ++
zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardPayDto.java | 6
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 655 ++----------------
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOutStoreServiceImpl.java | 8
zq-erp/src/main/java/com/matrix/system/hive/action/OutStoreController.java | 2
zq-erp/src/main/java/com/matrix/system/common/validate/group/Group.java | 44 +
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java | 175 +++++
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java | 185 +++++
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java | 9
zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java | 18
zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java | 62 +
zq-erp/src/main/java/com/matrix/system/hive/service/SysOutStoreService.java | 7
24 files changed, 1,386 insertions(+), 634 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java b/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java
index 3c93147..6bce512 100644
--- a/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java
+++ b/zq-erp/src/main/java/com/matrix/core/pojo/VerificationResult.java
@@ -22,6 +22,24 @@
}
+ public static VerificationResult success(){
+ return buildVerificationResult(true);
+ }
+
+ public static VerificationResult success(String msg){
+ return buildVerificationResult(true,msg);
+ }
+
+
+ public static VerificationResult fail(){
+ return buildVerificationResult(false);
+ }
+
+ public static VerificationResult fail(String msg){
+ return buildVerificationResult(false,msg);
+ }
+
+
public static VerificationResult buildVerificationResult(boolean judgeResult){
VerificationResult obj=new VerificationResult();
obj.judgeResult =judgeResult;
diff --git a/zq-erp/src/main/java/com/matrix/system/common/validate/HDValidateResult.java b/zq-erp/src/main/java/com/matrix/system/common/validate/HDValidateResult.java
new file mode 100644
index 0000000..503fb7a
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/validate/HDValidateResult.java
@@ -0,0 +1,213 @@
+/**
+ * projectName: h3-organization
+ * fileName: HDValidateResult.java
+ * packageName: com.hydee.common.validate
+ * date: 2019-06-17 14:46
+ * copyright(c) 2019 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.common.validate;
+
+import org.springframework.beans.PropertyEditorRegistry;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.Errors;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.ObjectError;
+
+import java.beans.PropertyEditor;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @version: V1.0
+ * @author: LiHengye
+ * @className: HDValidateResult
+ * @packageName: com.hydee.common.validate
+ * @description: 校验结果
+ * @data: 2019-06-17 14:46
+ **/
+public class HDValidateResult implements BindingResult {
+ @Override
+ public Object getTarget() {
+ return null;
+ }
+
+ @Override
+ public Map<String, Object> getModel() {
+ return null;
+ }
+
+ @Override
+ public Object getRawFieldValue(String s) {
+ return null;
+ }
+
+ @Override
+ public PropertyEditor findEditor(String s, Class<?> aClass) {
+ return null;
+ }
+
+ @Override
+ public PropertyEditorRegistry getPropertyEditorRegistry() {
+ return null;
+ }
+
+ @Override
+ public String[] resolveMessageCodes(String s) {
+ return new String[0];
+ }
+
+ @Override
+ public String[] resolveMessageCodes(String s, String s1) {
+ return new String[0];
+ }
+
+ @Override
+ public void addError(ObjectError objectError) {
+
+ }
+
+ @Override
+ public String getObjectName() {
+ return null;
+ }
+
+ @Override
+ public void setNestedPath(String s) {
+
+ }
+
+ @Override
+ public String getNestedPath() {
+ return null;
+ }
+
+ @Override
+ public void pushNestedPath(String s) {
+
+ }
+
+ @Override
+ public void popNestedPath() throws IllegalStateException {
+
+ }
+
+ @Override
+ public void reject(String s) {
+
+ }
+
+ @Override
+ public void reject(String s, String s1) {
+
+ }
+
+ @Override
+ public void reject(String s, Object[] objects, String s1) {
+
+ }
+
+ @Override
+ public void rejectValue(String s, String s1) {
+
+ }
+
+ @Override
+ public void rejectValue(String s, String s1, String s2) {
+
+ }
+
+ @Override
+ public void rejectValue(String s, String s1, Object[] objects, String s2) {
+
+ }
+
+ @Override
+ public void addAllErrors(Errors errors) {
+
+ }
+
+ @Override
+ public boolean hasErrors() {
+ return false;
+ }
+
+ @Override
+ public int getErrorCount() {
+ return 0;
+ }
+
+ @Override
+ public List<ObjectError> getAllErrors() {
+ return null;
+ }
+
+ @Override
+ public boolean hasGlobalErrors() {
+ return false;
+ }
+
+ @Override
+ public int getGlobalErrorCount() {
+ return 0;
+ }
+
+ @Override
+ public List<ObjectError> getGlobalErrors() {
+ return null;
+ }
+
+ @Override
+ public ObjectError getGlobalError() {
+ return null;
+ }
+
+ @Override
+ public boolean hasFieldErrors() {
+ return false;
+ }
+
+ @Override
+ public int getFieldErrorCount() {
+ return 0;
+ }
+
+ @Override
+ public List<FieldError> getFieldErrors() {
+ return null;
+ }
+
+ @Override
+ public FieldError getFieldError() {
+ return null;
+ }
+
+ @Override
+ public boolean hasFieldErrors(String s) {
+ return false;
+ }
+
+ @Override
+ public int getFieldErrorCount(String s) {
+ return 0;
+ }
+
+ @Override
+ public List<FieldError> getFieldErrors(String s) {
+ return null;
+ }
+
+ @Override
+ public FieldError getFieldError(String s) {
+ return null;
+ }
+
+ @Override
+ public Object getFieldValue(String s) {
+ return null;
+ }
+
+ @Override
+ public Class<?> getFieldType(String s) {
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidate.java b/zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidate.java
new file mode 100644
index 0000000..cbeb8cd
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidate.java
@@ -0,0 +1,136 @@
+/**
+ * projectName: h3-organization
+ * fileName: ParameterValidate.java
+ * packageName: com.hydee.common.validate
+ * date: 2019-06-17 10:48
+ * copyright(c) 2019 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.common.validate;
+
+import com.matrix.system.common.validate.beans.ErrorMessage;
+import com.matrix.system.common.validate.group.Group;
+import org.hibernate.validator.HibernateValidator;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @version: V1.0
+ * @author: LiHengye
+ * @className: ParameterValidate
+ * @packageName: com.hydee.common.validate
+ * @description: 参数验证
+ * @data: 2019-06-17 10:48
+ **/
+public class ParameterValidate {
+
+
+ /**
+ * 开启快速结束模式 failFast (true)
+ */
+ private static Validator validator = Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
+ /**
+ * 校验对象
+ * @param t bean
+ * @param groups 校验组
+ * @return ValidResult
+ */
+ public static <T> ValidResult validateBean(T t,Class<?>...groups) {
+ ValidResult result = new ValidResult();
+ Set<ConstraintViolation<T>> violationSet = validator.validate(t,groups);
+ boolean hasError = violationSet != null && violationSet.size() > 0;
+ result.setHasErrors(hasError);
+ if (hasError) {
+ for (ConstraintViolation<T> violation : violationSet) {
+ result.addError(violation.getPropertyPath().toString(), violation.getMessageTemplate());
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 校验bean的某一个属性
+ * @param obj bean
+ * @param propertyName 属性名称
+ * @return ValidResult
+ */
+ public static <T> ValidResult validateProperty(T obj, String propertyName) {
+ ValidResult result = new ValidResult();
+ Set<ConstraintViolation<T>> violationSet = validator.validateProperty(obj, propertyName, Group.ADD.class);
+ boolean hasError = violationSet != null && violationSet.size() > 0;
+ result.setHasErrors(hasError);
+ if (hasError) {
+ for (ConstraintViolation<T> violation : violationSet) {
+ result.addError(propertyName, violation.getMessage());
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 校验结果类
+ */
+ public static class ValidResult {
+
+ /**
+ * 是否有错误
+ */
+ private boolean hasErrors;
+
+ /**
+ * 错误信息
+ */
+ private List<ErrorMessage> errors;
+
+ public ValidResult() {
+ this.errors = new ArrayList<>();
+ }
+ public boolean hasErrors() {
+ return hasErrors;
+ }
+
+ public void setHasErrors(boolean hasErrors) {
+ this.hasErrors = hasErrors;
+ }
+
+ /**
+ * 获取所有验证信息
+ * @return 集合形式
+ */
+ public List<ErrorMessage> getAllErrors() {
+ return errors;
+ }
+ /**
+ * 获取所有验证信息
+ * @return 字符串形式
+ */
+ public String getErrors(){
+ StringBuilder sb = new StringBuilder();
+ for (ErrorMessage error : errors) {
+ sb.append(error.getPropertyPath()).append(":不能为空");
+// sb.append(error.getPropertyPath()).append(":").append(error.getMessage()).append(" ");
+ }
+ return sb.toString();
+ }
+
+ public String getAllErrorMessage(){
+ StringBuilder sb = new StringBuilder();
+ for (ErrorMessage error : errors) {
+ if(error.getMessage() == null || error.getMessage().isEmpty()){
+ sb.append(error.getPropertyPath()).append(":不合法!");
+ }else{
+ sb.append(error.getPropertyPath()).append(":").append(error.getMessage()).append(" ");
+ }
+ }
+ return sb.toString();
+ }
+
+ public void addError(String propertyPath, String message) {
+ this.errors.add(new ErrorMessage(propertyPath, message));
+ }
+ }
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidateFailNoFast.java b/zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidateFailNoFast.java
new file mode 100644
index 0000000..d98fd61
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/validate/ParameterValidateFailNoFast.java
@@ -0,0 +1,134 @@
+/**
+ * projectName: common
+ * fileName: ParameterValidateFailNoFast.java
+ * packageName: com.hydee.common.validate
+ * date: 2021-04-22 9:25 上午
+ * copyright(c) 2021 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.common.validate;
+
+import com.matrix.system.common.validate.beans.ErrorMessage;
+import com.matrix.system.common.validate.group.Group;
+import org.hibernate.validator.HibernateValidator;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @version: V1.0
+ * @author: LiHengye
+ * @className: ParameterValidateFailNoFast
+ * @packageName: com.hydee.common.validate
+ * @description: 参数校验遇到错误非立刻返回
+ * @data: 2021-04-22 9:25 上午
+ **/
+public class ParameterValidateFailNoFast {
+
+ /**
+ * 开启快速结束模式 failFast (true)
+ */
+ private static Validator validator = Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();
+ /**
+ * 校验对象
+ * @param t bean
+ * @param groups 校验组
+ * @return ValidResult
+ */
+ public static <T> ValidResult validateBean(T t, Class<?>...groups) {
+ ValidResult result = new ValidResult();
+ Set<ConstraintViolation<T>> violationSet = validator.validate(t,groups);
+ boolean hasError = violationSet != null && violationSet.size() > 0;
+ result.setHasErrors(hasError);
+ if (hasError) {
+ for (ConstraintViolation<T> violation : violationSet) {
+ result.addError(violation.getPropertyPath().toString(), violation.getMessageTemplate());
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 校验bean的某一个属性
+ * @param obj bean
+ * @param propertyName 属性名称
+ * @return ValidResult
+ */
+ public static <T> ValidResult validateProperty(T obj, String propertyName) {
+ ValidResult result = new ValidResult();
+ Set<ConstraintViolation<T>> violationSet = validator.validateProperty(obj, propertyName, Group.ADD.class);
+ boolean hasError = violationSet != null && violationSet.size() > 0;
+ result.setHasErrors(hasError);
+ if (hasError) {
+ for (ConstraintViolation<T> violation : violationSet) {
+ result.addError(propertyName, violation.getMessage());
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 校验结果类
+ */
+ public static class ValidResult {
+
+ /**
+ * 是否有错误
+ */
+ private boolean hasErrors;
+
+ /**
+ * 错误信息
+ */
+ private List<ErrorMessage> errors;
+
+ public ValidResult() {
+ this.errors = new ArrayList<>();
+ }
+ public boolean hasErrors() {
+ return hasErrors;
+ }
+
+ public void setHasErrors(boolean hasErrors) {
+ this.hasErrors = hasErrors;
+ }
+
+ /**
+ * 获取所有验证信息
+ * @return 集合形式
+ */
+ public List<ErrorMessage> getAllErrors() {
+ return errors;
+ }
+ /**
+ * 获取所有验证信息
+ * @return 字符串形式
+ */
+ public String getErrors(){
+ StringBuilder sb = new StringBuilder();
+ for (ErrorMessage error : errors) {
+ sb.append(error.getPropertyPath()).append(":").append(error.getMessage()).append(" /");
+ }
+ return sb.toString();
+ }
+
+ public String getAllErrorMessage(){
+ StringBuilder sb = new StringBuilder();
+ for (ErrorMessage error : errors) {
+ if(error.getMessage() == null || error.getMessage().isEmpty()){
+ sb.append(error.getPropertyPath()).append(":不合法!");
+ }else{
+ sb.append(error.getPropertyPath()).append(":").append(error.getMessage()).append(" ");
+ }
+ }
+ return sb.toString();
+ }
+
+ public void addError(String propertyPath, String message) {
+ this.errors.add(new ErrorMessage(propertyPath, message));
+ }
+ }
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/validate/beans/ErrorMessage.java b/zq-erp/src/main/java/com/matrix/system/common/validate/beans/ErrorMessage.java
new file mode 100644
index 0000000..63003e2
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/validate/beans/ErrorMessage.java
@@ -0,0 +1,44 @@
+/**
+ * projectName: h3-organization
+ * fileName: ErrorMessage.java
+ * packageName: com.hydee.common.validate.beans
+ * date: 2019-06-17 10:42
+ * copyright(c) 2019 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.common.validate.beans;
+
+/**
+ * @version: V1.0
+ * @author: LiHengye
+ * @className: ErrorMessage
+ * @packageName: com.hydee.common.validate.beans
+ * @description: 错误信息
+ * @data: 2019-06-17 10:42
+ **/
+public class ErrorMessage {
+
+ private String propertyPath;
+
+ private String message;
+
+ public ErrorMessage(String propertyPath, String message) {
+ this.propertyPath = propertyPath;
+ this.message = message;
+ }
+
+ public String getPropertyPath() {
+ return propertyPath;
+ }
+
+ public void setPropertyPath(String propertyPath) {
+ this.propertyPath = propertyPath;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/validate/group/Group.java b/zq-erp/src/main/java/com/matrix/system/common/validate/group/Group.java
new file mode 100644
index 0000000..e3e3daf
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/validate/group/Group.java
@@ -0,0 +1,44 @@
+/**
+ * projectName: h3-organization
+ * fileName: Group.java
+ * packageName: group
+ * date: 2019-06-17 10:43
+ * copyright(c) 2019 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.common.validate.group;
+
+/**
+ * @version: V1.0
+ * @author: LiHengye
+ * @className: Group
+ * @packageName: group
+ * @description: 验证信息组
+ * @data: 2019-06-17 10:43
+ **/
+public interface Group {
+
+ /**
+ * 默认分组
+ */
+ static interface Default{}
+
+ /**
+ * 新增分组
+ */
+ static interface ADD{}
+
+ /**
+ * 修改分组
+ */
+ static interface MODIFY{}
+
+ /**
+ * 删除分组
+ */
+ static interface DELETE{}
+
+ /**
+ * 查询分组
+ */
+ static interface SELECT{}
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/OutStoreController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/OutStoreController.java
index 5a642fe..2b0dea4 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/OutStoreController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/OutStoreController.java
@@ -133,7 +133,7 @@
int i=0;
if (sysOutStore.getId() != null) {
- i=currentService.checkInfo(sysOutStore);
+ i=currentService.effectOutStore(sysOutStore);
}
if(i>0){
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "审核成功!");
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 7eae13c..f379302 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
@@ -243,7 +243,7 @@
private Integer carMaxSaleCount;
/**
- * 是一卡通吗
+ * 充值卡使用范围 是否所有产品
*/
private String carIsAll;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java
index cc06823..4116c43 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/ShoppingGoodsDao.java
@@ -90,7 +90,7 @@
int selectShopppingGoodsAipTotal(@Param("record") ShoppingGoodsListDto shoppingGoodsListDto);
- public List<ShoppingGoods> selectByIds(@Param("ids")List<Integer> ids);
+ public List<ShoppingGoods> selectByIds(@Param("ids")List<Long> ids);
int updateInvalidProduct();
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java
new file mode 100644
index 0000000..9b5b356
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java
@@ -0,0 +1,62 @@
+/**
+ * projectName: zq-erp
+ * fileName: MoneyCardChangeDto.java
+ * packageName: com.matrix.system.hive.dto
+ * date: 2022-03-11 10:24
+ * copyright(c) 2022 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.hive.dto;
+
+import com.matrix.system.common.validate.group.Group;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @version: V1.0
+ * @author: JiangYouYao
+ * @className: MoneyCardChangeDto
+ * @packageName: com.matrix.system.hive.dto
+ * @description: 储值卡操作DTO
+ * @data: 2022-03-11 10:24
+ **/
+@Data
+public class MoneyCardOperationDto {
+
+ /**
+ * 储值卡id
+ */
+ private Long carUseId;
+ /**
+ * 会员id
+ */
+ @NotNull(groups = Group.ADD.class)
+ private Long vipId;
+
+ /**
+ * 来源,购买,转让,赠送
+ */
+ @NotNull(groups = Group.ADD.class)
+ private String source;
+
+ /**
+ * 订单明细id
+ */
+ @NotNull(groups = Group.ADD.class)
+ private Long orderItemId;
+
+
+ /**
+ * 充值卡的id
+ */
+ @NotNull(groups = Group.ADD.class)
+ private Long goodsId;
+
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardChangeDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardPayDto.java
similarity index 90%
rename from zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardChangeDto.java
rename to zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardPayDto.java
index b99ae5a..7df89df 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardChangeDto.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardPayDto.java
@@ -16,11 +16,11 @@
* @author: JiangYouYao
* @className: MoneyCardChangeDto
* @packageName: com.matrix.system.hive.dto
- * @description: 储值卡余额变更DTO
+ * @description: 储值卡余额支付DTO
* @data: 2022-03-11 10:24
**/
@Data
-public class MoneyCardChangeDto {
+public class MoneyCardPayDto {
/**
@@ -50,7 +50,7 @@
/**
* 扣减次数
*/
- private Double count;
+ private Integer count;
/**
* 操作人
*/
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java
new file mode 100644
index 0000000..7c7ddec
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java
@@ -0,0 +1,71 @@
+package com.matrix.system.hive.dto;
+
+import com.matrix.system.hive.validation.ProjUseGroup;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 项目操作对象
+ */
+@Data
+public class ProjUseOperationDto {
+
+ /**
+ * 客户id
+ */
+ @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ private Long vipId;
+
+ /**
+ * 产品id
+ */
+ @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ private Long goodsId;
+
+ /**
+ * 添加次数
+ */
+ @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ private Integer count;
+
+ /**
+ * 购买支付金额
+ */
+ @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ private Double payMoney;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ /**
+ * 订单明细id
+ */
+ @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ private Long orderItemId;
+
+ /**
+ * 是否为赠送
+ */
+ @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ private boolean isFree;
+
+ /**
+ * 套餐折扣
+ * 设置折扣后,套餐下绑定的项目消耗金额会对应打折
+ * -- 套餐类型必传
+ */
+ @NotNull(groups = {ProjUseGroup.addTc.class})
+ private Double tcZk;
+
+ /**
+ * 所属套餐id
+ * -- 添加套餐下的项目必传
+ */
+ private Long tcId;
+
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
index c367c08..c083f38 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
@@ -2,7 +2,8 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.MoneyCardUse;
-import com.matrix.system.hive.dto.MoneyCardChangeDto;
+import com.matrix.system.hive.dto.MoneyCardOperationDto;
+import com.matrix.system.hive.dto.MoneyCardPayDto;
import com.matrix.system.hive.plugin.util.BaseServices;
import java.util.List;
@@ -16,15 +17,20 @@
/**
* 修改储值卡余额
*/
- void changeMoneyCard(List<MoneyCardChangeDto> moneyCardChangeDtoList);
-
-
-
+ void changeMoneyCard(List<MoneyCardPayDto> moneyCardPayDtoList);
/**
- * 新增MoneyCardUse
+ * 新增用户储值卡
+ * @param moneyCardOperationDtos
*/
+ public void addVipMoneyCard(List<MoneyCardOperationDto> moneyCardOperationDtos) ;
+
+
+
+ /**
+ * 新增MoneyCardUse
+ */
public int add(MoneyCardUse moneyCardUse);
/**
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
index 5f21562..9046886 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
@@ -116,11 +116,8 @@
public SysOrder updateAddCardMoney(CzXkVo czVo);
- public void addMoneyCardUse(SysOrder sourceOrder);
-
public void addOutStore(SysOrder sourceOrder);
- public void addTaocanProj(SysOrder sourceOrder);
public void setShopSelCount(SysOrder sourceOrder);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOutStoreService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOutStoreService.java
index dd538f2..8b89de0 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOutStoreService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOutStoreService.java
@@ -60,7 +60,12 @@
*/
public SysOutStore findById(Long id);
- public int checkInfo(SysOutStore sysOutStore);
+ /**
+ * 出库单审核通过,并扣减库存
+ * @param sysOutStore
+ * @return
+ */
+ public int effectOutStore(SysOutStore sysOutStore);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java
index ed21be0..fa92426 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java
@@ -4,6 +4,7 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.bean.SysProjUse;
+import com.matrix.system.hive.dto.ProjUseOperationDto;
import com.matrix.system.hive.plugin.util.BaseServices;
import java.util.List;
@@ -135,7 +136,13 @@
*/
public AjaxResult activeProj(SysProjUse proj);
-
+ /**
+ * 添加用户套餐和项目
+ *
+ * @param projUseDtoList
+ * @return
+ */
+ public void addUserProjUse(List<ProjUseOperationDto> projUseDtoList) ;
public int updateProjUseTck(SysProjUse projUse);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
index 2b6ba2e..a1b5de0 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
@@ -1,28 +1,36 @@
package com.matrix.system.hive.service.imp;
+import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.pojo.VerificationResult;
import com.matrix.core.tools.DateUtil;
+import com.matrix.system.common.validate.ParameterValidate;
+import com.matrix.system.common.validate.group.Group;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
-import com.matrix.system.hive.dto.MoneyCardChangeDto;
+import com.matrix.system.hive.dto.MoneyCardOperationDto;
+import com.matrix.system.hive.dto.MoneyCardPayDto;
+import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.MoneyCardUseService;
+import com.matrix.system.hive.service.ShoppingGoodsService;
+import com.matrix.system.hive.validation.ProjUseGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* @date 2016-09-17 10:17
*/
@Service("moneyCardUseService")
-public class MoneyCardUseServiceImpl extends ServiceImpl<MoneyCardUseDao,MoneyCardUse> implements MoneyCardUseService {
+public class MoneyCardUseServiceImpl extends ServiceImpl<MoneyCardUseDao, MoneyCardUse> implements MoneyCardUseService {
@Autowired
@@ -45,64 +53,176 @@
@Autowired
MoneyCardAssembleDao moneyCardAssembleDao;
+ @Autowired
+ MoneyCardUseFlowDao moneyCardUseFlowDao;
+
+ @Autowired
+ private ShoppingGoodsService shoppingGoodsService;
+
@Override
- public void changeMoneyCard(List<MoneyCardChangeDto> moneyCardChangeDtoList) {
+ @Transactional(rollbackFor = Exception.class)
+ public void addVipMoneyCard(List<MoneyCardOperationDto> moneyCardOperationDtos) {
+ moneyCardOperationDtos.forEach(dto->{
+ //参数校验
+ ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(dto, Group.ADD.class);
+ if (baseIdResult.hasErrors()) {
+ throw new GlobleException(baseIdResult.getErrors());
+ }
+ ShoppingGoods moneyCar = shoppingGoodsDao.selectById(dto.getGoodsId());
+ MoneyCardUse moneyCardUse = new MoneyCardUse();
+ BeanUtil.copyProperties(dto,moneyCardUse);
+ moneyCardUse.setVipId(dto.getVipId());
+ moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
+ moneyCardUse.setRealMoney(moneyCar.getSealPice());
+ moneyCardUse.setGoodsId(moneyCar.getId());
+ moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
+ moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N);
- // 判断商品是否在充值卡的限制购买,判断分类
- moneyCardChangeDtoList.forEach(cardUse->{
- VerificationResult verificationResult = checkIsBangding(cardUse, cardUse.getGoodsIds());
+ //余次处理
+ if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) {
+ moneyCardUse.setUseTotal(999999999);
+ moneyCardUse.setLastCount(999999999);
+ } else {
+ moneyCardUse.setUseTotal(moneyCar.getCarUseCount());
+ moneyCardUse.setLastCount(moneyCar.getCarUseCount());
+ }
+ //失效时间处理
+ Date invalidTime = shoppingGoodsService.calInvalidTime(moneyCar, 1, null);
+ moneyCardUse.setFailTime(invalidTime);
+ moneyCardUseDao.insert(moneyCardUse);
+
+ });
+
+
+
+
+
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void changeMoneyCard(List<MoneyCardPayDto> moneyCardPayDtoList) {
+
+ // 判断商品是否在充值卡的限制购买
+ moneyCardPayDtoList.forEach(cardUse -> {
+ VerificationResult verificationResult = checkIsBangding(cardUse.getCarUseId(), cardUse.getGoodsIds());
if (!verificationResult.isJudgeResult()) {
throw new GlobleException(verificationResult.getMsg());
}
});
- moneyCardChangeDtoList.get().forEach(item -> {
- if (!isInBangding(moneyCardUse, item.getGoodsId())) {
- throw new GlobleException(shoppingGoodsDao.selectById(item.getGoodsId()).getName() + "不在" + moneyCardUse.getCardName() + "优惠中");
+
+ moneyCardPayDtoList.forEach(moneyCardPayDto -> {
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId());
+ MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
+ if (Objects.nonNull(moneyCardPayDto.getGiftMoney()) && moneyCardPayDto.getGiftMoney()>0) {
+ if (moneyCardUse.getGiftMoney() >= moneyCardPayDto.getGiftMoney()) {
+ double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), moneyCardPayDto.getGiftMoney());
+ moneyCardUse.setGiftMoney(surplus);
+ moneyCardUseFlow.setGiftMoney(0D - moneyCardPayDto.getGiftMoney());
+ } else {
+ throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+ }
+ } else {
+ if (moneyCardUse.getRealMoney() >= moneyCardPayDto.getRealMoney()) {
+ double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), moneyCardPayDto.getRealMoney());
+ moneyCardUse.setRealMoney(surplus);
+ moneyCardUseFlow.setTotal(0 - moneyCardPayDto.getRealMoney());
+ } else {
+ throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+ }
}
+
+ if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_NO_N)) {
+ //余额为0时充值卡变为无效
+ if (moneyCardUse.getRealMoney().equals(0D) && moneyCardUse.getGiftMoney().equals(0D)) {
+ moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
+ moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
+ }
+ }
+
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(moneyCardUse.getGoodsId());
+ if (shoppingGoods != null) {
+ Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
+ moneyCardUse.setFailTime(invalidTime);
+ }
+
+ moneyCardUse.setLastCount(moneyCardUse.getLastCount() - moneyCardPayDto.getCount());
+
+ // 更新充值卡信息
+ moneyCardUseDao.update(moneyCardUse);
+ //设置卡项使用流水
+ moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+ moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo());
+ moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
+ moneyCardUseFlow.setTimes(-1);
+ moneyCardUseFlow.setType(moneyCardPayDto.getType());
+ moneyCardUseFlow.setCreateTime(new Date());
+ moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser());
+ moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
+ moneyCardUseFlowDao.insert(moneyCardUseFlow);
});
}
- private VerificationResult checkIsBangding(MoneyCardChangeDto moneyCardUse, List<Long> goodsIds) {
+ /**
+ * 检查商品是否在储值卡的消费范围内
+ * @param moneyCardUseId 储值卡id
+ * @param goodsIds 商品id集合
+ * @return
+ */
+ private VerificationResult checkIsBangding(Long moneyCardUseId, List<Long> goodsIds) {
// 如果是一卡通则肯定在绑定范围内
-
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardUseId);
+ //默认储值卡可以购买所有产品
if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_YES_Y)) {
- return true;
+ return VerificationResult.success();
} else {
- // 不是一卡通,
- // 判断卡是否可应用于所有产品
+ // 不是默认储值卡判断卡是否可应用于所有产品
ShoppingGoods cardGoods = shoppingGoodsDao.selectById(moneyCardUse.getGoodsId());
if (cardGoods != null) {
- if (Dictionary.FLAG_YES.equals(cardGoods.getCarIsAll())) {
- return true;
+ if (Dictionary.FLAG_YES.equals(cardGoods.getGoodType())) {
+ return VerificationResult.success();
}
}
-
// 比较分类
MoneyCardAssemble moneyCardAssemble = new MoneyCardAssemble();
moneyCardAssemble.setCardId(moneyCardUse.getGoodsId());
List<MoneyCardAssemble> cardAssembleList = moneyCardAssembleDao.selectByModel(moneyCardAssemble);
- ShoppingGoods yhGoods = shoppingGoodsDao.selectById(goodsId);
- boolean flag = false;
- for (MoneyCardAssemble cardAssemble : cardAssembleList) {
- // 比较类型
- if (cardAssemble.getType().equals(Dictionary.CZK_ASSEMBLE_FL)) {
- if (yhGoods.getCateId().equals(cardAssemble.getCateId())) {
- flag = true;
- break;
- }
- } else {
- // 比较绑定
- if (yhGoods.getId().equals(cardAssemble.getGoodsId())) {
- flag = true;
- break;
+ List<ShoppingGoods> yhGoods = shoppingGoodsDao.selectByIds(goodsIds);
+
+ StringBuilder msgBuilder = new StringBuilder();
+
+ for (ShoppingGoods goods : yhGoods) {
+ boolean isMatch = false;
+ for (MoneyCardAssemble cardAssemble : cardAssembleList) {
+ // 比较类型
+ if (cardAssemble.getType().equals(Dictionary.CZK_ASSEMBLE_FL)) {
+
+ if (goods.getCateId().equals(cardAssemble.getCateId())) {
+ isMatch = true;
+ break;
+ }
+ } else {
+ // 比较绑定
+ if (goods.getId().equals(cardAssemble.getGoodsId())) {
+ isMatch = true;
+ break;
+ }
}
}
+ if (!isMatch) {
+ msgBuilder.append(goods.getName() + "不在" + moneyCardUse.getCardName() + "优惠中 ");
+ }
}
- return flag;
+ if (msgBuilder.length() > 0) {
+ return VerificationResult.fail(msgBuilder.toString());
+ } else {
+ return VerificationResult.success();
+ }
+
}
}
@@ -276,7 +396,6 @@
.append(",是否赠送:" + getObj.getSourceName());
}
}
-
//设置为有效
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
index 3eb4294..6aad069 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
@@ -7,14 +7,33 @@
*/
package com.matrix.system.hive.service.imp;
-import com.matrix.system.hive.bean.ShoppingGoods;
-import com.matrix.system.hive.bean.SysOrder;
-import com.matrix.system.hive.bean.SysOrderFlow;
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.exception.GlobleException;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.common.bean.BusParameterSettings;
+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.constance.Dictionary;
+import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.ShoppingGoodsDao;
import com.matrix.system.hive.dao.SysOrderFlowDao;
+import com.matrix.system.hive.dto.MoneyCardOperationDto;
+import com.matrix.system.hive.dto.MoneyCardPayDto;
+import com.matrix.system.hive.dto.ProjUseOperationDto;
+import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.service.CodeService;
+import com.matrix.system.hive.service.MoneyCardUseService;
+import com.matrix.system.hive.service.SysProjUseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Collectors;
/**
* @version: V1.0
@@ -29,6 +48,9 @@
@Autowired
+ private SysProjUseService sysProjUseService;
+
+ @Autowired
private CodeService codeService;
@@ -38,12 +60,21 @@
@Autowired
private SysOrderFlowDao sysOrderFlowDao;
+ @Autowired
+ BusParameterSettingsDao busParameterSettingsDao;
+
+
+ @Autowired
+ MoneyCardUseService moneyCardUseService;
+
/**
* 创建支付流水
*
* @author:姜友瑶
*/
- public void addOrderFlow(SysOrder sourceOrder) {
+ public void addOrderFlow(SysOrder sourceOrder, boolean isBj) {
+
+ LogUtil.info("创建支付流水 id={}", sourceOrder.getId());
//处理支付流水
int flowCount = 1;
for (SysOrderFlow flow : sourceOrder.getFlows()) {
@@ -61,7 +92,12 @@
flow.setAmount(flow.getAmount().negate());
flow.setOrderId(sourceOrder.getOldOrderId());
} else {
- flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
+ if (isBj) {//jyytodo 优化不能根据isbj来判断流水类型
+ flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY);
+ } else {
+ flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
+ }
+
flow.setOrderId(sourceOrder.getId());
}
sysOrderFlowDao.insert(flow);
@@ -70,4 +106,133 @@
}
+ /**
+ * 新增项目和套餐的余次
+ *
+ * @author:姜友瑶
+ * @date 2016年9月2日
+ */
+ public void addTaocanProj(SysOrder order) {
+ List<SysOrderItem> itemList = order.getItems();
+ List<ProjUseOperationDto> projUseDtoList = Lists.newArrayList();
+ for (SysOrderItem sysOrderItem : itemList) {
+ // 折扣 项目的实际购买除以项目原价,来计算项目的消耗价格
+ // 赠送 计算全额的消耗业绩
+ ProjUseOperationDto projUseOperationDto = new ProjUseOperationDto();
+ if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
+ projUseOperationDto.setFree(false);
+ } else {
+ projUseOperationDto.setFree(true);
+ }
+ if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_TC)) {
+ //计算折扣
+ Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice();
+ projUseOperationDto.setTcZk(zk);
+ }
+ projUseOperationDto.setPayMoney(sysOrderItem.getZkPrice());
+ projUseOperationDto.setGoodsId(sysOrderItem.getGoodsId());
+ projUseOperationDto.setCount(sysOrderItem.getCount());
+ projUseOperationDto.setVipId(order.getVipId());
+ projUseOperationDto.setOrderItemId(sysOrderItem.getId());
+ projUseDtoList.add(projUseOperationDto);
+ }
+ sysProjUseService.addUserProjUse(projUseDtoList);
+ }
+
+ /**
+ * 全是赠送金额,且配置了赠送金额购买计算为赠送
+ *
+ * @param order
+ * @return
+ */
+ private boolean isGiftMoneyPay(SysOrder order) {
+ BusParameterSettings giftiIsfree = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_GIFTISFREE, order.getCompanyId());
+ if (giftiIsfree.getParamValue().equals("是")) {
+ return order.getFlows().stream().allMatch(item -> SysOrderFlow.IS_GIFT_Y.equals(item.getIsGift())
+ && item.getAmount().doubleValue() > 0D);
+ } else {
+ return false;
+ }
+
+
+ }
+
+
+ /**
+ * 使用充值卡付款操作
+ *
+ * @param pageOrder
+ */
+ public void cardPaySk(SysOrder pageOrder) {
+
+
+ SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+ List<SysOrderFlow> flows = pageOrder.getFlows();
+ List<Long> goodsIds = pageOrder.getItems().stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
+
+ List<MoneyCardPayDto> moneyCardPayDtoList = Lists.newArrayList();
+
+ flows.forEach(flow -> {
+ if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+ if (flow.getCardId() != null) {
+ MoneyCardPayDto dto = new MoneyCardPayDto();
+ dto.setOrderNo(pageOrder.getOrderNo());
+ dto.setOrderId(pageOrder.getId());
+ dto.setCount(1);
+ dto.setCarUseId(flow.getCardId());
+ dto.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
+ if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
+ dto.setGiftMoney(flow.getAmount().doubleValue());
+ } else {
+ dto.setRealMoney(flow.getAmount().doubleValue());
+ }
+ dto.setUpdateUser(user.getSuId());
+ dto.setGoodsIds(goodsIds);
+ moneyCardPayDtoList.add(dto);
+ } else {
+ throw new GlobleException("无效的储值卡支付方式");
+ }
+ }
+ });
+
+ if (CollectionUtils.isNotEmpty(moneyCardPayDtoList)) {
+ LogUtil.info("扣除储值卡余额{}", JSON.toJSONString(moneyCardPayDtoList));
+ moneyCardUseService.changeMoneyCard(moneyCardPayDtoList);
+ }
+ }
+
+ /**
+ * @param sourceOrder 如果购买了充值卡设置会员的充值卡
+ * @author:姜友瑶
+ * @date 2016年9月19日
+ */
+ public void addMoneyCardUse(SysOrder sourceOrder) {
+ List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList();
+ List<SysOrderItem> orderItemList = sourceOrder.getItems();
+ for (SysOrderItem sysOrderItem : orderItemList) {
+ // 如果购买的是充值卡
+ if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_CZK)) {
+ for (int i = 0; i < sysOrderItem.getCount(); i++) {
+
+ MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto();
+ moneyCardOperationDto.setVipId(sourceOrder.getVipId());
+ // 是否为赠送
+ if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) {
+ moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ } else {
+ moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_GM);
+ }
+ moneyCardOperationDto.setOrderItemId(sysOrderItem.getId());
+ moneyCardOperationDto.setGoodsId(sysOrderItem.getGoodsId());
+ moneyCardOperationDtos.add(moneyCardOperationDto);
+ }
+ }
+ }
+ if (CollUtil.isNotEmpty(moneyCardOperationDtos)) {
+ moneyCardUseService.addVipMoneyCard(moneyCardOperationDtos);
+ }
+
+ }
+
+
}
\ No newline at end of file
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 ce7fac0..ed9cb4b 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
@@ -64,6 +64,8 @@
private SysOrderItemDao orderItemDao;
@Autowired
private SysProjUseDao sysProjUseDao;
+
+
@Autowired
private SysStoreInfoDao storeInfoDao;
@Autowired
@@ -143,64 +145,16 @@
@Autowired
private SysOrderServiceHelper sysOrderServiceHelper;
+ @Autowired
+ private SysProjServicesService projServicesService;
- @Override
- public int add(SysOrder sysOrder) {
- return sysOrderDao.insert(sysOrder);
- }
-
- @Override
- public int modify(SysOrder sysOrder) {
-
- return sysOrderDao.update(sysOrder);
-
- }
-
- @Override
- public int remove(List<Long> list) {
-
- return sysOrderDao.deleteByIds(list);
-
- }
-
- @Override
- @Transactional
- public int removeById(Long id) {
- orderItemDao.deleteByOrderId(id);
- return sysOrderDao.deleteById(id);
- }
-
- @Override
- public List<SysOrder> findInPage(SysOrder sysOrder, PaginationVO pageVo) {
- if (pageVo != null) {
- pageVo.setSort("desc");
- pageVo.setSort("orderTime");
- }
- return sysOrderDao.selectInPage(sysOrder, pageVo);
- }
+ @Autowired
+ MoneyCardUseService moneyCardUseService;
- @Override
- public List<SysOrder> findByModel(SysOrder sysOrder) {
- return sysOrderDao.selectByModel(sysOrder);
- }
-
-
- @Override
- public int findTotal(SysOrder sysOrder) {
-
- return sysOrderDao.selectInPageCount(sysOrder);
-
- }
-
- @Override
- public SysOrder findById(Long id) {
- return sysOrderDao.selectById(id);
-
- }
-
+ //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓业务代码区↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
@Override
@Transactional(rollbackFor = Exception.class)
@@ -317,7 +271,7 @@
sysOrderDao.update(order);
//保存单据日志
- operationLogService.saveOperation(order.getCompanyId(), order.getShopId(),sysUsers.getSuId(),
+ operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
OperationFunctionEnum.ORDER,
OperationButtonEnum.CANCEL,
order.getId(),
@@ -422,7 +376,7 @@
order.setStatu(Dictionary.ORDER_STATU_YQX);
sysOrderDao.update(order);
//保存单据日志
- operationLogService.saveOperation(order.getCompanyId(), order.getShopId(),sysUsers.getSuId(),
+ operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
OperationFunctionEnum.ORDER,
OperationButtonEnum.CANCEL,
order.getId(),
@@ -430,7 +384,6 @@
order.getVipId(),
"已付款取消订单");
}
-
}
@@ -536,13 +489,16 @@
sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue());
//添加支付流水
- sysOrderServiceHelper.addOrderFlow(pageOrder);
+ sysOrderServiceHelper.addOrderFlow(pageOrder,false);
+
+ //扣除储值卡余额
+ sysOrderServiceHelper.cardPaySk(pageOrder);
// 设置会员充值卡使用情况
- addMoneyCardUse(pageOrder);
+ sysOrderServiceHelper.addMoneyCardUse(pageOrder);
// 改变客户项目套餐使用情况
- addTaocanProj(pageOrder);
+ sysOrderServiceHelper.addTaocanProj(pageOrder);
// 新增出库单
addOutStore(pageOrder);
@@ -550,7 +506,6 @@
// 设置业绩
achieveNewService.addAchaeveByOrder(pageOrder);
- setShopSelCount(pageOrder);
//设置会员积分
addVipScore(pageOrder);
@@ -563,6 +518,7 @@
/**
* 保存订单收款日志
+ *
* @param pageOrder
*/
private void saveOrderSkLog(SysOrder pageOrder) {
@@ -582,7 +538,7 @@
* @param pageOrder
*/
private void updateOrderInfo(SysOrder pageOrder) {
-
+ LogUtil.info("付款更新订单信息 id={}",pageOrder.getId());
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
pageOrder.setCashierId(user.getSuId());
@@ -635,17 +591,17 @@
GoodsSealLimitDto goodsSealLimitDto = new GoodsSealLimitDto();
goodsSealLimitDto.setVipId(pageOrder.getVipId());
goodsSealLimitDto.setSysOrderItemDtoList(Lists.newArrayList());
- pageOrder.getItems().forEach(e->{
+ pageOrder.getItems().forEach(e -> {
goodsSealLimitDto.getSysOrderItemDtoList().add(BeanUtil.copyProperties(e, SysOrderItemDto.class));
});
shoppingGoodsService.checkGoodsSealLimit(goodsSealLimitDto);
//检查业绩设置
checkOrderAchieve(pageOrder);
+
+ LogUtil.info("订单满足支付条件 id={}",pageOrder.getId());
+
}
-
-
-
/**
@@ -680,11 +636,8 @@
}
-
-
/**
* 设置会员消费积分
- *
* @param pageOrder
*/
private void addVipScore(SysOrder pageOrder) {
@@ -838,215 +791,10 @@
- /**
- * 验证商品是否达到最大发卡限制
- *
- * @author jiangyouyao
- */
- private void checkIsArrivedMax(ShoppingCarItem carItem) {
- // 获取该商品的最大购买数量
- ShoppingGoods shopGoods = shoppingGoodsDao.selectById(carItem.getGoodsId());
- Integer maxNum = shopGoods.getCarMaxSaleCount();
- // 最大发卡数量为0代表不做限制
- if (maxNum != null && maxNum != 0) {
- // 查询该商品已经被购买的次数
- Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId(), null);
- buyNum = (buyNum == null ? 0 : buyNum);
- if ((buyNum + carItem.getCount()) > maxNum) {
- throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
- }
- if ((buyNum + carItem.getCount()) == maxNum) {
- if (!shopGoods.getStaus().equals(Dictionary.BUSINESS_STATE_DOWN)) {
- shopGoods.setStaus(Dictionary.BUSINESS_STATE_DOWN);
- shoppingGoodsDao.update(shopGoods);
- }
- }
-
- }
- }
/**
- * 使用充值卡付款操作
- *
- * @param sourceOrder
- * @param moneyCardUse
- * @param flow
- */
- private void cardPaySk(MoneyCardUse moneyCardUse, SysOrder sourceOrder, SysOrderFlow flow) {
- // 判断商品是否在充值卡的限制购买,判断分类
- sourceOrder.getItems().forEach(item -> {
- if (!isInBangding(moneyCardUse, item.getGoodsId())) {
- throw new GlobleException(shoppingGoodsDao.selectById(item.getGoodsId()).getName() + "不在" + moneyCardUse.getCardName() + "优惠中");
- }
- });
-
- SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
-
- MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
- if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
- if (moneyCardUse.getGiftMoney() >= flow.getAmount().doubleValue()) {
- double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), flow.getAmount().doubleValue());
- moneyCardUse.setGiftMoney(surplus);
- moneyCardUseFlow.setGiftMoney(0D - flow.getAmount().doubleValue());
- } else {
- throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
- }
- } else {
- if (moneyCardUse.getRealMoney() >= flow.getAmount().doubleValue()) {
- double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), flow.getAmount().doubleValue());
- moneyCardUse.setRealMoney(surplus);
- moneyCardUseFlow.setTotal(0 - flow.getAmount().doubleValue());
- } else {
- throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
- }
- }
-
- if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_NO_N)) {
- //余额为0时充值卡变为无效
- if (moneyCardUse.getRealMoney().equals(0D) && moneyCardUse.getGiftMoney().equals(0D)) {
- moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
- moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
- }
- }
-
- ShoppingGoods shoppingGoods = shoppingGoodsService.findById(moneyCardUse.getGoodsId());
- if (shoppingGoods != null) {
- Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
- moneyCardUse.setFailTime(invalidTime);
- }
- // 更新充值卡信息
- moneyCardUseDao.update(moneyCardUse);
- //设置卡项使用流水
- moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
- moneyCardUseFlow.setOrderNo(sourceOrder.getOrderNo());
- moneyCardUseFlow.setVipId(sourceOrder.getVipId());
- moneyCardUseFlow.setTimes(-1);
- moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
- moneyCardUseFlow.setCreateTime(new Date());
- moneyCardUseFlow.setOperationId(user.getSuId());
- moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
- moneyCardUseFlowDao.insert(moneyCardUseFlow);
- }
-
- /**
- * @param moneyCardUse
- * @param goodsId
- * @return 返回类型 boolean
- * 判断商品是否在充值卡的优惠中
- * @author:姜友瑶
- * @date 2016年9月19日
- */
- private boolean isInBangding(MoneyCardUse moneyCardUse, Long goodsId) {
- // 如果是一卡通则肯定在绑定范围内
-
- if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_YES_Y)) {
- return true;
- } else {
- // 不是一卡通,
- // 判断卡是否可应用于所有产品
- ShoppingGoods cardGoods = shoppingGoodsDao.selectById(moneyCardUse.getGoodsId());
- if (cardGoods != null) {
- if (Dictionary.FLAG_YES.equals(cardGoods.getCarIsAll())) {
- return true;
- }
- }
-
- // 比较分类
- MoneyCardAssemble moneyCardAssemble = new MoneyCardAssemble();
- moneyCardAssemble.setCardId(moneyCardUse.getGoodsId());
- List<MoneyCardAssemble> cardAssembleList = moneyCardAssembleDao.selectByModel(moneyCardAssemble);
- ShoppingGoods yhGoods = shoppingGoodsDao.selectById(goodsId);
- boolean flag = false;
- for (MoneyCardAssemble cardAssemble : cardAssembleList) {
- // 比较类型
- if (cardAssemble.getType().equals(Dictionary.CZK_ASSEMBLE_FL)) {
- if (yhGoods.getCateId().equals(cardAssemble.getCateId())) {
- flag = true;
- break;
- }
- } else {
- // 比较绑定
- if (yhGoods.getId().equals(cardAssemble.getGoodsId())) {
- flag = true;
- break;
- }
- }
- }
- return flag;
- }
- }
-
- /**
- * 设置销量
- *
- * @param sourceOrder
- */
- public void setShopSelCount(SysOrder sourceOrder) {
- for (SysOrderItem item : sourceOrder.getItems()) {
- // 正真实销量
- ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
- if (goods.getRealSealCount() == null) {
- goods.setRealSealCount(item.getCount());
- } else {
- goods.setRealSealCount(goods.getRealSealCount() + item.getCount());
- }
- shoppingGoodsDao.update(goods);
- }
- }
-
- /**
- * @param sourceOrder 如果购买了充值卡设置会员的充值卡
- * @author:姜友瑶
- * @date 2016年9月19日
- */
- public void addMoneyCardUse(SysOrder sourceOrder) {
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- List<SysOrderItem> orderItemList = sourceOrder.getItems();
- for (SysOrderItem sysOrderItem : orderItemList) {
- // 如果购买的是充值卡
- if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_CZK)) {
-
- for (int i = 0; i < sysOrderItem.getCount(); i++) {
- ShoppingGoods moneyCar = shoppingGoodsDao.selectById(sysOrderItem.getGoodsId());
- MoneyCardUse moneyCardUse = new MoneyCardUse();
- moneyCardUse.setVipId(sourceOrder.getVipId());
- moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
- moneyCardUse.setRealMoney(moneyCar.getSealPice());
- moneyCardUse.setGoodsId(moneyCar.getId());
- moneyCardUse.setOrderItemId(sysOrderItem.getId());
- moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
- moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
- moneyCardUse.setCardName(moneyCar.getName());
- moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N);
- moneyCardUse.setVipId(sourceOrder.getVipId());
-
- // 是否为赠送
- if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) {
- moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
- } else {
- moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
- }
- //余次处理
- if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) {
- moneyCardUse.setUseTotal(999999999);
- moneyCardUse.setLastCount(999999999);
- } else {
- moneyCardUse.setUseTotal(moneyCar.getCarUseCount());
- moneyCardUse.setLastCount(moneyCar.getCarUseCount());
- }
- //失效时间处理
- Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
- moneyCardUse.setFailTime(invalidTime);
-
- moneyCardUseDao.insert(moneyCardUse);
-
- }
- }
- }
- }
-
- /**
+ * 补交
* @author:姜友瑶
* @date 2016年9月19日
*/
@@ -1055,50 +803,32 @@
public void updateAfterMoney(SysOrder pageOrder) {
SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
- int i = 1;
+
+ //添加支付流水
+ sysOrderServiceHelper.addOrderFlow(pageOrder,true);
+
+ //扣除储值卡余额
+ sysOrderServiceHelper.cardPaySk(pageOrder);
+
+
double refundTotal = 0D;
double cardPayTotal = 0D;
double cashPayTotal = 0D;
for (SysOrderFlow flow : pageOrder.getFlows()) {
- flow.setFlowNo(codeService.getFlowCode() + "-" + i);
- Long goodsId = pageOrder.getItems().get(0).getGoodsId();
- ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
- flow.setFlowContent(goods.getName() + "等" + pageOrder.getItems().size() + "件产品");
-
- flow.setOrderId(pageOrder.getId());
- flow.setVipId(pageOrder.getVipId());
- flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY);
// 若使用储值卡付款
if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
- if (flow.getCardId() != null) {
- cardPayTotal += flow.getAmount().doubleValue();
- MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
- cardPaySk(moneyCardUse, pageOrder, flow);
- }
+ cardPayTotal += flow.getAmount().doubleValue();
} else {
cashPayTotal += flow.getAmount().doubleValue();
}
-
refundTotal += flow.getAmount().doubleValue();
- flow.setShopId(sourceOrder.getShopId());
- flow.setCompanyId(sourceOrder.getCompanyId());
- sysOrderFlowDao.insert(flow);
- i++;
}
-
- boolean haQk = false;
if (refundTotal == pageOrder.getArrears()) {
- haQk = true;
- }
-
- //更新收款状态
- if (haQk) {
sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
- } else {
+ }else{
sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
}
-
sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
sourceOrder.setCardPay(sourceOrder.getCardPay() == null ? 0 : sourceOrder.getCardPay() + cardPayTotal);
sourceOrder.setCashPay(sourceOrder.getCashPay() == null ? 0 : sourceOrder.getCashPay() + cashPayTotal);
@@ -1223,237 +953,11 @@
}
- /**
- * 新增项目和套餐的余次
- *
- * @author:姜友瑶
- * @date 2016年9月2日
- */
- public void addTaocanProj(SysOrder order) {
- List<SysOrderItem> itemList = order.getItems();
- for (SysOrderItem sysOrderItem : itemList) {
- // 折扣 项目的实际购买除以项目原价,来计算项目的消耗价格
- // 赠送 计算全额的消耗业绩
- if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_XM)) {
- createXmProjuse(order, sysOrderItem);
- } else if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_TC)) {
- //每个套餐独立生成一个明细
- int orderCount = sysOrderItem.getCount();
- while (orderCount > 0) {
- createTaocanProjUse(order, sysOrderItem, null);
- orderCount--;
- }
- } else if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_ZHK)) {
- addZongheCarUse(order, sysOrderItem);
- }
- }
-
- }
-
- public void addZongheCarUse(SysOrder order, SysOrderItem sysOrderItem) {
- //处理一个订单买多次
- int orderCount = sysOrderItem.getCount();
- while (orderCount < 0) {
- orderCount--;
- //综合卡中包含的项目
- List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_XM);
- assembleList.forEach(item -> {
- //TODO 补综合卡逻辑
- createProjuseByAssemble(order, sysOrderItem, item, null, null, null, 0);
- });
-
- //处理综合卡中包含的套餐
- List<ShoppingGoodsAssemble> zhkAssemble = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_TC);
- zhkAssemble.forEach(taocan -> {
- int assembleCount = taocan.getTotal();
- while (assembleCount > 0) {
- assembleCount--;
- createTaocanProjUse(order, sysOrderItem, taocan);
- }
- });
- }
- }
- /**
- * 通过组合关系创建用户项目余次
- */
- private SysProjUse createProjuseByAssemble(SysOrder order, SysOrderItem sysOrderItem,
- ShoppingGoodsAssemble goodsAssemble, Long taocanId, Date failTime, String source, Integer maxCount) {
- //计算折扣
- Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice();
-
- SysProjUse puse = new SysProjUse();
- puse.setIsOver(Dictionary.DELETED_N);
- puse.setOrderItemId(sysOrderItem.getId());
- puse.setProjId(goodsAssemble.getAssembleGoodId());
- puse.setSurplusCount(goodsAssemble.getTotal() == null ? maxCount : goodsAssemble.getTotal());
- puse.setDeductionNum(goodsAssemble.getDeductionNum());
- puse.setProjName(goodsAssemble.getShoppingGoods().getName());
- puse.setVipId(order.getVipId());
- puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
- puse.setTaocanId(taocanId);
- puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
- puse.setSource(source);
-
- if (taocanId == null) {
- puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() * zk);
- } else {
- puse.setPrice(goodsAssemble.getPrice() * zk);
- }
-
-
- //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
- boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
- if (zsConsumeAchieve) {
- if (sysOrderItem.getPrice() <= 0) {
- //等于0取原价
- if (taocanId == null) {
- puse.setPrice(goodsAssemble.getShoppingGoods().getPrice());
- } else {
- puse.setPrice(goodsAssemble.getPrice());
- }
- }
- } else {
- puse.setPrice(0D);
- }
-
- puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
- puse.setFailTime(failTime);
- sysProjUseDao.insert(puse);
- return puse;
- }
-
-
- private void createTaocanProjUse(SysOrder order, SysOrderItem sysOrderItem, ShoppingGoodsAssemble goodsAssemble) {
-
- //新建套餐
- SysProjUse taocanProjUse = new SysProjUse();
-
- ShoppingGoods taocanShoppingGoods = sysOrderItem.getShoppingGoods();
-
-
- Long projId = sysOrderItem.getGoodsId();
-
- if (goodsAssemble != null) {
- taocanShoppingGoods = shoppingGoodsDao.selectById(goodsAssemble.getAssembleGoodId());
- projId = goodsAssemble.getAssembleGoodId();
- }
-
- taocanProjUse.setProjId(projId);
- taocanProjUse.setIsOver(Dictionary.DELETED_N);
- taocanProjUse.setOrderItemId(sysOrderItem.getId());
-
- taocanProjUse.setProjName(taocanShoppingGoods.getName());
- taocanProjUse.setVipId(order.getVipId());
- taocanProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
- taocanProjUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC);
- taocanProjUse.setIsCourse(taocanShoppingGoods.getIsCourse());
- taocanProjUse.setIsInfinite(taocanShoppingGoods.getIsInfinite());
- // 赠送和打折后金额为0的都视为赠送项目
- if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
- taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
- } else {
- taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
- }
- // 失效时间
- Date invalidTime = shoppingGoodsService.calInvalidTime(taocanShoppingGoods, 1, null);
- taocanProjUse.setFailTime(invalidTime);
- sysProjUseDao.insert(taocanProjUse);
- //计划次数
- int surplusCount = 0;
- //总余额
- Double sumBanance = 0D;
- //创建套餐绑定的项目
- List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(projId, ShoppingGoods.SHOPPING_GOODS_TYPE_XM);
- for (ShoppingGoodsAssemble assemble : assembleList) {
- SysProjUse tempUse = createProjuseByAssemble(order, sysOrderItem, assemble, taocanProjUse.getId(), taocanProjUse.getFailTime(), taocanProjUse.getSource(), taocanShoppingGoods.getCarUseCount());
- sumBanance += tempUse.getBalance();
- surplusCount += tempUse.getSurplusCount();
- }
- if (Dictionary.FLAG_NO_N.equals(taocanShoppingGoods.getIsCourse())) {
- //固定套餐,剩余次数等于绑定项目的次数
- taocanProjUse.setSurplusCount(surplusCount);
- //合计套餐余额
- taocanProjUse.setBalance(sumBanance);
- } else {
- //任选套餐剩余次数等于最大使用次数
- taocanProjUse.setSurplusCount(taocanShoppingGoods.getCarUseCount());
- taocanProjUse.setBalance(sysOrderItem.getZkPrice());
- }
-
- sysProjUseDao.update(taocanProjUse);
- }
-
- @Autowired
- private SysProjServicesService projServicesService;
-
- /**
- * 根据订单创建用户项目使用情况
- *
- * @param order
- * @param sysOrderItem
- */
- private void createXmProjuse(SysOrder order, SysOrderItem sysOrderItem) {
- SysProjUse puse = new SysProjUse();
- puse.setIsOver(Dictionary.DELETED_N);
- puse.setOrderItemId(sysOrderItem.getId());
- puse.setProjId(sysOrderItem.getGoodsId());
- puse.setSurplusCount(sysOrderItem.getCount());
- puse.setVipId(order.getVipId());
- puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
- puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
-
-
- puse.setProjName(sysOrderItem.getShoppingGoods().getName());
-
-
- // 赠送和打折后金额为0的都视为赠送项目
- if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
- puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
- puse.setPrice(sysOrderItem.getZkPrice());
- } else {
- puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
- //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
- boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
- if (zsConsumeAchieve) {
- //赠送情况下,如果收款金额大于0,就是赠送金额划扣的情况,金额即为划扣的折扣金额
- if (sysOrderItem.getZkPrice() > 0) {
- puse.setPrice(sysOrderItem.getZkPrice());
- } else {
- puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
- }
- } else {
- puse.setPrice(0D);
- }
- }
- // 设置失效时间
- Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
- puse.setFailTime(invalidTime);
- puse.setBalance(puse.getPrice() * puse.getSurplusCount());
- sysProjUseDao.insert(puse);
- }
-
- /**
- * 全是赠送金额,且配置了赠送金额购买计算为赠送
- *
- * @param order
- * @return
- */
- private boolean isGiftMoneyPay(SysOrder order) {
- BusParameterSettings giftiIsfree = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_GIFTISFREE, order.getCompanyId());
- if (giftiIsfree.getParamValue().equals("是")) {
- return order.getFlows().stream().allMatch(item -> SysOrderFlow.IS_GIFT_Y.equals(item.getIsGift())
- && item.getAmount().doubleValue() > 0D);
- } else {
- return false;
- }
-
-
- }
/**
@@ -1544,7 +1048,7 @@
order.setFlows(czVo.getFlows());
- sysOrderServiceHelper.addOrderFlow(order);
+ sysOrderServiceHelper.addOrderFlow(order,false);
// 添加员工业绩
achieveNewService.addAchaeveByOrder(order);
@@ -1638,7 +1142,7 @@
// 添加订单收款流水
- sysOrderServiceHelper.addOrderFlow(sysOrder);
+ sysOrderServiceHelper.addOrderFlow(sysOrder,false);
//退款退套餐退项目
refundProjUse(sysOrder);
//删除积分
@@ -1657,38 +1161,6 @@
}
- private void addRefundOrderFlow(SysOrder sourceOrder) {
- //处理支付流水
- int flowCount = 1;
- for (SysOrderFlow flow : sourceOrder.getFlows()) {
- //支付内容摘要设置
- Long goodsId = sourceOrder.getItems().get(0).getGoodsId();
- ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
- flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
- // 退款,则取负数
- flow.setFlowType(SysOrderFlow.FLOW_TYPE_REFUND);
- flow.setAmount(flow.getAmount().negate());
- flow.setOrderId(sourceOrder.getOldOrderId());
-
- //统计储值卡支付
- if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
- if (flow.getCardId() != null) {
- MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
- //修改储值卡余额
- cardPaySk(moneyCardUse, sourceOrder, flow);
- } else {
- throw new GlobleException("无效的储值卡支付方式");
- }
- }
-
- flow.setFlowNo(codeService.getFlowCode() + "-" + flowCount);
- flow.setVipId(sourceOrder.getVipId());
- flow.setShopId(sourceOrder.getShopId());
- flow.setCompanyId(sourceOrder.getCompanyId());
- sysOrderFlowDao.insert(flow);
- flowCount++;
- }
- }
private void refundCard(MoneyCardUse moneyCardUse, SysOrder sourceOrder, SysOrderFlow flow) {
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
@@ -1886,4 +1358,63 @@
public BigDecimal findVipArrearsByVipId(Long vipId) {
return sysOrderDao.selectArrearsByVipId(vipId);
}
+
+
+ //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓===增删改查代码区↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
+
+
+ @Override
+ public int add(SysOrder sysOrder) {
+ return sysOrderDao.insert(sysOrder);
+ }
+
+ @Override
+ public int modify(SysOrder sysOrder) {
+
+ return sysOrderDao.update(sysOrder);
+
+ }
+
+ @Override
+ public int remove(List<Long> list) {
+
+ return sysOrderDao.deleteByIds(list);
+
+ }
+
+ @Override
+ @Transactional
+ public int removeById(Long id) {
+ orderItemDao.deleteByOrderId(id);
+ return sysOrderDao.deleteById(id);
+ }
+
+ @Override
+ public List<SysOrder> findInPage(SysOrder sysOrder, PaginationVO pageVo) {
+ if (pageVo != null) {
+ pageVo.setSort("desc");
+ pageVo.setSort("orderTime");
+ }
+ return sysOrderDao.selectInPage(sysOrder, pageVo);
+ }
+
+
+ @Override
+ public List<SysOrder> findByModel(SysOrder sysOrder) {
+ return sysOrderDao.selectByModel(sysOrder);
+ }
+
+
+ @Override
+ public int findTotal(SysOrder sysOrder) {
+
+ return sysOrderDao.selectInPageCount(sysOrder);
+
+ }
+
+ @Override
+ public SysOrder findById(Long id) {
+ return sysOrderDao.selectById(id);
+
+ }
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOutStoreServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOutStoreServiceImpl.java
index 961d01e..eeada1b 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOutStoreServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOutStoreServiceImpl.java
@@ -143,8 +143,14 @@
}
@Override
- public int checkInfo(SysOutStore sysOutStore) {
+ public int effectOutStore(SysOutStore sysOutStore) {
+
SysOutStore queryStore = sysOutStoreDao.selectById(sysOutStore.getId());
+
+ if(!queryStore.getCheckStatus().equals(Dictionary.CHECK_STATUS_DSH)){
+ throw new GlobleException("单据状态已更新,请刷新");
+ }
+
List<SysOutStoreItem> list = queryStore.getOutStoreItems();
int flag = 0;
for (SysOutStoreItem item : list) {
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
index b30f76c..a464c3d 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.service.imp;
+import cn.hutool.core.collection.CollUtil;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
@@ -7,11 +8,18 @@
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.common.validate.ParameterValidate;
+import com.matrix.system.common.validate.group.Group;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
+import com.matrix.system.hive.dto.ProjUseOperationDto;
import com.matrix.system.hive.plugin.util.MoneyUtil;
+import com.matrix.system.hive.service.ShoppingGoodsService;
+import com.matrix.system.hive.service.SysProjServicesService;
import com.matrix.system.hive.service.SysProjUseService;
+import com.matrix.system.hive.validation.ProjUseGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -19,6 +27,9 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* @date 2016-07-03 20:53
@@ -28,7 +39,8 @@
@Autowired
private SysProjUseDao sysProjUseDao;
-
+ @Autowired
+ SysProjServicesService projServicesService;
@Autowired
private SysProjuseFreezeDao sysProjuseFreezeDao;
@@ -49,6 +61,11 @@
@Autowired
SysVipInfoDao sysVipInfoDao;
+ @Autowired
+ ShoppingGoodsService shoppingGoodsService;
+
+ @Autowired
+ BusParameterSettingsDao busParameterSettingsDao;
@Override
public int add(SysProjUse sysProjUse) {
@@ -60,7 +77,6 @@
@Override
public int modify(SysProjUse sysProjUse) {
//插入套餐项目操作记录
-
return sysProjUseDao.update(sysProjUse);
@@ -221,7 +237,7 @@
freeze.setVipId(taocan.getVipId());
SysProjuseFreeze freezeProj = sysProjuseFreezeDao.selectByOrderItemId(freeze);
// todo 因为目前没有在冻结的时候插入冻结记录,所以这里暂时这样处理
- if(freezeProj!=null){
+ if (freezeProj != null) {
Date dateAfter = DateUtil.nextNDate(taocan.getFailTime(), freezeProj.getGapDays());
taocan.setFailTime(dateAfter);
}
@@ -232,7 +248,7 @@
taocan.setStatus(Dictionary.TAOCAN_STATUS_YX);
sysProjUseDao.updateProjStatus(taocan);
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- SysProjUseFlow useFlow=new SysProjUseFlow();
+ SysProjUseFlow useFlow = new SysProjUseFlow();
useFlow.setProjName(taocan.getProjName());
useFlow.setProjUseId(taocan.getId());
useFlow.setOptionType("人工修改");
@@ -273,7 +289,7 @@
}
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- SysProjUseFlow useFlow=new SysProjUseFlow();
+ SysProjUseFlow useFlow = new SysProjUseFlow();
useFlow.setProjName(taocan.getProjName());
useFlow.setProjUseId(taocan.getId());
useFlow.setOptionType("人工修改");
@@ -364,7 +380,7 @@
int i = sysProjUseDao.updateTcStatus(sysProjUse.getId(), "无效");
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- SysProjUseFlow useFlow=new SysProjUseFlow();
+ SysProjUseFlow useFlow = new SysProjUseFlow();
useFlow.setProjName(taocan.getProjName());
useFlow.setProjUseId(taocan.getId());
useFlow.setOptionType("人工修改");
@@ -378,8 +394,6 @@
return i;
}
-
-
/*********************以下为项目使用情况操作***********************/
@@ -468,7 +482,7 @@
SysProjuseFreeze freeze = new SysProjuseFreeze();
freeze.setFreezeTime(new Date());
freeze.setVipId(sysProjUse.getVipId());
- freeze.setOrderItemId(sysProjUse.getId()+"");
+ freeze.setOrderItemId(sysProjUse.getId() + "");
SysProjuseFreeze getfreeze = sysProjuseFreezeDao.selectByOrderItemId(freeze);
int i = 0;
if (getfreeze != null) {
@@ -478,7 +492,7 @@
i = sysProjuseFreezeDao.insert(freeze);
}
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- SysProjUseFlow useFlow=new SysProjUseFlow();
+ SysProjUseFlow useFlow = new SysProjUseFlow();
useFlow.setProjName(sysProjUse.getProjName());
useFlow.setProjUseId(sysProjUse.getId());
useFlow.setOptionType("人工修改");
@@ -515,7 +529,7 @@
sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- SysProjUseFlow useFlow=new SysProjUseFlow();
+ SysProjUseFlow useFlow = new SysProjUseFlow();
useFlow.setProjName(sysProjUse.getProjName());
useFlow.setProjUseId(sysProjUse.getId());
useFlow.setOptionType("人工修改");
@@ -528,8 +542,6 @@
sysProjUseDao.insertFlow(useFlow);
return sysProjUseDao.update(sysProjUse);
}
-
-
/**
@@ -574,7 +586,7 @@
sysProjUseDao.update(proj);
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- SysProjUseFlow useFlow=new SysProjUseFlow();
+ SysProjUseFlow useFlow = new SysProjUseFlow();
useFlow.setProjName(proj.getProjName());
useFlow.setProjUseId(proj.getId());
useFlow.setOptionType("人工修改");
@@ -590,6 +602,151 @@
}
+ /**
+ * 添加用户套餐
+ *
+ * @param projUseDtoList
+ * @return
+ */
+ @Override
+ public void addUserProjUse(List<ProjUseOperationDto> projUseDtoList) {
+
+ if(CollUtil.isEmpty(projUseDtoList)){
+ throw new GlobleException("projUseDtoList 不能为空");
+ }
+
+ List<ShoppingGoods> shoppingGoodsList = shoppingGoodsDao.selectByIds(projUseDtoList.stream().map(ProjUseOperationDto::getGoodsId).collect(Collectors.toList()));
+ Map<Long, ShoppingGoods> shoppingGoodsMap = shoppingGoodsList.stream().collect(Collectors.toMap(ShoppingGoods::getId, Function.identity()));
+
+ for (ProjUseOperationDto projUseOperationDto : projUseDtoList) {
+ ShoppingGoods shoppingGoods = shoppingGoodsMap.get(projUseOperationDto.getGoodsId());
+ if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(shoppingGoods.getGoodType())) {
+ createProjectUse(projUseOperationDto, shoppingGoods);
+ } else if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(shoppingGoods.getGoodType())) {
+ //每个套餐独立生成一个明细
+ int orderCount = projUseOperationDto.getCount();
+ while (orderCount > 0) {
+ createTaocanProjUse(projUseOperationDto, shoppingGoods);
+ orderCount--;
+ }
+ }
+ }
+ }
+
+
+ private void createTaocanProjUse(ProjUseOperationDto projUseOperationDto, ShoppingGoods shoppingGoods) {
+ ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.addTc.class);
+ if (baseIdResult.hasErrors()) {
+ throw new GlobleException(baseIdResult.getErrors());
+ }
+
+ //新建套餐
+ SysProjUse taocanProjUse = new SysProjUse();
+
+ ShoppingGoods taocanShoppingGoods = shoppingGoods;
+
+
+ Long projId = shoppingGoods.getId();
+
+
+ taocanProjUse.setProjId(projId);
+ taocanProjUse.setIsOver(Dictionary.DELETED_N);
+ taocanProjUse.setOrderItemId(projUseOperationDto.getOrderItemId());
+
+ taocanProjUse.setProjName(taocanShoppingGoods.getName());
+ taocanProjUse.setVipId(projUseOperationDto.getVipId());
+ taocanProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+ taocanProjUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC);
+ taocanProjUse.setIsCourse(taocanShoppingGoods.getIsCourse());
+ taocanProjUse.setIsInfinite(taocanShoppingGoods.getIsInfinite());
+ // 赠送和打折后金额为0的都视为赠送项目
+ if (projUseOperationDto.isFree()) {
+ taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ } else {
+ taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
+ }
+ // 失效时间
+ Date invalidTime = shoppingGoodsService.calInvalidTime(taocanShoppingGoods, 1, null);
+ taocanProjUse.setFailTime(invalidTime);
+ sysProjUseDao.insert(taocanProjUse);
+ //计划次数
+ int surplusCount = 0;
+ //总余额
+ Double sumBanance = 0D;
+ //创建套餐绑定的项目
+ List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(projId, ShoppingGoods.SHOPPING_GOODS_TYPE_XM);
+ for (ShoppingGoodsAssemble assemble : assembleList) {
+ ProjUseOperationDto projUseDto = new ProjUseOperationDto();
+ projUseDto.setCount(assemble.getTotal());
+ projUseDto.setGoodsId(assemble.getShoppingGoodsId());
+ projUseDto.setFree(projUseOperationDto.isFree());
+ projUseDto.setPayMoney(MoneyUtil.mul(assemble.getPrice(), projUseOperationDto.getTcZk()));
+ projUseDto.setOrderItemId(projUseOperationDto.getOrderItemId());
+ projUseDto.setVipId(projUseOperationDto.getVipId());
+ projUseDto.setTcId(taocanProjUse.getId());
+ SysProjUse tempUse = createProjectUse(projUseDto, assemble.getShoppingGoods());
+ sumBanance += tempUse.getBalance();
+ surplusCount += tempUse.getSurplusCount();
+ }
+ if (Dictionary.FLAG_NO_N.equals(taocanShoppingGoods.getIsCourse())) {
+ //固定套餐,剩余次数等于绑定项目的次数
+ taocanProjUse.setSurplusCount(surplusCount);
+ //合计套餐余额
+ taocanProjUse.setBalance(sumBanance);
+ } else {
+ //任选套餐剩余次数等于最大使用次数
+ taocanProjUse.setSurplusCount(taocanShoppingGoods.getCarUseCount());
+ taocanProjUse.setBalance(projUseOperationDto.getPayMoney());
+ }
+
+ sysProjUseDao.update(taocanProjUse);
+ }
+
+ private SysProjUse createProjectUse(ProjUseOperationDto projUseOperationDto, ShoppingGoods shoppingGoods) {
+
+ ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.addProject.class);
+ if (baseIdResult.hasErrors()) {
+ throw new GlobleException(baseIdResult.getErrors());
+ }
+
+ SysProjUse puse = new SysProjUse();
+ puse.setIsOver(Dictionary.DELETED_N);
+ puse.setOrderItemId(projUseOperationDto.getOrderItemId());
+ puse.setProjId(projUseOperationDto.getGoodsId());
+ puse.setSurplusCount(projUseOperationDto.getCount());
+ puse.setVipId(projUseOperationDto.getVipId());
+ puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+ puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
+ puse.setProjName(shoppingGoods.getName());
+ puse.setTaocanId(projUseOperationDto.getTcId());
+ // 赠送和打折后金额为0的都视为赠送项目
+ if (!projUseOperationDto.isFree()) {
+ puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
+ puse.setPrice(projUseOperationDto.getPayMoney());
+ } else {
+ puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
+ boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
+ if (zsConsumeAchieve) {
+ //赠送情况下,如果收款金额大于0,就是赠送金额划扣的情况,金额即为划扣的折扣金额
+ if (projUseOperationDto.getPayMoney() > 0) {
+ puse.setPrice(projUseOperationDto.getPayMoney());
+ } else {
+ puse.setPrice(shoppingGoods.getSealPice());
+ }
+ } else {
+ puse.setPrice(0D);
+ }
+ }
+
+ // 设置失效时间
+ Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 1, null);
+ puse.setFailTime(invalidTime);
+ puse.setBalance(puse.getPrice() * puse.getSurplusCount());
+ sysProjUseDao.insert(puse);
+ return puse;
+ }
+
@Override
public int updateProjUseTck(SysProjUse projUse) {
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java b/zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java
new file mode 100644
index 0000000..0026bc0
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java
@@ -0,0 +1,19 @@
+package com.matrix.system.hive.validation;
+
+public interface ProjUseGroup {
+
+ /**
+ * 新增会员项目
+ */
+ interface addProject {
+ }
+
+ /**
+ * 新增会员套餐
+ */
+ interface addTc {
+ }
+
+
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
index c885d81..3690062 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
@@ -15,6 +15,7 @@
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.SysOrderServiceHelper;
import com.matrix.system.shopXcx.bean.ShopOrder;
import com.matrix.system.shopXcx.bean.ShopOrderDetails;
import com.matrix.system.shopXcx.bean.ShopSku;
@@ -87,6 +88,10 @@
@Autowired
private ShopSalesmanGradeDao shopSalesmanGradeDao;
+
+ @Autowired
+ private SysOrderServiceHelper sysOrderServiceHelper;
+
@Transactional(rollbackFor = Exception.class)
public void synchronizationOrderToErp(ShopOrder orderDto) {
@@ -201,10 +206,10 @@
SysOrder sourceOrder = sysOrderDao.selectById(order.getId());
sourceOrder.setItems(orderItemDao.selectByOrderId(order.getId()));
// 设置会员充值卡使用情况
- orderService.addMoneyCardUse(sourceOrder);
+ sysOrderServiceHelper.addMoneyCardUse(sourceOrder);
// 改变客户项目套餐使用情况
- orderService.addTaocanProj(sourceOrder);
+ sysOrderServiceHelper.addTaocanProj(sourceOrder);
// 设置销量
orderService.setShopSelCount(sourceOrder);
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
index cd96811..ace7138 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
@@ -257,6 +257,10 @@
prop="failTime"
label="到期时间">
</el-table-column>
+ <el-table-column
+ prop="createTime"
+ label="创建时间">
+ </el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button matrix:btn="vipinfoClub-youxiao" v-if="scope.row.status!='有效'" type="text" size="small" @click="tabProjValid(scope.$index, scope.row)">有效</el-button>
@@ -300,6 +304,11 @@
<el-table-column
prop="failTime"
label="到期时间">
+ </el-table-column>
+
+ <el-table-column
+ prop="createTime"
+ label="创建时间">
</el-table-column>
<el-table-column label="操作" fixed="right" width="160">
<template slot-scope="scope">
@@ -356,6 +365,10 @@
label="到期时间" width="160">
</el-table-column>
<el-table-column
+ prop="createTime"
+ label="创建时间">
+ </el-table-column>
+ <el-table-column
prop="remark"
label="备注">
</el-table-column>
--
Gitblit v1.9.1