Ver código fonte

异常车票工单更换车票并关闭

zoujiajian 3 anos atrás
pai
commit
d6dc0b800c

+ 1 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserTicketClearedRecord.java

@@ -53,6 +53,7 @@ public class UserTicketClearedRecord extends BaseEntity{
 		new_groups_ticket("新空车队车票"),
 		disable("禁用账号分配车票"),
 		refund_balance("退款余额"),
+		abnormal("异常订单")
 		;
 		String desc;
 

+ 2 - 1
netflix-dao/src/main/java/com/cyksj/model/views/EmptyGroupsRelationView.java

@@ -16,7 +16,8 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "account a inner join groups_trips gt on gt.account_id = a.id")
+@SearchBean(tables = "account a inner join groups_trips gt on gt.account_id = a.id",
+		where = ":account_id:")
 public class EmptyGroupsRelationView {
 	@DbField("a.id")
 	private Long accountId;

+ 11 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -25,6 +25,7 @@ import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.manage.distribute.DistributeWaitingSendPointsMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeBusinessOrderDonRecordMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
+import com.cyksj.mapper.manage.sys.WorkOrderMapper;
 import com.cyksj.mapper.stock.GoodsSkuStockRelateMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelOrderDonInfo;
@@ -122,6 +123,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final UserDistributeBusinessOrderDonRecordMapper businessOrderDonRecordMapper;
 
+    private final WorkOrderMapper workOrderMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -396,6 +399,14 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         });
         redisService.del(RedisKey.GROUPS_RELATION_NUM_KEY + newRelation.getId());
         relationMapper.updateById(newRelation);
+
+        if (source != null && source == UserTicketClearedRecord.Source.abnormal) {
+            //将用户异常订单关闭
+            workOrderMapper.update(null, Wrappers.lambdaUpdate(WorkOrder.class)
+                    .set(WorkOrder::getStatus, WorkOrder.Status.close)
+                    .eq(WorkOrder::getUserId, userId)
+                    .eq(WorkOrder::getRelationId, relationId));
+        }
     }
 
     public String zfbRefund(OrderRefundReq refundReq, OrderDon orderDon) throws Exception {

+ 17 - 6
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -50,10 +50,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.OutputStream;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * @author chan
@@ -526,12 +523,26 @@ public class CmsOrderController {
 	 * 多余车位的空账号
 	 */
 	@GetMapping("/get/sameSpec/empty/relation")
-	public Result<SearchResult<EmptyGroupsRelationView>> getSameSpecEmptyRelation(Long skuId, Long groupsId) {
+	public Result<SearchResult<EmptyGroupsRelationView>> getSameSpecEmptyRelation(Long skuId, Long groupsId, Long relationId, Boolean isNormal) {
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap())
-				.field(EmptyGroupsRelationView::getGroupsId, groupsId).op(Operator.NotEqual)
 				.field(EmptyGroupsRelationView::getStatus, GroupsTrips.Status.down.name()).op(Operator.NotEqual)
 				.field(EmptyGroupsRelationView::getSkuId, skuId).orderBy(EmptyGroupsRelationView::getAvailableNum)
 				.desc();
+		Date expiryTime = null;
+		if (relationId != null) {
+			GroupsRelation relation = relationMapper.selectById(relationId);
+			if (relation != null) expiryTime = relation.getExpiryTime();
+		}
+		if (groupsId != null) {
+			builder.field(EmptyGroupsRelationView::getGroupsId, groupsId).op(Operator.NotEqual);
+		}
+		if (isNormal != null && isNormal) {
+			builder.put("account_id", String.format("gt.account_id not in (select account_id from work_order where sku_id = %s and account_id is not null)", skuId));
+		}
+		if (expiryTime != null) {
+			builder.field(AccountView::getExpiryTime, expiryTime).op(Operator.GreaterEqual);
+			builder.orderBy(AccountView::getExpiryTime).asc();
+		}
 		GoodsDonSku sku = skuMapper.selectById(skuId);
 		if (!Constant.AI_goodsIds.contains(sku.getGoodsId())) {
 			builder.field(EmptyGroupsRelationView::getAvailableNum, 0).op(Operator.GreaterThan);