Commit aecfcdd8afbf6a00fa3239f812a51f71824f6d29

Authored by yvan.ni
1 parent aa90b8a0

立即支付的库存判断

pages/user/order_detail/order_detail.js
... ... @@ -270,10 +270,204 @@ Page({
270 270 },
271 271  
272 272 //--------立即支付----------
273   - jumpToCart4: function(e) {
274   - this.data.optionIsGoup ? wx.navigateTo({
275   - url: "/pages/team/team_confirm/team_confirm?orderSn=" + this.data.order.order_sn + "&orderPay=true"
276   - }) : o.jumpToCart4({
  273 + async jumpToCart4(e) {
  274 + var th=this;
  275 + if(this.data.optionIsGoup)
  276 + wx.navigateTo({
  277 + url: "/pages/team/team_confirm/team_confirm?orderSn=" + this.data.order.order_sn + "&orderPay=true"
  278 + })
  279 + var order=this.data.order;
  280 + var order_goods=order.order_goods;
  281 +
  282 + for(var i in order_goods){
  283 + var good=order_goods[i];
  284 + //如果不是小程序有的功能,直接提示要去3.0处理
  285 + if(good.prom_type==2 || good.prom_type==3 || good.prom_type==4 || good.prom_type==5){
  286 + wx.showModal({
  287 + title: '提示',
  288 + content: '小程序还未有该活动,请到3.0公众号支付'
  289 + });
  290 + return false;
  291 + }
  292 +
  293 + //要每件每件的商品进行检查,看有么有超出库存,超出限购
  294 + var good= order_goods[i],goodsbuynum=0,promgoodsbuynum=0,gg=null;
  295 + //获取单品的现在的活动状态
  296 + await getApp().request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + good.goods_id, {
  297 + }).then(res=>{
  298 + gg=res.data.data;
  299 + })
  300 + var limit = gg.viplimited;
  301 + var store_count = gg.store_count;
  302 +
  303 + //---要获得商品,该用户买了多少件,同步应用---
  304 + await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", {
  305 + data: {
  306 + store_id: os.stoid,
  307 + user_id: getApp().globalData.user_id,
  308 + goods_id: good.goods_id,
  309 + prom_type: good.prom_type,
  310 + prom_id: good.prom_id
  311 + },
  312 + }).then(res => {
  313 + var buy_num_data = res.data.data;
  314 + if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum;
  315 + goodsbuynum = buy_num_data.goodsbuynum;
  316 + })
  317 +
  318 + var buyed_mum2=goodsbuynum+good.goods_num;
  319 + if (buyed_mum2 > limit && limit > 0) {
  320 + wx.showModal({
  321 + title: '提示',
  322 + content: gg.goods_name+'购买数量超出商品限购'
  323 + });
  324 + return false;
  325 + }
  326 +
  327 + if(good.prom_type==1 || good.prom_type==6){
  328 + if(gg.prom_type!=good.prom_type)
  329 + wx.showModal({
  330 + title: '提示',
  331 + content: gg.goods_name+'商品的活动发生了变化'
  332 + });
  333 + return false;
  334 + }else{
  335 +
  336 + if(gg.prom_type==1 || gg.prom_type==6){
  337 + var prom=null;
  338 + //---如果是活动的时候---
  339 + var prom=null,th=this;
  340 + if(gg.prom_type==1){
  341 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+gg.prom_id,{
  342 + }).then(res=>{
  343 + if(res.data.code==0){
  344 + prom=res.data.data;
  345 + }
  346 + })
  347 + }
  348 + if(gg.prom_type==6){
  349 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+gg.prom_id,{
  350 + }).then(res=>{
  351 + if(res.data.code==0){
  352 + prom=res.data.data;
  353 + }
  354 + })
  355 + }
  356 +
  357 + if(prom){
  358 + var t_now=ut.gettimestamp();
  359 + if(prom.is_end==0 && prom.start_time<t_now && prom.end_time>t_now){
  360 + wx.showModal({
  361 + title: '提示',
  362 + content: gg.goods_name+'商品的活动发生了变化'
  363 + });
  364 + return false;
  365 + }
  366 + }
  367 + }
  368 +
  369 +
  370 + var isok=1;
  371 + var card_field=th.data.card_field;
  372 + //如果会员是等级会员,商品有等级价,且不是活动商品
  373 + if(card_field && gg[card_field]>0){
  374 + if (good.goods_price != gg[card_field]) isok = 0;
  375 + }else{
  376 + if (good.goods_price != gg.shop_price) isok = 0;
  377 +
  378 + }
  379 + if(!isok){
  380 + wx.showModal({
  381 + title: '提示',
  382 + content: gg.goods_name+'商品的价格发生了变化'
  383 + });
  384 + return false;
  385 + }
  386 +
  387 + //--如果是线下库存的时候--
  388 + if(th.data.conf.sales_rules==2){
  389 + var ob={};
  390 + await th.check_down_line_next(gg,good.goods_num,order.pickup_id,function(obj){
  391 + ob=obj;
  392 + })
  393 + if(ob.code==-1){
  394 + wx.showModal({
  395 + title: '提示',
  396 + content: gg.goods_name+'门店库存不足'
  397 + });
  398 + return false;
  399 + }
  400 +
  401 + }else{
  402 + if(good.goods_num>store_count){
  403 + wx.showModal({
  404 + title: '提示',
  405 + content: gg.goods_name+'商品的库存不足'
  406 + });
  407 + return false;
  408 + }
  409 +
  410 + }
  411 + }
  412 +
  413 + var prom=null;
  414 + //---如果是活动的时候---
  415 + var prom=null,goodsinfo=good,th=this;
  416 + if(goodsinfo.prom_type==1){
  417 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  418 + }).then(res=>{
  419 + if(res.data.code==0){
  420 + prom=res.data.data;
  421 + }
  422 + })
  423 + }
  424 + if(goodsinfo.prom_type==6){
  425 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  426 + }).then(res=>{
  427 + if(res.data.code==0){
  428 + prom=res.data.data;
  429 + }
  430 + })
  431 + }
  432 + //----------如果有活动,并且在进行中,就不计算线下库存---------------
  433 + if(prom){
  434 + var now=ut.gettimestamp();
  435 + if(prom.is_end==1 && prom.end_time<now){
  436 + wx.showModal({
  437 + title: '提示',
  438 + content: goodsinfo.goods_name+'商品的活动已经结束'
  439 + });
  440 + return false;
  441 + }
  442 +
  443 + buyed_mum2=promgoodsbuynum+good.goods_num;
  444 + if (buyed_mum2 > prom.buy_limit && prom.buy_limit > 0) {
  445 + wx.showModal({
  446 + title: '提示',
  447 + content: goodsinfo.goods_name+'购买数量超出商品活动限购'
  448 + });
  449 + return false;
  450 + }
  451 +
  452 + var redis_num = 0;
  453 + //------判断活动是否抢光-----
  454 + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" +
  455 + os.stoid + "/" + goodsinfo.prom_type + "/" + goodsinfo.prom_id, {
  456 + }).then(res => {
  457 + redis_num = res.data.data;
  458 + });
  459 +
  460 + if (good.goods_num > redis_num) {
  461 + wx.showModal({
  462 + title: gg.goods_name+'超出商品活动库存',
  463 + });
  464 + return false;
  465 + }
  466 + }
  467 +
  468 + }
  469 +
  470 + o.jumpToCart4({
277 471 order_sn: this.data.order.order_sn,
278 472 order_amount: this.data.order.order_amount
279 473 }, 1);
... ... @@ -393,7 +587,48 @@ Page({
393 587 if(item.order_amount==0 || item.user_money==0) return true;
394 588 }
395 589 return false;
396   - }
  590 + },
  591 +
  592 +
  593 +
  594 + //---检验线下库存的数量的子函数---
  595 + async check_down_line_next(gg,num,pick_id,func){
  596 +
  597 + var lock=0,pick_no,plist;
  598 + //先读取门店的lock
  599 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  600 + data:{store_id:os.stoid,wareId:gg.goods_id,storageId:pick_id}
  601 + }).then(res=>{
  602 + if(res.data.code==0 && res.data.data.total>0){
  603 + for(var i in res.data.data.pageData)
  604 + lock+=res.data.data.pageData[i].outQty;
  605 + }
  606 + })
  607 + //先获取门店的编号
  608 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pick_id,{
  609 + data:{storeId:os.stoid,goodsId:gg.goods_id,pickupId:pick_id}
  610 + }).then(res=>{
  611 + if(res.data.code==0){
  612 + pick_no=res.data.data.pickup_no;
  613 + }
  614 + })
  615 + //读取线下的门店库存
  616 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  617 + data:{storageNos:pick_no,wareIds:encodeURIComponent(gg.erpwareid),storeId:os.stoid}
  618 + }).then(res=>{
  619 + if(res.data.code==0){
  620 + plist=res.data.data.pageData[0];
  621 + }
  622 + })
  623 + var ob={}; ob.code=1;
  624 + if(num>plist.CanOutQty-lock){
  625 + ob.code=-1;
  626 + ob.CanOutQty=plist.CanOutQty-lock
  627 + if(ob.CanOutQty<0) ob.CanOutQty=0;
  628 + }
  629 + func(ob)
  630 + },
  631 +
397 632  
398 633  
399 634  
... ...
pages/user/order_list/order_list.js
... ... @@ -604,7 +604,8 @@ Page({
604 604 data:{store_id:os.stoid,wareId:gg.goods_id,storageId:pick_id}
605 605 }).then(res=>{
606 606 if(res.data.code==0 && res.data.data.total>0){
607   - lock=res.data.data.pageData[0].outQty;
  607 + for(var i in res.data.data.pageData)
  608 + lock+=res.data.data.pageData[i].outQty;
608 609 }
609 610 })
610 611 //先获取门店的编号
... ...