ソースを参照

2024年3月21日17:36:20

纪新园 1 年間 前
コミット
b94dab70bc
20 ファイル変更583 行追加195 行削除
  1. 337 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/IntegralDetailIPage.java
  2. 2 5
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IIntegralDetailClient.java
  3. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java
  4. 12 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  5. 1 1
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/feign/IPJCorpClient.java
  6. 2 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java
  7. 6 0
      blade-service/blade-purchase-sales/pom.xml
  8. 65 7
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/IntegralDetailController.java
  9. 0 9
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/IntegralClient.java
  10. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java
  11. 37 9
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/fegin/PJCorprClient.java
  12. 3 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.java
  13. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml
  14. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  15. 21 91
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  16. 2 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  17. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  18. 82 66
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  19. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java
  20. 1 2
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

+ 337 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/IntegralDetailIPage.java

@@ -0,0 +1,337 @@
+package org.springblade.purchase.sales.entity;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.poi.ss.formula.functions.T;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Predicate;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/3/21
+ */
+public class IntegralDetailIPage implements IPage<IntegralDetail> {
+
+	private static final long serialVersionUID = 8545996863226528798L;
+
+	/**
+	 * 查询数据列表
+	 */
+	protected List<IntegralDetail> records = new ArrayList<>();
+
+	/**
+	 * 总数
+	 */
+	protected long total = 0;
+	/**
+	 * 每页显示条数,默认 10
+	 */
+	protected long size = 10;
+
+	/**
+	 * 当前页
+	 */
+	protected long current = 1;
+
+	/**
+	 * 排序字段信息
+	 */
+	@Getter
+	@Setter
+	protected List<OrderItem> orders = new ArrayList<>();
+
+	/**
+	 * 自动优化 COUNT SQL
+	 */
+	protected boolean optimizeCountSql = true;
+	/**
+	 * 是否进行 count 查询
+	 */
+	protected boolean isSearchCount = true;
+	/**
+	 * 是否命中count缓存
+	 */
+	protected boolean hitCount = false;
+	/**
+	 * countId
+	 */
+	@Getter
+	@Setter
+	protected String countId;
+	/**
+	 * countId
+	 */
+	@Getter
+	@Setter
+	protected Long maxLimit;
+
+	public IntegralDetailIPage() {
+	}
+
+	/**
+	 * 分页构造函数
+	 *
+	 * @param current 当前页
+	 * @param size    每页显示条数
+	 */
+	public IntegralDetailIPage(long current, long size) {
+		this(current, size, 0);
+	}
+
+	public IntegralDetailIPage(long current, long size, long total) {
+		this(current, size, total, true);
+	}
+
+	public IntegralDetailIPage(long current, long size, boolean isSearchCount) {
+		this(current, size, 0, isSearchCount);
+	}
+
+	public IntegralDetailIPage(long current, long size, long total, boolean isSearchCount) {
+		if (current > 1) {
+			this.current = current;
+		}
+		this.size = size;
+		this.total = total;
+		this.isSearchCount = isSearchCount;
+	}
+
+	/**
+	 * 是否存在上一页
+	 *
+	 * @return true / false
+	 */
+	public boolean hasPrevious() {
+		return this.current > 1;
+	}
+
+	/**
+	 * 是否存在下一页
+	 *
+	 * @return true / false
+	 */
+	public boolean hasNext() {
+		return this.current < this.getPages();
+	}
+
+	@Override
+	public List<IntegralDetail> getRecords() {
+		return this.records;
+	}
+
+	@Override
+	public IntegralDetailIPage setRecords(List<IntegralDetail> records) {
+		this.records = records;
+		return this;
+	}
+
+	@Override
+	public long getTotal() {
+		return this.total;
+	}
+
+	@Override
+	public IntegralDetailIPage setTotal(long total) {
+		this.total = total;
+		return this;
+	}
+
+	@Override
+	public long getSize() {
+		return this.size;
+	}
+
+	@Override
+	public IntegralDetailIPage setSize(long size) {
+		this.size = size;
+		return this;
+	}
+
+	@Override
+	public long getCurrent() {
+		return this.current;
+	}
+
+	@Override
+	public IntegralDetailIPage setCurrent(long current) {
+		this.current = current;
+		return this;
+	}
+
+	@Override
+	public String countId() {
+		return getCountId();
+	}
+
+	@Override
+	public Long maxLimit() {
+		return getMaxLimit();
+	}
+
+	/**
+	 * 查找 order 中正序排序的字段数组
+	 *
+	 * @param filter 过滤器
+	 * @return 返回正序排列的字段数组
+	 */
+	private String[] mapOrderToArray(Predicate<OrderItem> filter) {
+		List<String> columns = new ArrayList<>(orders.size());
+		orders.forEach(i -> {
+			if (filter.test(i)) {
+				columns.add(i.getColumn());
+			}
+		});
+		return columns.toArray(new String[0]);
+	}
+
+	/**
+	 * 移除符合条件的条件
+	 *
+	 * @param filter 条件判断
+	 */
+	private void removeOrder(Predicate<OrderItem> filter) {
+		for (int i = orders.size() - 1; i >= 0; i--) {
+			if (filter.test(orders.get(i))) {
+				orders.remove(i);
+			}
+		}
+	}
+
+	/**
+	 * 添加新的排序条件,构造条件可以使用工厂:{@link OrderItem#build(String, boolean)}
+	 *
+	 * @param items 条件
+	 * @return 返回分页参数本身
+	 */
+	public IntegralDetailIPage addOrder(OrderItem... items) {
+		orders.addAll(Arrays.asList(items));
+		return this;
+	}
+
+	/**
+	 * 添加新的排序条件,构造条件可以使用工厂:{@link OrderItem#build(String, boolean)}
+	 *
+	 * @param items 条件
+	 * @return 返回分页参数本身
+	 */
+	public IntegralDetailIPage addOrder(List<OrderItem> items) {
+		orders.addAll(items);
+		return this;
+	}
+
+	/**
+	 * 设置需要进行正序排序的字段
+	 * <p>
+	 * Replaced:{@link #addOrder(OrderItem...)}
+	 *
+	 * @param ascs 字段
+	 * @return 返回自身
+	 * @deprecated 3.2.0
+	 */
+	@Deprecated
+	public IntegralDetailIPage setAscs(List<String> ascs) {
+		return CollectionUtils.isNotEmpty(ascs) ? setAsc(ascs.toArray(new String[0])) : this;
+	}
+
+	/**
+	 * 升序
+	 * <p>
+	 * Replaced:{@link #addOrder(OrderItem...)}
+	 *
+	 * @param ascs 多个升序字段
+	 * @deprecated 3.2.0
+	 */
+	@Deprecated
+	public IntegralDetailIPage setAsc(String... ascs) {
+		// 保证原来方法 set 的语意
+		removeOrder(OrderItem::isAsc);
+		for (String s : ascs) {
+			addOrder(OrderItem.asc(s));
+		}
+		return this;
+	}
+
+	/**
+	 * Replaced:{@link #addOrder(OrderItem...)}
+	 *
+	 * @param descs 需要倒序排列的字段
+	 * @return 自身
+	 * @deprecated 3.2.0
+	 */
+	@Deprecated
+	public IntegralDetailIPage setDescs(List<String> descs) {
+		// 保证原来方法 set 的语意
+		if (CollectionUtils.isNotEmpty(descs)) {
+			removeOrder(item -> !item.isAsc());
+			for (String s : descs) {
+				addOrder(OrderItem.desc(s));
+			}
+		}
+		return this;
+	}
+
+	/**
+	 * 降序,这方法名不知道是谁起的
+	 * <p>
+	 * Replaced:{@link #addOrder(OrderItem...)}
+	 *
+	 * @param descs 多个降序字段
+	 * @deprecated 3.2.0
+	 */
+	@Deprecated
+	public IntegralDetailIPage setDesc(String... descs) {
+		setDescs(Arrays.asList(descs));
+		return this;
+	}
+
+	@Override
+	public List<OrderItem> orders() {
+		return getOrders();
+	}
+
+	@Override
+	public boolean optimizeCountSql() {
+		return optimizeCountSql;
+	}
+
+	public boolean isOptimizeCountSql() {
+		return optimizeCountSql();
+	}
+
+	@Override
+	public boolean isSearchCount() {
+		if (total < 0) {
+			return false;
+		}
+		return isSearchCount;
+	}
+
+	public IntegralDetailIPage setSearchCount(boolean isSearchCount) {
+		this.isSearchCount = isSearchCount;
+		return this;
+	}
+
+	public IntegralDetailIPage setOptimizeCountSql(boolean optimizeCountSql) {
+		this.optimizeCountSql = optimizeCountSql;
+		return this;
+	}
+
+	@Override
+	public void hitCount(boolean hit) {
+		this.hitCount = hit;
+	}
+
+	public void setHitCount(boolean hit) {
+		this.hitCount = hit;
+	}
+
+	@Override
+	public boolean isHitCount() {
+		return hitCount;
+	}
+}

