cloudroam
2025-05-14 8d966ffd9941026f9b3b1a876de9990da1ca6aea
片场管理
已修改5个文件
已添加8个文件
415 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/config/PyamentV3Configurer.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/config/ResourceServerConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/content/QueryFilmsetDTO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/content/FilmsetDTO.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/entity/content/Filmset.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/mapper/content/FilmsetMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/content/FilmsetService.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/register/SmsService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/content/FilmsetController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-test.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/keystore.p12 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/content/FilmsetMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/config/PyamentV3Configurer.java
@@ -20,8 +20,8 @@
    public static String merchantId = "1661512517";
    /** 商户API私钥路径 */
    //public static String privateKeyPath = "/opt/pay/wx/v3/apiclient_key.pem";
   public static String privateKeyPath = "D://Soft//apiclient_key.pem";
    public static String privateKeyPath = "/opt/pay/wx/v3/apiclient_key.pem";
    //public static String privateKeyPath = "E://huamanyuan/apiclient_key.pem";
    /** 商户证书序列号 */
    public static String merchantSerialNumber = "37A08A552943EF34883614DBC8DE281598148757";
src/main/java/com/mzl/flower/config/ResourceServerConfig.java
@@ -54,7 +54,7 @@
                .antMatchers("/api/customer/flower/list").permitAll()
                .antMatchers("/api/customer/flower/list/view").permitAll()
                .antMatchers("/api/customer/flower/up/stock").permitAll()
//                .antMatchers("/api/customer/info/**").permitAll()
                .antMatchers("/api/filmset/**").permitAll()
                .antMatchers("api/pub/customer/home/**").permitAll()
                .antMatchers("/api/customer/point/goods/**").permitAll()
                .antMatchers("/api/upload/oss/file").permitAll()
