Commit 77094679 by ping.wu

积分商品

parent ac99ae22
package cn.freemud.entities.dto.user;
import lombok.Data;
@Data
public class UserScoreRequest {
private Integer reduceAmount;
private String scoreOrderNo;
// private Integer UseScore;
private Integer changeType;
private Integer operationType;
private String memberId;
private String partnerId;
private String storeId;
private Integer productScore;
}
......@@ -7,10 +7,10 @@ import cn.freemud.amqp.MQService;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.GetMemberExtendInfoRequestDto;
import cn.freemud.entities.dto.GetMemberExtendInfoResponseDto;
import cn.freemud.entities.dto.GetUserScoreUserDetailDto;
import cn.freemud.entities.dto.user.UserScoreRequest;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.entities.dto.user.CustomerPropertyBaseResponse;
import cn.freemud.entities.dto.user.UseScoreRequest;
import cn.freemud.service.thirdparty.CustomerPropertyClient;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.service.thirdparty.CustomerClient;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
......@@ -21,10 +21,6 @@ import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCoupo
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.membercenter.request.GetMemberExtendInfoRequest;
import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest;
import com.freemud.application.sdk.api.membercenter.response.GetMemberExtendInfoResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberScoreService;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
......@@ -88,13 +84,12 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Autowired
private PromotionSdkService promotionSdkService;
@Autowired
private MemberScoreService memberScoreService;
private CustomerApplicationClient customerApplicationClient;
// private MemberScoreService memberScoreService;
@Autowired
private OfflineCouponSdkService offlineCouponSdkService;
@Autowired
private MQService mqService;
@Autowired
private CustomerPropertyClient customerPropertyClient;
@Value("${version.upgrade.weekDay:}")
......@@ -289,25 +284,11 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getCode(), "活动库存不足");
}
}
// 扣减积分,扣减失败冲正积分返回错误
if (totalScore != null && totalScore != 0) {
UseScoreRequest userScoreRequest = convent2UseScoreRequest(orderBean, totalScore,true);
CustomerPropertyBaseResponse baseResponse = customerPropertyClient.useScore(userScoreRequest);
if (!Objects.equals("100", baseResponse.getCode())) {
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "积分不足", "", null);
orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange());
return BaseOrderResponse.getErrorBaseOrderResponse(baseResponse.getCode(), "积分不足");
}
}
UserScoreRequest userScoreRequest = orderSdkAdapter.convent2UserScoreRequest(orderBean, accounts, true);
UserScoreRequest userScoreRequest = this.convent2UserScoreRequest(orderBean, accounts, true,totalScore);
// 扣减积分,扣减失败冲正积分返回错误
if (userScoreRequest != null) {
BaseResponse userScoreResponse = memberScoreService.useScore(userScoreRequest, "");
GetUserScoreUserDetailDto userScoreResponse = customerApplicationClient.useScore(userScoreRequest);
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, userScoreResponse.getCode())) {
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
......@@ -569,29 +550,34 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
return false;
}
/**
* 积分扣减或冲正,调会员基础服务
* 积分扣减或冲正 (积分抵现或积分商品活动)
*
* @param orderBean 订单
* @param accounts 订单优惠明细
* @param isReduce 是否扣减:true扣减;false冲正
* @return
*/
public UseScoreRequest convent2UseScoreRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, Long totalScore,boolean isReduce) {
UseScoreRequest userScoreRequest = new UseScoreRequest();
public UserScoreRequest convent2UserScoreRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts, boolean isReduce,Long totalScore) {
UserScoreRequest userScoreRequest = null;
Integer reduceAmount = 0;
if (CollectionUtils.isNotEmpty(accounts)) {
Optional<CreateOrderAccountRequest> accountRequest = accounts.stream().filter(account -> account.getAccountType().getCode().equals(QueryOrderAccountType.CUSTOMER_SCORE.getCode())).findFirst();
if(accountRequest.isPresent() && accountRequest.get().getPrice() != 0){
reduceAmount = accountRequest.get().getPrice().intValue();
}
}
if(reduceAmount != 0 || (totalScore != null && totalScore != 0)){
userScoreRequest = new UserScoreRequest();
userScoreRequest.setMemberId(orderBean.getUserId());
userScoreRequest.setPartnerId(orderBean.getCompanyId());
userScoreRequest.setChangeScore(totalScore.intValue());
userScoreRequest.setOperationType(12);
userScoreRequest.setOperationName("积分兑换");
userScoreRequest.setChangeType(2);
userScoreRequest.setOrderId(orderBean.getOid());
userScoreRequest.setOrgCode("");
userScoreRequest.setOrgType(isReduce ? 1 : 2);
userScoreRequest.setIdempotencyBussinessId(LogThreadLocal.getTrackingNo());
userScoreRequest.setIdempotencyBussinessType("5");
userScoreRequest.setAppId(orderBean.getAppId());
userScoreRequest.setReduceAmount(reduceAmount * -1);
userScoreRequest.setScoreOrderNo(orderBean.getOid());
userScoreRequest.setChangeType(isReduce ? 2 : 1);
userScoreRequest.setOperationType(isReduce ? 14 : 2);
userScoreRequest.setStoreId(orderBean.getShopId());
userScoreRequest.setProductScore(totalScore.intValue());
}
return userScoreRequest;
}
......
......@@ -8,7 +8,7 @@ import cn.freemud.entities.vo.GetUserScoreUseDetailVo;
import cn.freemud.entities.vo.ShoppingCartCustomerScoreVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService;
import cn.freemud.service.thirdparty.CustomScoreClient;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.utils.AppLogUtil;
import com.freemud.application.sdk.api.constant.FMStatusCode;
import com.freemud.application.sdk.api.log.ErrorLog;
......@@ -34,7 +34,7 @@ import java.math.BigDecimal;
@Service
public class CustomerScoreService implements IPromotionService {
@Autowired
private CustomScoreClient customScoreClient;
private CustomerApplicationClient customScoreClient;
@Override
public void updateDiscountApportion(ShoppingCartGoodsResponse shoppingCartGoodsResponse, OrderBeanRequest request, CalculationDiscountResultDto calculationDiscountResult, CouponPromotionDto couponPromotionDto, ActivityQueryDto activityQueryDto,Boolean isApportion) {
......
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.entities.dto.GetUserScoreUserDetailDto;
import cn.freemud.entities.vo.GetUserScoreUseDetailVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* All rights Reserved, Designed By www.freemud.com
*
* @version V1.0
* @Title:
* @Package: cn.freemud.service.thirdparty
* @Descripttion:
* @author: shuhu.hou
* @date: 2019/5/11
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
*/
@FeignClient(name = "customer-application-service", url = "${saas.customScoreClient.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CustomScoreClient {
// TODO: 21-4-1 带合并
/**
* 用户可用积分
*/
@LogIgnoreFeign(logMessage="getUserScoreUseDetail")
@PostMapping(value = "/user/scoreUseDetail")
GetUserScoreUserDetailDto getUserScoreUseDetail(@RequestBody GetUserScoreUseDetailVo getUserScoreUseDetailVo);
}
//package cn.freemud.service.thirdparty;
//
//import cn.freemud.annotations.LogIgnoreFeign;
//import cn.freemud.entities.dto.GetUserScoreUserDetailDto;
//import cn.freemud.entities.vo.GetUserScoreUseDetailVo;
//import org.springframework.cloud.openfeign.FeignClient;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//
///**
// * All rights Reserved, Designed By www.freemud.com
// *
// * @version V1.0
// * @Title:
// * @Package: cn.freemud.service.thirdparty
// * @Descripttion:
// * @author: shuhu.hou
// * @date: 2019/5/11
// * @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
// * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
// */
//@FeignClient(name = "customer-application-service", url = "${saas.customScoreClient.feign.url}")
//@RequestMapping(produces = {"application/json;charset=UTF-8"})
//public interface CustomScoreClient {
//
// // TODO: 21-4-1 带合并
//
// /**
// * 用户可用积分
// */
// @LogIgnoreFeign(logMessage="getUserScoreUseDetail")
// @PostMapping(value = "/user/scoreUseDetail")
// GetUserScoreUserDetailDto getUserScoreUseDetail(@RequestBody GetUserScoreUseDetailVo getUserScoreUseDetailVo);
//}
......@@ -2,9 +2,13 @@ package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.GetUserScoreUserDetailDto;
import cn.freemud.entities.dto.PurchasePaidRequestDto;
import cn.freemud.entities.dto.user.UserScoreRequest;
import cn.freemud.entities.vo.GetUserScoreUseDetailVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
......@@ -28,4 +32,20 @@ public interface CustomerApplicationClient {
@PostMapping(value = "membercard/purchasePaid")
BaseResponse purchasePaid(PurchasePaidRequestDto requestDto);
/**
* 用户可用积分
*/
@LogIgnoreFeign(logMessage="getUserScoreUseDetail")
@PostMapping(value = "/user/scoreUseDetail")
GetUserScoreUserDetailDto getUserScoreUseDetail(@RequestBody GetUserScoreUseDetailVo getUserScoreUseDetailVo);
/**
* 用户可用积分
*/
@LogIgnoreFeign(logMessage="useScore")
@PostMapping(value = "/user/useScore")
GetUserScoreUserDetailDto useScore(@RequestBody UserScoreRequest userScoreRequest);
}
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