package com.sinata.rest.modular.mall.controller;
|
|
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;
|
import com.sinata.rest.modular.member.service.IMemUserRelationService;
|
import com.sinata.rest.modular.member.service.IMemUserService;
|
import io.swagger.annotations.Api;
|
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.*;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 商品接口
|
* @author goku
|
* @date 2023/4/11
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("/mall/goodsGroup")
|
@Api(tags = "商城-套餐商品")
|
@SuppressWarnings("unchecked")
|
public class MallGoodsGroupController {
|
|
@Autowired
|
private IMemUserService memUserService;
|
|
@Autowired
|
private IMallOrderService mallOrderService;
|
|
@Autowired
|
private IMemUserRelationService memUserRelationService;
|
|
@Autowired
|
private IMallVipEquityService mallVipEquityService;
|
|
@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<Boolean> 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.returnOK(Boolean.FALSE);
|
}
|
}
|
}
|
return ApiUtils.returnNG(Boolean.TRUE);
|
}
|
@GetMapping(value = "/myShare")
|
@ApiOperation(value = "我的推广")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "userId", value = "用户ID", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
})
|
public ApiUtils<VoMyShare> myShare(Integer userId) {
|
VoUserAndShareInfo userAndSharer = memUserService.getUserAndSharerById(userId);
|
VoMyShare vo = BeanUtil.toBean(userAndSharer, VoMyShare.class);
|
|
List<VoMallOrder> orderList = mallOrderService.getOrderByUserIdList(null, userId, EnumMallOrderState.SUCCESS.index, null);
|
vo.setOrderCount(orderList != null ? orderList.size() : 0);
|
|
List<VoTeamUser> teamList = inDirectTeamList(userId);
|
vo.setTeamCount(teamList != null ? teamList.size() : 0);
|
|
return ApiUtils.returnOK(vo);
|
}
|
|
@GetMapping(value = "/myEquity")
|
@ApiOperation(value = "我的权益")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "userId", value = "用户ID", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
})
|
public ApiUtils<List<VoMallOrderEquity>> myEquity(Integer userId) {
|
List<MallOrder> list = mallOrderService.list(
|
Wrappers.<MallOrder>query().lambda()
|
.ne(MallOrder::getOrderType, EnumMallGoodsGroupType.GOODS.index)
|
.eq(MallOrder::getUserId, userId)
|
// 订单材料受益人,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 -> toVoMallOrderEquity(o, vipEquityList)).collect(Collectors.toList());
|
for (VoMallOrderEquity voMallOrderEquity : voList) {
|
for (MallOrder mallOrder : list) {
|
if (voMallOrderEquity.getOrderNo().equals(mallOrder.getOrderNo())) {
|
voMallOrderEquity.setPriceSale(mallOrder.getPayMoney());
|
}
|
}
|
}
|
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) {
|
return memUserService.applySaleUser(body);
|
}
|
@PostMapping(value = "/real-name-authentication")
|
@ApiOperation(value = "三网手机实名认证")
|
public ApiUtils realNameAuthentication(@RequestBody BodyUserAuthentication body) {
|
return ApiUtils.returnOK(telecomUtil.verify(body.getRealName(),body.getIdCard(),body.getPhone()));
|
}
|
// @GetMapping(value = "/directTeam")
|
// @ApiOperation(value = "我的直属团队")
|
// @ApiImplicitParams({
|
// @ApiImplicitParam(name = "userId", value = "用户ID", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
// })
|
// public ApiUtils<List<VoTeamUser>> directTeam(Integer userId) {
|
// List<VoTeamUser> list = memUserRelationService.myTeam(userId, Arrays.asList(EnumMemberGrade.G_3.index));
|
//
|
// return ApiUtils.returnOK(list);
|
// }
|
|
@GetMapping(value = "/inDirectTeam")
|
@ApiOperation(value = "我的团队")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "userId", value = "用户ID", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
})
|
public ApiUtils<List<VoTeamUser>> inDirectTeam(Integer userId) {
|
return ApiUtils.returnOK(inDirectTeamList(userId));
|
}
|
public List<VoTeamUser> inDirectTeamList(Integer userId) {
|
// 查询与用户相关直辖下级(等级、上级信息)
|
List<VoUserGradeParent> userInDirectTeam = memUserRelationService.getUserInDirectTeamByUserGradeParent(userId);
|
|
List<Integer> ids;
|
if (userInDirectTeam != null && userInDirectTeam.size() > 0) {
|
ids = userInDirectTeam.stream().map(VoUserGradeParent::getId).collect(Collectors.toList());
|
} else {
|
ids = Arrays.asList(0);
|
}
|
|
// 查询团队信息
|
List<MemUser> teamList = memUserService.list(
|
Wrappers.<MemUser>query().lambda()
|
.in(MemUser::getId, ids)
|
);
|
|
return BeanUtil.copyToList(teamList, VoTeamUser.class);
|
}
|
|
@PostMapping(value = "/applySubstanceCoupon")
|
@ApiOperation(value = "申请实物券")
|
public ApiUtils applySubstanceCoupon(@RequestBody MyUserSubstanceCoupon obj) {
|
MallOrder mallOrder = mallOrderService.getById(obj.getOrderNo());
|
if (mallOrder == null) {
|
return ApiUtils.returnNG("订单信息无效");
|
}
|
if(mallOrder.getState() != EnumMallOrderState.WAIT_CHECK.index){
|
return ApiUtils.returnNG("仅待核销订单可申请实物券");
|
}
|
|
// 套餐订单设置已转换
|
mallOrder.setState(EnumMallOrderState.REAL_COUPON.index);
|
mallOrder.setApplyTime(new Date());
|
mallOrder.updateById();
|
|
// 保存申请信息
|
obj.insert();
|
|
return ApiUtils.returnOK();
|
}
|
|
}
|