mitao
2024-05-23 95c67a5dd1f0ae0651c84f76e429fef6c601f1c2
meiya-rest/src/main/java/com/sinata/rest/modular/mall/controller/MallGoodsGroupController.java
@@ -2,17 +2,22 @@
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.sinata.common.enums.EnumMemberGrade;
import com.sinata.common.enums.mall.EnumMallGoodsGroupType;
import com.sinata.common.enums.mall.EnumMallOrderState;
import com.sinata.common.user.VoUserGradeParent;
import com.sinata.rest.common.ApiUtils;
import com.sinata.rest.core.juhe.TelecomUtil;
import com.sinata.rest.core.util.ToolUtil;
import com.sinata.rest.modular.mall.controller.body.BodyApplySaleUser;
import com.sinata.rest.modular.mall.controller.body.BodyUserAuthentication;
import com.sinata.rest.modular.mall.controller.vo.*;
import com.sinata.rest.modular.mall.model.MallGoods;
import com.sinata.rest.modular.mall.model.MallOrder;
import com.sinata.rest.modular.mall.model.MallVipEquity;
import com.sinata.rest.modular.mall.model.MyUserSubstanceCoupon;
import com.sinata.rest.modular.mall.service.IMallGoodsService;
import com.sinata.rest.modular.mall.service.IMallOrderService;
import com.sinata.rest.modular.mall.service.IMallVipEquityService;
import com.sinata.rest.modular.member.model.MemUser;
@@ -22,6 +27,7 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -41,6 +47,7 @@
@RestController
@RequestMapping("/mall/goodsGroup")
@Api(tags = "商城-套餐商品")
@SuppressWarnings("unchecked")
public class MallGoodsGroupController {
    @Autowired
@@ -58,6 +65,30 @@
    @Autowired
    private TelecomUtil telecomUtil;
    @Autowired
    private IMallGoodsService mallGoodsService;
    @GetMapping(value = "/purchase-auth")
    @ApiOperation(value = "营销员购买套餐权限校验")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userId", value = "用户ID", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
            @ApiImplicitParam(name = "shareUserId", value = "分享套餐用户ID", defaultValue = "1", dataType = "Int", paramType = "query", required = true)
    })
    public ApiUtils purchaseAuth(@RequestParam(value = "userId") Integer userId,@RequestParam("shareUserId") Integer shareUserId) {
        MemUser user = memUserService.getById(userId);
        MemUser shareUser = memUserService.getById(shareUserId);
        Integer isLeaveOffice = user.getIsLeaveOffice();
        Integer memberGradeId = user.getMemberGradeId();
        if (ToolUtil.isNotEmpty(user) && ToolUtil.isNotEmpty(shareUser)) {
//            营销员不可购买营销员分享的套餐
            if (isLeaveOffice == 0  && memberGradeId >= EnumMemberGrade.G_3.index
                    && shareUser.getIsLeaveOffice() == 0 && shareUser.getMemberGradeId()>= EnumMemberGrade.G_3.index) {
                if (!userId.equals(shareUserId)) {
                    return ApiUtils.returnNG("营销员只能购买自己分享的套餐!");
                }
            }
        }
        return ApiUtils.returnOK();
    }
    @GetMapping(value = "/myShare")
    @ApiOperation(value = "我的推广")
    @ApiImplicitParams({
@@ -87,40 +118,50 @@
                        .ne(MallOrder::getOrderType, EnumMallGoodsGroupType.GOODS.index)
                        .eq(MallOrder::getUserId, userId)
                        // 订单材料受益人,0未申请入司
                        .eq(MallOrder::getUseUserId, 0)
//                        .eq(MallOrder::getUseUserId, 0)
                        .in(MallOrder::getState, Arrays.asList(
                                EnumMallOrderState.WAIT_CHECK.index,
                                EnumMallOrderState.USE.index,
                                EnumMallOrderState.SUCCESS.index
                        ))
                        )).orderByAsc(MallOrder::getUseUserId)
        );
        // 权益列表
        List<MallVipEquity> vipEquityList = mallVipEquityService.list();
        List<VoMallOrderEquity> voList = BeanUtil.copyToList(list, VoMallOrderEquity.class);
        voList.stream().map(o -> {
            List<String> contentList = new ArrayList();
            for (MallVipEquity eq : vipEquityList) {
                if (o.getOrderType().equals(eq.getGroupType())) {
                    contentList.add(eq.getContent());
        voList.stream().map(o -> toVoMallOrderEquity(o, vipEquityList)).collect(Collectors.toList());
        for (VoMallOrderEquity voMallOrderEquity : voList) {
            for (MallOrder mallOrder : list) {
                if (voMallOrderEquity.getOrderNo().equals(mallOrder.getOrderNo())) {
                    voMallOrderEquity.setPriceSale(mallOrder.getPayMoney());
                }
            }
            o.setEquityContent(contentList);
            // 销售人员ID
            MemUser saleUser = memUserService.getById(o.getSaleUserId());
            if (saleUser != null) {
                o.setSaleUserNickName(saleUser.getNickName());
                o.setSaleUserRealName(saleUser.getRealName());
            }
            return o;
        }).collect(Collectors.toList());
        }
        return ApiUtils.returnOK(voList);
    }
    private VoMallOrderEquity toVoMallOrderEquity(VoMallOrderEquity o,List<MallVipEquity> vipEquityList) {
        List<String> contentList = new ArrayList();
        for (MallVipEquity eq : vipEquityList) {
            if (o.getOrderType().equals(eq.getGroupType())) {
                contentList.add(eq.getContent());
            }
        }
        o.setEquityContent(contentList);
        // 销售人员ID
        MemUser saleUser = memUserService.getById(o.getSaleUserId());
        if (saleUser != null) {
            o.setSaleUserNickName(saleUser.getNickName());
            o.setSaleUserRealName(saleUser.getRealName());
        }
        MallGoods goods = mallGoodsService.getById(o.getGoodsId());
        Optional.ofNullable(goods).ifPresent(item ->{
            o.setGoodsName(item.getGoodsName());
            o.setGoodsImage(item.getGoodsImage());
        });
        return o;
    }
    @PostMapping(value = "/applySaleUser")
    @ApiOperation(value = "推荐他人入司")
    public ApiUtils applySaleUser(@RequestBody BodyApplySaleUser body) {