Parcourir la source

盲票实时毛利、终极毛利后台展示

zhangkaikai il y a 1 an
Parent
commit
76ed7ddef8

+ 7 - 7
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/TicketBoxMgrController.java

@@ -30,6 +30,7 @@ import com.qs.mp.common.utils.RSAUtil;
 import com.qs.mp.user.domain.UserHitPrize;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.domain.UserTicketOrderItem;
 import com.qs.mp.user.domain.vo.UserHitPrizeVO;
 import com.qs.mp.user.domain.vo.UserPrizeStorageVO;
 import com.qs.mp.user.service.IUserPrizeStorageService;
@@ -225,14 +226,13 @@ public class TicketBoxMgrController extends BaseApiController {
         userHitPrizeCoinVOList.forEach(v -> coinCost.updateAndGet(v1 -> v1 + v.getValue() * 10));
 
         // 盲票关联商品成本
-        int ticketBoxGodsCost = 0;
-        List<TicketBoxGoodsVO> ticketBoxGoodsVOS = ticketBoxGoodsService.listByQueryWrapper(new QueryWrapper<TicketBoxGoods>().eq("box_id", box.getBoxId()));
-        if (CollectionUtils.isNotEmpty(ticketBoxGoodsVOS)) {
-            ticketBoxGodsCost += ticketBoxGoodsVOS.get(0).getCost() * userhitPrizeVOList.size();
-        }
+        List<UserPrizeStorageVO> storageTicketGoods = userPrizeStorageService.listTicketGoodsCost(new QueryWrapper<UserTicketOrderItem>().eq("t2.box_id", box.getBoxId())
+                .eq("t1.in_type",PrizeStorageInTypeEnum.TICKET_GOODS.getValue()));
+        int allTicketBoxGoodsCost = storageTicketGoods.stream().mapToInt(UserPrizeStorageVO::getCost).sum();
+        int hasDistributedTicketBoxGoodsCost = storageTicketGoods.stream().filter(v -> PrizeStorageStatusEnum.HAS_DISTRIBUTED.equals(v.getStatus())).mapToInt(UserPrizeStorageVO::getCost).sum();
         Integer payAmt = boxGrossProfit != null ? boxGrossProfit.getPayAmt() : 0;
-        box.setRealTimeGrossProfit(payAmt - commAmt - hasDistributedPrizeGoodsCost - recoveryGoodsCost - couponCost.get() - coinCost.get() - ticketBoxGodsCost);
-        box.setFinalGrossProfit(payAmt - commAmt - notDistributedPrizeGoodsCost - hasDistributedPrizeGoodsCost - recoveryGoodsCost - couponCost.get() - coinCost.get() - ticketBoxGodsCost);
+        box.setRealTimeGrossProfit(payAmt - commAmt - hasDistributedPrizeGoodsCost - recoveryGoodsCost - couponCost.get() - coinCost.get() - hasDistributedTicketBoxGoodsCost);
+        box.setFinalGrossProfit(payAmt - commAmt - notDistributedPrizeGoodsCost - hasDistributedPrizeGoodsCost - recoveryGoodsCost - couponCost.get() - coinCost.get() - allTicketBoxGoodsCost);
     }
 
     @PostMapping("/update")

+ 3 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserPrizeStorageMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.user.domain.UserHitPrize;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.user.domain.UserTicketOrderItem;
 import com.qs.mp.user.domain.vo.UserPrizeStorageVO;
 import org.apache.ibatis.annotations.Param;
 
@@ -27,4 +28,6 @@ public interface UserPrizeStorageMapper extends BaseMapper<UserPrizeStorage> {
     List<UserPrizeStorageVO> listGoodsPrizeCost(@Param(Constants.WRAPPER) QueryWrapper<UserHitPrize> queryWrapper);
 
     List<UserPrizeStorageVO> listAllPrizeStorageGoodsCost(@Param(Constants.WRAPPER) QueryWrapper<UserPrizeStorage> queryWrapper);
+
+    List<UserPrizeStorageVO> listTicketGoodsCost(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrderItem> queryWrapper);
 }

+ 3 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserPrizeStorageService.java

@@ -6,6 +6,7 @@ import com.qs.mp.common.enums.PrizeStorageInTypeEnum;
 import com.qs.mp.user.domain.UserHitPrize;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.user.domain.UserTicketOrderItem;
 import com.qs.mp.user.domain.vo.UserPrizeStorageVO;
 
 import java.util.List;
@@ -39,4 +40,6 @@ public interface IUserPrizeStorageService extends IService<UserPrizeStorage> {
   List<UserPrizeStorageVO> listGoodsPrizeCost(QueryWrapper<UserHitPrize> queryWrapper);
 
   List<UserPrizeStorageVO> listAllPrizeStorageGoodsCost(QueryWrapper<UserPrizeStorage> queryWrapper);
+
+  List<UserPrizeStorageVO> listTicketGoodsCost(QueryWrapper<UserTicketOrderItem> queryWrapper);
 }

+ 6 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserPrizeStorageServiceImpl.java

@@ -6,6 +6,7 @@ import com.qs.mp.common.enums.PrizeStorageStatusEnum;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import com.qs.mp.user.domain.UserHitPrize;
 import com.qs.mp.user.domain.UserPrizeStorage;
+import com.qs.mp.user.domain.UserTicketOrderItem;
 import com.qs.mp.user.domain.vo.UserPrizeStorageVO;
 import com.qs.mp.user.mapper.UserPrizeStorageMapper;
 import com.qs.mp.user.service.IUserPrizeStorageService;
@@ -43,6 +44,11 @@ public class UserPrizeStorageServiceImpl extends ServiceImpl<UserPrizeStorageMap
         return getBaseMapper().listAllPrizeStorageGoodsCost(queryWrapper);
     }
 
+    @Override
+    public List<UserPrizeStorageVO> listTicketGoodsCost(QueryWrapper<UserTicketOrderItem> queryWrapper) {
+        return getBaseMapper().listTicketGoodsCost(queryWrapper);
+    }
+
     @Override
   public void takeInStorage(Long userId, String title, String picUrl, String goodsId, PrizeStorageInTypeEnum inTypeEnum, String refId) {
       UserPrizeStorage userPrizeStorage = new UserPrizeStorage();

+ 10 - 0
mp-service/src/main/resources/mapper/user/UserPrizeStorageMapper.xml

@@ -57,4 +57,14 @@
                 LEFT JOIN mp_goods t2 ON t1.goods_id = t2.goods_id
             ${ew.customSqlSegment}
     </select>
+    <select id="listTicketGoodsCost" resultType="com.qs.mp.user.domain.vo.UserPrizeStorageVO">
+        SELECT
+            t3.cost,
+            t1.*
+        FROM
+            mp_user_prize_storage t1
+                left join mp_user_ticket_order_item t2 on t2.item_id = t1.ref_id
+                LEFT JOIN mp_goods t3 ON t1.goods_id = t3.goods_id
+            ${ew.customSqlSegment}
+    </select>
 </mapper>