Commit 8cf0b488 by chongfu.liang

重构demo

parent 1a4bf2c3
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: ShoppingCart
* @Package cn.freemud.controller
* @Description:
* @author: ping.wu
* @date: 2018/5/18 18:07
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.demo.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.demo.entities.bo.BaseAddGoodsBO;
import cn.freemud.demo.entities.factory.ServiceBoFactory;
import cn.freemud.entities.dto.GetMemberInfoRequestDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.ShoppingCartNewService;
import cn.freemud.service.impl.ShoppingCartMallServiceImpl;
import cn.freemud.service.impl.ShoppingCartMealServiceImpl;
import cn.freemud.service.impl.ShoppingCartNewServiceImpl;
import cn.freemud.service.impl.ShoppingCartToolsServiceImpl;
import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/shoppingCart/demo", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "购物车 controller", tags = {"购物车管理接口"})
@Slf4j
public class ShoppingCartController {
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
/**
* 向购物车中添加商品
*/
@ApiAnnotation(logMessage = "addGoods")
@PostMapping(value = "/addGoods")
public BaseResponse addGoods(@LogParams @RequestBody String params) {
BaseAddGoodsBO addGoodsBOInstance = ServiceBoFactory.createAddGoodsBOInstance(params);
return getInstanceByRequest(request).addGoods(request);
}
/**
* 修改购物车中商品数量
*/
@ApiAnnotation(logMessage = "updateGoodsQty")
@PostMapping(value = "/updateGoodsQty")
public BaseResponse updateGoodsQty(@Validated @LogParams @RequestBody UpdateShoppingCartGoodsQtyRequestVo request) {
return getInstanceByRequest(request).updateGoodsQty(request);
}
/**
* 查询购物车信息
*/
@ApiAnnotation(logMessage = "listCartGoods")
@PostMapping(value = "/listCartGoods")
public BaseResponse listCartGoods(@Validated @LogParams @RequestBody ShoppingCartInfoRequestVo request) {
return getInstanceByRequest(request).getGoodsList(request);
}
/**
* 获取购物车均摊详情,点 "去支付" 时调用
*
* @param getShoppingCartGoodsApportionRequestVo
* @return
*/
@ApiAnnotation(logMessage = "getShoppingCartGoodsApportion")
@PostMapping(value = "/getShoppingCartGoodsApportion")
public BaseResponse getShoppingCartGoodsApportion(@Validated @LogParams @RequestBody GetShoppingCartGoodsApportionRequestVo getShoppingCartGoodsApportionRequestVo) {
if (getShoppingCartGoodsApportionRequestVo == null || getShoppingCartGoodsApportionRequestVo.getShoppingCartInfoRequestVo() == null) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo = getShoppingCartGoodsApportionRequestVo.getShoppingCartInfoRequestVo();
return getInstanceByRequest(shoppingCartInfoRequestVo).
getShoppingCartGoods(shoppingCartInfoRequestVo,
getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity());
}
private ShoppingCartNewService getInstanceByRequest(BaseRequestVo requestVo) {
if(requestVo.getChannelType() != null && OrderChannelType.SAASMALL.getCode().equals(requestVo.getChannelType())) {
return SDKCommonBaseContextWare.getBean(ShoppingCartMallServiceImpl.class);
} else {
return getInstanceBySessionId(requestVo.getSessionId());
}
}
private ShoppingCartNewService getInstanceBySessionId(String sessionId) {
AssortmentCustomerInfoVo assortmentCustomerInfoVo = customerInfoManager.getCustomerInfoByObject(sessionId);
if (assortmentCustomerInfoVo == null || StringUtils.isBlank(assortmentCustomerInfoVo.getIappId())) {
return getInstanceByIAppId(IappIdType.IBZ_DC_XCX.getCode());
}
String iAppId = assortmentCustomerInfoVo.getIappId();
return getInstanceByIAppId(iAppId);
}
private ShoppingCartNewService getInstanceByIAppId(String iAppId) {
if (IappIdType.WC_XCX.getCode().equals(iAppId)) {
//围餐
return SDKCommonBaseContextWare.getBean(ShoppingCartMealServiceImpl.class);
}
return SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class);
}
/**
* 清空购物车{技术支持用}
*/
@ApiAnnotation(logMessage = "clear/goods")
@PostMapping(value = "/clearGoods")
public BaseResponse clearGoods(@Validated @LogParams @RequestBody ShoppingCartClearToolsRequestVo request) {
return SDKCommonBaseContextWare.getBean(ShoppingCartToolsServiceImpl.class).clear(request);
}
/**
* 线下订单查询接口
*/
@ApiAnnotation(logMessage = "/getMemberInfo")
@PostMapping(value = "/getMemberInfo")
public BaseResponse getMemberInfo(@LogParams @RequestBody GetMemberInfoRequestDto request) {
return SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).getMemberInfo(request);
}
}
package cn.freemud.demo.entities.bo;
public class BaseAddGoodsBO {
}
package cn.freemud.demo.entities.bo;
public class MCoffeeAddGoodsBO extends BaseAddGoodsBO {
}
package cn.freemud.demo.entities.bo;
public class MallAddGoodsBO extends BaseAddGoodsBO {
}
package cn.freemud.demo.entities.bo;
public class PlatformAddGoodsBO extends BaseAddGoodsBO {
}
package cn.freemud.demo.entities.dto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ComboxGoodsRequestVo;
import cn.freemud.entities.vo.MaterialRequestVo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import java.util.List;
@Data
public class AddGoodsRequestDTO extends BaseRequestDTO {
/**
* 拼单发起人userId(拼单)
*/
private String createCollageUserId;
/**
* 购物车版本号(拼单)
*/
private Integer carVer;
/**
* 微信appId
*/
@NotEmpty(message = "appId不能为空")
private String appId;
@NotEmpty(message = "spuId不能为空")
private String spuId;
private String skuId;
/**
* 商品额外的属性
*/
private List<CartGoods.CartGoodsExtra> extra;
private String version;
/**
* 1.6.0 版本增加 节点ID
*/
private String nodeId;
/**
* 1.6.0 版本增加 分类名
*/
private String categoryName;
/**
* 套餐固定商品
*/
private List<ComboxGoodsRequestVo> productComboList;
/**
* 套餐可选商品
*/
private List<ComboxGoodsRequestVo> productGroupList;
/**
* 加料
*/
private List<MaterialRequestVo> productMaterialList;
private String appType;
private String tableNumber;
/**
* 数量
*/
private Integer qty;
/**
* 业务类型: 0 : 自提 1:外卖 2:微商城
*/
private String menuType ;
/**
* 收货地址ID、svc卡支付外卖订单必传
*/
private String receiveId;
/**
* 操作类型 1= 添加商品券 2=加价购
*/
private Integer operationType;
/**
* 优惠券号
*/
private String couponCode;
}
package cn.freemud.demo.entities.dto;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class BaseRequestDTO {
private String sessionId;
/**
* 商户Id
*/
@NotEmpty(message = "partnerId不能为空")
private String partnerId;
/**
* 门店Id
* 商城没有门店id,如果需要门店id必传在业务中进行校验
*/
//@NotEmpty(message = "shopId不能为空")
private String shopId;
/**
* 下单类型 CreateOrderType 外卖、到店、商城
*/
private Integer orderType;
/**
* 渠道类型 OrderChannelType
*/
private String channelType;
}
package cn.freemud.demo.entities.factory;
import cn.freemud.demo.entities.bo.BaseAddGoodsBO;
import cn.freemud.demo.entities.bo.MCoffeeAddGoodsBO;
import cn.freemud.demo.entities.bo.MallAddGoodsBO;
import cn.freemud.demo.entities.bo.PlatformAddGoodsBO;
import cn.freemud.demo.entities.dto.AddGoodsRequestDTO;
import cn.freemud.demo.entities.dto.BaseRequestDTO;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.service.impl.ShoppingCartMallServiceImpl;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
public class ServiceBoFactory {
private final static String macafePartnerId = "";
public static BaseAddGoodsBO createAddGoodsBOInstance(String params) {
BaseAddGoodsBO baseAddGoodsBO;
AddGoodsRequestDTO baseRequestDTO = JSON.parseObject(params, AddGoodsRequestDTO.class);
if (baseRequestDTO.getChannelType() != null && OrderChannelType.SAASMALL.getCode().equals(baseRequestDTO.getChannelType())){
baseAddGoodsBO = createMallBO(baseRequestDTO);
} else if (baseRequestDTO.getPartnerId().equals(macafePartnerId)) {
baseAddGoodsBO = createMCoffeeBO(baseRequestDTO);
} else {
baseAddGoodsBO = createPlatformBO(baseRequestDTO);
}
return baseAddGoodsBO;
}
private static MallAddGoodsBO createPlatformBO(AddGoodsRequestDTO baseRequestDTO) {
MallAddGoodsBO mallAddGoodsBO = new MallAddGoodsBO();
return mallAddGoodsBO;
}
private static MCoffeeAddGoodsBO createMCoffeeBO(AddGoodsRequestDTO baseRequestDTO) {
MCoffeeAddGoodsBO mCoffeeAddGoodsBO = new MCoffeeAddGoodsBO();
return mCoffeeAddGoodsBO;
}
private static BaseAddGoodsBO createMallBO(AddGoodsRequestDTO baseRequestDTO) {
PlatformAddGoodsBO platformAddGoodsBO = new PlatformAddGoodsBO();
return platformAddGoodsBO;
}
}
package cn.freemud.demo.entities.factory;
import cn.freemud.demo.entities.bo.BaseAddGoodsBO;
import cn.freemud.demo.entities.dto.AddGoodsRequestDTO;
import cn.freemud.enums.OrderChannelType;
import com.alibaba.fastjson.JSON;
public class ServiceFactory {
public static BaseAddGoodsBO createAddGoodsBOInstance(String params) {
}
}
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