package cn.com.taiji.core.entity.dict.operation; | |||||
/** | |||||
* @desc : 库存类型 | |||||
*/ | |||||
public enum BusinessType { | |||||
COMMON_PROBLEM("常见问题",1){}, | |||||
INFORMATION_COPY("信息副本导出",2){}, | |||||
PROCESSING_CONDITIONS("办理条件",3){}, | |||||
PRIVILEGE_USE("权限使用说明",4){}, | |||||
USER_AGREEMENT("用户协议",5){}, | |||||
PRIVACY_AGREEMENT("平台用户服务隐私协议",6){}, | |||||
RISK_NOTIFICATION("风险提示告知书",7){}, | |||||
BROADCAST("广播信息",8){}, | |||||
WITHHOLD_AGREEMENT("代扣协议",9){}, | |||||
USER_DELETE("个人用户信息删除",10){}, | |||||
PRIVACY_POLICY("隐私政策",11){}, | |||||
PERSONAL_COLLECTION("个人信息收集清单",12){}, | |||||
; | |||||
private String value; | |||||
private int code; | |||||
private BusinessType(String value, int code){ | |||||
this.value=value; | |||||
this.code=code; | |||||
} | |||||
public static BusinessType fromCode(Integer code){ | |||||
for(BusinessType type: BusinessType.values()){ | |||||
if(type.getCode()==code){ | |||||
return type; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static BusinessType fromValue(String value){ | |||||
for(BusinessType type: BusinessType.values()){ | |||||
if(type.getValue().equals(value)){ | |||||
return type; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public String getValue() { | |||||
return value; | |||||
} | |||||
public int getCode() { | |||||
return code; | |||||
} | |||||
} |
package cn.com.taiji.core.entity.dict.operation; | |||||
/** | |||||
* @desc : 库存类型 | |||||
*/ | |||||
public enum FlashType { | |||||
COPYWRITING("文案",1){}, | |||||
SLIDESHOW("轮播图",2){}, | |||||
; | |||||
private String value; | |||||
private int code; | |||||
private FlashType(String value, int code){ | |||||
this.value=value; | |||||
this.code=code; | |||||
} | |||||
public static FlashType fromCode(Integer code){ | |||||
for(FlashType type: FlashType.values()){ | |||||
if(type.getCode()==code){ | |||||
return type; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static FlashType fromValue(String value){ | |||||
for(FlashType type: FlashType.values()){ | |||||
if(type.getValue().equals(value)){ | |||||
return type; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public String getValue() { | |||||
return value; | |||||
} | |||||
public int getCode() { | |||||
return code; | |||||
} | |||||
} |
package cn.com.taiji.core.entity.dict.operation; | |||||
/** | |||||
* @desc : 库存类型 | |||||
*/ | |||||
public enum TriggerType { | |||||
THIRD_PARTY_LINK("第三方链接",1){}, | |||||
NATIVE_ROUTE("本地路由",2){}, | |||||
TEXT("文本内容",3){}, | |||||
THIRD_PARTY_MINI("第三方应用小程序",4){}, | |||||
; | |||||
private String value; | |||||
private int code; | |||||
private TriggerType(String value, int code){ | |||||
this.value=value; | |||||
this.code=code; | |||||
} | |||||
public static TriggerType fromCode(Integer code){ | |||||
for(TriggerType type: TriggerType.values()){ | |||||
if(type.getCode()==code){ | |||||
return type; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static TriggerType fromValue(String value){ | |||||
for(TriggerType type: TriggerType.values()){ | |||||
if(type.getValue().equals(value)){ | |||||
return type; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public String getValue() { | |||||
return value; | |||||
} | |||||
public int getCode() { | |||||
return code; | |||||
} | |||||
} |
package cn.com.taiji.core.entity.operation; | |||||
import cn.com.taiji.core.entity.AbstractStringPropertyUUIDEntity; | |||||
import cn.com.taiji.core.entity.dict.EnableStatus; | |||||
import cn.com.taiji.core.entity.dict.operation.FlashType; | |||||
import cn.com.taiji.core.entity.dict.operation.TriggerType; | |||||
import cn.com.taiji.core.entity.dict.user.IsEnable; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import java.time.LocalDateTime; | |||||
import javax.persistence.*; | |||||
@Entity | |||||
@Getter | |||||
@Setter | |||||
@Table(name = "NOTICE_FLASH") | |||||
public class NoticeFlash extends AbstractStringPropertyUUIDEntity { | |||||
@Column(name = "TITLE") | |||||
private String title;//标题 | |||||
@Column(name = "IMG_URL") | |||||
private String imgUrl;//图片地址 | |||||
@Column(name = "HYPER_LINK") | |||||
private String hyperLink;//超链接 | |||||
@Column(name = "TRIGGER_TYPE") | |||||
private TriggerType triggerType;//触发类型 | |||||
@Column(name = "SEQUENCE") | |||||
private Integer sequence;//排序 | |||||
@Column(name = "STATUS") | |||||
private IsEnable status;//状态 | |||||
@Column(name = "ROUTE_URL") | |||||
private String routeUrl;//路由地址 | |||||
@Column(name = "TEXT") | |||||
private String text;//文本内容 | |||||
@Column(name = "TEXT_TYPE") | |||||
private String textType;//文本类型 | |||||
@Column(name = "FLASH_TYPE") | |||||
private FlashType flashType;//快讯类型 | |||||
@Column(name = "MINI_APPID") | |||||
private String miniAppid;//第三方小程序Appid | |||||
@Column(name = "DELETED") | |||||
private Boolean deleted = false;//是否删除 | |||||
@Column(name = "INSERT_TIME") | |||||
private LocalDateTime insertTime; | |||||
@Column(name = "UPDATE_TIME") | |||||
private LocalDateTime updateTime; | |||||
} |
package cn.com.taiji.core.entity.operation; | |||||
import cn.com.taiji.core.entity.AbstractStringPropertyUUIDEntity; | |||||
import cn.com.taiji.core.entity.dict.EnableStatus; | |||||
import cn.com.taiji.core.entity.dict.operation.BusinessType; | |||||
import cn.com.taiji.core.entity.dict.operation.FlashType; | |||||
import cn.com.taiji.core.entity.dict.operation.TriggerType; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import javax.persistence.Column; | |||||
import javax.persistence.Entity; | |||||
import javax.persistence.Table; | |||||
import java.time.LocalDateTime; | |||||
@Entity | |||||
@Getter | |||||
@Setter | |||||
@Table(name = "NOTICE_PROMPT_TEXT") | |||||
public class NoticePromptText extends AbstractStringPropertyUUIDEntity { | |||||
@Column(name = "TITLE") | |||||
private String title;//标题 | |||||
@Column(name = "TEXT_TYPE") | |||||
private String textType;//文本类型 | |||||
@Column(name = "TEXT") | |||||
private String text;//文本内容 | |||||
@Column(name = "BUSINESS_TYPE") | |||||
private BusinessType businessType;//业务类型 | |||||
@Column(name = "DELETED") | |||||
private Boolean deleted = false;//是否删除 | |||||
@Column(name = "INSERT_TIME") | |||||
private LocalDateTime insertTime; | |||||
@Column(name = "UPDATE_TIME") | |||||
private LocalDateTime updateTime; | |||||
} |
package cn.com.taiji.core.repo.jpa.operation; | |||||
import cn.com.taiji.common.repo.jpa.AbstractJpaRepo; | |||||
import cn.com.taiji.core.entity.operation.NoticeFlash; | |||||
public interface NoticeFlashRepo extends AbstractJpaRepo<NoticeFlash, String> { | |||||
} |
package cn.com.taiji.core.repo.jpa.operation; | |||||
import cn.com.taiji.common.repo.jpa.AbstractJpaRepo; | |||||
import cn.com.taiji.core.entity.operation.NoticePromptText; | |||||
public interface NoticePromptTextRepo extends AbstractJpaRepo<NoticePromptText, String> { | |||||
} |
package cn.com.taiji.core.repo.request.operation; | |||||
import cn.com.taiji.common.pub.dao.HqlBuilder; | |||||
import cn.com.taiji.common.repo.request.jpa.JpaDateTimePageableDataRequest; | |||||
import cn.com.taiji.core.entity.dict.EnableStatus; | |||||
import cn.com.taiji.core.entity.dict.operation.FlashType; | |||||
import cn.com.taiji.core.entity.dict.user.IsEnable; | |||||
import cn.com.taiji.core.entity.invw.InvwCardDetails; | |||||
import cn.com.taiji.core.entity.operation.NoticeFlash; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/6/5 20:24 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
public class NoticeFlashPageRequest extends JpaDateTimePageableDataRequest<NoticeFlash> { | |||||
/** 标题 */ | |||||
private String title; | |||||
/** 状态 */ | |||||
private IsEnable status; | |||||
/** 快讯类型 */ | |||||
private FlashType flashType; | |||||
private LocalDateTime startTime; | |||||
private LocalDateTime endTime; | |||||
public NoticeFlashPageRequest() { | |||||
this.orderBy="updateTime"; | |||||
this.desc=true; | |||||
} | |||||
@Override | |||||
public HqlBuilder toSelectHql(){ | |||||
HqlBuilder hql = new HqlBuilder("from NoticeFlash where 1=1 and deleted = 0 "); | |||||
hql.append(" and title like :title",title); | |||||
hql.append(" and status = :status",status); | |||||
hql.append(" and flashType = :flashType",flashType); | |||||
hql.append(" insertTime >= :startTime",startTime); | |||||
hql.append(" insertTime <= :endTime",endTime); | |||||
return hql; | |||||
} | |||||
} |
package cn.com.taiji.core.repo.request.operation; | |||||
import cn.com.taiji.common.pub.dao.HqlBuilder; | |||||
import cn.com.taiji.common.repo.request.jpa.JpaDateTimePageableDataRequest; | |||||
import cn.com.taiji.core.entity.dict.operation.BusinessType; | |||||
import cn.com.taiji.core.entity.operation.NoticePromptText; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/6/5 20:24 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
public class NoticePromptTextPageRequest extends JpaDateTimePageableDataRequest<NoticePromptText> { | |||||
/** 标题 */ | |||||
private String title; | |||||
/** 文本内容 */ | |||||
private String text; | |||||
/** 文本类型 */ | |||||
private String textType; | |||||
/** 业务类型 */ | |||||
private BusinessType businessType; | |||||
private LocalDateTime startTime; | |||||
private LocalDateTime endTime; | |||||
public NoticePromptTextPageRequest() { | |||||
this.orderBy="updateTime"; | |||||
this.desc=true; | |||||
} | |||||
@Override | |||||
public HqlBuilder toSelectHql(){ | |||||
HqlBuilder hql = new HqlBuilder("from NoticePromptText where 1=1 and deleted = 0 "); | |||||
hql.append(" and title like :title",title); | |||||
hql.append(" and text like :text",text); | |||||
hql.append(" and textType = :textType",textType); | |||||
hql.append(" and businessType = :businessType",businessType); | |||||
hql.append(" insertTime >= :startTime",startTime); | |||||
hql.append(" insertTime <= :endTime",endTime); | |||||
return hql; | |||||
} | |||||
} |
package cn.com.taiji.managew.api.operation; | |||||
import cn.com.taiji.common.manager.ManagerException; | |||||
import cn.com.taiji.common.model.dao.Pagination; | |||||
import cn.com.taiji.common.web.ApiResponse; | |||||
import cn.com.taiji.managew.api.MyValidController; | |||||
import cn.com.taiji.managew.dto.operation.flash.*; | |||||
import cn.com.taiji.managew.manager.operation.NoticeFlashManager; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.web.bind.annotation.PostMapping; | |||||
import org.springframework.web.bind.annotation.RequestBody; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
import javax.validation.Valid; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: 高速快讯 | |||||
* @Date: 2025/6/5 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Api(tags = {"高速快讯"}) | |||||
@RestController | |||||
@RequestMapping("/api/notice/flash") | |||||
public class NoticeFlashController extends MyValidController { | |||||
@Autowired | |||||
private NoticeFlashManager manager; | |||||
@ApiOperation("分页查询") | |||||
@PostMapping("/page") | |||||
public ApiResponse<Pagination> page(@Valid @RequestBody NoticeFlashPageRequestDTO req) throws ManagerException { | |||||
return ApiResponse.of(manager.page(req)); | |||||
} | |||||
@ApiOperation("新增") | |||||
@PostMapping("/add") | |||||
public ApiResponse<NoticeFlashAddResponseDTO> add(@Valid @RequestBody NoticeFlashAddRequestDTO req) throws ManagerException { | |||||
return ApiResponse.of(manager.add(req)); | |||||
} | |||||
@ApiOperation("更新") | |||||
@PostMapping("/update") | |||||
public ApiResponse<NoticeFlashUpdateResponseDTO> update(@Valid @RequestBody NoticeFlashUpdateRequestDTO req) throws ManagerException { | |||||
return ApiResponse.of(manager.update(req)); | |||||
} | |||||
@ApiOperation("状态变更") | |||||
@PostMapping("/statusUpdate") | |||||
public ApiResponse<NoticeFlashStatusResponseDTO> statusUpdate(@Valid @RequestBody NoticeFlashStatusRequestDTO req) throws ManagerException { | |||||
return ApiResponse.of(manager.statusUpdate(req)); | |||||
} | |||||
@ApiOperation("删除") | |||||
@PostMapping("/delete") | |||||
public ApiResponse<NoticeFlashDeleteResponseDTO> delete(@Valid @RequestBody NoticeFlashDeleteRequestDTO req) throws ManagerException { | |||||
return ApiResponse.of(manager.delete(req)); | |||||
} | |||||
} |
package cn.com.taiji.managew.api.operation; | |||||
import cn.com.taiji.common.manager.ManagerException; | |||||
import cn.com.taiji.common.model.dao.Pagination; | |||||
import cn.com.taiji.common.web.ApiResponse; | |||||
import cn.com.taiji.managew.api.MyValidController; | |||||
import cn.com.taiji.managew.dto.operation.flash.*; | |||||
import cn.com.taiji.managew.dto.operation.prompt.NoticePromptTextPageRequestDTO; | |||||
import cn.com.taiji.managew.manager.operation.NoticePromptTextManager; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.web.bind.annotation.PostMapping; | |||||
import org.springframework.web.bind.annotation.RequestBody; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
import javax.validation.Valid; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: 文本管理 | |||||
* @Date: 2025/6/6 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Api(tags = {"文本管理"}) | |||||
@RestController | |||||
@RequestMapping("/api/notice/promptText") | |||||
public class NoticePromptTextController extends MyValidController { | |||||
@Autowired | |||||
private NoticePromptTextManager manager; | |||||
@ApiOperation("分页查询") | |||||
@PostMapping("/page") | |||||
public ApiResponse<Pagination> page(@Valid @RequestBody NoticePromptTextPageRequestDTO req) throws ManagerException { | |||||
return ApiResponse.of(manager.page(req)); | |||||
} | |||||
// @ApiOperation("新增") | |||||
// @PostMapping("/add") | |||||
// public ApiResponse<NoticeFlashAddResponseDTO> add(@Valid @RequestBody NoticeFlashAddRequestDTO req) throws ManagerException { | |||||
// return ApiResponse.of(manager.add(req)); | |||||
// } | |||||
// | |||||
// @ApiOperation("更新") | |||||
// @PostMapping("/update") | |||||
// public ApiResponse<NoticeFlashUpdateResponseDTO> update(@Valid @RequestBody NoticeFlashUpdateRequestDTO req) throws ManagerException { | |||||
// return ApiResponse.of(manager.update(req)); | |||||
// } | |||||
// | |||||
// @ApiOperation("删除") | |||||
// @PostMapping("/delete") | |||||
// public ApiResponse<NoticeFlashDeleteResponseDTO> delete(@Valid @RequestBody NoticeFlashDeleteRequestDTO req) throws ManagerException { | |||||
// return ApiResponse.of(manager.delete(req)); | |||||
// } | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.common.manager.ManagerException; | |||||
import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO; | |||||
import cn.com.taiji.core.entity.dict.operation.FlashType; | |||||
import cn.com.taiji.core.entity.dict.operation.TriggerType; | |||||
import cn.com.taiji.core.entity.dict.user.IsEnable; | |||||
import cn.com.taiji.managew.tools.StringUtils; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/19 16:29 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Setter | |||||
@Getter | |||||
@ApiModel(description = "高速快讯新增请求") | |||||
public class NoticeFlashAddRequestDTO extends AbstractStaffBizRequestDTO { | |||||
@ApiModelProperty(value = "标题") | |||||
@NotBlank | |||||
private String title; | |||||
@ApiModelProperty(value = "图片地址") | |||||
@NotBlank | |||||
private String imgUrl; | |||||
@ApiModelProperty(value = "快讯类型") | |||||
@NotNull | |||||
private FlashType flashType; | |||||
@ApiModelProperty(value = "触发类型") | |||||
@NotNull | |||||
private TriggerType triggerType; | |||||
@ApiModelProperty(value = "超链接") | |||||
private String hyperLink; | |||||
@ApiModelProperty(value = "第三方小程序Appid") | |||||
private String miniAppid; | |||||
@ApiModelProperty(value = "路由地址") | |||||
private String routeUrl; | |||||
@ApiModelProperty(value = "文本类型") | |||||
private String textType; | |||||
@ApiModelProperty(value = "文本内容") | |||||
private String text; | |||||
@ApiModelProperty(value = "排序") | |||||
@NotNull | |||||
private Integer sequence; | |||||
@ApiModelProperty(value = "状态") | |||||
@NotNull | |||||
private IsEnable status; | |||||
public void valid() throws ManagerException { | |||||
if (TriggerType.THIRD_PARTY_LINK.equals(triggerType)){ | |||||
if (StringUtils.isBlank(hyperLink)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的超链接必填!"); | |||||
} | |||||
}else if (TriggerType.NATIVE_ROUTE.equals(triggerType)){ | |||||
if (StringUtils.isBlank(routeUrl)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的本地路由必填!"); | |||||
} | |||||
}else if (TriggerType.TEXT.equals(triggerType)){ | |||||
if (StringUtils.isEmpty(text)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的文本内容必填!"); | |||||
} | |||||
if (StringUtils.isEmpty(textType)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的文本类型必填!"); | |||||
} | |||||
}else if (TriggerType.THIRD_PARTY_MINI.equals(triggerType)){ | |||||
if (StringUtils.isBlank(miniAppid)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的Appid必填!"); | |||||
} | |||||
if (StringUtils.isBlank(routeUrl)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的本地路由必填!"); | |||||
} | |||||
}else { | |||||
throw new ManagerException(triggerType.getValue()+"触发类型不符合规范!"); | |||||
} | |||||
} | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.common.model.BaseModel; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/29 16:09 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Getter | |||||
@Setter | |||||
@ApiModel(description = "高速快讯新增响应") | |||||
public class NoticeFlashAddResponseDTO extends BaseModel { | |||||
private String id; | |||||
public NoticeFlashAddResponseDTO(String id) { | |||||
this.id = id; | |||||
} | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import javax.validation.constraints.NotBlank; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/19 16:29 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Setter | |||||
@Getter | |||||
@ApiModel(description = "删除请求") | |||||
public class NoticeFlashDeleteRequestDTO extends AbstractStaffBizRequestDTO { | |||||
@ApiModelProperty(value = "id") | |||||
@NotBlank | |||||
private String id; | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.common.model.BaseModel; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/29 16:09 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Getter | |||||
@Setter | |||||
@ApiModel(description = "删除响应") | |||||
public class NoticeFlashDeleteResponseDTO extends BaseModel { | |||||
private String id; | |||||
public NoticeFlashDeleteResponseDTO(String id) { | |||||
this.id = id; | |||||
} | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.core.dto.AbstractStaffBizPageRequestDTO; | |||||
import cn.com.taiji.core.entity.dict.operation.FlashType; | |||||
import cn.com.taiji.core.entity.dict.user.IsEnable; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/19 16:29 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Setter | |||||
@Getter | |||||
@ApiModel(description = "高速快讯分页查询") | |||||
public class NoticeFlashPageRequestDTO extends AbstractStaffBizPageRequestDTO { | |||||
@ApiModelProperty(value = "标题") | |||||
private String title; | |||||
@ApiModelProperty(value = "状态") | |||||
private IsEnable status; | |||||
@ApiModelProperty(value = "快讯类型") | |||||
private FlashType flashType; | |||||
@ApiModelProperty(value = "开始时间") | |||||
private LocalDateTime startTime; | |||||
@ApiModelProperty(value = "结束时间") | |||||
private LocalDateTime endTime; | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO; | |||||
import cn.com.taiji.core.entity.dict.user.IsEnable; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/19 16:29 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Setter | |||||
@Getter | |||||
@ApiModel(description = "状态更新请求") | |||||
public class NoticeFlashStatusRequestDTO extends AbstractStaffBizRequestDTO { | |||||
@ApiModelProperty(value = "id") | |||||
@NotBlank | |||||
private String id; | |||||
@ApiModelProperty(value = "状态") | |||||
@NotNull | |||||
private IsEnable status; | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.common.model.BaseModel; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/29 16:09 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Getter | |||||
@Setter | |||||
@ApiModel(description = "状态更新响应") | |||||
public class NoticeFlashStatusResponseDTO extends BaseModel { | |||||
private String id; | |||||
public NoticeFlashStatusResponseDTO(String id) { | |||||
this.id = id; | |||||
} | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.common.manager.ManagerException; | |||||
import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO; | |||||
import cn.com.taiji.core.entity.dict.operation.FlashType; | |||||
import cn.com.taiji.core.entity.dict.operation.TriggerType; | |||||
import cn.com.taiji.core.entity.dict.user.IsEnable; | |||||
import cn.com.taiji.managew.tools.StringUtils; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/19 16:29 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Setter | |||||
@Getter | |||||
@ApiModel(description = "高速快讯更新请求") | |||||
public class NoticeFlashUpdateRequestDTO extends AbstractStaffBizRequestDTO { | |||||
@ApiModelProperty(value = "id") | |||||
@NotBlank | |||||
private String id; | |||||
@ApiModelProperty(value = "标题") | |||||
@NotBlank | |||||
private String title; | |||||
@ApiModelProperty(value = "图片地址") | |||||
@NotBlank | |||||
private String imgUrl; | |||||
@ApiModelProperty(value = "快讯类型") | |||||
@NotNull | |||||
private FlashType flashType; | |||||
@ApiModelProperty(value = "触发类型") | |||||
@NotNull | |||||
private TriggerType triggerType; | |||||
@ApiModelProperty(value = "超链接") | |||||
private String hyperLink; | |||||
@ApiModelProperty(value = "第三方小程序Appid") | |||||
private String miniAppid; | |||||
@ApiModelProperty(value = "路由地址") | |||||
private String routeUrl; | |||||
@ApiModelProperty(value = "文本类型") | |||||
private String textType; | |||||
@ApiModelProperty(value = "文本内容") | |||||
private String text; | |||||
@ApiModelProperty(value = "排序") | |||||
@NotNull | |||||
private Integer sequence; | |||||
@ApiModelProperty(value = "状态") | |||||
@NotNull | |||||
private IsEnable status; | |||||
public void valid() throws ManagerException { | |||||
if (TriggerType.THIRD_PARTY_LINK.equals(triggerType)){ | |||||
if (StringUtils.isBlank(hyperLink)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的超链接必填!"); | |||||
} | |||||
}else if (TriggerType.NATIVE_ROUTE.equals(triggerType)){ | |||||
if (StringUtils.isBlank(routeUrl)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的本地路由必填!"); | |||||
} | |||||
}else if (TriggerType.TEXT.equals(triggerType)){ | |||||
if (StringUtils.isEmpty(text)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的文本内容必填!"); | |||||
} | |||||
if (StringUtils.isEmpty(textType)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的文本类型必填!"); | |||||
} | |||||
}else if (TriggerType.THIRD_PARTY_MINI.equals(triggerType)){ | |||||
if (StringUtils.isBlank(miniAppid)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的Appid必填!"); | |||||
} | |||||
if (StringUtils.isBlank(routeUrl)){ | |||||
throw new ManagerException(triggerType.getValue()+"触发类型的本地路由必填!"); | |||||
} | |||||
}else { | |||||
throw new ManagerException(triggerType.getValue()+"触发类型不符合规范!"); | |||||
} | |||||
} | |||||
} |
package cn.com.taiji.managew.dto.operation.flash; | |||||
import cn.com.taiji.common.model.BaseModel; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/29 16:09 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Getter | |||||
@Setter | |||||
@ApiModel(description = "高速快讯更新响应") | |||||
public class NoticeFlashUpdateResponseDTO extends BaseModel { | |||||
private String id; | |||||
public NoticeFlashUpdateResponseDTO(String id) { | |||||
this.id = id; | |||||
} | |||||
} |
package cn.com.taiji.managew.dto.operation.prompt; | |||||
import cn.com.taiji.core.dto.AbstractStaffBizPageRequestDTO; | |||||
import cn.com.taiji.core.entity.dict.EnableStatus; | |||||
import cn.com.taiji.core.entity.dict.operation.FlashType; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/5/19 16:29 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Setter | |||||
@Getter | |||||
@ApiModel(description = "提示文本分页查询") | |||||
public class NoticePromptTextPageRequestDTO extends AbstractStaffBizPageRequestDTO { | |||||
@ApiModelProperty(value = "标题") | |||||
private String title; | |||||
@ApiModelProperty(value = "状态") | |||||
private EnableStatus status; | |||||
@ApiModelProperty(value = "快讯类型") | |||||
private FlashType flashType; | |||||
@ApiModelProperty(value = "开始时间") | |||||
private LocalDateTime startTime; | |||||
@ApiModelProperty(value = "结束时间") | |||||
private LocalDateTime endTime; | |||||
} |
package cn.com.taiji.managew.manager; | |||||
import cn.com.taiji.common.pub.IPTools; | |||||
import cn.com.taiji.common.pub.TimeTools; | |||||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||||
import cn.com.taiji.core.entity.log.OperateLog; | |||||
import cn.com.taiji.core.entity.user.AccountInfo; | |||||
import cn.com.taiji.core.repo.jpa.log.OperateLogRepo; | |||||
import cn.com.taiji.core.repo.jpa.user.AccountInfoRepo; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.web.context.request.RequestContextHolder; | |||||
import org.springframework.web.context.request.ServletRequestAttributes; | |||||
import javax.servlet.http.HttpServletRequest; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Auther: humh | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
public abstract class AbstractManagewManager extends AbstractCommManager{ | |||||
@Autowired | |||||
private OperateLogRepo operateLogRepo; | |||||
@Autowired | |||||
private AccountInfoRepo accountInfoRepo; | |||||
// 操作日志记录 | |||||
protected void persistOperateLog(OperateType operateType, String operatorDataId, SourceType source, | |||||
String openId, String msg) { | |||||
saveOperateLog(operateType, operatorDataId, source, openId, getAccountName(openId), msg); | |||||
} | |||||
protected void saveOperateLog(OperateType operateType, String dataId, SourceType source, String openId, | |||||
String operatorName, String msg) { | |||||
HttpServletRequest request = | |||||
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||||
String ip = IPTools.getIpAddr(request); | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
OperateLog log = new OperateLog(); | |||||
log.setPartKey(Long.valueOf(now.format(TimeTools.yyyyMM))); | |||||
log.setLoginSource(source); | |||||
log.setOperatorId(openId); | |||||
log.setOperatorName(operatorName); | |||||
log.setOperateTime(now); | |||||
log.setOperateIp(ip); | |||||
log.setOperateType(operateType); | |||||
log.setOperatorDataId(dataId); | |||||
log.setMsg(msg); | |||||
operateLogRepo.persist(log); | |||||
} | |||||
protected String getAccountName(String openId) { | |||||
return getAccountInfo(openId).getUserName(); | |||||
} | |||||
protected AccountInfo getAccountInfo(String openId) { | |||||
if (openId == null) { | |||||
return null; | |||||
} | |||||
return accountInfoRepo.findByOpenId(openId); | |||||
} | |||||
} |
package cn.com.taiji.managew.manager.operation; | |||||
import cn.com.taiji.common.manager.ManagerException; | |||||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||||
import cn.com.taiji.common.model.dao.Pagination; | |||||
import cn.com.taiji.managew.dto.operation.flash.*; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/6/5 20:14 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
public interface NoticeFlashManager{ | |||||
Pagination page(NoticeFlashPageRequestDTO req); | |||||
NoticeFlashAddResponseDTO add(NoticeFlashAddRequestDTO req) throws ManagerException; | |||||
NoticeFlashUpdateResponseDTO update(NoticeFlashUpdateRequestDTO req) throws ManagerException; | |||||
NoticeFlashStatusResponseDTO statusUpdate(NoticeFlashStatusRequestDTO req) throws ServiceHandleException; | |||||
NoticeFlashDeleteResponseDTO delete(NoticeFlashDeleteRequestDTO req) throws ServiceHandleException; | |||||
} |
package cn.com.taiji.managew.manager.operation; | |||||
import cn.com.taiji.common.manager.ManagerException; | |||||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||||
import cn.com.taiji.common.model.dao.Pagination; | |||||
import cn.com.taiji.common.pub.BeanTools; | |||||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||||
import cn.com.taiji.core.entity.operation.NoticeFlash; | |||||
import cn.com.taiji.core.repo.jpa.operation.NoticeFlashRepo; | |||||
import cn.com.taiji.core.repo.request.operation.NoticeFlashPageRequest; | |||||
import cn.com.taiji.managew.dto.operation.flash.*; | |||||
import cn.com.taiji.managew.manager.AbstractManagewManager; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/6/5 20:14 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Service | |||||
public class NoticeFlashManagerImpl extends AbstractManagewManager implements NoticeFlashManager { | |||||
@Autowired | |||||
private NoticeFlashRepo repo; | |||||
@Override | |||||
public Pagination page(NoticeFlashPageRequestDTO req) { | |||||
NoticeFlashPageRequest pageRequest = copyProperties(req, new NoticeFlashPageRequest()); | |||||
return repo.page(pageRequest); | |||||
} | |||||
@Override | |||||
public NoticeFlashAddResponseDTO add(NoticeFlashAddRequestDTO req) throws ManagerException { | |||||
//校验 | |||||
req.valid(); | |||||
NoticeFlash flash = copyProperties(req, new NoticeFlash()); | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
flash.setInsertTime(now); | |||||
flash.setUpdateTime(now); | |||||
repo.save(flash); | |||||
persistOperateLog(OperateType.FALSH_ADD, flash.getId(), req.getOrderSource(), findOpenIdByToken(req.getAccessToken()), "高速快讯添加"); | |||||
return new NoticeFlashAddResponseDTO(flash.getId()); | |||||
} | |||||
@Override | |||||
public NoticeFlashUpdateResponseDTO update(NoticeFlashUpdateRequestDTO req) throws ManagerException { | |||||
//校验 | |||||
req.valid(); | |||||
NoticeFlash flash = repo.findById(req.getId()).orElse(null); | |||||
BeanTools.copyProperties(req, flash); | |||||
flash.setUpdateTime(LocalDateTime.now()); | |||||
repo.merge(flash); | |||||
persistOperateLog(OperateType.FALSH_UPDATE, flash.getId(), req.getOrderSource(), findOpenIdByToken(req.getAccessToken()), "高速快讯更新"); | |||||
return new NoticeFlashUpdateResponseDTO(flash.getId()); | |||||
} | |||||
@Override | |||||
public NoticeFlashStatusResponseDTO statusUpdate(NoticeFlashStatusRequestDTO req) throws ServiceHandleException { | |||||
NoticeFlash flash = repo.findById(req.getId()).orElse(null); | |||||
flash.setStatus(req.getStatus()); | |||||
flash.setUpdateTime(LocalDateTime.now()); | |||||
repo.merge(flash); | |||||
persistOperateLog(OperateType.FALSH_STATUS_UPDATE, flash.getId(), req.getOrderSource(), findOpenIdByToken(req.getAccessToken()), "高速快讯状态更新"); | |||||
return new NoticeFlashStatusResponseDTO(flash.getId()); | |||||
} | |||||
@Override | |||||
public NoticeFlashDeleteResponseDTO delete(NoticeFlashDeleteRequestDTO req) throws ServiceHandleException { | |||||
NoticeFlash flash = repo.findById(req.getId()).orElse(null); | |||||
flash.setUpdateTime(LocalDateTime.now()); | |||||
flash.setDeleted(true); | |||||
repo.merge(flash); | |||||
persistOperateLog(OperateType.FALSH_DELETE, flash.getId(), req.getOrderSource(), findOpenIdByToken(req.getAccessToken()), "高速快讯删除"); | |||||
return new NoticeFlashDeleteResponseDTO(flash.getId()); | |||||
} | |||||
} |
package cn.com.taiji.managew.manager.operation; | |||||
import cn.com.taiji.common.manager.ManagerException; | |||||
import cn.com.taiji.common.model.dao.Pagination; | |||||
import cn.com.taiji.managew.dto.operation.flash.*; | |||||
import cn.com.taiji.managew.dto.operation.prompt.NoticePromptTextPageRequestDTO; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/6/5 20:14 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
public interface NoticePromptTextManager { | |||||
Pagination page(NoticePromptTextPageRequestDTO req); | |||||
} |
package cn.com.taiji.managew.manager.operation; | |||||
import cn.com.taiji.common.model.dao.Pagination; | |||||
import cn.com.taiji.core.repo.jpa.operation.NoticePromptTextRepo; | |||||
import cn.com.taiji.core.repo.request.operation.NoticePromptTextPageRequest; | |||||
import cn.com.taiji.managew.dto.operation.prompt.NoticePromptTextPageRequestDTO; | |||||
import cn.com.taiji.managew.manager.AbstractManagewManager; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* @Auther: humh | |||||
* @Description: | |||||
* @Date: 2025/6/5 20:14 | |||||
* @email: huminghao@mail.taiji.com.cn | |||||
* @version: 1.0 | |||||
*/ | |||||
@Service | |||||
public class NoticePromptTextManagerImpl extends AbstractManagewManager implements NoticePromptTextManager { | |||||
@Autowired | |||||
private NoticePromptTextRepo repo; | |||||
@Override | |||||
public Pagination page(NoticePromptTextPageRequestDTO req) { | |||||
NoticePromptTextPageRequest pageRequest = copyProperties(req, new NoticePromptTextPageRequest()); | |||||
return repo.page(pageRequest); | |||||
} | |||||
} |