Commit ebb62116 by 缪晖

Merge branch 'feature/2.0.1-collageOrder-刘鹏飞' into 'develop'

群收款接口

See merge request !19
parents 1bbf44b1 cdbd5da5
......@@ -2,6 +2,7 @@ package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderVo;
import cn.freemud.entities.vo.WechatGroupBuyVo;
import cn.freemud.service.impl.CollageOrderServiceImpl;
import cn.freemud.utils.ResponseUtil;
......@@ -47,8 +48,16 @@ public class CollageOrderController {
return collageOrderService.create(requestVo);
}
@ApiOperation(value = "获取拼单订单详情", notes = "获取拼单订单详情")
@ApiImplicitParam(value = "请求", required = true, dataType = "QueryOrderVo", name = "QueryOrderVo")
@ApiAnnotation(logMessage = "collageQueryOrderById")
@PostMapping("/collage/queryOrderById")
public BaseResponse queryCollageOrderById(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return collageOrderService.queryCollageOrderById(queryOrderVo);
}
@ApiOperation(value = "创建拼单群收款", notes = "创建拼单群收款")
@ApiImplicitParam(value = "请求", required = true, dataType = "CreateOrderVo", name = "CreateOrderVo")
@ApiImplicitParam(value = "请求", required = true, dataType = "WechatGroupBuyVo", name = "WechatGroupBuyVo")
@ApiAnnotation(logMessage = "createGroupBuy")
@PostMapping(value = "/collage/groupBuy")
public BaseResponse createGroupBuy(@Validated @LogParams @RequestBody WechatGroupBuyVo requestVo) {
......
......@@ -366,14 +366,5 @@ public class OrderController {
return orderservice.mcCafePollingPickUpCode(vo);
}
/**
* 获取拼单订单详情
*/
@ApiAnnotation(logMessage = "collageQueryOrderById")
@PostMapping("/collage/queryOrderById")
public BaseResponse queryCollageOrderById(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return orderservice.queryCollageOrderById(queryOrderVo.getOperation(),queryOrderVo.getSessionId(), queryOrderVo.getOid(),queryOrderVo.getPartnerId(),queryOrderVo.getChannelType());
}
}
......@@ -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.QueryOrderVo;
import cn.freemud.entities.vo.WechatGroupBuyVo;
/**
......@@ -17,10 +18,19 @@ import cn.freemud.entities.vo.WechatGroupBuyVo;
public interface CollageOrderService {
/**
* 创建拼单订单
* @param createOrderVo
* @return
*/
BaseResponse create(CreateOrderVo createOrderVo);
/**
* 查询拼单信息
* @param queryOrderVo
* @return
*/
BaseResponse queryCollageOrderById(QueryOrderVo queryOrderVo);
/**
* 创建群收款
* @param requestVo
* @return
......
......@@ -14,22 +14,52 @@ package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.wechat.GetAuthorizerRequestDto;
import cn.freemud.entities.dto.wechat.GetTokenResponseDto;
import cn.freemud.entities.dto.wechat.GroupBuyResp;
import cn.freemud.entities.vo.QueryOrderVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.WeChatClient;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.ordercenter.enums.ResponseResultEnum;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.GroupBuyRequest;
import com.freemud.sdk.api.assortment.order.response.order.GroupBuyResponse;
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 com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
public class CollageOrderServiceImpl implements CollageOrderService {
@Autowired
private OrderServiceImpl orderService;
@Autowired
private OrderCenterSdkService orderCenterSdkService;
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
@Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Autowired
private WeChatClient weChatClient;
/**
* 创建拼单订单
......@@ -42,14 +72,90 @@ public class CollageOrderServiceImpl implements CollageOrderService {
}
/**
* 查询拼单详情
* @param queryOrderVo
* @return
*/
@Override
public BaseResponse queryCollageOrderById(QueryOrderVo queryOrderVo) {
return this.orderService.queryCollageOrderById(queryOrderVo.getOperation(),queryOrderVo.getSessionId(), queryOrderVo.getOid(),queryOrderVo.getPartnerId(),queryOrderVo.getChannelType());
}
/**
* 创建群收款
* @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);
// 获取拼单订单信息,若类型不是拼单直接返回报错
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(requestVo.getOrderCode());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!ResponseResultEnum.SUCCESS.getCode().equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
QueryOrdersResponse.DataBean.OrderBean order = response.getData();
if (null == order.getMarketingType() || OrderMarketType.COLLAGE.getIndex() != order.getMarketingType()) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
// 根据sessionId获取当前用户信息以及appid
AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(requestVo.getSessionId());
GetAuthorizerRequestDto getAuthorizerRequestDto = new GetAuthorizerRequestDto();
getAuthorizerRequestDto.setPartnerId(requestVo.getPartnerId());
getAuthorizerRequestDto.setAuthorizerAppid(userInfo.getWxAppId());
// 通过partnerId以及appid获取access_token
log.info("collage access_token request partnerId:{} appId:{}", requestVo.getPartnerId(), userInfo.getWxAppId());
GetTokenResponseDto getTokenResponseDto = ecologyAdminApplicationClient.getAuthorizerAccessToken(getAuthorizerRequestDto);
String accessToken = getTokenResponseDto.getResult().getAccessToken();
log.info("collage access_token response access_token:{}", accessToken);
// 构造群收款订单创建请求对象
GroupBuyRequest groupBuyRequest = new GroupBuyRequest();
// 订单编号
groupBuyRequest.setOut_trade_no(order.getOid());
// 收款人(拼单发起人)openId
groupBuyRequest.setRecv_openid(userInfo.getOpenId());
// 付款人列表(查询拼单订单详情,根据商品自动计算价格,订单级别优惠分摊)
GroupBuyRequest.PayList payList = new GroupBuyRequest.PayList();
List<GroupBuyRequest.UserInfo> userInfoList = new ArrayList<>();
List<OrderSettlementResp> orderSettlementDetailList = order.getOrderSettlementDetailList();
GroupBuyRequest.UserInfo groupBuyUserInfo = new GroupBuyRequest.UserInfo();
groupBuyUserInfo.setOpenid("oORZK5A8hrejg0uBVSlkpv-KPgv4");
groupBuyUserInfo.setAmount(1);
userInfoList.add(groupBuyUserInfo);
payList.setUser_info(userInfoList);
groupBuyRequest.setPay_list(payList);
// 业务场景 1 其他(暂未解决后端上传收款图问题)
groupBuyRequest.setScene(1);
// 描述信息 Desc(订单商户+日期)
GroupBuyRequest.Desc desc = new GroupBuyRequest.Desc();
desc.setText_desc(order.getShopName() + DateUtil.getCurrentDate(DateUtil.FORMAT_yyyyMMdd));
groupBuyRequest.setDesc(desc);
log.info("collage groupBuy request param:{}", groupBuyRequest);
GroupBuyResponse groupBuyResponse = weChatClient.groupBuyCreateOrder(accessToken, groupBuyRequest);
log.info("collage groupBuy response return:{}", groupBuyResponse);
if (null != groupBuyResponse && groupBuyResponse.getErrcode() == 0) {
GroupBuyResp groupBuyResp = new GroupBuyResp();
groupBuyResp.setGroupBuyOrderId(groupBuyResponse.getOrder_id());
return ResponseUtil.success(groupBuyResp);
} else {
return ResponseUtil.error("创建群收款失败");
}
}
}
......@@ -16,6 +16,7 @@ import cn.freemud.entities.dto.GetWxQrcodeDto;
import cn.freemud.entities.dto.WeChatGetAccessTokenResponseDto;
import cn.freemud.entities.dto.WechatSendMessageDto;
import com.freemud.sdk.api.assortment.order.request.order.GroupBuyRequest;
import com.freemud.sdk.api.assortment.order.response.order.GroupBuyResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
......@@ -74,6 +75,6 @@ public interface WeChatClient {
@PostMapping(value = "wxa/business/groupBuy/createOrder?access_token={accessToken}",
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
String groupBuyCreateOrder(@PathVariable("accessToken") String accessToken, @RequestBody GroupBuyRequest groupBuyRequest);
GroupBuyResponse groupBuyCreateOrder(@PathVariable("accessToken") String accessToken, @RequestBody GroupBuyRequest groupBuyRequest);
}
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