|
@@ -3,14 +3,16 @@ package com.kmall.api.service;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.google.common.collect.Maps;
|
|
|
+import com.kmall.api.dao.mk.ApiMkStoreCampMinusMapper;
|
|
|
import com.kmall.api.dao.mk.ApiMkStoreTicketDiscountMapper;
|
|
|
+import com.kmall.api.dto.CampMinusDto;
|
|
|
import com.kmall.api.dto.CheckOutDto;
|
|
|
-import com.kmall.api.entity.mk.MkStorePromOrderRealVo;
|
|
|
-import com.kmall.api.entity.mk.MkStorePromStatVo;
|
|
|
+import com.kmall.api.entity.mk.MkStoreCampMinusVo;
|
|
|
import com.kmall.api.entity.mk.MkStoreTicketDiscountVo;
|
|
|
import com.kmall.api.fromcomm.entity.FormIdsEntity;
|
|
|
import com.kmall.api.service.mk.ApiMkStorePromStatService;
|
|
|
import com.kmall.api.service.mk.ApiMkStoreTopicStatService;
|
|
|
+import com.kmall.api.util.StockUtil;
|
|
|
import com.kmall.common.utils.*;
|
|
|
import com.kmall.manager.dao.TemplateConfDao;
|
|
|
import com.kmall.manager.entity.pay.TemplateConfVo;
|
|
@@ -42,14 +44,10 @@ import java.util.*;
|
|
|
public class ApiOrderService {
|
|
|
private Log logger = LogFactory.getLog(ApiOrderService.class);
|
|
|
@Autowired
|
|
|
- private ApiSysPrinterMapper apiSysPrinterMapper;
|
|
|
- @Autowired
|
|
|
private ApiProductMapper apiProductMapper;
|
|
|
@Autowired
|
|
|
private ApiCartMapper apiCartMapper;
|
|
|
@Autowired
|
|
|
- private ApiCouponMapper apiCouponMapper;
|
|
|
- @Autowired
|
|
|
private ApiOrderMapper apiOrderMapper;
|
|
|
@Autowired
|
|
|
private ApiOrderGoodsMapper apiOrderGoodsMapper;
|
|
@@ -60,10 +58,6 @@ public class ApiOrderService {
|
|
|
@Autowired
|
|
|
private ApiUserMapper apiUserMapper;
|
|
|
@Autowired
|
|
|
- private ApiGoodsGroupOpenMapper apiGoodsGroupOpenMapper;
|
|
|
- @Autowired
|
|
|
- private ApiGoodsGroupOpenDetailMapper apiGoodsGroupOpenDetailMapper;
|
|
|
- @Autowired
|
|
|
private FormIdsService formIdsService;
|
|
|
@Autowired
|
|
|
private ApiGoodsMapper apiGoodsMapper;
|
|
@@ -87,6 +81,10 @@ public class ApiOrderService {
|
|
|
private ApiCartService cartService;
|
|
|
@Autowired
|
|
|
private ApiMkStoreTopicStatService apiMkStoreTopicStatService;
|
|
|
+ @Autowired
|
|
|
+ private ApiMkStoreCampMinusMapper apiMkStoreCampMinusMapper;
|
|
|
+ @Autowired
|
|
|
+ private ApiUserCampMinusMapper apiUserCampMinusMapper;
|
|
|
|
|
|
public OrderVo queryObject(Long id) {
|
|
|
return apiOrderMapper.queryObject(id);
|
|
@@ -132,87 +130,13 @@ public class ApiOrderService {
|
|
|
if (null == goodsInfo || goodsInfo.getIs_delete() == 1 || goodsInfo.getIs_on_sale() == 0) {
|
|
|
throw new RRException("订单提交失败:商品不存在");
|
|
|
}
|
|
|
- Integer stockNum;
|
|
|
+// Integer stockNum = StockUtil.setStockNumByGoodsVo(goodsInfo);
|
|
|
+// String isStockShare = StockUtil.getIsStockShareByGoodsVo(goodsInfo);
|
|
|
// TODO: 2019/3/5 普通商品不受共享库存影响,直接取门店配置库存
|
|
|
- if(goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
|
|
|
- if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
|
|
|
- //还原商户商品库存
|
|
|
- stockNum = goodsInfo.getGoods_number();
|
|
|
- stockNum = stockNum == null? 0 : stockNum;
|
|
|
- goodsInfo.setGoods_number(stockNum + orderGoodsVo.getNumber());
|
|
|
-// goodsInfo.setSell_volume(goodsInfo.getGoods_sell_volume() - orderGoodsVo.getNumber());
|
|
|
- apiGoodsMapper.updateGoodsStock(goodsInfo);
|
|
|
-
|
|
|
- productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
|
|
|
- productInfo.setGoods_id(goodsInfo.getId());
|
|
|
- apiProductMapper.updateStockNum(productInfo);
|
|
|
-
|
|
|
- MngChangeVo mngChangeVo = new MngChangeVo();
|
|
|
- mngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsInfo.getId())));
|
|
|
- mngChangeVo.setThirdPartyMerchCode(goodsInfo.getThirdPartyMerchCode());
|
|
|
- mngChangeVo.setChangeReason("小程序取消订单");
|
|
|
- mngChangeVo.setChangeType(Dict.changeType.item_0.getItem());
|
|
|
- mngChangeVo.setChangeNum(orderGoodsVo.getNumber());//变化数
|
|
|
- mngChangeVo.setOriginalNum(stockNum);//原库存数
|
|
|
- mngChangeVo.setValidNum(stockNum + orderGoodsVo.getNumber());//可用数
|
|
|
- mngChangeVo.setCreateTime(new Date());
|
|
|
- mngChangeVo.setModTime(new Date());
|
|
|
- mngChangeVo.setCreaterSn("小程序用户"+userName);
|
|
|
- mngChangeVo.setModerSn("小程序用户"+userName);
|
|
|
- mngChangeVo.setIsValid(0);
|
|
|
- mngChangeVo.setMerchSn(goodsInfo.getMerchSn());
|
|
|
- apiMngChangeMapper.save(mngChangeVo);
|
|
|
- }
|
|
|
- if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
|
|
|
- //还原门店库存
|
|
|
- stockNum = productInfo.getStock_num();
|
|
|
- stockNum = stockNum == null? 0 : stockNum;
|
|
|
- productInfo.setStock_num(stockNum + orderGoodsVo.getNumber());
|
|
|
- productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
|
|
|
- productInfo.setGoods_id(goodsInfo.getId());
|
|
|
- apiProductMapper.updateStockNum(productInfo);
|
|
|
-
|
|
|
- StoreMngChangeVo storeMngChangeVo = new StoreMngChangeVo();
|
|
|
- storeMngChangeVo.setChangeType(Dict.changeType.item_0.getItem());
|
|
|
- storeMngChangeVo.setChangeReason("小程序取消订单");
|
|
|
- storeMngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsInfo.getId())));
|
|
|
- storeMngChangeVo.setStoreId(Integer.parseInt(String.valueOf(productInfo.getStore_id())));
|
|
|
- storeMngChangeVo.setMerchSn(goodsInfo.getMerchSn());
|
|
|
- storeMngChangeVo.setStoreChangeNum(orderGoodsVo.getNumber());
|
|
|
- storeMngChangeVo.setStoreOriginalNum(stockNum);
|
|
|
- storeMngChangeVo.setStoreValidNum(stockNum + orderGoodsVo.getNumber());
|
|
|
- storeMngChangeVo.setCreateTime(new Date());
|
|
|
- storeMngChangeVo.setModTime(new Date());
|
|
|
- storeMngChangeVo.setCreaterSn("小程序用户"+userName);
|
|
|
- storeMngChangeVo.setModerSn("小程序用户"+userName);
|
|
|
- storeMngChangeVo.setIsValid(0);
|
|
|
- apiStoreMngChangeMapper.save(storeMngChangeVo);
|
|
|
- }
|
|
|
- }else {
|
|
|
- //还原门店库存
|
|
|
- stockNum = productInfo.getStock_num();
|
|
|
- stockNum = stockNum == null? 0 : stockNum;
|
|
|
- productInfo.setStock_num(stockNum + orderGoodsVo.getNumber());
|
|
|
- productInfo.setGoods_id(goodsInfo.getId());
|
|
|
- productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
|
|
|
- apiProductMapper.updateStockNum(productInfo);
|
|
|
-
|
|
|
- StoreMngChangeVo storeMngChangeVo = new StoreMngChangeVo();
|
|
|
- storeMngChangeVo.setChangeType(Dict.changeType.item_0.getItem());
|
|
|
- storeMngChangeVo.setChangeReason("小程序取消订单");
|
|
|
- storeMngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsInfo.getId())));
|
|
|
- storeMngChangeVo.setStoreId(Integer.parseInt(String.valueOf(productInfo.getStore_id())));
|
|
|
- storeMngChangeVo.setMerchSn(goodsInfo.getMerchSn());
|
|
|
- storeMngChangeVo.setStoreChangeNum(orderGoodsVo.getNumber());
|
|
|
- storeMngChangeVo.setStoreOriginalNum(stockNum);
|
|
|
- storeMngChangeVo.setStoreValidNum(stockNum + orderGoodsVo.getNumber());
|
|
|
- storeMngChangeVo.setCreateTime(new Date());
|
|
|
- storeMngChangeVo.setModTime(new Date());
|
|
|
- storeMngChangeVo.setCreaterSn("小程序用户"+userName);
|
|
|
- storeMngChangeVo.setModerSn("小程序用户"+userName);
|
|
|
- storeMngChangeVo.setIsValid(0);
|
|
|
- apiStoreMngChangeMapper.save(storeMngChangeVo);
|
|
|
- }
|
|
|
+ //还原门店库存
|
|
|
+ resetStoreGoodsStock(goodsInfo.getStockNum(), productInfo, goodsInfo, orderGoodsVo, userName);
|
|
|
+ //还原商户商品库存
|
|
|
+ resetGoodsStock(goodsInfo.getGoods_number(), productInfo, goodsInfo, orderGoodsVo, userName);
|
|
|
}
|
|
|
update(order);
|
|
|
// 判断是否有优惠券
|
|
@@ -220,6 +144,69 @@ public class ApiOrderService {
|
|
|
if (null != couponVo) {
|
|
|
apiUserCouponMapper.cancelOrder(couponVo);
|
|
|
}
|
|
|
+ //释放促销满减券
|
|
|
+ UserCampMinusVo userCampMinusVo = apiUserCampMinusMapper.queryUserCampByOrderId(order.getId());
|
|
|
+ if (null != userCampMinusVo) {
|
|
|
+ apiUserCampMinusMapper.cancelUserCampOrder(userCampMinusVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 还原商户商品总库存
|
|
|
+ */
|
|
|
+ private void resetGoodsStock(Integer stockNum, ProductVo productInfo, GoodsVo goodsInfo, OrderGoodsVo orderGoodsVo, String userName){
|
|
|
+ stockNum = stockNum == null? 0 : stockNum;
|
|
|
+ goodsInfo.setGoods_number(stockNum + orderGoodsVo.getNumber());
|
|
|
+// goodsInfo.setSell_volume(goodsInfo.getGoods_sell_volume() - orderGoodsVo.getNumber());
|
|
|
+ apiGoodsMapper.updateGoodsStock(goodsInfo);
|
|
|
+
|
|
|
+// productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
|
|
|
+// productInfo.setGoods_id(goodsInfo.getId());
|
|
|
+// apiProductMapper.updateStockNum(productInfo);
|
|
|
+
|
|
|
+ MngChangeVo mngChangeVo = new MngChangeVo();
|
|
|
+ mngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsInfo.getId())));
|
|
|
+ mngChangeVo.setThirdPartyMerchCode(goodsInfo.getThirdPartyMerchCode());
|
|
|
+ mngChangeVo.setChangeReason("小程序取消订单");
|
|
|
+ mngChangeVo.setChangeType(Dict.changeType.item_0.getItem());
|
|
|
+ mngChangeVo.setChangeNum(orderGoodsVo.getNumber());//变化数
|
|
|
+ mngChangeVo.setOriginalNum(stockNum);//原库存数
|
|
|
+ mngChangeVo.setValidNum(stockNum + orderGoodsVo.getNumber());//可用数
|
|
|
+ mngChangeVo.setCreateTime(new Date());
|
|
|
+ mngChangeVo.setModTime(new Date());
|
|
|
+ mngChangeVo.setCreaterSn("小程序用户"+userName);
|
|
|
+ mngChangeVo.setModerSn("小程序用户"+userName);
|
|
|
+ mngChangeVo.setIsValid(0);
|
|
|
+ mngChangeVo.setMerchSn(goodsInfo.getMerchSn());
|
|
|
+ apiMngChangeMapper.save(mngChangeVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 还原门店商品库存
|
|
|
+ */
|
|
|
+ private void resetStoreGoodsStock(Integer stockNum, ProductVo productInfo, GoodsVo goodsInfo, OrderGoodsVo orderGoodsVo, String userName){
|
|
|
+ stockNum = stockNum == null? 0 : stockNum;
|
|
|
+
|
|
|
+ productInfo.setStock_num(stockNum + orderGoodsVo.getNumber());
|
|
|
+ productInfo.setGoods_id(goodsInfo.getId());
|
|
|
+ productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
|
|
|
+ apiProductMapper.updateStockNum(productInfo);
|
|
|
+
|
|
|
+ StoreMngChangeVo storeMngChangeVo = new StoreMngChangeVo();
|
|
|
+ storeMngChangeVo.setChangeType(Dict.changeType.item_0.getItem());
|
|
|
+ storeMngChangeVo.setChangeReason("小程序取消订单");
|
|
|
+ storeMngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsInfo.getId())));
|
|
|
+ storeMngChangeVo.setStoreId(Integer.parseInt(String.valueOf(productInfo.getStore_id())));
|
|
|
+ storeMngChangeVo.setMerchSn(goodsInfo.getMerchSn());
|
|
|
+ storeMngChangeVo.setStoreChangeNum(orderGoodsVo.getNumber());
|
|
|
+ storeMngChangeVo.setStoreOriginalNum(stockNum);
|
|
|
+ storeMngChangeVo.setStoreValidNum(stockNum + orderGoodsVo.getNumber());
|
|
|
+ storeMngChangeVo.setCreateTime(new Date());
|
|
|
+ storeMngChangeVo.setModTime(new Date());
|
|
|
+ storeMngChangeVo.setCreaterSn("小程序用户"+userName);
|
|
|
+ storeMngChangeVo.setModerSn("小程序用户"+userName);
|
|
|
+ storeMngChangeVo.setIsValid(0);
|
|
|
+ apiStoreMngChangeMapper.save(storeMngChangeVo);
|
|
|
}
|
|
|
|
|
|
public void update(OrderVo order) {
|
|
@@ -240,7 +227,6 @@ public class ApiOrderService {
|
|
|
apiOrderMapper.updateBatch(list);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
public void delete(Integer id) {
|
|
|
apiOrderMapper.delete(id);
|
|
|
}
|
|
@@ -271,6 +257,11 @@ public class ApiOrderService {
|
|
|
Integer tickDiscId02 = jsonParam.getInteger("tickDiscId02");//优惠券id
|
|
|
Integer tickDiscId10 = jsonParam.getInteger("tickDiscId10");//优惠券id
|
|
|
Integer tickDiscId11 = jsonParam.getInteger("tickDiscId11");//优惠券id
|
|
|
+ Integer campId00 = jsonParam.getInteger("campId00");//促销id
|
|
|
+ Integer campId02 = jsonParam.getInteger("campId02");//促销id
|
|
|
+ Integer campId10 = jsonParam.getInteger("campId10");//促销id
|
|
|
+ Integer campId11 = jsonParam.getInteger("campId11");//促销id
|
|
|
+ Integer isLoadStatus = jsonParam.getInteger("isLoadStatus");
|
|
|
UserVo user = apiUserMapper.queryObjectByIdNoAndName(idNo, userName);
|
|
|
UserVo userVo = new UserVo();
|
|
|
userVo.setId(loginUser.getId());
|
|
@@ -333,6 +324,19 @@ public class ApiOrderService {
|
|
|
if(tickDiscId11 != null){
|
|
|
checkOutDto.setTickDiscId11(Long.valueOf(tickDiscId11));
|
|
|
}
|
|
|
+ if(campId00 != null){
|
|
|
+ checkOutDto.setCampId00(campId00);
|
|
|
+ }
|
|
|
+ if(campId02 != null){
|
|
|
+ checkOutDto.setCampId02(campId02);
|
|
|
+ }
|
|
|
+ if(campId10 != null){
|
|
|
+ checkOutDto.setCampId10(campId10);
|
|
|
+ }
|
|
|
+ if(campId11 != null){
|
|
|
+ checkOutDto.setCampId11(campId11);
|
|
|
+ }
|
|
|
+ checkOutDto.setIsLoadStatus(isLoadStatus);
|
|
|
checkOutDto.setStoreId(storeId);
|
|
|
checkOutDto.setCartData(cartData);
|
|
|
Map<String, Object> cartResultObj = cartService.getCheckOut(checkOutDto);
|
|
@@ -410,8 +414,12 @@ public class ApiOrderService {
|
|
|
apiMkStorePromStatService.updateMkStorePromStat(orderGoodsVo, orderInfo, loginUser, cartId);
|
|
|
}
|
|
|
}
|
|
|
- //记录活动营销统计下单量数据
|
|
|
- apiMkStoreTopicStatService.saveStoreTopicStatBySubmitData(orderInfo.getCoupon_id());
|
|
|
+ //记录优惠券活动营销统计下单量数据
|
|
|
+ apiMkStoreTopicStatService.saveTicketTopicStatBySubmitData(orderInfo.getCoupon_id());
|
|
|
+
|
|
|
+ //记录促销满减活动营销统计下单量数据
|
|
|
+ apiMkStoreTopicStatService.saveCampTopicStatBySubmitData(orderInfo.getActivity_id(), orderInfo.getCampMinusId());
|
|
|
+
|
|
|
OrderProcessRecordEntity entity = new OrderProcessRecordEntity();
|
|
|
entity.setOrderSn(orderInfo.getOrder_sn());
|
|
|
entity.setUserId(Integer.valueOf(loginUser.getId()+""));
|
|
@@ -440,19 +448,23 @@ public class ApiOrderService {
|
|
|
orderInfoMap.put("orderInfo", orderInfoList);
|
|
|
resultObj.put("data", orderInfoMap);
|
|
|
|
|
|
- // 优惠券标记已用
|
|
|
+ // 优惠券标记已用,或促销满减活动保存已用
|
|
|
for (OrderVo orderInfo : orderInfoList) {
|
|
|
if(orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
|
|
|
updateCoupon(orderInfo);
|
|
|
+ saveUserCamp(orderInfo);
|
|
|
}
|
|
|
if(orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem())){
|
|
|
updateCoupon(orderInfo);
|
|
|
+ saveUserCamp(orderInfo);
|
|
|
}
|
|
|
if(orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_10.getItem())){
|
|
|
updateCoupon(orderInfo);
|
|
|
+ saveUserCamp(orderInfo);
|
|
|
}
|
|
|
if(orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_11.getItem())){
|
|
|
updateCoupon(orderInfo);
|
|
|
+ saveUserCamp(orderInfo);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -477,21 +489,46 @@ public class ApiOrderService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 库存扣减
|
|
|
+ * 订单提交成功后,新增用户促销满减活动信息为已使用
|
|
|
+ * @param orderInfo
|
|
|
+ */
|
|
|
+ private void saveUserCamp(OrderVo orderInfo){
|
|
|
+ if (null != orderInfo.getActivity_id() && 0 != orderInfo.getActivity_id()) {
|
|
|
+ UserCampMinusVo campMinusVo = apiUserCampMinusMapper.queryCampByStoreTopicId(orderInfo.getActivity_id());
|
|
|
+ //如未使用
|
|
|
+ if (null == campMinusVo) {
|
|
|
+ UserCampMinusVo userCampMinusVo = new UserCampMinusVo();
|
|
|
+ userCampMinusVo.setUsedTime(new Date());
|
|
|
+ userCampMinusVo.setOrderId(Integer.parseInt(String.valueOf(orderInfo.getId())));
|
|
|
+ userCampMinusVo.setIsUsed(Dict.isUsed.item_1.getItem());
|
|
|
+ userCampMinusVo.setStoreTopicId(Integer.parseInt(String.valueOf(orderInfo.getActivity_id())));
|
|
|
+ userCampMinusVo.setCreateTime(new Date());
|
|
|
+ userCampMinusVo.setUserId(Integer.parseInt(String.valueOf(orderInfo.getUser_id())));
|
|
|
+ apiUserCampMinusMapper.save(userCampMinusVo);
|
|
|
+ }else {
|
|
|
+ campMinusVo.setUsedTime(new Date());
|
|
|
+ campMinusVo.setOrderId(Integer.parseInt(String.valueOf(orderInfo.getId())));
|
|
|
+ campMinusVo.setIsUsed(Dict.isUsed.item_1.getItem());
|
|
|
+ campMinusVo.setUserId(Integer.parseInt(String.valueOf(orderInfo.getUser_id())));
|
|
|
+ apiUserCampMinusMapper.update(campMinusVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 扣减商户商品总库存
|
|
|
* @param goodsVo
|
|
|
- * @param productInfo
|
|
|
- * @param stockNum
|
|
|
* @param goodsItem
|
|
|
* @param userName
|
|
|
*/
|
|
|
- private void updateGoodsStock(GoodsVo goodsVo,ProductVo productInfo,Integer stockNum,CartVo goodsItem,String userName){
|
|
|
- goodsVo.setGoods_number(stockNum - goodsItem.getNumber());
|
|
|
+ private void updateGoodsStock(GoodsVo goodsVo, CartVo goodsItem,String userName){
|
|
|
+ goodsVo.setGoods_number(goodsVo.getGoods_number() - goodsItem.getNumber());
|
|
|
goodsVo.setId(goodsVo.getId());
|
|
|
apiGoodsMapper.updateGoodsStock(goodsVo);
|
|
|
- //修改门店商品销量
|
|
|
- productInfo.setSell_volume(productInfo.getSell_volume() + goodsItem.getNumber());
|
|
|
- productInfo.setGoods_id(goodsVo.getId());
|
|
|
- apiProductMapper.updateStockNum(productInfo);
|
|
|
+// //修改门店商品销量
|
|
|
+// productInfo.setSell_volume(productInfo.getSell_volume() + goodsItem.getNumber());
|
|
|
+// productInfo.setGoods_id(goodsVo.getId());
|
|
|
+// apiProductMapper.updateStockNum(productInfo);
|
|
|
|
|
|
MngChangeVo mngChangeVo = new MngChangeVo();
|
|
|
mngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsVo.getId())));
|
|
@@ -499,8 +536,8 @@ public class ApiOrderService {
|
|
|
mngChangeVo.setChangeReason("小程序购买商品");
|
|
|
mngChangeVo.setChangeType(Dict.changeType.item_1.getItem());
|
|
|
mngChangeVo.setChangeNum(goodsItem.getNumber());//变化数
|
|
|
- mngChangeVo.setOriginalNum(stockNum);//原库存数
|
|
|
- mngChangeVo.setValidNum(stockNum - goodsItem.getNumber());//可用数
|
|
|
+ mngChangeVo.setOriginalNum(goodsVo.getGoods_number());//原库存数
|
|
|
+ mngChangeVo.setValidNum(goodsVo.getGoods_number() - goodsItem.getNumber());//可用数
|
|
|
mngChangeVo.setCreateTime(new Date());
|
|
|
mngChangeVo.setModTime(new Date());
|
|
|
mngChangeVo.setCreaterSn("小程序用户"+userName);
|
|
@@ -511,7 +548,7 @@ public class ApiOrderService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 库存扣减
|
|
|
+ * 扣减商户门店商品库存
|
|
|
* @param productInfo
|
|
|
* @param goodsVo
|
|
|
* @param stockNum
|
|
@@ -520,8 +557,10 @@ public class ApiOrderService {
|
|
|
* @param userName
|
|
|
*/
|
|
|
private void updateStock(ProductVo productInfo,GoodsVo goodsVo,Integer stockNum,CartVo goodsItem,Long storeId,String userName){
|
|
|
+ //修改门店商品库存
|
|
|
productInfo.setStock_num(stockNum - goodsItem.getNumber());
|
|
|
productInfo.setStore_id(storeId);
|
|
|
+ //修改门店商品销量
|
|
|
productInfo.setSell_volume(productInfo.getSell_volume() + goodsItem.getNumber());
|
|
|
productInfo.setGoods_id(goodsVo.getId());
|
|
|
// productVos.add(productInfo);
|
|
@@ -565,8 +604,10 @@ public class ApiOrderService {
|
|
|
logger.error("订单提交失败:商品已下架");
|
|
|
throw new RRException("订单提交失败:商品已下架");
|
|
|
}
|
|
|
+// String isStockShare = StockUtil.getIsStockShareByGoodsVo(goodsInfo);
|
|
|
// TODO: 2019/3/5 普通商品不受共享库存影响,直接取门店配置库存
|
|
|
- if(goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
|
|
|
+ stockNum = StockUtil.setStockNumByGoodsVo(goodsInfo);
|
|
|
+ /*if(goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
|
|
|
if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
|
|
|
stockNum = goodsInfo.getGoods_number();
|
|
|
}
|
|
@@ -575,25 +616,16 @@ public class ApiOrderService {
|
|
|
}
|
|
|
}else {
|
|
|
stockNum = productInfo.getStock_num();
|
|
|
- }
|
|
|
+ }*/
|
|
|
if (null == stockNum || stockNum < goodsItem.getNumber() || stockNum <= 0) {
|
|
|
logger.error("订单提交失败:库存不足,仅剩余" + stockNum);
|
|
|
throw new RRException("订单提交失败:库存不足,仅剩余" + stockNum);
|
|
|
}else{
|
|
|
- if(goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
|
|
|
- if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
|
|
|
- //扣减商户商品库存
|
|
|
- productInfo.setStore_id(storeId);
|
|
|
- updateGoodsStock(goodsInfo,productInfo,stockNum,goodsItem,userName);
|
|
|
- }
|
|
|
- if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
|
|
|
- //扣减门店库存
|
|
|
- updateStock(productInfo,goodsInfo,stockNum,goodsItem,storeId,userName);
|
|
|
- }
|
|
|
- }else {
|
|
|
- //扣减门店库存
|
|
|
- updateStock(productInfo,goodsInfo,stockNum,goodsItem,storeId,userName);
|
|
|
- }
|
|
|
+ productInfo.setStore_id(storeId);
|
|
|
+ //扣减商户商品总库存
|
|
|
+ updateGoodsStock(goodsInfo, goodsItem, userName);
|
|
|
+ //扣减门店库存
|
|
|
+ updateStock(productInfo,goodsInfo,stockNum,goodsItem,storeId,userName);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -610,6 +642,10 @@ public class ApiOrderService {
|
|
|
public OrderVo setOrderVo(JSONObject jsonParam, UserVo loginUser, Long storeId, Map<String, Object> cartResultObj, String bizType){
|
|
|
OrderVo orderInfo = new OrderVo();
|
|
|
Integer tickDiscId = 0;
|
|
|
+ Integer campId = 0;
|
|
|
+ Long couponId = 0L;
|
|
|
+ Long storeTopicId = 0L;
|
|
|
+ String campName = "";
|
|
|
BigDecimal fullCutCouponDec = Constant.ZERO;
|
|
|
BigDecimal cond = Constant.ZERO;
|
|
|
BigDecimal money = Constant.ZERO;
|
|
@@ -617,14 +653,20 @@ public class ApiOrderService {
|
|
|
BigDecimal freightPrice = Constant.ZERO;
|
|
|
//实付金额:商品销售价*数量-优惠金额+运费的总和
|
|
|
BigDecimal actualPrice = new BigDecimal(0.00);
|
|
|
- Long couponId = 0L;
|
|
|
- Long storeTopicId = 0L;
|
|
|
+ CampMinusDto campMinusDto = new CampMinusDto();
|
|
|
Integer tickDiscId00 = jsonParam.getInteger("tickDiscId00");//优惠券id
|
|
|
Integer tickDiscId02 = jsonParam.getInteger("tickDiscId02");//优惠券id
|
|
|
Integer tickDiscId10 = jsonParam.getInteger("tickDiscId10");//优惠券id
|
|
|
Integer tickDiscId11 = jsonParam.getInteger("tickDiscId11");//优惠券id
|
|
|
+ Integer campId00 = jsonParam.getInteger("campId00");//促销满减id
|
|
|
+ Integer campId02 = jsonParam.getInteger("campId02");//促销满减id
|
|
|
+ Integer campId10 = jsonParam.getInteger("campId10");//促销满减id
|
|
|
+ Integer campId11 = jsonParam.getInteger("campId11");//促销满减id
|
|
|
+ CampMinusDto campMinusDto00 = (CampMinusDto)cartResultObj.get("campMinusDto00");
|
|
|
+ CampMinusDto campMinusDto02 = (CampMinusDto)cartResultObj.get("campMinusDto02");
|
|
|
+ CampMinusDto campMinusDto10 = (CampMinusDto)cartResultObj.get("campMinusDto10");
|
|
|
+ CampMinusDto campMinusDto11 = (CampMinusDto)cartResultObj.get("campMinusDto11");
|
|
|
String postscript = jsonParam.getString("postscript");
|
|
|
- Long fullCutCouponId = jsonParam.getLong("fullCutCouponId");//满减券
|
|
|
AddressVo addressVo = jsonParam.getObject("checkedAddress", AddressVo.class);
|
|
|
Date delivery_date = jsonParam.getDate("delivery_date");
|
|
|
String merchSn = (String)jsonParam.get("merchSn");
|
|
@@ -647,28 +689,36 @@ public class ApiOrderService {
|
|
|
freightPrice = freightPrice00;
|
|
|
goodsTotalPrice = goodsTotalPrice00;
|
|
|
actualPrice = actualPrice00;
|
|
|
+ campId = campId00;
|
|
|
+ campMinusDto = campMinusDto00;
|
|
|
}
|
|
|
if(bizType.equalsIgnoreCase(Dict.orderBizType.item_02.getItem())){
|
|
|
tickDiscId = tickDiscId02;
|
|
|
freightPrice = freightPrice02;
|
|
|
goodsTotalPrice = goodsTotalPrice02;
|
|
|
actualPrice = actualPrice02;
|
|
|
+ campId = campId02;
|
|
|
+ campMinusDto = campMinusDto02;
|
|
|
}
|
|
|
if(bizType.equalsIgnoreCase(Dict.orderBizType.item_10.getItem())){
|
|
|
tickDiscId = tickDiscId10;
|
|
|
freightPrice = freightPrice10;
|
|
|
goodsTotalPrice = goodsTotalPrice10;
|
|
|
actualPrice = actualPrice10;
|
|
|
+ campId = campId10;
|
|
|
+ campMinusDto = campMinusDto10;
|
|
|
}
|
|
|
if(bizType.equalsIgnoreCase(Dict.orderBizType.item_11.getItem())){
|
|
|
tickDiscId = tickDiscId11;
|
|
|
freightPrice = freightPrice11;
|
|
|
goodsTotalPrice = goodsTotalPrice11;
|
|
|
actualPrice = actualPrice11;
|
|
|
+ campId = campId11;
|
|
|
+ campMinusDto = campMinusDto11;
|
|
|
}
|
|
|
// goodsTotalPrice = MapUtils.getBigDecimal("goodsTotalPrice", cartResultObj);//整个订单商品总价,不包含运费和优惠金额
|
|
|
MkStoreTicketDiscountVo mkStoreTicketDiscountVo = null;
|
|
|
- if (null != tickDiscId && 0 != tickDiscId) {
|
|
|
+ if (null != tickDiscId && 0 != tickDiscId && campId == 0) {
|
|
|
//校验该订单所选的优惠券
|
|
|
mkStoreTicketDiscountVo = apiMkStoreTicketDiscountMapper.queryObject(tickDiscId);
|
|
|
if(mkStoreTicketDiscountVo != null) {
|
|
@@ -688,12 +738,11 @@ public class ApiOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
String couponName = "";
|
|
|
UserCouponVo couponVo = null;
|
|
|
//扣减金额
|
|
|
BigDecimal couponPrice = new BigDecimal(0.00);
|
|
|
- if (null != tickDiscId && 0 != tickDiscId) {
|
|
|
+ if (null != tickDiscId && 0 != tickDiscId && campId == 0) {
|
|
|
//查询未使用且未过期的优惠券
|
|
|
List<UserCouponVo> couponVoList = apiUserCouponMapper.queryObjectByIdAndUsed(tickDiscId, loginUser.getId());
|
|
|
if(couponVoList!= null && couponVoList.size() > 0){
|
|
@@ -711,8 +760,7 @@ public class ApiOrderService {
|
|
|
if (mkStoreTicketDiscountVo.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_00.getItem())) {
|
|
|
couponPrice = money;
|
|
|
}
|
|
|
- if (mkStoreTicketDiscountVo.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_01.getItem())) {
|
|
|
- //满多少打几折,money为折扣
|
|
|
+ if (mkStoreTicketDiscountVo.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_01.getItem())) { //折扣
|
|
|
//商品销售价 - 扣减优惠折扣金额后的实付金额 = 订单优惠金额
|
|
|
couponPrice = goodsTotalPrice.subtract(actualPrice);
|
|
|
}
|
|
@@ -734,12 +782,21 @@ public class ApiOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- //todo 获取优惠信息 满减,暂时不用
|
|
|
- CouponVo fullCutCoupon = apiCouponMapper.queryObject(fullCutCouponId);
|
|
|
- if (null != fullCutCoupon) {
|
|
|
- fullCutCouponDec = fullCutCoupon.getType_money();
|
|
|
- }*/
|
|
|
+ MkStoreCampMinusVo mkStoreCampMinusVo = null;
|
|
|
+ if(null != campId && 0 != campId){
|
|
|
+ mkStoreCampMinusVo = apiMkStoreCampMinusMapper.queryObject(campId);
|
|
|
+ if(mkStoreCampMinusVo != null) {
|
|
|
+ storeTopicId = Long.valueOf(mkStoreCampMinusVo.getStoreTopicId());
|
|
|
+ campName = mkStoreCampMinusVo.getCampName();
|
|
|
+ if (mkStoreCampMinusVo.getCampMinusType().equalsIgnoreCase(Dict.campMinusType.item_00.getItem()) || mkStoreCampMinusVo.getCampMinusType().equalsIgnoreCase(Dict.campMinusType.item_01.getItem())) {
|
|
|
+ fullCutCouponDec = campMinusDto.getMoney();
|
|
|
+ }
|
|
|
+ if (mkStoreCampMinusVo.getCampMinusType().equalsIgnoreCase(Dict.campMinusType.item_10.getItem()) || mkStoreCampMinusVo.getCampMinusType().equalsIgnoreCase(Dict.campMinusType.item_11.getItem())) {
|
|
|
+ //商品销售价 - 扣减优惠折扣金额后的实付金额 = 订单优惠金额
|
|
|
+ fullCutCouponDec = goodsTotalPrice.subtract(actualPrice);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (null == delivery_date) {
|
|
|
delivery_date = new Date();
|
|
@@ -783,10 +840,13 @@ public class ApiOrderService {
|
|
|
orderInfo.setCoupon_name(couponName);
|
|
|
orderInfo.setActivity_id(storeTopicId);
|
|
|
|
|
|
+ //使用的促销费用
|
|
|
+ orderInfo.setFull_cut_price(fullCutCouponDec);
|
|
|
+ orderInfo.setCampMinusId(campId);
|
|
|
+ orderInfo.setCampName(campName);
|
|
|
+
|
|
|
//留言
|
|
|
orderInfo.setPostscript(postscript);
|
|
|
- //使用的优惠券
|
|
|
- orderInfo.setFull_cut_price(fullCutCouponDec);
|
|
|
orderInfo.setAdd_time(new Date());
|
|
|
orderInfo.setGoods_price(goodsTotalPrice);
|
|
|
orderInfo.setOrder_price(orderTotalPrice);
|