src/main/java/com/mzl/flower/dto/request/content/QueryFilmsetDTO.java
对比新文件
@@ -0,0 +1,33 @@
package com.mzl.flower.dto.request.content;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class QueryFilmsetDTO {
    @ApiModelProperty("标题")
    private String title;
    @ApiModelProperty("片场类型(FILMSET_TYPE)")
    private String type;
    @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)")
    private String status;
    @ApiModelProperty("创建日期(yyyy-mm-dd)")
    private String createDateBeginStr;
    @ApiModelProperty("创建日期(yyyy-mm-dd)")
    private String createDateEndStr;
    @ApiModelProperty(value = "创建日期(yyyy-mm-dd)",hidden = true)
    private LocalDateTime createDateBegin;
    @ApiModelProperty(value = "创建日期(yyyy-mm-dd)", hidden = true)
    private LocalDateTime createDateEnd;
}
src/main/java/com/mzl/flower/dto/response/content/FilmsetDTO.java
对比新文件
@@ -0,0 +1,46 @@
package com.mzl.flower.dto.response.content;
import com.mzl.flower.base.AbstractTransDTO;
import com.mzl.flower.base.annotation.DictTrans;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
public class FilmsetDTO extends AbstractTransDTO {
    private Long id;
    @ApiModelProperty("标题")
    private String title;
    @ApiModelProperty("封面")
    private String cover;
    @ApiModelProperty("内容")
    private String content;
    @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)")
    @DictTrans(target = "statusStr", codeType = "COMMON_PUBLISH_STATUS")
    private String status;
    @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)")
    private String statusStr;
    @ApiModelProperty("发布日期")
    private LocalDate publishDate;
    @ApiModelProperty("创建日期")
    private LocalDateTime createTime;
    @ApiModelProperty("修改日期")
    private LocalDateTime updateTime;
    @ApiModelProperty("公告类型(ANNOUNCEMENT_TYPE)")
    @DictTrans(target = "typeStr", codeType = "ANNOUNCEMENT_TYPE")
    private String type;
    private String typeStr;
}
src/main/java/com/mzl/flower/entity/content/Filmset.java
对比新文件
@@ -0,0 +1,33 @@
package com.mzl.flower.entity.content;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mzl.flower.base.BaseAutoEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
@Data
@TableName("t_filmset")
public class Filmset extends BaseAutoEntity {
    @ApiModelProperty("标题")
    private String title;
    @ApiModelProperty("封面")
    private String cover;
    @ApiModelProperty("内容")
    private String content;
    @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)")
    private String status;
    @ApiModelProperty("发布日期")
    private LocalDate publishDate;
    @ApiModelProperty("公告类型(FILMSET_TYPE)")
    private String type;
}
src/main/java/com/mzl/flower/mapper/content/FilmsetMapper.java
对比新文件
@@ -0,0 +1,19 @@
package com.mzl.flower.mapper.content;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.dto.request.content.QueryFilmsetDTO;
import com.mzl.flower.dto.response.content.FilmsetDTO;
import com.mzl.flower.entity.content.Filmset;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface FilmsetMapper extends BaseMapper<Filmset> {
    List<FilmsetDTO> queryPage(@Param("dto") QueryFilmsetDTO dto, Page page);
    List<FilmsetDTO> queryList(@Param("dto") QueryFilmsetDTO dto);
}
src/main/java/com/mzl/flower/service/content/FilmsetService.java
对比新文件
@@ -0,0 +1,119 @@
package com.mzl.flower.service.content;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.BatchDTO;
import com.mzl.flower.dto.request.content.QueryFilmsetDTO;
import com.mzl.flower.dto.response.content.FilmsetDTO;
import com.mzl.flower.entity.content.Filmset;
import com.mzl.flower.mapper.content.FilmsetMapper;
import com.mzl.flower.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.List;
@Service
@Transactional
public class FilmsetService {
    private final FilmsetMapper filmsetMapper;
    public FilmsetService(FilmsetMapper filmsetMapper) {
        this.filmsetMapper = filmsetMapper;
    }
    public void add(Filmset dto) {
        if(dto.getId()!=null){
            throw new ValidationException("id必须为空");
        }
        dto.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
        dto.create(SecurityUtils.getUserId());
        filmsetMapper.insert(dto);
    }
    public void update(Filmset dto) {
        if(dto.getId()==null || dto.getId()==0){
            throw new ValidationException("id不能为空");
        }
        Filmset filmset = filmsetMapper.selectById(dto.getId());
        if(filmset==null){
            throw new ValidationException("找不到id为"+dto.getId()+"的公告");
        }
        BeanUtils.copyProperties(dto, filmset, "id", "createTime", "createBy","deleted","status","publishDate");
        filmset.update(SecurityUtils.getUserId());
        filmsetMapper.updateById(filmset);
    }
    public void delete(Long id) {
        Filmset filmset = filmsetMapper.selectById(id);
        if(filmset==null){
            throw new ValidationException("找不到id为"+id+"的公告");
        }
        filmsetMapper.deleteById(id);
    }
    public FilmsetDTO detail(Long id) {
        Filmset filmset = filmsetMapper.selectById(id);
        if(filmset==null){
           return null;
        }
        FilmsetDTO dto = new FilmsetDTO();
        BeanUtils.copyProperties(filmset,dto);
        return dto;
    }
    public Page<FilmsetDTO> queryPage(QueryFilmsetDTO dto, Page page) {
        if(StringUtils.isNotBlank(dto.getCreateDateBeginStr())){
            dto.setCreateDateBegin(DateUtils.dateToLocalDateTime(dto.getCreateDateBeginStr(),true));
        }
        if(StringUtils.isNotBlank(dto.getCreateDateEndStr())){
            dto.setCreateDateEnd(DateUtils.dateToLocalDateTime(dto.getCreateDateEndStr(),false));
        }
       List<FilmsetDTO> list =  filmsetMapper.queryPage(dto,page);
        page.setRecords(list);
        return page;
    }
    public void changeStatus(Long id) {
        Filmset filmset = filmsetMapper.selectById(id);
        if(filmset==null){
            throw new ValidationException("找不到id为"+id+"的公告");
        }
        if(Constants.COMMON_PUBLISH_STATUS.published.name().equals(filmset.getStatus())){
            filmset.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
        }else{
            filmset.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name());
            filmset.setPublishDate(LocalDate.now());
        }
        filmsetMapper.updateById(filmset);
    }
    public void batchDelete(BatchDTO dto) {
        filmsetMapper.deleteBatchIds(dto.getIds());
    }
    public void batchPublish(BatchDTO dto) {
        List<Filmset> list = filmsetMapper.selectList(new LambdaQueryWrapper<Filmset>().in(Filmset::getId, dto.getIds()));
        for (Filmset filmset : list) {
            filmset.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name());
            filmset.setPublishDate(LocalDate.now());
            filmsetMapper.updateById(filmset);
        }
    }
    public List<FilmsetDTO> queryList(String type) {
        QueryFilmsetDTO dto = new QueryFilmsetDTO();
        dto.setType(type);
        dto.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name());
        List<FilmsetDTO> list =  filmsetMapper.queryList(dto);
        return list;
    }
}
src/main/java/com/mzl/flower/service/register/SmsService.java
@@ -57,6 +57,10 @@
            throw new ValidationException("短信验证码已发送,请勿频繁发送");
        }
        String smsCode = generateSmsCode();
        // 测试vivo时使用
        if(dto.getTel().equals("15239257323")){
            smsCode ="888888";
        }