+ 2 - 5
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IIntegralDetailClient.java

@@ -1,17 +1,18 @@
 package org.springblade.purchase.sales.feign;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.common.constant.LauncherConstant;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.IntegralDetail;
+import org.springblade.purchase.sales.entity.IntegralDetailIPage;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @FeignClient(
@@ -20,15 +21,11 @@ import java.util.List;
 public interface IIntegralDetailClient {
 	String API_PREFIX = "/integralDetail";
 	String SAVE = API_PREFIX + "/add";
-	String SELECT_PAGE = API_PREFIX + "/selectPage";
 	String UPDATE_BATCH_BY_ID = API_PREFIX + "/updateBatchById";
 
 	@PostMapping(SAVE)
 	R submit(@RequestBody IntegralDetail integralDetail);
 
-	@GetMapping(SELECT_PAGE)
-	R<IPage<IntegralDetail>> slectPage(@RequestParam("query") Query query, @RequestParam("lambdaQueryWrapper") LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper);
-
 	@PostMapping(UPDATE_BATCH_BY_ID)
 	void updateBatchById(@RequestBody List<IntegralDetail> integralDetailList);
 }

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java

@@ -291,4 +291,10 @@ public class PjGoodsDesc implements Serializable {
 	@ApiModelProperty(value = "尺寸")
 	private String goodsSize;
 
+	/**
+	 * 额度
+	 */
+	@ApiModelProperty(value = "额度")
+	private BigDecimal limit;
+
 }

+ 12 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java

@@ -507,4 +507,16 @@ public class PjOrder implements Serializable {
 	 */
 	@TableField(exist = false)
 	private String stockClerkName;
+
+	/**
+	 * 支付时间
+	 */
+	@ApiModelProperty(value = "支付时间")
+	private Date paymentDate;
+
+	/**
+	 * 支付时间
+	 */
+	@TableField(exist = false)
+	private List<String> paymentDateList;
 }

+ 1 - 1
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/feign/IPJCorpClient.java

@@ -32,7 +32,7 @@ public interface IPJCorpClient {
 	 * @return
 	 */
 	@GetMapping(GET_BY_CORP)
-	PjCorpsDesc getByCorp(@RequestParam("id") Long id);
+	PjCorpsDesc getByCorp(@RequestParam(value = "id", required = false) Long id);
 
 	@PostMapping(UPDATE_INTEGRAL_LT)
 	R updateIntegral(@RequestBody List<PjOrder> order);

+ 2 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -650,6 +650,7 @@ public class PaymentServiceImpl implements IPaymentService {
 						BigDecimal amount = new BigDecimal("0.00");
 						for (PjOrder selectOrder : re.getData()) {
 							selectOrder.setActualPaymentStatus(2);
+							selectOrder.setPaymentDate(new Date());
 							selectOrder.setOldTrxId(AnalysisMapUtils.getString("trxid", params));
 							selectOrder.setPaymentAmountTl(selectOrder.getTotalMoney());
 							selectOrder.setStatus(OrderTypeEnum.XSDQR.getType());
@@ -858,6 +859,7 @@ public class PaymentServiceImpl implements IPaymentService {
 					R<List<PjOrder>> re = ipjOrderClient.getByOrder(order);
 					if (re.isSuccess() && ObjectUtils.isNotNull(re.getData())) {
 						for (PjOrder selectOrder : re.getData()) {
+							selectOrder.setPaymentDate(new Date());
 							selectOrder.setActualPaymentStatus(2);
 							selectOrder.setPaymentAmountTl(selectOrder.getTotalMoney());
 							selectOrder.setStatus(OrderTypeEnum.XSDQR.getType());

+ 6 - 0
blade-service/blade-purchase-sales/pom.xml

@@ -101,6 +101,12 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-sales-part-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>

+ 65 - 7
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/IntegralDetailController.java

@@ -16,24 +16,29 @@
  */
 package org.springblade.purchase.sales.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.purchase.sales.entity.IntegralDetail;
-import org.springblade.purchase.sales.vo.IntegralDetailVO;
 import org.springblade.purchase.sales.service.IIntegralDetailService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.purchase.sales.vo.IntegralDetailVO;
+import org.springblade.salesPart.entity.PjCorpsDesc;
+import org.springblade.salesPart.feign.IPJCorpClient;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.math.BigDecimal;
 
 /**
  * 积分明细表 控制器
@@ -49,6 +54,8 @@ public class IntegralDetailController extends BladeController {
 
 	private final IIntegralDetailService integralDetailService;
 
+	private final IPJCorpClient corpClient;
+
 	/**
 	 * 详情
 	 */
@@ -126,4 +133,55 @@ public class IntegralDetailController extends BladeController {
 	}
 
 
+	/**
+	 * 积分兑换记录
+	 */
+	@GetMapping("/integralExchangeRecord")
+	public R<IPage<IntegralDetail>> integralExchangeRecord(Query query,
+														   Long corpId) {
+		if (corpId == null) {
+			if (AuthUtil.getUserRole().equals("客户")) {
+				PjCorpsDesc corpsDesc = corpClient.getByCorp(corpId);
+				if (ObjectUtils.isNull(corpsDesc)) {
+					throw new RuntimeException("未查到用户信息");
+				} else {
+					corpId = corpsDesc.getId();
+				}
+			}
+		}
+		LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(IntegralDetail::getCorpId, corpId)
+			.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId())
+			.apply("find_in_set(type,'积分兑换')")
+			.ne(IntegralDetail::getIntegral, BigDecimal.ZERO);
+		IPage<IntegralDetail> pages = integralDetailService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+	/**
+	 * 积分获取记录
+	 */
+	@GetMapping("/integralRecord")
+	public R<IPage<IntegralDetail>> integralRecord(Query query,
+												   Long corpId) {
+		if (corpId == null) {
+			if (AuthUtil.getUserRole().equals("客户")) {
+				PjCorpsDesc corpsDesc = corpClient.getByCorp(corpId);
+				if (ObjectUtils.isNull(corpsDesc)) {
+					throw new RuntimeException("未查到用户信息");
+				} else {
+					corpId = corpsDesc.getId();
+				}
+			}
+		}
+		LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(IntegralDetail::getCorpId, corpId)
+			.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId())
+			.apply("find_in_set(type,'购买获取,退款退货')")
+			.ne(IntegralDetail::getIntegral, BigDecimal.ZERO);
+		IPage<IntegralDetail> pages = integralDetailService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+
 }

+ 0 - 9
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/IntegralClient.java

@@ -1,10 +1,6 @@
 package org.springblade.purchase.sales.feign;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.IntegralDetail;
@@ -29,11 +25,6 @@ public class IntegralClient implements IIntegralDetailClient {
 	}
 
 	@Override
-	public R<IPage<IntegralDetail>> slectPage(Query query, LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper) {
-		return R.data(integralDetailService.page(Condition.getPage(query), lambdaQueryWrapper));
-	}
-
-	@Override
 	public void updateBatchById(List<IntegralDetail> integralDetailList) {
 		integralDetailService.updateBatchById(integralDetailList);
 	}

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java

@@ -426,6 +426,7 @@ public class CorpsDescController extends BladeController {
 		int pages = corpsDescService.count(new LambdaQueryWrapper<PjCorpsDesc>()
 			.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.eq(PjCorpsDesc::getSalesCompanyId, AuthUtil.getDeptId())
 			.eq(PjCorpsDesc::getSalesmanId, AuthUtil.getDeptId())
 			.eq(PjCorpsDesc::getCname, cname));
 		return R.data(pages);

+ 37 - 9
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/fegin/PJCorprClient.java

@@ -9,11 +9,9 @@ import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.IntegralDetail;
 import org.springblade.purchase.sales.feign.IIntegralDetailClient;
+import org.springblade.salesPart.corps.service.ICorpsAttnService;
 import org.springblade.salesPart.corps.service.ICorpsDescService;
-import org.springblade.salesPart.entity.PjCorpsDesc;
-import org.springblade.salesPart.entity.PjGoodsDesc;
-import org.springblade.salesPart.entity.PjOrder;
-import org.springblade.salesPart.entity.PjOrderItems;
+import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.feign.IPJCorpClient;
 import org.springblade.salesPart.goods.service.IGoodsDescService;
 import org.springblade.salesPart.order.service.IOrderItemsService;
@@ -37,6 +35,8 @@ public class PJCorprClient implements IPJCorpClient {
 
 	private final ICorpsDescService corpsDescService;
 
+	private final ICorpsAttnService corpsAttnService;
+
 	private final IUserClient userClient;
 
 	private final IOrderItemsService orderItemsService;
@@ -48,7 +48,19 @@ public class PJCorprClient implements IPJCorpClient {
 
 	@Override
 	public PjCorpsDesc getByCorp(Long id) {
-		return corpsDescService.getById(id);
+		if (id != null) {
+			return corpsDescService.getById(id);
+		} else {
+			PjCorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
+				.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId())
+				.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAttn::getIsDeleted, 0));
+			if (ObjectUtils.isNotNull(corpsAttn)) {
+				return corpsDescService.getById(corpsAttn.getPid());
+			} else {
+				return null;
+			}
+		}
 	}
 
 	@Override
@@ -77,7 +89,11 @@ public class PJCorprClient implements IPJCorpClient {
 						.eq(PjGoodsDesc::getIsDeleted, 0)
 						.eq(PjGoodsDesc::getEnableOrNot, 0)
 						.in(PjGoodsDesc::getId, goodsIds));
+				} else {
+					System.out.println("=========订单明细商品数据为空==========");
 				}
+			} else {
+				System.out.println("=========订单明细数据为空==========");
 			}
 			List<Long> customerId = orderList.stream().map(PjOrder::getCustomerId).filter(Objects::nonNull).collect(Collectors.toList());
 			if (!customerId.isEmpty()) {
@@ -92,11 +108,17 @@ public class PJCorprClient implements IPJCorpClient {
 							.in(PjCorpsDesc::getId, referenceId)
 							.eq(PjCorpsDesc::getIsDeleted, 0)
 							.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId()));
+					} else {
+						System.out.println("=========未找到客户推荐人数据==========");
 					}
 					List<Long> salesmanId = pjCorpsDescList.stream().map(PjCorpsDesc::getSalesmanId).filter(Objects::nonNull).collect(Collectors.toList());
 					if (!salesmanId.isEmpty()) {
 						userList = userClient.userListGetByIds(salesmanId);
+					} else {
+						System.out.println("=========未找到客户业务员数据==========");
 					}
+				} else {
+					System.out.println("=========未找到订单客户数据==========");
 				}
 			}
 			for (PjOrder order : orderList) {
@@ -136,16 +158,14 @@ public class PJCorprClient implements IPJCorpClient {
 								}
 							}
 						}
