package com.kiisoo.ic.activity.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.kiisoo.ic.activity.bean.ActivityInstanceVO; import com.kiisoo.ic.activity.bean.PromotionSrcVO; import com.kiisoo.ic.activity.bean.PushPromotionsVO; import com.kiisoo.ic.activity.bean.RemoveStaffVO; import com.kiisoo.ic.activity.entity.PmnActivityInstance; import com.kiisoo.ic.activity.entity.PmnPromotionFriendsSrc; import com.kiisoo.ic.activity.entity.PmnPromotionSrc; import com.kiisoo.ic.activity.service.IPmnActivityInstanceService; import com.kiisoo.ic.activity.service.IPmnPromotionFriendsSrcService; import com.kiisoo.ic.activity.service.IPmnPromotionSrcService; import com.kiisoo.ic.common.BaseController; import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.store.entity.PoiStoreStaff; import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper; import com.kiisoo.ic.store.service.StoreEmployeeService; import com.kiisoo.ic.synchronous.entity.TurnBackDTO; import com.kiisoo.ic.system.entity.PrivilageAccountDO; import com.kiisoo.ic.system.entity.PrivilageRoleDO; import com.kiisoo.ic.system.entity.PrivilageUserDO; import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper; import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper; import com.kiisoo.ic.system.service.PrivilageAccountService; import com.kiisoo.ic.webappmy.service.WebAppService; import com.kiisoo.ic.webappmy.vo.StafferInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; @Api(value = "小程序-我的活动推广", tags = {"小程序-我的活动推广"}) @RestController @RequestMapping("/webapp/my") @Slf4j public class WebAppActivityController extends BaseController { @Autowired private IPmnPromotionSrcService pmnPromotionSrcService; @Autowired private PoiStoreStaffDOMapper poiStoreStaffDOMapper; @ApiOperation(value = "我的活动推广列表") @GetMapping("/get/promotions") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "int", paramType = "form"), }) public Map myPromotions(long userId) { // TODO 查询当前小程序用户,在活动有效期间的有效活动,包含活动名称,活动二维码 // TODO 从 promotion_src 获取当前导购的推广关系,并关联 activity_instance等表获取活动详情(注意活动有效性) // TODO 需要附加这个活动已经推广的客户列表 promotion_friends_src try { List codes = pmnPromotionSrcService.listUserCodes(userId); return data(codes); } catch (Exception e) { log.error("获取用户信息异常", e); return fail(); } } @ApiOperation(value = "店长-执行推广") @PostMapping("/post/promotions") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "int", paramType = "form"), @ApiImplicitParam(name = "list", value = "选中导购staffId列表", dataType = "array", paramType = "form"), @ApiImplicitParam(name = "instanceId", value = "活动ID", dataType = "array", paramType = "form"), }) public Map pushPromotion(@RequestBody PushPromotionsVO vo) { // TODO 将活动推广给单个或多个导购 promotion_src // TODO 如果已经推广过了,则忽略 try { List fails = new ArrayList<>(); List success = new ArrayList<>(); Long instanceId = vo.getInstanceId(); Long userId = vo.getUserId(); List ids = vo.getList(); if(ids.size() <= 0) { return fail("00004", "请传入list"); } if(instanceId == null) { return fail("00004", "请传入实例ID"); } List staffs = poiStoreStaffDOMapper.selectBatchIds(ids); for (PoiStoreStaff staff : staffs) { PmnPromotionSrc create = pmnPromotionSrcService.createCode(staff, instanceId); if (create == null) { fails.add(staff); } else { success.add(staff); } } /** * 传入列表没有的,二维码设为失效 */ PmnPromotionSrc up = new PmnPromotionSrc(); up.setStatus(2L); pmnPromotionSrcService.update(up, Wrappers.lambdaQuery().eq(PmnPromotionSrc::getInstanceId, instanceId).notIn(PmnPromotionSrc::getPromoterId, staffs.stream().map(PoiStoreStaff::getUserId).collect(Collectors.toList())).ne(PmnPromotionSrc::getType, 2)); // Map ret = new HashMap<>(); ret.put("success", success); ret.put("fail", fails); return data(ret); } catch (Exception e) { log.error("获取用户信息异常", e); return fail(); } } @ApiOperation(value = "店长-移除活动导购") @PostMapping("/removeStaff") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "当前登录用户ID", dataType = "int", paramType = "form"), @ApiImplicitParam(name = "user", value = "要移除导购的userId", dataType = "array", paramType = "form"), @ApiImplicitParam(name = "instanceId", value = "活动ID", dataType = "array", paramType = "form"), }) public Map removeStaff(@RequestBody RemoveStaffVO removeStaffVO){ try{ boolean remove = pmnPromotionSrcService.remove(Wrappers.lambdaQuery().eq(PmnPromotionSrc::getPromoterId, removeStaffVO.getUser()).eq(PmnPromotionSrc::getType, 1).eq(PmnPromotionSrc::getInstanceId, removeStaffVO.getInstanceId())); return remove ? success() : fail(); } catch (Exception e) { log.error("获取用户信息异常", e); return fail(); } } @ApiOperation(value = "好友添加回调通知") @PostMapping("/cb") public Map turnBack(@RequestBody List turnBackDTOS) { // TODO 待调查 return data(null); } }