|
@@ -14,10 +14,7 @@ import com.caimei365.order.model.enums.ReceiptType;
|
|
|
import com.caimei365.order.model.po.BalanceRecordPo;
|
|
|
import com.caimei365.order.model.po.OrderReceiptRelationPo;
|
|
|
import com.caimei365.order.model.po.ReceiptPo;
|
|
|
-import com.caimei365.order.model.vo.OrderVo;
|
|
|
-import com.caimei365.order.model.vo.ReceiptTypeVo;
|
|
|
-import com.caimei365.order.model.vo.ReceiptUserVo;
|
|
|
-import com.caimei365.order.model.vo.ReceiptVo;
|
|
|
+import com.caimei365.order.model.vo.*;
|
|
|
import com.caimei365.order.service.ReceiptService;
|
|
|
import com.caimei365.order.utils.DateUtils;
|
|
|
import com.caimei365.order.utils.MathUtil;
|
|
@@ -25,6 +22,7 @@ import com.caimei365.order.utils.Md5Util;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.ArrayUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
@@ -34,6 +32,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
@@ -443,14 +442,14 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
paramsBo.setSmsMd5Code(Md5Util.md5(message));
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(receiptStatus)) {
|
|
|
- String[] receiptStatusList = null;
|
|
|
+ String[] receiptStatusArr = null;
|
|
|
if ("1".equals(receiptStatus)) {
|
|
|
- receiptStatusList = "1,4,5".split(",");
|
|
|
+ receiptStatusArr = "1,4,5".split(",");
|
|
|
} else {
|
|
|
- receiptStatusList = receiptStatus.split(",");
|
|
|
+ receiptStatusArr = receiptStatus.split(",");
|
|
|
}
|
|
|
paramsBo.setReceiptStatus(receiptStatus);
|
|
|
- paramsBo.setReceiptStatusList(receiptStatusList);
|
|
|
+ paramsBo.setReceiptStatusArr(receiptStatusArr);
|
|
|
}
|
|
|
// 分页请求数据
|
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
@@ -512,6 +511,172 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
return ResponseJson.success(receipt);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取收款商品订单列表
|
|
|
+ *
|
|
|
+ * @param id 收款ID
|
|
|
+ * @param organizeId 组织ID
|
|
|
+ * @param orderReceiptStatus 订单收款状态:1待收款,2部分收款,3已收款
|
|
|
+ * @param userName 客户名称
|
|
|
+ * @param openid 微信openid
|
|
|
+ * @param pageNum 页码
|
|
|
+ * @param pageSize 每页数量
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResponseJson<PageInfo<ReceiptVo>> getReceiptOrderList(Integer id, Integer type, Integer organizeId, String orderReceiptStatus, String userName, String openid, int pageNum, int pageSize) {
|
|
|
+ // 操作用户
|
|
|
+ ReceiptUserVo receiptUser = checkPermissions(1, openid);
|
|
|
+ if (null == receiptUser) {
|
|
|
+ return ResponseJson.error("无权限操作!", null);
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(orderReceiptStatus)) {
|
|
|
+ orderReceiptStatus = "1,2";
|
|
|
+ }
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(id);
|
|
|
+ if (null == receipt) {
|
|
|
+ return ResponseJson.error("收款数据异常!", null);
|
|
|
+ }
|
|
|
+ Integer orderId = null;
|
|
|
+ try {
|
|
|
+ orderId = Integer.parseInt(receipt.getOrderFlag());
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ log.info("---------此收款无订单标注------");
|
|
|
+ }
|
|
|
+ String[] receiptStatusArr = orderReceiptStatus.split(",");
|
|
|
+ List<Integer> orderStatus = new ArrayList<>();
|
|
|
+ boolean receiptFlag = false;
|
|
|
+ if (ArrayUtils.contains(receiptStatusArr, "3")) {
|
|
|
+ orderStatus = Arrays.asList(4, 5, 31, 32, 33);
|
|
|
+ receiptFlag = true;
|
|
|
+ } else {
|
|
|
+ orderStatus = Arrays.asList(11, 12, 13, 21, 22, 23);
|
|
|
+ }
|
|
|
+ if (null == type || 0 == type) {
|
|
|
+ type = 0;
|
|
|
+ }
|
|
|
+ // 获取该收款用户下的机构userIds
|
|
|
+ List<Integer> userIds = getReceiptClubUserIds(openid, receipt.getReceiptStatus().toString());
|
|
|
+ ReceiptParamsBo params = new ReceiptParamsBo();
|
|
|
+ params.setUserIds(userIds);
|
|
|
+ params.setOrderId(orderId);
|
|
|
+ params.setReceiptStatusArr(receiptStatusArr);
|
|
|
+ params.setOrderStatus(orderStatus);
|
|
|
+ params.setUserName(userName);
|
|
|
+ params.setOrganizeId(organizeId);
|
|
|
+ params.setOrderType(type);
|
|
|
+ // 分页请求数据
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
+ // 将有订单标识的订单放到列表的首位显示
|
|
|
+ List<OrderVo> orderList = receiptMapper.getOrderListByParams(params);
|
|
|
+ Iterator<OrderVo> iterator = orderList.iterator();
|
|
|
+ while (iterator.hasNext()) {
|
|
|
+ OrderVo order = iterator.next();
|
|
|
+ Integer receiptOnlineId = receiptMapper.getOnlineReceiptId(order.getOrderId());
|
|
|
+ if (null != receiptOnlineId && receiptOnlineId > 0) {
|
|
|
+ // 排除线上支付订单
|
|
|
+ iterator.remove();
|
|
|
+ } else {
|
|
|
+ // 存在退款中的记录 (0:否,1:是)
|
|
|
+ Integer haveReturning = receiptMapper.countHaveReturning(order.getOrderId());
|
|
|
+ if (null != haveReturning && haveReturning>0) {
|
|
|
+ haveReturning = 1;
|
|
|
+ } else {
|
|
|
+ haveReturning = 0;
|
|
|
+ }
|
|
|
+ order.setHaveReturning(haveReturning.toString());
|
|
|
+ // 存在收款中的记录 (0:否,1:是)
|
|
|
+ Integer haveReceipting = receiptMapper.countHaveReceipting(order.getOrderId());
|
|
|
+ if (null != haveReceipting && haveReceipting>0) {
|
|
|
+ haveReceipting = 1;
|
|
|
+ } else {
|
|
|
+ haveReceipting = 0;
|
|
|
+ }
|
|
|
+ order.setHaveReceipting(haveReceipting.toString());
|
|
|
+ if (receiptFlag) {
|
|
|
+ order.setSurplusAmount(0d);
|
|
|
+ }
|
|
|
+ order.setPaidAmount(getReceivedAmount(order, true));
|
|
|
+ order.setStatusName(OrderStatus.getOrderStatusText(order.getStatus()));
|
|
|
+ order.setUnCheckAmount(receiptMapper.getUncheckAmount(order.getOrderId()));
|
|
|
+ //获取退款价值
|
|
|
+ order.setReturnValue(getReturnValue(order));
|
|
|
+ //退款(退货)总金额
|
|
|
+ Double returnedPurchaseFee = 0d;
|
|
|
+ //退款总额(给买家)
|
|
|
+ Double refundFee = 0d;
|
|
|
+ //获取已退款金额
|
|
|
+ List<ReturnedPurchaseVo> returnedList = receiptMapper.getRefundFeeByOrderId(orderId);
|
|
|
+ if (null != returnedList && returnedList.size() > 0) {
|
|
|
+ for (ReturnedPurchaseVo returned : returnedList) {
|
|
|
+ returnedPurchaseFee += returned.getReturnedPurchaseFee();
|
|
|
+ refundFee += returned.getRefundFee();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ order.setReturnedPurchaseFee(returnedPurchaseFee);
|
|
|
+ order.setRefundFee(refundFee);
|
|
|
+ //获取剩余应收
|
|
|
+ order.setSurplusAmount(getUnPayMoney(order, true));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageInfo<ReceiptVo> pageInfo = new PageInfo(orderList);
|
|
|
+ return ResponseJson.success(pageInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param id 返佣收款ID
|
|
|
+ * @param confirmedType 0待确认,2已确认子订单
|
|
|
+ * @param shopName 供应商名称
|
|
|
+ * @param userName 客户名称搜索使用
|
|
|
+ * @param openid 微信openid
|
|
|
+ * @param pageNum 页码
|
|
|
+ * @param pageSize 每页数量
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResponseJson<PageInfo<ReceiptVo>> getRefundShopOrderList(Integer id, Integer confirmedType, String shopName, String userName, String openid, int pageNum, int pageSize) {
|
|
|
+ // 操作用户
|
|
|
+ ReceiptUserVo receiptUser = checkPermissions(1, openid);
|
|
|
+ if (null == receiptUser) {
|
|
|
+ return ResponseJson.error("无权限操作!", null);
|
|
|
+ }
|
|
|
+ List<ShopOrderVo> shopOrderList = new ArrayList<>();
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
+ if (id != null) {
|
|
|
+ // 已关联子订单,展示关联信息
|
|
|
+ shopOrderList = receiptMapper.getShopOrderListByReceiptId(id);
|
|
|
+ for (ShopOrderVo shopOrder : shopOrderList) {
|
|
|
+ setReceiptedAmount(shopOrder);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //没有关联子订单,根据shopName搜索子订单进行关联
|
|
|
+ //这里的子订单 必须满足 它的主订单只进行过返佣收款或者主订单根本没有收过款
|
|
|
+ shopOrderList = receiptMapper.getRefundShopOrders(confirmedType, shopName, userName);
|
|
|
+ for (ShopOrderVo shopOrder : shopOrderList) {
|
|
|
+ setReceiptedAmount(shopOrder);
|
|
|
+ if (confirmedType != null && confirmedType == 2) {
|
|
|
+ shopOrder.setHaveReturning("1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageInfo<ReceiptVo> pageInfo = new PageInfo(shopOrderList);
|
|
|
+ return ResponseJson.success(pageInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置收款金额
|
|
|
+ */
|
|
|
+ public void setReceiptedAmount(ShopOrderVo shopOrder) {
|
|
|
+ OrderVo order = orderCommonMapper.getOrderByOrderId(shopOrder.getOrderId());
|
|
|
+ if (null != order.getRebateFlag() && 1 == order.getRebateFlag()){
|
|
|
+ // 返佣订单
|
|
|
+ double associateAmount = receiptMapper.countAllPayAssociateAmount(order.getOrderId());
|
|
|
+ order.setReceiptAmount(associateAmount);
|
|
|
+ } else {
|
|
|
+ double needPayAmount = receiptMapper.countNeedPayAmount(order.getOrderId());
|
|
|
+ order.setReceiptAmount(needPayAmount);
|
|
|
+ }
|
|
|
+ shopOrder.setMainOrder(order);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 设置收款详情信息
|
|
|
*/
|
|
@@ -789,7 +954,6 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
*/
|
|
|
private Double getReceivedAmount(OrderVo order, Boolean isCountUncheckAmount) {
|
|
|
Double receivedAmount = 0d;
|
|
|
-
|
|
|
if (null != order) {
|
|
|
// 获取订单已支付金额(待审核状态的收款也算)
|
|
|
Double paidAmount = receiptMapper.getPaidAmountByOrderId(order.getOrderId());
|