+						System.out.println("=========积分处理完成数据==========");
 						if (reference != null) {
 							corpsDescs.add(reference);
-							corpsDescService.updateById(reference);
 						}
 						if (user != null) {
 							users.add(user);
-							userClient.updateUser(user);
 						}
 						corpsDescs.add(corpsDesc);
-						corpsDescService.updateById(corpsDesc);
 						IntegralDetail integralDetail = new IntegralDetail();
 						integralDetail.setCreateTime(new Date());
 						integralDetail.setCreateUserName(AuthUtil.getUserName());
@@ -165,7 +185,14 @@ public class PJCorprClient implements IPJCorpClient {
 							integralDetail.setGoodsId(goodsId.substring(0, goodsId.length() - 1));
 						}
 						integralDetailList.add(integralDetail);
-						iIntegralDetailClient.submit(integralDetail);
+						R res = iIntegralDetailClient.submit(integralDetail);
+						if (res.isSuccess()) {
+							System.out.println("=========积分记录保存成功!" + res.getData() + "==========");
+						} else {
+							System.out.println("=========积分记录保存失败!" + res.getData() + "==========");
+						}
+					} else {
+						System.out.println("=========循环未找到明细数据==========");
 					}
 				}
 			}
@@ -181,6 +208,7 @@ public class PJCorprClient implements IPJCorpClient {
 		if (!integralDetailList.isEmpty()) {
 			iIntegralDetailClient.updateBatchById(integralDetailList);
 		}
+		System.out.println("=========积分修改完成数据==========");
 		return R.success("操作成功");
 	}
 }