//        String smsCode ="888888";
        String key;
        if(Constants.USER_TYPE.admin.name().equals(dto.getUserType())){
@@ -76,7 +80,11 @@
        try {
            //暂时不实际发送验证码
//            SmsUtil.sendSms(dto.getTel(),smsProperties.getVerificationCode(),paramMap);
            tosSmsService.sendSms(dto.getTel(),paramMap);
            // 测试vivo时使用
            if (!dto.getTel().equals("15239257323")) {
                tosSmsService.sendSms(dto.getTel(), paramMap);
            }
//            tosSmsService.sendSms(dto.getTel(),paramMap);
            stringCacheClient.set(SMS_CODE_KEY + SEPARATOR + SEPARATOR + dto.getTel(),smsCode,60);
            stringCacheClient.set(key,smsCode,600);
        } catch (Exception e) {
src/main/java/com/mzl/flower/web/content/FilmsetController.java
对比新文件
@@ -0,0 +1,90 @@
package com.mzl.flower.web.content;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
import com.mzl.flower.dto.BatchDTO;
import com.mzl.flower.dto.request.content.QueryFilmsetDTO;
import com.mzl.flower.dto.response.content.FilmsetDTO;
import com.mzl.flower.entity.content.Filmset;
import com.mzl.flower.service.content.FilmsetService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
@RestController
@RequestMapping("/api/filmset")
@Api(value = "运营-片场管理", tags = "运营-片场管理")
@Validated
@Slf4j
public class FilmsetController extends BaseController {
    private final FilmsetService filmsetService;
    public FilmsetController(FilmsetService filmsetService) {
        this.filmsetService = filmsetService;
    }
    @PostMapping("/page/new")
    @ApiOperation(value = "新增", notes = "新增")
    public ResponseEntity<ReturnDataDTO> add(@Validated @RequestBody Filmset dto) {
        filmsetService.add(dto);
        return returnData(R.SUCCESS.getCode(),null);
    }
    @PostMapping("/page/edit")
    @ApiOperation(value = "修改", notes = "修改")
    public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody Filmset dto) {
        filmsetService.update(dto);
        return returnData(R.SUCCESS.getCode(),null);
    }
    @PostMapping("/page/delete/batch")
    @ApiOperation(value = "批量删除", notes = "批量删除")
    public ResponseEntity<ReturnDataDTO> batchDelete(@Validated @RequestBody BatchDTO dto) {
        filmsetService.batchDelete(dto);
        return returnData(R.SUCCESS.getCode(),null);
    }
    @PostMapping("/page/publish/batch")
    @ApiOperation(value = "批量发布", notes = "批量发布")
    public ResponseEntity<ReturnDataDTO> batchPublish(@Validated @RequestBody BatchDTO dto) {
        filmsetService.batchPublish(dto);
        return returnData(R.SUCCESS.getCode(),null);
    }
    @GetMapping("/page/delete")
    @ApiOperation(value = "删除", notes = "删除")
    public ResponseEntity<ReturnDataDTO> delete(@NotNull(message = "id不能为空") Long id) {
        filmsetService.delete(id);
        return returnData(R.SUCCESS.getCode(),null);
    }
    @GetMapping("/page/view")
    @ApiOperation(value = "详情", notes = "详情")
    public ResponseEntity<ReturnDataDTO<FilmsetDTO>> detail(@NotNull(message = "id不能为空") Long id) {
        return returnData(R.SUCCESS.getCode(),filmsetService.detail(id));
    }
    @GetMapping("/page")
    @ApiOperation(value = "查询-分页", notes = "查询-分页")
    public ResponseEntity<ReturnDataDTO<Page<FilmsetDTO>>> queryPage(QueryFilmsetDTO dto, Page page) {
        return returnData(R.SUCCESS.getCode(), filmsetService.queryPage(dto,page));
    }
    @GetMapping("/page/changeStatus")
    @ApiOperation(value = "修改状态", notes = "修改状态")
    public ResponseEntity<ReturnDataDTO> changeStatus(@NotNull(message = "id不能为空") Long id) {
        filmsetService.changeStatus(id);
        return returnData(R.SUCCESS.getCode(), null);
    }
}
src/main/resources/application-prod.yml
@@ -3,9 +3,9 @@
    active: prod
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://127.0.0.1:3306/flower-prod?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true
    url: jdbc:mysql://47.96.225.205:3306/smart_message?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true&connectionCollation=utf8mb4_unicode_ci
    username: root
    password: Hmy@2024!*@&&
    password: CloudRoam
    druid:
      initial-size: 20
      max-active: 100
@@ -39,7 +39,7 @@
  redis:
    database: 1
    host: 127.0.0.1
    password: Hmy@2024
    password: Cloudroam!@#123
    port: 6379
    jedis:
      pool:
src/main/resources/application-test.yml
@@ -3,7 +3,7 @@
    active: test,swagger
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://47.96.225.205:3306/smart_message?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true
    url: jdbc:mysql://47.96.225.205:3306/smart_message?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8&allowMultiQueries=true&connectionCollation=utf8mb4_unicode_ci
    username: root
    password: CloudRoam
    druid:
src/main/resources/keystore.p12
Binary files differ
src/main/resources/mapper/content/FilmsetMapper.xml
对比新文件
@@ -0,0 +1,51 @@
<?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.mzl.flower.mapper.content.FilmsetMapper">
    <select id="queryPage" resultType="com.mzl.flower.dto.response.content.FilmsetDTO">
        select t.id,t.title,t.cover,t.content,t.publish_date,t.status,t.create_time,t.update_time,t.type from t_filmset t where t.deleted= 0
        <if test="dto.title != null and dto.title != ''">
            and t.title like concat('%', #{dto.title}, '%')
        </if>
        <if test="dto.status != null and dto.status != ''">
            and t.status = #{dto.status}
        </if>
        <if test="dto.type != null and dto.type != ''">
            and t.type = #{dto.type}
        </if>
        <if test="dto.createDateBegin!=null ">
            <![CDATA[
               AND t.create_time >= #{dto.createDateBegin}
            ]]>
        </if>
        <if test="dto.createDateEnd!=null ">
            <![CDATA[
               AND t.create_time <= #{dto.createDateEnd}
            ]]>
        </if>
        order by t.update_time desc
    </select>
    <select id="queryList" resultType="com.mzl.flower.dto.response.content.FilmsetDTO"
            parameterType="com.mzl.flower.dto.request.content.QueryFilmsetDTO">
        select t.id,t.title,t.cover,t.publish_date,t.content,t.status,t.create_time,t.update_time,t.type  from t_filmset t where t.deleted= 0
        <if test="dto.title != null and dto.title != ''">
            and t.title like concat('%', #{dto.title}, '%')
        </if>
        <if test="dto.status != null and dto.status != ''">
            and t.status = #{dto.status}
        </if>
        <if test="dto.type != null and dto.type != ''">
            and (t.type = #{dto.type} or t.type = 'platform')
        </if>
        <if test="dto.createDateBegin!=null ">
            <![CDATA[
               AND t.create_time >= #{dto.createDateBegin}
            ]]>
        </if>
        <if test="dto.createDateEnd!=null ">
            <![CDATA[
               AND t.create_time <= #{dto.createDateEnd}
            ]]>
        </if>
        order by t.update_time desc
    </select>
</mapper>