jiangqs
2023-06-14 d7452d46f66a58caaad0442fbcca6953336c18ea
活动管理
1 文件已重命名
27个文件已修改
8个文件已添加
606 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityEditDto.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityGoodsEditDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityTotal.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityTotalMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityTotalService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityTotalServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityTotalMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberrScheduler.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/SchedulerUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtChangeCoopDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/pom.xml
@@ -44,7 +44,7 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generate</artifactId>
            <version>2.3</version>
            <version>2.3.3</version>
        </dependency>
    </dependencies>
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -143,4 +143,6 @@
    String COUPON_SENT_EDIT = "已发放优惠券不能编辑";
    String COUPON_SENT_DEL = "已发放优惠券不能删除";
    String ACTIVITY_ING_EDIT = "只能编辑未开始活动";
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/activity/ActivityGoods.java
@@ -55,6 +55,11 @@
    @TableField("activity_price")
    private BigDecimal activityPrice;
    /**
     * 活动订金
     */
    @TableField("activity_subscription")
    private BigDecimal activitySubscription;
    /**
     * 活动销售数量
     */
    @TableField("activity_number")
@@ -69,7 +74,16 @@
     */
    @TableField("activity_deadline")
    private Date activityDeadline;
    /**
     * 售罄标记
     */
    @TableField("sell_out_flag")
    private Integer sellOutFlag;
    /**
     * 售罄时间
     */
    @TableField("sell_out_time")
    private Date sellOutTime;
    @Override
    protected Serializable pkVal() {
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java
@@ -8,6 +8,8 @@
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * 活动服务
 * 
@@ -29,6 +31,11 @@
            public R<ActivityGoods> getActivityGoods(String goodsId) {
                return R.fail("获取活动商品失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Long>> listUserIdByActivityId(String activityId) {
                return R.fail("获取活动用户id列表失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-modules/ruoyi-goods/pom.xml
@@ -99,7 +99,7 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generate</artifactId>
            <version>2.3</version>
            <version>2.3.3</version>
        </dependency>
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
New file
@@ -0,0 +1,39 @@
package com.ruoyi.goods.controller.management;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
import com.ruoyi.goods.service.activity.ActivityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * @ClassName MgtActivityController
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/14 10:17
 * @Version 1.0
 */
@Api(value = "平台端活动相关接口", tags = "平台端活动相关接口", description = "平台端活动相关接口")
@RestController
@RequestMapping("/mgt/activity")
public class MgtActivityController {
    @Resource
    private ActivityService activityService;
    @RequestMapping(value = "/editMgtActivity", method = RequestMethod.POST)
    @ApiOperation(value = "平台编辑活动")
    public R editMgtActivity(@RequestBody MgtActivityEditDto mgtActivityEditDto) {
        Long userId = SecurityUtils.getUserId();
        mgtActivityEditDto.setUserId(userId);
        activityService.editMgtActivity(mgtActivityEditDto);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityEditDto.java
New file
@@ -0,0 +1,62 @@
package com.ruoyi.goods.domain.dto;
import com.ruoyi.system.api.domain.dto.MgtBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * @ClassName MgtActivityEditDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/14 14:56
 * @Version 1.0
 */
@Data
public class MgtActivityEditDto extends MgtBaseDto {
    @ApiModelProperty(value = "活动id 新增不传")
    private String activityId;
    @ApiModelProperty(value = "活动名称")
    private String activityName;
    @ApiModelProperty(value = "活动开始时间")
    private Date activityStartTime;
    @ApiModelProperty(value = "活动结束时间")
    private Date activityEndTime;
    @ApiModelProperty(value = "成团人数")
    private Integer groupBuyNumber;
    @ApiModelProperty(value = "限购标记0否1是")
    private Integer purchaseLimitationFlag;
    @ApiModelProperty(value = "限购数量")
    private Integer limitNumber;
    @ApiModelProperty(value = "宣传海报")
    private String propagandaPoster;
    @ApiModelProperty(value = "适用地区标记1全部2指定")
    private Integer areaFlag;
    @ApiModelProperty(value = "适用地区code集合 多个用,隔开")
    private String designatedArea;
    @ApiModelProperty(value = "适用店铺标记1全部2指定")
    private Integer shopFlag;
    @ApiModelProperty(value = "适用店铺 多个用,隔开")
    private String applicableShop;
    @ApiModelProperty(value = "推荐标记")
    private Integer recommendFlag;
    @ApiModelProperty(value = "活动商品列表")
    private List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList;
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityGoodsEditDto.java
New file
@@ -0,0 +1,30 @@
package com.ruoyi.goods.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @ClassName MgtActivityGoodsEditDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/14 15:28
 * @Version 1.0
 */
@Data
public class MgtActivityGoodsEditDto {
    @ApiModelProperty(value = "商品id")
    private String goodsId;
    @ApiModelProperty(value = "秒杀活动价")
    private BigDecimal activityPrice;
    @ApiModelProperty(value = "秒杀活动订金")
    private BigDecimal activitySubscription;
    @ApiModelProperty(value = "秒杀活动库存")
    private Integer activityNumber;
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java
@@ -1,15 +1,15 @@
package com.ruoyi.goods.domain.pojo.activity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
@@ -70,6 +70,11 @@
    /**
     * 限购数量
     */
    @TableField("limit_number")
    private Integer limitNumber;
    /**
     * 宣传海报
     */
    @TableField("propaganda_poster")
    private String propagandaPoster;
    /**
@@ -96,7 +101,7 @@
     * 创建用户id
     */
    @TableField("create_user_id")
    private Integer createUserId;
    private Long createUserId;
    /**
     * 创建时间
     */
@@ -106,13 +111,17 @@
     * 更新用户id
     */
    @TableField("update_user_id")
    private Integer updateUserId;
    private Long updateUserId;
    /**
     * 更新时间
     */
    @TableField("update_time")
    private Date updateTime;
    /**
     * 推荐标记
     */
    @TableField("recommend_flag")
    private Integer recommendFlag;
    @Override
    protected Serializable pkVal() {
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityTotal.java
New file
@@ -0,0 +1,62 @@
package com.ruoyi.goods.domain.pojo.activity;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * <p>
 *
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_activity_total")
public class ActivityTotal extends Model<ActivityTotal> {
    private static final long serialVersionUID = 1L;
    /**
     * 活动id
     */
    @TableId("activity_id")
    private String activityId;
    /**
     * 订单数量统计
     */
    @TableField("order_total")
    private Integer orderTotal;
    /**
     * 订单人数统计
     */
    @TableField("person_total")
    private Integer personTotal;
    /**
     * 退款数量统计
     */
    @TableField("refund_total")
    private Integer refundTotal;
    /**
     * 订单金额统计
     */
    @TableField("order_money_total")
    private BigDecimal orderMoneyTotal;
    @Override
    protected Serializable pkVal() {
        return this.activityId;
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityTotalMapper.java
New file
@@ -0,0 +1,16 @@
package com.ruoyi.goods.mapper.activity;
import com.ruoyi.goods.domain.pojo.activity.ActivityTotal;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
public interface ActivityTotalMapper extends BaseMapper<ActivityTotal> {
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityGoodsService.java
@@ -20,4 +20,13 @@
     * @return
     */
    ActivityGoods getByGoodsId(String goodsId);
    /**
     * @description  通过活动id删除商品
     * @author  jqs
     * @date    2023/6/14 15:47
     * @param activityId
     * @return  void
     */
    void deleteByActivityId(String activityId);
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
@@ -1,5 +1,6 @@
package com.ruoyi.goods.service.activity;
import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
import com.ruoyi.goods.domain.pojo.activity.Activity;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -13,4 +14,12 @@
 */
public interface ActivityService extends IService<Activity> {
    /**
     * @description  平台编辑活动
     * @author  jqs
     * @date    2023/6/14 15:12
     * @param mgtActivityEditDto
     * @return  void
     */
    void editMgtActivity(MgtActivityEditDto mgtActivityEditDto);
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityTotalService.java
New file
@@ -0,0 +1,16 @@
package com.ruoyi.goods.service.activity;
import com.ruoyi.goods.domain.pojo.activity.ActivityTotal;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
public interface ActivityTotalService extends IService<ActivityTotal> {
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityGoodsServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.goods.service.impl.activity;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.goods.mapper.activity.ActivityGoodsMapper;
@@ -33,4 +34,20 @@
        ActivityGoods activityGoods = this.getOne(queryWrapper,false);
        return activityGoods;
    }
    /**
     * @description  通过活动id删除商品
     * @author  jqs
     * @date    2023/6/14 15:47
     * @param activityId
     * @return  void
     */
    @Override
    public void deleteByActivityId(String activityId){
        LambdaUpdateWrapper<ActivityGoods> wrapper = new LambdaUpdateWrapper<>();
        wrapper.eq(ActivityGoods::getActivityId, activityId);
        wrapper.eq(ActivityGoods::getDelFlag, 0);
        wrapper.set(ActivityGoods::getDelFlag, 1);
        this.update(wrapper);
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -1,10 +1,26 @@
package com.ruoyi.goods.service.impl.activity;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
import com.ruoyi.goods.domain.dto.MgtActivityGoodsEditDto;
import com.ruoyi.goods.domain.pojo.activity.Activity;
import com.ruoyi.goods.domain.pojo.activity.ActivityTotal;
import com.ruoyi.goods.mapper.activity.ActivityMapper;
import com.ruoyi.goods.service.activity.ActivityGoodsService;
import com.ruoyi.goods.service.activity.ActivityService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.goods.service.activity.ActivityTotalService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,4 +33,99 @@
@Service
public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements ActivityService {
    @Resource
    private ActivityGoodsService activityGoodsService;
    @Resource
    private ActivityTotalService activityTotalService;
    /**
     * @param mgtActivityEditDto
     * @return void
     * @description 平台编辑活动
     * @author jqs
     * @date 2023/6/14 15:12
     */
    @Override
    public void editMgtActivity(MgtActivityEditDto mgtActivityEditDto) {
        Activity activity;
        // 获取当前时间
        Date nowTime = new Date();
        // 如果活动ID不为空,则表示修改活动信息
        if (StringUtils.isNotBlank(mgtActivityEditDto.getActivityId())) {
            // 获取活动信息
            activity = this.getById(mgtActivityEditDto.getActivityId());
            // 如果活动状态不为0,则表示活动正在进行中,不能修改
            if (activity.getActivityStatus() != 0) {
                throw new ServiceException(AppErrorConstant.ACTIVITY_ING_EDIT);
            }
            // 删除活动商品信息
            activityGoodsService.deleteByActivityId(activity.getActivityId());
        } else {
            // 如果活动ID为空,则表示新增活动信息
            activity = new Activity();
            // 生成活动ID
            String activityId = IdUtils.simpleUUID();
            activity.setActivityId(activityId);
            activity.setDelFlag(0);
            activity.setCreateUserId(mgtActivityEditDto.getUserId());
            activity.setCreateTime(nowTime);
            ActivityTotal activityTotal = new ActivityTotal();
            activityTotal.setActivityId(activityId);
            activityTotal.setOrderTotal(0);
            activityTotal.setPersonTotal(0);
            activityTotal.setRefundTotal(0);
            activityTotal.setOrderMoneyTotal(BigDecimal.ZERO);
            activityTotalService.save(activityTotal);
        }
        // 获取活动开始时间和结束时间
        Date activityStartTime = mgtActivityEditDto.getActivityStartTime();
        Date activityEndTime = mgtActivityEditDto.getActivityEndTime();
        // 根据当前时间和活动时间判断活动状态
        if (nowTime.compareTo(activityStartTime) < 0) {
            activity.setActivityStatus(0);
        } else if (nowTime.compareTo(activityStartTime) >= 0 && nowTime.compareTo(activityEndTime) <= 0) {
            activity.setActivityStatus(1);
        } else if (nowTime.compareTo(activityEndTime) > 0) {
            activity.setActivityStatus(2);
        }
        // 设置活动信息
        activity.setActivityName(mgtActivityEditDto.getActivityName());
        activity.setActivityStartTime(activityStartTime);
        activity.setActivityEndTime(activityEndTime);
        activity.setGroupBuyNumber(mgtActivityEditDto.getGroupBuyNumber());
        activity.setPurchaseLimitationFlag(mgtActivityEditDto.getPurchaseLimitationFlag());
        activity.setLimitNumber(mgtActivityEditDto.getLimitNumber());
        activity.setPropagandaPoster(mgtActivityEditDto.getPropagandaPoster());
        activity.setAreaFlag(mgtActivityEditDto.getAreaFlag());
        activity.setDesignatedArea(mgtActivityEditDto.getDesignatedArea());
        activity.setShopFlag(mgtActivityEditDto.getShopFlag());
        activity.setApplicableShop(mgtActivityEditDto.getApplicableShop());
        activity.setUpdateUserId(mgtActivityEditDto.getUserId());
        activity.setUpdateTime(nowTime);
        activity.setRecommendFlag(mgtActivityEditDto.getRecommendFlag());
        this.saveOrUpdate(activity);
        // 获取活动商品信息
        List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList();
        // 如果活动商品信息不为空,则保存活动商品信息
        if (!mgtActivityGoodsEditDtoList.isEmpty()) {
            List<ActivityGoods> activityGoodsList = mgtActivityGoodsEditDtoList.stream().map(
                    dto -> {
                        ActivityGoods activityGoods = new ActivityGoods();
                        activityGoods.setDelFlag(0);
                        activityGoods.setGoodsId(dto.getGoodsId());
                        activityGoods.setActivityId(activity.getActivityId());
                        activityGoods.setActivityPrice(dto.getActivityPrice());
                        activityGoods.setActivitySubscription(dto.getActivitySubscription());
                        activityGoods.setActivityNumber(dto.getActivityNumber());
                        activityGoods.setActivityDeadline(activity.getActivityEndTime());
                        activityGoods.setSellOutFlag(0);
                        return activityGoods;
                    }
            ).collect(Collectors.toList());
            if (!activityGoodsList.isEmpty()) {
                activityGoodsService.saveBatch(activityGoodsList);
            }
        }
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityTotalServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.ruoyi.goods.service.impl.activity;
import com.ruoyi.goods.domain.pojo.activity.ActivityTotal;
import com.ruoyi.goods.mapper.activity.ActivityTotalMapper;
import com.ruoyi.goods.service.activity.ActivityTotalService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
@Service
public class ActivityTotalServiceImpl extends ServiceImpl<ActivityTotalMapper, ActivityTotal> implements ActivityTotalService {
}
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityTotalMapper.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.goods.mapper.activity.ActivityTotalMapper">
</mapper>
ruoyi-modules/ruoyi-member/pom.xml
@@ -100,7 +100,7 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generate</artifactId>
            <version>2.3</version>
            <version>2.3.3</version>
        </dependency>
        <!-- 小程序统一服务 -->
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
@@ -66,6 +66,9 @@
    @ApiModelProperty(value = "关联类型1.用户管理筛选2.活动管理筛选")
    private Integer relationType;
    @ApiModelProperty(value = "关联活动类型1秒杀活动")
    private Integer relationActivityType;
    @ApiModelProperty(value = "关联活动id")
    private String relationActivityId;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java
@@ -154,6 +154,12 @@
    private Integer relationType;
    /**
     * 关联活动类型1.秒杀活动
     */
    @TableField("relation_activity_type")
    private Integer relationActivityType;
    /**
     * 关联活动id
     */
    @TableField("relation_activity_id")
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberrScheduler.java
@@ -1,9 +1,9 @@
package com.ruoyi.member.scheduler;
import com.ruoyi.common.security.utils.SchedulerUtils;
import com.ruoyi.member.service.coupon.CouponService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -15,7 +15,7 @@
public class MemberrScheduler {
    @Resource
    @Autowired
    private SchedulerUtils schedulerUtils;
    @Resource
@@ -25,10 +25,11 @@
    /**
     * 优惠券定时发送
     */
    @Scheduled(cron="0 0/5 * * * ?")
    @Scheduled(cron="0 0 0 * * ?")
    private void autoCheckNoPayOrder(){
        if(schedulerUtils.getSchedulerRun()) {
            log.info("check no pay order scheduler task is running ");
            log.info("优惠券定时发放任务开始执行");
            couponService.timingSendCoupon();
        }
    }
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/SchedulerUtils.java
File was renamed from ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SchedulerUtils.java
@@ -1,4 +1,4 @@
package com.ruoyi.common.security.utils;
package com.ruoyi.member.scheduler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java
@@ -58,4 +58,13 @@
     * @return  void
     */
    void deleteMgtCoupon(MgtBaseGetDto mgtBaseGetDto);
    /**
     * @description  定时发送优惠券
     * @author  jqs
     * @date    2023/6/14 9:40
     * @param
     * @return  void
     */
    void timingSendCoupon();
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.member.service.impl.coupon;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
@@ -30,6 +31,7 @@
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.service.RemoteActivityService;
import com.ruoyi.system.api.service.RemoteGoodsService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -246,6 +248,7 @@
        coupon.setUpdateTime(new Date());
        coupon.setUpdateUserId(mgtCouponEditDto.getUserId());
        coupon.setRelationType(mgtCouponEditDto.getRelationType());
        coupon.setRelationActivityType(mgtCouponEditDto.getRelationActivityType());
        coupon.setRelationActivityId(mgtCouponEditDto.getRelationActivityId());
        //判断是否指定商品
        if(coupon.getUseScope()==2&&!mgtCouponEditDto.getRelGoodsIdList().isEmpty()){
@@ -293,7 +296,8 @@
     * @param relUserIdList
     * @return  void
     */
    private void sendCoupon(Coupon coupon,List<Long> relUserIdList){
    @Async
    protected void sendCoupon(Coupon coupon, List<Long> relUserIdList){
        //1.手动领取2.全部用户3.会员用户4非会员用户5自定义
        Date nowTime = new Date();
        Integer sendType = coupon.getSendType();
@@ -302,9 +306,17 @@
            userIdList = memberService.listIdBySendType(sendType);
        }else if(sendType == 5){
            //关联类型1.用户管理筛选2.活动管理筛选
            if(coupon.getRelationType()==1){
                userIdList = remoteActivityService.listUserIdByActivityId(coupon.getRelationActivityId()).getData();
            }else if(coupon.getRelationType()==2){
            if(coupon.getRelationType()==2){
                Integer relationActivityType = coupon.getRelationActivityType();
                //关联活动类型1秒杀活动
                switch(relationActivityType){
                    case 1:
                        userIdList = remoteActivityService.listUserIdByActivityId(coupon.getRelationActivityId()).getData();
                        break;
                    default:
                        break;
                }
            }else if(coupon.getRelationType()==1){
                userIdList = relUserIdList;
            }
        }
@@ -373,4 +385,40 @@
        coupon.setUpdateTime(new Date());
        this.saveOrUpdate(coupon);
    }
    /**
     * @description  定时发送优惠券
     * @author  jqs
     * @date    2023/6/14 9:40
     * @param
     * @return  void
     */
    @Override
    public void timingSendCoupon(){
        LambdaQueryWrapper<Coupon> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Coupon::getDelFlag,0);
        queryWrapper.eq(Coupon::getCouponStatus,1);
        queryWrapper.eq(Coupon::getSendTimeType,2);
        queryWrapper.eq(Coupon::getAuditStatus,2);
        queryWrapper.eq(Coupon::getSendTime,new Date());
        List<Coupon> couponList = couponMapper.selectList(queryWrapper);
        if(couponList!=null&&!couponList.isEmpty()){
            List<CouponRelUser> couponRelUserList;
            List<Long> userIdList = new ArrayList<>();
            for(Coupon coupon : couponList){
                if(coupon.getSendType()==5&&coupon.getRelationType()==1){
                    couponRelUserList = couponRelUserService.list(new LambdaQueryWrapper<CouponRelUser>().eq(CouponRelUser::getDelFlag,0).eq(CouponRelUser::getCouponId,coupon.getCouponId()));
                    if(couponRelUserList!=null&&!couponRelUserList.isEmpty()){
                        userIdList = couponRelUserList.stream()
                                .map(CouponRelUser::getUserId)
                                .collect(Collectors.toList());
                    }else{
                        userIdList = new ArrayList<>();
                    }
                }
                //发送优惠券
                sendCoupon(coupon, userIdList);
            }
        }
    }
}
ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml
@@ -25,3 +25,4 @@
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
ruoyi-modules/ruoyi-order/pom.xml
@@ -99,7 +99,7 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generate</artifactId>
            <version>2.3</version>
            <version>2.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.github.wechatpay-apiv3</groupId>
ruoyi-modules/ruoyi-shop/pom.xml
@@ -99,7 +99,7 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generate</artifactId>
            <version>2.3</version>
            <version>2.3.3</version>
        </dependency>
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java
@@ -4,7 +4,6 @@
import com.ruoyi.system.api.domain.dto.MerBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@@ -28,7 +27,6 @@
    private String callPhone;
    @ApiModelProperty("电话时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date callTime;
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtChangeCoopDto.java
@@ -4,6 +4,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @author jqs34
 * @ClassName MGTChangeCooperDto
@@ -18,9 +20,9 @@
    private Long shopId;
    @ApiModelProperty("合作开始时间")
    private String coopStartTime;
    private Date coopStartTime;
    @ApiModelProperty("合作结束时间")
    private String coopEndTime;
    private Date coopEndTime;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java
@@ -1,12 +1,8 @@
package com.ruoyi.shop.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.api.domain.dto.MerBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * @author jqs34
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -33,8 +33,6 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -275,28 +273,24 @@
    @Override
    public void changeCooperationTime(MgtChangeCoopDto mgtChangeCoopDto){
        Shop shop = this.getById(mgtChangeCoopDto.getShopId());
        String coopStartTime = mgtChangeCoopDto.getCoopStartTime();
        String coopEndTime = mgtChangeCoopDto.getCoopEndTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date coopStartDate = simpleDateFormat.parse(coopStartTime);
            Date coopEndDate = simpleDateFormat.parse(coopEndTime);
            Date nowTime = new Date();
            shop.setCooperationStartTime(coopStartDate);
            shop.setCooperationEndTime(coopEndDate);
            Boolean inTime = false;
            if(coopStartDate.compareTo(nowTime)<0&&coopEndDate.compareTo(nowTime)>0){
                inTime = true;
            }
            if(shop.getShopStatus()==2&&inTime){
                shop.setShopStatus(1);
            }
            shop.setUpdateTime(nowTime);
            shop.setUpdateUserId(mgtChangeCoopDto.getUserId());
            this.saveOrUpdate(shop);
        } catch (ParseException e) {
            e.printStackTrace();
        Date coopStartDate = mgtChangeCoopDto.getCoopStartTime();
        Date coopEndDate = mgtChangeCoopDto.getCoopEndTime();
        Date nowTime = new Date();
        shop.setCooperationStartTime(coopStartDate);
        shop.setCooperationEndTime(coopEndDate);
        Boolean inTime = false;
        if(coopStartDate.compareTo(nowTime)<=0&&coopEndDate.compareTo(nowTime)>=0){
            inTime = true;
            shop.setCooperativeFlag(1);
        }else{
            shop.setCooperativeFlag(0);
        }
        if(shop.getShopStatus()==2&&inTime){
            shop.setShopStatus(1);
        }
        shop.setUpdateTime(nowTime);
        shop.setUpdateUserId(mgtChangeCoopDto.getUserId());
        this.saveOrUpdate(shop);
    }
    /**
ruoyi-modules/ruoyi-system/pom.xml
@@ -99,7 +99,7 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generate</artifactId>
            <version>2.3</version>
            <version>2.3.3</version>
        </dependency>
        <dependency>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java
@@ -44,7 +44,7 @@
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setTypeConvert(new MySqlTypeConvert());
        dataSourceConfig.setUrl("jdbc:mysql://47.109.78.184:10010/hrt_sys?tinyInt1isBit=false");
        dataSourceConfig.setUrl("jdbc:mysql://47.109.78.184:10010/hrt_goods?tinyInt1isBit=false");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("hrt123456");
@@ -53,7 +53,7 @@
        // 包名配置
        PackageConfig packageConfig = new PackageConfig();
        // 父包和子包名分开处理
        packageConfig.setParent("com.ruoyi.system");
        packageConfig.setParent("com.ruoyi.goods");
        packageConfig.setController("app");
        packageConfig.setEntity("domain.pojo");
        packageConfig.setMapper("mapper");
@@ -74,7 +74,7 @@
        strategy.setControllerMappingHyphenStyle(true);
        //表和前缀处理
        String[] table = {
                "t_sys_staff"
                "t_activity_total"
        };
        strategy.setInclude(table);
        String[] tablePre = new String[]{"t_"};
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/PopServiceImpl.java
@@ -95,7 +95,6 @@
    public void deleteMgtPop(MgtBaseGetDto mgtBaseGetDto){
        Pop pop = this.getById(Long.valueOf(mgtBaseGetDto.getId()));
        pop.setDelFlag(1);
        pop.insertOrUpdate();
        this.saveOrUpdate(pop);
    }
}
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -25,3 +25,4 @@
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}