+ 3 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.java

@@ -49,7 +49,9 @@ public interface CorpsDescMapper extends BaseMapper<PjCorpsDesc> {
 	 * @return
 	 */
 	PjCorpsDesc selectCorpsDescCname(@Param("cname") String cname,
-								   @Param("tenantId") String tenantId);
+								   @Param("salesCompanyId") String salesCompanyId,
+								   @Param("tenantId") String tenantId
+	);
 
 
 	/**

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml

@@ -113,6 +113,7 @@
         select id, cname
         from pjpf_corps_desc
         where is_deleted = 0
+          and sales_company_id = #{salesCompanyId}
           and cname = #{cname}
           and tenant_id = #{tenantId}
     </select>

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -688,7 +688,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 		}
 
 
-		PjCorpsDesc pjCorpsDesc = baseMapper.selectCorpsDescCname(corpsDesc.getCname(), AuthUtil.getTenantId());
+		PjCorpsDesc pjCorpsDesc = baseMapper.selectCorpsDescCname(corpsDesc.getCname(),AuthUtil.getDeptId(), AuthUtil.getTenantId());
 		if (ObjectUtils.isNotNull(pjCorpsDesc)) {
 			pjCorpsDesc.setSalesCompanyId(deptId);
 			pjCorpsDesc.setSalesCompanyName(deptName);

+ 21 - 91
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -36,7 +36,6 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.purchase.sales.entity.IntegralDetail;
 import org.springblade.purchase.sales.feign.IIntegralDetailClient;
 import org.springblade.salesPart.brand.service.IBrandFilesService;
 import org.springblade.salesPart.corps.service.ICorpsAttnService;
@@ -50,13 +49,11 @@ import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.vo.OrderStatistics;
 import org.springblade.salesPart.vo.OrderVO;
 import org.springblade.salesPart.vo.PjOrderStatisticsWeb;
-import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.math.BigDecimal;
@@ -124,14 +121,18 @@ public class OrderController extends BladeController {
 			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
 			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource())//来源
 			.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
-		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//创建日期
+		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//应结日期
 			lambdaQueryWrapper.ge(PjOrder::getDueDate, order.getDueDateList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getDueDate, order.getDueDateList().get(1));
 		}
-		if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//创建日期
+		if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//业务日期
 			lambdaQueryWrapper.ge(PjOrder::getBusinesDate, order.getBusinesDateList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getBusinesDate, order.getBusinesDateList().get(1));
 		}
+		if (order.getPaymentDateList() != null && order.getPaymentDateList().size() > 1) {//支付时间
+			lambdaQueryWrapper.ge(PjOrder::getPaymentDate, order.getPaymentDateList().get(0));
+			lambdaQueryWrapper.le(PjOrder::getPaymentDate, order.getPaymentDateList().get(1));
+		}
 		if (ObjectUtils.isNotNull(order.getActualPaymentType())) {
 			lambdaQueryWrapper.eq(PjOrder::getActualPaymentStatus, order.getActualPaymentType());
 		} else {
@@ -221,6 +222,10 @@ public class OrderController extends BladeController {
 			lambdaQueryWrapper.ge(PjOrder::getBusinesDate, order.getBusinesDateList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getBusinesDate, order.getBusinesDateList().get(1));
 		}
+		if (order.getPaymentDateList() != null && order.getPaymentDateList().size() > 1) {//支付时间
+			lambdaQueryWrapper.ge(PjOrder::getPaymentDate, order.getPaymentDateList().get(0));
+			lambdaQueryWrapper.le(PjOrder::getPaymentDate, order.getPaymentDateList().get(1));
+		}
 		if (ObjectUtils.isNotNull(order.getActualPaymentType())) {
 			lambdaQueryWrapper.eq(PjOrder::getActualPaymentStatus, order.getActualPaymentType());
 		} else {
@@ -865,109 +870,34 @@ public class OrderController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "小程序积分兑换", notes = "传入order")
 	@RepeatSubmit
-	public R integralExchange(@Valid @RequestBody PjOrder order) {
-		if (StringUtils.isBlank(order.getBsType())) {
-			throw new RuntimeException("缺少必要参数");
-		}
-		return orderService.integralExchange(order);
-	}
-
-	/**
-	 * 积分兑换记录
-	 */
-	@GetMapping("/integralExchangeRecord")
-	public R<IPage<IntegralDetail>> integralExchangeRecord(HttpServletRequest request, Query query, @RequestParam(value = "corpId", required = false) Long corpId) {
-		LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		if (corpId == null) {
-			if (ObjectUtils.isNull(request.getHeader("Blade-Auth"))) {
-				// 获取租户信息
-				R<Tenant> tenant = sysClient.getTenantByAppId(request.getHeader("appId"));
-				if (tenant.isSuccess() && ObjectUtils.isNotNull(tenant.getData())) {
-					lambdaQueryWrapper.eq(IntegralDetail::getTenantId, tenant.getData().getTenantId());
-				} else {
-					throw new RuntimeException("获取数据失败");
-				}
-			} else {
-				lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
-			}
-			if (AuthUtil.getUserRole().equals("客户")) {
-				PjCorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
-					.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId())
-					.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
-					.eq(PjCorpsAttn::getIsDeleted, 0));
-				if (ObjectUtils.isNull(corpsAttn)) {
-					throw new RuntimeException("未查到用户信息");
-				} else {
-					PjCorpsDesc corpsDesc = corpsDescService.getById(corpsAttn.getPid());
-					if (ObjectUtils.isNull(corpsDesc)) {
-						throw new RuntimeException("未查到用户信息");
-					} else {
-						corpId = corpsDesc.getId();
-					}
-				}
-			}
-		} else {
-			lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
-		}
-		lambdaQueryWrapper.eq(IntegralDetail::getCorpId, corpId)
-			.eq(IntegralDetail::getType, "积分兑换")
-			.ne(IntegralDetail::getIntegral, 0);
-		return iIntegralDetailClient.slectPage(query, lambdaQueryWrapper);
+	public R integralExchange(@Valid @RequestBody PjProductLaunch productLaunch) {
+		return orderService.integralExchange(productLaunch);
 	}
 
 	/**
-	 * 积分获取记录
+	 * 消费记录
 	 */
