Commit 6421e937 by 缪晖

拼单订单修改内容提交

parent 62aa3a19
......@@ -111,10 +111,10 @@ public class RedisKeyConstant {
public final static String COLLAGE_MEMBER_STATE_KEY = "kgd:collage:member:state:{0}:{1}:{2}";
/**
* kgd:collage:store:member:{partnerId}:{storeId}
* 门店下拼单人员缓存key
* kgd:collage:store:member:{partnerId}
* 商户下拼单人员缓存key
*/
public final static String COLLAGE_STORE_MEMBER_KEY = "kgd:collage:store:member:{0}:{1}";
public final static String COLLAGE_PARTNER_MEMBER_KEY = "kgd:collage:partner:member:{0}";
/**
* kgd:collage:cart:lock:{partnerId}:{storeId}:{邀请用户ID}
......
package com.freemud.sdk.api.assortment.shoppingcart.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0.0
* @Description:
* @author: hui.miao
* @date: 2020-11-27 11:53
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CollagePartnerMember implements Serializable {
private String partnerId;
private String storeId;
private String createCollageUserId;
private Long expire;
}
......@@ -2,7 +2,9 @@ package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.WechatGroupBuyVo;
import cn.freemud.service.impl.CollageOrderServiceImpl;
import cn.freemud.utils.ResponseUtil;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiImplicitParam;
......@@ -45,4 +47,12 @@ public class CollageOrderController {
return collageOrderService.create(requestVo);
}
@ApiOperation(value = "创建拼单群收款", notes = "创建拼单群收款")
@ApiImplicitParam(value = "请求", required = true, dataType = "CreateOrderVo", name = "CreateOrderVo")
@ApiAnnotation(logMessage = "createGroupBuy")
@PostMapping(value = "/collage/groupBuy")
public BaseResponse createGroupBuy(@Validated @LogParams @RequestBody WechatGroupBuyVo requestVo) {
return collageOrderService.createGroupBuy(requestVo);
}
}
package cn.freemud.entities.dto.wechat;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0.0
* @Description:
* @author: hui.miao
* @date: 2020-11-27 17:48
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class GroupBuyDto {
}
package cn.freemud.entities.dto.wechat;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0.0
* @Description:
* @author: hui.miao
* @date: 2020-11-27 17:50
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class GroupBuyResp {
private String groupBuyOrderId;
}
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class WechatGroupBuyVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
@NotEmpty(message = "商户号 不能为空")
private String partnerId;
@NotEmpty(message = "门店号 不能为空")
private String shopId;
@NotEmpty(message = "订单编号 不能为空")
private String orderCode;
}
......@@ -2,6 +2,7 @@ package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.WechatGroupBuyVo;
/**
* All rights Reserved, Designed By www.freemud.cn
......@@ -15,7 +16,14 @@ import cn.freemud.entities.vo.CreateOrderVo;
*/
public interface CollageOrderService {
/**
* 创建订单
* 创建拼单订单
*/
BaseResponse create(CreateOrderVo createOrderVo);
/**
* 创建群收款
* @param requestVo
* @return
*/
BaseResponse createGroupBuy(WechatGroupBuyVo requestVo);
}
......@@ -14,9 +14,12 @@ package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.wechat.GroupBuyResp;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.WechatGroupBuyVo;
import cn.freemud.enums.OrderMarketType;
import cn.freemud.service.CollageOrderService;
import cn.freemud.utils.ResponseUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -27,10 +30,25 @@ public class CollageOrderServiceImpl implements CollageOrderService {
@Autowired
private OrderServiceImpl orderService;
/**
* 创建拼单订单
*/
@Override
public BaseResponse create(CreateOrderVo createOrderVo) {
// 标记订单类型-4 拼单
createOrderVo.setMarketingType(OrderMarketType.COLLAGE.getIndex());
return this.orderService.createOrderNew(createOrderVo);
}
/**
* 创建群收款
* @param requestVo
* @return
*/
@Override
public BaseResponse createGroupBuy(WechatGroupBuyVo requestVo) {
GroupBuyResp groupBuyResp = new GroupBuyResp();
groupBuyResp.setGroupBuyOrderId("AARwDhsBAAABAAAAAAA8qP8oA4wVBRDgTYemXSAAAAC+NhafsoPlHq4RjEYubHs/qZzK7T9Q 02qG5CNcaTRRAyNIF/DIBcbFQuBKJTnEezsaW1SDpyM9G6MNK9T2wzeWQlajckiSTDZDWjAn9O1 WASuHkIZdf9SRQrIAwZdwjsBf7MPxtQP/4ExaW0B9g9IG");
return ResponseUtil.success(groupBuyResp);
}
}
......@@ -43,7 +43,7 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
/**
* 拼单场景使用
* 0个人购物车1整个购物车
* 0个人购物车;1全员购物车;2整合购物车
*/
private Integer type;
......
......@@ -146,7 +146,7 @@ public enum ResponseResult {
COLLAGE_ALREADY_EXIST("49005", "当前用户存在进行中的拼单订单"),
COLLAGE_NOT_OWNER("49006", "当前用户不是拼单发起人,无法操作"),
COLLAGE_GOOD_NOT_ONESELF("49007", "只能操作自己的商品"),
COLLAGE_MEMBER_ALREADY_ADD("49008", "用户已经加入其他的拼单"),
COLLAGE_MEMBER_ALREADY_ADD("49008", "用户存在进行中的拼单,无法再次加入"),
COLLAGE_CREATE_NOT_OUT_OF("49009", "拼单发起人不能退出拼单,请取消"),
COLLAGE_MEMBER_NOT_ADD("49010", "用户未参加拼单,请确认"),
COLLAGE_MEMBER_NOT_CREATE("49011", "只有拼单发起者才能移除拼单人员,请确认"),
......
......@@ -77,7 +77,7 @@ public interface CollageOrderService {
* @param request
* @return
*/
BaseResponse addCollageOrder(CollageOrderRequestVo request);
BaseResponse addCollageOrder(CollageOrderRequestVo request) throws Exception;
/**
* 退出拼单订单
......
......@@ -2,7 +2,6 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.CollageOrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.CollageOrderRequestVo;
import cn.freemud.entities.vo.CollageOrderResponseVo;
import cn.freemud.entities.vo.CustomerInfoVo;
......@@ -10,8 +9,6 @@ import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CollageOrderService;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CollageMemberStateType;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrder;
......@@ -58,8 +55,10 @@ public class CollageOrderServiceImpl implements CollageOrderService {
public BaseResponse queryCollageOrder(CollageOrderRequestVo request) {
CollageOrderDto collageOrderDto = this.collageOrderAdapter.convert2CollageOrderDto(request);
// 查询时需传入拼单创建人的userId,若上送字段为空时,默认查询当前登录人自己的拼单信息
String currentUserId = this.getUserIdBySessionId(request.getSessionId());
if (StringUtils.isEmpty(request.getCreateCollageUserId())) {
collageOrderDto.setCreateCollageUserId(this.getUserIdBySessionId(request.getSessionId()));
collageOrderDto.setCreateCollageUserId(currentUserId);
collageOrderDto.setCurrentUserId(currentUserId);
}
BaseResponse<CollageOrder> queryCollageOrderResponse = this.collageOrderBaseService.queryCollageOrder(collageOrderDto);
CollageOrder collageOrder = queryCollageOrderResponse.getResult();
......@@ -67,6 +66,11 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// SDK查询订单返回非成功code或返回结果订单信息为空时,返回前端异常信息
Optional.ofNullable(queryCollageOrderResponse).filter(resp -> (ResponseResult.SUCCESS.getCode().equals(resp.getCode()) && !ObjectUtils.isEmpty(collageOrder))).orElseThrow(() -> new ServiceException(ResponseResult.COLLAGE_NOT_EXIST));
// 现在改为同时可查询自己发起以及参与的拼单所以查询到拼单信息后,后续查询需要使用拼单hash的三要素信息继续查询
collageOrderDto.setPartnerId(collageOrder.getPartnerId());
collageOrderDto.setStoreId(collageOrder.getStoreId());
collageOrderDto.setCreateCollageUserId(collageOrder.getCreateCollageUserId());
CollageOrderResponseVo collageOrderResponseVo = new CollageOrderResponseVo();
// 订单基础信息
collageOrderResponseVo.setOrder(collageOrder);
......@@ -74,11 +78,16 @@ public class CollageOrderServiceImpl implements CollageOrderService {
collageOrderResponseVo.setLocked(this.collageOrderBaseService.isLockedCollageOrder(collageOrderDto).getResult());
// 订单参与人列表信息 参与人昵称头像等信息放入加购人状态锁redis对象中 userId : MemberState
List<CollageMemberState> collageMemberStateList = this.collageOrderBaseService.getCollageMemberState(collageOrderDto).getResult();
collageOrderResponseVo.setCollageMemberStateList(collageMemberStateList);
// 未加购完毕人数统计
collageOrderResponseVo.setShoppingMemberNum(collageMemberStateList.stream().filter(member -> member.getState() == CollageMemberStateType.SHOPPING.getValue()).collect(Collectors.toList()).size());
return ResponseUtil.success(collageOrderResponseVo);
if (null != collageMemberStateList && collageMemberStateList.size() > 0 && collageMemberStateList.stream().filter(member -> member.getUserId().equals(currentUserId)).count() > 0) {
collageOrderResponseVo.setCollageMemberStateList(collageMemberStateList);
// 未加购完毕人数统计
collageOrderResponseVo.setShoppingMemberNum(collageMemberStateList.stream().filter(member -> member.getState() == CollageMemberStateType.SHOPPING.getValue()).collect(Collectors.toList()).size());
return ResponseUtil.success(collageOrderResponseVo);
} else {
return ResponseUtil.error(ResponseResult.COLLAGE_MEMBER_NOT_ADD);
}
}
/**
......@@ -253,8 +262,8 @@ public class CollageOrderServiceImpl implements CollageOrderService {
Optional.ofNullable(collageOrder).orElseThrow(() -> new ServiceException(ResponseResult.COLLAGE_NOT_EXIST));
// 判断当前登陆用户是否参加过当前店铺其他的拼团
// 因为一个用户在一个店铺下只能参加一个拼单,所以通过判断用户在店铺下的拼单结束时间确认
Boolean flag = collageOrderBaseService.isInCollageStoreMemberList(collageOrderDto);
// 因为一个用户在一个商户下只能参加一个拼单,所以通过判断用户在商户下的拼单结束时间确认
Boolean flag = collageOrderBaseService.isInCollagePartnerMemberList(collageOrderDto);
if(flag){
throw new ServiceException(ResponseResult.COLLAGE_MEMBER_ALREADY_ADD);
}
......@@ -266,7 +275,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
String collageMemberStateHashKey = collageOrderBaseService.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
collageOrderBaseService.addCollageMemberState(collageMemberStateHashKey, collageOrderDto);
// 设置用户在该店铺的拼单结束时间
// 设置用户在该商户下拼单参与列表记录
collageOrderBaseService.setCollageMemberAddTime(collageOrderDto);
return ResponseUtil.success();
......
......@@ -47,7 +47,6 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
......@@ -483,11 +482,28 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
ShoppingCartCollageResponseVo shoppingCartCollageResponseVo;
if(shoppingCartInfoRequestVo.getType() != null && shoppingCartInfoRequestVo.getType().intValue() == 1){
// 根据人员分类购物车
// 根据人员分类购物车 全员购物车
shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId,null);
}else{
// 根据人员分类购物车
}else if(shoppingCartInfoRequestVo.getType() != null && shoppingCartInfoRequestVo.getType().intValue() == 0){
// 根据人员分类购物车 个人购物车
shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId,currentUserId);
}else{
// 整合购物车
shoppingCartCollageResponseVo = new ShoppingCartCollageResponseVo();
BeanUtils.copyProperties(shoppingCartGoodsResponseVo,shoppingCartCollageResponseVo);
List<CartGoods> cartGoods = shoppingCartGoodsResponseVo.getProducts();
List<ShoppingCartCollageGoodsResponseVo> userProducts = new ArrayList<>();
ShoppingCartCollageGoodsResponseVo shoppingCartCollageGoodsResponseVo = new ShoppingCartCollageGoodsResponseVo();
shoppingCartCollageGoodsResponseVo.setProducts(cartGoods);
shoppingCartCollageGoodsResponseVo.setUid(currentUserId);
shoppingCartCollageGoodsResponseVo.setUserName(currentUserInfoVo.getNickName());
shoppingCartCollageGoodsResponseVo.setPhotoUrl(currentUserInfoVo.getPhotoUrl());
shoppingCartCollageGoodsResponseVo.setPackPrice(shoppingCartGoodsResponseVo.getNewPackAmount());
shoppingCartCollageGoodsResponseVo.setProductsCount(shoppingCartGoodsResponseVo.getProductsCount());
shoppingCartCollageGoodsResponseVo.setTotalAmount(shoppingCartGoodsResponseVo.getTotalAmount());
shoppingCartCollageGoodsResponseVo.setOriginalTotalAmount(shoppingCartGoodsResponseVo.getOriginalTotalAmount());
userProducts.add(shoppingCartCollageGoodsResponseVo);
shoppingCartCollageResponseVo.setUserProducts(userProducts);
}
return ResponseUtil.success(shoppingCartCollageResponseVo);
......@@ -1061,7 +1077,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
.partnerId(partnerId)
.storeId(storeId)
.build();
Boolean flag = collageOrderBaseService.isInCollageStoreMemberList(collageOrderDto);
Boolean flag = collageOrderBaseService.isInCollagePartnerMemberList(collageOrderDto);
if(flag){
throw new ServiceException(ResponseResult.COLLAGE_ALREADY_CHOOSE);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment