|
@@ -0,0 +1,525 @@
|
|
|
|
|
+package com.linkwechat.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
+import com.linkwechat.common.core.domain.AjaxResult;
|
|
|
|
|
+import com.linkwechat.common.core.domain.model.LoginUser;
|
|
|
|
|
+import com.linkwechat.common.core.page.TableDataInfo;
|
|
|
|
|
+import com.linkwechat.common.exception.CustomException;
|
|
|
|
|
+import com.linkwechat.common.utils.WxMiniProgramSchemeUtil;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.bdsh.LocalMerchantInfo;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.bdsh.LocalRightsInfo;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.bdsh.LotteryActivity;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.dto.DistDto;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.dto.WeGroupFissionDetailDto;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.dto.WeGroupFissionDto;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.entity.WeGroupFission;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.entity.WeGroupFissionExtraRecord;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.entity.WeGroupFissionStepRecord;
|
|
|
|
|
+import com.linkwechat.domain.weGroupFission.vo.*;
|
|
|
|
|
+import com.linkwechat.framework.service.TokenService;
|
|
|
|
|
+import com.linkwechat.mapper.WeGroupFissionMapper;
|
|
|
|
|
+import com.linkwechat.service.*;
|
|
|
|
|
+import me.chanjar.weixin.cp.api.WxCpExternalContactService;
|
|
|
|
|
+import me.chanjar.weixin.cp.bean.external.WxCpUserExternalGroupChatList;
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * @Description: 群裂变活动表
|
|
|
|
|
+ * @Author: jeecg-boot
|
|
|
|
|
+ * @Date: 2026-01-28
|
|
|
|
|
+ * @Version: V1.0
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+public class WeGroupFissionServiceImpl extends ServiceImpl<WeGroupFissionMapper, WeGroupFission> implements IWeGroupFissionService {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IWeGroupFissionExtraRecordService weGroupFissionExtraRecordService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IWeGroupFissionStepRecordService weGroupFissionStepRecordService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private WxMiniProgramSchemeUtil wxMiniProgramSchemeUtil;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private LocalMerchantInfoService localMerchantInfoService;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TokenService tokenService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ILotteryActivityService lotteryActivityService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private LocalRightsInfoService localRightsInfoService;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 10:59
|
|
|
|
|
+ * @Description: 群裂变列表+分页
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public TableDataInfo<?> getPageList(WeGroupFissionVo weGroupFissionVo) {
|
|
|
|
|
+ TableDataInfo rspData = new TableDataInfo();
|
|
|
|
|
+ if(weGroupFissionVo.getPageNum() == null){
|
|
|
|
|
+ rspData.setCode(500);
|
|
|
|
|
+ rspData.setMsg("当前页码不能为空");
|
|
|
|
|
+ return rspData;
|
|
|
|
|
+ }
|
|
|
|
|
+ if(weGroupFissionVo.getPageSize() == null){
|
|
|
|
|
+ rspData.setCode(500);
|
|
|
|
|
+ rspData.setMsg("页数不能为空");
|
|
|
|
|
+ return rspData;
|
|
|
|
|
+ }
|
|
|
|
|
+ Page<WeGroupFissionDto> page = new Page<WeGroupFissionDto>(weGroupFissionVo.getPageNum(), weGroupFissionVo.getPageSize());
|
|
|
|
|
+ IPage<WeGroupFissionDto> pageList = this.getBaseMapper().getPageList(page, weGroupFissionVo);
|
|
|
|
|
+ List<WeGroupFissionDto> records = pageList.getRecords();
|
|
|
|
|
+ if(records==null || records.isEmpty()){
|
|
|
|
|
+ records =new ArrayList<>();
|
|
|
|
|
+ }
|
|
|
|
|
+ rspData.setCode(200);
|
|
|
|
|
+ rspData.setMsg("查询成功");
|
|
|
|
|
+ rspData.setRows(records);
|
|
|
|
|
+ rspData.setPageNum(weGroupFissionVo.getPageNum());
|
|
|
|
|
+ rspData.setPageSize(weGroupFissionVo.getPageSize());
|
|
|
|
|
+ rspData.setTotal(pageList.getTotal());
|
|
|
|
|
+ return rspData;
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 11:30
|
|
|
|
|
+ * @Description: 群裂变添加或者修改
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void addOrUpdate(WeGroupFissionAddVo weGroupFissionAddVo) {
|
|
|
|
|
+ try{
|
|
|
|
|
+ //获取平台用户登录id
|
|
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser();
|
|
|
|
|
+ //验证数据正确性
|
|
|
|
|
+ checkData(weGroupFissionAddVo);
|
|
|
|
|
+ //判断是否有id 新增
|
|
|
|
|
+ String id ="";
|
|
|
|
|
+ if (StringUtils.isNotBlank(weGroupFissionAddVo.getId())) {
|
|
|
|
|
+ WeGroupFission weGroupFissionUpdate = this.getById(weGroupFissionAddVo.getId());
|
|
|
|
|
+ if(weGroupFissionUpdate==null){
|
|
|
|
|
+ throw new CustomException("数据不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ id = weGroupFissionUpdate.getId();
|
|
|
|
|
+ BeanUtil.copyProperties(weGroupFissionAddVo, weGroupFissionUpdate);
|
|
|
|
|
+ //修改创建时间、创建人
|
|
|
|
|
+ weGroupFissionUpdate.setUpdateTime(new Date());
|
|
|
|
|
+ weGroupFissionUpdate.setUpdateUserId(String.valueOf(loginUser.getUserId()));
|
|
|
|
|
+ this.updateById(weGroupFissionUpdate);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ WeGroupFission weGroupFissionAdd =new WeGroupFission();
|
|
|
|
|
+ BeanUtil.copyProperties(weGroupFissionAddVo, weGroupFissionAdd);
|
|
|
|
|
+ //添加创建时间、创建人
|
|
|
|
|
+ weGroupFissionAdd.setCreateTime(new Date());
|
|
|
|
|
+ weGroupFissionAdd.setCreateUserId(String.valueOf(loginUser.getUserId()));
|
|
|
|
|
+ //1.插入群打卡表
|
|
|
|
|
+ this.save(weGroupFissionAdd);
|
|
|
|
|
+ id = weGroupFissionAdd.getId();
|
|
|
|
|
+ }
|
|
|
|
|
+ //2.插入阶段记录表 先通过id删除再添加
|
|
|
|
|
+ List<WeGroupFissionStepVo> weGroupFissionStepList = weGroupFissionAddVo.getWeGroupFissionStepList();
|
|
|
|
|
+ if(weGroupFissionStepList!=null && !weGroupFissionStepList.isEmpty()) {
|
|
|
|
|
+ weGroupFissionStepRecordService.deleteByGroupFissionId(id);
|
|
|
|
|
+ List<WeGroupFissionStepRecord> list =new ArrayList<WeGroupFissionStepRecord>();
|
|
|
|
|
+ String weGroupFissionId = id;
|
|
|
|
|
+ for (WeGroupFissionStepVo weGroupFissionStepVo : weGroupFissionStepList) {
|
|
|
|
|
+ WeGroupFissionStepRecord add = new WeGroupFissionStepRecord();
|
|
|
|
|
+ add.setGroupFissionId(weGroupFissionId);
|
|
|
|
|
+ add.setInvitationCount(weGroupFissionStepVo.getInvitationCount());
|
|
|
|
|
+ add.setSortNum(weGroupFissionStepVo.getSortNum());
|
|
|
|
|
+ add.setRewardAmount(weGroupFissionStepVo.getRewardAmount());
|
|
|
|
|
+ add.setCreateTime(new Date());
|
|
|
|
|
+ list.add(add);
|
|
|
|
|
+ }
|
|
|
|
|
+ weGroupFissionStepRecordService.saveBatch(list);
|
|
|
|
|
+ }
|
|
|
|
|
+ //2.插入额外奖励记录表 先通过id删除再添加
|
|
|
|
|
+ List<WeGroupFissionExtraVo> weGroupFissionExtraList = weGroupFissionAddVo.getWeGroupFissionExtraList();
|
|
|
|
|
+
|
|
|
|
|
+ if(weGroupFissionExtraList!=null && !weGroupFissionExtraList.isEmpty()) {
|
|
|
|
|
+ weGroupFissionExtraRecordService.deleteByGroupFissionId(id);
|
|
|
|
|
+ List<WeGroupFissionExtraRecord> list =new ArrayList<WeGroupFissionExtraRecord>();
|
|
|
|
|
+ String weGroupFissionId = id;
|
|
|
|
|
+ for (WeGroupFissionExtraVo weGroupFissionExtraVo : weGroupFissionExtraList) {
|
|
|
|
|
+ WeGroupFissionExtraRecord add = new WeGroupFissionExtraRecord();
|
|
|
|
|
+ add.setGroupFissionId(weGroupFissionId);
|
|
|
|
|
+ add.setSortNum(weGroupFissionExtraVo.getSortNum());
|
|
|
|
|
+ add.setRewardType(weGroupFissionExtraVo.getRewardType());
|
|
|
|
|
+ add.setRewardAmount(weGroupFissionExtraVo.getRewardAmount());
|
|
|
|
|
+ add.setRightInfoId(weGroupFissionExtraVo.getRightInfoId());
|
|
|
|
|
+ add.setLotteryActivityId(weGroupFissionExtraVo.getLotteryActivityId());
|
|
|
|
|
+ add.setCreateTime(new Date());
|
|
|
|
|
+ list.add(add);
|
|
|
|
|
+ }
|
|
|
|
|
+ weGroupFissionExtraRecordService.saveBatch(list);
|
|
|
|
|
+ }
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ throw new CustomException(e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 14:34
|
|
|
|
|
+ * @Description: 验证数据准确性
|
|
|
|
|
+ */
|
|
|
|
|
+ public void checkData(WeGroupFissionAddVo weGroupFissionAddVo){
|
|
|
|
|
+ //1.触发条件判断 注:≥1,≤200(邀请新客户进群人数)
|
|
|
|
|
+ if(weGroupFissionAddVo.getInvitationCount() <1 || weGroupFissionAddVo.getInvitationCount()>200){
|
|
|
|
|
+ throw new CustomException("邀请新客户进群人数必须>=1且<=200");
|
|
|
|
|
+ }
|
|
|
|
|
+ //2.验证阶梯集合对象
|
|
|
|
|
+ if (weGroupFissionAddVo.getWeGroupFissionStepList() == null || weGroupFissionAddVo.getWeGroupFissionStepList().isEmpty()) {
|
|
|
|
|
+ throw new CustomException("阶梯列表不能为空!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //验证每行数据不能为空
|
|
|
|
|
+ validateStepList(weGroupFissionAddVo.getWeGroupFissionStepList());
|
|
|
|
|
+ }
|
|
|
|
|
+ //3.验证额外奖励集合对象
|
|
|
|
|
+ if(weGroupFissionAddVo.getWeGroupFissionExtraList() == null || weGroupFissionAddVo.getWeGroupFissionExtraList().isEmpty()){
|
|
|
|
|
+ throw new CustomException("额外奖励列表不能为空!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //验证每行数据不能为空
|
|
|
|
|
+ validateExtraList(weGroupFissionAddVo.getWeGroupFissionExtraList(),weGroupFissionAddVo.getWeGroupFissionStepList().size());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 14:23
|
|
|
|
|
+ * @Description: 验证额外奖励数据
|
|
|
|
|
+ */
|
|
|
|
|
+ private void validateExtraList(List<WeGroupFissionExtraVo> weGroupFissionExtraList, int size) {
|
|
|
|
|
+ Set<Integer> sortNumSet = new HashSet<>();
|
|
|
|
|
+ for (int i = 0; i < weGroupFissionExtraList.size(); i++) {
|
|
|
|
|
+ WeGroupFissionExtraVo weGroupFissionExtraVo = weGroupFissionExtraList.get(i);
|
|
|
|
|
+ String indexTip = "第" + (i + 1) + "条额外奖励记录:";
|
|
|
|
|
+ if (weGroupFissionExtraVo == null) {
|
|
|
|
|
+ throw new CustomException(indexTip + "额外奖励记录对象不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (weGroupFissionExtraVo.getSortNum() == null) {
|
|
|
|
|
+ throw new CustomException(indexTip + "阶梯序号不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (weGroupFissionExtraVo.getSortNum()>size) {
|
|
|
|
|
+ throw new CustomException(indexTip + "阶梯序号不能大于阶梯的数量");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (sortNumSet.contains(weGroupFissionExtraVo.getSortNum())) {
|
|
|
|
|
+ throw new CustomException("阶梯序号[" + weGroupFissionExtraVo.getSortNum() + "]重复");
|
|
|
|
|
+ }
|
|
|
|
|
+ sortNumSet.add(weGroupFissionExtraVo.getSortNum());
|
|
|
|
|
+
|
|
|
|
|
+ if (weGroupFissionExtraVo.getRewardType() == null || weGroupFissionExtraVo.getRewardType().trim().isEmpty()) {
|
|
|
|
|
+ throw new CustomException(indexTip + "奖励类型不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ String rewardType = weGroupFissionExtraVo.getRewardType().trim();
|
|
|
|
|
+ if (!"1".equals(rewardType) && !"2".equals(rewardType) && !"3".equals(rewardType)) {
|
|
|
|
|
+ throw new CustomException(indexTip + "奖励类型不正确");
|
|
|
|
|
+ }
|
|
|
|
|
+ if ("1".equals(rewardType)) {
|
|
|
|
|
+ if (weGroupFissionExtraVo.getRewardAmount() == null) {
|
|
|
|
|
+ throw new CustomException(indexTip + "奖励金额不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (weGroupFissionExtraVo.getRewardAmount().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
|
+ throw new CustomException(indexTip + "奖励金额数值必须大于0");
|
|
|
|
|
+ }
|
|
|
|
|
+ }else if ("2".equals(rewardType)) {
|
|
|
|
|
+ if (StringUtils.isBlank(weGroupFissionExtraVo.getRightInfoId())) {
|
|
|
|
|
+ throw new CustomException(indexTip + "权益券id不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ }else if ("3".equals(rewardType)) {
|
|
|
|
|
+ if (StringUtils.isBlank(weGroupFissionExtraVo.getLotteryActivityId())) {
|
|
|
|
|
+ throw new CustomException(indexTip + "大转盘或者九宫格活动id不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 14:13
|
|
|
|
|
+ * @Description: 验证数据
|
|
|
|
|
+ */
|
|
|
|
|
+ public static void validateStepList(List<WeGroupFissionStepVo> stepVoList) {
|
|
|
|
|
+ // 验证数据
|
|
|
|
|
+ WeGroupFissionStepVo prevStep = null;
|
|
|
|
|
+ for (int i = 0; i < stepVoList.size(); i++) {
|
|
|
|
|
+ WeGroupFissionStepVo currentStep = stepVoList.get(i);
|
|
|
|
|
+ if (currentStep.getSortNum() == null) {
|
|
|
|
|
+ throw new IllegalArgumentException("第" + (i + 1) + "条阶梯数据的序号不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (currentStep.getInvitationCount() == null) {
|
|
|
|
|
+ throw new IllegalArgumentException("第" + (i + 1) + "条阶梯数据的邀请人数不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (currentStep.getRewardAmount() == null) {
|
|
|
|
|
+ throw new IllegalArgumentException("第" + (i + 1) + "条阶梯数据的奖励金额不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (i > 0 && prevStep != null) {
|
|
|
|
|
+ if (currentStep.getInvitationCount() <= prevStep.getInvitationCount()) {
|
|
|
|
|
+ throw new IllegalArgumentException(
|
|
|
|
|
+ "第" + (i + 1) + "条阶梯数据的邀请人数(" + currentStep.getInvitationCount() + ")" +
|
|
|
|
|
+ "必须大于第" + i + "条的邀请人数(" + prevStep.getInvitationCount() + ")"
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ prevStep = currentStep;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 11:30
|
|
|
|
|
+ * @Description: 通过id查询群裂变信息
|
|
|
|
|
+ * @param type 1.后台结构 2.app结构
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public WeGroupFissionDetailDto queryDetailById(String id, String type) {
|
|
|
|
|
+ WeGroupFission weGroupFission = this.getById(id);
|
|
|
|
|
+ if(weGroupFission==null){
|
|
|
|
|
+ throw new CustomException("群裂变活动不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ //1.基础数据赋值
|
|
|
|
|
+ WeGroupFissionDetailDto dto =new WeGroupFissionDetailDto();
|
|
|
|
|
+ BeanUtils.copyProperties(weGroupFission, dto);
|
|
|
|
|
+ //2.关联阶梯奖励赋值
|
|
|
|
|
+ List<WeGroupFissionStepRecord> stepList = weGroupFissionStepRecordService.findListByGroupCheckInId(id);
|
|
|
|
|
+ if(stepList!=null && !stepList.isEmpty()) {
|
|
|
|
|
+ if("1".equals(type)){
|
|
|
|
|
+ List<WeGroupFissionStepVo> weGroupFissionStepList = new ArrayList<WeGroupFissionStepVo>();
|
|
|
|
|
+ stepList.forEach(reward -> {
|
|
|
|
|
+ WeGroupFissionStepVo weGroupFissionStepVo = new WeGroupFissionStepVo();
|
|
|
|
|
+ BeanUtils.copyProperties(reward, weGroupFissionStepVo);
|
|
|
|
|
+ weGroupFissionStepList.add(weGroupFissionStepVo);
|
|
|
|
|
+ });
|
|
|
|
|
+ dto.setWeGroupFissionStepList(weGroupFissionStepList);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //3.关联额外奖励赋值
|
|
|
|
|
+ List<WeGroupFissionExtraRecord> extraList = weGroupFissionExtraRecordService.findListByGroupFissionId(id);
|
|
|
|
|
+ HashMap<String, WeGroupFissionExtraRecord> extraMap = new HashMap<>();
|
|
|
|
|
+ if(extraList!=null && !extraList.isEmpty()) {
|
|
|
|
|
+ List<WeGroupFissionExtraVo> weGroupFissionExtraList = new ArrayList<WeGroupFissionExtraVo>();
|
|
|
|
|
+ extraList.forEach(reward -> {
|
|
|
|
|
+ WeGroupFissionExtraVo weGroupFissionExtraVo = new WeGroupFissionExtraVo();
|
|
|
|
|
+ BeanUtils.copyProperties(reward, weGroupFissionExtraVo);
|
|
|
|
|
+ if(StringUtils.isNotBlank(reward.getRightInfoId())){
|
|
|
|
|
+ LocalRightsInfo localRightsInfo = localRightsInfoService.getById(reward.getRightInfoId());
|
|
|
|
|
+ weGroupFissionExtraVo.setRightInfoName(localRightsInfo!=null?localRightsInfo.getRightsName():null);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(StringUtils.isNotBlank(reward.getLotteryActivityId())){
|
|
|
|
|
+ LotteryActivity lotteryActivity = lotteryActivityService.getById(reward.getLotteryActivityId());
|
|
|
|
|
+ weGroupFissionExtraVo.setLotteryActivityName(lotteryActivity!=null?lotteryActivity.getActivityName():null);
|
|
|
|
|
+ }
|
|
|
|
|
+ extraMap.put(reward.getSortNum()+"", reward);
|
|
|
|
|
+ weGroupFissionExtraList.add(weGroupFissionExtraVo);
|
|
|
|
|
+ });
|
|
|
|
|
+ if("1".equals(type)){
|
|
|
|
|
+ dto.setWeGroupFissionExtraList(weGroupFissionExtraList);
|
|
|
|
|
+ }else if("2".equals(type)){
|
|
|
|
|
+ //APP对象
|
|
|
|
|
+ if(stepList!=null && !stepList.isEmpty()) {
|
|
|
|
|
+ List<WeGroupFissionStepAppVo> weGroupFissionStepAppList = new ArrayList<WeGroupFissionStepAppVo>();
|
|
|
|
|
+ stepList.forEach(reward -> {
|
|
|
|
|
+ WeGroupFissionStepAppVo weGroupFissionStepVo = new WeGroupFissionStepAppVo();
|
|
|
|
|
+ BeanUtils.copyProperties(reward, weGroupFissionStepVo);
|
|
|
|
|
+ WeGroupFissionExtraRecord weGroupFissionExtraRecord = extraMap.get(reward.getSortNum() + "");
|
|
|
|
|
+ if(weGroupFissionExtraRecord!=null){
|
|
|
|
|
+ weGroupFissionStepVo.setExtraRewardAmount(weGroupFissionExtraRecord.getRewardAmount());
|
|
|
|
|
+ weGroupFissionStepVo.setRewardType(weGroupFissionExtraRecord.getRewardType());
|
|
|
|
|
+ }
|
|
|
|
|
+ weGroupFissionStepAppList.add(weGroupFissionStepVo);
|
|
|
|
|
+ });
|
|
|
|
|
+ dto.setWeGroupFissionStepAppList(weGroupFissionStepAppList);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ //4.查询商户名称
|
|
|
|
|
+ LocalMerchantInfo merchantInfo = localMerchantInfoService.getById(weGroupFission.getMerchantId());
|
|
|
|
|
+ dto.setMerchantName(merchantInfo!=null?merchantInfo.getStoreName():null);
|
|
|
|
|
+ return dto;
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 11:32
|
|
|
|
|
+ * @Description: 通过id删除数据
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void deleteByWeGroupFissionId(String id) {
|
|
|
|
|
+ WeGroupFission weGroupFission = getStatusDetailsById(id);
|
|
|
|
|
+ if("进行中".equals(weGroupFission.getActivityStatus())
|
|
|
|
|
+ || "已结束".equals(weGroupFission.getActivityStatus())){
|
|
|
|
|
+ throw new CustomException("活动进行中或已结束,不能删除");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ this.removeById(id);
|
|
|
|
|
+ //删除阶梯表
|
|
|
|
|
+ weGroupFissionStepRecordService.deleteByGroupFissionId(id);
|
|
|
|
|
+ //刪除关联额外奖励务表
|
|
|
|
|
+ weGroupFissionExtraRecordService.deleteByGroupFissionId(id);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 15:05
|
|
|
|
|
+ * @Description: 生成小程序的短连接
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public String getWechatGroupFissionUrl(CreateWechatGroupFissionUrlVo createWechatGroupFissionUrlVo) {
|
|
|
|
|
+ String queryParam = "groupFissionId="+createWechatGroupFissionUrlVo.getGroupFissionId();
|
|
|
|
|
+ //添加分享人id
|
|
|
|
|
+ if(StringUtils.isNotBlank(createWechatGroupFissionUrlVo.getShareUserId())){
|
|
|
|
|
+ queryParam = queryParam + "&shareUserId="+createWechatGroupFissionUrlVo.getShareUserId();
|
|
|
|
|
+ }
|
|
|
|
|
+ String url ="";
|
|
|
|
|
+ try{
|
|
|
|
|
+ url = wxMiniProgramSchemeUtil.generateScheme(createWechatGroupFissionUrlVo.getUrl(), queryParam, 0,createWechatGroupFissionUrlVo.getVersion());
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ throw new CustomException("生成群打卡的短链失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ return url;
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 16:42
|
|
|
|
|
+ * @Description: 获取企业微信群列表
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<DistDto> getWecomGroupList() {
|
|
|
|
|
+ List<DistDto> list = new ArrayList<>();
|
|
|
|
|
+ DistDto dto = new DistDto();
|
|
|
|
|
+ dto.setVal("1");
|
|
|
|
|
+ dto.setName("企业微信群1");
|
|
|
|
|
+ DistDto dto2 = new DistDto();
|
|
|
|
|
+ dto2.setVal("2");
|
|
|
|
|
+ dto2.setName("企业微信群2");
|
|
|
|
|
+ list.add(dto2);
|
|
|
|
|
+ try {
|
|
|
|
|
+ /* WxCpExternalContactService externalContactService = wxCpService.getExternalContactService();
|
|
|
|
|
+ WxCpUserExternalGroupChatList wxCpUserExternalGroupChatList = externalContactService.listGroupChat(0, 1000, 0, null,null);
|
|
|
|
|
+ // 3. 处理返回结果(打印群信息)
|
|
|
|
|
+ if (wxCpUserExternalGroupChatList != null ) {
|
|
|
|
|
+ List<WxCpUserExternalGroupChatList.ChatStatus> groupChatList = wxCpUserExternalGroupChatList.getGroupChatList();
|
|
|
|
|
+ System.out.println("查询成功!获取到 " + groupChatList.size() + " 个企业群");
|
|
|
|
|
+ for (WxCpUserExternalGroupChatList.ChatStatus groupChat : groupChatList) {
|
|
|
|
|
+ DistDto dto =new DistDto();
|
|
|
|
|
+ dto.setVal(groupChat.getChatId());
|
|
|
|
|
+ dto.setName(groupChat.getChatId());
|
|
|
|
|
+ System.out.println("------------------------");
|
|
|
|
|
+ System.out.println("群 ID:" + groupChat.getChatId());
|
|
|
|
|
+ System.out.println("群状态:" + groupChat.getStatus());
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ System.out.println("查询成功,但未获取到任何企业群(可能无群或权限不足)");
|
|
|
|
|
+ }*/
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ System.out.println("查询企业群列表失败,异常信息:" + e.getMessage());
|
|
|
|
|
+ e.printStackTrace(); // 打印详细堆栈,方便排查问题
|
|
|
|
|
+ }
|
|
|
|
|
+ return list;
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 16:42
|
|
|
|
|
+ * @Description: 获取企业微信员工列表
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<DistDto> getWecomEmployeeList() {
|
|
|
|
|
+ return getWecomGroupList();
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/31 16:16
|
|
|
|
|
+ * @Description: 获取九宫格活动列表
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<DistDto> getActivityDictDtos() {
|
|
|
|
|
+ List<DistDto> list = new ArrayList<>();
|
|
|
|
|
+ List<LotteryActivity> activityList = lotteryActivityService.findListType(null);
|
|
|
|
|
+ if(activityList != null && activityList.size() > 0){
|
|
|
|
|
+ for(LotteryActivity info : activityList){
|
|
|
|
|
+ DistDto dto = new DistDto();
|
|
|
|
|
+ dto.setVal(info.getId());
|
|
|
|
|
+ dto.setName(info.getActivityName());
|
|
|
|
|
+ list.add(dto);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return list;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/31 16:16
|
|
|
|
|
+ * @Description: 获取权益券列表
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<DistDto> getRightInfoDictDtos() {
|
|
|
|
|
+
|
|
|
|
|
+ List<DistDto> list = new ArrayList<>();
|
|
|
|
|
+ List<LocalRightsInfo> localRightsInfoList = localRightsInfoService.getRightInfoList();
|
|
|
|
|
+ if(localRightsInfoList != null && localRightsInfoList.size() > 0){
|
|
|
|
|
+ for(LocalRightsInfo info : localRightsInfoList){
|
|
|
|
|
+ DistDto dto = new DistDto();
|
|
|
|
|
+ dto.setVal(info.getId());
|
|
|
|
|
+ dto.setName(info.getRightsName());
|
|
|
|
|
+ list.add(dto);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return list;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/31 16:15
|
|
|
|
|
+ * @Description: 获取启用的商户
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<DistDto> getLocalMerchantInfoDictDtos() {
|
|
|
|
|
+ List<DistDto> list = new ArrayList<>();
|
|
|
|
|
+ List<LocalMerchantInfo> merchantInfoList = localMerchantInfoService.getMerchantInfoList();
|
|
|
|
|
+ if(merchantInfoList != null && merchantInfoList.size() > 0){
|
|
|
|
|
+ for(LocalMerchantInfo info : merchantInfoList){
|
|
|
|
|
+ DistDto dto = new DistDto();
|
|
|
|
|
+ dto.setVal(info.getId());
|
|
|
|
|
+ dto.setName(info.getStoreName());
|
|
|
|
|
+ list.add(dto);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return list;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @version
|
|
|
|
|
+ * @author: hxl
|
|
|
|
|
+ * @Date: 2026/1/28 14:53
|
|
|
|
|
+ * @Description: 查询状态
|
|
|
|
|
+ */
|
|
|
|
|
+ public WeGroupFission getStatusDetailsById(String id) {
|
|
|
|
|
+ return this.getBaseMapper().getStatusDetailsById(id);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|