@@ -0,0 +1,57 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,47 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,49 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,49 @@ | |||
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; | |||
} |
@@ -0,0 +1,43 @@ | |||
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; | |||
} |
@@ -0,0 +1,8 @@ | |||
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> { | |||
} |
@@ -0,0 +1,8 @@ | |||
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> { | |||
} |
@@ -0,0 +1,49 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,49 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,69 @@ | |||
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)); | |||
} | |||
} |
@@ -0,0 +1,64 @@ | |||
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)); | |||
// } | |||
} |
@@ -0,0 +1,97 @@ | |||
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()+"触发类型不符合规范!"); | |||
} | |||
} | |||
} |
@@ -0,0 +1,26 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,27 @@ | |||
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; | |||
} |
@@ -0,0 +1,26 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,40 @@ | |||
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; | |||
} |
@@ -0,0 +1,33 @@ | |||
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; | |||
} |
@@ -0,0 +1,26 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,101 @@ | |||
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()+"触发类型不符合规范!"); | |||
} | |||
} | |||
} |
@@ -0,0 +1,26 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,40 @@ | |||
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; | |||
} |
@@ -0,0 +1,65 @@ | |||
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); | |||
} | |||
} |
@@ -0,0 +1,27 @@ | |||
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; | |||
} |
@@ -0,0 +1,83 @@ | |||
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()); | |||
} | |||
} |
@@ -0,0 +1,20 @@ | |||
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); | |||
} |
@@ -0,0 +1,31 @@ | |||
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); | |||
} | |||
} |