-	@GetMapping("/integralRecord")
-	public R<IPage<IntegralDetail>> integralRecord(HttpServletRequest request, Query query, @RequestParam(value = "corpId", required = false) Long corpId) {
-		LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		if (corpId == null) {
-			if (ObjectUtils.isNull(request.getHeader("Blade-Auth"))) {
-				// 获取租户信息
-				R<Tenant> tenant = sysClient.getTenantByAppId(request.getHeader("appId"));
-				if (tenant.isSuccess() && ObjectUtils.isNotNull(tenant.getData())) {
-					lambdaQueryWrapper.eq(IntegralDetail::getTenantId, tenant.getData().getTenantId());
-				} else {
-					throw new RuntimeException("获取数据失败");
-				}
-			} else {
-				lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
-			}
+	@GetMapping("/consumptionRecords")
+	public R<IPage<PjOrder>> consumptionRecords(PjOrder order, Query query) {
+		if (order.getCustomerId() == null) {
 			if (AuthUtil.getUserRole().equals("客户")) {
 				PjCorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
 					.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId())
 					.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
 					.eq(PjCorpsAttn::getIsDeleted, 0));
-				if (ObjectUtils.isNull(corpsAttn)) {
-					throw new RuntimeException("未查到用户信息");
-				} else {
-					PjCorpsDesc corpsDesc = corpsDescService.getById(corpsAttn.getPid());
-					if (ObjectUtils.isNull(corpsDesc)) {
-						throw new RuntimeException("未查到用户信息");
-					} else {
-						corpId = corpsDesc.getId();
+				if (ObjectUtils.isNotNull(corpsAttn)) {
+					PjCorpsDesc pjCorpsDesc = corpsDescService.getById(corpsAttn.getPid());
+					if (pjCorpsDesc != null) {
+						order.setCustomerId(pjCorpsDesc.getId());
 					}
 				}
 			}
-		} else {
-			lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
 		}
-		lambdaQueryWrapper.eq(IntegralDetail::getCorpId, corpId)
-			.apply("find_in_set(type,'购买获取,退款退货')")
-			.ne(IntegralDetail::getIntegral, 0);
-		return iIntegralDetailClient.slectPage(query, lambdaQueryWrapper);
-	}
-
-	/**
-	 * 消费记录
-	 */
-	@GetMapping("/consumptionRecords")
-	public R<IPage<PjOrder>> consumptionRecords(PjOrder order, Query query) {
 		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.eq(PjOrder::getBsType, "XS")
-			.eq(PjOrder::getWhetherIntegral, "0")
+			.ne(PjOrder::getWhetherIntegral, "1")
 			.eq(PjOrder::getCustomerId, order.getCustomerId());
 		return R.data(orderService.page(Condition.getPage(query), lambdaQueryWrapper));
 	}

+ 2 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml

@@ -87,7 +87,7 @@
         AND poi.tenant_id = #{saleDetailDto.tenantId}
         AND po.tenant_id = #{saleDetailDto.tenantId}
         <if test="saleDetailDto.salesCompanyId !=null and saleDetailDto.salesCompanyId != ''">
-            and find_in_set(shared_company_id,#{saleDetailDto.salesCompanyId})
+            and find_in_set(po.sales_company_id,#{saleDetailDto.salesCompanyId})
         </if>
         <if test="saleDetailDto.customerName !=null and saleDetailDto.customerName != ''">
             and po.customer_name like concat('%', #{saleDetailDto.customerName}, '%')
@@ -164,7 +164,7 @@
         AND poi.tenant_id = #{tenantId}
         AND po.tenant_id = #{tenantId}
         <if test="salesCompanyId !=null and salesCompanyId != ''">
-            and find_in_set(shared_company_id,#{salesCompanyId})
+            and find_in_set(po.sales_company_id,#{salesCompanyId})
         </if>
         <if test="customerName !=null and customerName != ''">
             and po.customer_name like concat('%', #{customerName}, '%')

+ 2 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
+import org.springblade.salesPart.entity.PjProductLaunch;
 import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
 import org.springblade.salesPart.excel.StockExportExcel;
 import org.springblade.salesPart.vo.OrderStatistics;
@@ -166,7 +167,7 @@ public interface IOrderService extends IService<PjOrder> {
 	 * @param order
 	 * @return
 	 */
-	R integralExchange(PjOrder order);
+	R integralExchange(PjProductLaunch productLaunch);
 
 	/**
 	 * 一键采购入库

+ 82 - 66
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -45,6 +45,7 @@ import org.springblade.salesPart.check.entity.PjAuditPathsLevels;
 import org.springblade.salesPart.check.service.IAuditPathsActsService;
 import org.springblade.salesPart.check.service.IAuditPathsLevelsService;
 import org.springblade.salesPart.check.service.IAuditProecessService;
+import org.springblade.salesPart.corps.mapper.CorpsAttnMapper;
 import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
@@ -111,6 +112,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	private final ShipMapper shipMapper;
 	private final IShipItemsService shipItemsService;
 	private final CorpsDescMapper corpsDescMapper;
+	private final CorpsAttnMapper corpsAttnMapper;//客户联系人
 	private final StorageDescMapper storageDescMapper;
 	private final GoodsTypeMapper goodsTypeMapper;
 	private final IStockDescService stockDescService;
@@ -417,9 +419,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	}
 
 	@Override
-	public R integralExchange(PjOrder order) {
+	public R integralExchange(PjProductLaunch productLaunch) {
+		PjOrder order = new PjOrder();
+		order.setBsType("XS");
+		PjCorpsDesc corpsDesc = null;
+		//根据当前登录人获得客户
+		PjCorpsAttn corpsAttn = corpsAttnMapper.selectOne(new LambdaQueryWrapper<PjCorpsAttn>()
+			.eq(PjCorpsAttn::getIsDeleted, 0)
+			.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId()));
+		if (ObjectUtil.isNotEmpty(corpsAttn)) {
+			corpsDesc = corpsDescMapper.selectById(corpsAttn.getPid());
+			if (ObjectUtil.isEmpty(corpsDesc)) {
+				throw new RuntimeException("未查到用户信息");
+			}
+		} else {
+			throw new RuntimeException("未查到用户信息");
+		}
 		//客户名称
-		PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
 		order.setCustomerName(corpsDesc.getCname());
 
 		// 获取系统编号
@@ -439,6 +456,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 			}
 			order.setWhetherIntegral("1");
+			order.setBusinessSource("外部销售");
 			order.setOrdNo((String) billNo.getData());
 			order.setSrcOrdNo((String) billNo.getData());
 			order.setCreateTime(new Date());
@@ -447,7 +465,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			order.setTenantId(AuthUtil.getTenantId());
 			order.setStatus(OrderTypeEnum.XSLR.getType());
 			order.setBusinessSource(OrderTypeEnum.WEB.getType());
-			order.setActualPaymentStatus(1);
+			order.setActualPaymentStatus(2);
 			baseMapper.insert(order);
 		} else {
 			order.setUpdateUser(AuthUtil.getUserId());
@@ -455,69 +473,67 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			baseMapper.updateById(order);
 		}
 		// 保存订单明细
-		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
-			//所属公司
-			R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
-			if (ObjectUtil.isNotEmpty(dept)) {
-				order.setSalesCompanyId(dept.getData().getId());
-				order.setSalesCompanyName(dept.getData().getFullName());
-				if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
-					order.setSharedCompanyId(dept.getData().getId());
-					order.setSharedCompanyName(dept.getData().getFullName());
-				} else {
-					order.setSharedCompanyId(order.getSharedCompanyId());
-					order.setSharedCompanyName(order.getSharedCompanyName());
-				}
+		//所属公司
+		R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
+		if (ObjectUtil.isNotEmpty(dept)) {
+			order.setSalesCompanyId(dept.getData().getId());
+			order.setSalesCompanyName(dept.getData().getFullName());
+			if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
+				order.setSharedCompanyId(dept.getData().getId());
+				order.setSharedCompanyName(dept.getData().getFullName());
 			} else {
-				throw new SecurityException("未维护所属公司");
-			}
-			StringBuilder goodsName = new StringBuilder();
-			StringBuilder goodsIds = new StringBuilder();
-			StringBuilder retrieval = new StringBuilder();
-			for (PjOrderItems item : order.getOrderItemsList()) {
-				item.setBizType(order.getBsType());
-				item.setBillNo(order.getOrdNo());
-				//计算小计
-				item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
-				//获得商品
-				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
-				if (ObjectUtil.isEmpty(goodsDesc)) {
-					throw new RuntimeException("商品数据异常");
-				}
-				item.setBrandName(goodsDesc.getBrandName());
-				goodsName = goodsName.append(goodsDesc.getCname()).append(",");
-				goodsIds = goodsIds.append(goodsDesc.getId()).append(",");
-				retrieval = retrieval.append(goodsDesc.getCnameInt()).append(",");
-				if (item.getId() == null) {
-					item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setPid(order.getId());
-					item.setTenantId(AuthUtil.getTenantId());
-				} else {
-					item.setUpdateTime(new Date());
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setPid(order.getId());
-				}
+				order.setSharedCompanyId(order.getSharedCompanyId());
+				order.setSharedCompanyName(order.getSharedCompanyName());
 			}
-			orderItemsService.saveOrUpdateBatch(order.getOrderItemsList());
-			if (goodsName.length() > 0) {
-				order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
-			}
-			if (retrieval.length() > 0) {
-				order.setShortcutJoin(retrieval.substring(0, retrieval.length() - 1));
+		} else {
+			throw new SecurityException("未维护所属公司");
+		}
+		if (productLaunch != null) {
+			PjOrderItems item = new PjOrderItems();
+			item.setBizType(order.getBsType());
+			item.setBillNo(order.getOrdNo());
+
+			//商品名称
+			PjGoodsDesc goodsDesc = goodsDescMapper.selectById(productLaunch.getGoodsId());
+			item.setGoodsId(productLaunch.getGoodsId());
+			item.setGoodsName(goodsDesc.getCname());
+			item.setGoodsNo(goodsDesc.getCode());
+			item.setPropertyName(goodsDesc.getSpecificationAndModel());
+			item.setPattern(goodsDesc.getBrandItem());
+			item.setGoodsDescription(goodsDesc.getGoodsDescription());
+			item.setUnits(goodsDesc.getUnit());
+			item.setBrandId(goodsDesc.getBrandId());
+			item.setBrandName(goodsDesc.getBrandName());
+
+			item.setGoodsNum(productLaunch.getGoodsNum());
+			item.setSalesCompanyId(productLaunch.getSalesCompanyId());
+			item.setSalesCompanyName(productLaunch.getSalesCompanyName());
+			item.setPrice(productLaunch.getMallPrice());
+			item.setProductLaunchId(productLaunch.getId());
+			item.setInventory(productLaunch.getInventory());
+			item.setTenantId(AuthUtil.getTenantId());
+			//计算小计
+			item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()).setScale(2, RoundingMode.HALF_UP));
+			if (item.getId() == null) {
+				item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				item.setCreateTime(new Date());
+				item.setCreateUser(AuthUtil.getUserId());
+				item.setPid(order.getId());
+				item.setTenantId(AuthUtil.getTenantId());
+			} else {
+				item.setUpdateTime(new Date());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setPid(order.getId());
 			}
-			BigDecimal totalMoney = BigDecimal.ZERO;
-			order.setNumberRows(order.getOrderItemsList().size());//行数
+			orderItemsService.saveOrUpdate(item);
+			order.setGoodsNameJoin(goodsDesc.getCname());
+			order.setShortcutJoin(goodsDesc.getIntegral() + "");
+			BigDecimal totalMoney = item.getSubTotalMoney();
+			order.setNumberRows(1);//行数
 			//总数量
-			order.setGoodsTotalNum(order.getOrderItemsList().stream().filter(e -> e.getGoodsNum() != null).map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setGoodsTotalNum(productLaunch.getGoodsNum());
 			//总已发数量
-			order.setGoodsTotalShipNum(order.getOrderItemsList().stream().filter(e -> e.getSendNum() != null).map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO, BigDecimal::add));
-			//总金额
-			totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
-				return x.add(y.getGoodsNum().multiply(y.getPrice()));
-			}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-
+			order.setGoodsTotalShipNum(new BigDecimal("0"));
 			if (totalMoney.compareTo(corpsDesc.getPointsBalance()) > 0) {
 				throw new RuntimeException("积分余额不足,兑换失败");
 			} else {
@@ -536,13 +552,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			integralDetail.setCorpName(corpsDesc.getCname());
 			integralDetail.setIntegral(order.getTotalMoney());
 			integralDetail.setGoodsName(order.getGoodsNameJoin());
-			if (goodsIds.length() > 0) {
-				integralDetail.setGoodsId(goodsIds.substring(0, goodsIds.length() - 1));
-			}
+			integralDetail.setGoodsId(goodsDesc.getId() + "");
 			iIntegralDetailClient.submit(integralDetail);
+			corpsDescMapper.updateById(corpsDesc);
+			baseMapper.updateById(order);
+		} else {
+			throw new RuntimeException("缺少必要参数");
 		}
-		corpsDescMapper.updateById(corpsDesc);
-		baseMapper.updateById(order);
 		return R.data(order);
 	}
 

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -421,6 +421,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					order.setBsType(OrderTypeEnum.SALES.getType());
 					order.setBusinessSource(OrderTypeEnum.XCX.getType());
 					order.setReceivableType("网络支付");
+					order.setWhetherIntegral("0");
 					orderService.save(order);
 					ids.append(order.getId()).append(",");
 					//保存销售明细信息

+ 1 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -21,7 +21,6 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.springblade.common.constant.TenantConstant;
@@ -479,7 +478,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 	 */
 	@Override
 	public List<User> selectUserIds(String userIds) {
-		if (StringUtils.isBlank(userIds)) {
+		if (ObjectUtils.isNull(userIds) || "null".equals(userIds)) {
 			return Collections.emptyList();
 		}